Skip to content

EchoPilot AI Documentation

Overview

The EchoPilot AI is a highly integrated vehicle control and edge computing system designed to power next-generation uncrewed systems. The EchoPilot AI supports computer vision, machine learning, autonomy, artificial intelligence and other advanced edge computing needs. The EchoPilot AI implements a STM32H7-based autopilot compatible with the popular Ardupilot and PX4 projects, and uses Pixhawk open-hardware connectivity standards.

The power of an advanced autopilot is seamlessly combined with high-performance computing (including AI and machine learning), IP networking, cloud connectivity and flexible low-latency hardware accelerated video encoding.

EchoPilot AI

Autopilot Sensors

Function Part Number
IMU 1 ICM42688P
IMU 2 ICM42688P
IMU 3 ICM42688P
Barometer 1 MS5611
Magentometer PNI RM3100
Add-On INS VectorNAV VN-X00 (optional)

The hardware is configured into a two board stack. The upper board is the EchoPilot AI board, and it contains the flight management unit, peripherals, sensors and Nvidia Jetson interface. The lower board is the Carrier Board, and it handles power regulation and connectors. Two high-density FX23L-80S-0.5SV 80-pin board-to-board connectors are used between the two boards.

This design philosophy achieves multiple goals:

  1. For integrated vehicle solutions, it is often desired to design a custom carrier board to add additional components, minimize cables/wiring and integrate power distribution. The EchoPilot AI's design allows you to optionally design a custom carrier board (using the provided Carrier Board as a reference design).
  2. A stacked solution minimizes X-Y size in exchange for moving into the Z axis, which is an acceptable compromise for most uncrewed vehicles.
  3. Moving the switching power regulators to the Carrier board reduces noise near the sensitive sensors on EchoPilot AI board and reduces the thermal load of the EchoPilot AI mainboard.
  4. A stacked design is more future proof, as peripherals can often be added to the Carrier Board without a re-design of the EchoPilot AI main board.

Quick Start Guide

Accessing the Jetson via the console

These instructions assume you have a Jetson module that is already flashed. If you have a new Jetson module that is not flashed, please see Building and Flashing a Jetson with L4T instructions.

Warning

Do not run the Jetson SOM without a heatsink. The module may be damaged or performance throttled. See connecttech.com for recommended active and passive heatsinks.

  1. Assemble the EchoPilot AI board with a Carrier Board, using 8mm standoffs between the two boards.
  2. If a Jetson Module is not already installed in the EchoPilot AI, install the module now.
  3. Attached a USB cable between your host computer and J7 (Console) on the Carrier Board Console USB Connection
  4. In step 3, your host computer should have enumerated a virtual comm port. You will now need to find the name of the port.

Info

On Windows: Open Device Manager (Start → Control Panel → Hardware and Sound → Device Manager) Look in the Device Manager list, open the category "Ports", and note the COM port added USB Serial Port (COM?) (e.g., COM10).
On Linux: Run dmesg -w and then plug in unplug and replug in the USB cable. You should see the name of the device added, typically FTDI USB Serial device converter now attached to ttyUSB? (e.g., ttyUSB0).

Use a terminal program to connect to the Jetson's console at 115200 baud, 8N1.

Info

On Windows: We recommend Putty or TeraTerm.
On Linux: We recommend Picocom. Install with sudo apt-get install picocom. Use with picocom /dev/ttyUSB? -b 115200. To exit picocom, use Ctrl-a Ctrl-x.

Power the Carrier Board with 7-56VDC source capable of supplying up to 4A.

Warning

If using a bench supply with over-current protection, we recommend turning it OFF. The boot process requires short bursts of high current and over-current protection on some supplies will result in a failed boot.

You should now see the boot messages in your console, and once boot is complete, you will see a login prompt.

Note

The default username is echopilot and the default password is echopilot

Success

At this point you are logged into the Jetson and can begin configuring the network, installing applications, etc.

Connecting to the FMU via the USB connector

  1. Attach a USB cable between the host computer and the FMU USB connector (J7).
  2. Start a ground control application on the host computer such as QGroundControl or Mission Planner.

Info

QGroundControl: Will automatically connect.
Mission Planner: Select the appropriate COM port at the top right, 115200, then click CONNECT.

Board Components and Connectors

EchoPilot AI

Top Side Components

Bottom Side Components

Carrier Board

Top Side Components

Bottom Side Components

Pinouts

For EchoPilot AI Pinouts, refer to the EchoPilot AI Pinout Page.

For Carrier Board Pinouts, refer to the Carrier Board Pinout Page.

Jetson IO Availability

The following Jetson IO pins are brought out to the B2B connector J5 and are available for customer use:

Note

*Changes to the direction and functionality of these pins may be possible based on the Jetson pinmux configuration.

Jetson Pin Direction B2B (J5) Voltage Default Use Pin Description (Xavier) Pin Description (Nano)
PIN 211 O 36 +1.8V Audio MCLK AUDIO_MCLK AUDIO_MCLK
PIN 212 IO 38 +1.8V Spare IO GPIO3_PQ.01 GPIO3_PV.01
PIN 218 IO 37 +1.8V Spare IO GPIO3_PCC.04 GPIO3_PY.02
PIN 126 I 74 +3.3V* Iridium Ring GPIO3_PCC.00 GPIO3_PI.02
PIN 206 I 73 +3.3V* Iridium NA GPIO3_PR.00 GPIO3_PV.00

Note

*Pins 126 and 206 are level-shifted from 1.8V to 3.3V prior to the B2B (J5) connector via a TXS0108ERGYR level translator.

The following Jetson IO is used internally by the EchoPilot AI:

Warning

*Changes to the pinmux affecting these pins may break functionality.

Jetson Pin Direction Voltage Use Pin Description (Xavier) Pin Description (Nano)
PIN 87 Pwr 5V Vbus Detect USB_VBUS_EN0 USB_VBUS_EN0
PIN 128 O +1.8V SD Card Enable GPIO3_PCC.02 GPIO3_PH.07
PIN 130 O +1.8V Camera Mux GPIO3_PCC.03 GPIO3_PI.00
PIN 208 I +1.8V SD Card Detect GPIO3_PQ.02 GPIO3_PZ.02

The following Jetson IO pins are brought out to the FAN (J38) connector:

Jetson Pin Direction Voltage Use Pin Description (Xavier) Pin Description (Nano)
PIN 230 O +5V Fan PWM GP_PWM6 PM3_PWM3
PIN 127 I +5V Fan Tach GPIO3_PQ.02 GPIO3_PI.01

Mechanical Drawings and STEP Files

XY Dimensions

Z Dimensions (without Carrier Board)

With Carrier Board Attached

Z Dimensions (with Carrier Board)

EchoPilot AI without a Carrier Board Attached

EchoPilot AI 3D Model (STEP) File Download (right click, save link as)

EchoPilot AI Universal Carrier Board 3D model (STEP) File Download (right click, save link as)

EchoPilot AI PWM Breakout Board 3D model (STEP) File Download (right click, save link as)

Notes on Vibration Isolation

Many commercial autopilots use foam vibration isolation on a daughterboard containing the IMUs. You'll notice the EchoPilot AI does not use this type of design and the IMUs are mounted directly to the circuit board. The reason for this is that we feel better vibration isolation can be achieved (if required) by leveraging the mass of the entire EchoPilot system (carrier board, main board and Jetson SOM) rather than the very small mass of an IMU daughterboard. For the types of vibrations encountered by large-prop multi-rotors and piston-based engines (50-90 Hz), the total mass of the EchoPilot system mounted on vibration silicone isolators or wire rope isolators are very effective. This design has the added benefits of protecting critical electronics from exposure to continuous vibrations.

Note

Note that for small and medium multi-rotors and electric planes, electric quadplanes and other vehicle types, vibration isolation is very rarely needed.

Using the SD Card

The SD card supports hot-plugging. When connected, /dev/mmcblk1p1 should be found by the operating system. To mount this drive to a directory (e.g., /sdcard) use the following command:

mkdir /sdcard
sudo mount /dev/mmcblk1p1 /sdcard
To unmount it:
sudo umount /dev/mmcblk1p1 /sdcard

Configure the Network

Linux for Tegra uses networkmanager (nmcli) for its network interfaces. Below you will find a few commands for common network tasks.

Show connections:
nmcli con show

Delete the default connection ("Wired connection 1") and set up a static connection called static-eth0 with an IP of 172.20.1.100, a netmask of 255.255.0.0 and a gateway of 172.20.2.100:

sudo nmcli c delete "Wired connection 1"
sudo nmcli c add con-name static-eth0 ifname eth0 type ethernet ip4 172.20.1.20/16 gw4 172.20.2.100
sudo nmcli c up static-eth0

Change IP address of static-eth0 connection to 192.168.1.4/16:

sudo nmcli con mod static-eth0 ipv4.address 192.168.1.1/16

Change gateway of static-eth0 connection to 192.168.1.1:

sudo nmcli con mod static-eth0 ipv4.gateway 192.168.1.1

Change dns of static-eth0 connection to 8.8.8.8:

sudo nmcli con mod static-eth0 ipv4.dns "8.8.8.8"

Take down/up of static-eth0:

sudo nmcli con down static-eth0
sudo nmcli con up static-eth0
Delete static-eth0 connection:
sudo nmcli c delete "static-eth0"

Add new connection called static-eth0 with IP 172.20.2.22/16 and gateway 172.20.2.100:

sudo nmcli c add con-name static-eth0 ifname eth0 type ethernet ip4 172.20.2.22/16 gw4 172.20.2.100

Add a persistent route so that multicast traffic to 224.x.x.x goes to the static-eth0 connection:

sudo nmcli con mod static-eth0 +ipv4.routes "224.0.0.0/8"

Change eth0 to enable remove static IP and enable DHCP (In this case, it would make more sense to delete the connection since it is named static-eth0 and call it something else, but for edification:

sudo nmcli con mod static-eth0 ipv4.address ""
sudo nmcli con mod static-eth0 ipv4.method auto
sudo nmcli con down static-eth0
sudo nmcli con up static-eth0

Interfacing the Jetson to the Autopilot

The autopilot has a high-speed serial interface between the STM32H7 and the Jetson SOM. The Jetson UART1 (pins 203, 205) are connected to the autopilot's USART3 (Typically Telem2). To enable MAVLink data, you will need to check and/or modify PX4/Ardupilot parameters to ensure that Telem2 is set to MAVLink and set the baud rate to the desired value. A typical baud rate is 500,000 but you can use any baud rate you wish as long as the application receiving MAVLink on the Jetson is configured to match.

On the Jetson side, UART1 is typically /dev/ttyTHS2.

There are many options available for MAVLink routing and handling. One typical application is routing the MAVLink data over a network - and MAVLink Router is a popular open-source solution. To use MAVLink Router to route MAVLink packets from UART1 (/dev/ttyTHS2) to a UDP endpoint (192.168.1.10:14550) on the network, use the following command:

$ mavlink-routerd -e 192.168.1.10:14550 /dev/ttyTHS2:5000000

If you have issues accessing /dev/ttyTHSX, please disable nvgetty and ensure you are a member of the dialout group:

sudo systemctl stop nvgetty
sudo systemctl disable nvgetty
sudo usermod -aG dialout $USER

Note

Reboot to apply changes.

CAN Termination

The 2 CAN connections from the FMU (CAN1 and CAN2) and the 1 from the Jetson are driven by LTC2875 transceivers and contain termination resistors at the drivers. Should you desire to remove these termination resistors (e.g., you want to place the EchoPilot AI in the middle of a CAN chain rather than at the end), refer to the following:

CAN Resistor Label Notes
FMU CAN1 R19 and R156 Near U4 and U45, size 0402, see important info below
FMU CAN2 R9 Near U3, size 0402
JETSON CAN1 R95 Near U32 (Rev1+ only), size 0402

Note

FMU CAN1 default configuration provides connectivity between the FMU and the RemoteID system. Therefore, two CAN transceivers with termination resistors are installed by default. If you wish to use CAN1 with the EchoPilot at the END of the chain, remove R156. If you wish to use the EchoPilot in the MIDDLE of a chain, remove both R19 and R156.

Remote ID Subsystem

The Remote ID system is based on an ESP32-C3 and is designed to work with the ArduRemoteID project and Open Drone ID standards.

ArduRemoteID is is an implementation of a MAVLink and DroneCAN OpenDroneID transmitter. It aims to provide a transmitter solution for the FAA standard RemoteID requirement, meeting the transmitter component of the ASTM F3586-22 Means of Compliance. It also aims to be compliant with the RemoteID regulation in the EU.

It is the responsibility of the user to configure the ArduRemoteID firmware in a way that it is compliant with the local RemoteID regulation. For instance, in the USA it is mandatory that UAV manufacturers submit a DoC (Declaration of Conformance) to the FAA where they state that their product is compliant with the RemoteID regulation.

To flash ArduRemote ID to the ESPS32-C3, you will need a TC2030-USB-NL cable from tag-connect.com and follow the flashing instructions from the AruRemoteID project.

To configure the Remote ID system, parameters can be accessed from DroneCAN (via Mission Planner or DroneCAN GUI) or with MAVLink. To use DroneCAN, SLCAN will need to be enabled to allow the autopilot to connect to the CANBUS through USB.

For making changes to DroneCAN devices, see the instructions here. The FMU is connected to the ESP32-C3 via CAN1, with the default configuration providing termination resistors at both the FMU side and ESP32 side.