Computer Science
23-04-18 1
iRobot Create Command Interface
CPSC 601.68/CPSC 599.68Rob Kremer
Department of Computer ScienceUniversity of Calgary
Agent software support: sensor tab
23-04-18 CPSC 609.68/599.68: Agent Communications 5
Agent software support: sensor tab
23-04-18 CPSC 609.68/599.68: Agent Communications 6
Agent software support: execute command
23-04-18 CPSC 609.68/599.68: Agent Communications 7
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).
23-04-18 CPSC 609.68/599.68: Agent Communications 8
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
23-04-18 CPSC 609.68/599.68: Agent Communications 9
Modes
OFF
FULLSAFE
PASSIVE
START (128)
FULL (132)
SAFE (131)
FULL (132)
SAFE (131)
START (128)START (128)
23-04-18 CPSC 609.68/599.68: Agent Communications 10
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
23-04-18 CPSC 609.68/599.68: Agent Communications 11
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
23-04-18 CPSC 609.68/599.68: Agent Communications 12
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
23-04-18 CPSC 609.68/599.68: Agent Communications 13
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!
23-04-18 CPSC 609.68/599.68: Agent Communications 14
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 ([email protected] …
• Play a song– 141 <song#>– Doesn’t work if a song is already playing
23-04-18 CPSC 609.68/599.68: Agent Communications 15
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)
23-04-18 CPSC 609.68/599.68: Agent Communications 18
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
23-04-18 CPSC 609.68/599.68: Agent Communications 19
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)
23-04-18 CPSC 609.68/599.68: Agent Communications 20
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
23-04-18 CPSC 609.68/599.68: Agent Communications 21
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