Add complete display integration for MageDok 7" IPS touchscreen: Configuration Files: - X11 display config (xorg-magedok.conf) — 1024×600 @ 60Hz - PulseAudio routing (pulseaudio-magedok.conf) — HDMI audio to speakers - Udev rules (90-magedok-touch.rules) — USB touch device permissions - Systemd service (magedok-display.service) — auto-start on boot ROS2 Launch: - magedok_display.launch.py — coordinate display/touch/audio setup Helper Scripts: - verify_display.py — validate 1024×600 resolution via xrandr - touch_monitor.py — detect MageDok USB touch, publish status - audio_router.py — configure PulseAudio HDMI sink routing Documentation: - MAGEDOK_DISPLAY_SETUP.md — complete installation and troubleshooting guide Features: ✓ DisplayPort → HDMI video from Orin DP connector ✓ USB touch input as HID device (driver-free) ✓ HDMI audio routing to built-in speakers ✓ 1024×600 native resolution verification ✓ Systemd auto-launch on boot (no login prompt) ✓ Headless fallback when display disconnected ✓ ROS2 status monitoring (touch/audio/resolution) Supports Salty Face UI (Issue #370) and accessibility features (Issue #371) Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
60 lines
1.6 KiB
Python
60 lines
1.6 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
MageDok 7" Display Launch Configuration
|
||
- Video: DisplayPort → HDMI (1024×600)
|
||
- Touch: USB HID
|
||
- Audio: HDMI → internal speakers via PulseAudio
|
||
"""
|
||
|
||
import os
|
||
from launch import LaunchDescription
|
||
from launch_ros.actions import Node
|
||
from launch.actions import ExecuteProcess
|
||
|
||
|
||
def generate_launch_description():
|
||
return LaunchDescription([
|
||
# Log startup
|
||
ExecuteProcess(
|
||
cmd=['echo', '[MageDok] Display setup starting...'],
|
||
shell=True,
|
||
),
|
||
|
||
# Verify display resolution
|
||
Node(
|
||
package='saltybot_bringup',
|
||
executable='verify_display.py',
|
||
name='display_verifier',
|
||
parameters=[
|
||
{'target_width': 1024},
|
||
{'target_height': 600},
|
||
{'target_refresh': 60},
|
||
],
|
||
output='screen',
|
||
),
|
||
|
||
# Monitor touch input
|
||
Node(
|
||
package='saltybot_bringup',
|
||
executable='touch_monitor.py',
|
||
name='touch_monitor',
|
||
parameters=[
|
||
{'device_name': 'MageDok Touch'},
|
||
{'poll_interval': 0.1},
|
||
],
|
||
output='screen',
|
||
),
|
||
|
||
# Audio routing (PulseAudio sink redirection)
|
||
Node(
|
||
package='saltybot_bringup',
|
||
executable='audio_router.py',
|
||
name='audio_router',
|
||
parameters=[
|
||
{'hdmi_sink': 'alsa_output.pci-0000_00_1d.0.hdmi-stereo'},
|
||
{'default_sink': True},
|
||
],
|
||
output='screen',
|
||
),
|
||
])
|