<<PackageHeader(diffdrive_arduino)>>
<<TOC(4)>>




## AUTOGENERATED DON'T DELETE
## CategoryPackage


== Summary ==

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]]).


== Nodes ==

=== diffdrive_robot ===

{{{
#!clearsilver CS/NodeAPI
param{
  0.name=~left_wheel_name
  0.type=string
  0.desc=Left wheel joint name
  0.default=left_wheel
  1.name=~right_wheel_name
  1.type=string
  1.desc=Right wheel joint name
  1.default=right_wheel
  2.name=~baud_rate
  2.type=int
  2.desc=Baud rate of serial connection
  2.default=57600
  3.name=~device
  3.type=string
  3.desc=Address of serial device
  3.default=/dev/ttyUSB0
  4.name=~loop_rate
  4.type=float
  4.desc=Frequency (in Hz) of the processing loop on the Arduino
  4.default=30.0
  5.name=~enc_counts_per_rev
  5.type=int
  5.desc=Number of encoder counts per wheel revolution
  5.default=1920
  6.name=~timeout
  6.type=int
  6.desc=Timeout (ms) of serial device
  6.default=1000
}
}}}


== Future Works ==
 * Support for different firmwares
 * PID adjustment
 * Better handling of parameters
 * Better documentation/tutorial
 * Example yamls/launch