- Update the docker repo
git pull DRIMS2_Docker
(⚠️ Even you already cloned this repo, be sure to pull.) - Start the docker :
./start.sh
- Compile and source the
drims_ws
workspace
cd drims_ws/
catkin_make
source devel/setup.bash
To run the simulation:
- Load Gazebo environment and robot simulation:
roslaunch drims_dice_demo arm_gazebo.launch robot:=yumi # or robot:=gofa
- Launch low-level ROS Services Server for robot planning and control:
roslaunch abb_wrapper_control launchControlServer.launch robot:=yumi # or robot:=gofa
- Launch high-level ROS Services Server for robot planning and control:
roslaunch abb_wrapper_control launchTaskServer.launch robot:=yumi # or robot:=gofa
- Spawn the dice in simulation:
roslaunch drims_dice_demo spawn_dice.launch
NOTE: Each command should run in its own terminal
Steps to use the real robot (both Yumi or Gofa):
- You need an Ubuntu machine
- Connect your notebook to the physical robot via Ethernet
- Set your IP as Static IP: (
192.168.125.100
, Netmask:255.255.255.0
, Empty gateway) - Test the connection with:
ping 192.168.125.1
(from outside Docker)
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
Now you are ready to work:
- Launch the real robot:
roslaunch drims_dice_demo real_robot.launch robot:=yumi # or gofa
- Open another terminal and connect to the docker
./connect.sh
, and launch low-level ROS Services Server for robot planning and control:
roslaunch abb_wrapper_control launchControlServer.launch robot:=yumi # or robot:=gofa
- Open another terminal and connect to the docker
./connect.sh
, and launch high-level ROS Services Server for robot planning and control:
roslaunch abb_wrapper_control launchTaskServer.launch robot:=yumi # or robot:=gofa
You can test the functions with the following commands (
Python:
rosrun drims_template take_the_dice_example.py
C++:
roslaunch drims_template test_example.launch
This launcher runs the script test_example.cpp
located in the DRIMS_template
ROS package.
launchControlServer.launch
to visualize the previous blue message)
roslaunch drims_template test_spawn_dice.launch
Both the examples present a basic use of the services to move the robot:
/plan_and_execute_pose
: plan a collision-free joint trajectory to a given goal Cartesian pose and execute it./plan_and_execute_slerp
: plan a collision-free joint trajectory by using SLERP interpolation to a given a goal Cartesian pose and execute it./plan_and_execute_joint
: plan a collision-free joint trajectory to a given a Joint goal and execute it./open_gripper
: open the gripper./close_gripper
: close the gripper.
The following gives the ROS service definition, located in the srv
folder of abb_wrapper_msgs
ROS package:
Service structure abb_wrapper_msgs/plan_and_execute_pose
# == Request ==
geometry_msgs/Pose goal_pose
bool is_relative
---
# == Response ==
bool success
string message
Service structure abb_wrapper_msgs/plan_and_execute_joint
# == Request ==
float64[] joint_goal
---
# == Response ==
bool success
string message
Service structure abb_wrapper_msgs/plan_and_execute_slerp
# == Request ==
geometry_msgs/Pose goal_pose
bool is_relative
---
# == Response ==
bool success
string message
Service structure abb_wrapper_msgs/open_gripper
and abb_wrapper_msgs/open_gripper
bool in_flag
---
bool out_flag
string message