OrangePi AIpro上手初体验:
- 1.基本外观及功能接口简介
- 2.点亮OrangePi AIpro开发板
- 3.OrangePi AIpro功能体验
- 3.1.目标检测
- 3.2.OCR文字识别
- 3.3.图像的曝光增强
- 3.4.系统的整体性能(运行ROS)
- 4.OrangePi AIpro体验总结
- 4.1.硬件及软件生态:
- 4.2.使用体验及性能表现:
- 4.3.扩展能力:
- 4.4.可改进的地方:
1.基本外观及功能接口简介
OrangePi AIpro整体重量适中,结构小巧,其包装盒物品主要是如下图所示:
●OrangePi AIpro主板
●电源适配器(C to C)
●SD卡(预装Ubuntu系统)
此外,主板上包含丰富的外设接口,如USB-Type C,HDMI,以太网,耳机口,摄像头接口,USB 3.0接口,WIFI,蓝牙等,同时对比与之前使用的树莓派4B来说,OrangePi AIpro还拥有eMMC和M.2 NVME SSD的外部接口,这使得这款开发板拥有强大的存储能力,具备更高的可玩性。详细的接口及功能模块介绍如下图所示:
2.点亮OrangePi AIpro开发板
OrangePi AIpro开发板上手的第一件事那肯定是迫不及待地上电进入系统看看,该开发板预装了Ubuntu系统,同时可通过拨码开关选择不同的系统启动方式。此次选择默认的SD卡启动。
个人还是更喜欢命令行形式,其效果如下:
同时可以连接串口查看相关的信息输出,如下图:
3.OrangePi AIpro功能体验
官方镜像提供了一系列的应用体验例程,这里选取了部分进行了测试。同时基于个人的开发经验进行了相关的体验测试。
3.1.目标检测
首先,既然是主打AI应用的开发板,那自然少不了经典的目标检测,这里采用的是YOLOv5s目标检测器算法,它是YOLOv5 系列中较为轻量的网络模型,适合在边缘设备部署,进行实时目标检测,其官方demo效果如下图,可以看到有效识别了不同数量的car。
此外测试了其他情况下的目标检测,比如在下图中有静止的自行车以及运动的行人,其都做到了有效的检测。在进行此测试时,由于视频非常大,处理过程中OrangePi AIpro的风扇高速运转,散热性能还有较高的提升空间,但得益于高性能的处理器,其代码整体的执行速度还是非常快的。
(由于gif上传的大小限制,此处检测效果做了裁剪)
静态效果如下:
动态效果如下:
3.2.OCR文字识别
第二部分测试了OCR文字识别部分,OCR 两阶段方法一般包含两个模型,检测模型负责找出图像或视频中的文字位置,识别模型负责将图像信息转换为文本信息。基于官方demo我们增加了一定难度,加入字母以及大小不同,颜色深浅差异的文字,其效果如下图所示,可以明显看到检测模型没能有效的找出所有文字位置,识别模型将字母”I”识别成“L”,此处误识别的主要原因在于两者高度的相似性。其他文字及字母的识别基本正确,后续可采用不同的模型进一步测试其效果.
3.3.图像的曝光增强
第三部分测试主要测试了图像的曝光增强,其效果如下图所示,可以看到增强后的图像更加明亮清晰,浅色文字也变得更加明亮,效果符合预期。
3.4.系统的整体性能(运行ROS)
第四部分测试了系统的整体性能,这里采用了之前经常跑的机器人ROS,因为之前跑的ROS是通过树莓派4B实现的,所以还是很期待在OrangePi AIpro上的具体使用效果。
首先安装对应的ROS版本进行简单的功能测试,安装过程网上就很多了就不介绍了,此次采用编译的方式安装,安装过程中的资源占用情况较高,如果开的命令行窗口过多则会略有卡顿,这里可能是我开的界面过多导致的,但整体安装速度比之前在树莓派上安装时快速不少。通过rosversion -d可查看ROS版本,如下图所示,当前使用的是Humble版本。
通过ROS自带的demo可测试ROS系统是否正常安装运行。
测试命令如下,
ros2 run demo_nodes_cpp talker
ros2 run demo_nodes_py listener
测试效果如下所示:相应的发布者与订阅者都有对应的输出.
当打开RVIZ后查看当前的资源使用情况如下,整体符合预期。
此外,对于机器人来说,URDF是建模仿真的经典方式,此处使用了之前项目中的一个巡检机器人模型,其Urdf文件的结构如图,
由于之前的工程是在ROS1上实现的,很多地方需要修改,主要是此处的Launch文件,简单修改后如下,
from launch import LaunchDescription
from launch_ros.actions import Node
from launch.substitutions import Command, FindExecutable, PathJoinSubstitution
from launch_ros.substitutions import FindPackageShare
def generate_launch_description():
# 获取 URDF 文件的路径
urdf_path = PathJoinSubstitution([
FindPackageShare('wyf_description'),
'urdf',
'wyf.urdf'
])
# 获取 RViz 配置文件的路径
rviz_config_path = PathJoinSubstitution([
FindPackageShare('wyf_description'),
'config',
'wyf_urdf.rviz'
])
return LaunchDescription([
# 设置 robot_description 参数
Node(
package='robot_state_publisher',
executable='robot_state_publisher',
name='robot_state_publisher',
output='screen',
parameters=[{
'robot_description': Command([
FindExecutable(name='xacro'),
' ',
urdf_path
])
}]
),
# 启动 joint_state_publisher_gui 节点
Node(
package='joint_state_publisher_gui',
executable='joint_state_publisher_gui',
name='joint_state_publisher_gui',
output='screen'
),
# 启动 RViz
Node(
package='rviz2',
executable='rviz2',
name='rviz2',
output='screen',
arguments=['-d', rviz_config_path]
)
])
通过ros启动launch文件后,这里可以得到一个简单的Urdf模型,可以流畅的显示运行。
本来想在GAZEBO下先仿真测试下小车的SLAM定位导航的能力,由于该版本及架构下还没发布新的Gazebo,所以只能后续换成Ununtu20.04进行测试了。此外之前通过树莓派测试的视觉SLAM方案也将后续进行上板测试,进一步开发其AI特性。
至此,本次OrangePi AIpro初次上手体验完美结束。
4.OrangePi AIpro体验总结
4.1.硬件及软件生态:
OrangePi AIpro配备了高性能的处理器和丰富的接口,搭载了昇腾AI 处理器,可提供8TOPS INT8 的计算能力,支持多种操作系统。开发者可以根据需求选择合适的系统,并通过丰富的软件资源库和社区支持,可以快速上手并进行开发。
4.2.使用体验及性能表现:
开箱即用。首次启动时,系统加载迅速,图形界面友好。得益于高性能处理器,OrangePi AIpro在运行常见的 AI 和机器学习任务时表现出色。无论是图像识别、语音处理还是其他计算密集型任务,或者是运行机器人系统都能流畅运行。
4.3.扩展能力:
丰富的接口使得连接传感器、摄像头、显示器等变得方便。GPIO 引脚的存在使其在机器人开发中具备很大的灵活性,这也是我最喜欢的地方,更高的扩展性意味着更多的可能性。
4.4.可改进的地方:
可增加更优秀的散热,增加更丰富的文档。同时,对于资源占用较高的应用场景可换成16G的更高性能的OrangePi AIpro的版本。