VLG Group
Group Meetings
Y. LeCun's website
CS at Courant
Courant Institute

Introduction to Robotics: Material and Pointers

[ Course Homepage | Schedule and Course Material | Videos/Photos | Mailing List ]

Things you need to do

Resources on Linux

Students are required to bring a laptop to the class.

YOU MUST INSTALL UBUNTU LINUX ON YOUR LAPTOP (if you have a Mac, you can probably get away without installing Linux, but you probably should anyway).

If you only have a Windows machine, you have several solutions:

  • Install Ubuntu on your Windows machine without repartitioning your harddrive using Wubi. Wubi is a Windows app that installs Ubuntu in a file on your Windows partition (the file is a virtual hardrive from Linux's point of view). Wubi is not an emulator, so you have to boot your machine in either Linux or Windows. You can't run them at the same time.
  • download and install Ubuntu. The Ubuntu installer offers you the option of shrinking your Windows partition non-destructively so as to make space for Linux. The installation is very simple and takes about 20 minutes.
  • Install Ubuntu through VMWare so you can run Window and Ubuntu at the same time.

After you have installed Ubuntu Linux, you must install a number of packages using the two shell commands below (type your password when prompted):

sudo apt-get install gcc g++ libx11-dev binutils-dev indent libreadline5 libreadline5-dev 
sudo apt-get install emacs cvs libgsl0-dev libcv1 libcv-dev imagemagick
sudo apt-get install avrdude gcc-avr avr-libc binutils-avr

Arduino Microcontroller

The Arduino board, and the standard part kit are available from the NYU bookstore. GET YOUR ARDUINO BOARD ASAP.

Go to the Arduino web page, and download the Arduino IDE

Sensors and Actuators

Arduino Robot Rover from RobotShop

3PI Robot Links

Installing the 3PI Programming Tools

  • 1. Installing the AVR tools:
    • Linux (simplest/easiest): Install the avr-related packages with: "sudo apt-get install emacs cvs avrdude gcc-avr avr-libc binutils-avr avra"
    • Windows: download/install WinAVR, and AVR Studio, then follow these instructions.
  • 2. download Pololu AVR Library, and unzip it in a convenient location (let's call it "avr"). On Linux, this is done with "cd avr; unzip libpololu-avr-081209.zip".
  • 3. cd to "avr/libpololu-avr".
    • Linux (simplest/easiest): type "sudo make install".
    • Windows: Determine the location of your avr-gcc files. They will usually be in a folder such as: "C:\WinAVR-20070525\avr". Next, copy libpololu.a into the "lib" subdirectory. Finally, copy the entire "pololu" subfolder into the "include" subdirectory.
  • 4. Connect the 3pi robot to the programmer, and connect the programmer to a USB port on your computer. Turn on the robot.
  • 5. cd to "avr/libpololu-avr/examples/simple-test", and (in Linux) type "make program". The robot should play a few notes and display "Hello!" in the LCD.

AVR Microcontrollers

The AVR microcontroller family from Atmel are used in the Arduino and the 3PI robot. The Arduino can be programmed with the Arduino-specific Integrated Development Environment, but the 3PI robot requires you to use the regular AVR toolchain. Development tools, compilers, IDEs:

AVR ATmega168 Microcontroller

The Arduino and the 3PI both use the Atmel ATmega168 microcontroller (download datasheet)

The ATmega168 hsa 16K Byte of self-programming Flash Program Memory, 1K Byte of SRAM, 512 Bytes EEPROM, 8 Channel 10-bit Analog to Digital converter. In the Arduino, it is clocked at 16MHz, while in the 3PI it is clocked at 20MHz.

Rovio mobile robot with Wifi webcam

We will make extensive use of this great robot.

It's a remotely controlable webcam-on-wheels.

We will have 5 Rovios in the class.

The platform will allow us to do cool things like navigating using vision, playing robo-soccer, and racing around a race track.

Bioloid Robot Kit

LynxMotion Robot Arm

Resources on Control

Resources on Planning


  • Planning Algorithms, by Steven Lavalle (Cambridge) This book has the considerable advantage of being freely available on-line. It is a very thorough treatise on motion planning.


Resources on Computer Vision


  • OpenCV: the OpenCV library is interfaced to Lush. Many of its functions can be called from Lush.

Resources on the C and C++ language

Resources on the Lush language

Lush is a simple to learn interpreter that has lots of functions for robotics-related tasks such as image grabbing, image processing, vector/matrix operations, graphics and visualization, pattern recognition, machine learning and such.

It is free and open source for Linux and Mac.

Lush will be the language of choice to develop programs to control the Rovio.

  • Download this package
  • at the shell, type "tar xvf lush.tgz"
  • start lush with "lush/bin/lush"
  • at the Lush prompt, start the on-line help with "(helptool)"
  • follow the tutorial.


There are other robotics book from the "MIT" school. These books talk about "behavior-based robotics", which attempt to reproduce the behavior of simple animals, such as insects:

  • Cambrian Intelligence by Rodney Brooks (MIT Press): "intelligence without reason", "elephants don't play chess".
  • Robot Programming: a Practical Guide to Behavior-Based Robotics, by Joseph Jones (McGraw Hill): a more recent and more practical book on behavior-based robotics, by engineers fro iRobot (of Roomba fame).

Robotics Courses at Other Schools