-
Notifications
You must be signed in to change notification settings - Fork 16
Setup ArUco Mapping package
This package allows user to create a map of Aruco markers in 2D or 3D space and estimate full 6 DOF pose of the camera. Using Markers to estimate full 6 DOF position only by means of single calibrated camera is well known approach. This package leverages basic aruco_ros functionality and provides tools to create a map of detected markers in 2D/3D space. It is designed for static markers - moving camera scenario and can be used for various navigation tasks for UAVs, UGVs, etc.
cd ~/catkin_ws/src
git clone https://github.com/SmartRoboticSystems/aruco_mapping.git
cd ..
catkin_make
- Proper camera calibration strongly affects overall system accuracy. Aruco mapping expects calibration file in INI format.
Copy the camera calibration file in the INI format to aruco_mapping/data
and name the calibration file ardrone_front.ini
(since we are using front camera. You can change it to ardrone_bottom.ini if you are using bottom camera)
In order to calibrate your camera and get results in INI format, you can do it through camera_calibrator
package.
- Edit the launch file
aruco_mapping.lauch
to remap to the camera of the AR drone and to point to your camera's calibration file.
<?xml version="1.0"?>
<launch>
<!-- RVIZ -->
<!-- <node name="rviz" pkg="rviz" type="rviz" args="-d $(find aruco_mapping)/launch/aruco_config.rviz" /> -->
<node pkg="aruco_mapping" type="aruco_mapping" name="aruco_mapping" output="screen">
<remap from="/image_raw" to="/ardrone/front/image_raw"/>
<param name="calibration_file" type="string" value="$(find aruco_mapping)/data/ardrone_front.ini" />
<param name="num_of_markers" type="int" value="7" />
<param name="marker_size" type="double" value="0.14"/>
<param name="space_type" type="string" value="3D" />
<param name="roi_allowed" type="bool" value="false" /> -->
<param name="roi_x" type="int" value="0" /> -->
<param name="roi_y" type="int" value="0" /> -->
<param name="roi_width" type="int" value="640" /> -->
<param name="roi_height" type="int" value="480" /> -->
</node>
</launch>
Change the parameter values according to the requirement.
Here,
value of num_of_markers
is the total number of markers used
value of marker_size is the size of the markers(in meters)
value of space_type will specify whether the space_type is plane or 3D
roi is Region of Intrest.
A region of interest is a specified part of a camera view that is highlighted and broadcast to a separate stream from a camera. Since we don't need this feature value is false.
First marker is identified with world´s origin
Second marker's position is computed with respect to first one
Third's marker position is computed with respect to second one and so on..
In order to achieve successful mapping, every time when a new marker is detected, previous marker needs to be visible in the actual image to allow computing new marker's position. So, don't overdo the mutual distance between the markers
Since this package uses OpenCV, which is a huge library and it also runs ros visualiser, aruco-mapping and image_view, it is computationally expensive. Because of that you might face the problems like there will be delay in detecting the markers.
We used aruco markers to guide the drone to move from one place to another and we used PID controller for that. The derivative term in PID requires continuous function for the computation. But the detection is not continuous using this package. Because of that motion with PID controller won't be much smooth using this package.
3D Space type is not working using this package.
Refer to Aruco_mapping ROS wiki for more information.
Go through the video tutorials on setting up and working with aruco_mapping package.
- Home
- Installation
- ArUco marker based stabalisation using PID
- Aligning drone with the marker 1.Aligning with aruco marker 2.Aligning with whycon marker
- Setup ArUco mapping package
- Emulating AR drone 2 in Rviz
- Mapping a simulated environment using Turtlebot and octomap
- 3D Navigation of Drone (Using MoveIt!)