# FAQ

### What is the Linux distribution provided with your board ? Do you use a specific kernel ?

Currently, Jetson Orin NX with DroneCore 2.0 is running modified JP 5.1.2, which is based on Ubuntu 20 and Linux Kernel 5.10. Software-wise our adaptation of JP 5.1.2 does not hinder any features declared by Nvidia, it only optimizes some drivers to be compatible with DroneCore.

As per your request, ROS1 is working without issues, for Ubuntu 20 and arm64 architecture it is available and supported even in binary release.

Adaptation of JetPack 6.2 is on the roadmap (as of Q1 2025). This brings Ubuntu 22, new features from Nvidia, and also binary support for ROS2 for arm64 architecture. With our deployment tools, you can decide, which release of the system is more suitable for you.

### What are possible ways to write software for the UAV?

The drone's onboard computer (OBC) contains a[ Jetson Xavier NX](https://www.nvidia.com/en-us/autonomous-machines/embedded-systems/) on [DroneCore 1.2](https://airvolute.com/dronecore-1-2/) board. It is installed with [JetPack SDK](https://developer.nvidia.com/embedded/jetpack), which is a Nvidia modified version of Ubuntu 18.04. Therefore, the code can be developed directly on the OBC by plugging in a display (micro HDMI) and other peripherals (4x USB 3.0, 1x Gigabit Ethernet port). However, it is advisable to access it using SSH connection (over USB, Ethernet, or WiFi) which allow full access to the operating system.

For example, [Microsoft Visual Studio Code](https://code.visualstudio.com/) with installed extension [Remote-SSH](https://code.visualstudio.com/docs/remote/ssh), allows an easy way of coding on the device from the host PC. To share the internet to the device, we are using [the hard method in this guide](https://elinux.org/Jetson/Remote_Access).

### What is the language of preinstalled software and libraries? Is knowledge of Python and C++ required or useful?

The preinstalled software mostly focuses on, but not limited to, programming languages: Python, C++, and cuda. JetPack SDK comes with multiple libraries for computer vision and machine learning, such as [OpenCV](https://opencv.org/), [GStreamer](https://gstreamer.freedesktop.org/), [VPI](https://developer.nvidia.com/embedded/vpi), [Multimedia API](https://docs.nvidia.com/jetson/l4t-multimedia/index.html), [CUDA](https://docs.nvidia.com/cuda/archive/11.4.4/), [cuDNN](https://developer.nvidia.com/cudnn), [TensorRT](https://developer.nvidia.com/tensorrt). For drone software development, the OBC comes with preinstalled [ROS Melodic](https://wiki.ros.org/melodic) and [MAVROS](https://wiki.ros.org/mavros), which support both C++ and Python.

### Can I use Pytorch to program the drone?

[PyTorch can be installed on a Jetson device](https://docs.nvidia.com/deeplearning/frameworks/install-pytorch-jetson-platform/index.html), it is important to specify the correct version of JetPack (4.6.1) and PyTorch version (1.11.0a0+bfe5ad28) based on [the compatibility matrix](https://docs.nvidia.com/deeplearning/frameworks/install-pytorch-jetson-platform-release-notes/pytorch-jetson-rel.html#pytorch-jetson-rel), so that it is compatible with the installed machine learning SDKs. However we advise against training more complex DNNs on the device as it can be quite time consuming.

The preferrable approach is to prototype, train and verify the DNN on the host PC, load it to the device, and then [build a TensorRT engine](https://pytorch.org/TensorRT/), which will [leverage the potential of the Tegra GPU](https://developer.nvidia.com/blog/accelerating-inference-up-to-6x-faster-in-pytorch-with-torch-tensorrt/). It can then be used in multiple ways, for example: [torch-tensorrt in python](https://pytorch.org/TensorRT/getting_started/getting_started_with_python_api.html#getting-started-with-python-api), [Nvidia DeepStream SDK](https://developer.nvidia.com/deepstream-sdk), [Triton Inference Server](https://developer.nvidia.com/triton-inference-server), [Jetson Inference](https://github.com/dusty-nv/jetson-inference) or [pure TensorRT solution](https://docs.nvidia.com/deeplearning/tensorrt/developer-guide/index.html#c_topics).

### What are the options to apply geofencing for the drone to prevent it flying beyond a certain area?

[Geo-Fence](https://ardupilot.org/copter/docs/common-geofencing-landing-page.html) is supported by [ArduCopter autopilot](https://ardupilot.org/copter/), which is running by default on the onboard [The Cube Orange+](https://www.cubepilot.com/#/cube/features). It can be set up using a ground station like [Mission Planner](https://ardupilot.org/planner/) or [QGroundControl](http://qgroundcontrol.com/), or [on-device using MAVROS](https://masoudir.github.io/mavros_tutorial/Chapter1_ArduRover_with_CLI/Step4_How_to_set_and_get_parameters/).

### Is it possible to limit the performance of Orin NX on DroneCore?

Technically, yes.

### What is the power consumption of DroneCore 2.0 with maximal and minimal usage of the Jetson?

If Cube Orange+ is installed and Jetson is running just default firmware, total power consumption is \~11W from which the board itself is \~3W, Jetson draws \~7W, and Cube draws \~1W. Maximum power consumption of Jetson Orin NX itself is 25W according to the product sheet.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.airvolute.com/autopilots/faq.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
