Rosanswers logo

I'm trying to follow along with the pose tracking example provided in moveit_servo on a UR10e and am having difficulty in understanding how to use this with an arm other than the panda arm.

Looking at the example, moveit_servo::PoseTracking takes a moveit_servo::ServoParameters object as a parameter(ref). It seems this object can only be made with moveit_servo::ServoParameters::makeServoParameters(ref) which makes all the parameters constant...

So how do I go about using this example with UR10e? Do I need to recompile moveit_servo to change ServoParameters? There are multiple parameters in this struct hardcoded to "panda" and I'd rather not compile from source.

Thanks for the help.

Originally posted by mcevoyandy on ROS Answers with karma: 235 on 2023-05-03

Post score: 1


1 Answer 1


Rosanswers logo

I believe it should get and validate relevant parameters from the node (see here). Those get()and validate() methods are defined further up in the file: here and here.

It seems like the parameter files passed to the node are hard-coded in the pose tracking example launch file here but I think those YAML files are what you need to change.

Originally posted by danzimmerman with karma: 337 on 2023-05-03

This answer was ACCEPTED on the original site

Post score: 1

Original comments

Comment by mcevoyandy on 2023-05-04:
I have customized those two yamls and use them just fine following along with the other examples (twist and joint cmd ones), but the pose tracking example seems to overwrite my yaml values with the values hard-coded in the struct...

Comment by danzimmerman on 2023-05-04:
I'll try it out and reproduce if I get a chance. I had a Servo+UR pose tracking setup working on Humble, but now that I think about it, I probably didn't use the PoseTracking class because I wanted to be able to use it with an existing, running Servo node.

I think maybe I just followed along to implement similar functionality.

Comment by danzimmerman on 2023-05-06:
I got the stock pose tracking demo executable working with the UR robots here: https://github.com/danzimmerman/servo_ur_pose_tracking_demo

Comment by AndyZe on 2023-05-07:
Thanks Dan!

The pose tracking functionality is likely to change after Humble. A Google Summer of Code project is working on improvements so the PID gains of PoseTracking aren't required. Instead it will work like this:

provide target pose --> get IK solution --> move toward that solution as quickly as possible (bounded by vel/accel limits)

Comment by mcevoyandy on 2023-05-08:
Thanks Dan, I am still unable to get this working on actual hardware or the docker simulator but I don't have the errors regarding panda parameters anymore...

Comment by danzimmerman on 2023-05-08:
I was working on adding the UR robot driver launch to try getting the demo executable to work with URSim as an option in addition to fake hardware. However, the pose target update loop here doesn't run for very long, so I didn't think I could get External Control running on the "robot" before the demo node terminated.

I guess I could skip launching the ROS 2 Control nodes for real hardware/URSim, assuming that the driver, "robot" and ROS2 controller are all already up and running and ready to respond to joint position commands.

Comment by danzimmerman on 2023-05-08:
Andy M, I updated the repo so that if you pass use_fake_hardware:=false it should work with a robot driver that's already running and connected. Tested with URSim here: https://youtu.be/qYzdJA60K7w

I loaded forward_position_controller and had the External Control program already running in URSim so when I ran launched the example launch file from my repo, the robot was ready to accept commands from the pose tracker.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.