Git Product home page Git Product logo

f110-osu-grandprix-2023's Introduction

f1ten-competition codebase

Collection of ROS packages developed for autonomous racing competition F1/10th Grand Prix.

ROS Packages

This codebase contains following ROS packages developed for autonomous racing competition in 2023.

  1. System:

    a. Serial: A serial library to handle communication with hardware. Link for detailed documentation: https://github.com/wjwwood/serial

    b. URG Node: ROS wrapper for the Hokuyo urg_c library. Link to repository: https://github.com/ros-drivers/urg_node

    c. Racecar: Brings up the car by launching all the necessary nodes. Contains multiplexer for input commands which is used to decide priorities of the inputs coming from different sources. Forked from: https://github.com/mit-racecar/racecar

  2. Localization and Mapping:

    a. Particle filter: Python implementation of particle filter modified and tuned for the F110 platform. The implementation uses RangeLibc for accelerated ray casting. Orinal implementation of range_libc can be found at: https://github.com/kctess5/range_libc

    b. LaserScanMatcher and SLAM Gmapping: Used off-the-shelf not included in the repository.

  3. PP variants:

    This package contains implementation of variants of Pure Pursuit (PP) implementation, Automatic emergency breaking, behavior state machine and dynamic obstacle avoidance.

    a. Automatic Emergency breaking:

    Calculates TTC(Time to collision) using lidar data and applies brakes when a certain threshold is met.

    b. Pure Pursuit:

    Pure pursuit variants include fixed horizon and dynamic planning horizon methods. Dynamic horizon variants reduce turning and improve total lap time.

    c. Obstacle avoidance:

    During race-line optimization, two fallback trajectories are generated to fallback to if the optimal race-line is blocked by an obstacle. The IsCentreFree method continuously checks for centre trajectory status using a safety radius parameter. We provide two nodes:

     i. Static obstacle avoidance
    
     ii. Dynamic obstacle avoidance
    

    d. Behavior state machine:

    This module is integrated in obstacle avoidance module. The car needs to decide whether to overtake the car in the front or to follow it and wait for good overtaking window. We decide the overtaking based on track curvature. If the track is straight then the car will always attempt to overtake. On curved track, we decide based on estimated speed of the car in front.

Static obstacle avoidance

Dynamic obstacle avoidance

  1. Trajectory_gen

    This is a set of python scripts used for optimal raceline generation. The image below shows a preview of step 1 of the trajectory generation.

    Trajectory generation step 1

    We use delaunay triangulation to identify track borders and then classify them into left and right side points with respect to the base link frame. Left and right side points are then associated with each other and the track is discretized into a list of segments. These are further optimized using helpers library from https://github.com/TUMFTM/trajectory_planning_helpers.

  2. Assignment

    This set of scripts contains implementations of simple yet powerful reactive algorithms such as wall following, gap following etc. It also includes a C++ implementation of RRT (Vanilla).

Dependencies

Required:

Usage

Remember to source the setup.bash file in the local workspace

echo "source /opt/ros/ROSDISTRO/setup.bash" >> ~/.bashrc

Clone the repository in the src folder

$ tree

ws_ros
├── build
├── install
├── log
└── src
    └── F110_GRANDPRIX_2023
        ├── src
        └── README.md

Build the workspace

cd ros_ws
catkin_make
source devel/setup.bash

Launch nodes

For mapping offline with a rosbag:

roslaunch racing_core mapping_offline.launch
rosrun map_saver map_saver

For online mapping (SLAM)

roslaunch racing_core mapping_online.launch
rosrun map_saver map_saver

For racing with behavior tree (Overtaking & obstacle avoidance)

roslaunch racing_core full_state_runner.launch

f110-osu-grandprix-2023's People

Contributors

patilunmesh avatar

Stargazers

 avatar

Watchers

Nicole Fronda avatar  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.