The complete soucecode for the youBot to perform like WF Wolves on the robocup championship in 2013.
Python C++ Common Lisp Other
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
Creative Commons Legal Code.html

WF Wolves youBot stack Eindhoven 2013

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


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.


  • 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). The main_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 the navigation_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 the conveyorbelt_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 the manipulation_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 the transportation_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. The vision.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 the detected_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 the youbot-ros-pkg/youbot_navigation/youbot_navigation_common/launch folder
  • move_base_global_dwa.launch into the youbot-ros-pkg/youbot_navigation/youbot_navigation_global/launch folder
  • usb_cam_microsoft_hd.launch into the usb_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


  1. Fork it.
  2. Create a branch (git checkout -b my_youbot_ai)
  3. Commit your changes (git commit -am "Added Snarkdown")
  4. Push to the branch (git push origin my_youbot_ai)
  5. Open a [Pull Request][1]
  6. Enjoy a refreshing Diet Coke and wait