moveit2
moveit2 copied to clipboard
MoveIt Python Library: Fix parameter handling in servo module API
Background
Currently users have to pass the end effector frame name as a parameter to instantiate a teleop device (see here). This is inefficient as this parameter is stored in the servo config file (see here). This task is to update this poor API design such that the ee_frame_name
is pulled automatically from the servo node parameters.
🤔 What you will need to know.
How to read parameters from a ROS 2 node.
Note: a potential complication is when multiple servo nodes are running at once, which one should you pull parameters from?
Good luck with your first issue!
Hey, would like to take this up if no one is on it. Can someone please guide me for the same.
Hey, would like to take this up if no one is on it. Can someone please guide me for the same.
Happy to provide guidance on this @Tejal-19, with this being said @abhijelly seems to have already opened a pr for this issue. There are some changes required on the open pr https://github.com/ros-planning/moveit2/pull/2012 the review comments provide guidance on what is left to accomplish.
hey, thankyou for reaching back to me. I couldn't actually see any review comments on the PR. Are you talking about the checks or the to do list structure mentioned at the very start of the PR ? I'm sorry to bother for such an easy one.
Hey @Tejal-19,
Thanks for following up on this, you should be able to see it below the following comment.

@peterdavidfagan
Note: a potential complication is when multiple servo nodes are running at once, which one should you pull parameters from?
An idea I had while looking at this
When a user is starting a teleop node , I assume they would know which servo node they want to send the commands to, hence they can pass in the namespace of the servo node as a launch argument servo_namespace
Currently that is "moveit_servo", but this can be set to something else as well for another servo node
And then rather than passing the ee_frame_name
as a constructor argument, you can get it using rclpy with parameter name as
servo_namespace + ".ee_frame_name"
after making sure the servo node has started here
@sjahr
Can you assign this to me ?
This needs to be addressed in the moveit_py
updates for Servo refactor.
Thanks @ibrahiminfinite for picking this up, I plan to get back to helping maintain the Python library in the near future but for now I need to first complete a research deadline I am working towards.
Hi @peterdavidfagan, If this issue is still open can I work on it?
@yaswanth1701
It is still open, feel free to give it a try.
Hi @ibrahiminfinite , I went through the discussion on the previous PR of this issue and found that basically, we want to load the parameter from the launch file under the namespace of the servo_node
into our teleop node for which one would require to create a service client right? please do let me know if I am heading in the right direction. thank you
@sea-bass , @peterdavidfagan
Since we no longer have the ee_frame
parameter in servo, does this issue make sense any longer?
In terms of pulling the ee_frame
name from the servo parameters.
Since we no longer have the
ee_frame
parameter in servo, does this issue make sense any longer? In terms of pulling theee_frame
name from the servo parameters.
Right, now these values should be automatically extracted from the actual planning group (or subgroup) being used at the time.
There is probably some syncing up on the Python module to work with our changes to Servo (or maybe not...), so I'd say we can close this issue and separately handle bringing this module up to date as needed.