Skip to content

Latest commit

 

History

History
162 lines (128 loc) · 7.88 KB

File metadata and controls

162 lines (128 loc) · 7.88 KB

EnglishРусский

FIRA Autonomous RC Car

Anton Petnitsky

A 1:10-scale autonomous RC car project for the physical division of the FIRA Autonomous Cars League (FACL) / RoboCup Autonomous Cars. Brings together a 3D-printable chassis, reference autonomous-driving code from FIRA simulation projects, and an open-source ROS stack for Raspberry Pi + Arduino.

Status: in development. This is not a finished product — the repository incrementally assembles and integrates components, starting July 2026.

Competition regulation

FIRA Autonomous Cars League consists of two divisions:

  • Physical Division — teams design, build, and program a 1:10-scale autonomous RC car with Ackermann steering that must drive a track without human intervention.
  • Simulation Division — developing autonomous-driving software/AI in the AVIS Engine simulator (built on ROS + Gazebo).

Official regulation sources (verify against these before competing — rules are updated yearly):

A paraphrased summary of the key requirements (1:10 scale, 600x450mm size limit, Ackermann steering, onboard/offboard processing score multiplier) is in docs/regulation-summary.md.

This project targets the Physical Division (1:10 RC car).

Repository structure

models/     — chassis 3D model (STL/3MF) for printing
external/   — reference projects, attached as git submodules (see below)
docs/       — regulation, electronics, algorithm-adaptation plan
ros_ws/     — ROS 2 package fira_car_control: lane detection, steering,
              speed, and serial-bridge nodes
firmware/   — drive microcontroller firmware (servo + DC motor)
tools/      — STL bbox, camera calibration, HSV calibration

Documentation

External material used (attribution)

Chassis 3D model

NITROUS — 3D Printed RC Car by TommyB

Reference code (git submodules)

Code from external repositories is not copied, it's attached as a git submodule — this preserves the full history, authorship, and license of the original.

Path Source License Purpose
external/pandas-team-avis-engine Pandas-Team/Autonomous-Car-Simulation-Based-on-AVIS-Engine-FIRA-2021 GPL-3.0 Lane/sign detection, PID control — reference for simulation algorithms
external/fira-autonomous-cars-simulator Fira-Autonomous-Cars/FIRA-Autonomous-Cars-Simulator CC0-1.0 Official FIRA simulator
external/arduino-raspberry-ros-car COONEO/Arduino_Raspberry_ROS_Car unspecified (all rights reserved) Reference ROS stack for Raspberry Pi + Arduino on a physical car

Code from COONEO/Arduino_Raspberry_ROS_Car has no open license — used only as read-only reference material/submodule, not copied into this repository's own files.

Additional material studied

A full extract per source (authors, licenses, architecture, what's actually reusable) is in EXTERNAL_SOURCES.md.

Roadmap

  • Study the Physical Division regulation (summary in docs/regulation-summary.md, chassis dimensions checked against the limits — comfortably within them)
  • Work out the electronics plan and BOM for the NITROUS geometry (docs/electronics-bom.md, dimensions computed from STL)
  • Write the lane-detection adaptation plan for a real camera (docs/lane-detection-adaptation.md)
  • Scaffold ROS 2 steering/speed control nodes (ros_ws/) — needs a real camera and calibration to finish tuning
  • Write serial_bridge_node.py — bridges ROS topics to the microcontroller over UART (S<angle>/T<throttle> protocol)
  • Write the drive microcontroller firmware (firmware/drive_controller/) — servo+motor, safety timeout; untested on real hardware (no board/H-bridge on hand yet)
  • Write tools/calibrate_camera.py and tools/calibrate_hsv.py — ready to run as soon as a real camera is available
  • Extract pure logic (lane detection, steering/speed controllers) into algorithms.py and cover it with pytest (12 tests, actually run and passing — the only part of the stack verified so far, not just written)
  • Buy the electronics per the BOM — a shopping list with search links and rough prices is ready in docs/purchase-list.md, the actual purchase/payment is manual
  • Draft a camera mount design — mounts/camera_mount.scad, Camera Module 3 board dimensions taken from the official Raspberry Pi mechanical drawing, slots instead of tight holes to allow for reading error. Not compiled (OpenSCAD couldn't be installed in this environment) — open and check before printing
  • Print and fit the camera mount against the real board
  • Assemble the physical chassis from models/
  • Run the firmware bring-up checklist on real hardware (firmware/drive_controller/README.md)
  • Tune lane_detection_node.py on real track footage
  • Run the first test-track drive
  • Confirm the open regulation questions — most are resolved (see docs/regulation-summary.md): no mass limit, IR line-following sensors are banned (camera is mandatory, not optional), ready-made platforms are allowed in Pro. One critical item remains open: NITROUS chassis track width (150-350mm) and wheelbase (200-550mm) haven't been measured — the compact model may not meet these minimums
  • Measure track width and wheelbase during chassis assembly, confirm regulation compliance (see the warning in docs/regulation-summary.md)
  • Confirm 2026 season dates closer to the event
  • Prepare documentation/video for competition submission

License for original code

Code and documentation authored within this repository (outside external/ and models/) are distributed under the MIT license (see LICENSE.md) unless stated otherwise.

Additional files