如何从玩具车中的测距仪传感器绘制房间轮廓? [英] How to plot a room outline from range finder sensors in a toy car?

查看:18
本文介绍了如何从玩具车中的测距仪传感器绘制房间轮廓?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一辆玩具车,前面、后面和两侧都有一个 arduino 和 4 个超声波测距仪传感器,如果传感器覆盖的范围内存在墙壁,它们会给我一个到墙壁的距离,传感器给我这个短时间间隔内的数据,汽车必须在房间周围移动并绘制轮廓,房间可能有柱子并且有点不规则,我不知道此绘图中涉及的算法,任何见解将不胜感激.

I have a toy car that has an arduino and 4 Ultrasonic Range Finder sensors in front, rear and both sides, they give me the distance to a wall if any exist within the range that the sensor covers, the sensors give me this data in short intervals, the car has to move around a room and plot the outline, the rooms can have columns and be kind of irregular, I don't know the algorithms involved in this plotting, any insight would be appreciated.

推荐答案

heh 曾经做过一个几乎一模一样的机器人 :)
芽它可以在一个地方转弯(没有转弯半径)
所以驾驶和地图环境很容易
你的情况很难说,因为我们没有看到汽车运动学

heh once did a robot that was almost the same :)
bud it could turn around at one place (no turning radius)
so it was easy to drive and map environment
in your case hard to say because we do not see the car kinematics

无论如何一些提示:

1.在进行超声波听音时,您应该让电机安静

1.while doing ultrasonic listening you should have your motors quiet

  • 我使用了步进电机,因此可以在接收器中听到它们的脉冲
  • 如果您使用直流电机,那么这可能会非常棘手(可能您需要完全停止)
  • 或确定哪个回声是回声,哪个换向器噪声
  • 无刷 (BLDC) 和正弦驱动都可以
  • 但是 PWM 或任何其他脉冲驱动都会产生同样的问题
  • 所以你需要同步收听时间和脉冲噪音时间
  • 如果没有适当的测量设备,这会非常困难(示波器非常适合)

2.超声波发射器

  • 避免混淆
  • 一次只使用一个
    • 这很容易但很慢
    • 这样你就无法从远回波中获取数据

    3.运动

    • 您需要编写移动操作代码
    • 不断前进/后退
    • 左/右转 90 度
    • 它们必须尽可能准确
    • 在合适的环境中,您可以使用超声波更准确(只需要垂直的侧面,内部没有有问题的材料)
    • 有了这些,您就可以开始绘制您的 2D 迷宫

    4.映射房间

    • 创建环境的二维地图
    • 您可以通过单元格或矢量方法来实现
    • 我强烈推荐单元格访问(它不太准确但对初学者来说更容易)
    • 地图可以是二维数组
    • 值未知、空间、墙

    • create 2D map of the environment
    • you can do it by cell or vector approach
    • I strongly recommend the cell access (it is less accurate but easier for starters)
    • map can be 2D array
    • with values unknown,space,wall

    1.init

    • 将汽车垂直于墙壁放置
    • 清除未知地图
    • 在地图(x,y)中间设置位置

    2.echo-定位所有边

    2.echo-locate all sides

    • 如果找到墙,则将其标记在地图上的 (x,y)+(distance * side vector)
    • 并将 x,y 和墙壁标记之间的所有空格标记为空格
    • 如果没有找到墙,则将地图中从 x,y 到 (x,y)+(safe range*side vector) 的所有单元格标记为空间
    • 侧向量可以是:front(0,+1), back(0,-1), left(-1,0), right(+1,0)
    • 安全范围是与您的汽车之间的距离,在该距离处始终在 [单元格] 中检测到墙壁
    • 距离是在[单元格]中测量的墙壁距离
    • 不要忘记从汽车位置添加发射器/接收器偏移量
    • 还将当前位置 (x,y) 标记为空格

    3.找到标记为未知但相邻空间单元的任何或最近或最快移动的单元

    3.find any or closest or fastest to move cell marked as unknown but neighbouring space cell

    • 如果没有找到,则映射完成(通过 LED 闪烁或做一些疯狂的动作来发出信号)
    • 如果找到,则规划路径并将汽车移至该路径
    • 为其设置位置 x,y

    4.goto 2

    现在只需将数据从 MCU 挖掘到 PC 并查看

    now just mine the data from MCU to PC and view it

    [注释]

    • 可以添加很多东西来改进这个......
    • 当心织物/布类材料
    • 超声波很难检测到它们
    • 对于发射器,使用他们所需的频率来最大限度地提高性能
    • 对于脉冲回波定位发射的最佳功率/精度​​/距离比为 7 个脉冲
    • 没有人知道为什么,但它是最好的(至少对于我所知道的所有应用程序和设备)

    玩得开心:)

    这篇关于如何从玩具车中的测距仪传感器绘制房间轮廓?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆