Package Summary

Provides an interface between diff_drive_controller and an Arduino.


This package provides an interface between ros_control (specifically diff_drive_controller) and ros_arduino_bridge.

Getting Started

  1. Have your robot with an Arduino running the firmware from ros_arduino_bridge.

  2. Run the node with rosrun diffdrive_arduino diffdrive_robot, specifying any parameters you need to.

  3. Set up the controllers. You will need to run a diff_drive_controller and a joint_state_controller. You may also need to set the robot_description if that information is not provided directly to the diff_drive_controller.

  4. Run the controllers.
  5. Send some input to cmd_vel (e.g. with teleop_twist_joy).




~left_wheel_name (string, default: left_wheel)
  • Left wheel joint name
~right_wheel_name (string, default: right_wheel)
  • Right wheel joint name
~baud_rate (int, default: 57600)
  • Baud rate of serial connection
~device (string, default: /dev/ttyUSB0)
  • Address of serial device
~loop_rate (float, default: 30.0)
  • Frequency (in Hz) of the processing loop on the Arduino
~enc_counts_per_rev (int, default: 1920)
  • Number of encoder counts per wheel revolution
~timeout (int, default: 1000)
  • Timeout (ms) of serial device

Future Works

  • Support for different firmwares
  • PID adjustment
  • Better handling of parameters
  • Better documentation/tutorial
  • Example yamls/launch

Wiki: diffdrive_arduino (last edited 2020-12-08 10:29:29 by JoshNewans)