Isaac SDK provides Docker containers to run the navigation stack on a Carter v2.3 robot. The following steps will guide you through launching the navigation stack and making the Carter robot move autonomously. To follow this guide, you will need the following equipment:
A Carter v2.3 robot
A Dualshock 5 gamepad
a laptop
First, turn on the robot and wait for it to connect to the network. Execute the following to check that the robot has connected to the network:
ping carter-v23-<robot-id>.client.nvidia.com
Replace <robot-id>
with the number of your Carter robot, most likely a number between 1 - 12.
Once you can successfully ping the robot, you can SSH into it.
ssh nvidia@carter-v23-<robot-id>.client.nvidia.com
Before starting the navigation stack, you need to connect the gamepad to the robot: Press the large P button in the center of the gamepad. It should automatically connect to the robot. The connection is successful when the gamepad LED strips stop flashing and shine blue.
Pull and run the docker container with the navigation stack. To pull a container, you will need access to the
nvcr.io
NVIDIA container registry.
docker login nvcr.io
docker run --entrypoint bash -it --gpus all --rm --network=host --privileged \
-v /dev:/dev \
-v /sys:/sys \
nvcr.io/nvstaging/isaac-amr/navigation_stack:master-aarch64
# In the docker container:
/app/extensions/navigation_stack/apps/navigation_stack/navigation_stack <CLI_ARGS>
Make sure to replace the <CLI_ARGS> with the correct command line arguments. You will likely
want to pass the path to a config file with `-c path/to/config`. The entire CLI reference can be
printed using the ``--help`` argument; you can also refer to the :ref:`Navigation Stack Configuration`
page.
Now that the Navigation Stack is running, you can visualize it by opening
http://carter-v23-<robot-id>:3000
in your browser. You should see the robot visualized on top of a 2D occupancy map.Additionally, you should see a visualized circle with the subscript
robot/goal
. This is the marker that represents the goal position of the robot. If the goal position is not on top of the robot, you should also see a visualized path starting at the robot and ending at the goal.You can update the robot goal position by clicking and dragging the circle representing the goal position.
While the robot has planned a path to its goal, you have probably observed that it is not yet moving. That is because the deadman switch is enabled by default: whenever the deadman-switch button is not pressed, the robot is not allowed to move. By default, the deadman switch is set to the L1 button on the gamepad.
As soon as you press the L1 button, you should see the robot moving towards its goal. When the robot is moving, you can always release the L1 button to stop it. Additionally, you can use the two joysticks on the gamepad to override the navigation stack and remote control the robot.
As soon as the robot reaches its goal, it will automatically select a new random goal and drive there. You are, however, free to update the goal by click-and-dragging it as mentioned before at any point in time.
Coming soon…