FroboMind Robot:Frobit:Protocol

From FroboMind [www.frobomind.org]
Jump to: navigation, search

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)