- 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_wsworkspace
cd drims_ws/
catkin_make
source devel/setup.bashTo 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.launchNOTE: 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/libNow 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:=gofaYou can test the functions with the following commands (
Python:
rosrun drims_template take_the_dice_example.pyC++:
roslaunch drims_template test_example.launchThis 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.launchBoth 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