# segmentation_params.yaml — SaltyBot sidewalk semantic segmentation # # Run with: # ros2 launch saltybot_segmentation sidewalk_segmentation.launch.py # # Build TRT engine first (run ONCE on the Jetson): # python3 /opt/ros/humble/share/saltybot_segmentation/scripts/build_engine.py # ── Model paths ─────────────────────────────────────────────────────────────── # Priority: TRT engine > ONNX > error (no inference) # # Build engine: # python3 build_engine.py --model bisenetv2 # → /mnt/nvme/saltybot/models/bisenetv2_cityscapes_512x256.engine engine_path: /mnt/nvme/saltybot/models/bisenetv2_cityscapes_512x256.engine onnx_path: /mnt/nvme/saltybot/models/bisenetv2_cityscapes_512x256.onnx # ── Model input size ────────────────────────────────────────────────────────── # Must match the engine. 512×256 maintains Cityscapes 2:1 aspect ratio. # RealSense 640×480 is letterboxed to 512×256 (pillarboxed, 32px each side). input_width: 512 input_height: 256 # ── Processing rate ─────────────────────────────────────────────────────────── # process_every_n: run inference on 1 in N frames. # 1 = every frame (~15fps if latency budget allows) # 2 = every 2nd frame (recommended — RealSense @ 30fps → ~15fps effective) # 3 = every 3rd frame (9fps — use if GPU is constrained by other tasks) # # RealSense color at 15fps → process_every_n:=1 gives ~15fps seg output. process_every_n: 1 # ── Debug image ─────────────────────────────────────────────────────────────── # Set true to publish /segmentation/debug_image (BGR colour overlay). # Adds ~1ms/frame overhead. Disable in production. publish_debug_image: false # ── Traversability overrides ────────────────────────────────────────────────── # unknown_as_obstacle: true → sky / unlabelled pixels → lethal (100). # Use in dense urban environments where unknowns are likely vertical surfaces. # Use false (default) in open spaces to allow exploration. unknown_as_obstacle: false # ── Costmap projection ──────────────────────────────────────────────────────── # costmap_resolution: metres per cell in the output OccupancyGrid. # Match or exceed Nav2 local_costmap resolution (default 0.05m). costmap_resolution: 0.05 # metres/cell # costmap_range_m: forward look-ahead distance for ground projection. # 5.0m covers 100 cells at 0.05m resolution. # Increase for faster outdoor navigation; decrease for tight indoor spaces. costmap_range_m: 5.0 # metres # ── Camera geometry ─────────────────────────────────────────────────────────── # These must match the RealSense mount position on the robot. # Used for inverse-perspective ground projection. # # camera_height_m: height of RealSense optical centre above ground (metres). # saltybot: D435i mounted at ~0.15m above base_link origin. camera_height_m: 0.15 # metres # camera_pitch_deg: downward tilt of the camera (degrees, positive = tilted down). # 0 = horizontal. Typical outdoor deployment: 5–10° downward. camera_pitch_deg: 5.0 # degrees