Project 5
Disclaimer
Please DO NOT distribute project material or solutions online (e.g. public GitHub repositories). We take violations of the honor code very seriously.
Overview
For this assignment, you will now implement a RRT-Connect motion planner to let your robot navigate from any configuration to the “zero configuration” (where every robot DOF has a zero value). This configuration space includes the state of each joint and the global orientation and position of the robot base.
2D RRT-Connect in
project_pathplan/rrt.jsConfiguration space collision detection in
kineval/kineval_collision.jsConfiguration space RRT-Connect in
kineval/kineval_rrt_connect.jsOriginal instructions available at https://autorob.org/#assignment6
Instructions
- Start with your solutions to project 4
- Solutions to project 4 will be released on 03/03/2024 (Sun). You can also start from here.
2D RRT-Connect in
project_pathplan/rrt.jsChange
initSearch()in yourproject_pathplan/infrastructure.jsto setsearch_alg = "RRT-connect";.Complete the
iterateRRTConnect()function. Its expected behavior is provided in the code stencil.You do not need to implement
iterateRRT()oriterateRRTStar().The relevant global variables, such as
eps(Max step length for generating new nodes),T_a(RRT tree starting form init), andT_b(RRT tree starting from goal), are defined and initialized ininitSearch()atproject_pathplan/infrastructure.jsYou can use provided support functions from
project_pathplan/infrastructure.js, includinginsertTreeVertex()andinsertTreeEdge()You may also create additional helper functions in
project_pathplan/rrt.jsto handle different steps of the RRT-Connect algorithm; some suggestions are provided in the code stenciliterateRRTConnect()is called for you from the animation code, and it should perform just one iteration of the RRT-Connect algorithm each time it is calledWhen your search succeeds, you should use set
search_iterate = falseto stop searching and calldrawHighlightedPath()fromproject_plan/draw.jsto visualize the final path found.Make sure that your path is from
q_inittoq_goalas defined inproject_pathplan/infrastructure.js.
You can check your implementation by opening
http://localhost:8000/project_pathplan/search_canvas.htmlin your browser. It will look like the video below.
Configuration space collision detection in
kineval/kineval_collision.jsComplete
kineval/kineval_collision.jsUncomment
return robot_collision_forward_kinematics(q);Implement
robot_collision_forward_kinematics(),traverse_collision_forward_kinematics_joint()and any helper functions you need.When finished,
kineval.poseIsCollision()should return the name of the link in collision.
You can check your implementation by opening
http://localhost:8000/home.htmlin your browser. The kineval code will automatically display the colliding link in red wireframes like the video below.
Configuration space RRT-Connect in
kineval/kineval_rrt_connect.jsModify
kineval.robotRRTPlannerInit()to initialize RRT trees.Complete
robot_rrt_planner_iterate()and any helper functions inkineval/kineval_rrt_connect.js.This function must execute a single RRT-Connect iteration.
Return
"reached"if the search succeeds and"searching"otherwise.When the search succeeds, set the path
kineval.motion_planto a list of vertices (which store the configuration in the.vertexproperty) fromq_start_configtoq_goal_config. This will be used in lines 64-91 ofkineval/kineval_rrt_connect.jsto traverse the plan.Your configuration space is constrained to robot base positions inside
robot_boundaryin each world file atworlds/world_*.js.The robot cannot take steps longer than 1 (the 2-norm of the delta should be leq 1, analogous to eps=1 in 2D RRT).
When finished, open
http://localhost:8000/home.html?world=worlds/world_s.js, move the robot to the opposite corner, pressxto zoom out a bit, and pressmto initiate the search. After the path is found, pressbandnto move the robot through the found plan. It should look like the video below (Download and play this video if it freezes).
- Submit your
project_pathplan/rrt.js,kineval/kineval_collision.js, andkineval/kineval_rrt_connect.js- The autograder is available at https://cse-ag-csci5551.cse.umn.edu/
Deadline
This project is due on Wednesday, March 20th at 11:59pm CT.
Grading
The project is worth a total of 10 points.