Implements full boot-time auto-start for the SaltyBot ROS2 stack on Jetson Orin. Everything comes up automatically after power-on with correct dependency ordering and restart-on-failure for each service. New systemd services: saltybot-ros2.service full_stack.launch.py (perception + SLAM + Nav2) saltybot-esp32-serial.service ESP32-S3 BALANCE UART bridge (bd-wim1, PR #727) saltybot-here4.service Here4 DroneCAN GPS bridge (bd-p47c, PR #728) saltybot-dashboard.service Web dashboard on port 8080 Updated: saltybot.target now Wants all four new services with boot-order comments can-bringup.service bitrate 500 kbps → 1 Mbps (DroneCAN for Here4) 70-canable.rules remove bitrate from udev RUN+=; let service own the bitrate, add TAG+=systemd for device unit install_systemd.sh installs all services + udev rules, colcon build, enables mosquitto, usermod dialout full_stack.launch.py resolve 8 merge conflict markers (ESP32-S3 rename) and fix missing indent on enable_mission_logging_arg — file was un-launchable with SyntaxError New: scripts/ros2-launch.sh sources ROS2 Humble + workspace overlay, then exec ros2 launch — used by all ROS2 service units via ExecStart= udev/80-esp32.rules /dev/esp32-balance (CH343) and /dev/esp32-io (ESP32-S3 native USB CDC) Resolves bd-1hyn Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
23 lines
884 B
SYSTEMD
23 lines
884 B
SYSTEMD
[Unit]
|
|
Description=SaltyBot Full Stack Target
|
|
Documentation=https://gitea.vayrette.com/seb/saltylab-firmware
|
|
#
|
|
# Start everything: systemctl start saltybot.target
|
|
# Stop everything: systemctl stop saltybot.target
|
|
# Check all: systemctl status 'saltybot-*' can-bringup
|
|
#
|
|
# Boot order (dependency chain):
|
|
# network-online.target
|
|
# → can-bringup.service (CANable2 @ 1 Mbps DroneCAN)
|
|
# → saltybot-here4.service (Here4 GPS → /gps/fix, /here4/*)
|
|
# → saltybot-esp32-serial.service (ESP32-S3 UART → /can/vesc/*, /saltybot/attitude)
|
|
# → saltybot-ros2.service (full_stack.launch.py, perception + nav)
|
|
# → saltybot-dashboard.service (port 8080)
|
|
# (independent) saltybot-social.service
|
|
# (independent) tailscale-vpn.service
|
|
After=network-online.target
|
|
Wants=network-online.target
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|