To solve the autonomous navigation problem in complex environments, an efficient motion planning approach E3MoP is newly presented. Considering the challenges from large-scale, partially unknown complex environments, a three-layer motion planning framework is elaborately designed, including global path planning, local path optimization, and time-optimal velocity planning. Compared with existing approaches, the novelty of this work is twofold: 1) a novel heuristic-guided pruning strategy of motion primitives is proposed and fully integrated into the state lattice-based global path planner to further improve the computational efficiency of graph search, and 2) a new soft-constrained local path optimization approach is proposed, wherein the sparse-banded system structure of the underlying optimization problem is fully exploited to efficiently solve the problem.
Related Paper: Paper on IEEE
J. Wen, X. Zhang, H. Gao, J. Yuan and Y. Fang, "E3MoP: Efficient Motion Planning Based on Heuristic-Guided Motion Primitives Pruning and Path Optimization With Sparse-Banded Structure," in IEEE Transactions on Automation Science and Engineering, vol. 19, no. 4, pp. 2762-2775, Oct. 2022.
If it is useful to you, please cite our paper and ⭐️ our code.
- E3MoP has been tested on Ubuntu 20.04 with ROS Noetic, please run the following commands to install required dependencies:
$ sudo apt install ros-noetic-navigation ros-noetic-teb-local-planner
- Please install Ceres solver following the official installation tutorial.
Then simply clone and compile our package:
cd ${YOUR_WORKSPACE_PATH}/src
git clone [email protected]:NKU-MobFly-Robotics/p3dx.git
git clone [email protected]:NKU-MobFly-Robotics/E3MoP.git
cd ../
catkin_make
One possible solution to compile errors is to compile and install the following four packages in sequence:
- lattice_path_planner
- distance_map_layer
- path_smoother_base
- ceres_path_smoother
source devel/setup.bash & roslaunch move_base_benchmark benchmark.launch
Then, use rviz's 2D Nav Goal to set the navigation target point. If a red global path and a green local path appear as shown in the following figure, and the robot starts moving, it proves that it has been successfully started.
We sincerely appreciate the following open source projects: local_planning_benchmark, teb_local_planner, p3dx, Ceres_solver.