-
Notifications
You must be signed in to change notification settings - Fork 527
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
joint_state_controller provides different joint_states from the gazebo plugin joint_state_publisher #317
Comments
It does it exactly the same way. My only guess is that you restart gazebo time which break the |
It can't provide the exact joint data, even though we never reset gazebo time. |
I found that the joint data from the gazebo API directly seems reasonable, see here, but after this function I think I should provide a basic ros package for proving this. |
That would be great. If we can reproduce it cleanly, we can fix it. |
Hi, @bmagyar Sorry for the delay. Could you try the kinova_ros package with the following command? roslaunch kinova_gazebo robot_launch.launch kinova_robotType:=j2n6s300 After the robot initial, we can find that |
The issue can be easily reproduced using the ur_robot_driver repository. It starts after certain collision circumstances. In order to reproduce it, in any ros workspace:
or
The robot should try to go to that position crossing the floor and while heavy colliding with the floor the bug appears, showing a joint position that exceed by far the actual limits. After some further experimentation, you can check how they're actually the correct joint values but outside the bounds. For example, when sending that command for the first time, I got the following positions values: This issue reminds me of ros/angles#2 , that was actually closed long ago but with those weird collision states may be related. |
The issue has been detected and reported in the gazebo_ros_pkgs repository as the main bug concerns the gazebo_ros_control package sources. ros-simulation/gazebo_ros_pkgs#1405 (comment) |
When using
joint_state_controller
with gazebo,/joint_states
will provide wrong and large joint data when robot has heavy collision with some object in the gazebo world. But if we use gazebo pluginjoint_state_publisher
, the joint states will be right!I find that gazebo plugin
joint_state_publisher
gets the joint states directly from gazebo, see here. But I can't get where the joint states update injoint_sate_controller
.How does the
joint_state_[i]
update in the following codes?ros_controllers/joint_state_controller/src/joint_state_controller.cpp
Line 93 in e5a6c5a
The text was updated successfully, but these errors were encountered: