Git Product home page Git Product logo

diff_drive_controller_rbs's Introduction

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

diff_drive_controller_rbs's People

Contributors

sousarbarb avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.