en1002 - engenharia unificada i utilizando o lego mindstorms centro de engenharia, modelagem e...

62
EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

Upload: ralph-tanguay

Post on 14-Dec-2015

236 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

EN1002 -Engenharia Unificada

I

Utilizando o LEGO Mindstorms

Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

Page 2: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

Outline

NXT capabilities Software development options Introductory programming projects Advanced programming projects

Page 3: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

The LEGO Mindstorms® is a robotic buildingsystem consisting of:

• The NXT Intelligent Brick: the brain of the system

• Sensors and servo motors • LEGO TECHNIC Elements• Programming software

Lego Mindstorms NXT

Page 4: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

The system:

PC with USB Bluetooth adapter, running control LabVIEW software and an NXT sensor-equipped robotic vehicle

Project Implementation

Page 5: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

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

Page 6: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

Sensors and Motors

Four sensor ports Sonar Sound Light Touch

Three motor ports Each motor includes rotation counter

Page 7: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

Touch Sensors

Education kit includes two sensors Much more robust than old RCX

touch sensors

Page 8: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

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

Page 9: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

Sound Sensor

Analogous to light sensor Reports intensity Reputed to identify tones

I haven’t experimented with this

Practical uses “Clap” to signal robot

Page 10: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

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”

Page 11: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

Motors

Configured in terms of percentage of available power

Built-in rotation sensors 360 counts/rotation

Page 12: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

Software development options

Onboard programs RobotC leJOS NXC/NBC

Remote control iCommand NXT_Python

Page 13: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

RobotC 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

Page 14: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

Example RobotC Program

void forward() { motor[motorA] = 100; motor[motorB] = 100;}

void spin() { motor[motorA] = 100; motor[motorB] = -100;}

Page 15: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

Example RobotC Program

task main() {

SensorType[S4] = sensorSONAR;

forward();

while(true) {

if (SensorValue[S4] < 25) spin();

else forward();

}

}

Page 16: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

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

http://lejos.sourceforge.net/

Page 17: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

Example leJOS Programsonar = 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(); } }

Page 18: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

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

Page 19: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

Event-driven example

class Go implements Behavior { private Ultrasonic sonar = new Ultrasonic(SensorPort.S4);

public boolean takeControl() { return sonar.getDistance() > 25; }

Page 20: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

Event-driven example

public void action() { Motor.A.forward(); Motor.B.forward(); }

public void suppress() { Motor.A.stop(); Motor.B.stop(); }}

Page 21: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

Event-driven example

class Spin implements Behavior {

private Ultrasonic sonar =

new Ultrasonic(SensorPort.S4);

public boolean takeControl() {

return sonar.getDistance() <= 25;

}

Page 22: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

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

public void suppress() { Motor.A.stop(); Motor.B.stop(); }}

Page 23: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

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();

}

}

Page 24: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

NXC/NBC

NBC (NXT Byte Codes) Assembly-like language with libraries http://bricxcc.sourceforge.net/nbc/

NXC (Not eXactly C) Built upon NBC Successor to NQC project for RCX

Compatible with standard firmware http://mindstorms.lego.com/Support/

Updates/

Page 25: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

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

http://lejos.sourceforge.net/ Big problems with latency

Each Bluetooth transmission: 30 ms Sonar alone requires three transmissions Decent program: 1-2 Hz

Page 26: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

NXT_Python

Remote control via Python http://home.comcast.net/~dplau/nxt_

python/ Similar pros/cons with iCommand

Page 27: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

Developing a Remote Control API

Bluetooth library for Java http://code.google.com/p/bluecove/

Opening a Bluetooth connection Typical address: 00:16:53:02:e5:75

Bluetooth URL btspp://00165302e575:1; authenticate=false;encrypt=false

Page 28: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

Opening the Connection

import javax.microedition.io.*;import java.io.*;

StreamConnection con = (StreamConnection) Connector.open(“btspp:…”);

InputStream is = con.openInputStream();

OutputStream os = con.openOutputStream();

Page 29: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

NXT Protocol

Key files to read from iCommand: NXTCommand.java NXTProtocol.java

Page 30: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

An Interesting Possibility

Programmable cell phones with cameras are available

Camera-equipped cell phone could provide computer vision for the NXT

Page 31: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

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

Page 32: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

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

Page 33: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

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

Page 34: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

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

Page 35: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

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

Page 36: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

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");

}

Page 37: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

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

Page 38: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

Pen-Drawer Robot

Page 39: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

Pen-Drawer Robot

Page 40: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

Fourth Project (1)

Finding objects Light sensor

Find a line Sonar sensor

Find an object Find freespace

Page 41: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

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

Page 42: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

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

Page 43: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

Light Sensor/Sonar Robot

Page 44: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

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

Page 45: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

Robot Forklift

Page 46: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

Gearing the motors

Page 47: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

Advanced programming projects

From a 300-level AI course Fuzzy logic Reinforcement learning

Page 48: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

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

Page 49: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

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

Page 50: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

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

Page 51: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

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

Page 52: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

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

Page 53: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

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

Page 54: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

Calculating the State (Motors)

For each motor: 100% power 93.75% power 87.5% power

Six motor states

Page 55: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

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

Page 56: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

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

Page 57: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

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

Page 58: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

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

Page 59: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

Calculating Reward

No disparity => highest value Reward decreases with increasing

disparity

Page 60: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

Updating Q-values

Q[oldState][action] = Q[oldState][action] + learningRate *

(reward + discount * maxQ(currentState) - Q[oldState][action])

Page 61: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

Student Exercises

Assess performance of wheel-balancer

Experiment with different constants Learning rate Discount Epsilon

Alternative reward function Based on change in disparity

Page 62: EN1002 - Engenharia Unificada I Utilizando o LEGO Mindstorms Centro de Engenharia, Modelagem e Ciências Sociais Aplicadas

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