Grab Coke Requirements - mfkenson/MAEG5755-2021-Team-PARK GitHub Wiki

The project will require you to extend the minimalist examples that are introduced in our ROS book.

  • lecs 11-16 that help you to learn concepts and code necessary to implement this project.
  • Note: these lecture “numbers” are in relationship to the video (ros course) not maeg5755.
  • In the above lectures, we learn to grasp a toy block from the top. For this project, you will modify the mobile manipulation demo from Lecture 16 (fetch and stack) and replace the toy block for a coke can.
  • In this case, the coke can should be grabbed using a SIDE APPROACH instead of a TOP DOWN approach.
  • If successful, you will have learned to work with additional objects in the world, and to devise different strategies for grasping.
  • The coke can is a standard Gazebo model that should be available to you if you have downloaded gazebo models.

Changing the object will require you to go through the code and implement a few changes:

Correct Gazebo World

  • You will need to create a new node in the example_gazebo_set_state package to load a coke can instead of a toy_block so that your launch file automatically sets your Gazebo world properly.
  • Notice that the object_manipulation_properties package already definesthe COKE_CAN_UPRIGHT in object_ID_codes.h

Find (Coke) can

  • Modify the object_finder code (client/server) to be able to find the can on topof the table, just as with the toy block.

Grab the can

  • Most changes will take place in this section. For you to be able to grab the can, you will need to:
  • Extend the object_grabber action message to include a coke can (cylinder). (Hint see the object_grabber2.action file).
  • Note, for the real project, you do not need to implement the navigation part. Just the manipulation part.

Change the strategy to approach

  • Study Lec. 14, carefully. Modify object_grabber.cpp grab_object() method to retrieve a non-default grab pose as defined in object_grapper.cpp:get_default_grasp_poses().
  • Hint: Look at object_manipulation_properties: rethink_gripper_rt_manip_fncs.cpp
  • For the purposes of the demo, you may need to modify the hard-coded poses used in the client code (fetch_and_stack_client.cpp) to place the can during the placing phase of the can on the table at the end of the demo.
  • Notice the height difference between the can and the toy block.