Ask Your Question

How to interpret position in JointStateInterface

asked 2021-07-10 12:39:05 -0600

Mike Scheutzow gravatar image

The context is a robot with 2 drive wheels, using the ros_control diff_drive_controller.

I would like to know if it is well defined in ros_control how to interpret an increasing position value in the JointStateInterface? (We'll ignore wrap-around for the moment.)

I expected that an increasing angular position value in /joint_states meant that the wheel was rotating counter-clockwise on its axel (as viewed from the motor side.) And therefore, when a diff drive robot moves forward in a straight line, the right wheel position value would increase, and the left wheel position value would decrease.

The commercial wheeled robot I have access to does not behave this way. For it, both wheel position values increase as the robot moves straight forward.

Are multiple conventions supported? If so, how does diff_drive_controller know how to interpret the values?

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2021-07-14 16:50:30 -0600

Mike Scheutzow gravatar image

For each wheel, an increasing value for position is the axel rotation that moves the robot's base_link in the +x direction. So the commercial robot got this right. The orientation of motors is ignored. I deduced this from reading the source code of Odometry::update() in the diff_drive_controller directory of ros_control.

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools



Asked: 2021-07-10 12:39:05 -0600

Seen: 41 times

Last updated: Jul 14 '21