Gazebo construyó un entorno virtual para completar la simulación de navegación y posicionamiento del robot ROS y la detección e identificación YOLO de objetos marcados


Prefacio

Descripción del entorno:
este proceso utiliza Ubuntu18.04 + ROS Melodic + Gazebo + yolo3


1. Preparación preliminar

(1) Cree un espacio de trabajo

  1. Crear área de trabajo ros

    mkdir -p ~/robot_positioning_ws/src
    
  2. Cambiar al directorio del área de trabajo

    cd ~/robot_positioning_ws/src
    
  3. Inicializar el espacio de trabajo de ROS

    catkin_init_workspace
    

(Dos) paquete de funciones de coche de carreras

  1. Descarga Gazebo para construir una pista

    git clone https://github.com/xmy0916/racecar.git
    

    Inserte la descripción de la imagen aquí

  2. Instalar controladores relacionados

    sudo apt-get install ros-melodic-controller-manager
    sudo apt-get install ros-melodic-gazebo-ros-control
    sudo apt-get install ros-melodic-effort-controllers
    sudo apt-get install ros-melodic-joint-state-controller
    
  3. Compilación del paquete de características del coche de carreras

    cd ..
    catkin_make
    

    Problemas encontrados al compilar
    Could not find a package configuration file provided by "driver_base" with any of the following namesInserte la descripción de la imagen aquí
    solución

    sudo apt-get install ros-melodic-driver-base
    

    Could not find a package configuration file provided by "OpenCV" with any of the following names
    Inserte la descripción de la imagen aquí
    Solución

    localizar OpenCVConfig.c hacer
    sudo gedit ~ / robot_positioning_ws / src / racecar_gazebo / CMakeLists.txt
    modificar la ruta en la línea 7 a su ruta: establecer (OpenCV_DIR /opt/ros/kinetic/share/OpenCV-3.3.1-dev/)

    Inserte la descripción de la imagen aquí
    ackermann_msgs/AckermannDrive.h: No such file or directory
    Inserte la descripción de la imagen aquí
    Solución

    sudo apt-get install ros-melodic-ackermann-msgs
    

    Compilado exitosamente
    Inserte la descripción de la imagen aquí

2. Gazebo crea su propio entorno virtual

(1) Configuraciones relacionadas

  1. Establecer variables de entorno
    echo "source ~/robot_positioning_ws/devel/setup.bash" >> ~/.bashrc
    source ~/.bashrc
    

(2) Ejecutar el modelo de automóvil

  1. Ejecute la declaración
    roslaunch racecar_gazebo racecar.launch 
    

  2. Descripción del efecto de operación : La pequeña ventana de la interfaz de control de tk controla el movimiento del automóvil, W significa hacia adelante, D significa girar a la izquierda, S significa hacia atrás, A significa girar a la derecha
    Inserte la descripción de la imagen aquí

(3) Construya manualmente el medio ambiente

  1. Gazebo abierto

    roslaunch gazebo_ros empty_world.launch
    
  2. Haga clic en Editar-> Editor de compilación, cree un modelo y guarde el modelo
    Inserte la descripción de la imagen aquí

  3. Importe el marco del modelo de pista que acaba de crear para
    ejecutar el modelo de automóvil

    roslaunch racecar_gazebo racecar.launch 
    

    Importe y cree el modelo de entorno
    inserte-> seleccione el modelo guardado correspondiente,
    Inserte la descripción de la imagen aquí
    agregue obstáculos y
    Inserte la descripción de la imagen aquí
    guárdelo como un archivo mundial
    Inserte la descripción de la imagen aquí

(4) Entorno de funcionamiento y creación

  1. Cree un archivo de lanzamiento y configure los parámetros de la pista
    cd ~/robot_positioning_ws/src/racecar/racecar_gazebo/launch
    sudo gedit lyy.launch
    
    lyy.launch contenido
    <?xml version="1.0"?>
    <launch>
      <!-- Launch the racecar -->
      <include file="$(find racecar_gazebo)/launch/racecar.launch">
        <arg name="world_name" value="lyy"/>
      </include>
    </launch>
    
  2. Ejecutar mirador
    roslaunch racecar_gazebo lyy.launch 
    
    Se muestra de la siguiente manera
    Inserte la descripción de la imagen aquí

Tres, realizar mapeo de gmapping

  1. mapeo de gmapping

    roslaunch racecar_gazebo slam_gmapping.launch
    

    Descripción del problema: ERROR: cannot launch node of type [gmapping/slam_gmapping]: gmapping
    Inserte la descripción de la imagen aquí
    solución

    sudo apt-get install ros-melodic-gmapping
    
  2. Ejecute un círculo completo (a través de la ventana de control de kt)
    el punto de inicio del
    Inserte la descripción de la imagen aquí
    carro, el punto final del carro se
    Inserte la descripción de la imagen aquí
    muestra en Rviz
    Inserte la descripción de la imagen aquí

  3. Guarde el mapa creado por gmapping

    sudo apt-get install ros-melodic-map-server
    cd ~/robot_positioning_ws/src/racecar/racecar_gazebo/map
    rosrun map_server map_saver -f lyy_map
    

    Inserte la descripción de la imagen aquí

En cuarto lugar, el posicionamiento y la navegación autónomos del automóvil.

(1) El entorno creado por mí

  1. Editando el archivo de lanzamiento

    cd ~/robot_positioning_ws/src/racecar/racecar_gazebo/launch
    sudo gedit lyy_auto.launch
    

    lyy_auto.launch contenido del archivo

    <?xml version="1.0"?>
    <launch>
      <!-- Launch the racecar -->
      <include file="$(find racecar_gazebo)/launch/racecar.launch">
        <arg name="world_name" value="lyy"/>
      </include>
      
      <!-- Launch the built-map -->
      <node name="map_server" pkg="map_server" type="map_server" args="$(find racecar_gazebo)/map/lyy_map.yaml" />
    
      <!--Launch the move base with time elastic band-->
      <param name="/use_sim_time" value="true"/>
      <node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">
        <rosparam file="$(find racecar_gazebo)/config/costmap_common_params.yaml" command="load" ns="global_costmap" />
        <rosparam file="$(find racecar_gazebo)/config/costmap_common_params.yaml" command="load" ns="local_costmap" />
        <rosparam file="$(find racecar_gazebo)/config/local_costmap_params.yaml" command="load" />
        <rosparam file="$(find racecar_gazebo)/config/global_costmap_params.yaml" command="load" />
        <rosparam file="$(find racecar_gazebo)/config/teb_local_planner_params.yaml" command="load" />
    
        <param name="base_global_planner" value="global_planner/GlobalPlanner" />
        <param name="planner_frequency" value="0.01" />
        <param name="planner_patience" value="5.0" />
        <!--param name="use_dijkstra" value="false" /-->
        
        <param name="base_local_planner" value="teb_local_planner/TebLocalPlannerROS" />
        <param name="controller_frequency" value="5.0" />
        <param name="controller_patience" value="15.0" />
    
        <param name="clearing_rotation_allowed" value="false" />
      </node>
      
    </launch>
    

    Inserte la descripción de la imagen aquí

  2. Ejecute el entorno creado

    roslaunch racecar_gazebo lyy_auto.launch
    
  3. Iniciar rviz

    roslaunch racecar_gazebo racecar_rviz.launch
    

    Inserte la descripción de la imagen aquí

  4. Diseñe la trayectoria del automóvil.
    Utilice 2D Nav Goal para publicar el objetivo.
    Inserte la descripción de la imagen aquí
    Descripción del problema: 使用2D Nav Goal发布目标时,始终没有反应
    Solución

    sudo apt-get install ros-melodic-teb-local-planner
    

    Dado que no hay una pared que separe el punto inicial y el punto final, ahora mueva el punto final al lado opuesto

  5. Inicie el archivo de secuencia de comandos path_pursuit.py

    rosrun racecar_gazebo path_pursuit.py
    

    La situación real no está
    Inserte la descripción de la imagen aquí
    clara temporalmente qué la causó.

(2) El entorno está incluido en el paquete de funciones descargado

  1. Entorno operativo

    roslaunch racecar_gazebo racecar_runway_navigation.launch 	
    
  2. Iniciar rviz

    roslaunch racecar_gazebo racecar_rviz.launch
    
  3. Diseñe la trayectoria del automóvil y
    use 2D Nav Goal para publicar la posición del objetivo

  4. Inicie el archivo de secuencia de comandos path_pursuit.py

    rosrun racecar_gazebo path_pursuit.py
    

    Resultados de la ejecución (parte del proceso de movimiento)
    Inserte la descripción de la imagen aquí

Cinco, use YOLO para detectar e identificar objetos marcados

(1) Cargar YOLO

  1. configuración de ssh

    ssh-keygen ##输入之后根据提示输入两次回车,两次密码
    ls ~/.ssh
    eval `ssh-agent`
    ssh-add ~/.ssh/id_rsa
    cat ~/.ssh/id_rsa.pub #得到一串密匙
    

    Inicie sesión en GitHub, seleccione la configuración, las claves ssh y GPG en la opción desplegable de la cuenta, seleccione la nueva clave ssh, ingrese el nombre Clave pública predeterminada y luego copie la clave obtenida en el cuadro de texto, y luego haga clic en agregar clave ssh, la configuración de la clave está completa.

  2. Descarga darknet-ros

    cd ~/robot_positioning_ws/src
    git clone --recursive [email protected]:leggedrobotics/darknet_ros.git
    
  3. Compilar

    cd ~/robot_positioning_ws
    catkin_make -DCMAKE_BUILD_TYPE=Release
    

    Inserte la descripción de la imagen aquí
    说明:
    Comience a compilar todo el proyecto. Una vez completada la compilación, se comprobará si hay dos archivos de modelo, yolov2-tiny.weights y yolov3.weights, en el archivo ./darknet_ros/darknet_ros/yolo_network_config/weights. De forma predeterminada, el código descargado no lo incluye para ahorrar volumen Dos archivos de modelo. Por lo tanto, el archivo del modelo se descargará automáticamente después de la compilación y habrá un largo tiempo de espera en este momento. Antes de comenzar a compilar, puede descargarlo con anticipación, copiar el archivo del modelo en la carpeta anterior y no se volverá a descargar.

(2) Darse cuenta de la detección de objetos marcados

  1. Gazebo abierto

    roslaunch racecar_gazebo racecar_runway_navigation.launch
    
  2. Abra el archivo racecar.gazebo para ver los temas.
    Inserte la descripción de la imagen aquí

  3. Modificar el tema suscrito en el archivo ros.yaml Archivo
    original Archivo
    Inserte la descripción de la imagen aquí
    modificado
    Inserte la descripción de la imagen aquí

  4. Inicie YOLO V3

    roslaunch darknet_ros darknet_ros.launch
    

    Este proceso es muy fácil de atascarse, por lo que debe intentarlo varias veces.
    Inserte la descripción de la imagen aquí
    Al final, el resultado del reconocimiento no es muy preciso, la posible razón es que la cámara no captura todos los objetos, y algunos de ellos son reconocidos como otros objetos. Este proceso tomó mucho tiempo y era demasiado fácil quedarse atascado. Se necesita más paciencia para lograr el efecto final. Cuando construya el entorno usted mismo, debe prestar atención a lo que separa el punto de partida y el punto final. Cuando no planifique el camino más adelante, no se dibujará.


Conexión de referencia

  1. Bajo Ubuntu 18.04, use Gazebo para construir una pista para completar la simulación de navegación y posicionamiento del robot ROS + cargue YOLO para detectar e identificar objetos marcados [coche inteligente]
  2. Realice la simulación de navegación y posicionamiento inteligente de automóviles ROS en Ubuntu 18.04
  3. Implementación de detección de darknet_ros (YOLO V3) bajo ROS
  4. Desarrollo de aplicaciones de sistemas integrados y simulación de navegación y posicionamiento de robots de gran trabajo-ROS

Supongo que te gusta

Origin blog.csdn.net/qq_43279579/article/details/115262778
Recomendado
Clasificación