一、X3Pi刷机+点亮测试
1.1 刷机+点亮
- 准备SD卡和读卡器,到资源中心下载X3派系统镜像;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1XtQOIxa-1673525848808)(00.png)]- 安装balenaEtcher烧录工具,按教程烧录镜像到SD卡;
- X3Pi断电情况下将SD卡插入X3Pi卡槽,连接网线、显示器(可选),开发板上电,指示灯绿灯熄灭后即启动完成;
=====>
- 服务器版镜像可以在显示器看到地平线logo,系统启动完成后可以通过串口、SSH方式登录。第一次上电后使用串口登录以进行基本配置;
- PC机为Windows系统可以安装MobaXterm,下载免费版即可;
- 然后将串口USB转接板接入PC机,在设备管理器中查看是否连接上,若提示未知设备,资源中心下载串口驱动并安装,完成后在设备管理器查看端口号;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4cSsZirX-1673525848809)(03.png)]- 打开
MobaXterm
,点击Session
,然后选择Serial
。配置端口号为设备管理器端口号,波特率设置为921600,点击OK
,输入用户名(root)和密码(root)登录到X3Pi;- 登录后,使用
ifconfig
查看开发板网络配置,确保与PC机处于同一网段,若不在同一网段,确保两设备在同一局域网内,然后可设置X3Pi静态IP,具体参考X3Pi网络配置,网络配置完成后即可使用SSH登录;sudo vim /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8) # Include files from /etc/network/interfaces.d: source-directory /etc/network/interfaces.d auto eth0 iface eth0 inet static address 192.168.1.10 # 配置为与PC机为同一网段 netmask 255.255.255.0 gateway 192.168.1.1 metric 700
sudo restart_network
1.2 ai测试
- 基础配置完成后,可以通过demo简单测试功能。开机后,PC机命令行或MobaXterm通过SSH使用root(root)用户或sunrise(sunrise)用户登录到开发板,登录后测试图像分类算法
sunrise@ubuntu:~$ cd /app/ai_inference/01_basic_sample/ sunrise@ubuntu:/app/ai_inference/01_basic_sample$ sudo ./test_mobilenetv1.py
得到分类结果
========== Classification result ==========
cls id: 340 Confidence: 0.991851
首先确保USB摄像头正常连接:
ls /dev/ | grep video
v4l2-ctl -D -d /dev/video8
# 若不是video8可查看其它节点,比如我的是video0
- 在有USB摄像头连接情况下,可测试视频目标检测算法,注意修改
usb_camera_fcos.py
中的摄像头节点sunrise@ubuntu:~$ cd /app/ai_inference/02_usb_camera_sample/ sunrise@ubuntu:/app/ai_inference/02_usb_camera_sample$ sudo python3 usb_camera_fcos.py
二、ai应用开发-基于tros实现Web展示USB摄像头目标检测算法
2.1 环境准备
- 开发板安装TogetherROS
sudo apt update && sudo apt install tros
- 升级tros:
sudo apt upgrade
- 查看当前tros版本和系统版本
sudo apt list | grep tros
;cat /etc/version
- 运行
Hello World
测试tros
终端1运行:
source /opt/tros/local_setup.bash
ros2 run examples_rclcpp_minimal_subscriber subscriber_member_function
终端2运行:
source /opt/tros/local_setup.bash
ros2 run examples_rclcpp_minimal_publisher publisher_member_function
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L0kneD5d-1673525848809)(tros_helloworld.png)]
- 安装ROS2 package
首先手动指定IP
vim /etc/hosts
添加185.199.108.133 raw.githubusercontent.com
更新软件源并安装下载工具
sudo apt update && sudo apt install curl gnupg2 lsb-release
设置密钥
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
设置ROS软件源,然后更新
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
sudo apt update
安装ros2 packpages
sudo apt install ros-foxy-image-transport
sudo apt install ros-foxy-image-transport-plugins
TogetherROS与ROS foxy版本接口完全兼容,能够复用ROS丰富工具包
,创建ROS2与tros软连接
cd /opt/tros/ && python3 create_soft_link.py --foxy /opt/ros/foxy/ --tros /opt/tros/
source /opt/tros/local_setup.bash
- 测试USB摄像头数据采集与通过tros进行Web展示
- 首先编辑
/opt/tros/share/hobot_usb_cam/launch/hobot_usb_cam.launch.py
,设置USB摄像头节点,默认为/dev/video8
- 配置tros环境
source /opt/tros/local_setup.bash
- 启动节点
ros2 launch hobot_usb_cam hobot_usb_cam.launch.py
- 然后在另一个终端启动websocket
source /opt/tros/local_setup.bash
cd /opt/tros/lib/websocket/webservice && chmod +x ./sbin/nginx &&./sbin/nginx -p .
# 启动nginx,nginx只需启动一次,如前面已启动过nginx,则无需再次启动
ros2 run websocket websocket --ros-args -p image_topic:=/image -p image_type:=mjpeg -p only_show_image:=true
PC机浏览器中输入X3Pi的IP地址,点击左上方web展示即可查看USB摄像头实时画面
2.2 基于USB摄像头的目标检测算法(Web展示)(FCOS/YOLO)
2.2.1 基于tros
- 编辑
/opt/tros/share/dnn_node_example/launch/hobot_dnn_node_example.launch.py
文件,修改摄像头节点(默认为dev/video8
)source /opt/tros/setup.bash
export CAM_TYPE=usb
ros2 launch dnn_node_example hobot_dnn_node_example.launch.py config_file:=config/fcosworkconfig.json image_width:=480 image_height:=272
2.2.2 基于rtsp
2.4 其它tros案例
三、 自定义模型部署+应用开发
3.1 paddle模型训练与部署
3.2 pytorch/mmdeploy模型部署
3.3 tros应用开发
3.4 案例
附录
1.开发手册
2.相关案例
- 手势识别
- 目标检测
- 行人跟踪