Hello,
I am trying to add realistic wheel encoders to my Gazebo simulation. I use ros_control's `DiffDriveController`, which sends velocity commands and reads the `JointStates` topic published my Gazebo.
Using the `DefaultRobotHWSim` interface, the perfect wheel positions and velocities are published by the plugin and used by the controller. I would like to modify these values (discretization, step miss, noise...) to simulate a real controller or to use them for odometry. I thus do not want to create a new topic, but instead to change the values of `JointStates`.
From [the documentation](http://gazebosim.org/tutorials?tut=ros_control&cat=connect_ros#Advanced:customgazebo_ros_controlSimulationPlugins), I should create my own hardware interface that inherits from `RobotHWSim` and pass it to `gazebo_ros_control_plugin` through the `robotSimType` field. This however does not allow me to pass arguments to the hardware interface (for example step size, step miss probability), since there seem to be no mechanism for `gazebo_ros_control_plugin` to transmit values to `RobotHWSim`, and this one can only read the `.urdf` and not the `.sdf` file (and the convention states that Gazebo-specific parameters should stay in the `.sdf`).
*Hence my question:* **should I write my own `gazebo_ros_control_plugin` ?** This seems to totally break the modular approach of ROS and Gazebo, and am thus looking for a cleaner and more efficient way...
↧