鲁班猫4机器人(不带机械臂)
测试时,launcher app版本让在V0.1.8-20240919或以上。如果已安装低版本,升级时不必接hdmi。远程桌面连接机器人,在桌面点击“升级App”,等下载完成,点下“安装”。这时远程桌面会断开。过几秒,像10秒,重连远程桌面,升级就完成了。Basic小程序版本让在V0.0.1-20240111或以上。如果未安装,进入“商店”,安装Basic。如果安装是低版本,进入“商店”——“我”,升级“Basic”。

- 鲁班猫4。1)安装RTC电池。https://doc.embedfire.com/linux/rk3588/quick_start/zh/latest/quick_start/rtc/rtc.html,这是猫4的RTC电池要求,里头有购买链接,我过第一家,能用。2)minipci板使用RTL8821CE。3)用外置天线。我这边有台路由器,用自配的内置天线,机器人离远点就经常断,但一换外置就基本没断。外置不必用那大号的,用增益3DBI的就行,上图这样就行,长度你们定。
- 激光雷达。1)N10。2)小板使用CP210x。3)反向安装,即箭头指向正后方,串口端子指向正前方,目的是使雷达坐标系到底盘中心坐标系位姿中的yaw是0。
- 相机。视场角要大,双铰链固定在底盘,用新版C100。有三种相机,视场角由小到大依次是旧版C100、C70、新版C100。
- 驱动板。1)烧写1秒后会自动停止固件。2)去除上面的LCD、蓝牙模块。为避免时间长了灰尘堆积到孔内,在这几个开着的排孔上封张黑胶布啥的。
- IM600。平放,x轴朝向正前方。放的位置让离远点驱动板数据type-c口,方便type-c插拔。
- 麦克风和喇叭。从3.5mm音频线(猫4、ROC-RK3588S-PC都使用美标3.5mm)引出。麦克风需要找个音量大点的。对麦克风,我最早是用了一家京东店,叫“弗客”,但没多久,这店关了。后来就在淘宝找了现在这家,这家音量要比“弗客”小。可能的话,是想麦克风、喇叭就用你公司的。
- https://www.bilibili.com/video/BV1Z7HEefEBL,按这视频。测试移动、IMU、喇叭、麦克风能正常工作。对麦克风,是使用板上咪头,还是外接麦克风,到时用launcher app带的“录音”,测下实际效果。
- 用launcher app中的“深度相机”测试相机,由于这是普通相机,测试时,确保“设置”中深度相机驱动是空。
- 测试蓝牙。用kDesktop,能让猫4连接某个wifi、以及查询ip,就相当于测试了peripheral部分的蓝牙功能。对center部分,第一台可认为peripheral正常,那它就正常了。后面要流程化时,到时寄过去一台蓝牙灯。
- 给出雷达坐标系(雷达中心)到底盘坐标系(底盘中心)位姿(tf)中平移部分的x、y值。这个位姿旋转部分确保是(0, 0, 0)。
以下是带机械臂机器人
- 四个俯仰角要一致。在state_recognize状态时,这个值在71度左右。
- 在state_recognize状态时,爪子连接环上螺丝在RGB图中的y,在[696, 700]范围。相机支架长度是15cm(包括支架“L”短的那厚度),那高度是多少(不包括支架“L”长的那厚度)?——我手头这个是8.3cm,能让满足这条件。但这个高度依赖于“L”是不是“纯”90度,或许可以先不急打这两个定位高度孔,先保证让“L”支架是“纯”90度,然后通过在8.3cm附近上、下移动相机,让“连接环上螺丝在RGB图中的y,在[696, 700]范围”,像698。确定后,后面产品就按这个高度来。
- 爪子两圆钉连线和地面平行。
- 修改零点,要让爪子闭合时,两瓣是碰在一块。
- 雷达和机械臂距离设置为标准底盘中的距离减去5mm。标准底盘指的没增加拖斗前,我买到过那种支持机械臂+雷达的底盘。
- IM600的“X”朝向机器人前进方向。必须连接串口,其type-c只是充电功能。
- 相机连线另一头用USB口,不要用官方给那根线typ-c到type-c。工作时,相机电流可能超过500mA,所以在ROC-RK3588S那端,必须接靠近type-c的那个USB3.0(蓝色片)。
- 之前是相机物理中心(LDM中心)和底盘y=0对齐,改为相机RGB中心和底盘y=0对齐。也就是说,当人朝向相机前方,相机比手头这台向右挪1.1cm。这相机各模块位置见下文“大白相机LDM、RGB位置”。
- 在前方,和早期版本一样,上档板、下档板持平,即上档板不要比下档板冒头。
- 去除驱动板上的LCD、蓝牙模块。为避免时间长了灰尘堆积到孔内,在这几个开着的排孔上封张黑胶布啥的。在组装上,驱动板放下面,主板上面。
- 驱动板连向底下驱动轮的4排连线不让要超出上隔板,也不让超过支撑两档板的后面两根柱子。换句话说,拖斗要系在后两柱子,从两柱子起到后面全部,下档上就没东西了,全空出来让放拖斗。
- 用更稳定的黑壳电池。
- 做个ROC-RK3588S-PC的P20扩展,杜绝PH2.0。具体见下文的“P20扩展”。
- 连接雷达的小模块用CP201X,待改的这台已用CP201X,继续用它就行。拍损坏,待改这台雷达是故意不装的,发回时不要有这雷达。
- 让底盘兼容没有机械臂场景。1)上档板给普通相机留孔位。2)下档板给IMU600留孔位,可放在喇叭前面。
- 为方便开发者调式,在雷达左侧、靠近隔断处留个孔位。这孔位在雷达半径8厘米内。到时会在孔位上立根铜柱,注意在相机支架逆时针转到附近时,不要让碰到铜柱。
视频1:装配、验证
一、安装
1.1 深度相机支架
安装深度相机有几个要求:四个俯仰角数值一致。在state_recognize状时,爪子连接环上螺丝在RGB图中的y,在[696, 700]范围。爪子两圆钉连线和地面平行。
要求1/3:四个俯仰角数值一致(dcpitch)

- IMU俯仰角。通过读IMU,可得到这个俯仰角。它将做为俯仰角的数值。
- joint4俯仰角。从joint4往前,机械臂在x方向,是不可变的刚体。因而通过dist*cos(dcpitch)便可算出在x方向的偏移diff_x。理论上通过机械臂正向运动学方程(fk)可求出这个俯仰角,但考虑机械臂误差,不采用。
- 爪子俯仰角。如果图中爪子连接处装配精确,那它应该就正确了,即等于另外三个值。强调它,是装配时,爪子连接不要让出现松动啥的,使爪子因为重力而下垂了。
- 相机俯仰角。从相机读出的是相机坐标系下坐标,按规则转换为world坐标系下xyz后,再由这个俯仰角转为“base_footprint”坐标系下坐标。“base_footprint”加引号,是因为它的原点在相机中心,和base_footprint原点不一样,只是x、y、z轴平行)。
要求1/3: 在state_recognize状时,爪子连接环上螺丝在RGB图中的y,在[696, 700]范围
在launcher桌面,“深度相机”——右上角“运行”选“总在初始状态”(这会让机械臂进入state_recognize状态),便会看到下图。具体操作见本文视频1。

软件对相机出来的RGB图像有要求。1)拍到尽可能多有效内容,为此不要让看到支架横杆。2)在可能会出现的俯仰角范围,要能拍到爪子的左、右两白色圆钉,见图2底部左、右两小红框。要由它们平均值得到RP(参考点)坐标,进而由RP到TP(目标点)之间偏移知道此次机器人要怎么移动。
在图2,选译“Snapshot”——“Work image”,便可得到此时的RGB图像:dbg_surf.png

放大中心圆环,图3红点处,那里有个上螺丝,让y值处在[697, 700]范围。要满足这个条件,相机支架长度是15cm(包括支架“L”短的那厚度),那高度是多少(不包括支架“L”长的那厚度)?——8.3cm。但不能肯定现在支架轴是否是90度拐角。

要求1/3: 爪子两圆钉连线和地面平行
见图2底部红色虚线,可用photoshot啥的,在左、右两白色圆环划一条横线,碰到这两白环是同一个y位置。
1.2 爪子gap、dist

urdf写的joint5.xyz.z=0.0432,在机械臂尺寸图中是0.0487。0.0432、0.0487它们的终点在哪?0.0487是包括白环厚度吗?
RP到joint5.z尺寸是2cm,在2offset还有一个高度差,目前是0.3cm。

目前joint6的范围是[-0.8, 0.8],在0.8弧度时,转换为角度差不多是45度。这里就把图6中theta认为就是joint6值。
- 在0.8弧度时,对应角度45.85987,那算出的直角边是2a^2 = c^2,已知c=0.035,求a。a是0.0247487,约为0.025。那它gap应该是0.05左右。实际测量下来0.084(左右,有不一致)。
- 在-0.8弧度时,对应角度-45.85987,那算出的直角边是0.0247487,约为0.025。那它gap应该是0.00左右。实际测量下来0.021(左右,有不一致)。
按上面这结论,joint6值不应该是图中theta,那它的物理意义是什么?
1.3 P20扩展

只须要扩出一个USB,一个UART。注意IM600右侧,由下到下依次是VSS、VBAT、TXD、RXD,而带后,输出序VSS、VBAT是对调了的。

图8是扩展板实物。一头用P20母连向ROC-RK3588S-PC,连一边出来个USB母、一个UART。对UART,从红线开始,依次是VCC、GND、TXD、RXD,即和带壳输出一样次序。
1.4 让相机RGB中心和底盘y=0对齐

-------------------以下不在此次见面讨论范围------------------
二、测试
2.1 安装Launcher,连接wifi,远程桌面
操作过程参考视频:安装launcher,连接wifi,远程桌面。
需烧的固件对Firefly官言进行了修改,修改了什么可见“定制Android内核(Android-12)(https://www.cswamp.com/post/174)”。最新版“ROC-RK3588S-PC_Android12_HDMI_230508”。下载地址:(百度网盘)提取码:1234
至此,应该已能用远程桌面访问机器人。但先不要急着把ROC-RK3588S-PC固定到底盘。
2.2、测试麦克风、喇叭
安装上,麦克风、喇叭会汇到同一根3.5mm线,接入主板。
- 运行Launcher,下载拼音包,安装按钮在桌面的左下部分。
- 去商店下载“Basic”小程序。
- 去“设置”,语音驱动选Basic小程序。
对着麦克风话说“去沙发打开台灯”,机器人回答“不存在要去的位置”,意味着麦克风、喇叭正常。
2.3 测试USB扩展
USB扩展和IMU都是通过P20插槽连接到主板。
拿USB摄像头连接到USB扩展的母口。运行Launcher,点击“相机”,能直到视频,那USB扩展连接成功。
2.4 测试IMU
运行Launcher,点击“地图”,进入后点击“打开IM948”,弹出的编辑框输入“/dev/ttyS7”。

一旦IMU连接成功,图1中的“NO IMU”处会显示为类似“0.012/H:0.012”,注意后面“H:”跟着数字,这表示从IMU直接出的角度,单位度。这时你转动机器人朝向,如果这数值随着你转的角度在变,像逆时针时它会增加,顺时针时则变小,并且值的变化量和你转的角度一样,那表示IMU连接成功。
导航要使用IMU。这里打开后,就可让一直开着,没必须关掉。
2.5 准备好底盘、雷达
确保底盘中的驱动板固件是Launcher需要的。Launcher要求驱动板收到一个速度后,机器人不是就按这速度一直走,而是会自动停止。
雷达用的是N10的话,需反装,即带线的尾巴要朝向正前方。拆卸N10时,注意两上小孔中有两颗螺丝。
2.6 固定主板到底盘,做总测试
测试流程就是走一遍建图、导航。参考视频“(JoyBot机器人)安装驱动、建图、去噪、添加位置,声控导航”。