Table of Contents
Welcome to the ROS-MATLAB project on Rough Terrain Navigation! In this project, we demonstrate how to achieve robust and efficient navigation for mobile robots in challenging terrains using MATLAB toolboxes and co-simulation with Gazebo. Navigating rough terrains is challenging due to uneven surfaces and obstacles. Autonomous systems use advanced algorithms and sensor data to adapt, plan optimised routes, and avoid hazards, making rough terrain navigation easier and more efficient. Jackal, TurtleBot, and Curiosity Mars Rover are the bots utilised for testing. Among them, the Jackal bot exhibited the best results.
Contributors :
Our experimentation involved utilizing three distinct robots, each deployed in different environments, to thoroughly test the effectiveness of our algorithms. Each robot was equipped with specific sensors, enabling them to navigate and interact with their respective environments efficiently. Below, we provide a description of each robot, along with the sensors they were equipped with:
-
JACKAL:
- Environment: Office World, Inspection World
- Sensors:
- Sick LMS1xx - 2D Laser Scanner
- Velodyne VLP-16 - 3D Laser Scanner
- Hokuyo UST-10 lidar - front accessory fender
- NovAtel satellite navigation receiver
- Pointgrey Flea3 camera
- Pointgrey Bumblebee2 camera
- realsense2_camera
-
Curiosity Mars Rover:
- Environment: Rough Mars terrain world, Flat Shapes world
- Sensors:
- Mast Camera
- RearHaz Camera
- FrontHaz Camera
- Nav Camera
- IMU
-
Turtlebot3 Waffle:
- Environment: office world, turtlebot3_world
- Sensors:
- 360 LiDAR
By using a diverse set of robots and environments, we aimed to thoroughly assess the capabilities and limitations of our algorithms, ensuring robustness and adaptability in real-world scenarios. The data collected from these experiments provided valuable insights and helped us refine and optimize our algorithms for better performance and broader applicability.
For optimal performance, we recommend using two separate systems: one with a Linux OS for installing ROS1 and Gazebo for robotics aspects, and another with Windows OS for MATLAB and its toolboxes. Running all these resource-intensive software on one system may lead to performance issues.
Please refer to the detailed installation instructions provided in the the README files of each folder of our repository to install all the required dependencies and softwares. Follow the instructions carefully to set up each component accordingly.
- Setup the required bot by following the steps in the respective directory.
- Mount the required sensors on the bot. eg
export JACKAL_URDF_EXTRAS=$HOME/Desktop/realsense.urdf.xacro
- Launch the required world file and the gmapping algorithm. eg -
roslaunch cpr_inspection_gazebo inspection_world.launch
roslaunch jackal_viz view_robot.launch
roslaunch jackal_navigation gmapping_demo.launch
The following commands launches the world file, RVIZ and the gmapping algorithm required for the simulation and mapping
- Create and download the .pgm file of the map of the world. eg -
rosrun map_server map_saver
- Open Matlab Scripts and establish the connection between the two systems to set up co-simulation.
- Run the .mlx files in order according to the readme file of MATLAB Scripts to view the results
jackal_gazebo.mp4
demo_jackalmatalb.mp4
- Implemented and tested various global path planners like RRT, RRT*, A* and Hybrid A*.
- Added sensors to the bot and received data from ROS using matlab toolboxes.
- Created map using sensor data.
- Implemented AMCL using matlab scripting.
- WayPoint Navigation using Simulink Model.
- Visualisation of pointcloud2 data from Velodyne LiDAR.
- Implementing dynamic obstacle avoidance.
- Enhance mapping of rough terrain by Triangular Mesh Map.
- Changing the existing Pure Pursuit Controller with a Model Predictive Controller.
- Exploring Toolboxes like Parallel Computing and LIDAR.
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
- MarsSim: A High-Fidelity Physical and Visual Simulation for Mars Rovers
- OctoMap: An Efficient Probabilistic 3D Mapping Framework Based on Octrees
- Indoor mapping using gmapping on embedded system
- Path planning using Matlab-ROS integration applied to mobile robots
- Efficient Exploration Algorithms for Rough Terrain Modeling Using Triangular Mesh Maps
- Model Predictive Control Design: New Trends and Tools