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