[Tutorial de inicio de Carla]-5 Uso de ROS para comunicarse con Carla

Este tutorial de columna registrará todo el proceso desde la instalación de carla hasta llamar a la API de Python de carla para el control del vehículo y la recopilación de datos, lo que lo llevará desde el comienzo de la instalación de carla hasta la competencia final en el uso del entorno de simulación de carla para la recopilación de datos del sensor y el control del vehículo.

La sección 5 usa ros para comunicarse con carla

El contenido principal de esta sección es presentar cómo usar ros para comunicarse en carla.

  • Introducción al contenido del capítulo:

Las secciones 1 y 2 presentan la instalación de ROS y carla_ros_bridge.
La sección 3 describe cómo configurar los parámetros de ejecución de carla_ros_bridge y abrir un nodo ros que se puede controlar manualmente. También presenta la información del sensor que se puede proporcionar a la interfaz ros. Sección 4
presenta Explica cómo enviar comandos de control a través de ros para hacer que el automóvil se mueva. También presenta cómo usar rviz para ver cierta información del sensor del vehículo.

1. Instalar ROS

Para instalar ros, puede usar la instalación con un solo clic en el sitio web de Yuxiang ROS. carla_ros_bridge es compatible con ROS1 y ROS2, y este artículo usa ROS1.

Serie de instalación de un clic de Xiaoyu-

  • La versión ROS de carla_ros_bridge es compatible con:
    ROS Melodic — Para Ubuntu 18.04 (Bionic)
    ROS Noetic — Para Ubuntu 20.04 (Focal)
  • soporte de la versión carla:
    CARLA 0.9.7 o posterior

Este tutorial utiliza carla0.9.12,ROS Melodic

2. Instalar carla_ros_bridge

Hay dos métodos de instalación: el primero es la instalación apt y el segundo es la instalación del código fuente.

La instalación del código fuente puede encontrar muchos problemas dependiendo de la biblioteca, y la instalación de apt es más conveniente y adecuada para el sistema ubuntu1804, por lo que se recomienda elegir la instalación de apt aquí.

2.1 Crear un entorno virtual

ros-bridge debe instalarse en el entorno python2.7.

conda create -n py27 python=2.7

Activar el entorno virtual:

conda activate py27

Cambia la fuente e instala las dependencias:

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip install opencv-python==4.2.0.32 
pip install networkx
pip install rospkg
pip install rospy
pip install simple_pid
pip install transforms3d
pip install networkx
pip install enum
pip install pygame

2.2 Instalar carla-ros-bridge a través de apt

Agregar fuente espejo:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1AF1527DE64CB8D9
sudo add-apt-repository "deb [arch=amd64] http://dist.carla.org/carla $(lsb_release -sc) main"
sudo apt-get update

instalación apta

sudo apt-get install carla-ros-bridge

Aquí podemos ver que la versión instalada es en realidad la versión 0.9.10, pero no afecta nuestro uso posterior.
inserte la descripción de la imagen aquí

2.3 Configurar variables de entorno y ejecutar

Primero ejecute el servidor carla:

    ./CarlaUE4.sh

Entonces necesitamos cambiar al entorno virtual de py27

conda activate py27

Especifique el directorio de carla y verifique que sea correcto:

export CARLA_ROOT=/home/lbw/Carla/recompressed/carla-0.9.12
export PYTHONPATH=$PYTHONPATH:$CARLA_ROOT/PythonAPI/carla/dist/carla-0.9.12-py2.7-linux-x86_64.egg:$CARLA_ROOT/PythonAPI/carla
python -c 'import carla;print("Success")' 

Si está impreso, successsignifica que la configuración de la ruta pythonAPI se realizó correctamente.

Obtenga la variable de entorno en la terminal:

source /opt/carla-ros-bridge/melodic/setup.bash 

Ejecutarlo:

 roslaunch carla_ros_bridge carla_ros_bridge.launch

inserte la descripción de la imagen aquí

Use rostopic listpara ver los mensajes publicados por carla:
inserte la descripción de la imagen aquí

  • Para la conveniencia de comenzar en el futuro, lo agregamos directamente a .bashrc
gedit ~/.bashrc

Escribir en el script (antes de # >>> conda initialize >>>):

source /opt/carla-ros-bridge/melodic/setup.bash 
export CARLA_ROOT=/home/lbw/Carla/recompressed/carla-0.9.12
export PYTHONPATH=$PYTHONPATH:$CARLA_ROOT/PythonAPI/carla/dist/carla-0.9.12-py2.7-linux-x86_64.egg:$CARLA_ROOT/PythonAPI/carla

3. Ejecute carla_ros_bridge

Antes de ejecutar carla_ros_bridge, todos debemos cambiar al entorno virtual de py27, de lo contrario, se producirá un error.

3.1 configuración de parámetros de lanzamiento de ros

roslaunch carla_ros_bridge carla_ros_bridge.launch Los parámetros se pueden agregar más tarde, por ejemplo, la dirección del servidor se puede cambiar a través del host y el puerto, y el mapa se puede modificar a través de la ciudad .

El formato del parámetro de ejecución del sufijo es :=, por ejemplo: passive:=True.

Al ejecutar varios clientes, carla_ros_bridgeeste cliente obtendrá automáticamente la prioridad de actualización y le dará prioridad a marcar el mundo, es decir, actualizar, a menos que configuremos passive:=True.

carla_ros_bridgeFunciona synchronous_modede forma y espera a que se envíen todos los mensajes de los sensores antes de la próxima actualización, lo que garantiza que la frecuencia de actualización sea constante.

carla_ros_bridgeEl valor predeterminado es suscribirse a todos los sensores, es decir,register_all_sensors:=True

Ruta de almacenamiento de configuración predeterminada :
/opt/carla-ros-bridge/melodic/share/carla_ros_bridge/config

La descripción específica de otros parámetros es la siguiente:

  • use_sim_time : debe establecerse en True para asegurarse de que ROS esté utilizando el tiempo de simulación en lugar del tiempo del sistema. Este parámetro sincronizará el tema ROS/reloj con el tiempo de simulación CARLA.
  • host y puerto : Configuración de red para conectarse a CARLA usando un cliente de Python.
  • timeout : tiempo de espera para una conexión exitosa al servidor.
  • pasivo : el modo pasivo se utiliza en el modo síncrono. Cuando está habilitado, el puente ROS pasará a un segundo plano y otro cliente debe marcar el mundo. El puente ROS esperará a que se reciban todos los datos esperados de todos los sensores.
  • synchronous_mode :
    si es falso: los datos se publican en cada world.on_tick() y en cada devolución de llamada de sensor.listen().
    Si es verdadero (predeterminado): el puente ROS espera todos los mensajes del sensor esperados antes del siguiente tic. Esto podría ralentizar la simulación general, pero garantiza resultados reproducibles.
  • synchronous_mode_wait_for_vehicle_control_command : en modo síncrono, detiene la marca hasta que se completa el control del vehículo.
  • fixed_delta_seconds : Tiempo de simulación (segundos delta) entre pasos de simulación. Debe ser inferior a 0,1. Eche un vistazo a la documentación para obtener más información al respecto.
  • ego_vehicle : Nombres de roles para identificar vehículos ego. Se crearán temas relevantes para que estos vehículos puedan ser controlados desde ROS.
  • ciudad : utilice una ciudad CARLA disponible (p. ej., 'ciudad01') o un archivo OpenDRIVE (que termine en .xodr).
  • register_all_sensors :
    si es falso: solo se registran los sensores generados por el puente.
    Si es verdadero (predeterminado): Se registran todos los sensores presentes en la simulación.

3.2 Ejecutar un nodo ros de conducción manual

Primero necesitas ejecutar el servidor carla:

./CarlaUE4.sh

Luego use roslaunch para abrir el carla_ros_bridge_with_example_ego_vehiclescript oficial y configure el mapa en town01:

roslaunch carla_ros_bridge carla_ros_bridge_with_example_ego_vehicle.launch town:='town01'

Este script en realidad se compone de tres módulos:

  • carla_ros_puente.lanzamiento
  • carla_example_ego_vehicle.lanzamiento
  • carla_manual_control.lanzamiento

Después de abrir, podemos ver la siguiente interfaz:
inserte la descripción de la imagen aquí
Si la visualización de su pantalla es relativamente oscura, puede consultar la solución al problema 1 del manejo de excepciones al final del artículo.

Después de Hpresionar, aparecerá la interfaz de control. Puede ver que Bprimero debe presionar para iniciar el control manual, de lo contrario, el automóvil no se moverá . Otros métodos de control y
inserte la descripción de la imagen aquí

3.3 Información del sensor que puede proporcionar carla_ros_bridge

Abrimos el archivo de configuración del sensor:

sudo gedit /opt/carla-ros-bridge/melodic/share/carla_ego_vehicle/config/sensors.json

Como puede ver, los sensores involucrados son:

  • Cámara RGB con visión de futuro
  • Cámara RGB en perspectiva en tercera persona
  • Lidar de radar láser de 32 líneas
  • radar radar de ondas milimétricas
  • sistema global de navegación por satélite gnss
  • Acelerómetro imu
  • Sensor de obstáculos (carla)
  • Sensor de intrusión de línea de carril (carla)

Además, carla también proporciona muchos otros sensores. Para obtener más información, consulte el documento oficial: Sensores y datos.

La Sección 4 presentará en detalle cómo usar rviz para ver la información del sensor.

4. Interactuar con carla a través de ros

La cuarta sección explica cómo suscribirse a los mensajes de los sensores a través de ros y publicar mensajes de ros para controlar el acelerador, el freno, la dirección, etc. del vehículo.

4.1 Deja que el auto se mueva publicando mensajes ros

Use el siguiente comando en la terminal para realizar el movimiento lineal del vehículo.

    rostopic pub /carla/ego_vehicle/vehicle_control_cmd carla_msgs/CarlaEgoVehicleControl "{throttle: 1.0, steer: 1.0}" -r 10

Una operación más simple es usar rqt para enviar mensajes ros visualmente e ingresar en la terminal

rqt

Seleccione Complementos->Temas->Message Publisher para abrir la interfaz de publicación de mensajes.
inserte la descripción de la imagen aquí
Seleccione Tema /carla/ego_vehicle/vehicle_control_cmd, seleccione Tipo carla_msgs/CarlaEgoVehicleControl
y haga clic en el signo más:
inserte la descripción de la imagen aquí
expanda el mensaje a continuación y cambie el valor de expresión. Cambie el acelerador a 1 y luego marque el cuadro derecho a la izquierda No.
inserte la descripción de la imagen aquí
Entonces encontrará que el automóvil comienza a moverse por sí mismo.

4.2 Ver datos del sensor a través de rviz

Para ver la información del sensor convenientemente, usamos rviz para visualizar Aquí hay una configuración de rviz configurada: encuentre
el código base de gitte y luego use el siguiente comando para abrir rviz:
rviz_carla_sensor.rviz

rosrun  rviz  rviz  -d  rviz_carla_sensor.rviz

Puede ver la siguiente interfaz:
inserte la descripción de la imagen aquí

5 misiones desafiantes

Al suscribirse a la información de posición global del vehículo, se realiza la conducción completa de principio a fin.

Posicionamiento: Suscribiéndose a la información de posición global de los vehículos.
Percepción: Detección de línea de carril (usando algoritmo de código abierto).
Planificación: Planificación de ruta global + planificación de ruta local (usando algoritmo de código abierto).

La información de posicionamiento y percepción se obtiene directamente a través de carla_ros_bridge, y las instrucciones de planificación se emiten a través de carla_ros_bridge.

Puede consultar [Tutorial de introducción de carla]-6 para obtener la creación de la escena del juego.

Link de referencia

Instalación del puente ROS para ROS 1
Notas del puente ROS (01) - introducción, instalación apt, compilación e instalación del código fuente, dependencias de instalación, visualización en ejecución

manejo de excepciones

Problema 1. La pantalla está muy negra después de abrir el script de conducción manual

Si la pantalla después de abrirla está muy oscura, significa que hay un problema con los parámetros de exposición de la cámara.
inserte la descripción de la imagen aquí
La solución es ajustar los parámetros de exposición de la cámara. El método específico es:

sudo gedit /opt/carla-ros-bridge/melodic/share/carla_ego_vehicle/config/sensors.json

Modificar los parámetros de la cámara:

"iso":200 

Cambiar a:

"iso":3000

Hay dos cosas que deben modificarse, "id": "front",y "id": "view",los parámetros de ambas cámaras deben modificarse.

Si no es lo suficientemente brillante, puede aumentar aún más el iso.
inserte la descripción de la imagen aquí

おすすめ

転載: blog.csdn.net/condom10010/article/details/127663710