Warning: Joint goal not acheived

Hi! I have been looking through this awesome forum to find a similar issue but couldn’t find one.

I am using the Stretch2 with the Dex Wrist. I am trying to use the Home Robot stack. However, when I am trying to get the robot to move to poses with the arm and wrist, I get the warning “Joint goal not achieved” and the message “[ERROR] /stretch_driver joint_traj action: Received only 6 valid joints out of 8 total joints. Received …”. I have attempted to update everything required based on installing the Dex Wrist (i.e., the urdf etc.). I have tried debugging it, and it doesn’t look like the values are out of the limits in the urdf. And the joint names all look valid. I have attached an image with some of the error outputs.

Looking for any advice on debugging or where you think the error might be.

Please let me know any more information I can provide.

Hey, what script are you running? looks like ok-robot on the right?

On the left- you’re sending the base translation joint, which isn’t a real joint, so something is wrong. Can you share output of /joint_states?

but all in all, this might be a bug with ok-robot – have you posted on the discord?

1 Like

Hey! Thanks for the response! Yep, so on the right is the ok-robot script and on the left the startup_stretch_hector_slam.launch file.

I’ll be able to share the output in a couple hours (not with the robot ATM). Although, the previous two errors don’t include the mobile translation joint, and have all valid joints, which seems odd to me.

Yes, I tried reaching out on the discord last week :slight_smile:

Viewing the /joint_states, it doesn’t include the wrist roll or pitch (or the translate mobile base). I’m assuming it should? Is there something I haven’t updated properly? (image attached)

I find the instructions for updating the urdfs a bit confusing transitioning between what is asked to do from the stretch doc pages, home-robot docs, and ok-robot. Although, regardless, is there something I have missed so that these are part of the joint_states?

joint_states

Can you visualize your robot in RVIZ? I’m guessing you have the wrong URDF loaded, one without the dex wrist. Use this package: stretch_ros/stretch_description at noetic · hello-robot/stretch_ros · GitHub

Take a screenshot and share. alternately, you can do

rosparam get robot_description | grep roll

and see if there’s a wrist joint in your URDF. I’m guessing there isnt, which means you just need to follow the instructions to update your urdf to include dex wrist!

When using RVIZ, the stretch displays with the Dex Wrist.

Running the command:

rosparam get robot_description | grep roll

Initially I got an error.
image

But after I ran:

roslaunch stretch_description display.launch

It seemed to set the /robot_description. Although this did not fix the error. And I still see “/stretch_driver joint_traj action: Received only 6 valid joints out of 8 total joints”, when running. Output of robot_description:

Hey @gonia, would you also check out the following guide to make sure your tool param is configured correctly:

Yes, I had a look at this, the outputs all seem in check. Issue persists.

I have also noticed that when I try to stow the robot, i get this error:

I tried going through the steps of setting everything up again, which I have run into this error during calibration.

rosrun stretch_calibration check_head_calibration.sh

Which I find the same error when trying to update the urdf after xacro change.

rosrun stretch_calibration update_urdf_after_xacro_change.sh

Any help appreciated!

Hey @gonia, this one is a bug in Stretch Body. I was able to reproduce it and the fix was shipped in v0.7.15. You can update using pip3 install -U hello-robot-stretch-body.

Would you send a picture of the robot to confirm it has a Dex Wrist. Also would you try the stretch_system_check.py CLI and report the results.

1 Like

Viewing the /joint_states, it doesn’t include the wrist roll or pitch (or the translate mobile base). I’m assuming it should? Is there something I haven’t updated properly? (image attached)

You should be seeing joint states from the wrist. Its ok not to have translate mobile base.

Can you use rostopic echo to show the actual messages being sent on the joint_traj action server which are causing the error?

Here is a photo of the wrist

And running pip3 install -U hello-robot-stretch-body solved the stow issue, thank you!
But when running system check, it has a warning that I need to update packages, even after updating…?

image

So, my mistake earlier, but I didn’t previously notice the distinction between the rostopic ‘/stretch/joint_states’ and ‘/joint_states’. The ‘/joint_states’ topic prints the wrist_roll and wrist_pitch.

In my joint_trajectory_server.py or command_groups.py, I don’t seem to have a WristRollCommandGroup or WristPitchCommandGroup?

UPDATE: Downgrading the packages hello-robot-stretch-tool-share and hello-robot-stretch-body resolved the issues. This appears to be due to the changes made when deprecating the dex_wrist in the tool share in Feb (deprecated DexWrist (beta too) · hello-robot/stretch_tool_share@59bb19b · GitHub).

What is the best way to address this?

1 Like

@Mohamed_Fazil I think @gonia has found a bug with newer versions of Stretch Body, where the command group classes for Pitch and Roll aren’t being loaded in because the Tool Share was deprecated. IIRC, this is a simple fix by changing where the ROS driver looks to import these two classes. We already fixed this in the ROS 2 driver. Would you backport this fix to Noetic?

@gonia Thanks for digging into this! I appreciate that you reported this. Either Mohamed or I (I’m out of office this week) should be able to fix this ASAP.

1 Like

@gonia The issues you described have been fixed with this PR Add Wrist_roll and wrist_pitch to command groups by hello-fazil · Pull Request #124 · hello-robot/stretch_ros · GitHub You can pull the latest stretch_ros updates and this should now work with the latest stretch body version. Let me know if you are still facing any issues.