The vehicle software is implemented using UliSDK to provide architecture and needed interface to the Controller. The Vehicle has two computing modules: Jetson NX and Jetson Nano. The Jetson NX is the subsystem node, hence that it has node id of 1. The Jetson Nano obtains its node id from the subsystem node that its id is assigned dynamically.

Below is a list of Comp Apps and their services of the Vehicle software:

Comp Device ID Description
nm Jetson NX 1 Node Manager on the Jetson NX
sm Jetson NX 2 Subsystem Manager of the Vehicle
nm Jetson Nano 1 Node Manager on the Jetson Nano
mobility Jetson Nano 33 Drive the Uli-Kaya

3.1 nm (Jetson NX)

It is the node manager that routes messages between subsystems and within its own subsystem. It has two ethernet interfaces, one for the inter-subsystem messages and the other for the intra subsystem communications.

3.2 sm (Jetson NX)

It is the subsystem manager that logically groups the components in both Jetson NX and Jetson Nano together. The sm is running in the Jetson NX.

3.3 nm (Jetson Nano)

It is the node manager that routes messages between the Jetson NX and Jetson Nano. The messages go out of the Uli-Kaya are forwarded to the nm in Jetson NX.

3.4 nm (Jetson Nano)

It takes drive commands from the controllers and forwards to isaac codelet that drive the Dynamixel motors. Here are the joystick message routes from the OCU to the motors:

Figure 1 Joystick message routes from the OCU to Dynamixel motors

Please refer to Section 10 ISAAC SDK Integration of 350.052.00-uli_sdk_development for details of how to integrate ISAAC codelets.

3.5 Auto Start

Vehicle software can be setup to auto start when the Jetsons start. Uli SDK provides systemctl unit file and scripts in apps/etc for auto start. The unit file and scripts need to be installed in ~/uli_etc directory.

The uli.service calls startUli.sh to start the vehicle software and calls stopUli.sh to stop vehicle software. The startUli.sh starts Uli SDK Comp Apps and then calls startIsaac.sh to start the Isaac app.

To setup auto start for the uli.service, do the following:

1. Become root

% sudo su

2.Copy uli.service to /etc/systemd/system

# cp /home/ovt/uli_etc/uli.service /etc/systemd/system

3.Enable the service:

# systemctl enable uli.service

Since the vehicle software required to start after the network interfaces are up, you also need to enable NetworkManager-wait-online.service:

# systemctl enable NetworkManager-wait-online.service