¿Puede ROS ejecutarse en una Raspberry Pi?


28

¿Puede ROS ejecutarse en una Raspberry Pi?

ROS renunció a funcionar en una red de máquinas, con diferentes máquinas, incluso diferentes núcleos en la misma máquina que realizan diferentes trabajos. ¿Puede una de esas máquinas ser una Raspberry Pi?

Estoy considerando usar un R-Pi como maestro EtherCAT en un robot móvil, comunicándome con la PC principal a través de WiFi, usando un dongle.

  • ¿Puede un R-Pi incluso ejecutar ROS?
  • ¿Tendría un R-Pi suficiente potencia de procesamiento para realizar algunos servo de 1 kHz?
  • ¿Sería posible ejecutar algunos servos en el host a través de la conexión WiFi?

Respuestas:


16

El sistema operativo oficial RaspberryPi es una versión de Debian, pero también hay una versión de ArchLinux en su sitio web .

A pesar de la afirmación de ROS de ser multiplataforma, solo admiten oficialmente Ubuntu en este momento. Sin embargo, se han realizado instalaciones experimentales para los siguientes sistemas operativos, de acuerdo con ros.org :

  • OS X (Homebrew)
  • Fedora
  • Gentoo
  • OpenSUSE
  • Debian
  • Arch Linux
  • Ventanas

Si bien no tengo experiencia de primera mano (mis dos Pis están vergonzosamente sentados en la esquina), ros.org tiene una guía de configuración rápida y sucia .

Hay instrucciones similares en answers.ros.org .

En caso de que tenga algún problema, los foros de RaspberryPi también pueden ser de alguna ayuda. Y, por supuesto, SE tiene su propio PI.SE (Gracias a @Jivings y @ppumkin por el recordatorio).

De lo contrario, solo busque en google "ros raspberry pi" y debería encontrar mucha más información.


En mi opinión, Debian es la mejor opción para Raspberry Pi. Creo que lo encontrará más fácil y mejor apoyado desde una perspectiva comunitaria, ya que se opone a otros sabores del kernel de Linux.
DogEatDog

3
@DogEatDog No estoy de acuerdo, Arch también está muy bien soportado. Además, enchufe descarado aquí; Cualquier problema de Raspberry Pi de esta pregunta será recibido con agradecimiento en Raspberry Pi , así como en los foros oficiales.
Jivings

@Jivings No puedo creer que olvidé revisar RaspberryPi.SE ... Aunque una búsqueda rápida de ROS no arroja ningún resultado hasta el momento ;-)
ThomasH

@ThomasH: ¿cree que podría agregar a su respuesta un enlace para ir a PI.SE Obtuvimos muchas respuestas allí y posiblemente algunas soluciones? No solo quiero editar sus respuestas, ya que son correctas.
Piotr Kula

Debido a que ROS se ejecuta bajo BSD, no es compatible hasta la última versión de FreeBSD, y por supuesto, la fuente de ROS también tendrá que ejecutarse en el código BSD más reciente. Todo tiene que ver con el flotador rígido y algunas actualizaciones de controladores para ese ARM específico hecho por BroadCom (PS: el controlador de video de BCM se convertirá en código abierto, por lo que debería haber más soporte en el futuro)
Piotr Kula

6

La robótica es lo suficientemente difícil como cuando todas sus dependencias están funcionando. Lo último que necesita son problemas adicionales provenientes de componentes incompatibles o combinaciones no compatibles.

Lo miré un poco y aquí estaba mi progresión:

Raspberry Pi no es compatible con Ubuntu porque su CPU ARM usa un conjunto de instrucciones más antiguo (¿ARM v6, creo?) Y el equipo de Ubuntu dejó de admitirlo en 2009.

Beaglebone es similar a una Raspberry Pi en muchos aspectos y tiene un conjunto de instrucciones más nuevo para que ejecute Ubuntu. Sin embargo, la 'mejor' distribución de Ubuntu ARM está saliendo del proyecto Linaro y dejaron de admitir el Beaglebone algunas revisiones (la última fue Linaro 12.03) porque está usando un procesador TI OMAP 3 más antiguo (bienvenido al maravilloso mundo del teléfono inteligente rápido Progreso).

Mi siguiente paso fue mirar el TI Pandaboard que usa el nuevo procesador OMAP 4 que actualmente es compatible, pero cuesta más cerca del rango de $ 200.

Pero ahora Ubuntu se lanzó oficialmente para el Nexus 7. Con 200 dólares, el Nexus 7 te ofrece todo lo que ofrece una Raspberry Pi y mucho más. Tenga en cuenta que incluso con una Raspberry Pi, una vez que agrega el cargador, el adaptador wifi, la tarjeta de almacenamiento y los cables, se acerca cada vez más a 100 dólares que a 35 dólares, por lo que, en mi opinión, el Nexus 7 es una oferta mucho mejor.

Por último, no intente emitir una señal de 1 khz desde un sistema operativo en tiempo no real. Adjunte un microcontrolador barato como el PJRC Teensy (clon Arduino) y deje que se encargue de las tareas simples en tiempo real. De esta manera, dedica la CPU económica a estas simples tareas sensibles al tiempo. A 16 MHz con soporte para temporizadores múltiples, un pequeño AVR MCU puede manejar media docena de tareas como esta sin problemas.


1
Ejecutar su robot con Ubuntu en un Nexus 7, ¡idea genial! Por casualidad, ¿conoces algún proyecto de robótica que use el nexo de esta manera?
bit-pirate

5

ThomasH respondió bien a esta pregunta , pero además solo quiero sugerir la posibilidad de unir inalámbricamente el quadcopter a una computadora portátil. Es decir, simplemente escriba un protocolo de comunicación inalámbrico (wifi, bluetooth?) Agradable y rápido para el quadcopter, luego realice las tareas pesadas de la CPU en una computadora portátil, mientras transmite las instrucciones y consultas del sensor al R-PI. Probamos muchas implementaciones y nos decidimos por una configuración similar para todos nuestros pequeños robots. Además, casi todas las implementaciones de quadcopter asombrosas se configuran de esta manera. Facilita la vida y le permite usar las bibliotecas de gran éxito sin sacrificar la velocidad.

Seamos honestos, es muy probable que el quadcopter no salga del alcance inalámbrico de su computadora portátil de todos modos.


Para ser claros, cuando dices "cosas pesadas de CPU" aquí, te refieres a controles de alto nivel que implican muchos cálculos numéricos, como SLAM o visión por computadora. El control de vuelo de bajo nivel tendrá que ocurrir en tiempo real y a frecuencias suficientemente altas como para que no sea factible a través de una conexión inalámbrica.
yoos

El control de vuelo, como en las salidas de servo, tendrá que ser generado por la electrónica de a bordo, sí. Pero los comandos de vuelo, como las velocidades deseadas del rotor, pueden ser generados por una PC atada (bluetooth es increíble para esto), pero no hay razón para hacerlo si puede ejecutarlos en el R-Pi. Si ese es el caso, entonces sí, "cosas pesadas de la CPU" se refiere a la planificación de alto nivel, coordinación de múltiples vehículos, SLAM, CV, etc.
Josh Vander Hook

4

, pero instalar ROS en Debian es factible, pero no trivial.


4

Se acaba de llenar un repositorio experimental con paquetes ROS Groovy para Raspbian (wheezy), las instrucciones para usarlo se pueden encontrar aquí:

http://www.ros.org/wiki/groovy/Installation/Raspbian

El repositorio tiene más de 350 paquetes y los paquetes principales de ROS se pueden instalar en cuestión de minutos en una nueva instalación de Raspbian.


2

Verificaría el proyecto rosserial . Básicamente, genera un código para Arduino para comunicarse en serie a un nodo ROS en la computadora. Apuesto a que puede convertirlo a la Raspberry Pi, para que pueda usar algún otro protocolo para comunicarse entre la Pi y la computadora host.


2

sí. Seguro. Hemos estado haciendo esto por mucho tiempo.
ROS no es un "SO" y no es grande. Es solo "middleware" que funciona bien en "raspbian".
Acabamos de grabar con el raspbian oficial (por lo que esperamos que pueda hacernos trabajar en un entorno "estable") y compilar el ROS con la fuente. aquí está el enlace paso a paso (para Kinetic):
http://wiki.ros.org/ROSberryPi/Installing%20ROS%20Kinetic%20on%20the%20Raspberry%20Pi
puedes probar ros_comm o escritorio.
Intenté ros_comm y luego agregué otros paquetes más tarde.


1
¿Por qué no usas Ubuntu Mate y simplemente instalas ROS desde los paquetes?
FooTheBar

porque Ubuntu Mate se ejecuta lentamente en el chip ARM en frambuesa, tanto Pi2 como Pi3. Raspbian es lite debian y funciona muy bien en el chip ARM. @FooBar
Nick Qian

¿Alguna fuente para eso? No he experimentado ningún problema de velocidad.
FooTheBar

No intenté más después de elegir raspbian. tal vez ahora Ubuntu Mate dist para frambuesa es mejor y sin problemas de uso. Tengo interés en intentarlo nuevamente porque en ubuntu la administración del software es buena. ¿Pero qué tal el GPIO? tal vez la nueva versión de ubuntu también tiene soporte para gpio, no lo sé ...
Nick Qian

1
Entonces, ¿por qué dices que es lento si no lo has probado?
FooTheBar


1

A diferencia de lo que se ha dicho en las otras respuestas (en lugar obsoleta), he éxito probado ROS a ambos corriendo Raspbian o Ubuntu con un Frambuesa Pi Modelo B 2 .

Después de un poco de ida y vuelta, me quedaré con Ubuntu: aunque no logré acceder al módulo de cámara Raspberry con Ubuntu, veo grandes ventajas en su gestión de paquetes superior y compatibilidad con ROS. ¿Necesita alguna nueva característica extraña de ROS? Solo sudo aptitude installel paquete y ya está todo listo.


0

Tengo experiencia instalando ROS en un Raspi usando Ubuntu Mate como sistema operativo. Es esencialmente un sistema operativo ubuntu regular, pero en un dispositivo de brazo. Puede instalar ROS a través de binarios preconstruidos. No requiere más configuración que una computadora portátil Ubuntu normal. Sé que hay una versión de Pi que no es oficialmente compatible (creo que es el 3B +, afortunadamente ha pasado un tiempo desde la instalación), pero alguien descubrió cómo solucionar ese problema en una publicación del foro que busqué en Google.


enlace a la publicación del foro?
DrerD

Ya he vinculado al sitio web para que pueda descargar Ubuntu mate. Es literalmente tan simple como una máquina ubuntu regular instalar ROS. No sé por qué necesita un enlace de publicación en el foro ... Fue para un proyecto escolar en repositorios privados (por lo tanto, el código fuente ROS no es público), pero Ubuntu mate está disponible públicamente. Aquí hay otro enlace más específico .
thatrobotguy