¿Cuáles son algunos algoritmos fáciles de implementar para la localización basada en características o puntos de referencia de robots móviles 2-D?

Una opción, si su mapa no es demasiado grande, es un algoritmo basado en Montecarlo.

1. Dibuja al azar 1000 (o 100, o 10 000) posiciones posibles (posición 2d + orientación) para su robot.

2. Para cada posición, calcula sus expectativas de qué puntos de referencia debe ver dónde.

3. Deseche todas las posiciones donde las expectativas estén muy lejos de lo que realmente ve. Dibuja aleatoriamente nuevas posiciones posibles para reemplazarlas.

4. Suponga que su posición es la media de todas las posiciones posibles. Actualice las posiciones según la odometría. Ve al paso 2.

Este algoritmo debería converger (la mayoría de las posiciones terminan cerca del mismo punto), es bastante robusto al ruido y puede adaptar la carga de cálculo cambiando el número de posiciones que calcula.

Lo difícil puede ser calcular los puntos de referencia vistos esperados y elegir una métrica para determinar qué expectativas son demasiado diferentes de lo que ve.

Este es el escenario típico utilizado en Robocup (ver RoboCup Standard Platform League): es un campo de fútbol con marcadores en los bordes. Puede encontrar algunas ideas y algoritmos en los procedimientos (ver Simposio).

La solución típica es un filtro de Kalman. El estado del robot se representa como un conjunto de variables no observadas; y la relación entre el robot y las mediciones se expresa como una matriz de covarianza. En cada paso de tiempo, predice dónde cree que se basa en los valores de ruido del sensor de odometría. Entonces haces tu observación; traduzca de nuevo a través de la matriz de covarianza y actualice su estimación del estado.

Otra posible solución es un filtro de partículas. Esto es algorítmicamente más simple y probablemente es excesivo para este problema porque el espacio de estado está muy limitado. Esto es similar a lo que propone Manon Cortial (los filtros de partículas a veces se llaman Monte Carlo secuencial). Tienes un montón de partículas, cada una una hipótesis sobre dónde está el robot y hacia dónde apunta el robot, y una función de puntuación para cada partícula. En cada paso de tiempo, vuelve a muestrear la población prefiriendo partículas que sean más óptimas.

Un filtro de partículas es a menudo el primer prototipo para la localización (ver Probabilistic Robotics de Fox, Then, Burgard).

Un filtro de Kalman (EKF o UKF) debería funcionar bien en su situación y ser mucho más rápido.

More Interesting

¿Qué estructura de datos usa YouTube?

¿Qué tipo de algoritmos utilizamos para el análisis de sentimientos para la película? ¿Hay alguna lista para los algoritmos y sobre su estructura?

Cómo agregar números de dos listas vinculadas

¿Cómo pueden los estudiantes de electricidad y electrónica llegar a ser buenos en algoritmos y estructuras de datos?

¿Cómo es constante la cadena STL C_str () cuando la clase misma es como una matriz dinámica?

¿Cuáles son los mejores recursos para aprender R? Tratando de construir mi propio algoritmo de predicción basado en datos anteriores que tengo en archivos csv y que solía ser un desarrollador de Ruby hace un par de años

¿Cómo se compara la recomendación de amigos de Facebook con las personas de LinkedIn que quizás conozcas?

Cómo crear mi propio algoritmo de compresión básico para archivos

¿Cuál es la diferencia entre trazado de rayos y fundición de rayos?

¿Cuál es el mejor algoritmo para un conjunto de datos con muchas características correlacionadas, débiles y ruidosas?

¿Cuál sería la mejor estrategia de negociación algorítmica simple?

¿Qué algoritmos existen para la reconstrucción de un conjunto de vectores de un diccionario de cardinalidad más pequeña?

¿Qué estructura de datos debo usar en Java para almacenar y obtener el siguiente tipo de datos? ¿Cuál debería ser la estructura de mi clase para este propósito?

¿Qué es mejor si necesito elegir un camino para mi carrera, algoritmos y estructuras de datos, o tecnologías de big data, en las que estoy trabajando actualmente?

¿Cómo se comparten de forma segura las claves de los algoritmos de cifrado y descifrado entre el emisor y el receptor sin ser interrumpidos por intrusos?