GithubHelp home page GithubHelp logo

avi9700 / autocarros Goto Github PK

View Code? Open in Web Editor NEW

This project forked from winstxnhdw/autocarros

0.0 0.0 0.0 132.47 MB

Development of a virtual simulation platform for autonomous vehicle sensing, mapping, control and behaviour methods using ROS and Gazebo.

Shell 2.24% Python 66.33% CMake 31.43%

autocarros's Introduction

AUTONOMOUS VEHICLE: CONTROL AND BEHAVIOUR

Ngee Ann Polytechnic Engineering Science Final Year Project with MooVita, 2020

Abstract

Warning: This repository has been archived indefinitely. I have no plans to continue maintaining this repository. I strongly encourage everyone to port their projects to ROS 2 and avoid Python 2.7 & ROS 1 like the plague. Please see AutoCarROS2 instead.

This project contains the stable variant of the fyp-moovita repository. A ROS 2 variant with additional functionality can also be found here. This project covers the development of a robust non-holonomic autonomous vehicle platform in a simulated environment using ROS and Gazebo 7.1. A sense-think-act cycle is implemented to navigate the virtual world, avoiding static and moving objects.

Table of Contents

Requirements

Hardware

Recommended its equivalent or higher:

  • Intel Core i7-8700 Desktop Processor
  • NVIDIA GeForce GTX 1080

Operating System

  1. Ubuntu 16.04.6 LTS (Xenial Xerus)

Software

  1. Desktop-Full ROS Kinetic

  2. Python 2.7

  3. Gazebo 7.16

  4. Git

  5. ackermann_msgs

Installation

  1. Install Ubuntu 16.04.6 LTS (Xenial Xerus)

  2. Git clone this repository

    • Open your terminal
    • Go to the directory you wish to clone the repository in
    • Type git clone https://github.com/winstxnhdw/AutoCarROS.git
  3. Change directory to your cloned path

    • Go to your terminal
    • Type cd <workspace>/src/fyp-moovita
  4. 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
  5. Install the required packages

    • Type chmod +x requirements.sh
    • Type sh requirements.sh

Quick Start

  1. Launch ngeeann_av.launch
    • Launch your terminal
    • Type catkin_make
    • Type roslaunch launches ngeeann_av.launch
  2. Execute tracker.py
    • Type rosrun ngeeann_av_nav tracker.py

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 point coordinates of a circle for Gazebo's world file. This is primarily used to create a circular road of a certain radius and smoothness. The radius of the circle is calculated from the centre of the circle to the middle of the road (using Gazebo's SDF tag).

Usage

  1. Download the circle_road_gen.py script if you have not cloned this repository

  2. Go to the script's directory

    • Open your terminal
    • Type cd scripts
  3. 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

circle_wp_gen.py

More information about cirlce_wp_gen.py can now be found within the WaypointGenerator repository.

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.

Renders

"Because the layman doesn't care unless it looks cool."

autocarros's People

Contributors

winstxnhdw avatar reuben-thomas avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.