SMACC demonstrates concurrent control of two arms in ROS 2 using MoveIt2 and ros2_control

Hi Everyone,
I had hoped to have this ready by the TSC meeting today, but we didn’t quite make it. But anyway, here it is…

Many thanks to @AndyZe, @bmagyar, & @tylerweaver who helped us get started in the right direction and agreed to back us up if we ran into deep waters.

I’d also like to take this opportunity to say that it was an honor and a privilege to serve as a community representative this last year. I was very fortunate to have the pleasure of speaking with many distinguished voices in the ROS community and I very much appreciate the time, information and advice I received along the way.

I’d like to congratulate my successor @fmrico, who I’m quite confident will do a much better job than I ever could;) and I’m excited to see what the future holds in store for ROS and OSRF given today’s big news.

Cheers,

13 Likes

This looks great. Is there a link to the source code?

Hi @ARob , I think this is the link. :grinning:

Wow, this is amazing! Great work. :clap:

1 Like

Thanks @sampreets3, but typically a SMACC demo will have a link to the actual source code for the demo in the SMACC sm_reference_library folder. This is what I’m looking for.

@brettpac is this link publicly available yet?

1 Like

The main interest and novelty of this base example is that each arm is controlled by its own Controller Manager (ros2_control) and move_group (moveit2) node in different namespaces.

This is different from previous approaches where a single move_group node could control multiple robotic manipulators, but not perform tasks concurrently.

To the best of my knowledge, this is the first time this has been achieved. At least, prior to this pull request on the moveit2 repository: reading namespace from parameter by pabloinigoblasco · Pull Request #1833 · ros-planning/moveit2 · GitHub (which is still pending acceptance in the main branch)

The specific example code is here:

To reproduce it anyone can us this PR:

These are the versions we used to make it work:

You should be able to reproduce it via docker without suffering too much with repositories and version configuration:
docker/build_docker_humble.sh

Thank you @Pablo_Inigo_Blasco . This is exactly what I was looking for and I was able to reproduce the example using the provided docker container, which was very nice.

This seems to be different than previous examples that were only found in the smacc_reference_library folder. Is the plan for future examples to be distributed this way?