You can check out Linorobot's implementation: https://github.com/linorobot/linorobot/blob/master/teensy/firmware/src/firmware.ino#L176-L194 The idea is to have a PID controller for each motor to maintain the required speed defined by Teleop package or Navigation Stack. This requires: PID SETPOINT : The converted required speed (geometry_msgs/Twist) from m/s and/or rad/s to RPM (Rev Per Min). The kinematics library does the conversion for you, just pass the required velocities and it will return the required RPM for each motor. PID FEEDBACK : Calculated motor RPM based on the wheel encoder's ticks per rev over time. The PID's output is then used to determine the PWM value required to drive the motor. Do this in a loop and you get a controller. --- [Visit Topic](https://discourse.ros.org/t/ros-teleop-package/5062/5) or reply to this email to respond. If you do not want to receive messages from ros-users please use the unsubscribe link below. If you use the one above, you will stop all of ros-users from receiving updates. ______________________________________________________________________________ ros-users mailing list ros-users@lists.ros.org http://lists.ros.org/mailman/listinfo/ros-users Unsubscribe: