yujinrobot / kobuki_core

Core (non-ros) kobuki packages.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Linear Speed/Turn Radius Driver Api

stonier opened this issue · comments

The diff_drive module in the pure c++ driver allows one to control the robot using linear speed (mm/s) and turn radius (mm) just like the irobot create. However this method is not available via the Kobuki class, instead one with linear speed and angular speed is used. As the diff_drive is a private member, it is not possible to use this interface.

This is very useful for apps that previously used the irobot create. Sure you can easily calculate angular speed from turn radius, but it would be nice to expose it.

There is a msg: create_node/msg/Drive.msg.

If we want apps to be compatible for both create and kobuki, we need to use a common message with a common topic name.

  • move Drive.msg (maybe rename it too) to a common msg stack.
    • We currently have no common msg stack and wanted to work towards this for hydro.
    • Should we make a common stack or just push this into common_msgs somewhere?
  • /mobile_base/commands/radial_velocities (츰 이상하지! - better name?)
  • Expose the above topic in kobuki node.
  • Expose appropriately in create_node as well.

Some notes for posterity...

lstr control in the firmware has some intelligence from the cleaning robot. If the incoming command is too high so that the radius can't be performed correctly, it thresholds the fast wheel speed at maximum and recalculate the slower wheel's speed to comply with the radius (at the cost of the linear command).

Other thoughts....this is not really a huge priority for us. We'd be happy to support someone wanting to pull request on this, but don't have the development time or need right now. Leaving this open so other people can discover it.

Aging out, not a priority at this point in time.