高成本帖子——RDK X3模组快速体验&载板辅助选型

转眼,又是一年了,还记得22年6月自己第一次体验X3开发板 [首发] 多方位玩转“地平线新发布AIoT开发板——旭日X3派(Sunrise x3 Pi)” 。至今还记得拿到手的新奇与兴奋,还记得第一次玩BPU就遇到了大坑,第一次发帖就把论坛搞崩。如今,当初对我来说很难的BPU也结束了,在开发交流的这段时间,也认识了壮哥、Arui、Rex等很多朋友。本贴成本巨大→_→,我目前一共有4组模组+载板,这些就2k多,去深圳参加发布会就块2.5k了 😵,还不快快点赞收藏关注。

今年,地平线又出了新品RDK X3模组,相比与之前的X3派,其实就是把X3独立为一个模组,计算性能是一样的,但可以自己根据需求选择合适的载板也可以根据自己的需求动手做载板。很多人在遇到模组都会产生疑惑,那么借助下面这组图(5块板子,真的是真爱粉了 ❤️),我从项目的角度说一下为什么要有模组这个需求:

需求是具有多样性的,也就是有的需求会要用到X3的所有接口,也会有需求仅利用X3的计算功能。

  • 部分应用不需要hdmi/dsi等接口来降低载重/功耗。比如无人机在线计算平台,桌面/图像可视化等相关功能往往用于调试。那么可以
    • 删掉hdmi/dsi接口,系统安装server版本,这样既可以节省计算资源,又可以降低功耗,以及相关硬件的配重。
    • 将hdmi接口更换为micro hdmi接口。大hdmi接口是很重的,比如X3派,官方载板,微雪Base载板等,在无人机的一些应用,重量越轻越好,更换为micro hdmi就可以减少无用的重量。
  • 机器人应用串口多种多样,定制相关载板可利用已有接口进行扩展,提高安全性并降低重量。X3只有两个uart接口,但机器人经常会需要rs232/485等串口类型,这时候我们可以引入一些芯片进行转换。如果我们在已有的载板上,往往需要添置如下几个模块:usb hub、ttl转rs232、usb转多路ttl来满足我们的需求,如果将这些模块都接在板子上,会极大增加重量,对于有载重需求的应用是不现实的,而且若场景存在大量震动,则会出现接触不良的问题。定制化的载板就不会有这些问题
  • 仅利用X3的计算能力。在一些集群任务中,我们就可以只利用x3的网口,其他接口都用不上。这种极致的重量,不到30g就可以搭建一个小小的计算Node,是不是很酷炫。而且也可以定制一个小小的集群板。后面有机会我会尝试搭建个小小的集群。
  • WIFI模块的选配,可以自由增减wifi性能

新品RDK X3模组,相比于之前的X3派,价格更低,选型自由度更高(内存:2G/4G、emmc: 16G/32G/64G、有无wifi)。同样的2g内存,X3派480左右,而X3模组才319,价格便宜了160,而且顶配4g+64G是439。这些配置几乎可以覆盖了大部分的项目需求,而且也可以接入SD卡,将数据保存在这里来扩展空间。此外,模组需要配合一个载板(也叫扩展版)才可以使用,模组接口跟树莓派CM4接口一致,因此可以兼容大部分的CM4载板。

这个模组跟X3派的芯片是一样的,大部分的操作内容跟之前的博客是一样的,重复测试没有意义,只要进了系统,一些编译安装的操作跟正常linux没啥区别了(结合《多方位玩转“旭日X3派”》 来使用体验更佳哦)。因此这个博客重点会介绍与X3派操作不一样的地方,在文章的后面也会介绍下自己在地平线分享日的感受😏。

一 快速体验

由于X3模组与X3派的主要操作不同点可参考下表,差异点的优劣点我分别用绿色和红色标注出来。

差异点旭日X3派RDK X3 模组评价
刷机方式系统从SD卡启动系统可从SD卡/EMMC启动EMMC刷机依赖官方工具,但该工具不够稳定
USB Wifi编译驱动需要联网驱动编译不需要联网&&操作简化编译驱动问题更少了👍
MIPI 相机CSI只引1个,接入树莓派相机需要转接板官方载板引出2个2lane和1个4lane树莓派和官方的相机都可以用了👍

先给一些notes,后面操作可能会用到:

  • 如果有可视化需求,可以通过hdmi接口外接显示器,但X3模组目前仅支持1920x10801280x7201024x600800x480分辨率的显示屏。因此我一般会用视频采集卡将HDMI通过USB输出到笔记本上。当然,也可以在获取开发板的IP地址之后,利用VNC远程登陆。
  • 官方载板使用uart debug串口登陆板子的话,需要安装一个串口驱动CH340,但官方并未提供下载地址。我把驱动放在百度云(提取码:0a09 )中的文件夹1 - BPU开发/软件/CH34x_Install_Windows_v3_4.zip

下面针对这些差异点,给出操作流程以及体验总结。

1.1 系统刷机

刷机永远是开发板最基本的操作。X3模组主要是将系统刷到emmc上,刷机流程参考《开发手册:烧录系统到eMMC》。当然也可以将系统烧录到SD卡上,从SD卡启动系统,SD卡烧录可以参考博客 旭日X3派使用体验 。系统镜像X3镜像下载地址,分为Server(无桌面)和Desktop(有桌面)两个版本。Server适用于无可视化需求相关的应用,由于无桌面,因此可以节省一些计算资源和功耗。

在本节,我将给出基于微雪的扩展版CM4-IO-BASE-ACM4-IO-BASE-B也可)以及官方载板,引导各位如何选择适合的镜像,并完成刷机。另外,我刷机的时候遇到了一些坑,因此完善了下刷机流程,并总结几种烧录错误的解决办法。

PS:微雪载板和官方载板的Boot模式接线如下所示,先配置好boot的接线,再接通电源。

在这里插入图片描述

1.1.1 镜像选择

刷机第一步就是镜像的选择,镜像种类的选择有一些讲究,X3模组载板的选择,直接影响了个人电脑与开发板的远程登陆方式,目前远程登陆方式有3种:

  • UART模式。uart模式是利用载板上的debug串口,直接通过命令行进行调试。目前该模式调试是灵活度最高的,但该模式目前只能使用官方载板
  • HDMI模式。这种模式算不上远程登陆,这个实际上是利用这个可视化桌面,这样就算没有uart调试接口也可以进行调试。该模式只能使用Desktop镜像,且载板必须有hdmi接口,前面展示的微雪NANO载板就没有hdmi接口。
  • 网络模式。这种模式就是利用ssh远程登陆进行调试,但一定要保证开发板连接到网络,且能获取板端的IP地址。如果选择的载板不支持uart模式和hdmi模式,拿不到开发板的IP地址,就彻底没法远程登录到开发板了。

为什么树莓派的载板,无法使用uart debug串口远程登陆开发板呢?利用下表对比树莓派和X3的引脚,很清晰知道,树莓派的引脚其实没有debug 串口这个引脚,因此树莓派的扩展板也自然不会带uart调试功能。

Pin IDRDK X3 模组树莓派CM4模组
16Debug_Uart0_RXEthernet_SYNC_IN
18Debug_Uart0_TXEthernet_SYNC_OUT

各位在刷机前可以根据下面描述,决定自己使用哪种镜像。对于每种镜像,满足任意一项即可,如果没有满足的项,请更换使用的模组载板

  • 如果想使用带桌面的镜像Desktop:。
    • 确保载板支持HDMI模式,即有HDMI接口。
    • 确保载板+模组有网络通信功能,这样可以利用VNC远程登陆桌面。但需要确认下是否满足如下条件:
      • 如果载板支持UART模式,则可以用uart debug串口登陆开发板,通过ifconfig拿到ip地址。
      • 如果载板无UART模式,请确保自己有办法能拿到开发板的IP地址。
  • 如果想使用带桌面的镜像Server:满足下面任意一项即可
    • 确保载板有UART模式,即可以通过uart debug串口登陆开发板。这个是最保底的方案。
    • 确保载板支持网络模式,但一定要保证开发板能拿到IP地址远程登陆。

以我目前手上的三种载板为例,介绍对应的镜像选择。

  • 官方载板。由于X3模组的所有接口均被引出来,因此ServerDesktop镜像均可安全使用。
  • 微雪Base-A载板。仅有HDMI和网络接口,由于无法保证自己稳定拿到IP地址,因此推荐使用Desktop镜像。
  • 微雪Nano-A载板。载板没有能调试的一切接口,只能使用X3模组自带的Wifi模块,因此该载板推荐使用Server镜像,并且通过其他手段比如固定ip地址,或者将ip地址通过串口返回等其他手段获取IP地址。

1.1.2 驱动安装(配置一次即可)

首先要下载驱动包android_hobot并解压,之后按照如下顺序处理

  • 5-runasadmin_register-CA-cer.cmd文件右键管理员权限运行
  • X3模组的扩展版处于boot模式(见本节开头部分的介绍),并用Type C数据线接在开发板上上电。调出设备管理器,一般会在其他设备里出现一个未知设备USB download gadget
    • 如果没出现上述未知设备,检查下在Android Device中是否有Android Bootloader Interface,如果有说明自己安装过类似驱动。可以直接刷机。
    • 如果什么都没有,检查下自己是不是拿了一个type c电源线 😂,将这个线连接到手机上,看看手机是否有传输文件的功能。
  • 右键未知设备USB download gadget→更新驱动程序→浏览我得电脑查找驱动程序→选择android_hobot根目录,之后即可完成驱动的安装
  • 安装成功后,可以发现这个未知设备变为了Android Bootloader Interface

走完这些流程,即可快乐刷机。
在这里插入图片描述

1.1.3 系统烧录(当前镜像版本2.0.0)

在烧入系统之前,需要注意一个非常重要的一点,X3的系统是有Server版本和Desktop版本的,在使用Server版本时,我一般会使用开发板自带的Debug串口配置wifi,获取到wifi后,再利用ssh远程连接。扩展版上面有有线网的接口,可能会利用这个远程连接,但是若网络除了问题,这个系统就再也无法连接上了。

系统刷机比较简单

  • 选择开发板型号,模组是包含MD的这个不要选错了(期望后续更新能自动识别开发板型号,Jetson已经有这个功能了)
  • 选择下载的镜像文件,切记不要包含空格/中文,否则会出问题。
  • 点击右侧Start开始刷机。
  • 等待一段时间后,进度100%即可刷机完成。

在这里插入图片描述

1.1.4 刷机错误分析及其解决办法

这里总结下刷机会遇到的问题,方便各位排查下。在排查错误前,请确保自己的type c是数据线而不是电源线;并且载板处于boot模式。

① burn flash failed,而且未出现remaining time相关字段。
若出现下面这种错误的话,基本是镜像文件路径出现中文/空格/特殊字符等问题,尽可能保证自己的镜像路径是全英文。

② 刷机错误并出现fastboot timeout。

若刷机时候出现如下错误,基本上是刷机工具兼容性问题,换个笔记本,系统版本低一点基本可解决。(这里非常感谢晟哥、飞哥的帮助😍)

1.2 USB Wifi 驱动编译

对于某些需要使用自己wifi的需求,这里基于《在旭日X3派上使用双频1300M USB无线网卡》在新系统上编译下驱动,检查下相关编译操作是否有优化。内核编译的相关操作可以参考官方文档:《6.4 内核头文件》

对于server镜像,老样子,需要安装一些依赖包sudo apt-get install dkms bc,但在desktop镜像下就不需要安装。这个包建议还是先预装到系统里吧,毕竟有不带网卡的模组,免得一些驱动无法安装。

利用前面的博客,下载驱动包RTL8812BU.tar.gz,并替换Makefile,进入文件夹RTL8812BU_for_Raspbian,输入make -j4开始编译驱动。

之后输入下面的指令,完成驱动的拷贝、注册、激活。处理完之后,该驱动已经是开机自启的了。

# 当前路径:RTL8812BU_for_Raspbian
sudo cp 88x2bu.ko /lib/modules/4.14.87/
sudo hobot-sign-file /lib/modules/4.14.87/88x2bu.ko
sudo /sbin/depmod -a 4.14.87
sudo insmod /lib/modules/4.14.87/88x2bu.ko 
sudo reboot

相比于之前的系统版本,该系统版本简化了内核编译激活的操作,不再像之前需要手动配置添加一些信息了。

PS:编译这个驱动前期,由于个人操作不规范,导致添加驱动后系统无法启动,刷机刷了4次才发现这个问题,因此把自己令人窒息的操作摆出来,防止大家走我一样的坑。

问题就是发生在拷贝激活驱动这些步骤上,我拷贝88x2bu.ko到系统目录下之后,后面激活的内核是88x2bu.ko,而不是/lib/modules/4.14.87/88x2bu.ko,所以在lib下的内核没有签名。

# 当前路径:RTL8812BU_for_Raspbian
sudo cp 88x2bu.ko /lib/modules/4.14.87/
sudo hobot-sign-file 88x2bu.ko
sudo /sbin/depmod -a 4.14.87
sudo insmod 88x2bu.ko 
sudo reboot

如果在sudo vim /etc/modules添加了这个驱动之后,就会导致系统无法启动(因为驱动没签名不可用),出现下面这个错误,各位以后使用内核相关时可以注意下文件路径。
在这里插入图片描述

1.3 双路mipi摄像头采集

官方的载板引出了3个摄像头接口:CAM0和CAM2是2lane CSI接口,可以接入树莓派相机。CAM1是4laneCSI接口,可以接入X3派相机。之前买了微雪的机器狗,给的是树莓派接口的相机,没法接在旭日X3派开发板上。正好官方载板都支持这两种接口,因此借着这个机会,我给一个双路MIPI相机采集Demo。具体接线方式如下:

1.3.1 检查MIPI相机是否接入

一定要在开发板不通电时候接好相机,插电开机后可以通过i2cdetect命令确认模组I2C地址能否正常检测到。首先输入sudo i2cdetect -l检查看当前系统的I2C总线。

对于X3模组来说,输入sudo i2cdetect -y -r 0可以查看相机的接入情况,当然你也可以输入sudo i2cdetect -y -r 1sudo i2cdetect -y -r 3sudo i2cdetect -y -r 5分别查看对应总线上的所有从设备。下图是接入相机前后的I2C设备情况。
在这里插入图片描述

1.3.2 图像采集

mipi相机的采集主要依赖from hobot_vio import libsrcampy as srcampy,可视化部分需要用到类ImageShow,具体定义参考博客 旭日X3派使用体验 中 “ 3.2 HDMI可视化图像数据 ” 部分。

双路同时可视化需要考虑的一个部分就是相机初始化参数的设置open_cam方法,这里面相关函数的定义可以参考文档《4.5 多媒体接口说明》

open_cam的声明是:Camera.open_cam(pipe_id, video_index, fps, width, height),关联多路参数设置的参数主要有两个:

  • pipe_id:camera对应的pipeline通道号,取值范围0-7。每个相机只能占用一个通道,因此我给两个相机的通道分别指定0, 1,不冲突就可以。
  • video_index:camera对应的host编号,-1表示自动探测。其实这个很好理解,还记得前面接线时候的CAM1CAM2吗,这个1,2就是对应这个参数。我的树莓派相机接在CAM2上,因此这里的video_index=2,X3派相机接在CAM1上,这里的video_index=1.
res_raspi = cam_raspi.open_cam(0, 2, 30, 1920, 1080) # 设置树莓派相机参数
res_x3pi = cam_x3pi.open_cam(1, 1, 30, 1920, 1080) # 设置X3派相机参数

具体代码可以参考examples/MIPI/show_2way_camera.py,在OpenWanderary根目录下输入sudo python3 examples/MIPI/show_2way_camera.py即可在显示屏上看到双路相机展示的图像。

为了在sudo下依然能够使用PYTHONPATH这个环境变量,我们需要配置一下系统文件:

  • 输入sudo vim /etc/sudoers.d/wanderary
  • 在里面添加Defaults env_keep += "PYTHONPATH",然后保存退出。

在这里插入图片描述

下面是双路可视化的代码细节:

from wanderary.visualization import ImageShow
import numpy as np
import cv2
from hobot_vio import libsrcampy as srcampy


im_show = ImageShow() # 可视化工具初始化

cam_raspi = srcampy.Camera()
res_raspi = cam_raspi.open_cam(0, 2, 30, 1920, 1080) # 设置树莓派相机参数

cam_x3pi = srcampy.Camera()
res_x3pi = cam_x3pi.open_cam(1, 1, 30, 1920, 1080) # 设置X3派相机参数

if res_raspi != 0 or res_x3pi != 0:
  raise(Exception(f"Camera Open Failed. res_raspi: {res_raspi}, res_x3pi: {res_x3pi}"))
else:
  print("All Cameras are open.")
  
for idx in range(20):
  print(idx)
  origin_image_raspi = cam_raspi.get_img(2, 1920, 1080) # 获取相机数据流
  origin_nv12_raspi = np.frombuffer(origin_image_raspi, dtype=np.uint8).reshape(1620, 1920)
  origin_bgr_raspi = cv2.cvtColor(origin_nv12_raspi, cv2.COLOR_YUV420SP2RGB) 
  cv2.putText(origin_bgr_raspi, "Camera CAM2 [RasPi]", (30, 60), cv2.FONT_HERSHEY_SIMPLEX, 2, (0,0,255), 2)  
  
  origin_image_x3pi = cam_x3pi.get_img(2, 1920, 1080) # 获取相机数据流
  origin_nv12_x3pi = np.frombuffer(origin_image_x3pi, dtype=np.uint8).reshape(1620, 1920)
  origin_bgr_x3pi = cv2.cvtColor(origin_nv12_x3pi, cv2.COLOR_YUV420SP2RGB) 
  cv2.putText(origin_bgr_x3pi, "Camera CAM1 [X3Pi]", (30, 60), cv2.FONT_HERSHEY_SIMPLEX, 2, (0,0,255), 2)  
  
  imgshow = cv2.hconcat([origin_bgr_raspi, origin_bgr_x3pi])
  im_show.show(imgshow)

im_show.close()
cam_raspi.close_cam()
cam_x3pi.close_cam()

1.4 BPU测试:跟踪算法DCMT

这个部分的目的是测试X3BPU模组是否稳定,这里测试的算法使用的是天琦师弟正在研发的DCMT跟踪算法。代码项目存放在OpenWanderary/projects/torchdnn文件夹下,依赖的文件存放在百度云(提取码:0a09 )中的文件夹1 - BPU开发/OpenWanderary/projects/torchdnn/data/dcmt/ 。代码这里我就不解读了,依赖文件放置在torchdnn/data/dcmt/之后,输入如下指令可以得到目标跟踪结果。

sudo python3 demos/DCMT/running_on_X3.py \
  --cfg data/dcmt/Retrain.yaml \
  --inference data/dcmt/DCMT.bin \
  --video data/dcmt/ChasingDrones \
  --saveroot data/dcmt/

在这里插入图片描述

二 引脚差异&载板选型

X3模组虽然兼容CM4载板,但又未完全兼容,因此在选型的时候,存在X3无法支持载板所有功能的问题。因此,如果我们在选用载板时候,一定要检查下X3模组是否支持这些。一般载板很难退货,所以买到不支持的载板就血亏了。

我先简要列出X3模组缺少的功能:

  • 可视化相关:
    • X3模组无VDAC_COMP引脚,这个引脚一般与TV_OUT连接,用于输出信号到电视。
    • X3模组仅支持1个HDMI1个DSI输出
  • X3模组无PCIe接口。
  • X3模组不支持通过载板来外部扩展emmc(引脚不足)。
  • X3模组不支持PTP硬件时间同步。

下面简要列出X3模组增加的功能:

  • X3模组上有额外的两个5V输入。这个可以关联多供电模式。
  • X3上的USB是3.0,而树莓派是USB2.0。
  • X3增加了一个CSI 2lane接口,实际上就是将树莓派的一个DSI接口变更为CSI接口。

模组的引脚以及功能参数可以参考下列文档,后面我给出这两个模组的具体引脚差异,我只给出名字有差异Pin引脚,部分Pin有一样的名字,但其内部使用的电阻不一样,这点要注意下

2.1 X3中删除的引脚

① 小功能相关,这些接口对应的都是一些小配置相关

Pin IDRDK X3 模组树莓派CM4模组差异描述
19-Ethernet_nLED1有线网口上面LED灯相关,这个用于控制低速的情况,大部分载板都不会用这个了
20-EEPROM_nWPEEPROM_nWP的话就可以增加从USB启动系统的功能
73-SD_VDD_OVERRIDE控制SD卡3.3v或1.8v电平
94-AnalogIP1在CM4中,AnalogIP1与MXL7704芯片连接,可根据温度自动调频
96-AnalogIP0在CM4中,AnalogIP1与MXL7704芯片连接,可根据温度自动调频
111-VDAC_COMPVDAC_COMP引脚可以输出信号到电视

② 删除HDMI1接口,仅保留HDMI0。树莓派是支持2个HDMI的,但在X3模组中,保留了HDMI0,而HDMI1的引脚都被取消了。HDMI1相关的引脚并没有定义相关别的引脚,因此HDMI1插入设备并不会出现问题

Pin IDRDK X3 模组树莓派CM4模组差异描述
143-HDMI1_HOTPLUG-
145-HDMI1_SDA-
147-HDMI1_SCL-
149-HDMI1_CEC-
146-HDMI1_TX2_P-
148-HDMI1_TX2_N-
152-HDMI1_TX1_P-
154-HDMI1_TX1_N-
158-HDMI1_TX0_P-
160-HDMI1_TX0_N-
164-HDMI1_CLK_P-
166-HDMI1_CLK_N-

2.2 X3中变更的引脚

① 仅变更引脚名,功能没啥差异。

Pin IDRDK X3 模组树莓派CM4模组差异描述
80SCL1SCL0与I2C接口相关,仅引脚名的定义不一样
82SDA1SDA0与I2C接口相关,仅引脚名的定义不一样

② PCIe部分接口与USB2.0合并为USB3.0。CM4中有PCIe (Gen2 x1)接口和USB2.0接口,X3模组是在USB2.0接口的基础上,将USB3.0接口所需的额外的相关引脚定义在PCIe接口上。因此若载板上有PCIe接口,最好不要插入设备,防止设备干坏

Pin IDRDK X3 模组树莓派CM4模组差异描述
102-PCIe_CLK_nREQ
109-PCIe_nRST
110-PCIe_CLK_P
112-PCIe_CLK_N
116USB_RX_PPCIe_RX_P
118USB_RX_NPCIe_RX_N
122USB_TX_PPCIe_TX_P
124USB_TX_NPCIe_TX_N

③ DSI接口变更为CSI接口。删掉了树莓派的DSI接口,替换为CSI接口。DSI接口用于外接液晶屏,而CSI是一般外接摄像头。

Pin IDRDK X3 模组树莓派CM4模组差异描述
157CAM2_D0_NDSI0_D0_N-
159CAM2_D0_PDSI0_D0_P-
163CAM2_D1_NDSI0_D1_N-
165CAM2_D1_PDSI0_D1_P-
169CAM2_C_NDSI0_C_N-
171CAM2_C_PDSI0_C_P-

④ 用于外部扩展EMMC的引脚变更为1个UART+1对MCLK。树莓派这些引脚我理解的是载板也可以焊接一个EMMC作为扩展,SD卡一般占用的是SD_DAT0~SD_DAT3,而EMMC可以占用SD_DAT0~SD_DAT7以达到更快的速度。大部分载板都没有使用这些引脚吗,所以X3将这些引脚变更为UART和一对时钟可以提高引脚利用率。

Pin IDRDK X3 模组树莓派CM4模组差异描述
64UART2_TXDSD_DAT5-
68UART2_RXDSD_DAT4-
70SENSOR0_MCLKSD_DAT7-
72SENSOR1_MCLKSD_DAT6-

⑤ 将PTP硬件时钟同步的引脚变更为Debug UART串口 。这里面的Debug_Uart0接口,应该就是旭日X3派中的调试串口。

Pin IDRDK X3 模组树莓派CM4模组差异描述
16Debug_Uart0_RXEthernet_SYNC_IN硬件PTP同步使用
18Debug_Uart0_TXEthernet_SYNC_OUT硬件PTP同步使用

2.3 X3中增加的引脚

Pin IDRDK X3 模组树莓派CM4模组差异描述
76SD0_DET_N-根据文档描述,这个可以识别USB接口的热插拔动作
1045V-可从这个引脚给X3供电
1065V-可从这个引脚给X3供电

三 坐标深圳:地平线2023机器人开发者创享日

7月25日,从北京飞往深圳,第一次线下体验开发者的会议,亮点多多,玩的很尽兴。

  • 发布会:发布了X3模组(就是我现在玩的这个)以及RDK Ultra开发板,96TOPS的算力真的很香。发布会现场展示Nodehub真的很大胆!!!晚上可以一遍吃自助餐一遍听大佬在前面唠嗑。
  • 多种基于X3的合作产品:机器狗、无人机、机械臂、陪伴玩具等等,蛮有趣的,期待能看到更大型的项目。可以跟负责人唠嗑讨论技术细节。
  • Nodehub:快速部署机器人方案,有个研习会,晟哥哥亲自带各位学习Nodehub,部署完全无压力,课件可以参考《NodeHub 开发者研习会》
  • 多种礼品可以拿:伴手礼,参加活动还送了一个小礼物,我选的是番茄种子,等花盆到了就种上!!!

Arui的机器人做了两年半→_→,大家可以看他的视频《何如开发一台零部件完全国产化的智能机器人?》。我也算是终于看到真人了,听他的分享介绍,当然晚上少不了约饭喝酒。

下面是一些自己比较喜欢的产品,总体来说,目前产品仍然以家庭服务为主,多数还是为了娱乐。个人比较喜欢机器狗、机械臂、无人机等相关产品。轮足我关注了一年了,也终于能在现场体验了一下,跟飞机遥感控制差不多,好希望他们的成本能下来,这样可以自己多玩玩。
在这里插入图片描述

简单总结下这一天,很有趣,有种去环球影城的感觉,各种体验各种逛。

  • Nodehub我认为是很好的想法,目前需要多多集成更多的node。避免大家造轮子,期待官方能抓住这个好的idea,多多产出。
  • 机器人市场还是以服务/娱乐为主,蛋糕太小了。真正的机器人应该可以减轻家庭压力,比如我回家就可以帮我端茶倒水做饭等等→_→。
  • 见到了古月居胡老师!也跟很多群里的开发者面基了,比如Arui,小怼怼,主要是这次太匆忙,期待下次再团聚!

总结

总的来说,X3模组是一个不错的产品,重量很轻,功耗很低,算力与X3派等价,自己可以在上面做很多DIY,可以说是个成熟的产品,下面老样子,小小总结下目前存在的优缺点:

  • 板子优点多多,这里列几个比较深刻的

    • 文档丰富了很多:每个功能有视频片段展示。我开发时候,遇到的问题可以直接先搜一遍文档找答案,一些不好解决的,也可以将X3问题转换为通用问题,再去网站检索问题,问题debug效率高了不少。文档结构有点小乱,希望后面能整理下
    • 官方载板集成了usb转uart模块:这样我调试时候就可以直接使用usb数据线了,不用像X3派一样,需要插一个usb转uart模块。但是期待后续能将这个micro usb线改为type c接口,毕竟这种老式usb线不好找了😭。
    • 部分引脚变更可提高引脚利用率。比如dsi转csi,usb变更为3.0,删掉hdmi1保留dhmi0等我觉得都是不错的设计。当然也有一些引脚变更的不太理解,后面说。
  • 下面这些是我希望官方能够支持的

    • CH340串口驱动为何不在官网提供:找这个驱动,很容易从一些网站下载出全家桶。
    • server和desktop预安装的包不太一样。有一些包没安装,比如dkms bc这两个包,在desktop上是安装的,但在server上并没有,如果用户使用的是无wifi的模组,编译驱动时候会比较麻烦。
    • 期待发出更小的载板。这个板子比X3派都大,希望能出个更小的板子。
    • 散热片:我目前用的是14x14x5mm的散热片,虽然轻,但是散热能力不足,程序运行多了容易降频。希望官方能够平衡重量和散热能力,提供一个散热皮规格。
    • 实时操作系统RTOS适配。这个应该算是重要不紧急的事情,我目前没这个需求。但目前RTOS比较热门,可以花费一些时间探索下。
  • 下面这些是认为比较关键的问题

    • 对PCIe接口和网络硬件PTP同步的取消,存在疑惑。一些需要高速传输的设备都是接在PCIe上的,比如采集卡、Wifi网卡、部分医疗设备等。RDK Ultra是带3路PCIe的,我理解是X3主要还是面向于计算,不适合大型项目上。但如果有类似需求可以找转接板接在USB上。但是PTP(引脚Ethernet_SYNC_INEthernet_SYNC_OUT)只为了引出Debug Uart接口,CM4是有一些预留接口的,为什么不接在那里。
    • 打磨刷机工具。这个比较关键,我目前刷机还得用一台老笔记本😵。支持支持中文/空格路径、软件应自动识别型号、增加多种错误提示,8分钟的timeout要等很久。
    • 为了方便调用设备,个人认为应该改设备权限而不是输入sudo不需要密码了。X3派由于调用硬件需要sudo权限,这样就带来不少的麻烦。但输入sudo不输入密码,只是对这种问题的缓解,安全性低了一些,而且有sudo和无sudo的环境变量是不一样的。最好的办法当然是把BPU和多媒体等设备的调用权限改一下,当然这个算是重要不紧急的事情,目前有一些手段可以解决环境变量的问题。
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值