Starting from:

$29.99

Lab 3: Motion Planning with a 6-DOF Manipulator

CS 545: Introduction to Robotics 
Lab 3: Motion Planning with a 6-DOF Manipulator
In this lab assignment, you will implement the RRT algorithm for a 6-DOF robotic manipulator. To perform the assignment, you will need to have installed the AIKIDO infrastructure. We provide for you the file adarrt.py, which contains several methods you
will fill in. During development, you will run your code in simulation with -
$ python adarrt.py --sim
The python file contains the following classes and functions:
• AdaRRT: This is the main class. It initializes the start and goal node, the number
of iterations, the step size δ when extending a node in the tree, the desired goal
precision e and the joint limits of the robot. It also includes information about the
environment, which includes a table, a soda can that we want to grasp, the robot
and a set of constraints that check for collisions. This implementation will be very
similar to the RRT you built in HW4, with a few modifications discussed below.
• AdaRRT.Node: A Node object should contain a copy of the state, a pointer to the
parent node in the tree, and a list of pointers to all its child nodes in the tree. A
state in the provided code is a 6D np.array that contains the robot’s configuration.
• main: this function specifies the start and goal configurations, sets up the RRT
planner and computes a path. It then calls the AIKIDO function
compute joint space path, which generates a trajectory for the robot to follow.
Steps to complete the lab:
1. Implement an RRT algorithm by filling in the code in the provided file. For starting configuration qS and goal configuration qG, and parameters e and δ use:
qS = [−1.5, 3.22, 1.23, −2.19, 1.8, 1.2]
qG = [−1.72, 4.44, 2.02, −2.04, 2.66, 1.39]
δ = 0.25
e = 1.0
Make sure you have roscore running before starting your RRT!
1
CS 545: Introduction to Robotics Fall 2021
2. Visualize the trajectory in rviz. First, execute your AdaRRT implementation, but
don’t execute the trajectory. Then, open rviz from the command line using rosrun
rviz rviz. In the bottom left module, click the ”Add” button and navigate to the
”By Topic” tab. You should see a InteractiveMarkers topic under /dart markers.
Add the topic before executing your trajectory generated by AdaRRT.
3. Use an off-shelf screen capture software (e.g.,
https://itsfoss.com/kazam-screen-recorder/) to record a video of the trajectory. Include the video in the root of your GitHub repo as a file named question-3.mp4.
4. The RRT trajectory is typically jerky. Typical planners use shortcutting algorithms
to make the plath smoother. Replace the function ada.compute joint space path
with ada.compute smooth joint space path. Capture the new trajectory with
two videos – one showing the default isometric view, and another showing the
top view. Include the videos in the root of your GitHub repo as files named
question-4-default.mp4 and question-4-top.mp4.
5. The goal precision e of 1.0 in the previous question is too large. In order to
avoid collisions, we need to improve the precision. However, this dramatically
increases the time to compute a solution. To improve computation, add a method
get random sample near goal that generates a sample around the goal within
a distance of 0.05 along each axis of the search space. Then, change the build
method so that it calls get random sample near goal with probability 0.2 and
get random sample with probability 0.8. Reduce e to 0.2.
Write down your observations in the PDF file. Also capture the new trajectory
with two videos – one showing the default isometric view, and another showing
the top view. Include the videos in the root of your GitHub repo as files named
question-5-default.mp4 and question-5-top.mp4.
6. Explain why it is not a good idea to call get random sample near goal with probability 1.0. Also present an example where this could be problematic. Write your
answer in the PDF.
In-person lab: Once you are confident in your simulation results, you are ready to run
it on the real robot. This can be done on the lab workstations with -
$ python adarrt.py --real
Refer to Piazza for more instructions on scheduling time in the lab.
2

More products