This code is for those working with the Rover Robotics Rover Zero V1.


The Rover Zero V1 uses the RoboClaw 2x15 motor controller which communicates via USB.


This package abstracts away the USB communications and allows users to quickly get their robots moving around and doing cool things!



This package serves as a ROS driver for a Rover Robotics Rover Zero Driver which communicates via UART to a host PC running ROS. This package assumes users are using a USB cable.

Subscribed Topics

/cmd_vel (geometry_msgs/Twist)
  • A topic that controls the linear (m/s) and angular (rad/s) velocity of the robot. cmd_vel/managed should come from a package that can manage multiple sources of control (local joystick, remote keyboard, move_base, etc...) like rr_control_manager. If only one source of input is needed then this can be remapped to cmd_vel.
soft_estop/enable (std_msgs/Bool)
  • When set to True the driver will ignore all input commands until the True message is received on the /rr_openrover_driver/soft_estop/reset topic (even if False is published to this topic). This is very useful to map to a button on a controller. If activated while using the ROS nav stack it acts as a pause button and autonomy can easily be resumed if the estop is reset before your navigation stack timeouts kick in.
soft_estop/reset (std_msgs/Bool)
  • Used to reset the soft_estop. This is also useful to map to a button on a controller

Published Topics

diagnostics (<<MsgLink: execution failed [string index out of range] (see also the log)>>)
  • diagnostics settings for roboclaw.
odom (invalid message type for MsgLink(msg/type))
  • Encoder-based odometry


address (int, default: 128)
  • Roboclaw communication address
baud (int, default: 115200)
  • commuincation baudrate
max_vel (double, default: 5)
  • software cap on robot's velocity
max_turn_rate (double, default: 6.28)
  • software cap on robot's turnrate
speed_to_duty_coef (double, default: 1.02)
  • coeficient used to convert speed to duty cycle
diag_frequency_hz (double, default: 1.0)
  • diagnostic frequency
motor_cmd_frequency_hz (double, default: 30)
  • motor cmd frequency
odom_frequency_hz (double, default: 30)
  • odometry frequency
cmd_vel_timeout (double, default: .5)
  • roboclaw communication timeout
enable_encoder_odom (Bool, default: False)
  • enable to publish odometry data to ros
enable_esc_feedback_controls (Bool, default: False)
  • Enable to turn on PID with current PID settings. Will ignore PID values from PID parameters
v_pid_overwrite (Bool, default: False)
  • Overwrite Hardware PID values with the one from PID parameters
save_motor_controller_settings (Bool, default: false)
  • save changes to motor controller
m1_v_p (Double, default: 3)
  • Motor 1 Velocity P
m1_v_i (Double, default: 0.35)
  • Motor 1 Velocity I
m1_v_d (Double, default: 0)
  • Motor 1 Velocity D
m1_v_qpps (Int, default: 10000)
  • Motor 1 Maximum Possible Speed*
m2_v_p (Double, default: 3)
  • Motor 2 Velocity P
m2_v_i (Double, default: 0.35)
  • Motor 2 Velocity I
m2_v_d (Double, default: 0)
  • Motor 2 Velocity D
m2_v_qpps (Int, default: 10000)
  • Motor 2 Maximum Possible Speed
encoder_pulses_per_turn (Double, default: 5400)
  • Encoder Tick Per Revolution
left_motor_max_current (Double, default: 5)
  • Motor 1 Max Current Setting
right_motor_max_current (Double, default: 5)
  • Motor 2 Max Current Setting
active_brake_timeout (double, default: 1)
  • Active brake timeout
odom_frame (tf, default: odom)
  • Robot TF Frame for Odometry
base_link_frame (tf, default: base_link)
  • Robot TF Frame for Base Link
wheel_base (double, default: 0.358775)
  • Distance between center of wheels
wheel_radius (Double, default: 0.127)
  • Radius of wheel

Wiki: rr_rover_zero_driver (last edited 2020-07-28 14:16:38 by nickfragale)