Skip to content
This repository was archived by the owner on Oct 6, 2025. It is now read-only.
Rui-Pedro-Pires edited this page Aug 25, 2025 · 14 revisions

JetsonNano

The JetsonNano module hosts the ECU software running on an NVIDIA Jetson Nano for an autonomous driving lab platform. It integrates perception, control, a CAN↔Zenoh middleware, and tooling used to operate the vehicle in manual and autonomous modes. This repo is a submodule of the Team02-Course repo.


Documentation Pages

  • Architecture – System design and executables overview
  • Modules – Core programs and their components
  • Perception – Lane detection, object detection, and traffic classification
  • Modes and Automation – SAE automation levels and behaviors
  • Data Flow – Signal routing between components
  • Tools – Utilities for calibration, monitoring and telemetry

Technical Highlights

  • Language/Middleware: C++17, Zenoh pub/sub.
  • Multi-threaded design:
    • Combined Controller threads: ManualControl (Xbox), SteeringController (PID or MPC, one active), SpeedPidController.
    • Detection threads: camera, lane detection, object detection, sign/light classification, trajectory definition.
  • Hardware interfaces:
    • CAN via Middleware (telemetry and actuation mapping).
    • Camera input for perception (lane/object/sign pipelines).
    • I²C for power/battery sensing (INA219) and servo/motor control via PCA9685 PWM controllers.
  • Control algorithms:
    • ADAS functions: ACC (Adaptive Cruise Control) and LKAS (Lane Keeping Assist System).
    • Critical control measures:
      • Emergency braking when obstacles detected in trajectory.
      • Speed reduction at crosswalks and for yield signs.
      • Adaptive velocity based on detected speed limit signs.
      • Full stop response for stop signs and red traffic lights.
      • Traffic light handling (red/yellow/green) with appropriate behaviors.
    • TrajectoryDefinition by mode:
      • SAE_4: adjusts trajectory to avoid obstacles (re-routing).
      • SAE_3: keeps nominal trajectory (no obstacle-based re-routing).
      • SAE_2: planned; would require ≥2 lanes to enable safe maneuvers.

Repo Structure (summary)

JetsonNano/
├── src/                 # Core code (ADAS, Controllers, Communication, Detection, Vehicle, …)
│   ├── Controllers/     # MPController, PidController, SpeedPidController, XboxController
│   ├── Detection/       # LaneDetector, ObjectDetector, TrajectoryDefinition, ACC, …
│   ├── MiddleWare/      # BatterySensor, Signals (CAN↔Zenoh)
│   ├── Vehicle/         # Vehicle system internals
│   ├── combinedControl.cpp
│   ├── detection.cpp
│   ├── middleware.cpp
│   └── vehicle.cpp
├── include/             # Headers (mirrors src/ structure)
├── config/
│   ├── Zenoh/           # *.json session/config for each executable
│   └── Systemd/         # Optional systemd service units
├── tools/               # cam_calibration, pid_calibrator, system_monitor, vss, zenoh-router
├── docs/                # Diagrams (architecture.png) and wiki pages
├── deploy/              # Dockerfiles and scripts for Jetson deployment
└── tests/               # Unit/integration tests

For detailed behavior, see the linked wiki

Clone this wiki locally