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.