Skip to content

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:

systemctl is-active gdm
systemctl --user is-active sunshine
systemctl --user is-enabled sunshine

Sunshine autostart should remain disabled so the desktop stack stays off until explicitly started:

disabled

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:

route -n get default
ping -c 2 192.168.8.1

Expected default gateway:

192.168.8.1

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:

gateway: 192.168.8.1
interface: en0

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

Zensical (Docs Site)

# Serve locally (from robot-docs directory)
cd ~/GIT/robot-docs
source .venv/bin/activate
zensical serve --dev-addr 0.0.0.0:8000

# Build static site
zensical build