moveit2 icon indicating copy to clipboard operation
moveit2 copied to clipboard

MoveIt Python Library: Fix parameter handling in servo module API

Open peterdavidfagan opened this issue 2 years ago • 12 comments

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!

peterdavidfagan avatar Feb 23 '23 13:02 peterdavidfagan

Hey, would like to take this up if no one is on it. Can someone please guide me for the same.

Tejal-19 avatar Mar 11 '23 15:03 Tejal-19

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.

peterdavidfagan avatar Mar 12 '23 17:03 peterdavidfagan

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.

Tejal-19 avatar Mar 13 '23 11:03 Tejal-19

Hey @Tejal-19,

Thanks for following up on this, you should be able to see it below the following comment.

Screenshot 2023-03-15 at 19 16 07

peterdavidfagan avatar Mar 15 '23 18:03 peterdavidfagan

@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

ibrahiminfinite avatar May 28 '23 08:05 ibrahiminfinite

@sjahr Can you assign this to me ? This needs to be addressed in the moveit_py updates for Servo refactor.

ibrahiminfinite avatar Aug 15 '23 15:08 ibrahiminfinite

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.

peterdavidfagan avatar Aug 15 '23 19:08 peterdavidfagan

Hi @peterdavidfagan, If this issue is still open can I work on it?

yaswanth1701 avatar Nov 25 '23 06:11 yaswanth1701

@yaswanth1701

It is still open, feel free to give it a try.

ibrahiminfinite avatar Nov 25 '23 06:11 ibrahiminfinite

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

yaswanth1701 avatar Dec 03 '23 05:12 yaswanth1701

@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.

ibrahiminfinite avatar Dec 08 '23 16:12 ibrahiminfinite

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.

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.

sea-bass avatar Dec 08 '23 18:12 sea-bass