4.5.3 Pick & Place: Part 2

Course subject(s) Module 4. Manipulation

In this lecture, we will continue with composing a simple pick and place pipeline with different MoveGroup APIs.

Testing our pick and place pipeline:

Start the factory simulation.
$roslaunch hrwros_gazebo hrwros_environment.launch

In a new terminal source our setup files.
$ source $HOME/hrwros_ws/devel/setup.bash
$ roscd hrwros_week4/scripts/

Uncomment the following function in .../hrwros_week4/scripts/simple_pick_place.py (#L84):
robot1_client.wait_for_result()

Make the script executable and run it.
$ chmod +x simple_pick_place.py
$ rosrun hrwros_week4 simple_pick_place.py

Now let’s test the nonblocking execution. Open up .../hrwros_week4/scripts/simple_pick_place.py:

Remove the following function and restart the script (#L84).
robot1_client.wait_for_result()

Results of first robot:

  • Preemption of the first goal
  • Only the second was executed

Results second robot:

  • Two separate clients which send information to the same server
  • Blocking

Waypoints:

  • Poses of robot end effector
  • Timing synchronisation results in an incorrect pose
      •  Issues with get_current_pose() API
      • Fixed with delay

current_pose = robot1_group.get_current_pose()
rospy.sleep(0.5)
current_pose = robot1_group.get_current_pose()

  • Waypoints should only consist of pose messages
  • Linear offsets with geometry_msgs.msg.Pose().

Pose stamped messages consists of timing and reference frame information along with the pose message type.  The extraction of the pose message can be done as following: current_pose.pose.position.x +0.10

Finally, we can add the newly created waypoint and the current pose.

Creative Commons License
Hello (Real) World with ROS - Robot Operating System by TU Delft OpenCourseWare is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Based on a work at https://online-learning.tudelft.nl/courses/hello-real-world-with-ros-robot-operating-systems//.
Back to top