FroboMind Robot:Frobit:Protocol
Frobit protocol
The protocol is based on NMEA 0183 [1] over a serial port.
Serial communication Baudrate: 57600 Frame length: 11 bits (N81) Max bytes per second: 57600/11 = 5236 Max NMEA strings per second: 57600/11/50 = 104 (assuming a total length of 50 chars)
Frobit Status (PFBHI) transmitted by FrobitFW
$PFBHI,hw_version,firmware_version*CS<cr><lf>
hw_version: The Frobit hardware version
1. FrobitV1
firmware_version: The Frobit firmware version
1. Currently the only firmware version
This message is transmitted only once after boot.
Frobit Control (PFBCT) accepted by FrobitFW
$PFBCT,speedL,speedR*CS<cr><lf>
update reference speed.
speedL,speedR: Reference speed for left and right wheels [ticks/status interval].
Frobit Status (PFBST) transmitted by FrobitFW
$PFBST,state,tickL,tickR,voltage*CS<cr><lf>
state: Normal states
- STATE_OK (1)
Warning states
- STATE_NMEA_WARN(2) At least one nmea packet disregarded due to invalid format/CS since last PFBST message.
Error states
- STATE_WATCHDOG (3) No valid nmea packet received for the past 0.2s. (auto reset)
- STATE_LOW_BAT (4) Battery voltage critically low (auto reset).
- STATE_MOTOR_STALL (5) Motor stalled >1s causing high current (auto reset after 10s).
tickL,tickR: Odometry ticks (signed) since last status packet.
voltage: Battery voltage (10 bit ADC out from voltage divider to allow external calibration)
Frobit System Parameters (PFBSP) accepted by FrobitFW
$PFBSP,voltage_min*CS<cr><lf>
voltage_min: Battery minimum voltage threshold (10 bit value corresponding to ADC out from voltage divider)
Frobit Communication Parameters (PFBCP) accepted by FrobitFW
$PFBCP,pfbst_interval, pfbct_wd_timeout*CS<cr><lf>
pfbst_interval: Rate of the Frobit Status (PFBST) 1-1000 * [ms] (default 100)
pfbct_wd_timeout: NMEA watchdog timeout (monitoring PFBCT)
0: disable
1-1000 * [ms]
Frobit Wheel Parameters (PFBWP) accepted by FrobitFW
$PFBWP,pid_enable,pid_interval,Kp_L,Ki_L,Kd_L,Kp_R,Ki_R,Kd_R*CS<cr><lf>
pid_enable: Loop control
0: Open loop
1: PID controller enabled (default)
pid_rate: PID update interval (irrelevant when running open loop)
1-1000 [ms]
100 (default)
Kp_L,Ki_L,Kd_L: PID control parameters for left wheel (irrelevant when running open loop)
Kp_R,Ki_R,Kd_R: PID control parameters for right wheel (irrelevant when running open loop)