Lowlevel Programming of NXT Robots - PowerPoint PPT Presentation

About This Presentation
Title:

Lowlevel Programming of NXT Robots

Description:

... programmed by sweeping barcodes (1997) ... Robotics Invention System event based, icons, visual, ... Combines the power of educational programming language Logo ... – PowerPoint PPT presentation

Number of Views:145
Avg rating:3.0/5.0
Slides: 35
Provided by: robo6
Category:

less

Transcript and Presenter's Notes

Title: Lowlevel Programming of NXT Robots


1
Low-level Programming of NXT Robots
  • Pavel Petrovic
  • Department of Applied Informatics,
  • Faculty of Mathematics, Physics and Informatics
  • ppetrovic_at_acm.org
  • July 9th 2008

2
Welcome to world of LEGO
  • LEGO Geometry

Low-level Programming of NXT robots, July 9th
2008
3
You can build everything...
Low-level Programming of NXT robots, July 9th
2008
4
Programmable LEGO
  • Manually programmable module in 1990

Low-level Programming of NXT robots, July 9th
2008
5
Programmable LEGO
  • TECHNIC Control Center 1993

Low-level Programming of NXT robots, July 9th
2008
6
Programmable LEGO
  • Control Lab Building Set 1995

Low-level Programming of NXT robots, July 9th
2008
7
Programmable LEGO
  • Code Pilot programmed by sweeping barcodes
    (1997)?

Low-level Programming of NXT robots, July 9th
2008
8
Programmable LEGO
  • LEGO Mindstorms
    RCX (1998)?
  • 8-bit microcontroller
    Hitachi H8/300,
    32kb RAM
  • AUTONOMOUS
  • Excellent tool for
    teaching basics of
    robotics, embedded
    systems, etc. at all levels

Low-level Programming of NXT robots, July 9th
2008
9
Programming RCX
  • Robotics Invention System event based, icons,
    visual, educational
  • RoboLab educational, visual, flow-chart based
  • NQC C-like language translated to bytecodes
  • Lejos Java-like language
  • BrickOS GNU C/C compiler produces fast
    binary code, full flexibility of C language
  • Many others...

Low-level Programming of NXT robots, July 9th
2008
10
Programmable LEGO
  • LEGO Mindstorms NXT
    (2006)?
  • 32-bit ARM7 microcontroller
    AT91SAM7S256
    256 KB Flash
    64 KB RAM

    BlueTooth, USB,
    I2C, high speed
    IEC 61158 Type
    4/EN 50 170 100 x 64
    graphical LCD, better sensors, motors

Low-level Programming of NXT robots, July 9th
2008
11
NXT Motors
  • Built-in rotation sensors

Low-level Programming of NXT robots, July 9th
2008
12
NXT Motors
  • Much stronger

Low-level Programming of NXT robots, July 9th
2008
13
NXT Sensors
  • Light sensor

Low-level Programming of NXT robots, July 9th
2008
14
NXT Sensors
  • Touch sensor

Low-level Programming of NXT robots, July 9th
2008
15
NXT Sensors
  • Sound sensor

Low-level Programming of NXT robots, July 9th
2008
16
NXT Sensors
  • Ultrasonic distance sensor

Low-level Programming of NXT robots, July 9th
2008
17
NXT Non-standard sensors HiTechnic.com
  • Compass, Accellerometer, Gyroscope, Color,
    IRSeeker,

Low-level Programming of NXT robots, July 9th
2008
18
NXT BlueTooth Protocol
  • Master-slave only master initiates communication
  • Master can connect up to 3 slaves
  • Optional acknowledgement, request reply
  • Mailboxes 1-10
  • Sending
  • Master NXTCommBTWrite(slave, mailbox)?
  • Slave NXTMessageWrite(mailbox)?
  • Receiving both sides NXTMessageRead()?
  • Unreliable Quite complex, but does not block

Silvian Toledo http//www.tau.ac.il/stoledo/lego
/btperformance.html
Low-level Programming of NXT robots, July 9th
2008
19
Programming NXT
Low-level Programming of NXT robots, July 9th
2008
20
Programming NXT
Low-level Programming of NXT robots, July 9th
2008
21
Programming NXT
Low-level Programming of NXT robots, July 9th
2008
22
Standard Software NXT-G
Low-level Programming of NXT robots, July 9th
2008
23
LEGO Digital Designer ldd.lego.com
Low-level Programming of NXT robots, July 9th
2008
24
Not eXactly C (NXC)
  • Derivative of NQC for RCX by John Hansen
  • BricX IDE
  • Excellent tools and features
  • C-like language with good documentation
  • http//bricxcc.sourceforge.net/nbc/
  • NXT Power Programming book

Low-level Programming of NXT robots, July 9th
2008
25
NXC example line-following
int s task main()? SetSensorType(S1,
SENSOR_TYPE_LIGHT_ACTIVE) SetSensorMode(S1,
SENSOR_MODE_PERCENT) ResetSensor(S1) while
(1) if (Sensor(S1) lt 48)
OnFwd(OUT_A, 75) Float(OUT_C) else
OnFwd(OUT_C, 75) Float(OUT_A)

Low-level Programming of NXT robots, July 9th
2008
26
Java programming for NXT
  • iCommand direct command mode
  • Lejos
  • Object oriented language
  • Preemptive threads
  • Arrays, including multi-dimensional
  • Recursion
  • Synchronization
  • Exceptions
  • Java types including float, long, and String
  • Most of the java.lang, java.util and java.io
    classes
  • A Well-documented Robotics API

Low-level Programming of NXT robots, July 9th
2008
27
NXT Logo
  • Combines the power of educational programming
    language Logo with robots
  • wiki.robotika.sk/index.php/Logo_for_NXT
  • 1. Interactive Imagine Logo project
  • 2. Loadable imagine library (nxt.imt)
  • 3. Interpreter of Logo
  • 4. Stand-alone

Low-level Programming of NXT robots, July 9th
2008
28
NXT Logo example line-following
to "follow setsensor 3 5 128 motor 0
"onrev 40 while "true while ge?
sensor 3 59 motor 0 "float 0 motor 2
"onrev 40 wait 50 while lt? sensor 3 60
motor 2 "float 0 motor 0 "onrev 40

Low-level Programming of NXT robots, July 9th
2008
29
Issues of the standard firmware
  • Limited multi-tasking
  • Complex motor model
  • Simplistic memory management
  • Not suitable for development of tools
  • Design your own firmware!
  • NXT GCC project
  • http//nxtgcc.sourceforge.net/
  • Approach
  • Take the standard firmware and modify it

Low-level Programming of NXT robots, July 9th
2008
30
Architecture of Standard Firmware
  • Scheduler modules
  • Each module
  • Init()?
  • Ctrl()?
  • Exit()?
  • Scheduler periodically calls Ctrl() on all the
    modules
  • Method1 design a new module
  • Method2 call your code from Ctrl() function of
    some module
  • Programming Concept STATE MACHINE

Low-level Programming of NXT robots, July 9th
2008
31
Modifying standard firmware
  • cUiMenuCallFunction(Function,Parameter)
    is called when user presses button to trigger
    various functions, set a global flag
  • if ((Function 8) (Parameter 248))
    run_example 1
  • In cCmdCtrl(void), check the global flag
  • if (run_example) example()
  • Implement the example() function as state machine
  • All standard functions available direct C
    coding!

Low-level Programming of NXT robots, July 9th
2008
32
void example()? static int example_state
0 static ULONG x if (example_state 0)
cDebugString2("example", 0, 5)
dOutputSetSpeed(1, MOTOR_RUN_STATE_RUNNING, 75,
1) x dTimerRead() example_state
else if (example_state 1) if
(dTimerRead() - x gt 1000) example_state 2
else if (example_state 2)
dOutputSetSpeed(0, MOTOR_RUN_STATE_IDLE, 0, 0)
cDebugString2("done", 0, 5)
example_state 0 run_example 0
Low-level Programming of NXT robots, July 9th
2008
33
Sources of Information
  • LEGO Official documentation http//mindstorms.lego
    .com/Overview/NXTreme.aspx
  • NXT Firmware Open Source
  • Software Developer Kit (SDK)
  • Hardware Developer Kit (HDK)
  • Bluetooth Developer Kit (BDK)
  • HiTechnic.com
  • LUGNET.com

Low-level Programming of NXT robots, July 9th
2008
34
Workshop
  • Today tomorrow afternoon
  • 7 NXT bricks available
  • Hands-on creative exercise
  • Build and program the robot in your favourite
    environment, preferably modify the
    firmware
  • Welcome Thank you for the attention

Low-level Programming of NXT robots, July 9th
2008
Write a Comment
User Comments (0)
About PowerShow.com