89-685: Introduction to Robotics
Fall 2016: Assignment 3
Due at 23:59:59, Sunday, March 19th, 2017.
In this assignment you will continue the navigation task from the previous assignment. This time you will create a simple
executioner that will execute the navigation plan computed by the planner from the last assignment.
Your program will be given a starting location and a goal location, and should move the robot from the starting location
to the goal location, along the shortest path connecting them.
The launch file of your program should include the following parameters (the values are given here as an example):
A sample launch file can be found here.
<arg name="map_file" default="$(find turtlebot_gazebo)/maps/playground.yaml" />
<param name="starting_location" value="0,0" />
<param name="goal_location" value="2,-1.5" />
<param name="robot_size" value="0.35" />
<param name="map_resolution" value="0.05" />
- Invoke the planner from assignment 2 to compute the shortest path from the starting location to the goal location.
- Smooth the path by choosing a set of waypoints on the path, such that the robot can move from one waypoint to the next one in a direct line (without turning). For example, if the path returned from A* is (1,1)→(1,2)→(1,3)→(2,3)→(2,4)→(2,5), and there is a direct line that connects (1,1) to (2,4) without getting into obstacles, then we can reduce the number of waypoints on the path to: (1,1)→(2,4)→(2,5).
- Send the appropriate cmd_vel commands to the robot to make it move along the waypoints (define a threshold which specifies
how close the robot should get near a waypoint, before it can move to the next one).
If there is no valid path from the starting location of the robot to its goal location (e.g., the goal location is outside the map
boundaries), you should print a suitable error message and exit.
- Make sure that your code is well organized and documented.
- All parameter values should be configurable.
- You should do this lab on your own. All the work you turn in should
be yours, and not done in collaboration with anyone else. If you use
any external sources of inspiration, other than ros.org, then let us know in
What to Hand In
You should hand in everything that someone else needs to run your
code. For this assignment, that means your source code, manifest file,
CMakeFiles.txt (if you're using C++), and launch files.
You should not hand in executable files, or any other files
that can be regenerated.
Your code should be easy to run. After getting a copy of your code, running
should be sufficient to execute your planner and move the robot along the navigation plan.
catkin-make --pkg navigation_task
roslaunch navigation_task navigation_task.launch
Finally, zip all the necessary files and submit the zip file to email@example.com.