Code Monkey home page Code Monkey logo

autonomous's Introduction

Autonomous

About Formula SAE and the Autonomous Competition

Formula SAE (FSAE) is a student design competition organized by SAE International (previously known as the Society of Automotive Engineers). In this competition, student teams from universities around the world design, build, and test small, formula-style race cars. The cars are then judged based on a variety of criteria including design, cost, presentation, and on-track performance in dynamic events.

In recent years, an Autonomous competition has been introduced to the FSAE suite of events. In this competition, teams must develop and integrate autonomous systems into their vehicles. The goal is to have the car navigate around a track without any human intervention, using a combination of onboard sensors, processing power, and control systems to perceive the environment, make decisions, and control the vehicle. This challenge provides an opportunity for students to develop skills in areas such as machine learning, computer vision, sensor fusion, control systems, and robotics, all within a highly competitive and practical context.

We are proud to participate in this challenging and innovative competition. We are committed to pushing the boundaries of autonomous vehicle technology and fostering the next generation of engineers. Through this GitHub repository, you can explore our work and contribute to the advancement of autonomous driving technologies.

Documentation

For detailed documentation about this project, please visit the Wiki tab on this GitHub repository. Here you'll find comprehensive guides, explanations, and resources to help you understand and navigate the project. Don't hesitate to explore the Wiki and utilize it as a valuable resource throughout your development process.

Dev Environment

Prerequisites

Local Dev Environment - First Time Setup

  1. Clone repo using git clone https://github.com/UOA-FSAE/autonomous.git.
  2. cd into repo.
  3. Run make build (Use Git Bash if on Windows).
  4. In VS Code under the Ctrl+Shift+P menu, run Dev Containers: Rebuild and Reopen in Container or run make start. Or if prompted, click reopen in container from popup.

Local Dev Environment - Normal Usage

Method 1:

  • Go to Remote Explorer.
  • Click icon next to autonomous devcontainer (open folder in container).

Method 2:

  • In VS Code under the Ctrl+Shift+P menu, run Dev Containers: Rebuild and Reopen in Container (with repo open in vscode).

Codespaces Dev Environment

  • Go to Remote Explorer.
  • Change to GitHub Codespaces tab.
  • Click connect to codespace icon next to desired codespace.

Ros2

Running commands: ros2 <command>

autonomous's People

Contributors

csprono avatar dngusaud avatar dyu056 avatar dyu056-fsae avatar jack17432 avatar zane-larking avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

autonomous's Issues

[✨FEAT✨]: Add chore template

Is there an existing enhancement request for this?

  • I have searched the existing feature requests

Description

Add a chore template on issues since there are alot of small things that arnt full featcurs that need doing.

Additional Information

Can litterly be a copy past of the FEAT issue template just with the name changed :)

[✨FEAT✨]: Build and run scripts

Is there an existing enhancement request for this?

  • I have searched the existing feature requests

Description

A script to build the docker container or run the docker container.

Additional Information

Could use a Makefile to make it more simple to detect what system the commands are being run on.

[✨FEAT✨]: Msg and Srv interfaces

Is there an existing enhancement request for this?

  • I have searched the existing feature requests

Description

Create a package that contains all of the custom ros2 Msg and Srv that the ws uses

Additional Information

List of Msg interfaces

  • CAN

List of Srv interfaces

  • CAN

[✨FEAT✨]: Pure Pursuit Control

Is there an existing enhancement request for this?

  • I have searched the existing feature requests

Description

Implement a Pure Pursuit control algorithm to follow the path created by the Planning Node.

Additional Information

No response

[✨FEAT✨]: Workflows, tests, and devcontainers

Is there an existing enhancement request for this?

  • I have searched the existing feature requests

Description

Create GitHub workflows so that there can be automatic testing for pull requests as well as set up devcontainers so that anyone can just spin up a code space and work on it.

Additional Information

For the dev container it needs to be able to setup the full workspace inside of a GitHub code space and repoduce the full env in anylocation.

Workflow to test each component before it is commeted to the main branch to make sure nothing important breaks.

[✨FEAT✨]: CAN interface node

Is there an existing enhancement request for this?

  • I have searched the existing feature requests

Description

A node that reads the CAN bus and out puts all the raw can messages to a topic and is also a service to publish things to the CAN bus.

Additional Information

Just communicates the raw can messages and dose not care what things are or knows what things are.

[✨FEAT✨]: Event Controller Nodes

Is there an existing enhancement request for this?

  • I have searched the existing feature requests

Description

Each competition event will have a mission controller node to determine the progression of the car in the particular event.

Additional Information

No response

[✨FEAT✨]: Create remaining packages

Is there an existing enhancement request for this?

  • I have searched the existing feature requests

Description

Edit repo structure to include all the packages needed.
e.g. moa_drivers, moa_launch, etc

Additional Information

No response

[✨FEAT✨]: Github workflow for conferming it can build

Is there an existing enhancement request for this?

  • I have searched the existing feature requests

Description

Create a workflow that will rosdep install and colcon build the program and if it dost it wont let you merge

Additional Information

No response

[🐛BUG🐛]: Using quaternion instead of single rotation angle

Is there an existing issue for this?

  • I have searched the existing issues

Description of the bug

The previous implementation of the cone map and cone detection use single axis rotation. The new one should include general rotation

Steps To Reproduce

No need to reproduce.

Code implemented:

  • In cone detection
  • In cone map
  • In simulation cone detection node

[✨FEAT✨]: Create all moa packages

Is there an existing enhancement request for this?

  • I have searched the existing feature requests

Description

bringup,
description
driver

Additional Information

No response

[✨FEAT✨]: Path planning

Is there an existing enhancement request for this?

  • I have searched the existing feature requests

Description

Implement optimisation based path planning for a fixed time horizon.

Additional Information

No response

[🐛BUG🐛]: Docker Compose relative pathing on Nvidia jetson issue

Is there an existing issue for this?

  • I have searched the existing issues

Description of the bug

The Jetson Nano doesn't run docker with the current GPU compose file.

Additionally Python3-pip was not automatically installed using the compose command and had to be installed manually onto the jetson nano.

Steps To Reproduce

running the following on the Jetson Nano:
Sudo docker compose -f docker-compose.GPU.yml up -d

Resulted in:
failed to solve: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount3359892855/ros2_ws.Dockerfile: no such file or directory

[✨FEAT✨]: Cone mapping

Is there an existing enhancement request for this?

  • I have searched the existing feature requests

Description

Map of all cones detected

Additional Information

No response

[✨FEAT✨]: CAN message decoder

Is there an existing enhancement request for this?

  • I have searched the existing feature requests

Description

Read raw can messages and parses them into what we want

Additional Information

No response

[✨FEAT✨]: Autonomous system status node

Is there an existing enhancement request for this?

  • I have searched the existing feature requests

Description

A node that performs checks and provides a status indication based off the checks.

Use figure 17 from T14 2023 FSG rulebook

Additional Information

No response

[✨FEAT✨]: Add support for Computers without gpu

Is there an existing enhancement request for this?

  • I have searched the existing feature requests

Description

make a new profile that doesn't need nividia graphics card

Additional Information

No response

[✨FEAT✨]: Cone detection

Is there an existing enhancement request for this?

  • I have searched the existing feature requests

Description

Create a system to see cones

Additional Information

No response

[✨FEAT✨]: Default launch to bring up telem and basic hardware interfaces

Is there an existing enhancement request for this?

  • I have searched the existing feature requests

Description

Should create a launch file in moa_bringup that starts all the basic things that is needed to interface with the car.

Additional Information

The basic things that it needs to bring up are along the lines of CAN driver, CAN reader, FOXGlove bridge for telem, and idk what ever else needs to start when the car starts every time.

[✨FEAT✨]: Create a simulation

Is there an existing enhancement request for this?

  • I have searched the existing feature requests

Description

Start work on the simulation

Additional Information

No response

[✨FEAT✨]: README and onboarding setup guide

Is there an existing enhancement request for this?

  • I have searched the existing feature requests

Description

Fill out the README.md file with info and how to setup the environment to start coding

Additional Information

No response

[✨FEAT✨]: Create a basic urdf description for the moa

Is there an existing enhancement request for this?

  • I have searched the existing feature requests

Description

This basicly just needs to be a box of the dimentions of the moa so that we can know if the car is going to hit somthing or not. If you want you can make it as in depth as you want or make a mesh for it so that we can nicely visualise the car.

Additional Information

No response

[✨FEAT✨]: Scrutineering Mission

Is there an existing enhancement request for this?

  • I have searched the existing feature requests

Description

Node that spins steering
spins up wheels
brakes wheels
launch file (scrutineering_basic_launch.py) - moa bringup (should start launch file in scrutineering package)

  • call scurtineering launch file in packafe
  • call base launch
    base launch file
  • bring up can node and Ackermann to CAN

Should be in Plan and act package group
call package scrutineering
folder then package in folder

Additional Information

No response

[✨FEAT✨]: Heart beat node

Is there an existing enhancement request for this?

  • I have searched the existing feature requests

Description

This node is a simple node that publish a can msg on a set frequency so that if the computer crashes or disconects the motec knows and shuts down.

Additional Information

No response

[✨FEAT✨]: Adjust docker compose and adjust docker image

Is there an existing enhancement request for this?

  • I have searched the existing feature requests

Description

Changes to docker compose

  • Exposed foxbridge port (probably 4747)
  • Remove the need to connect x11 volumes
  • Add privledged mode so that the can driver can access hardware

Changes to docker container

  • Add requirements.txt and install python files

Additional Information

No response

[✨FEAT✨]: Efficient coneMap.msg data structure

Is there an existing enhancement request for this?

  • I have searched the existing feature requests

Description

The simulation shows that the current cone map node and path planning node can not catchup the speed of the car after there are large number of cones recorded in the ConeMap message we are using for path planning and localization. Currently it is O(nlog(n)) complex to order the cones from the coneMap msg. It is desired that the trajectory planning node is just able to grab a sub set of the pre sorted cones in constant time.
Please produce a improved data collection to store cones in an array format and provide functions for building, appending and moving cones within that structure. Change the coneMap message appropriately if applicable.
The structure is to be used by the Trajectory Planning node the Cone Mapping node is responsible for creating and manipulating the data structure.

Additional Information

No response

[✨FEAT✨]: Track drive controler

Is there an existing enhancement request for this?

  • I have searched the existing feature requests

Description

Create a node that controles the other nodes durring trackdrive

Additional Information

No response

[✨FEAT✨]: Occupancy Grid

Is there an existing enhancement request for this?

  • I have searched the existing feature requests

Description

Implement environment mapping using occupancy grids that account for car's body width.

Additional Information

No response

[✨FEAT✨]: localisation

Is there an existing enhancement request for this?

  • I have searched the existing feature requests

Description

Slam algo

Additional Information

No response

Issue templates

Set up issue templates so that I don't have to keep writing out this whole thing.

[✨FEAT✨]: Ackerman to MoTec node

Is there an existing enhancement request for this?

  • I have searched the existing feature requests

Description

Take ackermann as input and and outputs a CAN service message.

Additional Information

topic/cmd_val that has stamped ackermann msg

then process info and send msg to CAN interface node with CAN service

This is safety critical (need way of knowing if unable to send msg/crash etc.)

[🐛BUG🐛]: moa_controles have a python package as depended

Is there an existing issue for this?

  • I have searched the existing issues

Description of the bug

In each package there is the package.xml file where you declear all the ROS packages that your package depends on and nothing else so you should not add python packages or c packages there.

Steps To Reproduce

$ rosdep install

Could not instal packages

moa_controlers could not get : [numpy]

[✨FEAT✨]: Heart beat node for making sure the car is alive

Is there an existing enhancement request for this?

  • I have searched the existing feature requests

Description

Have a message be sent to the motec every so often so that the motec knows that the computer is stull running.

Additional Information

No response

[✨FEAT✨]: Cone Mapping Performance Increase

Is there an existing enhancement request for this?

  • I have searched the existing feature requests

Description

Currently, within the 'sort_and_add_cones' function, the complexity of comparing one cone perception data point is O(n). Comparing all cones to all measured data point is O(n2). This has clear areas of improvement.
Please implement a means to decrease the search space of the cones that a data point needs to be compared against.

Additional Information

Please consider:

  • Utilizing pre-existing information we are not exploiting (color, etc...)
  • Implementing an easier to search data structure.
    • Space partitioning algorithms.
    • Clustering algorithms.
    • Other search space reduction algorithms.

We are expecting to utilize at minimum 60 total cones for a physical track, and otherwise can't afford to field more than 100. An algorithm should time efficient over this range of dataset sizes.

[✨FEAT✨]: Add ZED SDK docker file to the docker compose

Is there an existing enhancement request for this?

  • I have searched the existing feature requests

Description

Add the zed sdk docker file and container so that we can have the the zed2i working and usable.

Additional Information

Need to change the docker compose file and the networks so that the containers can communicate.

[🐛BUG🐛]: moa-msgs not building due to having wrong linker

Is there an existing issue for this?

  • I have searched the existing issues

Description of the bug

Should look like this

cmake_minimum_required(VERSION 3.5)
project(moa_msgs)

Enable compiler warnings

if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-Wall -Wextra -Wpedantic)
endif()

Find dependencies

find_package(ament_cmake REQUIRED)
find_package(std_msgs REQUIRED)
find_package(geometry_msgs REQUIRED)
find_package(rosidl_default_generators REQUIRED)

List message and service files

set(msg_files
"msg/CAN.msg"
"msg/CANStamped.msg"
"msg/Cone.msg"
"msg/ConeStamped.msg"
"msg/ConeMap.msg"
"msg/ConeMapStamped.msg"
)
set(srv_files
"srv/CANSendReq.srv"
)

Generate message and service interfaces

rosidl_generate_interfaces(${PROJECT_NAME}
${msg_files}
${srv_files}
DEPENDENCIES std_msgs geometry_msgs
)

Export package dependencies

ament_export_dependencies(rosidl_default_runtime)
ament_package()

and not have

Link package dependencies

ament_target_dependencies(${PROJECT_NAME}
"std_msgs"
"geometry_msgs"
)

in it

Steps To Reproduce

colcon build

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.