自制激光小项目简介表

0 去试试创业网

将激光雷达用于 SLAM 可以说是如今比较成熟的技术,其具有精度高、速度快、抗干扰能力强等优势。然而目前由于其高昂的造价限制了它在民用无人驾驶领域的普及,哪怕是售价高达 100 余万人民币的特斯拉 Model S,使用的检测方案仍然以摄像头为主。或许此类低成本的激光雷达开源项目能对我们了解这一技术提供便利。

这两种方法各有优缺点,由于第二种方法仅需旋转反射镜,而第一种方法需要考虑测距仪在旋转时的供电与通信问题,所以这里采用仅旋转反射镜的扫描方法。待装好反射镜和驱动电机后,就完成了整个激光雷达硬件部分的制作工作。下面就可以使用项目作者提供的上位机软件进行调试与测量了。

旋转类型的激光雷达有两种方式来实现对周围环境的探测,分别是通过旋转整个测距仪或通过旋转相对于激光雷达光轴倾斜 45 度的反射镜来完成扫描农村在家创业小吃名字,其对应工作方式如下图所示。

自制激光小项目简介表

在光学元件方面,选用标准的 M12 镜头作为激光透镜,发散角约为 0.45 度。并选用焦距为 25 mm 的镜头用于感光元件,该镜头具有较大的光圈,能够尽可能多地让反射光落在光电二极管上,以获得更高的信噪比。如果要在强光照射条件下(例如户外)使用激光雷达,作者建议在光电二极管和透镜之间安装专为 905 nm 波长设计的干涉滤光片。由于本项目是在室内照明条件下进行测试,所以没有安装。

由于感光元件产生的电信号需要经过放大处理,相应放大元件的增益、带宽、噪声、电源抑制比、共模抑制比、线性度、输出阻抗等关键指标,在制作过程中也是需要考虑的因素。最后就是运算单元的分辨率,其决定着传感器能否准确计算出激光脉冲往返的时间差。

还有一个对传感器性能影响至关重要的是激光信号发射器的脉宽,它决定了激光雷达能够测量的最大距离。假设光速为 c = 300,000,000 m/s,当光脉冲宽度为 50 ns 时,其最远测量距离为 7.5 m。

为有效捕捉到激光器发出的脉冲信号,感光元件需要安放在距离激光器合适的位置。并且需要根据测量需求,为激光器和感光元件安装合适焦距的镜头。下图为该项目中激光雷达镜头安装完成后的图片。

当然由于室内的墙大多以白色或浅色为主,大可不必担心。需要注意的是当环境中存在镜子或颜色较深的物体时,激光雷达的测量精度会受到较大影响。

由于 TOP 测距是通过计算光脉冲信号发射与接收前后的时间差来工作的,假如发射出的光脉冲被环境中物体吸收,或反射到感光元件测量范围之外,此时激光雷达是无法收集到正确测量数据的。这里举一个极端的,隐形战斗机就是通过使用能够吸收雷达的涂层以及较小的雷达反射面积来实现「隐身」的。

如下图所示,激光器发射出一系列光脉冲,遇到物体反射后被感光元件捕获,感光元件产生的电信号经过放大器后,使用运算电路捕捉其上升沿或下降沿计算出光脉冲在空中的飞行时间,结合光速即可得到被测物体距离激光雷达的距离。

项目作者表示制作该激光雷达大零部件总成本大约只需要 114 美元,且激光发射器与接收器所使用的光学透镜均为监控相机标准镜头。看到这里你是不是已经忍不住想要自己上手试一试了呢?下面我们逐一为大家道来其制作过程。

想入坑自动驾驶却无法承受激光雷达高昂的价格?这个由俄罗斯的一位 Github 主近期开源的项目也许非常适合你,让你也能低成本自制激光雷达。

激光雷达能够帮助机器人快速获取其周围环境信息,且具有探测范围广、精度高、抗干扰能力强等优势,是自动驾驶汽车、扫地机器人、仓储机器人等一系列地面自主移动机器人的重要组成部分。然而,目前工业级激光雷达往往造价高昂,像谷歌、百度造的那些无人车,其激光雷达的造价甚至超过了车辆本身的价值,让普通人望而却步。即使是探测范围仅有 25m 的单线激光雷达,在某宝上也卖到了千元级别。

SBUF=0; //*****************在这里加入这行代码测试一下*******************************

1、在当前状态下,只能通过更改代码中的硬编码分辨率变量来更改扫描分辨率。为了使项目更具嵌入式性,可以添加一个分辨率电位计,以便用户可以更改分辨率,而不用将监视器和键盘插入扫描仪。

此外,我使用摄像头获取物体的特征,就能感受到视线遮挡的限制,凹面的物体和锐角通常会被物体的其他部分阻挡。像示例中小黄鸭的尾巴在扫描中就失去曲率了。摄像头只能检测物体表面结构,无法获取孔或者内部为几何形状的物体。这一常见问题也在其他扫描机中存在。

尽管该项目取得了成功,但在设计和实施方面仍然存在一些局限性。随着激光的使用,光的散射带来了许多问题。我扫描的物体要么是半透明,很亮或者很暗的物体,它们在表面的反射就存在缺陷。如果物体是半透明的,光线就会被吸收并散射,从而使切片的读数非常不准确。在发亮和黑暗的物体中,光线要么被反射,要么被吸收,以至于难以收集。

但是,随着分辨率的提高,精确的功能开始显现出来,包括眼睛、嘴巴、尾巴和鸭子的翅膀。最高分辨率的图像大约需要 5 分钟扫描。高分辨率的效果是非常成功的。

如图所示,通过改变角分辨率和空间分辨率的参数,可以显示出不同的扫描结果。每个标签的格式设置为角度分辨率x空间分辨率。从默认的扫描设置中可以看出鸭子的功能是可识别的,但并不明显。

除了角分辨率外,还可以调整垂直分辨率,或选择沿激光切片扫描多少个不同的点。为了节省时间,我将默认值设置为 20,如果你想得到更好的效果可以增加数值。

选择此项主要是为了节省时间,以这种方式完成扫描大约需要 45 秒。但是如果想要更高质量的扫描,就需要将迭代次数增加到 400。这为 3D 构造模型提供了更多的点,从而可以进行更详细的扫描。

可调整的变量之一是扫描的分辨率。因为步进器有 400 步,所以我可以选择每个 ΔΘ 来决定角度分辨率。在默认情况下,我将角度分辨率设置为 20 次迭代,这意味着电机每帧旋转 20 步(400/20=20)。

通过测试最大的惊喜是设备的一致性很好。在对同一物品进行多次试验中,即使稍微改了物品的位置,扫描程序也都能生成非常相似的 .obj 文件。

激光 3D 扫描仪能够高精度地扫描物体。物体的特征清晰可变,并且使用切片软件(例如Repetier)可以很容易地对零件进行 3D 打印。

如果 LED 点亮,则表明设备已准备好开始扫描。如果 LED 闪烁,则表明设备当前正在扫描。如果 LED 报错,则表明软件错误,要求重启系统。

2、添加一个按钮和 LED 状态显示,用于用户输入和输出。按钮将会告知用户设备何时开始扫描,LED 将告诉用户机器的状态。

当设备正常运行后,我通过添加完整的嵌入式功能对其进行了完善。这意味着移除键盘,鼠标和显示器,处理完成后以无线方式将.obj文件发送过去。

其中,最好包含顶部顶点和底部顶点,然后根据分辨率,我选择了均匀分布的顶点数以用于每个图像。因为并非所有顶点列表的长度都相同,所以我不得不通过找到顶点数量最少的列表并将所有其他列表中的顶点移除,直到它们均等为止。

顶点创建好后,将它们存储在一个列表中。然后再将所述列表存储在另一个列表中,该列表包含为获取的每个图像创建的顶点列表。处理完所有图像并将其转换为顶点后,在最终网格中显示顶点。

图片的高度可以用 z 轴表示,到旋转台中心的距离可以用 R 轴表示,步进电机的旋转可以用 theta 轴表示。由于我将数据存储在圆柱坐标中,因此必须将每个顶点转换为笛卡尔坐标。

要从所有处理的图像创建网格,我必须首先将处理的图像中的每个白色像素转换为 3D 空间中的顶点。我要收集具有圆柱对称性的单个对象切片,所以要收集圆柱的坐标。

获得此图像后,我找到了每行中最亮的像素,得到了一条每行一个像素的线,它与激光线的最左侧相接。最后,将每个像素转换为 3D 空间中的顶点并存储在数组中,如网格创建部分所述。

下一个需要解决的问题是外部光形成的背景噪点和激光本身反射的光。我使用 OpenCV 的 inRange() 函数过滤光。我将阈值设置为仅在特定水平上拾取红光。

当给定一个图像和四个点时,该代码将在四个点之间裁剪图像并补偿转换裁剪后的图像。使用四个点来创建矩形,而不是之前的梯形形状。

该图片的原始形式存在两个主要问题。一是拍摄物体的角度较高,二是背景噪点很大。视角的问题是第一个要考虑的,因为按原样使用照片将无法确定的物体一致高度。

1、如图所示,随着系统启动 .bashrc 自动登录到树莓派并开始运行 python 代码。系统点亮状态灯,告知用户它已正确启动,并等待按下按钮。

了解完步进电机的工作原理,就能够更容易地控制步进电机。由于步进电机的最大电流约为 0.8A,超出了树莓派的供电能力,我们最后选用了5V电源而不是树莓派为步进电机供电。

为了了解步进电机如何在非常低的水平上操作,我们同时参考了L298N数据表和Arduino库。步进电机有一个磁芯,磁芯上有交替极性的磁极。

由于项目中的电动机只需要一定程度上的步进而无需控制速度,我们选用了一款很简单的步进电动机驱动器(L298N)。该驱动器只是将控制线升压以馈入电动机的输入。

首先,将电阻与每个引脚串联,以保护引脚。GPIO 的一个引脚专用于控制 LED,当设备准备好后,LED 会亮起,当设备运行时,它会使用 PWM 进行脉冲控制。

另外还需一个马达支架,因为马达的轴太长了。支架产生的摩擦力不妨碍激光切割的组件,并降低了电机连接的平面,使旋转平台与主体层齐平。

因为速度和便捷性的优势,我们使用激光切割机来处理大部分组件。但是,由于3D几何形状在裁纸器上非常难创建,仍然不得不对其进行3D打印。

背板和其中一个侧板在侧面都有插槽,便于可以轻松访问树莓派的端口(HDMI、USB、以太网以及电源)。前板是一个简单的部分,可以利用手动钻孔,然后安装上按钮和 LED。

底座有安装孔,用来固定树莓派、面包板,还有一个较大的切口和电机驱动器的安装孔,以及用于放入步进电机的较大切口。外壳的盖子可以简单地卡在一起,形成一个类似三角形状的盖子,合页宽度为侧板孔的直径。

使用 Epilog Zing 40 W 激光切割机进行切割。如上图所示,外壳主要由主体层、电子设备层、两个盖子部件、前片、后片以及两个侧片组成。

在开始3D打印之前,先用了 Autodesk Fusion 360 设计出 3D 外壳模型。总的来说,外壳设计很简单合肥实体店小生意好做吗,一个盒子和带活页的盖子。

2、将电子设备隐藏在底部隔间中,盖子上放置旋转托盘,便于放置物品。这个盖子可以最大程度地减少外部光照射到系统中。(外部光可能在最终的扫描中产生干扰)

该项目设计的核心组件就是能够垂直投射在物体上的线激光发射器。通过树莓派摄像头来抓取投影,对它透视进行校正,然后在进行图像处理前过滤。在图像处理中,收集线的每个部分到物体中心的距离。

偶然的机会,我发现了Yscanner,这是一种使用激光的低分辨率扫描仪。考虑到简单性和可行性,在这种激光技术中,激光相对于相机偏置照射来测量与中心的距离,看起来似乎还不错。

开始制作前,我做了一些基础研究。发现许多 3D 扫描仪都利用到了旋转平台,然后使用各种不同的传感器来测量距中心的距离,建立旋转模型。其中很多都使用了类似于 Kinect 的双摄像头。

项目通过线激光发射器和树莓派摄像头来实现计算机视觉数据采集。激光定位的角度与激光成 45 度倾斜在农村做混凝土创业怎么样,同时在物体的垂直切片上投射出一条明亮的红线。

看到一个自己喜欢的小玩意儿,把它放到一个黑乎乎的盒子里,过那么一会儿,你就能得到它的obj网格模型文件,然后开心地拿着它去3D打印,复刻一个,是不是想想都很香?

专题: 农村创业亏   y农村创业   会农村创业