在blensor中仿真TOF激光雷达扫描得到PCD数据

在blensor中仿真TOF激光雷达扫描得到PCD数据

初识blensor

我在刚开始时参考了点云仿真软件Blensor介绍,对我帮助很大,我也是基于此做的延伸。

值得注意的是,blensor、blendor、blender图标一致,看似是一个软件,然而blender是做动画仿真的(我没找到lidar在哪,欢迎评论补充),B站也有详细教程。blensor才是做激光雷达仿真的,官网是https://www.blensor.org/而不是blender.org,虽然blensor下载下来也叫blender.exe。

导入模型

点击 file-import 可以选择合适的模型格式导入,记得每次做完要保存文件,文件格式是blend(整个场景文件),这软件不会自动保存也不会提醒你保存。
在这里插入图片描述

场景基本设置

点击 view-properties可以显示右边的transform栏目,或者点击右下方窗口的黄色立方体图标,也可以看到transform,在这里可以设置物体的位姿,选择物体设置为我们想要的位姿
在这里插入图片描述选择相机camera,点击录像机图标唤起相机设置界面,在这可以设置激光雷达的一些参数,雷达的位姿设置同上。
在这里插入图片描述

仿真扫描获得PCD

我也没弄懂软件自带的保存PCD应该怎么操作,保存下来无论数据还是格式都有问题,这里我们选择用python写一个采集数据代码。

点击左下角立方体图标选择text editor,在里面复制进我们的采集代码
:软件所有的操作都可以通过代码实现,也可以选择鼠标点击实现
在这里插入图片描述
在这里插入图片描述

import bpy
import math
from numpy import arange
from bpy import data as D
from bpy import context as C
from mathutils import *
from math import *
import blensor

"""clear the scanning in view windows and start newly scan"""
bpy.ops.blensor.delete_scans(); #这里有点问题后面细讲
bpy.ops.blensor.scan();

f=open("D:/data.txt","w") #文件位置自行修改
i = 0; #存储点云数目
for item in bpy.data.objects:
    if item.type == 'MESH' and item.name.startswith('Scan'):
        print('write once')
        for sp in item.data.vertices:
            #print('X=%+#5.3f\tY=%+#5.3f\tZ=%+#5.3f' % (sp.co[0], sp.co[1],sp.co[2]));
            str='%#5.3f\t%#5.3f\t%#5.3f \n' % (sp.co[0], sp.co[1],sp.co[2]);
            i = i+1;
            f.write(str);  
f.close()          
f=open("D:/data.txt","r+") #文件位置自行修改
new_data = ("# .PCD v0.7 - Point Cloud Data file format\nVERSION 0.7\nFIELDS x y z\nSIZE 4 4 4\nTYPE F F F\nCOUNT 1 1 1\nWIDTH %d\nHEIGHT 1\nVIEWPOINT 0 0 0 1 0 0 0\nPOINTS %d\nDATA ascii\n" %(i,i))
old = f.read()
f.seek(0)
f.write(new_data)
f.write(old )

先别运行脚本
值得注意的是,代码里的delete操作并不会删除data里面的scan文件,只会删除scene里面的scan,导致如果不提前删除之前扫描的scan的话,pcd里面的点云数据会被重复写入好几次。
查看这种情况是点开window-toggle system console,这里是python脚本的命令行,如果只输出了一次write once就是正常的,有几次write once就是重复写了几次点,pcd文件会有问题。
在这里插入图片描述所以在每次运行脚本之前,右侧选择blender file ,把object里面的scan全部删干净,之后就可以在代码界面右键选择run script,或者下面也有run script按键,之后文件会被保存在对应路径(这里是D:data.txt),我们把后缀直接改成pcd就可以了。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
本文只是我所做的一个记录,希望可以起到抛砖引玉的作用,如果需要写txt或者csv或者重复扫描,思路也类似,欢迎讨论

  • 4
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 34
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值