当前位置: 首页 > news >正文

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

一,前言

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

IMG_9622.HEIC


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

IMG_9623.HEIC

二,项目介绍

话不多说,开始本篇的测评,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
最终运行效果如下:

2024-05-25_12-35.png

5月25日(1).gif

三,安装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

image.png

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命令使用环境变量中设置的代理。

    image.png


    代理挂上后,继续执行

    sudo rosdep init
    

    image.png

rosdep update

image.png

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

image.png

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

编译后出现错误:

image.png


不要慌,这是因为Orange Pi默认处于conda 环境中,使用如下指令退出环境:

conda deactivate#关闭自动source
conda config --set auto_activate_base false

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

image.png

1.1.7.设置环境变量

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

source ~/ros2_humble/install/local_setup.sh

1.1.8.检查ROS安装是否成功

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

image.png

1.2 二进制安装

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

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

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

image.png

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

sudo apt install libicu70=70.1-2

接着手动重新执行安装:

sudo apt-get install ros-humble-desktop

安装成功:

image.png


source 环境变量:

source /opt/ros/humble/setup.bash

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

image.png

四,部署ROS QT项目

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

1.克隆项目

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

image.png


使用如下指令拉取项目:

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

发现报如下错误:

image.png


这是因为我的项目依赖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

继续编译,编译成功:

image.png

3.运行项目

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

cd ~/qt_ws/ROS2_Qt5_Gui_App/build
./ros_qt5_gui_app

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

2024-05-25_12-35.png


动态效果:

5月25日(1).gif

五,总结

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

相关文章:

  • 漫步者x1穷鬼耳机双耳断连
  • idea配置ssh、sftp连接服务器,docker插件使用,极其方便,无需再开第三方软件去操作服务器了,集成用于Idea一体
  • 【Java继承】(超级详细!!!)
  • 【pm2 - sdk 集成到程序中,典型用法】
  • 堆结构知识点复习——玩转堆结构
  • 当HR问你是否单身时,该怎么回答?
  • 高德地图之获取经纬度并且根据获取经纬度渲染到路线规划
  • Upstream最新发布2024年汽车网络安全报告-百度网盘下载
  • Unity 生成物体的几种方式
  • C数据结构:二叉树
  • 信号量和事件及队列补充
  • Linux-Web服务搭建面试题-1
  • esp32 idf开发中的常用命令
  • 网络故障排除-OSPF故障
  • 电脑找不到opencl.dll原因分析及5种详细的解决方法
  • JavaScript-如何实现克隆(clone)函数
  • Java应用性能调优
  • js继承的实现方法
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • NSTimer学习笔记
  • SpringBoot 实战 (三) | 配置文件详解
  • webpack+react项目初体验——记录我的webpack环境配置
  • webpack4 一点通
  • Web设计流程优化:网页效果图设计新思路
  • windows下如何用phpstorm同步测试服务器
  • 阿里云购买磁盘后挂载
  • 成为一名优秀的Developer的书单
  • 程序员该如何有效的找工作?
  • 大型网站性能监测、分析与优化常见问题QA
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 排序(1):冒泡排序
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 试着探索高并发下的系统架构面貌
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 一文看透浏览器架构
  • Spring第一个helloWorld
  • #NOIP 2014#Day.2 T3 解方程
  • #大学#套接字
  • (HAL库版)freeRTOS移植STMF103
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (阿里云万网)-域名注册购买实名流程
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (论文阅读40-45)图像描述1
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (转)Google的Objective-C编码规范
  • (转)德国人的记事本
  • (转)使用VMware vSphere标准交换机设置网络连接
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET IoC 容器(三)Autofac