Skip to content

Usaywook/putn

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 

Repository files navigation

PUTN

PUTN: A Plane-fitting based Uneven Terrain Navigation Framework.

PUTN is a plane-fitting based uneven terrain navigation framework, which allows UGV to traverse different kinds of unstructured and complex environments outdoors.

PUTN consists of three parts:

  • Global Planning Module (Implemented by PF-RRT*)
  • GPR Module
  • Local Planning Module (Implemented by NMPC)

Video Links: YouTube, bilibili (for Mainland China)

1. Related Paper

PUTN: A Plane-fitting based Uneven Terrain Navigation Framework, Zhuozhu Jian, Zihong Lu, Xiao Zhou, Bin Lan, Anxing Xiao, Xueqian Wang, Bin Liang (Accepted by IROS). arXiv Preprint .

2. Compilation

Requirements: Ubuntu 16.04, 18.04 with ros-desktop-full installation.

Step 1. Install A-LOAM. And this part can be replaced by other 3D SLAM algorithms.

Step 2. The following packages should be installed before PUTN is compiled.

sudo apt-get install ros-melodic-ompl
sudo apt-get install ros-melodic-robot-state-publisher*
sudo apt-get install ros-melodic-joint-state-controller*
sudo apt-get install ros-melodic-controller*
sudo apt-get install ros-melodic-velocity-controllers*
sudo apt-get install ros-melodic-eigen*
sudo apt-get install ros-melodic-velodyne*
pip install casadi

Step 3. Clone the repository and catkin_make.

mkdir -p putn_ws/src
cd putn_ws/src/
catkin_init_workspace
git clone https://github.com/jianzhuozhuTHU/putn.git
cd ..
rosdep install --from-paths src --ignore-src --rosdistro=melodic -y
catkin_make

The entire compilation process may take 5-10 minutes.

Step 4. Add permission to Python files.

cd putn_ws/src/putn/src/putn/putn_mpc/scripts
sudo chmod +x *

3. Application

3.1. Simulation

PUTN simulation is based on Gazebo. At present, two simulation scenarios are provided, namely mountain environment and pothole environment.

Run the following commands in the terminal to open the PUTN simulation environment and algorithm.

cd putn_ws
source devel/setup.bash
roslaunch putn_launch simulation.launch scene:="scenario name" 

The scenario name can be "map1" (default) or "map2". The movement of the robot can be freely switched to manual keyboard control mode and autonomous navigation mode in terminal window "controller.py":

Reading from the keyboard  and Publishing to Twist!
---------------------------
Moving around:
   q    w    e
   a    s    d
   z    x    c

i : switch to autonomous navigation mode

Before PUTN is working, you should:

  1. Use the keyboard to control the robot to the ground, until RRT tree generation
  2. Use "3D Goal" on the RVIZ interface to choose a goal point
  3. Press "i" to switch to autonomous navigation mode

then you can see the robot start to move towards the goal point.

PS. To get the best map building results, you should set the resolution of the point clouds generated by A-LOAM in advance. In our experiments, "mapping_line_resolution" and "mapping_plane_resolution" are set as 0.03 and 0.05 respectively

3.2. Real Scenarios

Scout 2.0, four-wheel-drive mobile robot is used for the experiment. The lidar sensor is OS0-128, and the computational hardware is Intel® NUC with an i5 2.4GHz CPU and 16GB memory. PUTN algorithm sends instructions to the robot in the form of ROS topic (geometry_msgs/Twist Message), and Scout 2.0 can be replaced by other four-wheel-drive mobile robots.

Step 1. Run robot chassis drive.

Step 2. Run lida drive.

Step 3. Run the following commands in the terminal to open the PUTN algorithm.

cd putn_ws
source devel/setup.bash
roslaunch putn_launch bringup.launch

4. Recommendation

In the process of algorithm running, the SLAM module and the planning module often occupy the resources of each other due to the limitation of computer performance. This may cause delay or lowering the frequency of TF. If this happens, it is recommended to run the SLAM module and the planning module on separate onboard computers.

Licence

The source code is released under GPLv3 license.

Maintaince

We are still working on extending the proposed system and improving code reliability.

For any technical issues, please contact Zhuozhu Jian ([email protected]) or Zihong Lu ([email protected]).

For commercial inquiries, please contact Zhuozhu Jian ([email protected]).

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Makefile 40.7%
  • C++ 29.2%
  • CMake 17.0%
  • Python 8.5%
  • C 2.8%
  • Shell 1.8%