Skip to content

Commit

Permalink
REL.10.01.00.03. Compatible with: Processor SDK Linux for Edge AI 10.…
Browse files Browse the repository at this point in the history
…01.00.03
  • Loading branch information
junechul committed Dec 7, 2024
1 parent 3b282f3 commit 4c6c344
Show file tree
Hide file tree
Showing 60 changed files with 2,371 additions and 234 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
Change Log
==========

## Release 10.1.0 (2024-12-13)

- Pre-built Robotics SDK Docker images are now publicly available: [Robotics SDK Docker Images](https://github.com/TexasInstruments/edgeai-robotics-sdk/pkgs/container/robotics-sdk). Please refer to the "Quick Start Guide" in [this documentation section](docker/setting_docker_ros2.md). All SDK demos are pre-built and installed in the SDK container filesystem.
- The GIT repository for the Robotics SDK has been moved to GitHub: [https://github.com/TexasInstruments/edgeai-robotics-sdk](https://github.com/TexasInstruments/edgeai-robotics-sdk).
- The build system for the Vision-Apps Linux libraries for ARM64 Ubuntu/Debian, specifically for TI EdgeAI platforms (TDA4VM, AM62A, AM67A, AM68A, and AM69A), is now public: [https://github.com/TexasInstruments-Sandbox/edgeai-vision-apps-lib-build](https://github.com/TexasInstruments-Sandbox/edgeai-vision-apps-lib-build).
- The build system for the open-source deep-learning runtime libraries (ONNX Runtime, TFLite Runtime, NEO-AI-DLR) and TIDL runtime modules for ARM64 Ubuntu/Debian, specifically for TI EdgeAI platforms, is now available: [https://github.com/TexasInstruments-Sandbox/edgeai-osrt-libs-build](https://github.com/TexasInstruments-Sandbox/edgeai-osrt-libs-build).

## Release 10.0.0 (2024-08-16)

- The Robotics SDK has been migrated to be compatible with Yocto Scathgap-based Processor-SDK Linux 10.0.
Expand Down
118 changes: 23 additions & 95 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,104 +1,63 @@
# Robotics SDK Introduction
# Robotics SDK

## Git Repository
## Robotics SDK User Guide

[Robotics SDK Git Repository](https://github.com/TexasInstruments/edgeai-robotics-sdk)
| Platform | Link to Documentation |
| ---------- | ------------------------------------------------------------------------------------------------------------- |
| **AM62A** | [Robotics SDK for AM62A](https://software-dl.ti.com/jacinto7/esd/robotics-sdk/10_01_00/AM62A/docs/index.html) |
| **TDA4VM** | [Robotics SDK for TDA4VM](https://software-dl.ti.com/jacinto7/esd/robotics-sdk/10_01_00/TDA4VM/docs/index.html) |
| **AM67A** | [Robotics SDK for AM67A](https://software-dl.ti.com/jacinto7/esd/robotics-sdk/10_01_00/AM67A/docs/index.html) |
| **AM68A** | [Robotics SDK for AM68A](https://software-dl.ti.com/jacinto7/esd/robotics-sdk/10_01_00/AM68A/docs/index.html) |
| **AM69A** | [Robotics SDK for AM69A](https://software-dl.ti.com/jacinto7/esd/robotics-sdk/10_01_00/AM69A/docs/index.html) |

## User Guide Documentation
## Robotics SDK: Introduction

```{only} tag_j7x
- {{'[Robotics SDK for TDA4VM](https://software-dl.ti.com/jacinto7/esd/robotics-sdk/{}/TDA4VM/docs/index.html)'.format(SDK_VER)}}
- {{'[Robotics SDK for AM67A](https://software-dl.ti.com/jacinto7/esd/robotics-sdk/{}/AM67A/docs/index.html)'.format(SDK_VER)}}
- {{'[Robotics SDK for AM68A](https://software-dl.ti.com/jacinto7/esd/robotics-sdk/{}/AM68A/docs/index.html)'.format(SDK_VER)}}
- {{'[Robotics SDK for AM69A](https://software-dl.ti.com/jacinto7/esd/robotics-sdk/{}/AM69A/docs/index.html)'.format(SDK_VER)}}
```
```{only} tag_am62a
- {{'[Robotics SDK for AM62A](https://software-dl.ti.com/jacinto7/esd/robotics-sdk/{}/AM62A/docs/index.html)'.format(SDK_VER)}}
```
The Robotics SDK provides a ROS-based robotics software development environment for Texas Instruments Edge AI Processors, including AM62A, TDA4VM, AM67A, AM68A, and AM69A. It offers software building blocks and example demos that can be leveraged in robotics software development. The SDK operates in Docker container environments on the Processor SDK Linux:

## Overview
- [Processor SDK Linux for AM62A](https://www.ti.com/tool/download/PROCESSOR-SDK-LINUX-AM62A)
- [Processor SDK Linux for TDA4VM](https://www.ti.com/tool/download/PROCESSOR-SDK-LINUX-SK-TDA4VM)
- [Processor SDK Linux for AM67A](https://www.ti.com/tool/download/PROCESSOR-SDK-LINUX-AM67A)
- [Processor SDK Linux for AM68A](https://www.ti.com/tool/download/PROCESSOR-SDK-LINUX-AM68A)
- [Processor SDK Linux for AM69A](https://www.ti.com/tool/download/PROCESSOR-SDK-LINUX-AM69A)

```{only} tag_j7x
The Robotics SDK provides a robotics software development environment for TI Jacinto Processors. It also offers software building blocks and example demos that can be leveraged in robotics software development. The SDK runs in Docker container environments on:
The Robotics SDK enables:

- [Processor SDK Linux for TDA4VM {{RELEASE}}](https://www.ti.com/tool/download/PROCESSOR-SDK-LINUX-SK-TDA4VM)
- [Processor SDK Linux for AM67A {{RELEASE}}](https://www.ti.com/tool/download/PROCESSOR-SDK-LINUX-AM67A)
- [Processor SDK Linux for AM68A {{RELEASE}}](https://www.ti.com/tool/download/PROCESSOR-SDK-LINUX-AM68A)
- [Processor SDK Linux for AM69A {{RELEASE}}](https://www.ti.com/tool/download/PROCESSOR-SDK-LINUX-AM69A)
```
- Optimized implementation of computation-intensive software building blocks (including deep-learning, vision, perception, mapping and localization) on deep-learning core (C7x/MMA), DSP cores, hardware accelerators integrated into the processors.
- Application software development on the target using libraries optimized on the TI Processor, along with many open-source libraries and packages including, for example, OpenCV, Point-Cloud Library (PCL), and more.

```{only} tag_am62a
The Robotics SDK provides a robotics software development environment for TI Sitara Processors. It also offers software building blocks and example demos that can be leveraged in robotics software development. The SDK runs in Docker container environments on:
- [Processor SDK Linux for AM62A {{RELEASE}}](https://www.ti.com/tool/download/PROCESSOR-SDK-LINUX-AM62A)
```

```{only} tag_ros1n2
In the next section, you will find detailed steps for setting up Docker container environments for ROS {{ROS1_DISTRO}} and ROS 2 {{ROS2_DISTRO}} on the Processor SDK Linux for Edge AI. The Robotics SDK allows:
```
```{only} tag_ros2only
In the next section, you will find detailed steps for setting up Docker container environments for ROS 2 {{ROS2_DISTRO}} on the Processor SDK Linux for Edge AI. The Robotics SDK allows:
```

- Optimized software implementation of computation-intensive software building blocks (including deep-learning, vision, perception, mapping and localization) on deep-learning core (C7x/MMA), DSP cores, hardware accelerators built-in on the processors.
- Application software development on the target using libraries optimized on the TI Processor along with many open-source libraries and packages including, for example, OpenCV, Point-Cloud Library (PCL), and more.

Figure 1 shows the software libraries and components provided by the Robotics SDK.
### Robotics SDK: Software Stack

![](docs/tiovx_ros_sw_stack.png)
<figcaption>Figure 1. Robotics SDK: Software Stack (Note: hardware diagram varies depending on the platform.) </figcaption>
<br />

### TI Vision Apps Library

The TI Vision Apps Library is included in the pre-built base image for the Processor SDK Linux for Edge AI. The library provides a set of APIs, including:

- TI OpenVX kernels and software infrastructure
- Imaging and vision applications
- Perception applications
- Advanced driver-assistance systems (ADAS) applications

### Open-Source Deep-Learning Runtime
### Support for Open-Source Deep-Learning Runtime

The Processor SDK Linux for Edge AI also supports the following open-source deep-learning runtime libraries:

- TVM/Neo-AI-DLR
- TFLite Runtime
- ONNX Runtime

For more details on open-source deep-learning runtime on TI Processors, please check [TI Edge AI Cloud](https://dev.ti.com/edgeai/). The Robotics SDK provides a versatile vision CNN node optimized for TI Processors that supports many deep-learning models for object detection, semantic segmentation, and 6D pose estimation operations.

Figure 2 shows a representative deep-learning and compute-intensive demo application developed with the Robotics SDK.

![](docs/tiovx_ros_demo_diagram.svg)
<figcaption>Figure 2. Example Demo Application with Robotics SDK </figcaption>
<br />

## Setting Up Robotics SDK Docker Container Environment

This section describes how to set up the Robotics SDK on top of the Processor SDK Linux for Edge AI. To get started, please refer to our [Setting Up Robotics SDK](docker/README.md) guide.

## Sensor Driver Nodes

The following ROS nodes for cameras have been tested and are supported by the SDK:
The following ROS nodes for cameras and radar sensors are supported by the SDK:

```{only} tag_j7x
- [USB Stereo Camera Capture Node for ZED Cameras](ros2/drivers/zed_capture/README.md)
- [GStreamer-based Camera Capture Node](ros2/drivers/gscam2/README_TI.md)
- [USB Mono Camera Capture Node](ros2/drivers/mono_capture/README.md)
- [mmWave Radar Driver Node](docs/radar_driver_node_ros2.md)
```
```{only} tag_am62a
- [GStreamer-based Camera Capture Node](ros2/drivers/gscam2/README_TI.md)
- [USB Mono Camera Capture Node](ros2/drivers/mono_capture/README.md)
- [mmWave Radar Driver Node](docs/radar_driver_node_ros2.md)
```


## Demo Applications

The SDK supports the following out-of-box demo applications:

```{only} tag_j7x
- [Stereo Vision Processing Accelerated on LDC and SDE](ros2/nodes/ti_sde/README.md)
- [Semantic Segmentation CNN Accelerated on C7x/MMA](ros2/nodes/ti_vision_cnn/README.md)
- [Object Detection CNN Accelerated on C7x/MMA](ros2/nodes/ti_vision_cnn/README_objdet.md)
Expand All @@ -108,45 +67,14 @@ The SDK supports the following out-of-box demo applications:
- [Vision Object Detection with 3D Spatial Information](ros2/nodes/ti_objdet_range/README.md)
- [Camera + Radar Fusion Accelerated on C7x/MMA](ros2/nodes/ti_objdet_radar/README.md)
- [Visual Localization Accelerated on C7x/MMA](ros2/nodes/ti_vl/README.md) (for TDA4VM, AM68A, and AM69A only)
<!-- - [2D Lidar SLAM (open-source)](ros1/slam/README.md)
- [AprilTag Detection (open-source)](docs/april_tag.md) -->
```
```{only} tag_am62a
- [Semantic Segmentation CNN Accelerated on C7x/MMA](ros2/nodes/ti_vision_cnn/README.md)
- [Object Detection CNN Accelerated on C7x/MMA](ros2/nodes/ti_vision_cnn/README_objdet.md)
- [Human Pose Estimation CNN Accelerated on C7x/MMA](ros2/nodes/ti_vision_cnn/README_humanpose.md)
- [Camera + Radar Fusion Accelerated on C7x/MMA](ros2/nodes/ti_objdet_radar/README.md)
<!-- - [2D Lidar SLAM (open-source)](ros1/slam/README.md)
- [AprilTag Detection (open-source)](docs/april_tag.md) -->
```

```{only} tag_j7x
![](ros2/nodes/ti_estop/docs/estop_rviz.png)
```
```{only} tag_am62a
![](ros2/nodes/ti_vision_cnn/docs/humanpose_rviz.jpg)
```

![](ros2/nodes/ti_objdet_radar/docs/objdet_radar_rviz.jpg)

<figcaption>Figure 3. Demo Application Examples </figcaption>
<br />

## Scope of Robotics SDK

```{only} tag_j7x
![](docs/sdk_scope_j7x.png)
\* Visual location is supported only on TDA4VM, AM68A, and AM69A.
```
```{only} tag_am62a
![](docs/sdk_scope_am62a.png)
```

## Limitations and Known Issues

See [known_issues.md](docs/known_issues.md) for a list of limitations and known issues.

## Change Log

See [CHANGELOG.md](CHANGELOG.md) for the change log.
Expand Down
14 changes: 7 additions & 7 deletions docker/Dockerfile.arm64.ti_libs
Original file line number Diff line number Diff line change
Expand Up @@ -93,27 +93,27 @@ RUN apt-get update && \

# git-clone edgeai-gst-apps
WORKDIR /opt
RUN git clone --single-branch --branch 10.01.00.02 https://github.com/TexasInstruments/edgeai-gst-apps.git
RUN git clone --single-branch --branch 10.01.00.03 https://github.com/TexasInstruments/edgeai-gst-apps.git

# install apps-utils
RUN /opt/edgeai-gst-apps/scripts/install_apps_utils.sh -b 10.01.00.02 && \
RUN /opt/edgeai-gst-apps/scripts/install_apps_utils.sh -b 10.01.00.03 && \
rm -rf /opt/edgeai-apps-utils

# install dl-inferer
RUN git clone --single-branch --branch 10.01.00.02 https://git.ti.com/cgit/edgeai/edgeai-dl-inferer && \
RUN git clone --single-branch --branch 10.01.00.03 https://git.ti.com/cgit/edgeai/edgeai-dl-inferer && \
/opt/edgeai-dl-inferer/scripts/build_dl_inferer.sh && \
rm -rf /opt/edgeai-dl-inferer

# install edgeai-tiovx-kernels
RUN /opt/edgeai-gst-apps/scripts/install_tiovx_kernels.sh -b 10.01.00.02 && \
RUN /opt/edgeai-gst-apps/scripts/install_tiovx_kernels.sh -b 10.01.00.03 && \
rm -rf /opt/edgeai-tiovx-kernels

# install edgeai-tiovx-modules
RUN /opt/edgeai-gst-apps/scripts/install_tiovx_modules.sh -b 10.01.00.02 && \
RUN /opt/edgeai-gst-apps/scripts/install_tiovx_modules.sh -b 10.01.00.03 && \
rm -rf /opt/edgeai-tiovx-modules

# install edgeai-gst-plugins
RUN /opt/edgeai-gst-apps/scripts/install_gst_plugins.sh -b 10.01.00.02 && \
RUN /opt/edgeai-gst-apps/scripts/install_gst_plugins.sh -b 10.01.00.03 && \
rm -rf /opt/edgeai-gst-plugins

# install python modules for DL RT
Expand All @@ -122,7 +122,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
python3 -m pip install --no-cache-dir PyYAML

# install ti-gpio-cpp
RUN /opt/edgeai-gst-apps/scripts/install_ti_gpio_libs.sh -b 10.01.00.02
RUN /opt/edgeai-gst-apps/scripts/install_ti_gpio_libs.sh -b 10.01.00.03

# build perf_stats tool
RUN cd /opt/edgeai-gst-apps/scripts/perf_stats && \
Expand Down
6 changes: 3 additions & 3 deletions docker/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ ROS_VER ?= 2
GPUS ?= n

# Robotics SDK version
SDK_VER ?= 10.1.0.2
EDGEAI_VER ?= 10.1.0.2
SDK_VER ?= 10.1.0.3
EDGEAI_VER ?= 10.1.0.3
TIVA_LIB_VER ?= 10.1.0
RPMSG_LIB_VER ?= 0.6.7

# Used in install_vision_apps_lib.sh, install_osrt_libs.sh, install_tidl_libs.sh
LIB_REL_TAG ?= 10.01.00.02
LIB_REL_TAG ?= 10.01.00.03
SDK_VER_MAJOR ?= 10.1.0

# Set the operating variables based on the ROS version specified
Expand Down
40 changes: 0 additions & 40 deletions docker/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,26 +45,11 @@ The SD card image contains Processor SDK Linux and libraries that are necessary

A Ubuntu PC is required for visualization of ROS topics published from the TI EdgeAI Starter Kit (SK) board. We have tested only with native x86_64 Ubuntu PCs and have **not** tested with any other Ubuntu systems: including Ubuntu virtual machines and Docker Desktop on Mac or Windows.

```{only} tag_ros1n2
It is assumed that a matching ROS distro (either ROS 1 {{ROS1_DISTRO}} or ROS 2 {{ROS2_DISTRO}}) is installed on the remote Ubuntu PC, either in the host Ubuntu filesystem natively or in a Docker container. In case you want to install ROS natively on the remote Ubuntu filesystem:
- For ROS {{ROS1_DISTRO}} installation steps, please refer to [this ROS wiki page](http://wiki.ros.org/noetic/Installation/Ubuntu).
- For ROS 2 {{ROS2_DISTRO}} installation steps, please refer to [this ROS 2 documentation](https://docs.ros.org/en/humble/Installation.html).
```

```{only} tag_ros2only
It is assumed that a matching ROS distro (ROS 2 {{ROS2_DISTRO}}) is installed on the remote Ubuntu PC, either in the host Ubuntu filesystem natively or in a Docker container. In case you want to install ROS natively on the remote Ubuntu filesystem:

- For ROS 2 {{ROS2_DISTRO}} installation steps, please refer to [this ROS 2 documentation](https://docs.ros.org/en/humble/Installation.html).
```

```{only} tag_ros1n2
We also provide Dockerfiles (`docker/Dockerfile.x86_64.{noetic,humble}`) that can build and run on the remote Ubuntu PC for both ROS {{ROS1_DISTRO}} and ROS 2 {{ROS2_DISTRO}}, with detailed steps for setting up the Docker environment on the remote PC. For installation of Docker on the Ubuntu PC, the following links may be useful:
```

```{only} tag_ros2only
We also provide Dockerfiles (`docker/Dockerfile.x86_64.humble`) that can build and run on the remote Ubuntu PC for ROS 2 {{ROS2_DISTRO}}, with detailed steps for setting up the Docker environment on the remote PC. For installation of Docker on the Ubuntu PC, the following links may be useful:
```

- [Install Docker Engine on Ubuntu](https://docs.docker.com/engine/install/ubuntu/)
- [Manage Docker as a non-root user](https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user)
Expand Down Expand Up @@ -172,35 +157,10 @@ The Robotics SDK runs in a Docker container environment on the Processor SDK Lin
First, following [this link](https://docs.docker.com/get-started/#test-docker-installation), please check that Docker and network work correctly on the target SK board.
```{only} tag_ros1n2
The following two sections describe the Docker environment setup, details of building, and running apps under Docker, for ROS 1 and ROS 2, respectively. Please note that it will take several minutes to build the Docker image. The Docker image built can be listed with `docker images`.
- [Docker Setup for ROS 1 {{ROS1_DISTRO}}](./setting_docker_ros1.md)
- [Docker Setup for ROS 2 {{ROS2_DISTRO}}](./setting_docker_ros2.md)
```
```{only} tag_ros2only
The following section describes the Docker environment setup, details of building, and running apps under Docker. Please note that it will take several minutes to build the Docker image. The Docker image built can be listed with `docker images`.
- [Docker Setup for ROS 2 {{ROS2_DISTRO}}](./setting_docker_ros2.md)
```
```{note}
**Proxy Network**: If the board running the Docker container is behind a proxy server, the default settings for downloading files and installing packages via `apt-get` may not work, and proper settings for proxy should be established for building and running the SDK Docker image.
```

`````{only} tag_ros1n2
````{tip}
**Switching between ROS 1 and ROS 2 Docker Containers**: When the applications are built under the ROS 1 container, two directories, `{build, devel}` are created under **ros_ws** directory under target host and similarly `{build, install, log}` directories are created when applications are built under ROS 2 container. Since the containers share the common space `ros_ws` on target host Linux filesystem, these directories need to be removed if switching between ROS 1 and ROS 2 containers. Alternatively, we can create different folders for each of ROS distro and apply soft-links as shown below as example before running "docker run" script.
```
# Before launching ROS 1 container, establish the following soft-links:
$ROS_WS/build -> $ROS_WS/build_noetic
$ROS_WS/devel -> $ROS_WS/devel_noetic
# Before launching ROS 2 container, establish the following soft-links:
$ROS_WS/build -> $ROS_WS/build_humble
$ROS_WS/install -> $ROS_WS/devel_humble
$ROS_WS/log -> $ROS_WS/log_humble
```
````
`````
4 changes: 2 additions & 2 deletions docker/docs/tiovx_ros_setup.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 5 additions & 5 deletions docker/setting_docker_ros2.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ For a quick started, it is recommended to use the pre-built SDK Docker images. I

2. Pull and Run the SDK Docker image:
```bash
docker pull ghcr.io/texasinstruments/robotics-sdk:10.0.0-humble-$SOC
docker tag ghcr.io/texasinstruments/robotics-sdk:10.0.0-humble-$SOC robotics-sdk:10.0.0-humble-$SOC
docker pull ghcr.io/texasinstruments/robotics-sdk:10.1.0-humble-$SOC
docker tag ghcr.io/texasinstruments/robotics-sdk:10.1.0-humble-$SOC robotics-sdk:10.1.0-humble-$SOC
./docker_run.sh
```
3. Run the demos by referring to the ["Run Demo Applications" section](#run-demos).
Expand All @@ -35,8 +35,8 @@ For a quick started, it is recommended to use the pre-built SDK Docker images. I

2. Pull and Run the Docker image for the visualization PC.
```bash
docker pull ghcr.io/texasinstruments/robotics-sdk:10.0.0-humble-viz
docker tag ghcr.io/texasinstruments/robotics-sdk:10.0.0-humble-viz robotics-sdk:10.0.0-humble-viz
docker pull ghcr.io/texasinstruments/robotics-sdk:10.1.0-humble-viz
docker tag ghcr.io/texasinstruments/robotics-sdk:10.1.0-humble-viz robotics-sdk:10.1.0-humble-viz
./docker_run.sh
```

Expand All @@ -48,7 +48,7 @@ In the ROS 2 Docker container environment, ROS {{ROS2_DISTRO}} and necessary lib

1. To generate the scripts for building and running a Docker image for ROS 2 {{ROS2_DISTRO}}:
```
root@am6x-sk:~/j7ros_home$ make scripts ROS_VER=2
root@am6x-sk:~/j7ros_home$ make scripts
```
Make sure that two bash scripts, `docker_build.sh` and `docker_run.sh`, are generated.

Expand Down
Loading

0 comments on commit 4c6c344

Please sign in to comment.