UBR-1 en ROS2 Humilde – Robohub

UBR-1 en ROS2 Humilde – Robohub

  • Robotica
  • agosto 4, 2022
  • No Comment
  • 15
  • 15 minutes read


Ha pasado un tiempo desde que publiqué en el blog, pero últimamente he vuelto a trabajar en el UBR-1 después de una pausa algo larga. En caso de que te hayas perdido las publicaciones anteriores de esta serie:

ROS2 modesto

La última versión de ROS2 salió hace apenas unas semanas. ROS2 Humble tiene como objetivo Ubuntu 22.04 y también es una versión LTS (soporte a largo plazo), lo que significa que tanto el sistema operativo Ubuntu subyacente como la versión ROS2 obtienen 5 años completos de soporte.

Dado que la instalación de sistemas operativos en robots suele ser una molestia, solo uso las versiones LTS y, por lo tanto, tuve que migrar desde el LTS anterior, ROS2 Foxy (en Ubuntu 20.04). En general, no hay muchos cambios en las API de ROS2 de bajo nivel a medida que las cosas se vuelven más estables y maduras. Para algunos paquetes de gama alta como MoveIt2 y Navigation2, la historia es un poco diferente.

visualización

Una de las cosas buenas de la versión ROS2 Foxy era que apuntaba al mismo sistema operativo que la versión final de ROS1, Noetic. Esto permitió a los usuarios instalar ROS1 y ROS2 uno al lado del otro. Si todavía está desarrollando en ROS1, eso significa que probablemente no quiera actualizar todas sus máquinas todavía. Si bien mi robot ahora ejecuta Ubuntu 22.04, mi escritorio aún ejecuta 18.04.

Así que tuve que encontrar una manera de visualizar los datos de ROS2 en una computadora que no tenía instalada la última versión de ROS2. Inicialmente probé Foxglove Studio, pero no tuve suerte con las cosas que realmente se conectaban a través de la interfaz ROS2 nativa (la interfaz basada en Rosbridge funcionó). Foxglove es ciertamente interesante, pero hasta ahora no es un reemplazo de RVIZ; parecen estar más enfocados en la visualización de datos fuera de línea.

Entonces comencé a correr rviz2 en un entorno docker, que funciona bien con la herramienta rocker:

sudo apt-get install python3-rocker
sudo rocker --net=host --x11 osrf/ros:humble-desktop rviz2

Si está utilizando una tarjeta NVIDIA, deberá agregar --nvidia junto con --x11.

Para visualizar e interactuar correctamente con mi robot UBR-1, necesitaba agregar el ubr1_description paquete a mi espacio de trabajo para obtener las mallas y también mis configuraciones de rviz. Para lograr esto tuve que construir mi propia imagen de Docker. Lo basé en gran medida en las imágenes subyacentes de ROS Docker:

ARG WORKSPACE=/opt/workspace

AFUERA osrf/ros: escritorio humilde

# Instalar herramientas de compilación
CORRER apt obtener actualización && apt-get Instalar -q -y –sin-instalar-recomienda
python3-colcon-extensiones-comunes
núcleo de git
&& rm -rf /var/lib/apt/listas/*

# Obtener código ubr
ARG LUGAR DE TRABAJO
DIRECCIÓN DE TRABAJO $ESPACIO DE TRABAJO/origen
CORRER Clon de Git https://github.com/mikeferguson/ubr_reloaded.git
&& tocar ubr_reloaded/ubr1_bringup/COLCON_IGNORE
&& tocar ubr_reloaded/ubr1_calibration/COLCON_IGNORE
&& tocar ubr_reloaded/ubr1_gazebo/COLCON_IGNORE
&& tocar ubr_reloaded/ubr1_moveit/COLCON_IGNORE
&& tocar ubr_reloaded/ubr1_navegación/COLCON_IGNORE
&& tocar ubr_reloaded/ubr_msgs/COLCON_IGNORE
&& tocar ubr_reloaded/ubr_teleop/COLCON_IGNORE

# Instalar dependencias
ARG LUGAR DE TRABAJO
DIRECCIÓN DE TRABAJO $LUGAR DE TRABAJO
CORRER . /opt/ros/$ROS_DISTRO/setup.sh
&& apt obtener actualización && Rosdep Instalar -q -y
–de-caminos fuente
–ignorar-src
&& rm -rf /var/lib/apt/listas/*

# Crear código ubr
ARG LUGAR DE TRABAJO
DIRECCIÓN DE TRABAJO $LUGAR DE TRABAJO
CORRER . /opt/ros/$ROS_DISTRO/setup.sh
&& construir colcón

# Establecer punto de entrada
COPIAR ./ros_punto de entrada.sh /

PUNTO DE ENTRADA [«/ros_entrypoint.sh»]
CMD [«bash»]

La imagen proviene del escritorio Humble y luego agrega las herramientas de compilación y clona mi repositorio. Luego ignoro la mayoría de los paquetes, instalo dependencias y luego construyo el espacio de trabajo. Que ros_entrypoint.sh El script se encarga de recuperar la configuración del espacio de trabajo.

#!/bin/bash
set -e

# Configurar el entorno ros2
fuente «/opt/espacio de trabajo/instalar/setup.bash»
ejecutivo «ps«

Luego podría construir la imagen de la ventana acoplable y ejecutar rviz en ella:

docker build -t ubr:main
sudo rocker --net=host --x11 ubr:main rviz2

La fuente completa de estas configuraciones de Docker está en la carpeta docker de mi ubr_reloaded repositorio. NOTA: El código actualizado en el repositorio también agrega un cambio de última hora al uso de CycloneDDS, ya que tuve numerosos problemas de conexión con FastDDS que no pude depurar.

Visualización en MacOSX

A menudo también quiero poder interactuar con mi robot desde mi Macbook. Si bien anteriormente instalé ROS2 Foxy en mi Macbook basado en Intel, la situación ha cambiado un poco ahora, con MacOSX siendo degradado a soporte Tier 3 y el nuevo silicio Apple M1 (y varios otros mecanismos de bloqueo de Apple) haciendo cada vez más difícil configurar ROS2 directamente en la Macbook.

Al igual que con el escritorio de Linux, probé Foxglove, aunque es un poco limitado en Mac. El entorno MacOSX no permite abrir los puertos requeridos, por lo que la transmisión directa de temas de ROS2 no funciona y debe usar Rosbridge. Descubrí que podía visualizar ciertos temas, pero cambiar entre temas con frecuencia fallaba.

Estuve a punto de rendirme en este punto hasta que me di cuenta de que Ubuntu 22.04 arm64 es una plataforma Tier 1 para ROS2 Humble. Procedí a instalar la versión arm64 de Ubuntu en Parallels (nota: era barato e intenté usar la vista previa de la tecnología VMWare primero, pero ni siquiera pude hacer que el instalador arrancara). Aquí hay algunos trucos, ya que no hay un instalador de escritorio Arm64, por lo que deberá instalar la edición del servidor y luego actualizarla a un escritorio. Hay una descripción detallada de este flujo de trabajo en askubuntu.com. Instalar ros-humble-desktop por arm64 Debian era perfectamente simple.

rviz2 se ejecuta razonablemente rápido dentro de Parallels VM, pero en general no fue tan rápido ni tan estable como usar rocker en Ubuntu. Sin embargo, es muy bueno poder hacer el desarrollo de ROS2 cuando estoy afuera con mi Macbook.

Notas de migración

Nota: Cada uno de los enlaces en esta sección conduce a una confirmación o PR que implementa los cambios discutidos.

Solo hay un puñado de cambios en la API central de ROS, y la mayoría de ellos solo solucionan posibles errores. Las macros de registro se han actualizado por razones de seguridad y requieren cadenas C como las antiguas macros ROS1. Además, las macros ahora son mejores para reconocer cadenas de sustitución no válidas. Ament también ha mejorado en la detección de dependencias faltantes. Las actualizaciones que hice en robot_controllers muestran cuántos errores se han descubierto en esta revisión más rigurosa.

image_pipeline ha recibido algunas actualizaciones menores desde Foxy, principalmente para mejorar la consistencia entre los complementos y, como resultado, tuve que actualizar algunas reasignaciones de temas.

La navegación tiene la mayor cantidad de actualizaciones. amcl Los nombres de los tipos de modelos se han cambiado ya que los modelos ahora son complementos. La API de capas de costmap ha cambiado significativamente, lo que requiere una serie de actualizaciones solo para que el sistema funcione. Luego revisé la documentación más de cerca y encontré algunos problemas y mejoras más con mi configuración, particularmente relacionados con la configuración del árbol de comportamiento.

También decidí portar graceful_controller a ROS2 correctamente, comenzando con el código ROS1 más reciente, ya que ha habido una serie de mejoras durante el último año desde que porté originalmente a ROS2.

Próximos pasos

Todavía hay una serie de funciones nuevas para explorar con Navigation2, pero mi enfoque inmediato cambiará a configurar MoveIt2 en el robot, ya que no puedo cambiar fácilmente entre ROS1 y ROS2 después de actualizar el sistema operativo.


Michael Ferguson

Related post

Expositores de ICRA 2022 – Robohub

Expositores de ICRA 2022 – Robohub

En el ICRA 2022 no solo los investigadores trabajaron con tecnología de punta. Hablamos con los expositores para obtener demostraciones reales…
#ICRA2022 Eventos de networking – Robohub

#ICRA2022 Eventos de networking – Robohub

Crédito de la foto: Wise Old Multimedia La Conferencia Internacional IEEE sobre Robótica y Automatización (ICRA) ha brindado muchas oportunidades para…
Resultados de los Premios ROS 2022 – Robohub

Resultados de los Premios ROS 2022 – Robohub

¡Los premios ROS son los Oscar del mundo ROS! La intención de estos premios es expresar agradecimiento por las contribuciones a…

Leave a Reply

Tu dirección de correo electrónico no será publicada.