This is a ROS2 package that is mainly used for benchmarking. The package is the basic version which is used to compare different motion planning algorithms in different conditions. There are 15 test cases in total, and are tested under three scenarious: no obstacle(simplest case), with a single obstacle, and narrow space(a common case for robotics benchmarking). The comparison is accomplished for 5 planner architectures: OMPL(open library for basic sampling based motion planning algorithms), CHOMP, STOMP, OMPL+CHOMP(OMPL as pre-planner and CHOMP as post-optimizer), OMPL+STOMP. There are three important criterias for this benchmarking. The first one is time-consumption for generating plan, the second one is the metric of smoothness(calculated by finding the maximum difference between two adjacent discretized points of a trajectory), and the last one is whether the planning is successful or not. The time consumption and smoothness are shown as a marker above the robotic arm, and whether the planning is successful is noted in terminal. The trajectory of the end-effector is also shown in RViz.
- Provide basic benchmarking for general motion planning algorithms
- Can be easily extend for further use
- Constraints would be added
The following are the specific testcases in this package. The index of the testcase can be passed as a ROS argument to directly control which testcase to use, as shown below.
- Test case 1: OMPL + no obstacle
- Test case 2: CHOMP + no obstacle
- Test case 3: STOMP + no obstacle
- Test case 4: OMPL+CHOMP + no obstacle
- Test case 5: OMPL+STOMP + no obstacle
- Test case 6: OMPL + single obstacle
- Test case 7: CHOMP + single obstacle
- Test case 8: STOMP + single obstacle
- Test case 9: OMPL+CHOMP + single obstacle
- Test case 10: OMPL+STOMP + single obstacle
- Test case 11: OMPL + narrow space
- Test case 12: CHOMP + narrow space
- Test case 13: STOMP + narrow space
- Test case 14: OMPL+CHOMP + narrow space
- Test case 15: OMPL+STOMP + narrow space
This ROS2 package is mainly used to interact with RViz based on MoveIT 2. So to use this package, the moveit2 package and tutorials should already be installed and built.
- Move into the src folder of workspace for moveit2, which is normally named as ws_moveit2
cd ~/ws_moveit2/src
- Clone the code into this folder and name it, for example hello_moveit
git clone https://github.com/Jubo-Xu/Benchmarking-based-on-MoveIT2.git
- Back to the workspace
cd ..
- source the workspace and using colcon to build the whole project
source /opt/ros/humble/setup.bash
colcon build --mixin debug
- open another terminal, source it, and launch the RViz first
ros2 launch moveit2_tutorials demo.launch.py
- uncheck the MotionPlanning box in RViz
- Add a new panel from Panels on the top of RViz
- Add a new marker array by clicking the Add button below
- Change the topic of markerarray to /rviz_visual_tools
- open a new terminal, source it, and run the package, the last argument is the test case to be tested
ros2 run hello_moveit hello_moveit --ros-args -r __node:=hello_moveit -- <testcase>
- Follow the instruction on the terminal to generate the plan and execute it by cliking Next button at the bottom left corner in RViz