Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update to use Aruco library 3.1 loaded dynamically #3

Open
wants to merge 9 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,5 @@

# Changelogs
*CHANGELOG.rst

*.idea*
114 changes: 44 additions & 70 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
# aruco_eye
This is the repository of the aruco_eye metapackage. It is a ROS wrapper of the ArUco library (ArUco: a minimal library for Augmented Reality applications based on OpenCV [http://www.uco.es/investiga/grupos/ava/node/26](http://www.uco.es/investiga/grupos/ava/node/26)), adding extra functionalities very useful for Robotics.

# Changelog
+ added compatibility with aruco dictionaries an custom dictionaries
+ removed unnecessary dependencies

# Table of contents
+ [Disclaimer](#disclaimer)
Expand Down Expand Up @@ -48,9 +51,8 @@ You are using this software at your own risk. The authors decline any responsibi
# Repository information

## Packages
This repository is formed by a five ROS packages:

+ aruco_lib: original ArUco library (see [http://sourceforge.net/projects/aruco/](http://sourceforge.net/projects/aruco/) and [http://www.uco.es/investiga/grupos/ava/node/26](http://www.uco.es/investiga/grupos/ava/node/26) ) with catkin elements (CMakeLists.txt and package.xml)
This repository is formed by a two ROS packages:

+ aruco_eye_core: C++ (and ROS-independent) wrapper of the ArUco library with additional functionalities.
+ aruco_eye_ros: ROS-dependent wrapper of the ArUco library with additional functionalities.

Expand Down Expand Up @@ -81,13 +83,13 @@ This repository has the following branches:

This package is running under:

+ Ubuntu: 14.04 and above
+ ROS: Indigo and above with Catkin
+ Ubuntu: 16.04 and above
+ ROS: Kinetic and built with catkin tools

This package has been tested under:

+ Ubuntu: 14.04
+ ROS: Indigo and Jade with Catkin
+ Ubuntu: 16.04
+ ROS: Kinetic and built with catkin tools



Expand All @@ -97,10 +99,12 @@ This package has been tested under:

This metapackage requires:

+ OpenCV 2.0 and above
+ ArUco library (see [http://sourceforge.net/projects/aruco/](http://sourceforge.net/projects/aruco/) and [http://www.uco.es/investiga/grupos/ava/node/26](http://www.uco.es/investiga/grupos/ava/node/26) )
+ OpenCV 3.3 and above
+ Boosts



### ROS Dependencies

This metapackage depends on the following ROS packages:
Expand All @@ -123,15 +127,11 @@ This metapackage depends on the following ROS packages:

This metapackage depends on the following extra ROS packages:

+ pugixml: [https://github.com/joselusl/pugixml](https://github.com/joselusl/pugixml)
+ perception_msgs: [https://github.com/joselusl/perception_msgs](https://github.com/joselusl/perception_msgs)
+ robot_component_srvs: [https://github.com/joselusl/robot_component_srvs](https://github.com/joselusl/robot_component_srvs)



# Installation Instructions


## Pre-requirements
Install all the system and ROS dependencies (for example, using rosdep install, or apt-get, or directly from source).

Expand All @@ -149,81 +149,69 @@ Install all the system and ROS dependencies (for example, using rosdep install,
# Running Instructions

The package aruco_eye_ros included in this repository generates two ROS nodes that can be executed:

+ [aruco_eye_ros_detector](#aruco_eye_ros_detector)
+ [aruco_eye_ros_display](#aruco_eye_ros_display)

## aruco_eye_ros_detector
This node processes the given images searching for ArUco visual markers, publishing them in a ROS topic.

### ROS Launcher
The package aruco_eye_ros includes a launcher called aruco_eye_ros_detector.launch.

### ROS Topics
Subscribed topics:

+ camera/image_raw [sensor_msgs/Image]: The images where the ArUco visual markers are going to be detected.
+ camera/camera_info [sensor_msgs/CameraInfo]: The calibration info of the camera.


Published topics:
Configurable ROS launch parameters:

+ aruco_eye/aruco_observation [perception_msgs/MarkerList]: The list of the detected visual markers with all its information.
+ tf [tf2_msgs/TFMessage]: The tf information of the detected and reconstructed visual markers.


### ROS Parameters
Configurable ROS parameters:

+ aruco_list_file [type=string, default=$(find aruco_eye_ros)/config/arUcoList.xml]: the path to the ArUco list configuration file. See below for more information.
+ camera_calibration_file [type=string, default=]: the path to the camera calibration file. If nothing is used here, it uses the information given by the camera/camera_info topic.
+ camera_name[type=string, default="camera"]: name of the camera
+ aruco_dictionary[type=string, default="ARUCO_MIP_36h12"]: name of the aruco dictionary or the path to a custom dictionary
+ marker_size[type=string, default="0.16"]: size of the marker in meters
+ camera_calibration_file [type=string, default="${env HOME}/.ros/camera_info/$(arg camera_name).yml"]: the path to the camera calibration file. If nothing is used here, it uses the information given by the camera/camera_info topic.
+ aruco_detector_frame_name [type=string, default=aruco_detector]: the name of the aruco detector frame.
+ aruco_marker_child_base_name [type=string, default=aruco_marker_]: the base name for the visual markers frame.
+ image_topic_name [type=string, default=camera/image_raw]: the topic name of the images.
+ camera_info_topic_name [type=string, default=camera/camera_info]: the topic name of the camera calibration.
+ image_topic_name [type=string, default=${arg camera_name}/image_raw]: the topic name of the images.
+ camera_info_topic_name [type=string, default=${arg camera_name}/camera_info]: the topic name of the camera calibration.
+ aruco_list_topic_name [type=string, default=aruco_eye/aruco_observation]: the topic name for the list of detected visual markers.

### ROS Services
None.
### ROS Topics
Subscribed topics:

### Additional Configurations in files
There are two configuration files. An example can be find in aruco_eye_ros/config:
+ ${arg image_topic_name} [sensor_msgs/Image]: The images where the ArUco visual markers are going to be detected.
+ ${arg camera_info_topic_name} [sensor_msgs/CameraInfo]: The calibration info of the camera.

+ camera.yml: camera configuration file in YAML format. File type generated by OpenCV. For more information, please refer to: [http://www.uco.es/investiga/grupos/ava/node/26](http://www.uco.es/investiga/grupos/ava/node/26)

+ arUcoList.xml: ArUco list configuration file in XML format. It has the information of the ArUco visual markers that want to be detected. Please open the example file in aruco_eye_core/config/arUcoList.xml for basic information. Please, be sure that the format is correct, otherwise the node will not work.
Published topics:

+ ${arg aruco_list_topic_name} [perception_msgs/MarkerList]: The list of the detected visual markers with all its information.
+ tf [tf2_msgs/TFMessage]: The tf information of the detected and reconstructed visual markers.

## aruco_eye_ros_display
This node allows the visualization of the detected ArUco visual markers by the node aruco_eye_ros_detector.

### ROS Launcher
The package aruco_eye_ros includes a launcher called aruco_eye_ros_display.launch.

Configurable ROS launch Parameters:

+ display_output_image_window_name [type=string, default=arUco_display_window]: the name of the OpenCV local window to display the visual markers.
+ flag_display_output_image [type=boolean, default=True]: flag to enable or disable the display of the drawed markers using an OpenCV local window
+ display_output_image_service_name [type=string, default=aruco_eye/enable_display_output_image]: service name to enable or disable the display of the drawed markers using an OpenCV local window.
+ camera_calibration_file [type=string, default="${env HOME}/.ros/camera_info/$(arg camera_name).yml"]: the path to the camera calibration file. If nothing is used here, it uses the information given by the camera/camera_info topic.
+ image_topic_name [type=string, default=${arg camera_name}/image_raw]: the topic name of the images.
+ camera_info_topic_name [type=string, default=${arg camera_name}/camera_info]: the topic name of the camera calibration.
+ aruco_list_topic_name [type=string, default=aruco_eye/aruco_observation]: See above.
+ output_image_topic_name [type=string, default=aruco_eye/aruco_observation_image/image_raw]: topic name of the image with the drawed ArUco Visual Markers.


### ROS Topics
Subscribed topics:

+ camera/image_raw [sensor_msgs/Image]: The images where the ArUco visual markers are going to be detected.
+ camera/camera_info [sensor_msgs/CameraInfo]: The calibration info of the camera.
+ aruco_eye/aruco_observation [perception_msgs/MarkerList]: The list of the detected visual markers with all its information.
+ ${arg image_topic_name} [sensor_msgs/Image]: The images where the ArUco visual markers are going to be detected.
+ ${arg camera_info_topic_name} [sensor_msgs/CameraInfo]: The calibration info of the camera.
+ ${arg aruco_list_topic_name} [perception_msgs/MarkerList]: The list of the detected visual markers with all its information.

Published topics:

+ aruco_eye/aruco_observation_image/image_raw [sensor_msgs/Image]: The image with the drawed ArUco Visual Markers.


### ROS Parameters

Configurable ROS Parameters:

+ display_output_image_window_name [type=string, default=arUco_display_window]: the name of the OpenCV local window to display the visual markers.
+ flag_display_output_image [type=boolean, default=True]: flag to enable or disable the display of the drawed markers using an OpenCV local window
+ display_output_image_service_name [type=string, default=aruco_eye/enable_display_output_image]: service name to enable or disable the display of the drawed markers using an OpenCV local window.
+ camera_calibration_file [type=string, default=]: See above.
+ camera_info_topic_name [type=string, default=camera/camera_info]: See above.
+ image_topic_name [type=string, default=camera/image_raw]: See above.
+ aruco_list_topic_name [type=string, default=aruco_eye/aruco_observation]: See above.
+ output_image_topic_name [type=string, default=aruco_eye/aruco_observation_image/image_raw]: topic name of the image with the drawed ArUco Visual Markers.


### ROS Services

Services served:
Expand Down Expand Up @@ -270,28 +258,14 @@ Please, refer to [http://www.uco.es/investiga/grupos/ava/node/26](http://www.uc




# Contributors

## Authors / Maintainers / Past contributors
List of people that have contributed:

+ Jose Luis Sanchez-Lopez ([email protected]): Main Author, Maintainaince, Debugging, Testing and Documentation.


## Contact information
Questions, suggestions, requests, ... whatever. Feel free to contact me (Jose Luis Sanchez-Lopez - [email protected]).


## New contributors
You are very welcome to contribute to this repository by opening a pull request via Github.
+ Claudio Cimarelli ([email protected])


# Acknowledgments
Special thanks to:

+ Computer Vision Group (CVG): [www.vision4uav.eu](www.vision4uav.eu)
+ Centre for Automation and Robotics (CAR): [http://www.car.upm-csic.es/](http://www.car.upm-csic.es/)
+ Consejo Superior de Investigaciones Cientificas (CSIC): [http://www.csic.es](http://www.csic.es)
+ Universidad Politecnica de Madrid (UPM): [http://www.upm.es](http://www.upm.es)

1 change: 0 additions & 1 deletion aruco_eye/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@

<buildtool_depend>catkin</buildtool_depend>

<exec_depend>aruco_lib</exec_depend>
<exec_depend>aruco_eye_core</exec_depend>
<exec_depend>aruco_eye_ros</exec_depend>

Expand Down
16 changes: 9 additions & 7 deletions aruco_eye_core/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 2.8.3)
cmake_minimum_required(VERSION 3.5.1)

project(aruco_eye_core)

Expand Down Expand Up @@ -47,24 +47,25 @@ set(ARUCO_EYE_CORE_HEADER_FILES



find_package(catkin REQUIRED
COMPONENTS pugixml aruco_lib)
find_package(catkin REQUIRED)

find_package(OpenCV REQUIRED)
find_package(OpenCV 3 REQUIRED)

find_package(aruco REQUIRED)

find_package(Boost REQUIRED COMPONENTS filesystem)


catkin_package(
INCLUDE_DIRS ${ARUCO_EYE_CORE_INCLUDE_DIR}
LIBRARIES ${PROJECT_NAME}
DEPENDS OpenCV Boost
CATKIN_DEPENDS pugixml aruco_lib
)
DEPENDS OpenCV Boost aruco
)


include_directories(${ARUCO_EYE_CORE_INCLUDE_DIR})
include_directories(${OpenCV_INCLUDE_DIRS})
include_directories(${aruco_INCLUDE_DIRS})
include_directories(${Boost_INCLUDE_DIRS})
include_directories(${catkin_INCLUDE_DIRS})

Expand All @@ -73,5 +74,6 @@ include_directories(${catkin_INCLUDE_DIRS})
add_library(${PROJECT_NAME} ${ARUCO_EYE_CORE_SOURCE_FILES} ${ARUCO_EYE_CORE_HEADER_FILES})
add_dependencies(${PROJECT_NAME} ${catkin_EXPORTED_TARGETS})
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS})
target_link_libraries(${PROJECT_NAME} ${aruco_LIBS})
target_link_libraries(${PROJECT_NAME} ${Boost_LIBRARIES})
target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES})
3 changes: 1 addition & 2 deletions aruco_eye_core/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@

<buildtool_depend>catkin</buildtool_depend>

<depend>pugixml</depend>
<depend>aruco_lib</depend>
<depend>aruco_lib</depend>


</package>
Expand Down
Loading