diff --git a/_posts/2020-06-09-moveit2-robotic-application.md b/_posts/2020-06-09-moveit2-robotic-application.md index 47227bda6..40ca9bff1 100644 --- a/_posts/2020-06-09-moveit2-robotic-application.md +++ b/_posts/2020-06-09-moveit2-robotic-application.md @@ -19,7 +19,7 @@ The Motion Planning Framework for ROS known as [MoveIt](/) has been successfully My ROS2 setup involved building the MoveIt2 repository from source as described in github and then overlaying that colcon workspace on top of my existing CRS application workspace. I also built and ran the simple demo which worked right out of the gate and was very helpful in helping me understand how to integrate MoveIt2 into my own application. -The C++ integration was very straight forward and only needed the use of two new classes, MoveItCpp and PlanningComponent. In this architecture, MoveItCpp is used to load the robot model, configure the planning pipeline from ROS2 parameters and initialize defaults; then there's the PlanningComponent class which is associated to a planning group and is used to setup the motion plan request and call the low level planner. Furthermore, the PlanningComponent class has a similar interface to the familiar MoveGroupInterface class from MoveIt; however one of the big changes here is that the methods in the PlanningComponent class aren't just wrappers to various services and actions provided by the [move_group](/documentation/concepts/) node but they instead make direct function calls to the various motion planning capabilities. I think this is a welcomed changed since this architecture will allow creating MoveIt2 planning configuration on the fly that can adapt to varying planning situations that may arise in an application. +The C++ integration was very straight forward and only needed the use of two new classes, MoveItCpp and PlanningComponent. In this architecture, MoveItCpp is used to load the robot model, configure the planning pipeline from ROS2 parameters and initialize defaults; then there's the PlanningComponent class which is associated to a planning group and is used to setup the motion plan request and call the low level planner. Furthermore, the PlanningComponent class has a similar interface to the familiar MoveGroupInterface class from MoveIt; however one of the big changes here is that the methods in the PlanningComponent class aren't just wrappers to various services and actions provided by the [move_group](/documentation/concepts/) node but they instead make direct function calls to the various motion planning capabilities. I think this is a welcomed changed since this architecture will allow creating MoveIt2 planning configuration on the fly that can adapt to varying planning situations that may arise in an application. On the other hand, the launch/yaml integration wasn't as clean as many ROS2 concepts are still relatively new to me. In order to properly configure MoveIt2, it is necessary to load a URDF file as well as a number of parameters residing in several yaml files into your MoveIt2 application. Fortunately, most of the yaml files generated by the MoveIt Setup Assistant from the original MoveIt can be used with just minor modifications and so I ran the Setup Assistant in ROS1 and generated the needed config files. Furthermore, the ability to assemble ROS2 launch files in python really came in handy here as it allowed me to instantiate a python dictionary from a YAML file and pass its elements as parameters for my ROS2 application. Beyond learning about MoveIt2, going through this exercise showed me how to reuse the same yaml file for initializing parameters in different applications which I thought was a feature that was no longer available in ROS2. diff --git a/install-moveit2/binary/index.markdown b/install-moveit2/binary/index.markdown index bfe549012..bd1944cf8 100644 --- a/install-moveit2/binary/index.markdown +++ b/install-moveit2/binary/index.markdown @@ -155,6 +155,16 @@ title: MoveIt 2 Binary Install sudo apt install ros-humble-moveit
+

+ Middleware +

+

+ We recommend CycloneDDS as a middleware. Note: this makes all nodes started using this RMW incompatible with any other nodes not using Cyclone DDS. + sudo apt install ros-$ROS_DISTRO-rmw-cyclonedds-cpp + export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp + You may want to add `export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp` to your ~/.bashrc to source it automatically. +

+

Quick Start

@@ -189,6 +199,16 @@ title: MoveIt 2 Binary Install
+

+ Middleware +

+

+ We recommend CycloneDDS as a middleware. Note: this makes all nodes started using this RMW incompatible with any other nodes not using Cyclone DDS. + sudo apt install ros-$ROS_DISTRO-rmw-cyclonedds-cpp + export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp + You may want to add `export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp` to your ~/.bashrc to source it automatically. +

+

Quick Start

diff --git a/install-moveit2/source/index.markdown b/install-moveit2/source/index.markdown index 6843e58ad..982817527 100644 --- a/install-moveit2/source/index.markdown +++ b/install-moveit2/source/index.markdown @@ -91,6 +91,14 @@ Download the repository and install any dependencies. Issue the relevant command for repo in moveit2/moveit2.repos $(f="moveit2/moveit2_$ROS_DISTRO.repos"; test -r $f && echo $f); do vcs import < "$repo"; done rosdep install -r --from-paths . --ignore-src --rosdistro $ROS_DISTRO -y +## Middleware + +We recommend CycloneDDS as a middleware. Note: this makes all nodes started using this RMW incompatible with any other nodes not using Cyclone DDS. + + sudo apt install ros-$ROS_DISTRO-rmw-cyclonedds-cpp + export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp + +You may want to add `export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp` to your ~/.bashrc to source it automatically. ## Build MoveIt