In dVC homework 2, you will explore the open research areas of grasp acquisition and dexterous manipulation. For each robot (disc) you will directly control its position or indirectly control its configuration by applying a wrench. The robots must be controlled to create form closure and force closure grasps of a trapezoidal object. This will require you to create coordinated trajectories (e.g., like you derived in Robotics I) for the robots that can topple the object. You will also explore the effects of different coefficients of friction and different time-step sizes. There are three required parts and a bonus part. Part 1 (20%) A) Draw the contact normal and the friction cone when ever a robot is in contact with the object. Part 2: (40%) (takes place on a frictionless horizontal plane) A) Design robot controllers (wrench or configuration) that cause the robots to achieve form closure and then transport the object to a desired position and orientation. B) Design robot controllers (wrench or configuration) that cause two or more robots to achieve force closure and then transport the object to a desired position and orientation. Part 3: (40%) (takes place in a vertical plane with gravity) A) With friction pick up object with a force closure grasp, flip it over, set it down. B) Without friction, pick up object with a form closure grasp, flip it over, set it down. Bonus: (20%) With friction coefficient set to 1, manipulate the triangle so that it fully seats in the hole. ------------------------ Compiling the code ------------------------ Visual studio: Just like last time, set the CMake variable EXTRA_APP_DIR to the full path of hw2. Reconfigure with CMake and regenerate visual studio files. When you build for the first time, select the ALL_BUILD target and go to the Build menu and choose Build "ALL_BUILD". Linux: The new targets are built as: bin/hw2_scene1A bin/hw2_scene1B bin/hw2_scene2A bin/hw2_scene2B bin/hw2_bonus ---------------------------------- Using the Code ---------------------------------- You are provided with a directory named hw2. Inside hw2 are directories: scene1, scene2, bonus. Scene1 contains directories partA and partB. Scene2 contains directories partA and partB. Write code for Part 1-A in scene1/partA. Write code for Part 2-A in scene1/partA. Write code for Part 2-B in scene1/partB. Write code for Part 3-A in scene2/partA. Write code for Part 3-B in scene2/partB. How to complete each part: Part 1: Look at how DrawLine is called from the Render method. Look at how DvcCollisionResult objects are obtained in the PostStep method. Write code in the Render method to get collisions and draw contact normals / friction cones. If you hit 'V' on your keyboard, the drawing of visual debug lines/points will be toggled on/off. Part 2: Look at the KeyDown method. Notice that when you hit 'Q' on the keyboard, the robots are commanded to move toward the part's center of gravity. This code demonstrates how you can move the robots, but is not how you should solve the homework problem. You will need to implement an intelligent controller to coordinate the movement of all four robots. The actual grip control code is located in GripControl.cpp and GripControl.h. Feel free to adjust the GripControl class however you'd like, for example, you might want to tune the K and C constants. The best place you write your solution code is the PostStep method, or, for cleaner code, you may want to write a new class to manage the individual controllers. Part 3, Bonus: After you have completed Part 2 you should have a good idea how to complete part 3. Good luck with the bonus challenge! ---------------------- Submitting the code ---------------------- You shouldn't have to modify the XML files, but if you do, make sure to copy any modifications back to the .xml.in files. Rename the hw2 source folder to your RCS id, then zip it up and email it to marioj@rpi.edu