Comms Testing

This example demonstrates how to use the SDK to perform comms testing. This is meant to be run on a CORE I/O during an Autowalk mission.

Setup Dependencies

This example needs to be run with python3, and have the Spot SDK installed. See the requirements.txt file for a list of dependencies which can be installed with pip using the command:

python3 -m pip install -r requirements.txt

Running the Example

To run the example:

On the server computer. Note that the server computer should not be associated with controls for the robot. The networks tests may behave in a way that limits controls communications to the robot.: Setup:

sudo apt update
sudo apt install iperf3

Running:

iperf3 -s

On the CORE I/O running the client (from the CORE I/O, ROBOT_IP will always be 192.168.50.3): Run:

python3 client.py ROBOT_IP --server-hostname SERVER_IP

Specifying a UDP test:

python3 client.py ROBOT_IP --protocol udp --server-hostname SERVER_IP

Specifying a different iperf3 server port:

python3 client.py ROBOT_IP --server-port 1234 --server-hostname SERVER_IP

Running the test without running an Autowalk mission:

python3 client.py ROBOT_IP --server-hostname SERVER_IP --run-without-mission

Running with Docker

Alternatively, this example can be run with Docker. To do so, just build and run the image. If you are building on a separate machine, you’ll also need to import the image to the CORE I/O, or package it as a Spot Extension.

Build and saved the image for CORE I/O:

sudo docker build -t comms_test:l4t --platform linux/arm64 .
sudo docker save comms_test:l4t | pigz > comms_test_l4t.tgz

Copy the image file to the CORE I/O and load it with the command:

sudo docker load -i comms_test_l4t.tgz

Run the image:

sudo docker run -it -v $(pwd):/comms_out/ --network host comms_test:l4t ROBOT_IP --server-hostname SERVER_IP

which will ask for username/password, or pass the environment variables BOSDYN_CLIENT_USERNAME and BOSDYN_CLIENT_PASSWORD from a .env file with --env-file .env in the command above.

The argument -v $(pwd):/comms_out/ allows the Docker container to save files to the current directory, so the resulting csv output file will be in the directory you just ran from. For different configurations of the comms test, see above.