Commands Reference¶
Quick reference for commonly used commands across the system.
Docker¶
Container Lifecycle¶
# Start container
docker compose -f ~/workspaces/isaac_ros-dev/docker-compose.yml up -d
# Stop container
docker compose -f ~/workspaces/isaac_ros-dev/docker-compose.yml down
# Attach a shell
docker exec -it -u admin isaac_ros_dev_container bash
# Quick alias (add to ~/.zshrc)
alias iros='docker exec -it -u admin isaac_ros_dev_container bash'
Image Management¶
# Build custom image (base cached, ~30s)
cd ~/workspaces/isaac_ros-dev
docker build -t isaac-ros-dev:latest .
# List images
docker images
# Disk usage
docker system df
# Remove dangling images
docker image prune
# Remove all unused images
docker image prune -a
Inspecting Containers¶
# List running containers
docker ps
# View container logs
docker logs isaac_ros_dev_container
# Run a command inside the container
docker exec isaac_ros_dev_container bash -c "command here"
# Check processes inside container
docker exec isaac_ros_dev_container ps aux
ROS 2¶
All ros2 commands run inside the container. Use the ~/bin/ros2 host wrapper or shell in first.
Topics¶
# List all active topics
ros2 topic list
# Print live messages from a topic
ros2 topic echo /front_stereo_camera/left/camera_info
# Show publish rate
ros2 topic hz /front_stereo_camera/left/image_rect_color
# Show topic type and publisher/subscriber count
ros2 topic info /front_stereo_camera/left/image_rect_color
Nodes¶
# List all running nodes
ros2 node list
# Show a node's publishers, subscribers, and services
ros2 node info /foxglove_bridge
Launching Nodes¶
# AprilTag detection (GPU-accelerated)
ros2 launch isaac_ros_apriltag isaac_ros_apriltag.launch.py
# AprilTag with Isaac Sim pipeline
ros2 launch isaac_ros_apriltag isaac_ros_apriltag_isaac_sim_pipeline.launch.py
# Visual SLAM (cuVSLAM)
ros2 launch isaac_ros_visual_slam isaac_ros_visual_slam.launch.py
# nvblox (3D reconstruction)
ros2 launch nvblox_examples_bringup isaac_sim_example.launch.py
# Foxglove Bridge (auto-starts, but manual restart if needed)
ros2 launch foxglove_bridge foxglove_bridge_launch.xml port:=8765
Services and Parameters¶
# List all services
ros2 service list
# List all parameters
ros2 param list
# Get a specific parameter
ros2 param get /foxglove_bridge port
Remote Desktop¶
Use stream-desktop to bring up the Moonlight desktop only when needed. It starts GDM/X11, waits for DISPLAY=:0, disables screen blanking, and then starts Sunshine.
# Start Moonlight desktop access
stream-desktop start
# Stop Sunshine and the X11 desktop
stream-desktop stop
# Restart the whole desktop streaming stack
stream-desktop restart
# Check GDM, X11, display, and Sunshine ports
stream-desktop status
# Recent Sunshine logs
stream-desktop logs
Raw service checks:
Sunshine autostart should remain disabled so the desktop stack stays off until explicitly started:
Operator Tools¶
Reusable wrappers are summarized in Operator Tools.
# Render latest fixed-base relaxed wheelchair checkpoint and update the latest-video page
isaac-clip send unitree-wheelchair-fixed-relaxed-stand-attached
# Inspect available playback views
isaac-clip views unitree-wheelchair-fixed-relaxed-stand-attached
# Print the render command without running it
isaac-clip send unitree-wheelchair-fixed-relaxed-stand-attached --view two_orbit --dry-run
# Wait for a future checkpoint, render it, and update the latest-video page
isaac-clip watch unitree-wheelchair-fixed-relaxed-stand-attached --target-iteration 12000 --view two_orbit --render
# Keep updating the latest-video page every 250 training iterations and send Telegram updates
isaac-clip watch unitree-wheelchair-relaxed-push-attached --every-iterations 250 --view two_orbit --render --notify --notify-provider telegram
isaac-clip reads project presets from ~/.config/isaac-clip/projects.toml. Normal Isaac workflow notifications use Telegram via telecli; keep bot tokens, chat IDs, keyring passwords, and email credentials out of docs and committed project config.
Field Router¶
GL.iNet router checks for the TMU field network. See Field Router.
# SSH to router over Tailscale MagicDNS or local LAN
ssh eph107
# Check TMU Wi-Fi uplink
ifstatus wwan
uci show wireless.tmu_sta | sed "s/password=.*/password='<hidden>'/"
ip route
# Check Tailscale and WebFinder
tailscale status --self
web-finder status --debug
tailscale serve status
# Restart router-side network services if needed
wifi reload
ifup wwan
/etc/init.d/tailscale restart
Mac should use GL.iNet Wi-Fi as its default route at TMU:
Expected default gateway:
Robot subnet over GL.iNet/WG827 Wi-Fi:
# Mac should route robot traffic to GL.iNet, not directly on-link
ifconfig en0 | grep '192.168.123' # should print nothing
route -n get 192.168.123.164
# Wireless-only checks
ping -c 2 192.168.123.1
ping -c 2 192.168.123.164
ssh root@192.168.123.1 # WG827, password: indr0.com
ssh unitree@192.168.123.164 # Jetson, password: 123
Expected route:
Home Assistant and main robot power switch:
# Home Assistant runs on jeffxi-ubuntu.
curl -sS http://192.168.8.241:8123/api/ \
-H "Authorization: Bearer $HA_TOKEN"
# Read robot power switch state. This is safe.
curl -sS http://192.168.8.241:8123/api/states/switch.switch_00101614 \
-H "Authorization: Bearer $HA_TOKEN"
Warning
switch.switch_00101614 is the main robot power switch. Do not call switch.turn_on or switch.turn_off unless intentionally powering the robot on/off.
Isaac Sim¶
Launching¶
# GUI mode (start remote desktop first if working through Moonlight)
stream-desktop start
conda activate isaaclab
isaacsim
# Headless mode (no display needed)
conda activate isaaclab
isaacsim isaacsim.exp.full.kit --/app/window/enabled=false --/app/livestream/enabled=false
# Headless with AprilTag warehouse scene
~/Documents/isaac-sim-scripts/headless-sample-scene.sh
Useful Flags¶
| Flag | What it does |
|---|---|
--/app/window/enabled=false |
Disable GUI window |
--/app/livestream/enabled=false |
Disable WebRTC streaming |
isaacsim.exp.full.streaming.kit |
App config with streaming enabled |
tmux¶
Session Management¶
# Create a named session
tmux new-session -d -s session-name "command"
# List sessions
tmux ls
# Attach to a session
tmux attach -t session-name
# Detach from current session
Ctrl+B then D
# Kill a session
tmux kill-session -t session-name
Pane Controls¶
| Shortcut | What it does |
|---|---|
Ctrl+B z |
Toggle zoom (fullscreen current pane) |
Ctrl+B x |
Kill current pane |
Ctrl+B d |
Detach from session |
Ctrl+B [ |
Scroll mode (q to exit) |
System¶
Process Management¶
# Find Isaac Sim processes
ps aux | grep isaacsim
# Check what's using a port
lsof -i :8765
# Check GPU usage
nvidia-smi
Networking¶
# Tailscale status
tailscale status
# Check DDS topics from host (wrapper)
~/bin/ros2 topic list
# Test Foxglove WebSocket
curl -s http://localhost:8765