Carter

Carter is a robotics platform using a differential base from Segway, a Velodyne P16 for 3D range scans, a ZED camera, an IMU and a Jetson TX2 as the heart of the system. Together with custom mounting brackets it results in a powerful and robust demonstration platform for the Isaac Navigation stack.

Running the Carter Application

1. Set up the Carter robot as detailed in the Setting up Software on Carter section.

Note

These Carter software setup instructions are specific to Carter version 2.0. For Carter version 1.0 instructions, see the Isaac SDK 2020.2 documentation <https://docs.nvidia.com/isaac/archive/2020.2/doc/index.html>.

2. Build an ARM target and deploy it to the robot with the following command:

Copy
Copied!

bob@desktop:~/isaac/sdk$./../engine/engine/build/deploy.sh --remote_user <username> -p //apps/carter:carter-pkg -d jetpack45 -h <robot_ip_address> Where <username> is your user name on the robot (nvidia by default), and <robot_ip_address> is the IP address of the robot. 3. SSH into the robot with the following command: Copy Copied! bob@desktop:~/isaac/sdk$ ssh <username>@<robot_ip_address>

4. Run the carter application on the robot with the following command:

Copy
Copied!

bob@jetson:~/\$ ./run apps/carter/carter.py --map_json <map_file> --robot_json <robot_file>

5. Connect a PS4 gamepad. This can be both used to control the robot and is also required as a deadman switch.

Note

By default, the robot attempts to drive to a randomly chosen target goal. Closely monitor the robot and press the deadman switch on the gamepad to activate the robot. See the Joystick section for more information.

Carter Application Nodes

The carter application uses all the nodes from the navigation stack and adds the following robot-specific nodes:

• LidarDriver: A node which receives 3D range scans from a Velodyne P16 on a network port and publishes them as a LidarScan message.
• RangeScanFlattening: Flattens a lidar message into a flat 2D range scan which is consumed by the navigation stack.
• SegwayRMPDriver: Communicates with the Segway hardware and is used to send control commands to the Segway and to receive wheel odometry data back from the Segway.
• Joystick: A generic joystick driver which publishes user input from a connected gamepad.
• SegwayJoystick: Consumes joystick data, checks for the deadman switch and decides between automatic or manual control mode based on the user input.