-
Notifications
You must be signed in to change notification settings - Fork 91
Description
It is surprisingly useful to have a purely kinematic simulation of a hardware interface in a combined_robot_hw
. Using a custom adapter i already used it to allow for partially-simulated execution in a more complex combined_robot_hw
setup, and it generally makes switching between real hardware and simulation in such projects much easier. I would however prefer this to be an upstream feature of ros_control_boilerplate
(and am happy to provide a PR for it) for the following reasons:
- It would demonstrate how to properly write and export a hw interface using
pluginlib
- Adding a launch file to
rrbot_control
could demonstrate how to use acombined_robot_hw
- It can be quite handy to use this as a placeholder when developing bigger
combined_robot_hw
setups
Unfortunately i don't think simply changing SimHWInterface
(or GenericHWInterface
) would be possible without quite some restructuring, as pluginlib
requires a parameterless constructor. Thus i would create an extra adapter class deriving from hardware_interface::RobotHW
which would hold a SimHWInterface
as a member and delay it's construction until init()
, simply delegating all relevant calls from there on.
The way i see it the required steps for this are:
- Create
CombinedHWAdapter
class - Export interface correctly as
ros_control_boilerplate/SimHWInterface
- Add node src to
rrbot_control
. Unfortunately running acombined_robot_hw
from aGenericHWControlLoop
doesn't seem too nice. - Add sample launch files to
rrbot_control
- Add short description to
README.md
I'm happy to hear about opinions, otherwise i'd start implementing this in the next days.