在 AI x Board上搭建 ROS2 + OpenVINO™ 开发环境|开发者实战

2023年11月22日 197点热度 0人点赞 0条评论

文章作者:东莞理工学院 研究生 温思业

指导教师:英特尔边缘计算创新大使 林盛鑫

ROS2 + OpenVINO™ 前景和应用

AlxBoard(爱克斯板)是英特尔开发套件中的一款产品,专为入门级人工智能应用和边缘智能设备而设计。它提供了完善的功能,包括人工智能学习、开发、实训和应用等多种场景。

OpenVINO™(Open Visual Inference and Neural Network Optimization)是英特尔开发的一套用于深度学习推理和计算机视觉应用优化的工具套件。它提供了一系列工具和库,可帮助我们在各种硬件平台上实现高性能、低功耗的深度学习推理。

ROS2(Robot Operating System 2)是一个开源的机器人操作系统框架,旨在支持机器人软件开发和运行。

结合两者可以为机器人系统提供强大的感知和决策能力。OpenVINO™ 可以在 ROS2 中使用,将深度学习模型部署到机器人系统中进行推理。这使得机器人可以进行实时的目标检测、姿态估计、人脸识别等任务,从而增强其感知能力。OpenVINO™ 针对英特尔硬件进行了优化,可以提供高效的推理性能。对于需要实时响应的机器人应用非常重要,例如自主导航、物体抓取等。ROS2 提供了灵活的通信机制和模块化的架构,可以与 OpenVINO™ 集成以实现各种机器人应用。

安装步骤

本文将介绍如何在 AlxBoard 上搭建的 ROS-humble + OpenVINO™ 2023.0.1 版本的开发环境。在拿到 AlxBoard 后,先依照官方文档[1],进行系统安装。官方文档提供的是 Ubuntu20.04 的版本,可以通过升级方式改为 22.04 版本。或者通过 Ubuntu 的 ISO 文件可以选择 22.04 版本下载链接[2],安装好 Ubuntu22.04 后,需要安装对应版本的 GPU 驱动程序。本文将依次介绍如何搭建 ROS2 + OpenVINO™ 的开发环境所依赖的软件工具,包括 ROS2,OpenVINO™,VSCode 等软件安装。ROS2 编译测试示例,以及 OpenVINO™ 的模型下载示例,最后介绍 Nomachie 的基本使用方法。

1. 更改 Ubuntu22.04 系统软件源

1.1 软件备份

sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

1.2 编辑sources.list文件

sudo gedit /etc/apt/sources.list

1.3 打开清华镜像源官网[3],找到对应版本代码复制到Sources.list,并保存退出

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-update***ain restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-update***ain restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backport***ain restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backport***ain restricted universe multiverse
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse

1.4 更新软件源

sudo apt-get update

2. 安装GPU驱动

$ mkdir neo && cd neo
$ wget https://ghproxy.com/https://github.com/intel/intel-graphics-compiler/releases/download/igc-1.0.12504.5/intel-igc-core_1.0.12504.5_amd64.deb
$ wget https://ghproxy.com/https://github.com/intel/intel-graphics-compiler/releases/download/igc-1.0.12504.5/intel-igc-opencl_1.0.12504.5_amd64.deb
$ wget https://ghproxy.com/https://github.com/intel/compute-runtime/releases/download/22.43.24595.30/intel-level-zero-gpu-dbgsym_1.3.24595.30_amd64.ddeb
$ wget https://ghproxy.com/https://github.com/intel/compute-runtime/releases/download/22.43.24595.30/intel-level-zero-gpu_1.3.24595.30_amd64.deb
$ wget https://ghproxy.com/https://github.com/intel/compute-runtime/releases/download/22.43.24595.30/intel-opencl-icd-dbgsym_22.43.24595.30_amd64.ddeb
$ wget https://ghproxy.com/https://github.com/intel/compute-runtime/releases/download/22.43.24595.30/intel-opencl-icd_22.43.24595.30_amd64.deb
$ wget https://ghproxy.com/https://github.com/intel/compute-runtime/releases/download/22.43.24595.30/libigdgmm12_22.3.0_amd64.deb
$ sudo dpkg -i *.deb

3. ROS 2安装

3.1 设置编码。ROS2 安装需要有支持 UTF-8 的语言环境,使用 ctrl + alt + T 打开终端,设置语言环境编码如下:


$ sudo apt update && sudo apt install locales
$ sudo locale-gen en_US en_US.UTF-8
$ sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 
$ export LANG=en_US.UTF-8

3.2 添加软件源

$ sudo apt update && sudo apt install curl gnupg lsb-release 
$ sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg 
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

常见报错处理:

curl(7):Failed to connect to raw.githubusercontent.com

打开并编辑hosts文件添加raw.githubusercontent.com

$ sudo gedit /etc/hosts

添加raw.githubusercontent.com到hosts文件

185.199.108.133  raw.githubusercontent.com

再保存退出,重新执行添加软件源的命令,若依旧有错误,请登录网站:

https://www.ipaddress.com

搜索 raw.githubusercontent.com 最新的 IP 地址

3.3 安装ROS 2

$ sudo apt update 
$ sudo apt upgrade 
$ sudo apt install ros-humble-desktop

3.4 设置环境变量

$ source /opt/ros/humble/setup.bash
$ echo " source /opt/ros/humble/setup.bash" >> ~/.bashrc

当环境变量设置完成后,ROS2 就安装完毕了。

可以在命令行中执行以下简单的命令验证安装,出现如图所示的获取了 ROS2 命令行工具的帮助信息。

$ ros2 -h

3.5 ROS 2的编译

工作空间(workspace)是一个用于组织和管理 ROS2 项目的目录结构。工作空间是一个包含多个软件包(package)的目录,每个软件包都是一个独立的功能单元。一个工作空间可以包含多个软件包,需要通过编译才能使用。

3.5.1 创建工作空间

$ mkdir -p ~/colcon_test && cd ~/colcon_test    
$ git clone https://ghproxy.com/https://github.com/ros2/examples src/examples -b humble
$ cd src

3.5.2 自动安装依赖

$ sudo apt install -y python3-pip 
$ sudo pip3 install rosdepc $ sudo rosdepc init 
$ rosdepc update 
$ cd .. 
$ rosdepc install -i --from-path src --rosdistro humble -y

3.5.3 编译工作空间

$ sudo apt install python3-colcon-ros 
$ cd ~/colcon_test/ 
$ colcon build

编译成功后,工作空间内会出现 build,install,log 三个目录。

3.5.4 配置环境变量

$ source install/local_setup.sh # 仅在当前终端生效 
$ echo " source ~/colcon_test/install/local_setup.sh" >> ~/.bashrc # 所有终端均生效

3.5.5 测试

$ ros2 run examples_rclcpp_minimal_publisher publisher_member_function

若运行上述命令后,运行发布节点成功,则编译环境测试完成。

4. OpenVINO™ 安装

OpenVINO™ 可以选择直接在根环境中使用 pip 命令安装,也可以选择依照官方文档中的说明新建一个虚拟环境安装。进入该网站,选择自己系统版本以及所需要安装的深度学习框架等。网站就会给出相应的 pip 命令。下面以 安装 OpenVINO 2023.0.1 为例。https://www.intel.com/content/www/us/en/developer/tools/openvino-toolkit/download.html?ENVIRONMENT=DEV_TOOLS&OP_SYSTEM=LINUX&VERSION=v_2023_0_1&DISTRIBUTION=PIP

4.1 安装所需要的软件包

$ sudo apt install python3-venv 
$ sudo apt install git wget

4.2 创建虚拟环境

$ python3 -m venv openvino_env

4.3 激活虚拟环境

$ source openvino_env/bin/activate

4.4 更新 pip 版本

$ python -m pip install --upgrade pip

4.5 下载并安装OpenVINO™

$ pip install openvino-dev[ONNX,pytorch,tensorflow2]==2023.0.1

如果选择在根环境中安装 OpenVINO™,只需要执行第 4,5 步。

安装完成后,执行以下命令验证安装,执行该命令将显示 mo 命令行工具的使用说明和可用选项。

$ mo -h

4.6 模型下载

4.6.1 克隆 OpenVINO™ 工具包的开放模型库

$ git clone --recurse-submodules https://ghproxy.com/https://github.com/openvinotoolkit/open_model_zoo.git

4.6.2 安装依赖包

$ pip install open_model_zoo/demos/common/python

4.6.3 进入模型的下载目录,查看可下载的模型

$ cd ~/open_model_zoo/tools/model_tools/src/openvino/model_zoo
$ python3 omz_downloader.py --print_all

4.6.4 选择自己需要下载的模型并指定输出目录

$ omz_downloader --name <model_name> -o <models_dir>

4.7 模型测试

4.7.1 安装git工具

sudo apt install git

4.7.2 选择模型

$ omz_downloader --name person-detection-retail-0013 -o models

4.7.3 下载素材

$ wget https://ghproxy.com/https://github.com/intel-iot-devkit/sample-videos/raw/master/one-by-one-person-detection.mp4

4.7.4 运行演示

$ python open_model_zoo/demos/object_detection_demo/python/object_detection_demo.py -m=models/intel/person-detection-retail-0013/FP32/person-detection-retail-0013.xml -i=one-by-one-person-detection.mp4 -at ssd -d GPU      #使用GPU加速

总结

本文详细介绍了在 AIxBoard 上从零开始搭建 ROS2 + OpenVINO™ 的开发环境的过程,大体步骤是系统安装,驱动安装,ROS2、OpenVINO™ 等软件安装。同时介绍了 ROS2 编译和简单的测试,OpenVINO™ 模型下载步骤及测试,希望本文能对有 ROS2 + OpenVINO™ 环境搭建需求的人有所帮助。

予人玫瑰,手有余香。如果您觉得本文对您有帮助,请点赞或打赏。

文章评论

您需要 登录 之后才可以评论