Skip to content

This project is based on the diff_drive_controller from the library ros_controllers. The main goal is to publish the tick count of each wheel instead of publishing directly the odometry.

License

Notifications You must be signed in to change notification settings

sousarbarb/diff_drive_controller_rbs

Repository files navigation

diff_drive_controller_rbs

Version 0.0.4 (2022/04/08)

This project is based on the diff_drive_controller from the library ros_controllers (git, wiki). The main goal is to publish the tick count of each wheel instead of publishing directly the odometry.

Given that there is no standard for publishing the tick count of each wheel (this data is usually processed by the driver for the robot's motors), the type of message used is the same used by INESC TEC / CRIIS for its robotics navigation stack, i.e., motors_output_array_data.

Finally, the controller is capable of dealing with different diameters of the wheels. If the robot has unequal wheel diameters, the controller adjusts the velocity set for each wheel. If you want to test the effect of odometry considering equal diameters, set the parameter wheel_radius of the controller (for the latter to not go to the URDF to search for each radius).

With this version, it is possible to do:

  • Fixed bug of having measured the same speed in both wheels from motors_ticks
  • Controller compatible with different wheels radius
  • Parameter to define if it is published the exact ticks (based on the current position of the joints) or the more realistic one (integer accumulator susceptible to round errors)
  • Publish tick count of each wheel (topic: motors_ticks; ROS message: motors_output_array_data)
  • Modify the plugin to improve the code readability (diff_drive_controller_rbs/SpeedLimiter, diff_drive_controller_rbs/Odometry)
  • Improve documentation of the plugin
  • Base driver for simulating differential robots in Gazebo based on diff_drive_controller
  • Declaration of the plugin in the package.xml file
  • Initialization of the Git repository
  • Initialization of the ROS package

The next version will add these features:

No further developments foreseen for this project.

ROS

Current version:

  • Ubuntu 18.04 LTS
  • ROS Melodic

Dependencies

  • controller_interface
  • control_msgs
  • dynamic_reconfigure
  • geometry_msgs
  • hardware_interface
  • itrci_hardware
  • nav_msgs
  • pluginlib
  • realtime_tools
  • tf
  • urdf

Parameters

  • Same as diff_drive_controller
  • motors_encoders_resolution: resolution of the simulated encoders
  • motors_gear_reduction: gear reduction of the simulated motors
  • enable_exact_ticks:
    • true: accumulated ticks computed based on the joints position (Gazebo accumulates the position of continuous joint, does not restrain their range to 360deg)
    • false: ticks accumulate the difference between the current and previous position of the wheel (susceptible to accumulated rounding errors)
  • left_wheel_radius: define specifically the left wheel radius (wheel_radius must not be defined to read this parameter)
  • right_wheel_radius: define specifically the right wheel radius (wheel_radius must not be defined to read this parameter)

Publishes

Subscribes

Services

None.

Actions

None.

Usage

Contacts

About

This project is based on the diff_drive_controller from the library ros_controllers. The main goal is to publish the tick count of each wheel instead of publishing directly the odometry.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published