Skip to content
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

Incorrect order of joints using ROS Humble #87

Open
IvoD1998 opened this issue Feb 15, 2023 · 4 comments
Open

Incorrect order of joints using ROS Humble #87

IvoD1998 opened this issue Feb 15, 2023 · 4 comments

Comments

@IvoD1998
Copy link

Hello

When trying to use the joint states of the robot for a forward kinematic calculation, we noticed that the order of the joint positions seems to be published incorrectly.
It appears that the order of joints is now published as:

  • joint1
  • joint2
  • joint5
  • joint3
  • joint4
  • joint6

(see screenshot below for added clarity)

Screenshot from 2023-02-15 11-50-42

Thank you in advance!
Ivo Dekker

@clalancette
Copy link
Collaborator

Can you please describe why that is wrong, and how joint_state_publisher is involved here?

@IvoD1998
Copy link
Author

We were wondering why the list of joints as published by the joint state publisher does not match the sequential order they are supposed to be in according to the robot URDF. We tested this with various different robot models and got the same result.
It could of course also be an issue on the side of the MoveIt configs for the robots, but we are uncertain.

@karanchahal
Copy link

Can I use foxglove to do this ? What do I need to do ?

@sloretz
Copy link
Contributor

sloretz commented Mar 6, 2023

It looks like there is an intent to publish the joints in a fixed order:

Mind posting a urdf that shows the issue? It might be the change in order came from the urdf parser, as that's where joint_state_publisher gets the order from

def init_urdf(self, robot):
robot = robot.getElementsByTagName('robot')[0]
# Find all non-fixed joints
for child in robot.childNodes:
if child.nodeType is child.TEXT_NODE:
continue
if child.localName == 'joint':
jtype = child.getAttribute('type')
if jtype in ['fixed', 'floating', 'planar']:
continue
name = child.getAttribute('name')
self.joint_list.append(name)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants