AndrejOrsula / ign_moveit2_examples

C++ and Python examples of using MoveIt 2 inside Ignition Gazebo simulation environment
BSD 3-Clause "New" or "Revised" License
97 stars 20 forks source link

support other robotic arm (not only panda_arm) #7

Closed gezp closed 3 years ago

gezp commented 3 years ago

Hi, First, thank you for your great work! it gives me much help and reference when i study moveit2 and Ignition Gazebo.

but i find some code in moveit2_py/moveit2.py is special for panda_arm robot , do you have a plan to make ign_moveit more general so that others can directly use the package to move different robotic arm?

In addition, i find you use scipy package to transform euler to quaternion in example scripts, i don't think it's good way to import extra unnecessary package . and i also find a simple transform code which is from ROS2 Tutorials: Using-URDF-with-Robot-State-Publisher , of course, it's just my opinion.

AndrejOrsula commented 3 years ago

Hello @gezp, thank you for posting this issue.

some code in moveit2_py/moveit2.py is special for panda_arm robot

That is correct, the Python interface for MoveIt2 (moveit2_py) contained in this repo was originally meant as a quick and dirty alternative to moveit_commander, which has not yet been migrated to MoveIt2 (it is not in migration progress either, so I am not sure if it is planned at all). It actually does not even contain any Ignition-specific code, this was just a convenient place for me to put it because I require to have Python interface in the control loop for my project (hence it is also hardcoded for my needs). It currently does not even support all features of MoveIt, e.g. I have not added planning of Cartesian paths yet. Having proper Python bindings to move_group interface might therefore be much better, but I would use a different repo for such purpose as it has nothing to do with Ignition :)

do you have a plan to make ign_moveit more general so that others can directly use the package to move different robotic arm?

All other parts of using MoveIt2 inside Ignition should already be supported for all robots with URDF if you can get away with using C++ move_group interface. The only extra step you need to do is to publish the joint trajectory to the corresponding topic and bridge it to Ignition such that JointTrajectoryController can receive the messages. There is a small C++ example in this repo for this as well (ROS2 node and launch script).

If there is interest from you to use MoveIt2 with Python interface, then I can spend some time next week to refactor the moveit2_py and make it general (read the robot description from URDF, i.e. fix init_robot() to act as moveit_commander would). I am not that experienced with Python, but maybe I can look at the aforementioned 'proper Python bindings' to move_group and see how much effort it would require... I am also planning to do some changes in this repo soon anyway because upstream dependencies had some of the required features merged in, which should simplify quite a few things.

Do you have a specific robot in mind that you would like to use? If so, please link me its URDF description so that I can test it with something specific (if possible).


i find you use scipy package to transform euler to quaternion in example scripts, i don't think it's good way to import extra unnecessary package

I totally agree with you, this repo should totally be renamed to quick-n-dirty :) As scipy is only used in examples to get top-down aligned orientation, I will replace it everywhere with the resulting [1.0, 0.0, 0.0, 0.0] quaternion and remove the unnecessary import.

gezp commented 3 years ago

Thanks for your reply! now I copy and modify a part of moveit2_py/moveit2.py for my project .I only need part functions and I can flexibly modify the code for my own needs, so i don't think my project need to depend on this package. But anyway, this repo is a good tutorial about how to use moveit2, thanks for your work!