目录

  • 前言
  • 开机
  • 网络配置和远程连接
  • 快速体验(1)(2)(3)
  • 总结

前言

地平线团队在不断测试,完善了sunrise X3pi这块板子之后,X3pi开发板已经变得成熟。仅个人观点,个人认为X3配置的双核BPU在使用合理的情况下,推理能力并不亚与其他派,贴主实装了yolov5目标检测上板推理+Cython后处理,推理速度达到了20多帧,理论上通过超频,多线程等处理还能达到更快。

言归正传,前些日子sunrise X3pi正式改名RDK X3,并且推出了将电路高度集成在核心板,仅通过2排CM4板对板接口向外引出,功能同样强大的RDK X3 Module。贴主这边立马参加了新板试用活动,拿到一块热乎的X3 Module和此时还未开卖的官方载板。

本帖主要对新板展开快速体验,寻找一些注意事项,并快速搭建一辆视觉小车。

开机

开机前,需要烧录系统,贴主这块核心板到的时候,载板还未发出,迫不及待体验就去购买了微雪载版,在X3 module手册中有提到烧录系统相关,可以选择烧录到板卡自带的闪存,也可以选择烧录到TF储存卡,烧录系统完成后就可以插电开机了。

由于我买的微雪载板似乎没有提供调试串口,所以直接插上了键鼠和HDMI显示器开机,可以看见地平线的logo桌面,正常开机了。


网络配置和远程连接

我在X3pi的习惯登陆方式是:“手机开热点>>板端自动连接>>PC端ssh登入”,而这次官方寄来的载板是无wifi版本的,为了能够连接网络实现快速登入,入手了一块无线网卡,取代板子的wifi模块。


购置无线网卡时需要注意,问问客服ubuntu系统能否使用,树莓派和英伟达等开发板能否使用。如果其他开发板都能使用,那么X3也能用。

插上网卡不能直接使用,我们需要安装驱动,可以直接找客服要编译好的驱动文件(以.ko为后缀),本帖以88x2bu驱动文件为例展示安装。

插上键鼠,显示器,直接打开图形化桌面,用U盘把驱动文件转移到板子上的/lib/modules/4.14.87/路径下,对驱动签名sudo hobot-sign-file 88x2bu.ko,并启用驱动sudo /sbin/depmod -a 4.14.87 sudo insmod 88x2bu.ko。这时,就可以用正常的方法连接wifi并ssh登入了。



快速体验(1)

板上的快速体验demo和旧版是差不多的,但是多出了很多Cdemo,这次先不看它们,玩点不一样的。

参照我在地平线社区的文章【小白适用】如何用X3pi秒杀视觉循迹小车,快速搭建一辆二轮小车



写一个控制函数,简单测试一下电机控制

import Hobot.GPIO as GPIO
pwma , pwmb = 32 ,33

stby , ain2 , ain1 , bin1 , bin2 = 11 , 13 , 15 , 16 , 18

GPIO.setmode(GPIO.BOARD)

GPIO.setup(stby,GPIO.OUT)
GPIO.setup(ain1,GPIO.OUT)
GPIO.setup(ain2,GPIO.OUT)
GPIO.setup(bin1,GPIO.OUT)
GPIO.setup(bin2,GPIO.OUT)

GPIO.setmode(GPIO.BOARD)

pa = GPIO.PWM(pwma,48000)
pb = GPIO.PWM(pwmb,48000)

#启动tb6612电机控制模块
GPIO.output(stby,GPIO.HIGH)

#初始占空比
pa.start(100)
pb.start(100)


def ctrl(left,right):
    if left >= 0:
        GPIO.output(ain1,GPIO.HIGH)
        GPIO.output(ain2,GPIO.LOW)
    else:
        GPIO.output(ain2,GPIO.HIGH)
        GPIO.output(ain1,GPIO.LOW)

    if right >= 0:
        GPIO.output(bin1,GPIO.HIGH)
        GPIO.output(bin2,GPIO.LOW)
    else:
        GPIO.output(bin2,GPIO.HIGH)
        GPIO.output(bin1,GPIO.LOW)

    pa.ChangeDutyCycle(abs(left))
    pb.ChangeDutyCycle(abs(right))
    pa.start(abs(left))
    pb.start(abs(right))

该控制函数传入左右pwm值,控制电机,且根据pwm正负反馈到电机正反转。

快速体验(2)

小车可以动了,不妨再做一些高逼格的东西,我们给小车部署上目标检测,就做个手势跟随吧。

找个训练集,贴主这边是在github上找的无标手势图集,自己打的标,质量一般因此不方便开源。


然后使用yolov5框架训练模型

模型训练好之后,需要量化成bin文件才能在板上推理,将yolov5模型部署到板上高速推理的方法请参考我在地平线社区的文章【模型提速】如何在X3pi使用yolov5模型50ms推理

PS:至于天工开物工具链面对小白的:如何部署工具链,如何转化模型等问题,站内是有对应教程的,并且我的学习还不够充分,只是知道如何使用,但在不久后我计划出一篇面向小白的模型部署详细全过程教程,还请期待。

我们在板端测试一下模型,效果如下


快速体验(3)

最后再将两部分整合,以摄像头读取画面,转化为nv12数据,推理得到目标框数据,在阈值之上选取置信度最高的框,将其与图像中心点的差距作为误差,可传入pid处理,但贴主这边没有传入pid,只是做了缓慢旋转的算法,由于后处理代码是使用X3的demo,放在这里过于凸长,大家可以可以到我的代码仓库查看:github.com/hachi-leaf/sunrise

效果视频:bilibili.com/video/BV1ec411w789

总结

整块板子体验下来,虽然总体和X3pi的功能基本一致,但/app下多出了很多C的demo,开放了许多底层C代码,可见地平线对开发者们的高度欢迎。X3Module把接口集成在两排CM4接口,也极大方便了扩展应用。前几天虽迟但到的官方载板结构和英伟达相似,已经能够预见地平线在国际战线上的做大做强了。

后续我将使用X3参加全国大学生光电设计竞赛并开展其他机器人开发活动,将会给大家带来更多开源分享,敬请期待!