前言

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

一、开发板软硬件

1.1 硬件介绍及准备

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

img

1.1.1 硬件介绍

官方的宣传页如下:
http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-AIpro.html
从宣传页可知,OrangePi AIpro主要强调了的人工智能性能及应用,详细信息可在上述链接内查看。官方介绍OrangePi AIpro可广泛适用于AI边缘计算、深度视觉学习及视频流AI分析、视频图像分析、自然语言处理、智能小车、机械臂、人工智能、无人机、云计算、AR/VR、智能安防、智能家居等领域,覆盖 AIoT各个行业。
我这里主要应用于机器人仿真,即智能小车,机械臂,四足机器人、人形机器人、无人机等领域。后面结合官方及昇腾社区的示例运行相关人工智能的应用。

1.1.2 开发板对比

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

img

img

img

img

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

1.1.3 硬件准备

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

img

img

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

img

img

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

img

img

img

实际运行过程中发现OrangePi AIpro发热较为严重,因此买了额外的风扇散热,整体散热效果良好。
测试发现CSI摄像头没有反应,使用不了,官方文档说明是Linux系统未适配驱动,我这儿有一个奥比中光的深度相机,暂时用来采集数据,硬件连接如图所示。

img

1.2 软件介绍及准备

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

img

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

sudo apt install bash-completion

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

img

img

注意:切换后桌面会有卡顿,不要安装 ubuntu-desktop ,否则不能启动桌面,盲猜与显卡有关。
更改密码,系统自带的密码过于繁琐,我们可以使用sudo passwd命令更改密码,我将密码更改为q,特别方便运行命令。
系统自带了Python 包管理器Anaconda,查看Python版本,结果如下:

img

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安装即可

img

1.2.2.2 安装 腾讯文档

同理至官网下载arm64安装包

img

1.2.2.3 安装代码编辑器vscode

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

1.2.2.4 安装ROS2

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

img

1.2.2.5 安装动力学库及仿真器

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

   conda install crocoddyl pinocchio mujoco -c conda-forge


1.3 测试相机

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

img

img

二、机器人仿真开发

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

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

2.1.1 机械臂仿真

2.1.1.1 MoveIt介绍

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

img

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


img

img

因为启动了RVIZ及其GUI界面,所以运行稍微有些卡顿,若不启动GUI界面,实际作为机械臂控制器使用时完全没有问题。
我们还可以打开ROS生态下的Gazebo,运行示例程序,如图所示为机械臂工作台示例。我们可以通过GUI界面操作机械臂的各个关节运行,后续有科研或者工业需要可以与其他开源ROS功能包一起使用完成相关功能。

img

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


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

img

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

img

使用rqt_graph查看节点图

img

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

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

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

这里运行了官方提供的示例程序,主要功能是控制人形机器人单脚站立,使用线性二次型规划控制。运行效果如图所示。
程序主要包括加载机器人模型并渲染展示,建立机器人动力学模型,并在指定位置线性化及离散化,设计LQR控制器,最后施加干扰并渲染完成控制。

img

img

2.2.2 使用开源动力学库

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

img

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

三、人工智能应用开发

3.1 官方示例

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

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

img

3.1.2 OCR识别

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

img

img

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

3.2 昇腾社区示例

3.2.1 生成式扩散模型示例

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

img

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

img

img

img

img

四、总结

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点之间完成。
如有错误,请指正!

Logo

昇腾万里,让智能无所不及

更多推荐