# planning-and-control-for-center **Repository Path**: chenhengwei/planning-and-control-for-center ## Basic Information - **Project Name**: planning-and-control-for-center - **Description**: planning-and-control-for-center - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-02-10 - **Last Updated**: 2023-06-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # planning-and-control-for-center ## 前言:文件夹结构 1. 每一个文件夹包含一个能直接启动的程序(例如ros节点、python脚本),上传之前需要先进行测试,如果有多个launch文件,可以在文件夹根目录创建一个README.md文件 例如你所创建的文件夹为`Traditional_local_planner`,那就在`Traditional_local_planner`文件夹下新建一个README.md文件,写上各个launch文件的大致功能 ## 1. Pre-requisites - [OMPL](https://ompl.kavrakilab.org/installation.html) - ROS Navigation Stack ``` sudo apt install ros-noetic-joint-state-publisher-gui sudo apt install ros-noetic-ros-control sudo apt install ros-noetic-ros-controllers sudo apt install ros-noetic-gmapping sudo apt install ros-noetic-ackermann-msgs sudo apt install ros-noetic-navigation sudo apt install ros-noetic-teb-local-planner ``` - Build mumps ``` git clone https://github.com/coin-or-tools/ThirdParty-Mumps.git --depth=1 cd ThirdParty-Mumps ./get.Mumps ./configure make sudo make install ``` - Build and install IPOPT ``` sudo apt install wget unzip gfortran liblapack-dev patch pkg-config libmetis-dev wget https://github.com/coin-or/Ipopt/archive/refs/heads/stable/3.14.zip unzip 3.14.zip && cd Ipopt-stable-3.14/ ./configure && make -j4 sudo make install ``` - Build and install CASADi ``` wget https://github.com/casadi/casadi/releases/download/3.5.5/casadi-3.5.5-1.tar.gz tar -zxvf casadi-3.5.5-1.tar.gz cd casadi-3.5.5.1 mkdir build && cd build cmake .. -DWITH_IPOPT=ON -DWITH_EXAMPLES=OFF make -j4 sudo make install sudo ldconfig ``` - [Anaconda](https://www.anaconda.com/products/individual) - Build this project ``` mkdir -p ~/catkin_ws/src && cd ~/catkin_ws/src git clone https://gitee.com/chenhengwei/planning-and-control-for-center.git conda env create -f environment.yml conda activate ackermann_base cd ~/catkin_ws && catkin_make source ~/catkin_ws/devel/setup.bash ``` ## 2.How to use **Note: The robot can be controlled by keyboard (*wasd*)** ### Open-space Planner: Hybrid A* Planner + Pure Pursuit Controller Please launch the following nodes in seperate terminals. ``` roslaunch racebot_gazebo open_space.launch roslaunch hybrid_astar_planner try_hybrid_astar.launch roslaunch vehicle_controller try_pos_tracker.launch ``` ### Structured-road Planner: Dynamic Programming + Trajectory Optimization + PID Controller Please launch the following nodes in seperate terminals. ``` roslaunch racebot_gazebo structured_road.launch roslaunch cartesian_planner try_cartesian_planner.launch roslaunch vehicle_controller try_state_tracker.launch ``` ### ROS Navigation Stack - Mapping ``` roslaunch racebot_gazebo gmapping.launch rosrun map_server map_saver -f mymap ``` - Navigation ``` roslaunch racebot_gazebo navigation.launch ``` - Navigation & Mapping ``` roslaunch racebot_gazebo slam_navi.launch ``` ## 3.Reference - [Gazebo Simulation](https://blog.csdn.net/qq_48427527?type=blog) - [ROS Navigation Stack](http://wiki.ros.org/navigation) - [Hybrid A* Planner](https://github.com/dengpw/hybrid_astar_planner) - [Trajectory Optimization](https://github.com/libai1943/CartesianPlanner) - [Pure Pursuit Controller](https://thomasfermi.github.io/Algorithms-for-Automated-Driving/Control/PurePursuit.html)