OrangePi AIpro 机器人仿真与人工智能应用测评

系列文章目录

 


前言

 

本篇文章分为2个部分,第一部分主要搭建了机器人的仿真环境(ROS2 MuJoCo等),运行了机械臂及移动机器人相关示例程序;第二部分运行了OrangePi AIpro系统自带的示例程序及昇腾社区官方的示例程序;最后总结使用体验


一、  开发板软硬件

 

1.1 硬件介绍及准备

这里我找了几块开发板,左边为树莓派4B及树莓派5B,中间为OrangePi AIpro,右上为华硕的Tinker Board,右下为英伟达的Jetson Nano。

1880e34a15af404cab20786027868eb2.jpeg

 

1.1.1 硬件介绍

官方的宣传页如下:

Orange Pi AIpro Orange Pi官网-香橙派(Orange Pi)开发板,开源硬件,开源软件,开源芯片,电脑键盘

从宣传页可知,OrangePi AIpro主要强调了的人工智能性能及应用,详细信息可在上述链接内查看。官方介绍OrangePi AIpro可广泛适用于AI边缘计算、深度视觉学习及视频流AI分析、视频图像分析、自然语言处理、智能小车、机械臂、人工智能、无人机、云计算、AR/VR、智能安防、智能家居等领域,覆盖 AIoT各个行业。

我这里主要应用于机器人仿真,即智能小车,机械臂,四足机器人、人形机器人、无人机等领域。后面结合官方及昇腾社区的示例运行相关人工智能的应用。

1.1.2 开发板对比

这里我主要对比OrangePi AIpro、Jetson Nano及Raspberrypi 5B,三块开发板的硬件参数如下所示:

 

 

OrangePi AIpro

Jetson Nano

Raspberrypi 5B

CPU

4核64位处理器+ AI处理器

Quad-core ARM® Cortex®-A57 MPCore processor

2.4GHz 四核 64 位 Arm Cortex-A76 CPU

 

GPU

集成图形处理器

128-core NVIDIA Maxwell™ architecture GPU

VideoCore VII GPU,支持 OpenGL ES 3.1 和 Vulkan 1.2

 

AI算力

8TOPS算力

0.472TOPS算力

 

内存

LPDDR4X:8GB/16GB(可选),速率:3200Mbps

4GB 64-bit LPDDR4

25.6GB/s

LPDDR4X:4GB/8GB(可选)

存储

• SPI FLASH:32MB

• SATA/NVME SSD(M.2接口2280)

• eMMC插槽:32GB/64GB/128GB/256GB(可选),eMMC5.1 HS400

• TF插槽

16GB eMMC 5.1

高速 microSD 卡接口,支持 SDR104 模式

用于快速外设的 PCIe 2.0 x1 接口

 

 

WIFI+蓝牙

Wi-Fi 5双频2.4G和5G

BT4.2/BLE

1x GbE

双频 802.11ac Wi-Fi®

蓝牙 5.0 / 低功耗蓝牙 (BLE)

 

 

以太网收发器

10/100/1000Mbps以太网

1000Mbps以太网

 

千兆以太网,支持 PoE+

 

显示

• 2xHDMI2.0 Type-A TX 4K@60FPS

• 1x2 lane MIPI DSI via FPC connector

2 multi-mode DP 1.2/eDP 1.4/HDMI 2.0

1 x2 DSI (1.5Gbps/lane)

双 4Kp60 HDMI® 显示输出

 

摄像头

2x2-lane MIPI CSI camera interface,兼容树莓派摄像头

Up to 4 cameras

12 lanes MIPI CSI-2

D-PHY 1.1 (up to 18 Gbps)

2 × 4 通道 MIPI 摄像头/显示器收发器

 

USB

• USB 3.0 HOST x2

• USB Type-C 3.0 HOST x1

• Micro USB x1 串口打印功能

1x USB 3.0 (5 Gbps)

3x USB 2.0

2 × USB 3.0 端口,支持 5Gbps 同步运行

2 × USB 2.0 端口

 

音频

3.5mm耳机孔音频输入/输出

 

 

按键

1x关机键、1xRESET键、2x启动方式拨动键、1x烧录按键

 

电源按钮

 

40PIN

40PIN 功能扩展接口,支持以下接口类型:

GPIO、UART、I2C、SPI、 I2S、PWM

3x UART, 2x SPI, 2x I2S, 4x I2C, GPIOs

Raspberry Pi 标准 40 引脚 GPIO 接头

 

风扇

风扇接口x1

风扇接口x1

 

风扇接口x1

 

预留接口

2PIN电池接口

 

 

电源

Type-C PD 20V IN ,标准65W

5W - 10W

27W USB-C 电源

支持的操作系统

Ubuntu、openEuler

Ubuntu(Jetpack)

Ubuntu 等

产品尺寸

107*68mm

69.6mm x 45mm

260-pin SO-DIMM connector

85*56mm

重量

82g

140g

50g

 

 

上述对比表可知,OrangePi AIpro的AI算力确实强大,并且其他参数与Jetson Nano、树莓派5B等不相上下,为高性价比产品。

1.1.3 硬件准备

之前我使用过jetson nano以及树莓派5B,所以深知TF卡对于控制板整体性能的影响。因此按照官方的提示买了500G的三星固态硬盘(价格为450元左右)及硬盘盒(价格为90元左右),如图,将固态硬盘固定在OrangePi AIpro上。

 

 

757371a6e3da415abb7915f5d3d2033d.jpegdc7235834b004fabbb5f5e891b826101.jpeg

此外,为方便携带,在官方买了金属外壳(价格100元左右),如图所示参考官方说明文档将OrangePi AIpro安装在金属外壳内。

b9a0bdaa59174c9fa2a54e3a4cfe8d2a.jpeg340b8b7a93ab4472bc22887f7642ea64.jpeg

连接电源线,显示屏线,键盘及鼠标线即可。

12ece68b2e6c4765a5a20689e64ee17d.jpeg0f8e8ce32cfe4d4c96f5e97f342c5694.jpeg8cf0c369989f4694bc48559c434909d2.jpeg

实际运行过程中发现OrangePi AIpro发热较为严重,因此买了额外的风扇散热,整体散热效果良好。

测试发现CSI摄像头没有反应,使用不了,官方文档说明是Linux系统未适配驱动,我这儿有一个奥比中光的深度相机,暂时用来采集数据,硬件连接如图所示。

79c25d53e4bd43889af3a1c4ea3f9bf0.jpeg

1.2 软件介绍及准备

首先需要将系统通过TF卡烧录至SSD中,然后按照官方文档说明将拨码开关拨至对应位置即可。系统启动界面如图所示:

 

 

2c918fb06a534e7786be34b1e37c7ad4.jpeg

官方的镜像xfce桌面的bash没有补全功能,需要安装命令行补全功能包:

 

sudo apt install bash-completion

 

xfce桌面为轻量级桌面,占用资源少,但是外观并不好看,因此我切换桌面系统至 Ubuntu 原始桌面,选择gdm桌面即可:

效果如下:

dd23ebb8a38546d78231b930cc80edd2.png53c93c7f2f8b456fb0deb50b00527ebe.png

注意:切换后桌面会有卡顿,不要安装 ubuntu-desktop ,否则不能启动桌面,盲猜与显卡有关。

更改密码,系统自带的密码过于繁琐,我们可以使用sudo passwd命令更改密码,我将密码更改为q,特别方便运行命令。

系统自带了Python 包管理器Anaconda,查看Python版本,结果如下:

88115833e78341c499aa855abbe25d4a.png

 

1.2.1 换源

1.2.1.1 更换 Ubuntu Ports 源

华为云之前没有用过,不知道速度如何,换为中科大(ustc)镜像源,参考官网步骤如下:

使用 vim 打开 /etc/apt/sources.list 文件删除内容,可使用 dd 命令,然后粘贴如下内容:

 

# 默认注释了源码仓库,如有需要可自行取消注释
deb https://mirrors.ustc.edu.cn/ubuntu-ports/ jammy main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu-ports/ jammy main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu-ports/ jammy-security main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu-ports/ jammy-security main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu-ports/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu-ports/ jammy-updates main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu-ports/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu-ports/ jammy-backports main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.ustc.edu.cn/ubuntu-ports/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu-ports/ jammy-proposed main restricted universe multiverse

 

随后更新源并且更新可更新的软件包。

 

 

1.2.1.2 更换pip源

升级 pip 到最新的版本 (>=10.0.0) 后进行配置:

 

# 使用本镜像站来升级 pip
pip install -i https://mirrors.ustc.edu.cn/pypi/web/simple pip -U
pip config set global.index-url https://mirrors.ustc.edu.cn/pypi/web/simple

 

1.2.1.3 更换conda源

按照清华源说明,执行命令:

 

conda config --set show_channel_urls yes

 

用户目录下产生.condarc文件,将以下内容覆盖原内容:

 

channels:
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  deepmodeling: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/

 

1.2.1.4 更换ROS2 源

导入 key:

 

sudo apt install curl gnupg2
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] https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu jammy main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

sudo apt update

 

刷新软件源缓存 sudo apt update,安装所需的 ROS2 发行版。

1.2.2 安装必备软件

1.2.2.1 安装QQ

至QQ官网下载arm64安装包,使用dpkg安装即可

c9cddf366ac3443bb3178f84886cd123.png

1.2.2.2 安装 腾讯文档

同理至官网下载arm64安装包

9e87a470e3784799afa2d38c1332e3fc.png

1.2.2.3 安装代码编辑器vscode

同理至官网下载arm64安装包。

1.2.2.4 安装ROS2

我这里安装ros-iron-desktop-full,安装完成后进行测试

fa05ef3f403444b781ad18acdbd32432.png

1.2.2.5 安装动力学库及仿真器

动力学库及仿真器通过conda安装,命令如下:

 

   conda install crocoddyl pinocchio mujoco -c conda-forge

 

 

1.3 测试相机

使用Ubuntu自带的cheese测试相机使用是否正常,测试结果如图所示。

6cd7cbd271d4454d96784b89c94ebb08.png

ee50945d1f5e45a2bdc7c09e83edbea9.jpeg

二、  机器人仿真开发

2.1基于 ROS 平台的机器人仿真

基于ROS的仿真我这里主要进行ROS2 MoveIt机械臂仿真及turtlebot相关运动机器人导航仿真。

2.1.1 机械臂仿真

2.1.1.1 MoveIt介绍

MoveIt是ROS社区下开源的机械臂运行规划库,主要可完成机械臂运动规划、碰撞检测,功能包内还集成了几种开源的运动规划库,可以用来开发机械臂,或者控制现有的机械臂,在机器人领域应用十分广泛。其功能框架如图所示。

b1b87e4c39854a3f838300eb6bc6aca3.png

2.1.1.2 机械臂仿真环境搭建

按照MoveIt官网教程安装相应的库并编译,步骤如下所示:

创建 Colcon 工作区并下载教程

要获取教程,您需要设置一个 Colcon 工作区。

 

mkdir -p ~/ws_moveit/src

 

下载 MoveIt 源代码及教程

移动到 Colcon 工作区,提取 MoveIt 教程源代码:

 

cd ~/ws_moveit/src
git clone https://github.com/ros-planning/moveit2_tutorials

 

接下来,我们将下载 MoveIt 其他部分的源代码:

 

vcs import < moveit2_tutorials/moveit2_tutorials.repos

 

导入命令可能会要求输入 GitHub 认证信息。你可以直接按 Enter 直到它继续(忽略 "Authentication failed"(验证失败)错误)。

 

构建 Colcon 工作区

以下步骤将从 Debian 安装工作区中尚未安装的任何依赖包。这一步将安装 MoveIt 及其所有依赖包:

 

sudo apt update && rosdep install -r --from-paths . --ignore-src --rosdistro $ROS_DISTRO -y

 

下一条命令将配置 Colcon 工作区:

 

cd ~/ws_moveit
colcon build --mixin release

 

这个构建命令可能需要很长时间(20 多分钟),这取决于你的电脑速度和可用内存量(我们建议 32 GB)。

实际在OrangePi AIpro编译需要数小时,中间需要解决一些依赖问题。

2.1.1.3 示例程序运行

参考MoveIt官网搭建运行环境,下载并编译相关功能包,运行程序即可运行机械臂轨迹规划功能包:

 

ros2 launch moveit2_tutorials demo.launch.py

 

c79059fb97064350bb4ca4b36334358e.pnge2519bea3fb243d0b5584033d17f2f99.jpeg

因为启动了RVIZ及其GUI界面,所以运行稍微有些卡顿,若不启动GUI界面,实际作为机械臂控制器使用时完全没有问题。

我们还可以打开ROS生态下的Gazebo,运行示例程序,如图所示为机械臂工作台示例。我们可以通过GUI界面操作机械臂的各个关节运行,后续有科研或者工业需要可以与其他开源ROS功能包一起使用完成相关功能。

d62ac5255f6643a79d11d5e9700cdaeb.png

2.1.2 移动机器人仿真

2.1.2.1 Turtlebot4 机器人仿真

Turtlebot4是开源的ROS2机器人,clearpath公司开发的面向教育的机器人产品,自身携带丰富的传感器,配套的开源软件也很丰富,唯一的缺点就是很贵(10000元+),但是我们可以安装仿真器,在仿真器中体验使用Turtlebot4。官方做的仿真场景是在工厂中,机器人通过自身携带的思岚激光雷达进行二维建图及导航,我们可以使用虚拟手柄操作机器人运行。

按照官方说明文档安装仿真器,步骤如下:

 

ros2 launch turtlebot4_ignition_bringup turtlebot4_ignition.launch.py slam:=true nav2:=true rviz:=true

 

命令行运行仿真程序效果如下:

ed7cd1302fd4436f9ee6d24a82d74bbb.png

通过GUI 界面操作机器人,RVIZ界面则显示二维激光雷达所建地图。

8f190f8f3b21435b94ab73f97a417c6f.png

使用rqt_graph查看节点图:

0f9e6c8d4b844e64807161d26ca2b4b9.png

2.2基于开源动力学库及开源仿真器MuJoCo平台的机器人仿真

按照官网的说明安装好开源的动力学库及MuJoCo

2.2.1 MuJoCo 人形机器人LQR控制程序

这里运行了官方提供的示例程序,主要功能是控制人形机器人单脚站立,使用线性二次型规划控制。运行效果如图所示。

程序主要包括加载机器人模型并渲染展示,建立机器人动力学模型,并在指定位置线性化及离散化,设计LQR控制器,最后施加干扰并渲染完成控制。

6cbc137511d24ae5a60118fd7e2e308a.png

da433e3f45fb4017b69e552fcc48faee.png

2.2.2 使用开源动力学库

这里使用开源的动力学库pinocchio,运行官方示例程序加载机器人,效果如图所示:

2f86002baa88482ab865ee2843b75cc3.jpeg

主要加载了几种不同种类的机器人,如人形机器人,移动机械臂,四足机器人,无人机。

三、  人工智能应用开发

3.1 官方示例

3.1.1 YOLO5s示例适合部署在边缘设备上

按照官方说明运行Yolo5s示例程序,图像来源使用奥比中光采集的图像,运行效果如图所示,可以看出算法检测出泰迪熊及时钟并给出了相应的置信度。

a863810809914a659e8355abff6b5c8b.png

3.1.2 OCR识别

同样按照示例程序进行,我这里的图片是从昇腾社区官网截取,结果如图所示,能够识别出字符。

9f9c6676938f4272b0025ef4fd0a8d17.png

 

ea17f5126aed4991becbde1711bd07ee.png

系统内还有丰富的示例可以运行,我这里不做演示。

3.2 昇腾社区示例

3.2.1 生成式扩散模型示例

官方说明系统内自带MindSpore开发工具链,至官网下载如下示例程序测试AI性能:

69035e968cea43e7a7c4de830e1b0304.png

这里测试的是扩散模型,隶属于生成式,示例十分丰富,感兴趣可以至官网下载相关示例程序运行测试。

65804cfc95224b19ae5ef9311c6d0477.png

0a68959c054540dfafb1764c601b768b.png

a7c903ffef0641d88ee675e27a03c216.png

c17ae86ed58540429871a9c89401ba7f.png

四、  总结

4.1 使用总结

本文在OrangePi AIpro开发板上搭建了机器人开发环境(ROS及仿真器等),测试了机械臂运行规划及移动机器人建图示例,之后运行了系统内置的AI示例及昇腾社区Mindspore示例。

个人认为OrangePi AIpro的算力及性价比在目前的嵌入式开发板中算相对较高的,环境搭建相对来讲也并不复杂。特别是系统集成了华为的Mindspore工具链,适合在边缘 嵌入式设备中加速AI计算。

目前没有测试相关GPIO(如I2C,SPI等)接口,若OrangePi AIpro的GPIO接口的性能足够(比如传输速率等),个人觉得作为机器人主控完全足够,后续也可以在机器人基础上继续开发相应的AI功能。

4.2 调试总结

至此,本文已经结束了。硬件方面,在拿到开发板之前我买好了相应的硬件(包括外壳,SSD,烧录器,硬盘盒等);软件方面,在编译ROS MoveIt功能包源码时由于MoveIt本身复杂程度高,耗费了挺长的时间(大概几个小时)。由于时间有限,运行AI示例数量有限。大部分工作为晚上10点至凌晨3点之间完成。

如有错误,请指正!

 

  • 19
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值