This package contains all files necessary to perform collision-free planned motions with the arm of Care-O-bot 3. It is based on the arm_navigation stack and uses packages like ompl, collision_space and planning_environment to plan paths for the arm. For more information please navigate to the respective packages.
This tutorial assumes that you are familiar with:
using the cob_command_gui to move the arm
Please compile cob3_3_arm_navigation to make sure all dependencies can be found.
rosdep install cob3_3_arm_navigation rosmake cob3_3_arm_navigation
Start the planning environment
To start the arm_navigation please call
roslaunch cob3_3_arm_navigation cob3_3_arm_navigation.launch
to start all nodes necessary to perform collision-free path planning (considering self-collision, known obstacles as well as sensor data).
roslaunch cob3_3_arm_navigation cob3_3_arm_navigation_static.launch
to start all nodes necessary to perform collision-free path planning (considering self-collision and known obstacles but NO sensor data).
Perform collision-free movements
Once all nodes are running, you have the following two possibilities to perform planned motion.
Planned motion using the cob_command_gui
This is the easiest way to plan collision-free paths to predefined configurations. It uses the cob_command_gui which is started by
roslaunch cob_bringup dashboard.launch
On the cob_command_gui you can move all modules of the care-o-bot. However, planned motion can only be performed for the arm. To do so, enable the "Planning" check-box on the left side of the dashboard. As long as "Planning" is active all movements are planned.
Please note that the robot's initial configuration needs to be collision-free. If you are in a collision, simply deactivate "Planning" and move the arm without planned motion until it is collision-free again.
Planned motion within scripts
Planned motion for the care-o-bot has also been included into the cob_script_server. If you want to use planned motion in a more complex scenario, use the tutorials in cob_script_server/Tutorials and use "sss.move_planned()" instead of "sss.move()". Again, planned motion is only available for arm movements.