【小安派R2测评】 安信可小安派R2+手持点云可视化器

[复制链接]
查看701 | 回复4 | 2024-9-30 17:33:30 | 显示全部楼层 |阅读模式
本帖最后由 lhs_hfs 于 2024-9-30 17:34 编辑

本来其实也打算做一个,智能家居的中控来着,但是看到有人已经做了一个了,所以这两天换了一个新的方向,做了一个偏向科研方向的辅助工具。


小安派的开箱和环境搭建可以看上一个帖子

【产品开箱】小安派R2 - 小安派Cam - 物联网开发者社区-安信可论坛 - Powered by Discuz! (ai-thinker.com)

点云

点云可以理解成空间中的3D点,它实际上是一种数字化的三维数据表达方式,通常由一组具有三维坐标(x, y, z)的点组成,每个点代表物体表面或空间中的一个特定位置。比如下面这个就是带颜色的点云可视化结果,当然也有一些稀疏点云是没有颜色的,主要就是看一下空间结构。

pointcloud.png


应用场景

一般来说,一些自动驾驶机器人(slam机器人)会需要先用雷达、rgbd相机之类的传感器来先对场景建一个地图,然后基于这个地图进行导航等操作。

但是因为slam机器人都是在比较复杂的环境里面运动,如果想要实时查看机器人建图的效果,要么就在机器人上装一个屏幕,要么就把机器人重建出来的点云传到pc机上。但是因为需要频繁调试机器人硬件,所以经常出现:去调试下硬件--回到pc机上看下点云重建效果--再去调试硬件。

这样非常不方便,而正好小安派R2有一块大屏幕和wifi,所以我就打算利用小安派R2来接受机器人发送出来的点云数据,然后显示在屏幕上,因为小安派可以直接用电池供电,加一个外壳之后就能很方便地随身携带,实时查看点云数据,大大提升了效率。

4.png


设计思路

首先需要解决的是GUI问题,直接用GUI-guide生成出来的画布是有点小问题的,所以需要单独在lvgl里添加一个画布,画布是用来显示点云数据的。然后随便做一些表格来显示信息,最后再随便画一点艺术字来作为logo。

H9PCNTU_1SY}}5E1~$W40UU.png


然后在代码中添加好wifi和mqtt订阅,我这里也是直接参考论坛里面别人写好的框架,这样就算把通信解决了。

然后接下来是重点,因为点云是3D空间中的点,但是我们屏幕是2D的,所以需要把3D点投影到2D平面里面来。就类似用摄像机去拍照,拍照时候相机的不同,那么拍出来的照片也是不同的。

要把3D点云可视化出来,需要首先确定我们虚拟摄像机的位置,这个位置的设定可以比较随意,可以多设置几个位置来进行变换视角。既然已经确定了虚拟相机的位置,那么就可以根据下图的相机成像模型来计算出3D点云的在2D点的投影。

R1T)9H7[[[{}0]6A(R.png


具体而言,假设点云为(X_w, Y_w, Z_w),而相机的旋转和平移都是我们手动设定的,所以这些参数都是已知的,所以最终的目的就是计算下面这个矩阵乘法,对应的成像结果就是最左边列向量的(u, v),只需要把屏幕上对应的点涂黑就相当于把这个3D点云投影完成了。

6`ETEE`%T_6EIMF`H_LA{OQ.png


小安派每次通过mqtt接收到一个3D点云,就通过上面的公式计算出投影点,然后显示在屏幕上即可。

成果展示

IMG20240927002541.jpg


因为点比较小,拍照出来摩尔纹比较严重,看的可能不是特别清楚,不过线下看可是非常清楚的,大概就是跟下面这个图一样

sd.png



回复

使用道具 举报

lovzx | 2024-9-30 18:29:03 | 显示全部楼层
厉害
回复

使用道具 举报

qhsj | 2024-9-30 20:42:17 | 显示全部楼层
厉害呀
回复

使用道具 举报

bzhou830 | 2024-10-1 11:08:37 | 显示全部楼层
厉害
选择去发光,而不是被照亮
回复

使用道具 举报

一只呆头鹅 | 2024-10-1 17:35:37 | 显示全部楼层
厉害呀
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则