-
Notifications
You must be signed in to change notification settings - Fork 308
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Composite Robot Hardware Interface #151
Add Composite Robot Hardware Interface #151
Conversation
Can you better define what you mean by a "device"? |
Device means to me is a separate component that is a part of the robot. For example: a gripper, a force-torque sensor, a manipulator arm. Generally for each of these "devices" can be written independent driver. As part of the robot they work together. We want to implement coordinated control of all devices of the robot. This is what jbohren wrote about in the first post #75. For example in our lab we have а robotics testbed, which consists of several industrial manipulators, sensors, grippers, etc. Depending on the task, we'll use a different combination of devices. Under the current architecture, we have to implement |
|
||
/// \author Igor Kalevatykh <[email protected]> | ||
|
||
#ifndef COMPOSITE_HARDWARE_INTERFACE_ROBOT_HW_H |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should be
COMPOSITE_HARDWARE_INTERFACE__COMPOSITE_ROBOT_HW_H
+1 Thanks for explaining. I don't have a use case for this right now so won't be testing this, but I reviewed the code and it looks very well done. Just to make sure - using this composite class is not required and will not change existing methods, only add new functionality, correct? We'll want to make sure your documentation at the top makes it to the ROS wiki. |
Thanks for review. Yes, it is not changed core methods, only add new functionality. |
@Igorec. Your PRs require some review time, and I've been checking them little by little. Expect some comments soon. |
First of all, thanks for taking the time to code your idea. From issues #75, #138 and this one it's clear that a convenience mechanism for easily composing/aggregating interfaces should be a top priority for My first comment would be to ask what drove you to propose an alternative design to #138, which largely tackles the same problems?. I think the first problem to solve here is to have a convenient mechanism to aggregate already populated I don't like much that Concerning the I'm being very critical about interfaces, because it's something we'll have to maintain over time once we commit to one, so please bear with me. I'm glad that we have one more person interested in composing RobotHW instances. |
@ adolfo Thanks for the attention. I thought it would be convenient to have a plugin mechanism to download hardware for robots that have several different configurations. As in our case, or, for example, in the case of "care-o-bot". This is just another look at the issue. Maybe I did not quite understand # 138 , but it seemed to me that the interface merge mechanism is not very transparent. This variant is simpler. About the name «device» and «robot». This is a philosophical question.) Device more general concept . Forse-torque sensor device is not a robot, but robot is a device. With regard to implementation, it is all clean, I use boost :: ptr_vector. I understand your concern. Indeed, «DeviceHW» is a less flexible interface. If these PR's raise many questions and duplicate already existing functionality, they can be closed. |
There is very valid code in your PR, as well as in #138, and I think something very interesting will end up coming out. The work of both you and @kphawkins has given me some ideas, and I'd like to try them out. I'll bring them forth for your consideration if they pan out. P.S. Nice to hear that the care-o-bot folks are fiddling with ros_control. |
Thanks for everyone who contributed. |
Composite robot hardware interface can dynamically load, configure and run together a set of robot devices.
CompositeRobotHW
derived fromRobotHW
class. It work likeControllerManager
for controllers but for devices. CompositeRobotHW loads device libraries and configures each device atconfigure
method.Configure example:
Each device class should be derived from
DeviceHW
and exported as pluginlib module. All devices share the same interfaces thruCompositeInterfaceManager
and may share resources thruResourceInterfaceManager
. Each device must implement configure method, for example: