Robot Mower Communications Standard: Unterschied zwischen den Versionen
(→Robot mower configuration event (protocol version, type of sensors)) |
(→Messages) |
||
Zeile 36: | Zeile 36: | ||
*$RMKOA: Keep ongoing action command (mower communications saftety) | *$RMKOA: Keep ongoing action command (mower communications saftety) | ||
*$RMBEA: beacons ranging data event (e.g. DW1000) | *$RMBEA: beacons ranging data event (e.g. DW1000) | ||
+ | *$RMSON: ultrasonic sensor event | ||
+ | *$RMBUM: bumper sensor event | ||
+ | *$RMODO: odometry event | ||
+ | *$RMGPS: GPS event | ||
+ | *$RMPER: perimeter sensor event | ||
+ | *$RMIMU: IMU event | ||
=Set mowing state command (start,stop,dock)= | =Set mowing state command (start,stop,dock)= |
Version vom 8. Januar 2017, 17:41 Uhr
Robot Mower Communications Standard (RMCS)
Describes message format used to externally control a robot mower (e.g. Ardumower-based) using a serial line (PC/Raspberry/Android etc.)
Inhaltsverzeichnis
- 1 Requirements
- 2 Message format
- 3 Messages
- 4 Set mowing state command (start,stop,dock)
- 5 Robot state event (robot state, errors, battery, charger)
- 6 Robot sensor data event (sensor values)
- 7 Robot sensor trigger event (sensor trigger counters)
- 8 Robot mower configuration event (protocol version, type of sensors)
- 9 Move robot until sensor trigger command
- 10 Keep ongoing action command (mower communications saftety)
- 11 Beacons ranging data event (e.g. DW1000)
- 12 Proprietary
Requirements
- Serial interface (or serial USB)
- ...
Message format
NMEA 0183 compatible format (ASCII encoded)
message structure: $IDMSG,data,*XX<cr><lf>
message components:
- $: start of message symbol
- ID: device ID (the destination of a command message or source of an event message) - examples: RM (robot mower), DW (ranging beacons), ...
- MSG: message type (see below)
- data: comma separated message data (see below) - if a value is not existing it should be empty
- XX: checksum: representation of two hexadecimal characters of an XOR of all characters in the sentence between – but not including – the $ and the * character.
- <cr><lf>: end of message symbol
example: $RMSEN,1,1,,,,0,1,,0,179.8,,,0,0*3F<cr><lf>
Messages
There are command and event messages. Command messages are received by the robot, event messages are sent by the robot.
- $RMMOW: Set mowing state command (start mowing, stop mowing, go to docking station)
- $RMSTA: Robot state event (robot state, errors, battery, charger)
- $RMSEN: Robot sensor data event (sensor values)
- $RMTRG: Robot sensor trigger event (sensor trigger counters)
- $RMCFG: Robot mower configuration event (protocol version, available sensors)
- $RMMOV: Move robot until sensor trigger command
- $RMKOA: Keep ongoing action command (mower communications saftety)
- $RMBEA: beacons ranging data event (e.g. DW1000)
- $RMSON: ultrasonic sensor event
- $RMBUM: bumper sensor event
- $RMODO: odometry event
- $RMGPS: GPS event
- $RMPER: perimeter sensor event
- $RMIMU: IMU event
Set mowing state command (start,stop,dock)
This command is used to for remote controlling the mower actions.
$RMMOW,s<cr><lf>
- s: stop mowing (0), start mowing (1), go to docking station (2)
Robot state event (robot state, errors, battery, charger)
Robot will send current state via this message.
$RMSTA,ts,s,e,b,bl,c,h,l,r<cr><lf>
- ts: timestamp ms
- s: robot state: stopped (0), mowing (1), busy (2), error (3), going to dock (4)
- o: docking state: not docked (0), docked (1)
- e: error code
- b: battery percent
- bl: battery low (0/1)
- c: charging percent
- h: absolute compass heading in degree
- l: left odometry counter
- r: right odometry counter
Robot sensor data event (sensor values)
Robot will send a summary of current sensor values via this message.
$RMSEN,ts,bl,br,bc,pfl,pfr,pfc,prl,prr,prc,ih,ip,ir,ga,go,ul,ur,uc<cr><lf>
- ts: timestamp ms
- bl: bumperLeft
- br: bumperRight
- bc: bumperCenter
- pfl: perimeterFrontLeft
- pfr: perimeterFrontRight
- pfc: perimeterFrontCenter
- prl: perimeterRearLeft
- prr: perimeterRearRight
- prc: perimeterRearCenter
- ih: IMUcompassHeading degree
- ip: IMUpitch degree
- pr: IMUroll degree
- ga: GPSlatitude
- go: GPSlongitude
- ul: ultrasonicLeft
- ur: ultrasonicRight
- uc: ultrasonicCenter
Robot sensor trigger event (sensor trigger counters)
Robot will send a summary of triggered sensors via this message.
$RMTRG,ts,ml,mr,bl,br,bc,pfl,pfr,pfc,prl,prr,prc,t,ul,ur,uc<cr><lf>
- ts: timestamp ms
- ml: motorLeftStall
- mr: motorRightStall
- bl: bumperLeft
- br: bumperRight
- bc: bumperCenter
- pfl: perimeterFrontLeft
- pfr: perimeterFrontRight
- pfc: perimeterFrontCenter
- prl: perimeterRearLeft
- prr: perimeterRearRight
- prc: perimeterRearCenter
- t: robot orientation tilt
- ul: ultrasonicLeft
- ur: ultrasonicRight
- uc: ultrasonicCenter
Robot mower configuration event (protocol version, type of sensors)
Robot will send a summary of the robot's configuration via this message.
$RMCFG,p,m,i,d,pfl,pfr,pfc,prl,prr,prc,ih,ip,o,g,ul,ur,uc<cr><lf>
- p: robot is using protocol version (currently 1)
- m: robot requires minimum protocol version (currently 1)
- i: messages implemented bitmask ($RMMOW, $RMSTA, $RMSEN, $RMTRG, $RMCFG, $RMMOV, $RMKOA, $RMBEA) - example: 10001000
- d: Docking station available (1/0)
- pfl: perimeterFrontLeft available (1/0)
- pfr: perimeterFrontRight available (1/0)
- pfc: perimeterFrontCenter available (1/0)
- prl: perimeterRearLeft available (1/0)
- prr: perimeterRearRight available (1/0)
- prc: perimeterRearCenter available (1/0)
- ih: IMU compass available (1/0)
- ip: IMU pitch/roll available (1/0)
- o: Odometry available (1/0)
- g: GPS available (1/0)
- ul: ultrasonicLeft available (1/0)
- ur: ultrasonicRight available (1/0)
- uc: ultrasonicCenter available (1/0)
Move robot until sensor trigger command
This command is used to control the robot movements directly.
$RMMOV,m,l,r,p,i,d<cr><lf>
- m: mowing motor on (1) or off (0)
- l: left motor target rpm
- r: right motor target rpm
- p: PID_Kp
- i: PID_Ki
- d: PID_Kd
Keep ongoing action command (mower communications saftety)
This command is used to control the robot movements directly. The mower will stop motors if not receiving another message within 2 seconds.
$RMKOA<cr><lf>
Beacons ranging data event (e.g. DW1000)
Robot will send a summary of beacons measurements via this message.
$RMBEA,t,b1,b2,b3,b4,...<cr><lf>
- t: timestamp ms
- b1,b2,b3,b4,...: beacon ranging in meter
Proprietary
- Any proprietary message types not defined by this protocol