Updates for the first exercise

Following parts are modified or added in last two weeks:

GUI

  • Add button to respawn models in Gazebo and Rviz()
  • Limitation of the joint value and home pose are specfied in a separated yaml file instead of hard coding
  • Some modifications in visulization

API
All APIs are rearranged in last two weeks. The full list of API can be found in the documentation of the first exercise.

Add model manager
A model manager is added to manage(spawn or delete) the objects to be pick and place in both Gazebo and Rviz. All information about the objects, possible obstacles and targets are specified in a model_info.yaml file will be readed into the model manager.

World
Some new models, including conveyor, table, boxes and ground, are generated and uploaded into a new Gazebo world. The mesh of models are generated and textures are attached in Blender. Then collision are added to the models with Gazebo model editor.

Solution
An example new solution with the new world and APIs are implemented. It cannot promise to success each time for all the objects, but over 80 percent objects can be picked and placed successfully. The APIs are also improved a lot while writing the solution. The most useful new function is to specify some point of the gripper as TCP. With this functionality, it is much easier to tune the grasping parameter when the grasping direction is not perfectly vertical or horizontal.

Documentation of the first exercise
The draft of the documentation of the first exercise is available in last post. It contains installation and usage guide, API and GUI introduction, Theory, Hints and a solution demonstration video.

Start building the second exercise

The world for second exercise is built as below. One kinect is fixed above the conveyor. Another kinect is fixed to the end of the UR5 robot. The robot and gripper in the second exercise are changed from irb120 robot and robotiq85 gripper to UR5 robot and vacuum gripper.

second exercise world

One problem I am struggling is that the robot cannot stably start with a given pose in Gazebo world, which is also still an open issue in gazebo_ros_pkg repo. It sometimes works with some methods they proposed, but doesn’t work each time, so I think if it is not that important to directly spawn the robot with a desired pose in Gazebo, we can make it move to the desired pose later.