Skip to content

Latest commit

 

History

History
117 lines (91 loc) · 3.41 KB

README.md

File metadata and controls

117 lines (91 loc) · 3.41 KB

selfdrive_software_2025

Github Workflow Status

Software for our 2025 Intelligent Ground Vehicle Competition Self Drive challenge entry, NAME TBD.
We are using ROS2 Jazzy on Ubuntu 24.04.

Dependencies

To setup all dependencies, run the following two commands. It is CRITICAL you do NOT run these commmands as sudo

cd setup
echo "machine files.dylanzeml.in login <user> password <password>" > vectorsecrets.txt
./setup.sh

Building

source /opt/ros/jazzy/setup.bash
cd selfdrive_ws
colcon build
source /install/setup.bash

Autonomous/Manual

Follow the steps in building and then run the following command

ros2 launch selfdrive_launch competition.xml

or

ros2 launch selfdrive_launch manual.xml

Simulation

Follow the steps in building and then run the following command

ros2 launch selfdrive_launch simulation.xml

VSCode

To edit the software with Visual Studio Code, please install the ros extension and open VSCode through the command line via code after running all steps under Building. To get proper intellisense for C++, create the following file: .vscode/c_cpp_properties.json

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "/opt/ros/jazzy/include/**"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c17",
            "cppStandard": "gnu++17",
            "intelliSenseMode": "linux-gcc-x64"
        }
    ],
    "version": 4
}

Shared Node Compatability

Listed below is a table that compares compability for the C++ and Python version of the shared node. This should be updated any time either version is changed.

Feature C++ Python
Console Logging
File Logging
Topic Logging
Configuration
Conbus
Performance Logging
System State
Device State

Shared Node API

Listed below is a table that shows the API for the shared node. This should be updated any time either version is changed.

Feature C++ Python
log(message, level)
set_system_state(state)
set_system_state(state, has_mobility)
set_mobility(has_mobility)
set_device_state(state)
set_device_state(device, state)
get_device_state()
get_device_state(device)
get_system_state()
is_mobility()
perf_start(name)
perf_stop(name, print_to_console)

Style

All folder names including packages should be in snake_case

Avoid most abbreviations

Tab length is 4 spaces (default)

Python

Python files should be written in the PEP-8 style

C++

file names should be in snake_case

class names should be in UpperCamelCase (to agree with rclcpp)

function names should be in camelCase