YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Spanish subtitles

← Unit 6 SLAM: Implementing SLAM - CS373 - Udacity

Get Embed Code
4 Languages

Showing Revision 2 created 08/23/2012 by almartinflorido.

  1. Así que ahora que hemos aprendido todo sobre Linear Graph SLAM,

  2. y eso es bastante - y es realmente simple.
  3. Cada vez que hay una restricción -
  4. Posición inicial, movimiento o Medición -
  5. tomamos esta restricción y agregamos algo a Omega, Xi.
  6. Y lo que añadimos es la propia restricción,
  7. pero lo multiplicamos por un factor de intensidad.
  8. No hay nada más que 1 sobre sigma -
  9. la incertidumbre en el movimiento o en las mediciones.
  10. Y luego, cuando hayamos terminado con esta adición -
  11. simplemente calculamos esto
  12. y sale la mejor ruta posible -
  13. y junto con el mapa todos los puntos de referencia.
  14. ¿No es eso algo? ¿No es genial?
  15. Así que vamos a bucear dentro y ha tener tu propio ejemplo real de robot en tu programa.
  16. Esta es una generalización bastante complicada de lo que acabamos de ver.
  17. Te voy a dar un entorno en el que puede especificar
  18. el número de puntos de referencia que existen,
  19. el número de veces que desea que el robot se ejecute,
  20. el world_size, el measurement_range - es decir
  21. la distancia a la que un robot podría ser capaz de ver un punto de referencia -
  22. si está más lejos de esto - simplemente no lo ve;
  23. un motion_noise, un measurement_noise,
  24. y un parámetro de distancia.
  25. La distancia especifica de lo rápido que un robot se mueve en cada paso.
  26. Y luego te voy a dar un método make_data que.
  27. toma todos estos parámetros y nos devuelve una estructura de datos
  28. que contiene una secuencia de movimientos y una secuencia de mediciones.
  29. Los comentarios de código son sobre el formato exacto en el que se quieren los datos.
  30. Ahora quiero que programes la función, SLAM,
  31. que contenga estas entradas de datos y varios parámetros importantes
  32. y que devuelva el resultado - una secuencia de posiciones estimada,
  33. la trayectoria del robot y las posiciones estimadas de los puntos de referencia.
  34. Esto es un verdadero reto de programación.
  35. Se basa en las matemáticas que te acabo de dar.
  36. Las coordenadas del robot son ahora las coordenadas x e y.
  37. Las medidas son las diferencias en x e y -
  38. así que tienes que duplicar las cosas para x y cosas para y.
  39. yo mismo, he puesto todos en una gran matriz,
  40. pero podría tenerlos en 2 matrices separadas, si lo prefiere así.
  41. Usted tiene que aplicar todo lo aprendido hasta el momento,
  42. incluidos los pesos de nuestro measurerment_noise
  43. y de nuestro motion_noise.
  44. Estos resultan ser equivalentes, en este caso - pero podría ser diferente.
  45. Entonces tiene que ejecutar SLAM
  46. y que devuelve una estructura de datos de resultados.
  47. También le proporciono el método print_result
  48. para que pueda ir y ver cómo es el resultado.
  49. Hay un método de ejemplo - que no funciona -
  50. que genera todos los formatos correctos,
  51. pero trata de no aplicar la estimación que quiero que tú estimes.
  52. Tienes que coger esto
  53. y convertirlo en un método SLAM increíble
  54. de modo que cuando lo ejecutes, obtengas los mismos resultados que yo,
  55. para los ejemplos de aquí,
  56. donde hay una trayectoria estimada
  57. y estimaciones de la posición de los puntos de referencia.
  58. Hay una última cosa que quiero saber-
  59. Asumo que la posición inicial del robot
  60. va a estar en el centro del mundo.
  61. Así que real-world lo establezco a 100
  62. y esto va a ser 50/50--aquí se imprime como 49,999,
  63. pero esto es lo mismo que 50.
  64. Así que hay que poner en una restricción
  65. que establece la posición inicial del robot
  66. en el centro del mundo.