-
Notifications
You must be signed in to change notification settings - Fork 2
Lab 8: Cozmo Manipulation
In this lab you will make Cozmo manipulate an everyday object, using a combination of programming and environment design, engineering, and low fidelity prototyping. Note that there is no starter code for this lab.
Step 1: Choose an everyday object that you would like to make Cozmo pick-up and place. The object should be light enough so it can be lifted by Cozmo, i.e. about the weight of the blocks that come with Cozmo. You will test two different strategies for enabling Cozmo to pick and place the object.
- Strategy 1: Modify Cozmo's manipulator.
- Strategy 2: Modify the object or the environment.
Modifications can be done with simple materials you find in your environment such as paper, tape, LEGOs, clay, among others. You are also welcome to take advantage of prototyping tools, such as a 3D printer, you have access to. Ensure that no permanent modifications are made to the Cozmo at this point (we might allow it for projects later). Two examples for picking up a pill bottle are shown below. Experiment with different designs by manually trying to lift the object to find the best option.
IMAGE
Next you will design two robot actions to (1) pick up and (2) place/drop/release the objects with each of the two strategies (i.e. four actions total). You do not need to implement object perception capabilities for this lab; you can assume that the robot and the object start at the same initial relative pose before the action is executed. As in Lab 7, the action can be open-loop, it does not need to use perception to check or monitor the effect of the action. In addition to the two strategies, you can make assumptions about environmental constraints--for example, you can assume the object is in front of a wall when it is being picked up so that your action could take advantage of the wall. Or you can assume the object is being dropped off the table rather than being placed onto the table. Make a video of the robot performing all four actions successfully. Make sure all your modifications can be seen clearly in the video and all your assumptions are listed.
Step 2: Next you will make Cozmo manipulate an object without picking it up, by pushing it on the surface. You can use the same object as in Step 1 if appropriate, but you can also choose a different object making sure it can be easily pushed on the surface that you operate Cozmo and will not easily tip over. You can use one or both of the modification strategies to enable or simplify this task--for example you can stick a soft heavy platform below your object so it slides better and it is more stable; or you can add side panels to Cozmo's fork lift so it can better control the object, as in the image below.
IMAGE
Next you will write a program that transports the object to a given target pose. You can assume that the object starts at (0,0,0) and the robot starts a fixed relative pose--you might want to mark these poses on the surface.
Depending on your setup, you might not need to implement any object perception for this lab. However, if you feel that keeping track of the object will be necessary you can use custom object markers with Cozmo which you can print and attach to your objects; see cozmo.objects.CustomObjectMarkers.
Your program should first make the robot get in contact with the object