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

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
introduction – Introduction to Autonomous Robotics
Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.

Brown CS 148

CS 148 is an introduction to core topics in developing software systems for autonomous robots. This course focuses on the development of “brains for robots”. That is, given a robot as a machine with sensing, actuation, and computation, how do we develop programs that allow the robot to function autonomously? Such programs involve the robot's perception of its world, decision making towards some objective, and transforming decided actions into motor commands. We answer this question through a series of lectures, class discussions, and group projects.

This year, CS148 projects will use the Willow Garage Turtlebot with the Robot Operating System (ROS) robot middleware framework. These projects will explore various approaches to robot decision making (spanning reaction to deliberation), perception (basic object recognition and state estimation), and control (proportional-derivative servos).

Meeting Time, Prerequisites, Web Site

Meeting time/place: M,W,F 1:00-1:50 (F Hour) in CIT 368

Prerequisites: Any one of the following: CS15, CS17, CS19, or permission from the instructor

  • CS 15, 17, or 19 should provide an adequate programming background for the projects in this course. In addition, motivated students who have taken CS 4 should consult with the instructor before enrolling in CS148. Interested students who have not taken any of these courses at Brown, but have some other strong programming experience should consult with course instructor.

Mailing list:

!!update The up-to-date syllabus is available on the CS 148 google calendar. Labs and projects are also posted on the website, but the outgoing and due dates are not official until announced in class. Refer to the course web page and course mailing list ( often. Any important announcements will be posted on the mailing lists and updated on the web page.

Make sure you are subscribed to the CS148 mailing list.

Course Staff and Contact Information

Instructor Chad Jenkins (cjenkins)

Grad TA Brian Thomas (brian)

Head TA Kayle Gishen (kvgishen)

TA Jihoon Lee (jihoonl)

Please use the CS148 mailing list ( as the primary means for correspondence with the course staff. Many questions, issues, and concerns are typically applicable to the class as a whole. Help us avoid redundancy by using the mailing list first. Issues relevant to specific individuals or working groups can be addressed to the course staff via cs148tas. Issues involving sensitive information can be addressed to the instructor and/or HTA, but should be used only if absolutely necessary.

Disclaimer: the real world is unforgiving!

This course involves a significant amount of programming and decision making under uncertainty. Robotics is about understanding and functioning in the real world. However, the real world is highly dynamic, uncontrolled, and nondeterministic. These factors result in uncertainty that is unlike the structure and determinism of traditional computer science. Programming in the face of such uncertainty is a persistent challenge faced at all levels of robotics. Consider yourself warned. Suggestions are welcomed, complaints will be ignored.

Further, CS 148 is about developing robot software systems. CS 148 integrates many different aspects of algorithms and computing to make robots work in real environments. Some of these concepts are unique to CS 148 and will be covered at depth. However, the course will assume concepts covered in other classes (e.g., Dijkstra's algorithm) or too involved to described at depth within the time permitted (e.g., advanced visual object recognition). In these cases, the course will only cover these topics briefly and use existing modules in ROS for project implementation. If you want detailed coverage of robotics from the founding principles up through state-of-the-art systems, then please ask the university to hire more roboticists.

... but there are opportunities

While currently problematic, the challenges of the physical world offers new and great opportunities for the pioneering spirit. Think of robotics as a means to extend computing and the Internet into the physical world, where programs go beyond operating in digital virtual environments into autonomously affecting in the physical world. This is the perfect time to be a roboticist. Similar to “personal computing revolution” a few decades ago, robotics is the dawn of its own “personal robotics revolution”, where many great robotic technologies that are now starting to come together and new industries are being formed.

Lectures and Central Themes

Lectures and activities in CS148 are centered around the basic notion of an autonomous robot control loop, as illustrated below. CS148 focuses mostly on autonomous aspects of this loop, pertaining to computational issues for perception (estimation of the state of the world), decision making (deciding on actions to achieve objectives), and motion control (executing decided actions). CS148 does not cover in substance topics within robot engineering for building the “embodiment” (actuators, sensors, physical parts) of a robot.

Algorithms covered in lectures are cast as components in this loop that will be used to form complete project implementations, assuming certain existing functionality. For example, the Object Seeking project involves color blobfinding for perception, a finite state machine for decision making, and proportional-derivative control for motion control.

Class Format

Topics covered during lectures will be grounded in implementations during interactive sessions and 7 assignments. Interactive sessions will be devoted to a hands-on introduction to ROS and working with our iRobot Create platforms leading up to autonomous robot projects. The first 2 assignments are an introduction to implementing robot controllers using the ROS robot middleware as well as basic issues for autonomous robotics:

  1. Enclosure Escape: implement a reactive random traversal robot control policy to escape from an enclosure.
  2. Object Seeking: implement a control policy to continually seek and visit two objects in alternation.
  3. Tangent Bug: given neither a map or localization, navigate to a goal location using onboard range and tactile sensing
  4. Run n' SLAM: build a map of the building by running the ROS Navigation Stack
  5. Path Planning: given a map and robot localization, develop a deliberative planning-based robot client for reaching a goal location
  6. Localization: given a map and your path planner, develop a package to localize the robot from its onboard sensing
  7. Subsumption: play robot soccer reactively, i.e., without maintaining any state (history or timing variables)
  8. Drink_Serving Competition: given a stream of drink orders, pick up and deliver these drinks to people in the building

In recent years, CS 148 has focused on robot soccer as an application domain. Given the recent availability of the Willow Garage Turtlebot, this year's focus will be a drink serving application. Although the application domain may change, the core concepts of the course remain the same.


CS 148 projects are graded as “checked” (completed) or “not checked” (incomplete). To receive an A grade in the course, you must have all assignments checked by the end of reading period. A B grade, 6 assignments must be checked. Less than 6 checks will result in no credit for the course. Consult the course calendar for more information about the timing and due dates for these projects.

Git repositories are provided for intra-group collaboration and project submission. Project implementations are submitted as branches in your assigned repository. These branches must be submitted prior to the due date for each assignment. Your implementation will be checked out and executed by the course staff, so make sure your code will run on a clean ROS install. You will be notified by the course staff whether your implementation is sufficient for checking off the assignment. If your assignment is insufficient for receiving a check, your group is allowed one regrade (per assignment) with 2 weeks of notification. If deemed necessary, the course staff may require an interactive demonstration of your implementation and/or a web-based written report.


The course staff will provide a git repository for each student group to check in project source code and reports. Please refer to this tutorial for an in-depth introduction to git and version control. We expect students to use these repositories for collaborative development as well as project submission. It is the responsibility of each student group to ensure their repository adheres to the Collaboration Policy and submission standards for each assignment. Submission standards and examples will be described for each assignment.

Late Policy

Do not be late submitting assignments. The course staff reserves the right to not grade late submissions.

200-Level Credit

CS148 can be taken for 200-level (graduate) credit. Please consult the course instructor for more information.

Mobile Robots and ROS (Robot Operating System)

Projects are based primarily on the Robot Operating System (ROS) framework developed by Willow Garage. Willow Garage describes ROS as follows:

<blockquote> “ROS is an open-source, meta-operating system for your robot. It provides the services you would expect from an operating system, including hardware abstraction, low-level device control, implementation of commonly-used functionality, message-passing between processes, and package management. It also provides tools and libraries for obtaining, building, writing, and running code across multiple computers.” </blockquote>

[ The brown-ros-pkg repository] provides code and instructions for ROS support of the iRobot Create and other hardware/software needed by course robots.

This year, we are using the Willow Garage Turtlebot, which features the iRobot Create mobile base, a Microsoft Kinect, a dual-core subnotebook computer, and a pre-install version of ROS.

The ROS and Turtlebot projects are still relatively new and in flux. Thus, your understanding and cooperation will be appreciated when problems arise. The ROS community actively uses the [ | message board] for questions and discussions, which you are also welcome to utilize.

Assembly your own robot

Robot platforms used in this course are meant to be reproducible by students and individuals beyond this class. Hardware used by robots in CS 148 is comprised of “off the shelf” components that can be readily purchased and assembled without custom engineering. Software used in CS 148 is all open source and free for download. Brown Robotics strives to maintain current instructions for assembling and getting up-and-running robots we use in class:

The Adobe Flash Plugin is needed to display this content.


Required Reading www.bloomsbury.com_images_books_medium_9780747580232.jpg

* Choset, Lynch, Hutchinson, Kantor, Burgard, Kavraki and Thrun, "Principles of Robot Motion: Theory, Algorithms, and Implementations", MIT Press, Boston, 2005.

* Wilson, "How to Survive a Robot Uprising", Bloomsbury USA, 2005. Though Wilson's book has a humorous tone, it does cover many of the topics in CS148 in a substantive and accessible manner.

Recommended Reading

Other readings used in class are optional. Substantial material exists on web-accessible resource such as Wikipedia and the AI Topics Library(specifically from the Robots section).

Selected passages from the following books will be used during this course:

Roomba Lab (CIT 404)


The Roomba Lab is the central location for course labs, project work, demos, soccer matches, and interactive sessions. Robots used for this class will reside in this lab and will be accessible via wireless networks. We have provided the wireless “AIBO” network, but the robots can also be reached through campus wireless networks (for moving around the building).

The Roomba Lab has a card reader on the door. All students on the class mailing list will be given card access to the lab and floors 3-5 of the CIT building, if requested. Again, it is important to make sure you are subscribed to the CS148 mailing list! Given that everyone will have access to the lab, it is in the best interest of all involved to keep the lab organized and clean. The lab should never be left open and unattended; it contains hardware that is difficult to replace.

Important: The door to the lab is to remained closed at all times. It is critical that the robots and machines for the course remain secured. If you are leaving the lab, even just for a minute, DO NOT leave the door propped open. As described in the security policy, careless treatment of course equipment will not be tolerated.

TA Hours

Refer the course web page for the individual TA's hours and locations. Students will have access to the Roomba Lab at all hours. Students may use the computers in the Roomba Lab for CS148 project work only. The TAs will answer questions related to lectures, labs, and course-related material.

introduction.txt · Last modified: 2011/09/12 13:25 by brownrobotics
Trace: introduction
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