Software for our 2025 Intelligent Ground Vehicle Competition AutoNav challenge entry, NAME TBD.
We are using ROS2 Jazzy on Ubuntu 24.04.
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
source /opt/ros/jazzy/setup.bash
cd autonav_ws
colcon build
source /install/setup.bash
Follow the steps in building and then run the following command
ros2 launch autonav_launch competition.xml
or
ros2 launch autonav_launch manual.xml
Follow the steps in building and then run the following command
ros2 launch autonav_launch simulation.xml
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
}
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 | ✅ | ✅ |
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) | ✅ | ✅ |
All folder names including packages should be in snake_case
Avoid most abbreviations
Tab length is 4 spaces (default)
Python files should be written in the PEP-8 style
file names should be in snake_case
class names should be in UpperCamelCase
(to agree with rclcpp)
function names should be in camelCase