Capstone Dev
This page describes the Capstone Project for the Coursera "Modern Robotics" Specialization. This project forms the sixth and final course of the Specialization: "Modern Robotics, Course 6: Capstone Project, Mobile Manipulation." This project draws on pieces of Courses 1 to 5. Depending on your experience with programming, this project should take approximately 20 hours, broken down into three intermediate milestones and the final completed software plus demonstrations of it.
You should use the Modern Robotics code library to help you complete this project.
Introduction
In your capstone project, you will write software that plans a trajectory for the youBot mobile manipulator (a mobile base with four mecanum wheels and a 5R robot arm), performs odometry as the chassis moves, and performs feedback control as the youBot picks up a block at a specified location, carries it to a desired location, and puts it down.
The final output of your software will be a comma separated values (csv) text file that specifies the configurations of the chassis and the arm, the angles of the four wheels, and the state of the gripper (open or closed) as a function of time. This specification of the position-controlled youBot will then be "played" on the V-REP simulator to see if your trajectory succeeds in solving the task.
Unlike previous projects, where we used V-REP to simply visualize the robot's motion, in this project V-REP will use a physics simulator to simulate the interaction of the youBot with the block. In other words, if the gripper closes on the block in the wrong position or orientation, the block may simply slide out of the grasp.
The V-REP scene drives the chassis configuration according to the sequence of chassis configurations in your csv file. For the robot arm, simulated high-gain controllers at the arm joints cause the arm to closely follow the configurations in your csv file.
The interaction between the robot and the block is governed by a physics simulator, often called a "physics engine," which approximately accounts for friction, mass, inertial, and other properties. V-REP has different physics engines which you can select, including Bullet and ODE.
The time between each successive configuration in your csv file is 0.01 seconds (10 milliseconds). A typical line of your csv file would be something like
-0.75959, -0.47352, 0.058167, 0.80405, -0.91639, -0.011436, 0.054333, 0.00535, 1.506, -1.3338, 1.5582, 1.6136, 0
i.e., thirteen values separated by commas, representing
chassis phi, chassis x, chassis y, J1, J2, J3, J4, J5, W1, W2, W3, W4, gripper state.
where J1 to J5 are the arm joint angles and W1 to W4 are the four wheel angles.
Wheels 1 to 4 are numbered as shown in the image to the right. The ten angles (phi for the chassis, five arm joint angles, and four wheel angles) are in radians and the two chassis position coordinates (x,y) are in meters. A gripper state of 0 indicates that you want the gripper to be open, and a gripper state of 1 indicates that you want the gripper to be closed. In practice, we have specified that the transition from open to closed (or from closed to open) takes up to one second, so any transition from 0 to 1, or 1 to 0, in your csv file will take some time to be implemented.
Your software will take as input:
- the initial resting configuration of the cube object (which has a known geometry), represented by a frame attached to the center of the object
- the desired final resting configuration of the cube object
- the actual initial configuration of the youBot
- the desired initial configuration of the youBot (which will be different from the actual initial configuration, to allow you to test feedback control)
The output of your software will be a single csv file which, when "played" through the V-REP scene, should successfully pick up the block and put it down at the desired location.
Your solution must employ automated planning and control techniques from this Coursera specialization. It should not simply be a manually coded trajectory of the robot. Your solution should automatically go from the input to the output, with no other human intervention. In other words, it should automatically produce a working csv file even if the input conditions are changed.
In your software, you should first piece together a reference trajectory for the gripper of the robot, which the robot is then controlled to follow. A typical reference trajectory would consist of the following segments:
- A trajectory to move the gripper from its initial configuration to a "standoff" configuration a few cm above the block.
- A trajectory to move the gripper down to the grasp position.
- Closing of the gripper.
- A trajectory to move the gripper back up to the "standoff" configuration.
- A trajectory to move the gripper to a "standoff" configuration above the final configuration.
- A trajectory to move the gripper to the final configuration of the object.
- Opening of the gripper.
- A trajectory to move the gripper back to the "standoff" configuration.
Segments 3 and 7 each keep the end-effector fixed in space but, at the beginning of the segment, change the state of the gripper from 0 to 1 or 1 to 0, waiting one second for the gripper closing to complete. In other words, each of these segments would consist of 100 identical lines of the csv file (corresponding to one second), where the first line has a gripper state different from the previous line in the csv file, to initiate the opening or closing.
Segments 2, 4, 6, and 8 are simple up or down translations of the gripper of a fixed distance. Good trajectory segments would be cubic or quintic polynomials taking a reasonable amount of time (e.g., one second).
Trajectory segments 1 and 5 are longer motions requiring motion of the chassis. Segment 1 is calculated from the desired initial configuration of the gripper to the standoff configuration, and segment 5 is calculated from the first standoff configuration to the second standoff configuration. The gripper trajectories could correspond to constant screw motion paths or decoupled Cartesian straight-line motion plus rotational motion, time scaled by third-order polynomials (Chapter 9).
Once the entire gripper reference trajectory has been pieced together from the 8 segments, the actual trajectory of the youBot is obtained by using a Jacobian pseudoinverse position controller as described in Chapter 13.5. (Alternatively, this controller can be used to track only segments 1 and 5, which require motion of the chassis; the other segments do not require motion of the chassis.) Starting from the actual initial robot configuration (which has some error from the beginning of segment 1), your controller drives the gripper to follow segment 1, so that the gripper is at the standoff configuration for the beginning of segment 2.
To simulate the effect of feedback control, you must write your own motion simulator. For each timestep, you take the initial configuration of the robot and the wheel and joint speeds calculated by your controller and numerically integrate the effect of these speeds over a timestep to get the new robot configuration. To calculate the new configuration of the chassis due to the wheel motions, you must implement an odometry step (Chapter 13.4)....
Kinematics of the youBot
The images to the right illustrate the youBot. Click on them to make them bigger. The description below is consistent with Exercise 13.33 from the book, if you prefer to see the information there. All distances are in meters and all angles are in radians.
The configuration of the frame {b} of the mobile base, relative to the frame {s} on the floor, is described by the 3-vector or the matrix
where meters is the height of the {b} frame above the floor. The forward-backward distance between the wheels is meters and the side-to-side distance between wheels is meters. The radius of each wheel is meters. The forward driving and "free sliding" direction of each wheel is indicated in the figures.
The fixed offset from the chassis frame {b} to the base frame of the arm {0} is
When the arm is at its home configuration (all joint angles zero, as shown in the figure), the end-effector frame {e} relative to the arm base frame {0} is
When the arm is at its home configuration, the screw axes for the five joints are expressed in the end-effector frame {e} as
speed limits on joints, but no joint limits. gripper spread
What You Will Do
Then more details on milestones, and the actual geometry, configurations, initial and final conditions, etc., for the demonstrator.
Milestone 1: youBot Kinematics Simulator
Input:
- stuff 1
- stuff 2
Output:
- stuff 1
- stuff 2