PPT - Rob Kremer - University of Calgary

advertisement
Computer
Science
iRobot Create Command Interface
CPSC 601.68/CPSC 599.68
Rob Kremer
Department of Computer Science
University of Calgary
08/04/2015
1
Anatomy
08/04/2015
CPSC 609.68/599.68: Agent Communications
2
Anatomy
Bump Sensors
08/04/2015
CPSC 609.68/599.68: Agent Communications
3
Anatomy
08/04/2015
CPSC 609.68/599.68: Agent Communications
4
Agent software support: sensor tab
08/04/2015
CPSC 609.68/599.68: Agent Communications
5
Agent software support: sensor tab
08/04/2015
CPSC 609.68/599.68: Agent Communications
6
Agent software support: execute command
execute takes a string
of bytes (in decimal).
Can also prefix a
number with "s" to
make it parse it as
two bytes (a short).
08/04/2015
CPSC 609.68/599.68: Agent Communications
7
Modes
•
OFF
– Unresponsive (except START (128))
– Can charge
•
PASSIVE
– Sensor status commands
– No Actuator commands
– Can charge
•
SAFE
 recommended!
– Sensor status commands
– Actuator commands
• But reverts to PASSIVE if moving forward and any cliff sensor is activated; any wheel drop
sensor is activated; or the charger is plugged in
– No Charging
•
FULL
– Sensor status commands
– Actuator commands
– No Charging
08/04/2015
CPSC 609.68/599.68: Agent Communications
8
Modes
START (128)
OFF
PASSIVE
SAFE (131)
FULL (132)
START (128)
START (128)
SAFE (131)
SAFE
FULL
FULL (132)
08/04/2015
CPSC 609.68/599.68: Agent Communications
9
Modes: WAIT
• A 5th Mode: WAIT
• When in WAIT mode the robot does not respond to ANY
input.
• Goes into WAIT mode for 3 commands (see WAIT slide):
–
–
–
–
WAIT-DISTANCE
WAIT-ANGLE
WAIT-TIME
WAIT-EVENT
• If the robot is prevented, for some reason, from traveling
the distance or the angle, it won’t respond to anything (try
the undocumented command 7).
• Use only in scripts, NOT RECOMMENDED
08/04/2015
CPSC 609.68/599.68: Agent Communications
10
Actuators: Drive
• DRIVE (137 <velocityhigh> <velocitylow> <radiushigh> <radiuslow>)
– 2 short (16 bit) parameters
– Each represented by 2 bytes, high byte first (so a total of 5 bytes for
this command)
• Parameter 1: velocity in mm/sec
– -500 to +500 (-ve means “backwards”)
• Parameter 2: curve radius in mm
– -2000 to +2000 where -ve means clockwise and +ve means
counterclockwise
– 32768 means “go straight”
– -1 and +1 mean spin in place clockwise, counterclockwise
respectively
08/04/2015
CPSC 609.68/599.68: Agent Communications
11
Actuators: LEDs
• LEDs (139 <Adv&Play> <powerColor> <powerInten>)
• Adv&Play:
– Bit 1 (=2): Play LED
– Bit 3 (=8): Advance LED
• PowerColor (0-255):
– 0=green; 255=red
• PowerIntensity (0-255)
– 0=off; 255=full intensity
08/04/2015
CPSC 609.68/599.68: Agent Communications
12
Actuators: Send IR
• SEND-IR (151 <IRbyte>)
• Sends a byte using an add-on circuit and a IR LED
• Can be received by the omnidirectional IR reciever
at the front of the robot
• Could be use to transmit short-distance identifiers
for each robot
• Does not replace CASA agent communication
protocols!
08/04/2015
CPSC 609.68/599.68: Agent Communications
13
Actuators: Songs
• Load a song
– 140 <song#> <length> {<note> <duration>}*
•
•
•
•
<song#>: 0-15
<length>: number of notes (1/2 of bytes) (up to 16 notes)
<note>: see table in OI Manual
<duration>: in 1/64 second (31=G@49.0Hz …
127=G@12543.9Hz)
• Play a song
– 141 <song#>
– Doesn’t work if a song is already playing
08/04/2015
CPSC 609.68/599.68: Agent Communications
14
Inputs: Sensors
• Read Sensors
– 142 <packetID>
• Packets 0-6 are “packet groups” (eg: 0 is sensors 7-26, which is
26 bytes [some are two-byte returns])
• Packets 7-42 are individual sensors
• Either numerical values (1 or 2 bytes) or bitmaps
• See OI Manual
• Also a commands for:
– reading a list of sensors (149)
– requesting a continuous stream of packet data (148)
– pausing/resuming a stream (150)
08/04/2015
CPSC 609.68/599.68: Agent Communications
15
Sensor Groups Packets
08/04/2015
CPSC 609.68/599.68: Agent Communications
16
Sensor Single Packets
08/04/2015
CPSC 609.68/599.68: Agent Communications
17
Scripts
• Load a script
– 152 <length> <opcode>*
• <length>: number of bytes in script (up to 100)
• <opcode>: OI commands
• Play a script
– 143
– No flow control except for WAIT commands (next slide)
• Show script
– 154
– Returns the current script
08/04/2015
CPSC 609.68/599.68: Agent Communications
18
Scripts: Wait
• Wait time
– 155 <time>
• <time> in 1/10 sec (resolution of 15ms)
• Wait Distance
– 156 <disthigh> <distlow>
• <dist> distance in mm. +ve=forward, -ve=back
– Works for passively rotating the wheels
• Wait Angle
– 157 <anglehigh> <anglelow>
• <angle> angle in deg. +ve=counterclockwise, -ve=clockwise
• Wait Event
– 158 <event#>
• <event#>: eg: 1=wheel drop (see table in OI Manual, p.16)
– Use -ve for inverse of event (eg: -1 wheel drop stops)
08/04/2015
CPSC 609.68/599.68: Agent Communications
19
Tasks: measuring
• You can track the distance traveled by using
sensor 19 (distance)
• Angle with sensor 20 (angle)
• Note: reading these sensors causes them to be
reset
• Distance (angles) increment for forward
(counterclockwise) and decrement for backward
(clockwise)
• Class iRobotCreate’s regular sensor reading
keeps an accumulator for distance and angle
08/04/2015
CPSC 609.68/599.68: Agent Communications
20
Tasks: Following a wall
• You can track along a wall using the wall sensor
(sensor 8)
• Use Drive straight (137 <velocity> 32687) when
the wall is there; or a wide right curve (137
<velocity> -2000) when the wall goes away
• You should expect the occasional right-bump
• If you get a left-bumb, you’ve probably hit a corner
08/04/2015
CPSC 609.68/599.68: Agent Communications
21
Download