gazebo_ros_control zeroes joint positions?
I am trying to build a custom 4-wheeled omniwheel robot with ROS, and am currently trying to make a simulation of it work in Gazebo as well. I am using ROS Noetic for stability, and am on Gazebo 11.11.0.
So far I have:
- Written the hardware PID controller and integrated with the system with rosserial
- Written the RobotHW class for ros_control (works)
- Written a holonomic controller for the robot (works)
- Created the URDF (works with RViz)
Now, I am trying to integrate in the gazebo_ros_control plugin with my own controller and JointStateController, but whenever I run the plugin, the wheels of the robot all get reset to the origin. The terminal shows no warning or errors at all. Here is a sample log.
This is when I launch without the plugin:
This is when I do launch with the plugin:
This is the launch file I am launching the simulation from, and after a lot of experimentation, here is what I have isolated:
- Simply by running the gazebo_ros_control plugin, the wheels are reset to origin
- What controllers are running do not matter
- Only VelocityJointInterface seems to break the wheels, but EffortJointInterface preserves the joint positions
- The controllers themselves seem to be running, as RViz seems to receives the TF poses just fine:
- But the controllers cannot actually manipulate the wheels, as changing cmd_vel for my controller does not change the TF poses of the wheels
Here's more info:
- rqt_graph:
- roswtf
Would appreciate any ideas on how to debug this! Thanks in advance <3