Utility scripts

Warning

The AI Accelerator requires ROS 2 Humble, so PolyScope X 10.12.1 is the latest compatible release. PolyScope X 10.13 and later use ROS 2 Jazzy and are not currently supported.

Host-side bash scripts for checking the compute box, the camera path into AIA Core, and clock sync with the robot. They run on the Jetson host as user lab, not inside the SDK Docker container.

Download:

utility_scripts.zip

Copy onto the compute box

From a PC:

scp utility_scripts.zip lab@192.168.0.100:~/

Password easybot unless you changed it. Then on the compute box:

cd ~
unzip -o utility_scripts.zip
chmod +x ~/utility_scripts/*.sh

SSH: ssh lab@192.168.0.100 (see SDK). Some scripts default to robot IP 192.168.0.10; override if yours differs.

You need sshpass for the time-sync scripts (sudo apt install sshpass if missing).

What each script does

Script

Purpose

aia_sanity_check.sh

Compare this box to a known-good AIA software baseline (OS, L4T, CUDA, Docker, SDK packages, images, running containers, disk/RAM).

debug_camera_connection.sh

Walk USB → Orbbec driver → ROS topics → AIA Core ports so you can see why the pendant has no camera stream.

setupTimeSync.sh

Configure chrony: robot is NTP master, Jetson follows (Jetson has no battery RTC; works offline).

check_time_sync.sh

Measure clock offset between Jetson and robot; print PASS/WARN/FAIL and fix hints.

aia_sanity_check.sh

Software sanity check for the AI Accelerator compute box. It compares the local machine against a reference baseline (Ubuntu 22.04, L4T R36, CUDA 12.6, aia-sdk, Isaac isaac_pkgs_app image, AIA Core / camera containers).

bash ~/utility_scripts/aia_sanity_check.sh
bash ~/utility_scripts/aia_sanity_check.sh --report ~/aia_sanity_$(date +%F).txt

Result

Meaning

PASS

Matches the expected baseline

WARN

Different but often still usable (for example a slightly newer package)

FAIL

Missing runtime, wrong arch, or a required container/image is absent

Exit code 0 if there are no FAILs (WARN-only is OK). Use this after a new SDK install, or when a customer box “does not look like the lab unit.”

debug_camera_connection.sh

Use when the Orbbec looks plugged in but PolyScope X / AIA Core has no live stream. It checks the chain:

USB camera → Camera Creator driver → {ns}_camera/color/image_raw → AIA Core Flask :35000 (and related bridges).

bash ~/utility_scripts/debug_camera_connection.sh

Optional overrides (examples):

ROBOT_IP=192.168.0.10 ROBOT_SERIAL=UR20255500010 bash ~/utility_scripts/debug_camera_connection.sh

If you omit ROBOT_SERIAL, the script tries to detect the live camera namespace from the ROS graph. Stop Orbbec Viewer first if it owns the USB device. For a GUI check outside ROS, see Orbbec Viewer.

setupTimeSync.sh

Sets up chrony so the robot clock is the time master and the compute box is the client. Perception (images, TF, detections) and robot motion share timestamps; a large offset breaks calibration and “image vs pose” correlation even when every container is up.

bash ~/utility_scripts/setupTimeSync.sh -robot_ip 192.168.0.10

It asks for root on the robot. Optional -host_ip 192.168.0.100 is informational; the script detects the host subnet.

The SDK .deb installer also offers time sync. Re-run this script if clocks drift after a reimage or network change.

check_time_sync.sh

Diagnostic only (does not rewrite chrony config). Checks chrony on the Jetson, SSHes to the robot, and measures wall-clock offset.

bash ~/utility_scripts/check_time_sync.sh --robot-pass 'ROBOT_PASSWORD'

Or set ROBOT_PASS. Defaults treat offsets ≤ 100 ms as PASS and ≥ 1000 ms as FAIL. If setup used the robot as master, you can force that interpretation:

TIME_SERVER=robot bash ~/utility_scripts/check_time_sync.sh --robot-pass 'ROBOT_PASSWORD'

If this fails, run setupTimeSync.sh, then check again.