saltylab-firmware/jetson/scripts/build-and-run.sh
sl-jetson c47ac41573 feat: Jetson Nano platform setup and Docker env (bd-1hcg)
- Dockerfile: L4T R32.6.1 (JetPack 4.6) base + ROS2 Humble + SLAM stack
  (slam_toolbox, Nav2, rplidar_ros, realsense2_camera, robot_localization)
- docker-compose.yml: multi-service stack (ROS2, RPLIDAR A1M8, D435i, STM32 bridge)
  with device passthrough, host networking for DDS, persistent map volume
- docs/pinout.md: full GPIO/I2C/UART pinout for STM32F722 bridge (USB CDC +
  UART fallback), RealSense D435i (USB3), RPLIDAR A1M8, udev rules
- docs/power-budget.md: 10W envelope analysis with per-component breakdown,
  mitigation strategies (RPLIDAR gating, D435i 640p, nvpmodel modes)
- scripts/setup-jetson.sh: host one-shot setup (Docker, nvidia-container-runtime,
  udev rules, MAXN power mode, swap)
- scripts/build-and-run.sh: build/up/down/shell/slam/status helper

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-28 12:46:14 -05:00

52 lines
1.3 KiB
Bash

#!/usr/bin/env bash
# Quick build + run helper for the Jetson ROS2 stack
# Usage: bash build-and-run.sh [build|up|down|logs|shell]
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
JETSON_DIR="$(dirname "$SCRIPT_DIR")"
cd "$JETSON_DIR"
ACTION="${1:-up}"
case "$ACTION" in
build)
echo "[saltybot] Building ROS2 Docker image..."
docker compose build --no-cache
;;
up)
echo "[saltybot] Starting ROS2 stack..."
docker compose up -d
docker compose logs -f
;;
down)
echo "[saltybot] Stopping ROS2 stack..."
docker compose down
;;
logs)
docker compose logs -f
;;
shell)
echo "[saltybot] Opening shell in ros2 container..."
docker compose exec saltybot-ros2 bash
;;
slam)
echo "[saltybot] Launching SLAM only..."
docker compose up -d rplidar realsense saltybot-ros2
docker compose logs -f saltybot-ros2
;;
status)
docker compose ps
echo ""
echo "--- ROS2 topics (requires running container) ---"
docker compose exec saltybot-ros2 \
bash -c "source /opt/ros/humble/setup.bash && ros2 topic list" 2>/dev/null || true
;;
*)
echo "Usage: $0 [build|up|down|logs|shell|slam|status]"
exit 1
;;
esac