- docs/: rewrite AGENTS.md, wiring-diagram.md (SAUL-TEE arch); update SALTYLAB.md, FACE_LCD_ANIMATION.md, board-viz.html, SALTYLAB-DETAILED refs - cad/: dimensions.scad FC params → ESP32-S3 BALANCE params - chassis/: ASSEMBLY.md, BOM.md, ip54_BOM.md, *.scad — FC_MOUNT_SPACING/ FC_PITCH → TBD ESP32-S3; Drone FC → MCU mount throughout - CLAUDE.md, TEAM.md: project desc → SAUL-TEE; hardware table → ESP32-S3/VESC - USB_CDC_BUG.md: marked ARCHIVED (legacy STM32 era) - AUTONOMOUS_ARMING.md: USB CDC → inter-board UART (ESP32-S3 BALANCE) - projects/saltybot/SLAM-SETUP-PLAN.md: FC/STM32F722 → BALANCE/CAN - jetson/docs/pinout.md, power-budget.md, README.md: STM32 bridge → CAN bridge - jetson/config/RECOVERY_BEHAVIORS.md: FC+Hoverboard → BALANCE+VESC - jetson/ros2_ws: stm32_protocol.py → esp32_protocol.py, stm32_cmd_node.py → esp32_cmd_node.py, mamba_protocol.py → balance_protocol.py; can_bridge_node imports updated - scripts/flash_firmware.py: DFU/STM32 → pio run -t upload - src/ include/: ARCHIVED headers added (legacy code preserved) - test/: ARCHIVED notices; STM32F722 comments marked LEGACY - ui/diagnostics_panel.html: Board/STM32 → ESP32-S3 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
84 lines
3.2 KiB
Python
84 lines
3.2 KiB
Python
"""
|
||
uart_bridge.launch.py — FC↔Orin UART bridge (Issue #362)
|
||
|
||
Launches serial_bridge_node configured for Jetson Orin UART port.
|
||
Bridges ESP32-S3 BALANCE telemetry from inter-board UART into ROS2.
|
||
|
||
Published topics (same as USB CDC bridge):
|
||
/saltybot/imu sensor_msgs/Imu — pitch/roll/yaw as angular velocity
|
||
/saltybot/balance_state std_msgs/String (JSON) — full PID diagnostics
|
||
/diagnostics diagnostic_msgs/DiagnosticArray — system health
|
||
|
||
Usage:
|
||
ros2 launch saltybot_bridge uart_bridge.launch.py
|
||
|
||
# Override UART port (Orin has THS0–THS3):
|
||
ros2 launch saltybot_bridge uart_bridge.launch.py uart_port:=/dev/ttyTHS0
|
||
|
||
# Override baud rate:
|
||
ros2 launch saltybot_bridge uart_bridge.launch.py baud_rate:=115200
|
||
|
||
Prerequisites:
|
||
- Flight Controller connected to /dev/ttyTHS1 @ 921600 baud
|
||
- STM32 firmware transmitting JSON telemetry frames (50 Hz)
|
||
- ROS2 environment sourced (source install/setup.bash)
|
||
|
||
Note:
|
||
/dev/ttyTHS1 is the native UART1 on Jetson Orin. Verify connectivity:
|
||
$ cat /dev/ttyTHS1 | head -5
|
||
{"p":123,"r":-45,"e":0,"ig":0,"m":0,"s":1,"y":0}
|
||
...
|
||
|
||
Troubleshooting:
|
||
- "Permission denied" → run with sudo or add user to dialout group
|
||
- No frames received → check Flight Controller baud rate, verify UART cable
|
||
- Garbled output → check baud rate mismatch, check cable shield/termination
|
||
"""
|
||
|
||
from launch import LaunchDescription
|
||
from launch.actions import DeclareLaunchArgument
|
||
from launch.substitutions import LaunchConfiguration
|
||
from launch_ros.actions import Node
|
||
|
||
|
||
def generate_launch_description():
|
||
return LaunchDescription([
|
||
# ── Launch arguments ───────────────────────────────────────────────────
|
||
DeclareLaunchArgument(
|
||
"uart_port",
|
||
default_value="/dev/ttyTHS1",
|
||
description="Jetson Orin UART device (THS0–THS3)",
|
||
),
|
||
DeclareLaunchArgument(
|
||
"baud_rate",
|
||
default_value="921600",
|
||
description="Serial baud rate (Flight Controller standard)",
|
||
),
|
||
DeclareLaunchArgument(
|
||
"timeout",
|
||
default_value="0.1",
|
||
description="Serial read timeout in seconds",
|
||
),
|
||
DeclareLaunchArgument(
|
||
"reconnect_delay",
|
||
default_value="2.0",
|
||
description="Delay before reconnect attempt on serial error (seconds)",
|
||
),
|
||
|
||
# ── Serial bridge node ─────────────────────────────────────────────────
|
||
Node(
|
||
package="saltybot_bridge",
|
||
executable="serial_bridge_node",
|
||
name="fc_uart_bridge",
|
||
output="screen",
|
||
parameters=[
|
||
{
|
||
"serial_port": LaunchConfiguration("uart_port"),
|
||
"baud_rate": LaunchConfiguration("baud_rate"),
|
||
"timeout": LaunchConfiguration("timeout"),
|
||
"reconnect_delay": LaunchConfiguration("reconnect_delay"),
|
||
},
|
||
],
|
||
),
|
||
])
|