Strict Standards: Declaration of action_plugin_safefnrecode::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /home/brownrob/public_html/cs148/lib/plugins/safefnrecode/action.php on line 14

Strict Standards: Declaration of action_plugin_popularity::register() should be compatible with DokuWiki_Action_Plugin::register($controller) in /home/brownrob/public_html/cs148/lib/plugins/popularity/action.php on line 57

Warning: Cannot modify header information - headers already sent by (output started at /home/brownrob/public_html/cs148/lib/plugins/safefnrecode/action.php:14) in /home/brownrob/public_html/cs148/inc/auth.php on line 352

Strict Standards: Declaration of Doku_Renderer_metadata::table_open() should be compatible with Doku_Renderer::table_open($maxcols = NULL, $numrows = NULL, $pos = NULL) in /home/brownrob/public_html/cs148/inc/parser/metadata.php on line 24

Strict Standards: Declaration of Doku_Renderer_metadata::table_close() should be compatible with Doku_Renderer::table_close($pos = NULL) in /home/brownrob/public_html/cs148/inc/parser/metadata.php on line 24

Warning: Cannot modify header information - headers already sent by (output started at /home/brownrob/public_html/cs148/lib/plugins/safefnrecode/action.php:14) in /home/brownrob/public_html/cs148/inc/actions.php on line 180
run_slam – Introduction to Autonomous Robotics
Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.

CS 148 Project 4: Run n' SLAM



Simultaneous localization and mapping (SLAM) is the problem of having a robot simultaneously estimating a map of an unknown environment and tracking its location in the constructed map. In its general form, SLAM assumes the robot has no a priori knowledge of the environment and is applicable to many forms of moving sensors (on robots, vehicles, mobile devices, etc.).

used by robots and autonomous vehicles to construct a map of an unknown environment (without a priori knowledge), or to update a map within a known environment (with a priori knowledge from a given map), while at the same time keeping track of their current location.

In this assignment, you will become familiar with the SLAM process for building a simple map using ROS's default navigation stack. No new Turtlebot packages will be developed for this assignment. The details of implementing SLAM are beyond the scope of the course, but in future assignments you will use the map you have constructed. This assignment is simply to introduce the problem and get you to understand some of the challenges involved with localization and mapping.

As an example of SLAM, below is a map of the CIT fourth floor generated by the ROS navigation stack (Room 404 is missing in the map):


Note: This map was produced by the PR2, with much more accurate, precise, and expensive ranging and odometry measurement equipment than the Kinect on the Turtlebot. Your maps probably will not be quite this nice, but you should be able to get close.

Important Dates

Assigned: Oct 5, 2011

Due : Oct 12, 2011, 12:30pm


In this assignment you will build a closed-loop map.

Assignment Instructions

Your tasks for this assignment are as follows:

  1. Set up your workstation
  2. Bring up the Turtlebot
  3. Teleoperate the Turtlebot from workstation
  4. Visualize the Turtlebot using rviz on the workstation
  5. Bring up the navigation stack
  6. Navigate around and build a map
  7. Save the map
  8. Submit your map

Two netbooks are provided in CIT Room 404. You will need to use one of these netbooks as your workstation and run SLAM to build a map. Password for all accounts is 123456.

Workstation Setup

In order to access and control a robot remotely, two Linux environment variables need to be set. If setup is done correctly, “rostopic list” should show the list of available topic from the robot. If you see “Could not contact ROS master”, either something is wrong with your environment settings or the robot has not yet been started. Note that setting an environment variable in a particular terminal window affects only commands given in that terminal window.

On Robot
  • Set ROS_HOSTNAME as IP Address of robot
On Workstation
  • Set ROS_HOSTNAME as IP Address of workstation
  • Set ROS_MASTER_URI as IP Address of robot with port 11311
> export ROS_MASTER_URI=http://[ROBOT_IP]:11311

Please refer this page Turtlebot Network Setup for more details

Bringup Turtlebot

  • Run Turtlebot Driver on robot.
> roslaunch [turtlebot name].launch
  • Open terminal and run Turtlebot Dashboard on workstation
> rosrun turtlebot_dashboard turtlebot_dashboard

Please refer the previous robot bringup instructions for more details.

Teleoperate the robot

Open a terminal on workstation and run teleop_keyboard

> rosrun teleop_twist_keyboard /cmd_vel:=/turtlebot_node/cmd_vel

Visualize the robot

  • Open a terminal on robot and run mjpeg server
> rosrun mjpeg_server mjpeg_server
  • open a browser on workstation and access the stream using following URL. For details, refer mjpeg_server ROS wiki

  • Open a terminal on workstation and run rviz
> rosrun rviz rviz -d `rospack find turtlebot_navigation`/nav_rviz.vcg

Bringup navigation stack

  • Open a terminal on robot and launch gmapping_demo
> roslaunch turtlebot_navigation gmapping_demo.launch

After this step, you should be able to see a turtlebot model, current progress of the map, laser sensor data. For more details, refer Turtlebot SLAM

Navigate and Build a map

  • Navigate the closed-loop section of the CIT 4th floor using teleop-keyboard and mjpeg_server image stream
  • See mapping process using rviz
  • Take it slow and careful. A Turtlebot's odometry is not very good, and it can easily get lost. Going slow allows the robot to update its position based on the map it has built so far.

Here is the sample closed-loop on CIT fourth floor:


Save Map

Once your robot has navigated around the hall and built a beautiful closed-loop rviz map, save the map and end the project.

  • open a terminal on workstation, where rviz is running, and run map_saver
> rosrun map_server map_saver

This command will save the map as file name “map.pgm” and “map.yaml.” Refer this page for details map server


To submit this assignment, create a branch of your repository named “run_slam_[Your team name]”. You must submit a ROS package called “slam” which includes your generated map (both the pgm and yaml files), and a README file. The README file should explain your mapping procedure and anything you want us to know.

For extra credit, you can provide an additional image that is a Minkowski sum of the map with a circle of Turtlebot diameter. You will have to do this anyway for the path planning assignment, so it might as well be done earlier rather than later.

This assignment is a preparation for the next assignment, which will involve path planning. Make sure you understand how to set up the remote workstation access and SLAM.

Note that the map does not have to be perfect since the Turtlebot odometry and Kinect range sensors are both fairly noisy. However, the map you build should be better than this:


Turtlebot mapping example from ROS nav_stack tutorials:

The Adobe Flash Plugin is needed to display this content.

run_slam.txt · Last modified: 2011/10/12 08:22 by brownrobotics
Trace: run_slam
Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.
CC Attribution 3.0 Unported Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0