Context
The onboard companion PC must:
- Run the ROS 2 Jazzy stack (sensor_monitor, sweep_node, MAVROS bridge)
- Real-time inference of a trained RL policy (PPO actor, ~1 MB params)
- Optionally — SLAM (slam_toolbox) + Nav2
Comparison table (2026)
| Platform | CPU | GPU | RAM | TOPS (AI) | Power | Price | ROS 2 ready |
|---|---|---|---|---|---|---|---|
| Raspberry Pi 5 (8GB) | 4×ARM Cortex-A76 @ 2.4 GHz | VideoCore VII (no CUDA) | 8 GB LPDDR4X | — (CPU only) | 8-12 W | ~$80 | ✅ Jazzy apt |
| Jetson Nano (legacy) | 4×ARM Cortex-A57 @ 1.43 GHz | 128-core Maxwell | 4 GB LPDDR4 | 0.5 TFLOPS (FP16) | 5-10 W | $99 (EOL) | ⚠ Foxy only; Jazzy manual build |
| Jetson Orin Nano (8 GB) | 6×ARM Cortex-A78AE @ 1.5 GHz | 1024-core Ampere | 8 GB LPDDR5 | 40 TOPS (INT8) | 7-15 W | $499 | ✅ JetPack 6.0 + ROS 2 build |
| Jetson Orin Nano (Super) | same + boost | + DLA | 8 GB | 67 TOPS (INT8) | 15-25 W | $499 | ✅ |
Final recommendation — Jetson Orin Nano (8 GB, Super)
Why:
- 40-67 TOPS — for policy size <10 MB and 100 Hz input, plenty for ~1000 Hz inference (huge margin).
- CUDA + cuDNN + TensorRT — the RL policy converts to TensorRT for a 3-5× speedup.
- JetPack 6.0 — Ubuntu 22.04 + ROS 2 Humble apt-installable; Jazzy via source build (~1 hour).
- Power 7-15 W — on a 3S 5000 mAh BMS gives 25-40 min flight (motors included).
- 8 GB RAM — enough for ROS 2 + Nav2 + SLAM + policy + parsers simultaneously.
Alternative: RPi 5 (8 GB) — if RL inference isn’t needed (or runs on a separate embedded MCU):
- 6× cheaper
- ARM CPU is enough for ROS 2 + sensor pipeline + MAVROS bridge
- No CUDA → policy inference on CPU (ONNX runtime / NumPy) — realistically 5-20 Hz for a small actor
- Suitable as an “MVP onboard” if RL is offloaded to a ground station
Don’t buy
- Jetson Nano (legacy) — EOL since 2024, Foxy only, Maxwell GPU is weak for modern policies. NVIDIA recommends Orin Nano as the replacement.
- Coral TPU Edge — Google EdgeTPU 4 TOPS, but only for TF Lite quantized models. Not for PyTorch/ONNX out of PPO.
Power-budget calculation
| Component | Power |
|---|---|
| Jetson Orin Nano | 15 W |
| 4 motors (hover) | 100-150 W |
| Servos + sensors | 5 W |
| Total | ~125 W |
3S 5000 mAh BMS = 11.1 V × 5 Ah = 55 Wh / 125 W = ~26 min hover (theoretical max).
ROS 2 Jazzy on Jetson Orin Nano
JetPack 6.0 ships Ubuntu 22.04 + ROS Humble out of the box. Jazzy via source build:
# https://docs.ros.org/en/jazzy/Installation/Alternatives/Ubuntu-Development-Setup.html
mkdir -p ~/ros2_jazzy/src && cd ~/ros2_jazzy
vcs import --input https://raw.githubusercontent.com/ros2/ros2/jazzy/ros2.repos src
rosdep install --from-paths src --ignore-src -y
colcon build --symlink-install
~1 hour on Orin Nano (8 GB RAM is enough).
RL inference on Orin Nano — pipeline
RL policy (PyTorch .pt)
→ ONNX export (torch.onnx.export)
→ TensorRT optimization (trtexec --onnx=policy.onnx --saveEngine=policy.trt)
→ Runtime inference via TensorRT Python API (~0.5 ms / inference)
Sequential: observation → policy → action @ ~1000 Hz (we use 10 Hz mission FSM → 100× headroom).
Sources
- NVIDIA Jetson Orin Nano Developer Kit datasheet
- JetPack 6.0 release notes
- NVIDIA forum — JetPack 6.0 + ROS 2 Jazzy build threads
- Raspberry Pi 5 specs — https://www.raspberrypi.com/products/raspberry-pi-5/
- TensorRT 10.0 docs