基于香橙派 Ai Pro的ROS Qt人机交互软件部署指南

一,前言

最近收到了CSDN的邀请,对香橙派新出的Ai Pro进行测评:


说来也巧,其实香橙派本人对其映像挺深刻的,在2017年左右,本人刚上大学,当时是在淘宝购买树莓派,发现有个叫香橙派的国产板子,性能跟树莓派差不多吧,但是价格好像便宜些,但是当时由于上大学,手里的生活费有限,而且生态与资料相对于树莓派要少,就没有入手。
很荣幸最近收到CSDN的邀请,知道了香橙派与华为合作,出了新的Ai Pro的板子,并邀请本人进行测评,相信借助CSDN与华为的晟腾社区的生态,会有更多的开发者加入,生态方面后面肯定会跟树莓派一样很丰富。

二,项目介绍

话不多说,开始本篇的测评,AI Pro主打的是AI方面其算力有8TOPS。由于本人目前从事的工作并没有与AI相关,因此本文就测评一下ROS相关的应用,给大家介绍一下如何在香橙派AI Pro上部署ROS QT人机交互软件。
这里ROS Qt人机交互软件开发建议的方法为:在自己电脑上编写Qt代码,代码编写完成之后,通过交叉编译或直接在板子上编译的方式将项目部署在开发板上,并不建议直接在板子上开发与写代码
本文选择在板子上编译,因此本文会着重介绍如何在板子上搭建ROS Qt的编译环境,并将自己的项目部署上去
这里使用的Demo为本人开源的github项目:
https://github.com/chengyangkj/Ros_Qt5_Gui_App
最终运行效果如下:

三,安装ROS

香橙派AI Pro预装的为ubuntu22.04,我这里安装的ROS版本为ros2 humble。这里安装ROS2源码安装与二进制安装,我均尝试过了,大家根据自己的喜好安装即可

1.1 源码安装

源码安装参考ROS官方教程
需要注意,源码安装需要配置代理

1.1.1,启用Ubuntu Universe仓库

sudo apt install software-properties-common
sudo add-apt-repository universe

1.1.2.添加ROS2密钥

sudo apt update && sudo apt install curl -y
curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o ros-archive-keyring.gpg
cp ros-archive-keyring.gpg /usr/share/keyrings/

1.1.3.添加ROS源

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

安装编译所需工具:

sudo apt update && sudo apt install -y \
  python3-flake8-blind-except \
  python3-flake8-class-newline \
  python3-flake8-deprecated \
  python3-mypy \
  python3-pip \
  python3-pytest \
  python3-pytest-cov \
  python3-pytest-mock \
  python3-pytest-repeat \
  python3-pytest-rerunfailures \
  python3-pytest-runner \
  python3-pytest-timeout \
  ros-dev-tools

1.1.4.下载ROS2 Humble源码

mkdir -p ~/ros2_humble/src
cd ~/ros2_humble
vcs import --input https://raw.githubusercontent.com/ros2/ros2/humble/ros2.repos src

1.1.5.初始化rosdep

需要执行如下三条指令,这三条如果网络环境不好,很容易导致失败

sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src -y --skip-keys "fastcdr rti-connext-dds-6.0.1 urdfdom_headers"

注意:sudo rosdep init 也需要挂代理,但是可能出现在挂代理的情况下,还是报错,这是因为:使用sudo指令时 是默认不使用系统环境变量设置的http_proxy的,因此可能出现已经挂了代理,但是sudo rosdep init还是失败的情况,可以通过以下方法,设置sudo指令也可使用http_proxy:

  1. 打开终端(Ctrl+Alt+T)。

  2. 输入以下命令并按下回车键:

    sudo visudo
    

    这将打开sudo配置文件以进行编辑。

  3. 在打开的文件中,找到以下行:

    Defaults        env_reset
    
  4. 在此行下方添加以下行:

    Defaults        env_keep += "http_proxy https_proxy ftp_proxy"
    

    这将允许sudo命令使用环境变量中设置的代理。


    代理挂上后,继续执行
    sudo rosdep init
    

rosdep update

rosdep install --from-paths src --ignore-src -y --skip-keys "fastcdr rti-connext-dds-6.0.1 urdfdom_headers"

1.1.6.编译源码

前面铺垫了那么多 终于开始编译源码了,执行如下命令进行编译

cd ~/ros2_rolling/
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release

注:如果嫌编译慢,可以使用多线程编译 4代表4个线程:

colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release --parallel-workers 4

编译后出现错误:


不要慌,这是因为Orange Pi默认处于conda 环境中,使用如下指令退出环境:
conda deactivate
#关闭自动source
conda config --set auto_activate_base false

然后把build目录删除,接着重新编译
由于编译比较慢,容易失败,失败后多尝试几次,我这里已经编译成功了,一些不重要的包编译失败可以不用管:

1.1.7.设置环境变量

通过如下指令设置环境变量,同时可以把这句话放入bashrc中,就能实现自动source

source ~/ros2_humble/install/local_setup.sh

1.1.8.检查ROS安装是否成功

终端输入ROS2 如果输出以下则代表安装成功:

1.2 二进制安装

二进制安装的话直接使用鱼香ROS的一键安装即可,这里不再详细介绍,一键安装脚本为:

wget http://fishros.com/install -O fishros && . fishros

但是会安装失败,失败的原因为:

遇到问题不要慌,我们来手动解决这个问题,使用如下指令:

sudo apt install libicu70=70.1-2

接着手动重新执行安装:

sudo apt-get install ros-humble-desktop

安装成功:


source 环境变量:
source /opt/ros/humble/setup.bash

验证是否安装成功
输入ros2 指令:

四,部署ROS QT项目

实际上Ubuntu22.04自带Qt的库,因此不用自行编译安装,如果存在没有的库,使用apt-get 直接安装二进制版本即可

1.克隆项目

这里的话建议将自己的项目上传到git,然后在板子上直接从git上拉取项目,比较方便,我这里使用的为本人的开源Qt项目:
https://github.com/chengyangkj/Ros_Qt5_Gui_App


使用如下指令拉取项目:
mkdir -p ~/qt_ws
cd ~/qt_ws
git clone https://github.com/chengyangkj/Ros_Qt5_Gui_App

note:如果github下载过慢,可以使用以下指令从gitee拉取

git clone https://gitee.com/chengyangkj/Ros_Qt5_Gui_App

2.编译项目

首先尝试直接编译:

cd ~/qt_ws/ROS2_Qt5_Gui_App
mkdir -p build
cd build
cmake ..
make

发现报如下错误:


这是因为我的项目依赖boost,但是Pi上的boost安装不全,使用指令安装:
sudo apt install libboost-all-dev

同时把一些项目其他依赖安装上:

sudo apt-get install qtbase5-private-dev libqt5svg5-dev libsdl-image1.2-dev libsdl1.2-dev -y

继续编译,编译成功:

3.运行项目

连接屏幕或者远程桌面,进入到可视化界面:
输入如下指令启动软件:

cd ~/qt_ws/ROS2_Qt5_Gui_App/build
./ros_qt5_gui_app

我这里连接的为另外一台电脑的仿真小车:


动态效果:

五,总结

使用了一周下来,香橙派AI Pro对我而言体验还是不错的,没有什么坑,装好系统镜像后做到了插电即用。连续插电运行一周也没有出现什么问题,很稳定。
香橙派AI Pro主打AI方面的强势,由于本人没有测试AI相关的指标,美中不足的是其CPU核心数比较少(只有4个核),在跑项目时如果开了一些录屏软件之类的话,会导致CPU占用率过高,从而使激光的绘制频率跟不上。