Internship doubt: To use Moveit2 official C++ API or to use unofficial python API

Hello everyone,

I am currently making design choices for my internship project. I’ll be using a ROS1 compatible robot arm, probably a Yaskawa GP7 or similar yaskawa model. Doing now the ROS2 Manipulation basics course I encounter the following doubt regarding system choices.

Keep in mind that I have mostly experience with python and I am having difficulties figuring out the code in the manipulation course (which is in cpp). I can get to learn it but it implies more studying time. Also my company uses python in general and I intended to keep the project 100% python, I ignore if mixing py and cpp represents an extra complexity. That being said, should I …

  1. Use the official C++ API of Moveit2?
  2. Use the unofficial python API?
  3. Not use Moveit2 nor ROS2 in general. Keep it ROS1 where I can use an official python API

Any opinion is much appreciated so if you are informed about the topic please share your knowledge and experience!

Hi @GasPatxo ,

I am just wondering, Is there another option that you would consider if a Python API is available for an earlier version? Maybe that could help you keep all things “python-only” and later have room for migration to stable official versions when they are released?

1 Like

Hi @girishkumar.kannan. It is very unclear from my post, but that’s what I meant by using ROS1 (I modified the post so that it is more clear). Indeed Moveit(1) has a python API for the move group. But I do not know if I can use Moveit(1) with ROS2 Humble :woman_shrugging:t4: .

I also ignore if I can even use the Yaskawa arms with Moveit2 (Yaskawa’s repo says that the packages are made for ROS-industrial). At that point I can still run in ROS1 and bridge the interfaces to ROS2, but I don’t know if that is better than just straight up exclusively using ROS1.

Also, the Moveit2 github page says in its roadmap that the official python API should be released in November according to MoveIt Roadmap | MoveIt. I don’t know the current progress on the issue → GSoC: Create Python bindings for MoveIt 2 · Issue #1279 · ros-planning/moveit2 · GitHub.

Hi @GasPatxo ,

I believe you could, if you use parameter_bridge from ROS1 to ROS2 - but that would make your project hybrid with ROS 1 and 2.

I think this would factor in “your convenience”. Are you good with ROS2 than ROS1? Do you feel ROS2 is easier than ROS1? I however feel a trade-off between tedious structuring of code and control over code.

Hmm… given this fact, I am assuming that even after the release, there would still be some bugfixes needed. So immediate use of the library/package may not be viable.

My opinion: I would go Hybrid. Keep ROS1-only parts to ROS1 and use ROS2 for parts where ROS1 is not strictly needed. But since you are doing an internship, I would rather go with what is comfortable with your team also, alongside my opinion or other opinions what you might get for this post from others.

Regards,
Girish

1 Like

This topic was automatically closed after 3 days. New replies are no longer allowed.