(6) La conexión entre ROS y STM32

Introducción

1. Cómo realizar la comunicación entre ROS y stm32, y qué procesamiento hace ROS a los datos enviados por stm32

2. Hay dos controladores centrales en el automóvil ROS, uno es el controlador principal ROS y el otro es el controlador stm32

3. El maestro ROS es Raspberry Pi, etc. Siempre que el sistema ROS se pueda ejecutar en ROS, se puede utilizar como maestro ROS

4. Las principales funciones implementadas por el control maestro ROS son las siguientes:

  • Recopilar información de radar
  • Recopilación de información de la cámara
  • Planificacion de la ruta
  • ① Por ejemplo, se necesita lidar para la navegación de construcción de mapas, y se necesitan cámaras para la vigilancia de la visión del color y el seguimiento de parches de color.
    ② La conclusión final es que el sistema ROS puede planificar automáticamente la ruta de acuerdo con el entorno externo y la ubicación del objetivo.

5. Las principales funciones implementadas por el controlador STM32 son las siguientes:

  • Recopilar información sobre el kilometraje (velocidad)
  • Recopile información del giroscopio (acelerómetro de tres ejes e información de velocidad angular)
  • Control de motor (control de movimiento del chasis)

La relación entre los dos

.1, el maestro ROS stm32 es responsable de recibir los datos enviados desde el sensor
2, la velocidad objetivo del chasis principal ROS STM32 que recibe el
3 devuelto , debe realizarse una transmisión de datos bidireccional ROS entre el controlador maestro y el STM32
4, involucrará dos Problema de comunicación entre controladores

Comunicación entre los dos

1. Conexión de hardware
1. Conecte con un cable USB
2. Se requiere un convertidor lógico CP2102 entre los dos (equivalente a un traductor para la comunicación entre personas en dos países diferentes)

2. Configuración del software
1. Cambie la serie del chip cp2102:
① Generalmente se utilizan dos de estos chips

  • Uno para la comunicación entre ROS y STM32 (0002)
  • El otro se utiliza para la comunicación maestra LIDAR y ROS (0001)

2. Pasos para cambiar la serie del chip cp2102

  • ①Abra el software cb21xx para cambiar el serial
  • ② Conecte el cable usb a un puerto usb del chip cp2102, y conecte el otro lado a nuestra computadora
  • ③ Actualizar y luego cambiar

3. Crea un alias de dispositivo

  • ¿Por qué necesito alias de dispositivo?: Al ejecutar un programa ros, debe proporcionar un número de puerto (generalmente ttyUSBx), el nombre del puerto correspondiente será diferente cada vez que el dispositivo se conecte o desconecte, por lo que se necesita un alias de dispositivo para fijar el número de puerto.
  • Hay pasos fijos

¿Cómo recibe ROS los datos enviados por stm32 a nivel de código?

1. El marco general

1. Constructor: se ejecuta cada vez que se crea un nuevo objeto.
2. Función principal: la función principal a ejecutar

  • Get_Sensor_Data (): Obtiene datos stm32
  • Quaternion_Solution (): calcula cuatro elementos
  • Publish_Odom (): Publicar tema de odom
  • Publicar —— ImuSensor (): publicar tema de imu
  • Publish_Voltage (): Publicar tema de voltaje

3. Función de destructor: se ejecuta cada vez que se elimina el objeto creado.
4. Función funcional: reduce la repetición del código.
5. Función de devolución de llamada: suscríbase al tema de velocidad objetivo del robot y envíe la velocidad objetivo del robot a stm32 a través del puerto serie.
Inserte la descripción de la imagen aquí

2. Chasis de robot

Equivalente a la estructura, pero los miembros son funciones
Inserte la descripción de la imagen aquí

3. Constructor

1. Es equivalente a la función de inicialización. Cuando el programa se ejecuta en su totalidad, primeroinicialización Variables , servidores de parámetros , editores , suscriptores , puertos serie, etc.
2. Se inicializa mediante la función principal que llama automáticamente al destructor.
Inserte la descripción de la imagen aquí

4. Función principal

1. ros :: init (): la función es registrar un nodo
con rosmaster 2. ROS_INFO (): imprimir información
3. tuen_on_robot Robot_Control: usar esta clase para registrar el objeto robot_control
4. control (): como algunos temas de publicación y suscribir temas Se ejecuta cíclicamente en esta función
Inserte la descripción de la imagen aquí

5. Función de bucle

Inserte la descripción de la imagen aquí

6, destructor

Cuando presiona Ctrl + c o sale de este nodo inesperadamente, ejecutará una función
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/m0_46278925/article/details/115008464
Recomendado
Clasificación