Wi-Fi-off acceptance passed: with Wi-Fi blocked, live and after a reboot, the Pi came up on the USB link alone, every node ran, and hermes mcp test robot and look() worked. (A temporary guard that would have unblocked Wi-Fi was the safety net and is removed; Wi-Fi is back on.) Delete what the ROS design superseded: the Picamera2 MCP server and its unit, the old installer and requirements, and the duplicate platform check. Move omarchy/ to host/omarchy/. Rewrite README.md for this build: parts, physical steps (including the Audio switch), setup, daily use, the troubleshooting learned the hard way, and the security model. pi/install.sh is now the single installer for a fresh Ubuntu 24.04 image, built from the steps done by hand: ROS, the libcamera fork at a pinned commit, camera_ros, the venv and models, the workspace, USB gadget, audio overlay, firewall (before PipeWire opens a port), PipeWire, mixer and services. Run twice on the live robot, the second run changed nothing and everything stayed healthy. It has not been run on a blank card. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AFN8nRRCiDiMN7ChBpHJhs
31 lines
999 B
Bash
Executable File
31 lines
999 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# hermes-robot: start Hermes with the robot as the default speaker and microphone,
|
|
# then put your usual devices back when Hermes exits.
|
|
#
|
|
# Install: install -Dm755 hermes-robot ~/.local/bin/hermes-robot
|
|
# Use: hermes-robot (any arguments are passed through to hermes)
|
|
set -uo pipefail
|
|
|
|
SINK=robot_speaker
|
|
SOURCE=robot_mic
|
|
|
|
has() { pactl list short "$1" | awk '{print $2}' | grep -qxF "$2"; }
|
|
if ! has sinks "$SINK" || ! has sources "$SOURCE"; then
|
|
echo "hermes-robot: the robot's audio devices aren't present." >&2
|
|
echo " Is the robot powered and plugged in over USB (ping 10.55.0.2)? Check with: pactl list short sources" >&2
|
|
exit 1
|
|
fi
|
|
|
|
prev_sink="$(pactl get-default-sink)"
|
|
prev_source="$(pactl get-default-source)"
|
|
restore() {
|
|
pactl set-default-sink "$prev_sink" 2>/dev/null
|
|
pactl set-default-source "$prev_source" 2>/dev/null
|
|
}
|
|
trap restore EXIT INT TERM
|
|
|
|
pactl set-default-sink "$SINK"
|
|
pactl set-default-source "$SOURCE"
|
|
|
|
hermes "$@"
|