Generic ROS Control Driver Template - Connect any robot with ros control

I created a first version of a ros control/ hardware interface driver template, with a demo robot and Moveit Functionallity.

A high level component diagram of the driver can be seen below

The example implemented is aimed for Diy robot arms with simple servos. For that i also provide demo ros drivers for the pwm9685 board and configurable mapping process of ros command to servo command.

You can run the driver in fake execution mode for testing without the need of a real robot. This is done by passing to the state the command, thus fooling the agnostic ros controllers. This is how we should connect robot’s without feedback

easily configurable to put your api in the read() and write() methods with the help of a generic_driver object/library which is responsible for writting and reading to you robot, there you need to put your custom Api. This object then get’s used from the Hardware interface

I would love the feedback to improve the Driver!!!

1 Like

Hi! Nice initiative. But I don’t like the name. What about generic_ros_control_driver? Because the current name doesn’t suggest it’s only for ros_control stuff. One could think it might as well be a template for camera drivers or whatever…

Or ros_control_driver_template.

You are so Correct! I made the changes

Something else in this context: PickNikRobotics/ros_control_boilerplate.

1 Like

Yes i learned to write cpp nodes from this package, i should include it in the readme since i “stole”: the code for the control loop class , these package along with ur drivers where my template when i was writing a ros driver

Reusing code from other OSS projects is fine, that’s why it’s OSS.

You must however adhere to the terms of the license. This is easiest if you keep code you reuse separate, and keep the license preamble in place. If you’ve copied snippets, you’ll have to get a little more creative.

In any case: make sure you adhere to the 3 clauses in the license.

then I would suggest to make sure you adhere to the license terms of those packages as well.

2 Likes

thanks @gavanderhoorn for the info,

i’ll create a seperate package for control loop with the license and mention it on readme,

for ur i haven’t taken code as is only inspiration^ although we were considering using the custom speed scaling controllers they are using in which case it would be necessary.

Creating a separate package is probably not needed.

It’s perfectly possible to have files under different licenses in a single project, as long as you’re careful to mention which files are under which license.

ok done, i added the license on top of the files retained the ros_control_boilerplate namespace and made notice in the readme