We used this ros stack to participate in the robocup@work world championship 2013.
We publish all of our code and documents under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0). For commercial interest please contact us at wfwolves.de
The following package dependencies exist. We have used ROS Fuerte and the latest released version of the packages (last update was on 5th June 2013). Python 2.7 is required.
- smach, smach_ros --
sudo apt-get install ros-fuerte-executive-smach
(https://github.com/ros/executive\_smach) - geometry_msgs --
sudo apt-get install ros-fuerte-common-msgs
(https://github.com/ros/common\_msgs) - sensor_msgs --
sudo apt-get install ros-fuerte-common-msgs
(https://github.com/ros/common\_msgs) - rospy --
sudo apt-get install ros-fuerte-ros-comm
(https://github.com/ros/ros\_comm) - tf --
sudo apt-get install ros-fuerte-geometry
(https://kforge.ros.org/geometry/geometry) - rosgraph_msgs --
sudo apt-get install ros-fuerte-ros-comm
(https://github.com/ros/ros\_comm) - brics_actuator --
sudo apt-get install ros-fuerte-cob-common
(https://github.com/ipa320/cob\_common) - std_msgs --
sudo apt-get install ros-fuerte-std-msgs
(https://github.com/ros/std\_msgs) - actionlib --
sudo apt-get install ros-fuerte-actionlib
(https://github.com/ros/actionlib) - control_msgs --
sudo apt-get install ros-fuerte-control
(https://bitbucket.org/sglaser/control) - kinematics_msgs --
sudo apt-get install ros-fuerte-arm-navigation
(https://kforge.ros.org/armnavigation/armnavigation) - trajectory_msgs --
sudo apt-get install ros-fuerte-common-msgs
(https://github.com/ros/common\_msgs) - arm_navigation_msgs --
sudo apt-get install ros-fuerte-arm-navigation
(https://kforge.ros.org/armnavigation/armnavigation) - trajectory_msgs --
sudo apt-get install ros-fuerte-common-msgs
(https://github.com/ros/common\_msgs) - image_transport --
sudo apt-get install ros-fuerte-image-common
(https://github.com/ros-perception/image\_common) - roscpp --
sudo apt-get install ros-fuerte-ros-comm
(https://github.com/ros/ros\_comm) - opencv2 --
sudo apt-get install ros-fuerte-opencv2
(http://opencv.org) - cv_bridge --
sudo apt-get install ros-fuerte-vision-opencv
(https://github.com/ros-perception/vision\_opencv) - image_geometry --
sudo apt-get install ros-fuerte-vision-opencv
(https://github.com/ros-perception/vision\_opencv) - dynamic_reconfigure --
sudo apt-get install ros-fuerte-dynamic-reconfigure
(https://github.com/ros/dynamic\_reconfigure) - image_geometry --
sudo apt-get install ros-fuerte-vision-opencv
(https://github.com/ros-perception/vision\_opencv) - nav_msgs --
sudo apt-get install ros-fuerte-common-msgs
(https://github.com/ros/common\_msgs) - move_base --
sudo apt-get install ros-fuerte-navigation
(https://github.com/ros-planning/navigation) - actionlib_msgs --
sudo apt-get install ros-fuerte-actionlib
(https://github.com/ros/actionlib) - pcl --
sudo apt-get install ros-fuerte-perception-pcl
(http://svn.pointclouds.org/ros/branches/fuerte/perception\_pcl) - pcl_ros --
sudo apt-get install ros-fuerte-perception-pcl
(http://svn.pointclouds.org/ros/branches/fuerte/perception\_pcl) - laser_geometry --
sudo apt-get install ros-fuerte-laser-pipeline
(https://github.com/ros-perception/laser\_pipeline) - visualization_msgs --
sudo apt-get install ros-fuerte-common-msgs
(https://github.com/ros/common\_msgs)/perception\_pcl) - youbot-ros-pkg -- see website (https://github.com/youbot/youbot-ros-pkg)
- youbot_main_ai:
The youbot_main_ai is our central robot behaviour which communicates with the referee-box and launches the necessary task-behaviour(besides conveyorbelt). Themain_ai.launch
file starts the smach-state-machine and tries to connect to the referee-box. - youbot_navigation_ai_re:
The youbot_navigation_ai_re is our robot behaviour for the navigation challenge and thenavigation_ai.launch
starts the smach-state-machine with a hard-coded Spec. - youbot_conveyorbelt_ai:
The youbot_conveyorbelt_ai is our robot behaviour for the conveyorbelt challenge and theconveyorbelt_ai.launch
starts it with the connection to the referee-box. (this was implemented one hour befor the challenge) - youbot_manipulation_ai_re:
The youbot_manipulation_ai_re is our robot behaviour for the navigation challenge and themanipulation_ai.launch
starts the smach-state-machine with a hard-coded Spec. - youbot_transportation_ai:
The youbot_transportation_ai_re is our robot behaviour for the navigation challenge and thetransportation_ai.launch
starts the smach-state-machine with no hard-coded Spec. - youbot_generic_scripts:
The youbot_generic_scripts is our general toolbox package. - youbot_ik_solution_modifier:
The youbot_ik_solution_modifier is an extension of our own IKControl class. We use it to handle the inverse kinematics from the youbot-ros-pkg. Due to quick fixing it is not in the youbot_manipulation_scripts package yet. - youbot_manipulation_scripts:
The youbot_manipulation_scripts is a toolbox for manipulation scripts and classes. - youbot_manipulation_vision:
The youbot_manipulation_vision is our object recognition node for the at-work objects. Thevision.launch
will start the node which tries to get a camera image on this topic: /usb_cam/image_raw. - youbot_scanner_alignment:
The youbot_scanner_alignment is a ROS service that lets the robot align itself to a wall in front of it. It needs thedetected_best_laser_line_filtered
topic (published by youbot_scanner_lines), this will be started within the main_ai-launch - youbot_scanner_lines:
The youbot_scanner_lines is a RANSAC linedetection on the range finder scans. For this it subscribes to the/base_scan
topic which is our front laser range finder.
- ros-pkg.patch:
It is a patchfile for the youbot-ros-pkg to get our modificated launch files. - usb_cam_microsoft_hd.launch:
This is our camera launch file for the usb_cam node - move_base_global_dwa.launch:
Our try to use the dwa planner. - base_back_hokuyo_node.launch:
We have two laser_range finders mounted on our robot, so this .launch is for the one in the back.
When the youBot is fresh installed you can patch the youbot-ros-pkg to get our modificated .launch files. To patch just copy the ros-pkg.patch
file into your youbot-ros-pkg folder and execute the folowing in it:
patch -p 3 < ./ros-pkg.patch
After that there are new .launch files which have to be moved into the corresponding folders
base_back_hokuyo_node.launch
into theyoubot-ros-pkg/youbot_navigation/youbot_navigation_common/launch
foldermove_base_global_dwa.launch
into theyoubot-ros-pkg/youbot_navigation/youbot_navigation_global/launch
folderusb_cam_microsoft_hd.launch
into theusb_cam/launch
folder
To be sure that all of our own ros_msgs are generated, build all packages:
rosmake youbot_scanner_lines youbot_manipulation_vision youbot_conveyorbelt_ai youbot_ik_solution_modifier youbot_main_ai youbot_manipulation_scripts youbot_navigation_ai_re youbot_scanner_alignment youbot_transportation_ai
To use our stuff you need to start some basic nodes:
roslaunch youbot_manipulation_examples bringup.launch
roslaunch youbot_navigation_common base_front_hokuyo_node.launch
roslaunch youbot_navigation_common base_back_hokuyo_node.launch
roslaunch usb_cam usb_cam_microsoft_hd.launch
roslaunch youbot_manipulation_vision vision.launch
roslaunch youbot_navigation_global amcl.launch
roslaunch youbot_navigation_global move_base_global_dwa.launch
After this you have to make sure that the robot is localised and don't forget to calibrate the vision. For vision calibration you can use dynamic_reconfigure. Now your robot preperation is finished and you can connect to the referee-box and start the challenge with:
roslaunch youbot_main_ai main_ai.launch
Now cross your fingers as we do it all the time.
If you have any questions or problems regarding robot setup or installation, feel free to contact us at wfwolves.de.
- Fork it.
- Create a branch (
git checkout -b my_youbot_ai
) - Commit your changes (
git commit -am "Added Snarkdown"
) - Push to the branch (
git push origin my_youbot_ai
) - Open a [Pull Request][1]
- Enjoy a refreshing Diet Coke and wait