GoogleCSR Autonomous Robotics Project Spring 2001

Autonomous Robot Exploration

Faculty Mentor: Damian Lyons (Fordham)


Autonomous vehicles and robots are increasingly visible in magazines and news stories. It seems inevitable that they will soon be a major commercial technology. The objective of this project is to use the open-source ROS mapping and navigation stack and devise a way for a mobile robot to quickly and automatically learn the physical map for a house so that it is prepared to carry out domestic activities.

Participant Background

This project is appropriate for participants who have a background in computer science, especially Linux and Python programming. ROS is an open-source framework for building robot programs that runs under Linux, and Python is one of the easier languages in which to program ROS nodes. Experience cloning and ‘make’ing software from github would be a big help.

Objectives and Learning Goals

The participants in this project will achieve the following:

  • Gain a basic understanding robot programming.
  • Learn about ROS – one of the principal tools for programming robots.
  • Exposure to widely used techniques and algorithms for mapping and for robot navigation.
  • Experience writing ROS nodes and evaluating robot behavior.

Important Links

ROS Wiki:


Gentle introduction to ROS:

Gazebo Tutorials (only for the GUI!): " target="_blank">]]

Overview of SLAM:

SLAM by GMapping:

Setting up Ubuntu on a VM (only if you need to): Here


Team1: Zarrin, Jessica, Duvall,,,

Team2: Feizza,Connie, Sylvia,,


W1 3/1: Begin Phase 1 UBUNTU in place, ROS installed, Start tutorials

Install up to 3.1.5 on the robotis 'quickstart guide. Examine your ~/bashrc file as in 3.1.6 part 3 and make sure you have the two lines ABOVE the red box.
Type them in if you do not. Ignore the two lines in the red box.

Start the ROS twiki tutorials. You an use "rosrun turtlesim turtlesim_node" as a simulator if you want - thats what's in the tutorials.
or use "roslaunch turtlebot3_gazebo turtlebot3_house.launch" You need to get as far as #13. (Don't do #11 or any C++ material).
see if you can get to #6 before the next meeting.

If you find that you do not have the turtlebot3_gazebo package then you need to install from the robotis web page, item 6 Simulation.

Plan to meet with your team -- anyone on the team can organize this, but if you don't hear anything by Saturday then YOU organize it.
Share progress and help each other.

Read the document "A Gentle Introduction to ROS" - use this as a reference document for the first tutorials.

Next meeting is 5pm on Wed Mar 10.

W2 3/8: >= 50% ROS tutorials. One team member to specialize in gazebo knowledge

Install the simulation packe as per class if you have not. Kill that shell and start a new one or you won't get the updated definitions from your install.

Launch the taurtlebot3_house gazebo simulation and explore ROS commands such as rostopic list and rostopic echo. The /odom topic is the odometry (position) information available to the robot. The /scan topic is the list of 360 range readings from the laser ranger, each at 1 degree around the robot, anticlockwise.

Review the code I attached in terms of the Subscriber/publisher tutorial, be prepared to discuss this next week.

Next meeting is Wed Mar 17th 5pm and we will cover SLAM and gMapping.

W3 3/15: ROS tutorials done. Motion and sensing scripts. One team member to specialize in gMapping

The file is attached (you need to remove the ".txt" from the name when you download this to execute)

Review this program and discuss it in your group meeting. If your group has questions, please email me, but copy both teams so everybody can benefit from the answer.

Using "roslaunch turtlebot3_gazebo turtlebot3_house.launch" start the simulated house world. In a separate window, start the wanderT3 python program with "python". Observe the behavior of the robot - have you any ideas for improvement so that it explores the house better and quicker?

The demonstration of SLAM did not go as expected during our meeting. I had forgotten to type"source ~/catkin_ws/devel/setup.bash" before I started it, and thats how come I got some errors when it started!

You need to have started the house simulation first, and then start a new terminal window.

When you type "roslaunch turtlebot3_slam turtlebot3_slam.launch slam_method:=gmapping" what you should see is this

This shows the 'progress' of the robot in using the 360 degrees of laser range finding data to make a map. If you start another new terminal shell and let run, you will see the map grow. You can also use the teleoperation command from last week to 'drive' the robot around, and that is a much quicker way to make the map!

Next meeting is Wed Mar 22, 5:00pm.

W4 3/22: Demo gMapping. wander script. exploration mapping

NOTE: an important note for everybody: add the following line at the end of your .bashrc file in your home folder:
source ~/catkin_ws/devel/setup.bash

To start the SLAM mapping node in ROS do the following:
1. In a new terminal window type
roslaunch turtlebot3_slam turtlebot3_slam.launch slam_method:=gmapping
2. To move the map display in the RVis GUI that comes up when you type this:
left button drag will rotate the view
shift left button drag will move the view up/down and left/right
zoomin/out as you would for gazebo

To SAVE your map, in a new terminal window, type
rosrun map_server map_saver -f nameoffile

Here 'nameoffile' will be any name you pick to save the map. The map will be saved as a PGM image file. To view it, type "eog filename". The command"eog" is a linux command ("eye of gnome") related to the Gnome window system, and that runs on linux that you can use to view any kind of images.

To start a teleoperation ROS node to move the robot around:
1. start a new terminal window and type
roslaunch turtlebot3_teleop
and press the TAB key to allow it to auto-complete. Then press enter.
2. Try to have the Gazebo and/or RViz view oriented so that moving the robot forward is up on the screen
3. w and x increment/decrement forward velocity, a and d increment and decrement rotational velocity
pressing the space bar stops the robot
4. I recommend you navigate by rotating the robot until it faces in the right direction, and then go forward. When you want to change direction. stop, rotate to the right direction and only then go forward.

You can start the wander program anytime you want by making a new terminal window and typing "python". Stop any of these nodes that you do not want by typing control-C (^C).

NOW you need to think about how to change wanderT3 so that it allows gmapping to make a better quality map. Think: how can you avoid it going over the same spot repeatedly? How can you encourage it to explore new areas, go into doorways and corridors and so forth?

It may be useful to have access to the robot's estimation of its own location in space. The location is just a coordinate on a 2D grid (x,y) in meters along with an angle that gives the direction the robot is facing (the yaw angle, or angle around the Z axis) in radians (remember 2pi radians = 360 degrees).

The program attached here shows you how to 1) declare that your node SUBSCRIBES to the position topic which is called /odom and 2) make a callback function for the topic that will place the x,y, and yaw angle in a global variable called gLoc, where gLoc=[x,y,angle].
If you include these two steps in YOUR program, then you will always have access to the current position of the robot as the global variable gLoc.

The program is executed in a new terminal window by typing "python" with two numbers on the same line separate by a space, e.g.
python 1 2
The robot will try to drive to this location on the grid (1,2). It does not avoid obstacles.

Next meeting is Wed 3/29 at 5:00pm

W5 3/29 Begin Phase 2

Design & testing of exploration algorithms

W6 4/5:

W7 4/12:

W8 4/19:

Workshop 4/23 -- Poster/Video from each team showing rsults


Persons/group who can view/change the page:

-- (c) Fordham University Robotics and Computer Vision

Topic attachments
I Attachment History Action Size Date Who Comment
Texttxt r1 manage 3.2 K 2021-03-18 - 01:27 DamianLyons
Texttxt r1 manage 3.0 K 2021-03-25 - 13:49 DamianLyons Goto node
Texttxt r1 manage 1.7 K 2021-03-10 - 21:18 DamianLyons Simple ROS Node
Edit | Attach | Watch | Print version | History: r16 | r10 < r9 < r8 < r7 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r8 - 2021-03-25 - DamianLyons
  • Edit
  • Attach
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2022 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback