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.
Current version:
- Ubuntu 18.04 LTS
- ROS Melodic
- controller_interface
- control_msgs
- dynamic_reconfigure
- geometry_msgs
- hardware_interface
- itrci_hardware
- nav_msgs
- pluginlib
- realtime_tools
- tf
- urdf
- Same as
diff_drive_controller
motors_encoders_resolution
: resolution of the simulated encodersmotors_gear_reduction
: gear reduction of the simulated motorsenable_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)
- Same as
diff_drive_controller
motors_ticks
- Same as
diff_drive_controller
None.
None.
- Ricardo B. Sousa (gitlab, github, personal, feup:professor, feup:student, inesctec)
- Héber Miguel Sobreira (gitlab, inesctec)
- António Paulo Moreira (feup)