-
Notifications
You must be signed in to change notification settings - Fork 0
Modules
Core executable modules and their key components in the JetsonNano ECU system.
The Vehicle System module maintains the vehicle state model and provides actuation interfaces aligned with VSS (Vehicle Signal Specification).
Key Components:
- VehicleSystem: Central state container with VSS-aligned hierarchy
- Vehicle: Core state representation with sub-systems
- MotionManagement: Steering and powertrain management
- Exterior: External vehicle elements
Responsibilities:
- Maintains current vehicle state
- Subscribes to control commands via Zenoh
- Actuates chassis/body components
- Exposes vehicle state via standardized interfaces
The Middleware module bridges CAN bus communications with Zenoh, enabling seamless integration between vehicle hardware and software components.
Key Components:
- BatterySensor: Monitors power metrics (voltage, current, power) via I²C
- Signals: Main CAN↔Zenoh bridge for bidirectional communication
Responsibilities:
- Receives current speed from Arduino and publishes it via Zenoh (so the system has up-to-date speed)
- Publishes battery sensor data via Zenoh and CAN
- Subscribes on Zenoh for control commands (e.g., lights) and sends them via CAN
- Relays other control signals (autonomous level, emergency braking alerts, etc.) from Zenoh to CAN or to the Raspberry Pi cluster as needed
- Provides standardized Zenoh interfaces for vehicle communication
The Combined Controller handles all vehicle control functions, from manual inputs to autonomous steering and speed.
Key Components:
- XboxController: Reads gamepad inputs, exposes manual speed/steering
- PIDController: Steering control with fixed/predefined desired speed values
- MPCController: Optimizes both steering and desired speed based on trajectory
- SpeedPidController: Throttle control that attempts to reach the desired speed (used with both PID and MPC)
Responsibilities:
- Processes manual inputs from Xbox controller
- Switches control algorithms based on automation mode
- If using PID:
- PIDController handles only steering based on lane midpoint error
- Uses fixed/predefined desired speed values
- If using MPC:
- MPCController optimizes both steering and the desired speed target
- Determines optimal desired speed based on trajectory/curves
- In both cases:
- SpeedPidController handles the actual throttle control to reach the desired speed target
- Subscribes to perception outputs (when in autonomous modes)
- Publishes control commands to Middleware
The Detection module processes camera inputs to understand the environment, detecting lanes, objects, signs, and lights.
Key Components:
- LaneDetector: Uses a deep learning model to segment and identify lane boundaries from camera frames
- ObjectDetector: Identifies vehicles, pedestrians, signs, and road surfaces
- TrajectoryDefinition: Generates path planning based on lane/object fusion
- TrafficSignClassifier: Classifies detected signs and lights
- AdaptiveCruiseControl: Estimates distances for ACC behavior
- ObstacleAvoidance: Path planning for obstacle avoidance in SAE_4
Responsibilities:
- Captures and processes camera frames
- Runs model inference for lane segmentation
- Calculates lane midpoint error
- Identifies objects and classifies them
- Determines road/non-road segments
- Generates trajectory for autonomous steering
- Classifies traffic signs and lights
- Triggers emergency braking when needed
- Publishes perception outputs to Combined Controller
Project Developed by Team02 @ SEA:ME Portugal - 2024 Cohort
A master-level curriculum empowering developers with practical, peer-driven expertise in embedded systems, autonomous driving, and mobility ecosystems.