fyp-moovita
fyp-moovita copied to clipboard
Development of a virtual simulation platform for autonomous vehicle sensing, mapping, control and behaviour methods using ROS and Gazebo.
AUTONOMOUS VEHICLE: CONTROL AND BEHAVIOUR
Ngee Ann Polytechnic Engineering Science Final Year Project with MooVita, 2020
Abstract
This project covers the development of a robust non-holonomic autonomous vehicle platform in a simulated environment using ROS and Gazebo. A sense-think-act cycle is implemented to navigate the virtual world, avoiding static and moving objects. This repository is deprecated and may no longer work. The maintained variant can be found in the AutoCarROS repository. A ROS 2 variant can also be found here.
Table of Contents
- Abstract
-
Requirements
- Operating System
- Software
- Installation
- Quick Start
-
Scripts
-
circle_road_gen.py
- Description
- Usage
-
circle_wp_gen.py
- Description
- Point mode
- Angle mode
- Usage
-
circle_road_gen.py
-
Launch Files
- ackermann_vehicle.launch
- ackermann_controller.launch
- Renders
Requirements
Hardware
Recommended its equivalent or higher:
- Intel Core i7-8700 Desktop Processor
- NVIDIA GeForce GTX 1080
Operating System
Software
-
- fake_localization
- joint_state_publisher
- joint_state_publisher_gui
- ros_controller
Installation
-
Git clone this repository
- Open your terminal
- Go to the directory you wish to clone the repository in
- Type
git clone https://github.com/reuben-thomas/fyp-moovita.git
-
Change directory to your cloned path
- Go to your terminal
- Type
cd <workspace>/src/fyp-moovita
-
Install Desktop-Full ROS Kinetic
- Type
chmod +x ros-kinetic-desktop-full-install.sh
- Type
sh ros-kinetic-desktop-full-install.sh
to install Desktop-Full ROS Kinetic
- Type
-
Install the required packages
- Type
chmod +x requirements.sh
- Type
sh requirements.sh
- Type
Quick Start
- Launch ngeeann_av.launch
- Launch your terminal
- Type
catkin_make
- Type
roslaunch launches ngeeann_av.launch
- Execute tracker.py
- Type
rosrun ngeeann_av_nav tracker.py
- Type
Scripts
circle_road_gen.py
Description
circle_road_gen.py is a custom script which uses the NumPy library to calculate and generate the three-dimensional
Usage
-
Download the circle_road_gen.py script if you have not cloned this repository
-
Go to the script's directory
- Open your terminal
- Type
cd scripts
-
Run the script
- Type
python circle_road_gen.py
- Input your desired radius in metres
- Input your desired smoothness in degrees (lower value is smoother)
- Copy and paste result into your world file
- Type
circle_wp_gen.py
Description
circle_wp_gen.py is a custom script which uses the NumPy and pandas library to calculate and generate a csv file that contains the two-dimensional coordinates; x-axis and y-axis in their respective columns. This is primarily used to generate waypoints on a circular road of a certain radius and smoothness. The user is given two different smoothness modes; Point mode and Angle mode. The radius of the circle is calculated from the centre of gazebo world.
Point mode
The user is able to choose how many waypoints to generate, and the smoothness of the circular waypoint is based on how many points the user has set. More points means a smoother waypoint
Angle mode
The user is unable to choose how many waypoints to generate, and the smoothness of the circular waypoint is based on the degree value the user has set. Lower value means a smoother waypoint.
Usage
-
Download the circle_wp_gen.py script if you have not cloned this repository.
-
Go to the script's directory
- Open your terminal
- Type
cd scripts
-
Run the script
- Type
python circle_wp_gen.py
- Choose your desired smoothness mode
- Input your desired radius in metres
- Input your desired smoothness in number of points (if you chose Point mode) or degrees (if you chose Angle mode)
- Type
Launch Files
Launch File | Launches | Purpose |
---|---|---|
gazebo.launch | gazebo, no world, ngeeann_av | For debugging |
road.launch | gazebo, road.world, ngeeann_av | Foundational launch file for future launch files |
display.launch | rviz, ngeeann_av | Foundational launch file for future launch files |
controller.launch | axle controllers, steer controllers | Foundational launch file for future launch files |
ackermann_vehicle.launch
Launches the populated_road.world file into Gazebo and spawns the ngeeann_av onto a populated road world. It also launches ackermann_controller.launch, RViz, the controller spawner and ackermann controller. If your Gazebo does not start, this is because you do not have the required Gazebo models in your models folder. To fix this, you may change the ackermann_vehicle.launch parameters to launch the unpopulated road variant, road.launch.
ackerman_controller.launch
Launches nodes used by both RViz and Gazebo when visualizing a vehicle with Ackermann steering.