Title: LEGO Mindstorms NXT
1LEGO Mindstorms NXT
SOURCES
Carnegie Mellon Dacta Lego Timothy Friez Miha
Å tajdoharmiha.stajdohar_at_fri.uni-lj.si
2Principles of Robotics
- Integrity. Robots hold together throughout the
competition (no small task when you are talking
about robots built out of Legos). - Accuracy. The robot's mechanical outputs and its
location acquisition and feedback to the RCX and
subsequent programming provide the intelligence
for precise performance. - Execution. The robot performs the tasks it was
designed to accomplish. - Repeatability. The robot can perform the exact
routine time and time again. - Ergonomics. The robot is easy to handle,
reconfigure, and change batteries or reprogram if
necessary. - Efficiency. The robot's design makes optimal use
of its parts to execute tasks, minimize
friction, and use power.
3Why students learn more when they participate in
a real challenge?
4Sophisticated robots can be build
- Accuracy of mapping program and NXT
- Draw letter E
- Circle Program
- Light Following on simulation
- More videos at http//www.youtube.com/ece191nxt
5Examples of mobile and humanoid robots
- Motivation
- Project Overview
- Hardware Specification
- Lego Robot
- Programming Environments
- NXC
- RobotC
- Method and Approach
- Ideas
- Design
6Mindstorms NXT
7Mindstorms NXT
8Ideas
9Brick
- 4 sensor inputs
- 3 sensor inputs / motor outputs
- Programmable
10Purchasing NXT Kits
- Two options (same price 250/kit)
- Standard commercial kit
- Lego Education kit
- http//www.lego.com/eng/education/mindstorms/
- Advantages of education kit
- Includes rechargeable battery (50 value)
- Plastic box superior to cardboard
- Extra touch sensor (2 total)
- Standard commercial kit
- Includes NXT-G visual language
11- From Idea to Pseudo-Code to software to robot
behavior
12Thinking about Programming
- Creating a successful robot takes a team effort
between humans and machines.
Role of the Robot The robot follows the
instructions it is given, thereby carrying out
the plan.
13Human/Machine Communication
- Because humans and robots dont normally speak
the same language, a special language must be
used to translate the necessary instructions from
human to robot. - These human-to-robot languages are called
programming languages. - Instructions written in them are called programs.
- ROBOTC is just one of many such programming
languages that humans use to talk to machines.
14Think about Behaviors
- Behaviors are a convenient way to talk about what
a robot is doing and what it must do. - Moving forward, stopping, turning, looking for an
obstacle these are all behaviors.
- Basic or Simple Behavior
- Some behaviors are small, like go forward for 3
seconds. - Big behaviors are actually made up of these
smaller ones.
Complex Behavior Some behaviors are big, like
solve the maze.
15Planning the Behaviors
16The main principle is braking large behaviors
into hierarchies of smaller and smaller
behaviors. You have to understand every piece of
input-output behavior of a robot
17(No Transcript)
18PSEUDOCODE
- As the programmer becomes more experienced, the
organization of the behaviors in English will
start to include important techniques from the
programming language itself, like if-else
statements and loops. - This hybrid language, halfway between English and
the programming language, is called pseudocode. - It is an important tool in helping to keep larger
programs understandable.
19ROBOTC is text based!
- Commands to the robot are first written as text
on the screen. - They are then processed by the ROBOTC compiler
into a machine language file that the robot can
understand. - Finally, they are loaded onto the robot, where
they can be run.
20Software development options
- Onboard programs
- RobotC
- leJOS
- NXC/NBC
- Remote control
- iCommand
- NXT_Python
21NXT Brick Features
- 64K RAM, 256K Flash
- 32-bit ARM7 microcontroller
- 100 x 64 pixel LCD graphical display
- Sound channel with 8-bit resolution
- Bluetooth radio
- Stores multiple programs
- Programs selectable using buttons
22Programming languages
IDE interactive development environment
- NBC, NXC
- NXT Python, .NET
http//www.teamhassenplug.org/NXT/NXTSoftware.html
23Programming Environments
- NXC
- A High-level language
- Similar to C
- Stand-alone language (No plug-ins or add-ons)
- The program runs in the robot itself.
NXC On Bot
More Robust language Takes and uses values
Robust language can Graphically represent
Desired input and results
24NXT Python
- http//home.comcast.net/dplau/nxt_python/index.ht
ml - demo
- bluetooth
- remote control
25Python Programming Environments
- Python 2.4.4
- Scripted Programming Language
- Plug ins
- PyGame Simulated World
- PyODE Shapes, vectors
- PyBluez Bluetooth communication
- Python NXT Python Libraries for NXT
- Programs
- Light Sensor
- Ultrasound Sonar
- Sound Sensor
Python IDE
PyGame
PyODE
Python NXT
PyBluez
26Method and Approach
- Mapping Program
- Generate movement on NXT robot, record movement
and plot robots path in real time in a simulated
world. - Python Simulator
- Thread function, lock on global objects
- NXC Simulator
- Separate program activates robot, simulator
polls output values
Moves Robot
Starts Pygames
Draws readings on Pygames
Sends motor readings
27ROBOTC
- firmware
- tasks, program loop
- Sensors, motors
- data
- bluetooth, messages
www.robotc.net
28RobotC
- Commercially supported
- http//www.robotc.net/
- Not entirely free of bugs
- Poor static type checking
- Nice IDE
- Custom firmware
- Costly
- 50 single license
- 250/12 classroom computers
29Bluetooth
- PyBluez
- http//org.csail.mit.edu/pybluez/
30Motors
- Configured in terms of percentage of available
power - Built-in rotation sensors
- 360 counts/rotation
- No rotation sensors in old Lego
31Working with Motors
- Selecting Your Hardware Platform
- RobotC supports a variety of different hardware
platforms. - For these exercises we will configure RobotC to
include support for the Tetrix/FTC robots as well
as pure LEGO robots. - The FIRST Tech Challenge (NXT) platform is a
superset of the NXT platform. - Whether your robot is using LEGO motors or the
Tetrix 12V motors, you can control them with
nearly identical code.
32- On the Robot / Platform Type menu make sure that
you have FIRST Tech Challenge (NXT) selected. - Click on the New icon on the RobotC toolbar to
start a new program.
33Configuring your Motors
- You need to tell RobotC how your motors are
attached to your NXT. - On the Robot menu, open the Motors and Sensors
Setup wizard and select the FTC Servo/Motor Ctrl
tab. - A. Using LEGO NXT Motors
- If your robot is using LEGO NXT motors for the
drive wheels, select No controllers configured
34(No Transcript)
35Using pragmas
- Two pragma statements and a comment line should
have been inserted into your program looking
something like this - pragma config(Motor, motorA,
motorLeft, tmotorNormal, PIDControl)pragma
config(Motor, motorB, motorRight,
tmotorNormal, PIDControl) - //!!Code automatically generated by 'ROBOTC'
configuration wizard !!// - A pragma is an instruction to the RobotC
compiler to change something about how your
program gets compiled. - The config() pragma tells RobotC to automatically
include the necessary prefix code to configure
your program to use the motor and sensor ports
you specified in the wizard.
36Important recommendations to Robot C programmer
- You should not modify these lines of code by
hand. - If the configuration of your robot changes, go
back into the Motor and Sensor Setup wizard and
change the values there. - When you exit the wizard it will update the
pragmas to reflect the changes you made. - Comment lines in RobotC begin with //.
- Everything that follows a double-slash to the end
of the line is ingored by the compiler. - The comment inserted by the wizard is a reminder
that the pragmas preceeding it were
automatically created for you.
37Using Tetrix 12 Volt Motors
38Using Tetrix 12 Volt Motors
39Using Tetrix 12 Volt Motors
- Three pragma statements and a comment line
should have been inserted into your program
looking something like this - pragma config(Hubs, S1, HTMotor, HTServo,
none, none)pragma config(Motor,
mtr_S1_C1_1, motorRight, tmotorNormal,
PIDControl, reversed)pragma config(Motor,
mtr_S1_C1_2, motorLeft, tmotorNormal,
PIDControl)//!!Code automatically generated by
'ROBOTC' configuration wizard !!// - A pragma is an instruction to the RobotC
compiler to change something about how your
program gets compiled. - The config() pragma tells RobotC to automatically
include the necessary prefix code to configure
your program to use the motor and sensor ports
you specified in the wizard.
40Using Tetrix 12 Volt Motors
- You should not modify these lines of code by
hand. - If the configuration of your robot changes, go
back into the Motor and Sensor Setup wizard and
change the values there. - When you exit the wizard it will update the
pragmas to reflect the changes you made.
41Using Tetrix 12 Volt Motors
- Comment lines in RobotC begin with //.
- Everything that follows a double-slash to the end
of the line is ingored by the compiler. - The comment inserted by the wizard is a reminder
that the pragmas preceeding it were
automatically created for you.
42First example of Programming Motors