寻找机器人将自己安置在房屋内的方法 [英] Looking for ways for a robot to locate itself in the house

查看:52
本文介绍了寻找机器人将自己安置在房屋内的方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在破解一个真空吸尘器机器人,以使用微控制器(Arduino)对其进行控制.我想让它打扫房间时更有效率.现在,当它撞到东西时,它只能直走并转弯.

但是我很难找到最佳算法或方法以用于了解其在房间中的位置.我正在寻找一种保持便宜(不到100美元)且不复杂(不需要计算机视觉博士学位论文的想法)的想法.如有必要,我可以在房间中添加一些离散标记.

现在,我的机器人有:

  • 一个摄像头
  • 三个接近传感器(约1米范围)
  • 指南针(暂时不使用)
  • Wi-Fi
  • 如果电池已满或快要用完,它的速度可能会有所不同
  • 机器人上嵌入了上网本.

    粒子过滤非常好,因为它很容易理解.这使得实施和调整它的难度降低了一些.还有其他类似的技术(例如 Kalman过滤器),从理论上讲听起来更合理,但更难理解.

    I am hacking a vacuum cleaner robot to control it with a microcontroller (Arduino). I want to make it more efficient when cleaning a room. For now, it just go straight and turn when it hits something.

    But I have trouble finding the best algorithm or method to use to know its position in the room. I am looking for an idea that stays cheap (less than $100) and not to complex (one that don't require a PhD thesis in computer vision). I can add some discrete markers in the room if necessary.

    Right now, my robot has:

    • One webcam
    • Three proximity sensors (around 1 meter range)
    • Compass (no used for now)
    • Wi-Fi
    • Its speed can vary if the battery is full or nearly empty
    • A netbook Eee PC is embedded on the robot

    Do you have any idea for doing this? Does any standard method exist for these kind of problems?

    Note: if this question belongs on another website, please move it, I couldn't find a better place than Stack Overflow.

    解决方案

    The problem of figuring out a robot's position in its environment is called localization. Computer science researchers have been trying to solve this problem for many years, with limited success. One problem is that you need reasonably good sensory input to figure out where you are, and sensory input from webcams (i.e. computer vision) is far from a solved problem.

    If that didn't scare you off: one of the approaches to localization that I find easiest to understand is particle filtering. The idea goes something like this:

    1. You keep track of a bunch of particles, each of which represents one possible location in the environment.
    2. Each particle also has an associated probability that tells you how confident you are that the particle really represents your true location in the environment.
    3. When you start off, all of these particles might be distributed uniformly throughout your environment and be given equal probabilities. Here the robot is gray and the particles are green.
    4. When your robot moves, you move each particle. You might also degrade each particle's probability to represent the uncertainty in how the motors actually move the robot.
    5. When your robot observes something (e.g. a landmark seen with the webcam, a wifi signal, etc.) you can increase the probability of particles that agree with that observation.
    6. You might also want to periodically replace the lowest-probability particles with new particles based on observations.
    7. To decide where the robot actually is, you can either use the particle with the highest probability, the highest-probability cluster, the weighted average of all particles, etc.

    If you search around a bit, you'll find plenty of examples: e.g. a video of a robot using particle filtering to determine its location in a small room.

    Particle filtering is nice because it's pretty easy to understand. That makes implementing and tweaking it a little less difficult. There are other similar techniques (like Kalman filters) that are arguably more theoretically sound but can be harder to get your head around.

    这篇关于寻找机器人将自己安置在房屋内的方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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