Using Lego Mindstorms NXT in the Classroom Gabriel J. Ferrer Hendrix College

Slides:



Advertisements
Similar presentations
EN Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas.
Advertisements

LabView Basics.
Graphical RobotC NXT (EV3) Robot Workshop 2015 Instructor: Dr. Fred Brauchler Assistant: Chris Parker 2/7/2015Lawrence Technological University1.
VEX Robotics Platform and ROBOTC Software Introduction.
VEX Robotics Platform and ROBOTC Software
Autonomy using Encoders Intro to Robotics. Goal Our new task is to navigate a labyrinth. But this time we will NOT use motor commands in conjunction with.
Available at: – Program Optical Quad Encoders in Autonomous Mode Program optical quad encoders in autonomous mode.
LEGO Mindstorms NXT SOURCES: Carnegie Mellon Gabriel J. Ferrer Dacta
LEGO Mindstorms NXT Carnegie Mellon Dacta Lego Timothy Friez Miha Štajdohar SOURCES:
The Turtle Laboratory Sequence Myles McNally LMICSE Workshop November , 2004 University of Mississippi.
Introduction to Lego Mindstorms LMICSE Workshop June , 2005 Alma College.
The Turtle Laboratory Sequence LMICSE Workshop August , 2006 Villanova University.
The Turtle Laboratory Sequence LMICSE Workshop June , 2005 Alma College.
Fall 2007CS 2251 Lists and the Collection Interface Chapter 4.
LEGO Mindstorms NXT Carnegie Mellon Dacta Lego Timothy Friez Miha Štajdohar SOURCES:
1 ©2006 INSciTE Lab Two Task: Make the program from Lab One (Move forward 5 rotations and turn right 90 degrees) into a MyBlock.
The NXT is the brain of a MINDSTORMS® robot. It’s an intelligent, computer-controlled LEGO® brick that lets a MINDSTORMS robot come alive and perform.
What is RobotC?!?! Team 2425 Hydra. Overview What is RobotC What is RobotC used for What you need to program a robot How a robot program works Framework.
ROBOTC for VEX Online Professional Development
VEX Robotics Platform and ROBOTC Software
LEGO NXT Robot Programming Introduction to Programming a Lego NXT robot in Java.
ECE 191: Group 2 NXT Robots & Their Applications in Machine Learning Mentor: Anjum Gupta Group: Roanne Manzano Eric Tsai Jacob Robison Sponsored by: SPAWAR.
Department of Computing and Information Sciences Kansas State University Design Methodology for State based Embedded Systems Case Study: Robot Controller.
Programming Concepts Part B Ping Hsu. Functions A function is a way to organize the program so that: – frequently used sets of instructions or – a set.
GIRLS Robotic Camp. Let’s Begin Meet and Greet – Camp leaders introduce themselves – Students introduce themselves.
[Low-level] Programming of NXT Robots Pavel Petrovič Department of Applied Informatics, Faculty of Mathematics, Physics and Informatics
Demonstrating the Capabilities of MindStorms NXT for the AI Curriculum Myles McNallyFrank Klassner Alma CollegeVillanova University AAAI Spring Symposium.
Computer Science, Software Engineering & Robotics Workshop, FGCU, April 27-28, 2012 Nicholas Alteen Evan McKeon Michael Humphries Computer Science Program.
Introduction to the Basic Parts of LEGO’s NXT Robotics
ROBOTC for VEX On-Site Professional Development
Programming Concepts (Part B) ENGR 10 Introduction to Engineering 1 Hsu/Youssefi.
Introduction to the VEX ® Robotics Platform and ROBOTC Software © 2012 Project Lead The Way, Inc.Principles of Engineering.
EN Engenharia Unificada I PROGRAMANDO O LEGO MINDSTORMS Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas.
Encoding Robotic Sensor States for Q-Learning using the Self-Organizing Map Gabriel J. Ferrer Department of Computer Science Hendrix College.
Autonomous Robot Project Lauren Mitchell Ashley Francis.
Reactive robots UPNA The Public University of Navarra Material for pupils & students.
Robotics Overview of NXT-G Actuators in Mindstorms. Touch sensor Labwork: Right turn. Touch/bump. [Explore move versus Motor Move mini & motor mini. Motor*.]
EV3 Workshop Oct 3, 2015 Instructor: Chris Cartwright
NXC (and NBC) NXC (Not eXactly C) is a language similar to NQC, which was the most popular way to program the RCX Built on NBC, the Next Byte Code ‘assembler’
Event Driven Programming Minus the GUI Plus a Robot By Charlie Vick.
Castor Bot. Now, we will begin creating a robot Log onto your computer On your screen, click on the website labeled “castor bot” Your building instructions.
How to control LEGO® Mindstorms devices Thomas Mueller thomas _ tmspecial.com.
Minds and Computers 2.1 The RCX l Hitachi H8/3297 series processor l 3 inputs/sensors (1, 2, 3) l 3 outputs/motors (A, B, C) l 32k RAM/ 16k ROM ä 12 kB.
ROBOTIC ARM 2 Wilmer Arellano © Hardware  Next slide shows sensor connection to analog pin 0 and Motor 1 connection. Lecture is licensed under.
The George Washington University Department of ECE ECE Intro: Electrical & Computer Engineering Dr. S. Ahmadi Class 4/Lab3.
The George Washington University Electrical & Computer Engineering Department ECE 002 Dr. S. Ahmadi Class3/Lab 2.
EV3 Software EV3 Robot Workshop
ROBOTC Software EV3 Robot Workshop
BEGINNER FLL PROGRAMMING WORKSHOP BY DROIDS ROBOTICS & EV3LESSONS.
ROBOTC Software EV3 Robot Workshop Lawrence Technological University.
Deriving Consistency from LEGOs What we have learned in 6 years of FLL by Austin and Travis Schuh © 2005 Austin and Travis Schuh, all rights reserved.
MEH108 - Intro. To Engineering Applications KOU Electronics and Communications Engineering.
MEH108 - Intro. To Engineering Applications KOU Electronics and Communications Engineering.
Lego Mindstorm Robots 9797 kit.  Students will learn how to identify how to detect a change in a condition.  Students will learn where and how to identify.
ROBOTC for VEX Online Professional Development. Homework Questions Thoughts? Questions?
Spring 2008 Mark Fontenot CSE Honors Principles of Computer Science I Note Set 11.
Presentation Outline I. Background Information II. Design Project
NXT Mindstorms Kit Programming
VEX IQ Curriculum Smart Machines Lesson 09 Lesson Materials:
Deriving Consistency from LEGOs
ROBOTC for VEX Online Professional Development
VEX Robotics Platform and ROBOTC Software
Introduction To Programming with LEGO NXT 0
ROBOTC for VEX Online Professional Development
Exploring Computer Science Lesson 6-5
Using Lego Mindstorms NXT in the Classroom
Compiled from various Internet sources Presented by Mr. Hatfield
Programming Concepts (Part B) ENGR 10 Introduction to Engineering
LEGO Mindstorms Robot and Java
Presentation transcript:

Using Lego Mindstorms NXT in the Classroom Gabriel J. Ferrer Hendrix College

Outline NXT capabilities Software development options Introductory programming projects Advanced programming projects

Purchasing NXT Kits Two options (same price; $250/kit) –Standard commercial kit –Lego Education kit 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

NXT 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

Sensors and Motors Four sensor ports –Sonar –Sound –Light –Touch Three motor ports –Each motor includes rotation counter

Touch Sensors Education kit includes two sensors Much more robust than old RCX touch sensors

Light Sensor Reports light intensity as percentage Two modes –Active –Passive Practical uses –Identify intensity on paper –Identify lit objects in dark room –Detect shadows

Sound Sensor Analogous to light sensor –Reports intensity –Reputed to identify tones I haven’t experimented with this Practical uses –“Clap” to signal robot

Ultrasonic (Sonar) Sensor Reports distances –Range: about 5 cm to 250 cm –In practice: Longer distances result in more missed “pings” Mostly reliable –Occasionally gets “stuck” –Moving to a new location helps in receiving a sonar “ping”

Motors Configured in terms of percentage of available power Built-in rotation sensors –360 counts/rotation

Software development options Onboard programs –RobotC –leJOS –NXC/NBC Remote control –iCommand –NXT_Python

RobotC Commercially supported – Not entirely free of bugs Poor static type checking Nice IDE Custom firmware Costly –$50 single license –$250/12 classroom computers

Example RobotC Program void forward() { motor[motorA] = 100; motor[motorB] = 100; } void spin() { motor[motorA] = 100; motor[motorB] = -100; }

Example RobotC Program task main() { SensorType[S4] = sensorSONAR; forward(); while(true) { if (SensorValue[S4] < 25) spin(); else forward(); }

leJOS Implementation of JVM for NXT Reasonably functional –Threads –Some data structures –Garbage collection added (January 2008) –Eclipse plug-in just released (March 2008) Custom firmware Freely available –

Example leJOS Program sonar = new UltrasonicSensor(SensorPort.S4); Motor.A.forward(); Motor.B.forward(); while (true) { if (sonar.getDistance() < 25) { Motor.A.forward(); Motor.B.backward(); } else { Motor.A.forward(); Motor.B.forward(); }

Event-driven Control in leJOS The Behavior interface –boolean takeControl() –void action() –void suppress() Arbitrator class –Constructor gets an array of Behavior objects takeControl() checked for highest index first –start() method begins event loop

Event-driven example class Go implements Behavior { private Ultrasonic sonar = new Ultrasonic(SensorPort.S4); public boolean takeControl() { return sonar.getDistance() > 25; }

Event-driven example public void action() { Motor.A.forward(); Motor.B.forward(); } public void suppress() { Motor.A.stop(); Motor.B.stop(); }

Event-driven example class Spin implements Behavior { private Ultrasonic sonar = new Ultrasonic(SensorPort.S4); public boolean takeControl() { return sonar.getDistance() <= 25; }

Event-driven example public void action() { Motor.A.forward(); Motor.B.backward(); } public void suppress() { Motor.A.stop(); Motor.B.stop(); }

Event-driven example public class FindFreespace { public static void main(String[] a) { Behavior[] b = new Behavior[] {new Go(), new Stop()}; Arbitrator arb = new Arbitrator(b); arb.start(); }

NXC/NBC NBC (NXT Byte Codes) –Assembly-like language with libraries – NXC (Not eXactly C) –Built upon NBC –Successor to NQC project for RCX Compatible with standard firmware –

iCommand Java program runs on host computer Controls NXT via Bluetooth Same API as leJOS –Originally developed as an interim project while leJOS NXT was under development – Big problems with latency –Each Bluetooth transmission: 30 ms –Sonar alone requires three transmissions –Decent program: 1-2 Hz

NXT_Python Remote control via Python – Similar pros/cons with iCommand

Developing a Remote Control API Bluetooth library for Java – Opening a Bluetooth connection –Typical address: 00:16:53:02:e5:75 Bluetooth URL –btspp:// e575:1; authenticate=false;encrypt=false

Opening the Connection import javax.microedition.io.*; import java.io.*; StreamConnection con = (StreamConnection) Connector.open(“btspp:…”); InputStream is = con.openInputStream(); OutputStream os = con.openOutputStream();

NXT Protocol Key files to read from iCommand: –NXTCommand.java –NXTProtocol.java

An Interesting Possibility Programmable cell phones with cameras are available Camera-equipped cell phone could provide computer vision for the NXT

Introductory programming projects Developed for a zero-prerequisite course Most students are not CS majors 4 hours per week –2 meeting times –2 hours each Not much work outside of class –Lab reports –Essays

First Project (1) Introduce motors –Drive with both motors forward for a fixed time –Drive with one motor to turn –Drive with opposing motors to spin Introduce subroutines –Low-level motor commands get tiresome Simple tasks –Program a path (using time delays) to drive through the doorway

First Project (2) Introduce the touch sensor –if statements Must touch the sensor at exactly the right time –while loops Sensor is constantly monitored Interesting problem –Students try to put code in the loop body e.g. set the motor power on each iteration –Causes confusion rather than harm

First Project (3) Combine infinite loops with conditionals Enables programming of alternating behaviors –Front touch sensor hit => go backward –Back touch sensor hit => go forward

Second Project (1) Physics of rotational motion Introduction of the rotation sensors –Built into the motors Balance wheel power –If left counts < right counts Increase left wheel power Race through obstacle course

Second Project (2) if (/* Write a condition to put here */) { nxtDisplayTextLine(2, "Drifting left"); } else if (/* Write a condition to put here */) { nxtDisplayTextLine(2, "Drifting right"); } else { nxtDisplayTextLine(2, "Not drifting"); }

Third Project Pen-drawer –First project with an effector –Builds upon lessons from previous projects Limitations of rotation sensors –Slippage problematic –Most helpful with a limit switch Shapes (Square, Circle) Word (“LEGO”) –Arguably excessive

Pen-Drawer Robot

Fourth Project (1) Finding objects Light sensor –Find a line Sonar sensor –Find an object –Find freespace

Fourth Project (2) Begin with following a line edge –Robot follows a circular track –Always turns right when track lost –Traversal is one-way Alternative strategy –Robot scans both directions when track lost –Each pair of scans increases in size

Fourth Project (3) Once scanning works, replace light sensor reading with sonar reading Scan when distance is short –Finds freespace Scan when distance is long –Follow a moving object

Light Sensor/Sonar Robot

Other Projects “Theseus” –Store path (from line following) in an array –Backtrack when array fills Robotic forklift –Finds, retrieves, delivers an object Perimeter security robot –Implemented using RCX –2 light sensors, 2 touch sensors Wall-following robot –Build a rotating mount for the sonar

Robot Forklift

Gearing the motors

Advanced programming projects From a 300-level AI course Fuzzy logic Reinforcement learning

Fuzzy Logic Implement a fuzzy expert system for the robot to perform a task Students given code for using fuzzy logic to balance wheel encoder counts Students write fuzzy experts that: –Avoid an obstacle while wandering –Maintain a fixed distance from an object

Fuzzy Rules for Balancing Rotation Counts Inference rules: –biasRight => leftSlow –biasLeft => rightSlow –biasNone => leftFast –biasNone => rightFast Inference is trivial for this case –Fuzzy membership/defuzzification is more interesting

Fuzzy Membership Functions Disparity = leftCount - rightCount biasLeft is –1.0 up to -100 –Decreases linearly down to 0.0 at 0 biasRight is the reverse biasNone is –0.0 up to -50 –1.0 at 0 –falls to 0.0 at 50

Defuzzification Use representative values: –Slow = 0 –Fast = 100 Left wheel: –(leftSlow * repSlow + leftFast * repFast) / (leftSlow + leftFast) Right wheel is symmetric Defuzzified values are motor power levels

Q-Learning Discrete sets of states and actions –States form an N-dimensional array Unfolded into one dimension in practice –Individual actions selected on each time step Q-values –2D array (indexed by state and action) –Expected rewards for performing actions

Q-Learning Main Loop Select action Change motor speeds Inspect sensor values –Calculate updated state –Calculate reward Update Q values Set “old state” to be the updated state

Calculating the State (Motors) For each motor: –100% power –93.75% power –87.5% power Six motor states

Calculating the State (Sensors) No disparity: STRAIGHT Left/Right disparity – 1-5: LEFT_1, RIGHT_1 –6-12: LEFT_2, RIGHT_2 –13+: LEFT_3, RIGHT_3 Seven total sensor states 63 states overall

Action Set for Balancing Rotation Counts MAINTAIN –Both motors unchanged UP_LEFT, UP_RIGHT –Accelerate motor by one motor state DOWN_LEFT, DOWN_RIGHT –Decelerate motor by one motor state Five total actions

Action Selection Determine whether action is random –Determined with probability epsilon If random: – Select uniformly from action set If not: –Visit each array entry for the current state –Select action with maximum Q-value from current state

Q-Learning Main Loop Select action Change motor speeds Inspect sensor values –Calculate updated state –Calculate reward Update Q values Set “old state” to be the updated state

Calculating Reward No disparity => highest value Reward decreases with increasing disparity

Updating Q-values Q[oldState][action] = Q[oldState][action] + learningRate * (reward + discount * maxQ(currentState) - Q[oldState][action])

Student Exercises Assess performance of wheel-balancer Experiment with different constants –Learning rate –Discount –Epsilon Alternative reward function –Based on change in disparity

Learning to Avoid Obstacles Robot equipped with sonar and touch sensor Hitting the touch sensor is penalized Most successful formulation: –Reward increases with speed –Big penalty for touch sensor

Other classroom possibilities Operating systems –Inspect, document, and modify firmware Programming languages –Develop interpreters/compilers –NBC an excellent target language Supplementary labs for CS1/CS2

Thanks for attending! Slides available on-line: – Currently writing lab textbook –Introductory and advanced exercises