DT211/3 - Robot Technology Fundamentals
You can access the course syllabus here.
Class Materials
Week 1
- Lecture: Introduction to Robots
- Tutorial: Introduction to Programming the MindStorms NXT with Java
The first lecture examines the representation of robots in mass media (movies and tv) and highlights the differences between these popular representations and the reality of the current state of the art in robotics. It overviews the applications of current robot technology. The lecture also examines the ethic isses and risks associated with Artificial Intelligence and Robotics research. It finishes with an overview of the course.
This tutorial introduces the basics of Java programming (objects, classes, dot notation, the jave compilation process and the javac and java commands). The concepts and processes introduced are illustrated using the HelloWorld program. The second part of the tutorial introduces Lejos and highlights the similarity between standard java programming and programming using the Java Lejos API. The nxjc and nxj commands are introduced. Programming using the Lejos API is illustrated using the HelloWorldNxt program. This program contains two modifications from the stand java HelloWorld program: (1) we use the import command to import the lejos.nxt.* package; (2) we use the button class to make the program wait for a button press after it has printed the message to the screen. Code examples: HelloWorld.java, HelloWorldNxt.java
Week 2
- Lecture: Robotics Fundamentals
- Tutorial: Basic NXT IO
This lecture covers the following topics: defining what is meant by the term robot; introducing a taxonomy of robots; discussing the applications of robot technology; discussing the advantages of robot technology; introducing the main components of a robot system: power supply, sensors, control systems and actuators.
The tutorial introduces the Lejos classes that you can used to interact with NXT Buttons and LCD display. Code examples: ButtonTest.java, ButtonPresses.java, LCDTest.java, GraphicsSample.java
Week 3
- Lecture: Actuators
- Tutorial: the Motor Class
This lecture introduces robot actuators and covers the following topics; what are actuators, types of robot joints, actuator control (servo [closed-loop] versus non-servo [open-loop]), different types of actuators (electrical motors - including stepper motors -, artificial muscles, pneumatic and hydraulic actuators).
The tutorial introduces the Lejos Motor class as an abstraction of the Lego Mindstorms NXT motors and illustrates some basic commands to control the motors. Code examples: BasicMotorTest.java, InertiaTest.java, RotationTest.java, RotInterrupt.java, RegulatorTest.java
Week 4
- Lecture: Robotic Locomotion Concepts
- Tutorial: Controlling Wheeled Robots
The lecture on robot locomotion covers the following topics; locomotion concepts found in nature; the mechanical complexity required for certain types of locomotion; the energy efficiency of different locomotion mechanisms in different environments; degrees of freedom; configurations of legged and wheeled robots; the tradeoffs between legged and wheeled locomtion for robots.
The tutorial: (a) introduces the Java concepts of constructors and interfaces; (b) explains the robotics concept of differential steering; and (c) overviews the lejos.robotics.navigation package and the TachoPilot class. Code examples: TachoPilotExample.java
Week 5
- Sensors
The lecture on sensors discusses what sensors are used for in robotic systems, highlights the broad range of sensors available for robots, introduces a classification framework for sensors (proprioceptive versus exteroceptive, active versus passive), and introduces and defines different characteristics that can be used to determine the performance and applicability of a sensor (including: cost, size, weight, type of output, interfacing, resolution, sensitivity and cross-sensitivity, linearity, bandwidth, reliability, accuracy, repeatability, range and dynamic range), highlights the issue of sensor error and distinguishes between systematic and random error, and finishes by describing different types of sensors (including touch and tactile sensors, wheel/motor sensors, heading sensors (gyroscopes), ground based beacons, active ranging sensors, motion speed sensors and vision based sensors.
- Tutorial: NXT Sensors
The tutorial introduces the Lejos classes that you can use to interact with the NXT Sensors. Code examples:
TouchTest.java,
LightTest.java,
PingTest.java,
SonicTest.java,
SoundScope.java
Week 6
- Tutorial: Threads and Lejos Behaviour Control ArchitectureNXT Sensors
The tutorial introduces the Lejos classes that you can use to develop a behavior based control architecture for your robots. Code examples: BumperCar.java
Continuous Assessment
task09.pdf
Useful links
- Lego Mindstorms NXT drivers for MAC and PC.
- Lejos Software
- Tutorial on how to install and run Java on Lego Mindstorms NXT
- Lejos API Documentation
- Lejos Tutorial
How to handle some common errors ...
When I run nxjc I get the following error "javac is not recognised ..."
- Sensors
- Tutorial: NXT Sensors
The lecture on sensors discusses what sensors are used for in robotic systems, highlights the broad range of sensors available for robots, introduces a classification framework for sensors (proprioceptive versus exteroceptive, active versus passive), and introduces and defines different characteristics that can be used to determine the performance and applicability of a sensor (including: cost, size, weight, type of output, interfacing, resolution, sensitivity and cross-sensitivity, linearity, bandwidth, reliability, accuracy, repeatability, range and dynamic range), highlights the issue of sensor error and distinguishes between systematic and random error, and finishes by describing different types of sensors (including touch and tactile sensors, wheel/motor sensors, heading sensors (gyroscopes), ground based beacons, active ranging sensors, motion speed sensors and vision based sensors.
The tutorial introduces the Lejos classes that you can use to interact with the NXT Sensors. Code examples: TouchTest.java, LightTest.java, PingTest.java, SonicTest.java, SoundScope.java
Week 6
- Tutorial: Threads and Lejos Behaviour Control ArchitectureNXT Sensors
The tutorial introduces the Lejos classes that you can use to develop a behavior based control architecture for your robots. Code examples: BumperCar.java
Continuous Assessment
task09.pdf
Useful links
- Lego Mindstorms NXT drivers for MAC and PC.
- Lejos Software
- Tutorial on how to install and run Java on Lego Mindstorms NXT
- Lejos API Documentation
- Lejos Tutorial
How to handle some common errors ...
When I run nxjc I get the following error "javac is not recognised ..."
- Tutorial: Threads and Lejos Behaviour Control ArchitectureNXT Sensors
The tutorial introduces the Lejos classes that you can use to develop a behavior based control architecture for your robots. Code examples: BumperCar.java
Continuous Assessment
task09.pdf
Useful links
- Lego Mindstorms NXT drivers for MAC and PC.
- Lejos Software
- Tutorial on how to install and run Java on Lego Mindstorms NXT
- Lejos API Documentation
- Lejos Tutorial
How to handle some common errors ...
When I run nxjc I get the following error "javac is not recognised ..."
If the nxjc command returns the error "javac is not recognised as an internal or external command" inputting the following command at your terminal prompt may solve the problem: set PATH=%PATH%;"C:\Program Files\Java\jdk1.6.0_16\bin\"
How to solve "This device cannot start (code 10)" error on Windows XP
The easiest way to solve a USB error code 10 in Windows XP is to follow the steps below to remove and reinstall all USB controllers.
- Click on Start
- Right Click on My Computer, click on Properties
- Click on the Hardware tab
- Click the Device Manager button.
- Expand Universal Serial Bus controllers section.
- Right-click every device under the Universal Serial Bus controllers node, and then click Uninstall to remove them one at a time.
- Restart the computer, and allow the computer to reinstall the USB controllers.
- Plug in the removable USB storage device, and then test to make sure that the issue is resolved.
See discussion here for more information.