编码器怎么实现定位功能,用PLC控制如何设计梯形图?

​严格来讲,编码器只会告诉你改如何定位,要如何执行,是需要靠数控系统(或者PLC之类控制器)控制伺服或者步进电机来实现定位的,编码器好比人的眼睛,知道电机轴或者负载处于当前某个位置,工业上用的一般是光电类型编码器,下边简单说明一下:


01

编码原理和位置测量

光电编码器是在一个很薄很轻的圆盘子上,通过紧密仪器来腐蚀雕刻了很多条细小的缝,相当于把一个360度,细分成很多等分,比如成1024组,这样每组之间的角度差是360/1024度=0.3515625度。

然后有个精密的发光源,安装在码盘的一面,码盘的另外一面,会有个接收器之类的,使用了光敏电阻这些元件加放大和整形电路组成,这样码盘转动时候,有缝隙的地方会透光过去,接收器会瞬间收到光脉冲,经过电路处理后,输出一个电脉冲信号,这样码盘旋转了一周,会对应输出1024个脉冲,第一个脉冲位置如果是0,第二个脉冲位置就是0.3515625°,第三个脉冲位置是0.3515625°*2,以此类推,这样只要有仪器能读到脉冲个数,就可以知道码盘对应在什么位置了。

如果把编码器安装到电机的轴上,电机轴和码盘是刚性连接,两者的位置关系会一一对应,通过读编码器脉冲,就可以知道电机的轴位置。

而电机轴,比如会通过同步带,齿轮,链条等带动一些负载,比如控制丝杆,这样会有个所谓电子齿轮比的关系,电机转一圈,丝杆会前进多少毫米,这样读到了对应编码器上输出多少给脉冲,通过脉冲数就可以反推出当前丝杆的位置。

​但是编码器是圆的,如果无限制旋转下去,角度会无穷大,所以设计了一种增量型的编码器,转一圈,会输出三组信号ABZ,其中AB是一样的脉冲,比如上边说的一圈有1024个脉冲,AB相脉冲对应一圈内的圆周角度,而且两种脉冲是处于正交状态的,如果是正反转,通过判断AB相脉冲的上升沿和下降沿的先后顺序,就可以知道编码器当前是顺时针还是逆时针方向旋转的,

另外有个z相脉冲,是因为圆周虽然会不停转下去,角度会无穷无尽,但是都是一周一周的重复而已,零相脉冲固定在圆周某个位置,编码器每转一圈,只输出一个零相脉冲,这样如果以Z相脉冲为基准点,这样每次读到这个脉冲时候,系统就清零一次,就可以让角度最大值控制在360°以内,相当于一个零基准点了。这样即使系统断掉了,重新上电,只要能找到这个基准点,就可以知道丝杆的初始位置在什么地方了。

以上这种定位叫增量坐标系,所以编码器就是增量型编码器,应用比较广泛,因为灵活而且价格便宜。

如果只设备只需要转一圈的,也就是角度在360°内的,编码器可以细分精密一点,比如有13位,相当于2^13次方个脉冲一圈,对应着360°,这种脉冲数和角度一一对应,不怕系统断电需要重新调整零位,这种编码器叫单圈绝对值编码器。如果负载需要转多圈的,但是这个圈数也不能非常多,比如5圈,相当于5*360°=1800°,这样脉冲和1800°一一对应,这些在一些高档的数控机床上应用比较多,可以知道丝杆或者一些旋转工作的当前精密位置,而且不用担心系统断电归零问题。

此外,编码器还有磁电方式的,比如在码盘上加工了很多个南北间隔的小磁铁,通过霍尔去读小磁铁信号,输出信号,同样经过放大和整形变成了电脉冲,这点和光电编码器是类似的,而且价格会便宜点,可靠性会高,但是精度就比光电要差点。

02

PLC如何通过编码器判断位置

PLC能输入开关量,也就是一高一低的电平电压,而编码器脉冲信号,可以理解一定时间内,用极快的速度完成的一组开关量。但是因为这种开关量的频率太高了,所以PLC的普通I/O口是无法准确读到这些脉冲的个数的,因为PLC工作过程中存在扫描周期,需要每个一段时间才去刷新一下普通I/O口的数据,而编码器的精度太高了,单位时间内输出的脉冲个数太多,普通I/O是无法胜任的。

一般PLC会设计有高速计数端口,本质是利用了底层单片机的硬件逻辑来完成这些编码器计数的,避开了扫描周期问题,PLC都设计有专门的高速计数指令,使用的时候,直接调用这些指令就可以读到当前的脉冲值了。

但是脉冲的计算和输出上,由于扫描周期存在,往往也会存在着滞后影响,如果用来控制一些执行机构,比如气缸来动作裁切动作,这样要考虑提前量的补偿问题。


提醒一下,如果想用PLC来控制伺服或者步进系统,往往并不需要通过编码器反馈来判断位置,通过一些PLS指令之类的来发出位置脉冲给伺服驱动器,位置环在伺服驱动器内部构成就好,而PLC这边只是一个指令机构,并没有构成位置闭环,当然如果是专门定位模块控制,使用了NC之类的控制方式,是可以在里边构建位置闭环的。

<think>好的,用户想了解如何使用VLM(视觉语言模型)构建二维地图。我需要结合提供的引用内容来回答这个问题。首先,我得明确VLM在这里的作用,以及如何利用其处理视觉和语言信息的能力来辅助地图构建。 根据引用[2],VLM可以处理视觉和语言输入,比如CLIP模型将图像和文本映射到共享潜在空间。这可能意味着VLM可以用于图像的特征提取,帮助识别环境中的关键元素。引用[1]提到使用VLM的注意力图来突出显示导航的关键区域,这可能对地图构建中的特征提取有帮助,比如识别道路、障碍物等。 接下来,引用[3]和[4]讨论了在自动驾驶场景中使用VLM进行场景理解和生成适应不同天气的图像。这可能涉及到使用VLM分析前方图像,提取语义信息,比如车道线、交通标志等,这些信息可以转化为二维地图的元素。 用户的问题是如何构建二维地图,可能需要将VLM处理的视觉信息转换为二维坐标。可能的步骤包括:图像采集、特征提取(使用VLM的注意力机制或图像编码器)、语义信息标注、坐标映射,最后整合成地图。 需要注意的是,VLM本身可能不直接生成地图,而是提供高层次的语义信息,需要与其他技术(如SLAM)结合。比如,VLM识别物体和场景,而SLAM处理空间定位和地图构建。引用[1]中的注意力图可能用于增强关键区域的识别,提高地图的准确性。 此外,引用[4]提到使用扩散模型生成驾驶场景图像,这可能用于数据增强,帮助VLM在训练时更好地适应不同环境,从而提升地图构建的鲁棒性。 总结步骤:使用VLM处理图像输入,提取特征和语义信息,结合定位技术将信息映射到二维坐标系,最后整合生成地图。需要验证在模拟环境和真实场景中的效果,如引用[3]所述。</think>### 如何使用 VLM 构建二维地图 使用视觉语言模型(VLM)构建二维地图的核心思路是通过其多模态理解能力,将视觉感知与语义信息结合,生成具有环境特征和语义标注的二维空间表示。以下是具体实现步骤: --- #### 1. **视觉信息提取与特征对齐** - **图像编码器应用**:使用 VLM 的图像编码器(如 CLIP 的 $CLIP_I$)处理输入的视觉数据(例如摄像头捕获的驾驶场景图像),提取高维特征向量[^2]。 - **注意力图蒸馏**:通过提取 VLM 中间层的注意力图(如引用[1]中的方法),识别图像中的关键区域(如道路边界、障碍物、交通标志),并通过结构相似性指数损失(SSIL)对齐导航相关的感知特征。 ```python # 示例:使用 CLIP 提取图像特征 import clip model, preprocess = clip.load("ViT-B/32") image_features = model.encode_image(preprocess(image)) ``` --- #### 2. **语义标注与空间映射** - **语言-视觉关联**:将 VLM 的文本编码器(如 $CLIP_L$)生成的语义标签(例如“十字路口”“人行道”)与图像特征关联,形成语义-空间对应关系[^2]。 - **坐标转换**:结合传感器数据(如激光雷达或深度相机)或单目深度估计,将图像中的像素坐标转换为二维平面坐标,生成初步的栅格地图。 --- #### 3. **动态场景建模与数据增强** - **多天气泛化**:利用 WeatherDG 等方法生成不同天气条件下的场景图像(引用[4]),提升 VLM 对复杂环境的适应能力。 - **行为指令融合**:在自动驾驶场景中,将 VLM 输出的行为指令(如“左转”“避让行人”)与二维地图的动态更新结合(引用[3])。 --- #### 4. **地图优化与验证** - **注意力引导优化**:通过 VLM 的注意力图修正地图中的模糊区域(例如阴影遮挡部分),增强地图的可靠性[^1]。 - **仿真与真实测试**:在 CARLA 仿真环境中验证地图的拓扑结构(引用[3]),并在真实数据集(如 HawkDrive)中测试泛化性。 --- #### 关键技术挑战 - **特征对齐精度**:需解决视觉特征与二维坐标的尺度、旋转不变性问题。 - **实时性要求**:VLM 的计算开销可能限制地图更新频率,需通过模型蒸馏或轻量化改进。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值