Implements terminal-based curses UI for interactive bench testing of SaltyBot motors via Termux. Features: - Interactive keyboard-based joystick (W/A/S/D or arrow keys) - Conservative velocity defaults: 0.1 m/s linear, 0.3 rad/s angular - Real-time velocity feedback with bar graphs - Spacebar e-stop (instantly zeros velocity) - 500ms timeout safety (sends zero velocity if idle) - Dual backend: ROS2 (/cmd_vel) or WebSocket - Graceful fallback if ROS2 unavailable Safety Features: - Conservative defaults (0.1/0.3 m/s) - E-stop button (spacebar) - 500ms timeout (sends zero if idle) - Input clamping and exponential decay - Status/warning displays Files: - motor_test_joystick.py: Main application - MOTOR_TEST_JOYSTICK.md: User documentation - INSTALL_MOTOR_TEST.md: Installation guide Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
SaltyBot Android/Termux Phone Node (Issue #420)
Android phone node for SaltyBot via Termux. Provides camera, GPS, IMU sensors and local OpenClaw LLM inference.
Setup
On phone (Termux):
bash termux-bootstrap.sh
mkdir -p ~/saltybot_workspace/src
cd ~/saltybot_workspace && colcon build
Running
cd ~/saltybot_workspace && source install/setup.bash
ros2 launch saltybot_phone phone_bringup.py
Topics
| Topic | Type | Description |
|---|---|---|
/phone/camera/image_raw |
Image | Camera frames 320x240@15Hz |
/phone/gps |
NavSatFix | GPS location |
/phone/imu |
Imu | Accelerometer data |
/saltybot/speech_text |
String | Input from Jetson |
/saltybot/chat_response |
String | LLM output to Jetson |
Power Management
nohup bash ~/power-management.sh > ~/power-mgmt.log 2>&1 &
Reduces CPU activity on low battery (<25%) or critical battery (<15%).
Configuration
Edit config/phone.yaml to adjust frame rates and LLM parameters.
Issue #420 Completion
✅ Termux bootstrap ✅ Camera / GPS / IMU nodes ✅ OpenClaw chat (local LLM) ✅ WebSocket bridge to Orin ✅ Termux:Boot auto-start ✅ Power management