CS 370 Course Description



Prerequisite: CS201 or CS330 or equivalent software or hardware experience

Offered: On Demand


This course teaches how to design, build, and program autonomous robots. Topics include robot architecture (sensors, effectors, processors, and platforms), as well as adaptive behavior (e.g., navigation, machine learning, and evolutionary robotics). A significant portion of the course incorporates hands-on experience with real robots as well as simulators. The second half of the course will involve team-based projects and a final demonstration.

Course Outline

(Please note that this course continues to evolve as instructors gain experience teaching it and as new robotics technologies become available at lower costs.)

  1. Introduction to intelligent mobile robots
    1. Autonomous vs. Industrial robots
    2. History of robotics
    3. Artificial Intelligence
    4. State-of-the-art in research, scientific, commercial, hobby, and entertainment robots
  2. Models of robotic computation
    1. Sensors-Processors-Effector
    2. Control loops, internal models, behavior hierarchies
    3. Levels of computational power, and intelligence
  3. Types of Locomotion
    1. Legs (walkers)
      1. Hexapods, Quadrapods, and bipods
      2. Static vs. Dynamic stability, gaits
    2. Wheels
      1. Skid Steer vs. Ackerman steering
      2. Holonomic drives and Omni-directional wheels
    3. Tracked
    4. Aquatic robots
    5. Aerial robots
  4. Basic Sensors and Effectors
    1. Servos and servo-control
    2. Motors and motor control
    3. Contact sensors
    4. Infrared sensors, passive and active
    5. Sonar range finders
    6. Light, heat, and power sensors
    7. Tilt and compass sensors
    8. Propriocentric sensors
    9. Grippers and graspers
    10. Communication
  5. Robot brain architectures
    1. Stimulus-Response robots
      1. Digital Braitenberg Vehicles
      2. S-R behaviors: Obstacle avoidance, light-seeking, edge-avoidance, wall-hugging, etc.
      3. Hierarchies of S-R behaviors
    2. Robots with finite memory (state-based thinking)
      1. Finite State Automata
      2. Classifier systems (internal message lists)
      3. Navigation and path planning
    3. Robots with infinite memory (full CPUs)
      1. Mapping behavior
      2. Heuristic planning
      3. Learning and adaptation
  6. Tele-robotics vs. autonomy vs. hybrid control
  7. Evolutionary robotics
  8. Cooperative robotics
  9. Presentation of final projects

Additional Course Description


Mobile Robots: Inspiration to Implementation, 2nd Edition, by Joseph L. Jones, Anita M. Flynn, and Bruce A. Seiger


This course has several major objectives:

  1. As an upper-division undergraduate course requiring the integration of many fundamental techniques of computer science, mobile robotics can be seen as an applied, "capstone" course in Computer Science. Foundational areas of Computer Science such as computer architecture, hardware, applications programming, operating systems, systems analysis, algorithm analysis and design, networking and data communications, and software engineering, are all drawn upon in the design, development, and testing of intelligent, autonomous robot platforms. So one major objective of this course is to solidify and reinforce student understanding of previous coursework through the integrated application of core CS course topics.
  2. As a project-oriented discipline, robotics offers students a chance to work in teams on significant, goal-oriented projects, a rare opportunity in a typical undergraduate Computer Science curriculum. Since so many skills are required to complete each robot project (see list in objective 1 above), and because students have different strength levels across these areas, diverse teams are formed and students must identify and draw on each other’s strengths to accomplish their goals. Thus one team member might show others how to build a control circuit, while another member of the team might help the others to program in Visual Basic.
  3. In addition to the more general skills identified in objectives one and two above, this course is uniquely able to teach several specific skills:
    1. embedded computation: There is a trend in industry toward putting intelligence in small, mobile devices, such as Personal Digital Assistants (PDAs such as the Palm Pilot), cellular phones, set-top boxes, video games, toys, automobiles, kitchen appliances, washing machines, etc. With increasing processing power, these devices are acquiring full operating systems, and demand more sophisticated algorithms that must function reliably while dealing directly with an unreliable real-world. This is what robots must deal with all the time. Recent, related terms for this kind of computing include situated computers, and ubiquitous computing. Ultimately, students should gain a deeper understanding of computation at all levels by implementing their own complete, self-contained, autonomous computer system.
    2. real-time processing: Many of today's embedded processors have to be programmed to process large amounts of input data and to respond to it intelligently and in real-time. Industrial process controllers and robots, for example, have in common the need to quickly detect and correct deviations from equilibrium conditions (for a robot, equilibrium can mean staying upright!). Correct prioritization of multiple tasks is critical.
    3. intelligent systems: Since these mobile, embedded processors are often disconnected from the internet, they must be autonomous. This requires the use of some of the latest algorithms from the fields of artificial intelligence, adaptive systems, and autonomous agents.
    4. technical innovator skills: This is a term that I have invented, but the idea is known. The objective here is to introduce students to the challenge of innovation, in which students plan and explore a novel product or capability. From teaching this course I have learned that creating an innovative new computer application requires a whole set of skills genuinely useful and practical that are not needed in other coursework. These include the ability to brainstorm, to aggressively pursue leads and ideas, to thoroughly research all possibilities, to seek out experts and engage them in the challenging task at hand, to make use of all available resources, including manufacturers, vendors, administrators, other students and faculty, and even the general public. For example, in building one of the first web-based, tele-operated mobile robot arms, student Tony Glines learned that by finding an enthusiastic technical support engineer at one of the microcontroller vendors, he could have someone else figure out how to overcome a challenging control problem for him. In fact, the vendor asked to be informed of the final outcome and has requested the use of Tony's project as a success story for the vendor's own marketing activities. Thus a goal of this course is to have students "unlearn" their customary passivity, to show enthusiasm to others when confronting a new challenge, and to be creative, thorough, and flexible when faced with many unknowns, and open problems. This means promoting your project when asking for help. It means treating vendors and suppliers as team members, but also realizing that even though you might be applying their product in a totally new way, you are still the customer and you have paid for their product: you should expect their total support. Students should learn that they must constantly sell their project idea, to everyone. They must learn to seek out the right people: sometimes the technical folks, sometimes the marketing people, and other times the decision makers and executives. They must use the phone, in addition to email. In short, if you are innovating, you cannot be passive. You are breaking new ground. You must lead.


  1. Home Work

Series of written homeworks, sometimes from text, involving some robot programming, some essays, some mathematics (e.g., geometry) and some web-based research. Examples include designing the control circuit for a digital Braitenberg vehicle that avoids light, programming a microcontroller to manipulate servos, planning paths, navigating, and map- building.

  1. Individual Research Project

Use the web, library, periodicals, manufacturers' technical assistance, other NMU faculty and students, etc. to research and document a particular capability or piece of equipment (e.g., what kind of laser rangefinders are available that can be interfaced to a laptop?). Document in a short report, to be linked to on the web or published as a NERL (robotics lab) technical note. Present to class.

  1. Expert Group Research Project
  2. Final, Team-Based Project and Presentation