Directorio de artículos
Prefacio
Descripción del entorno:
este proceso utiliza Ubuntu18.04 + ROS Melodic + Gazebo + yolo3
1. Preparación preliminar
(1) Cree un espacio de trabajo
-
Crear área de trabajo ros
mkdir -p ~/robot_positioning_ws/src
-
Cambiar al directorio del área de trabajo
cd ~/robot_positioning_ws/src
-
Inicializar el espacio de trabajo de ROS
catkin_init_workspace
(Dos) paquete de funciones de coche de carreras
-
Descarga Gazebo para construir una pista
git clone https://github.com/xmy0916/racecar.git
-
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
-
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 names
soluciónsudo apt-get install ros-melodic-driver-base
②
Could not find a package configuration file provided by "OpenCV" with any of the following names
Soluciónlocalizar 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/)
③ackermann_msgs/AckermannDrive.h: No such file or directory
Soluciónsudo apt-get install ros-melodic-ackermann-msgs
Compilado exitosamente
2. Gazebo crea su propio entorno virtual
(1) Configuraciones relacionadas
- Establecer variables de entorno
echo "source ~/robot_positioning_ws/devel/setup.bash" >> ~/.bashrc source ~/.bashrc
(2) Ejecutar el modelo de automóvil
- Ejecute la declaración
roslaunch racecar_gazebo racecar.launch
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
(3) Construya manualmente el medio ambiente
-
Gazebo abierto
roslaunch gazebo_ros empty_world.launch
-
Haga clic en Editar-> Editor de compilación, cree un modelo y guarde el modelo
-
Importe el marco del modelo de pista que acaba de crear para
ejecutar el modelo de automóvilroslaunch racecar_gazebo racecar.launch
Importe y cree el modelo de entorno
inserte-> seleccione el modelo guardado correspondiente,
agregue obstáculos y
guárdelo como un archivo mundial
(4) Entorno de funcionamiento y creación
- Cree un archivo de lanzamiento y configure los parámetros de la pista
lyy.launch contenidocd ~/robot_positioning_ws/src/racecar/racecar_gazebo/launch sudo gedit lyy.launch
<?xml version="1.0"?> <launch> <!-- Launch the racecar --> <include file="$(find racecar_gazebo)/launch/racecar.launch"> <arg name="world_name" value="lyy"/> </include> </launch>
- Ejecutar mirador
Se muestra de la siguiente maneraroslaunch racecar_gazebo lyy.launch
Tres, realizar mapeo de gmapping
-
mapeo de gmapping
roslaunch racecar_gazebo slam_gmapping.launch
Descripción del problema:
ERROR: cannot launch node of type [gmapping/slam_gmapping]: gmapping
soluciónsudo apt-get install ros-melodic-gmapping
-
Ejecute un círculo completo (a través de la ventana de control de kt)
el punto de inicio del
carro, el punto final del carro se
muestra en Rviz
-
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
En cuarto lugar, el posicionamiento y la navegación autónomos del automóvil.
(1) El entorno creado por mí
-
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>
-
Ejecute el entorno creado
roslaunch racecar_gazebo lyy_auto.launch
-
Iniciar rviz
roslaunch racecar_gazebo racecar_rviz.launch
-
Diseñe la trayectoria del automóvil.
Utilice 2D Nav Goal para publicar el objetivo.
Descripción del problema:使用2D Nav Goal发布目标时,始终没有反应
Soluciónsudo 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
-
Inicie el archivo de secuencia de comandos path_pursuit.py
rosrun racecar_gazebo path_pursuit.py
La situación real no está
clara temporalmente qué la causó.
(2) El entorno está incluido en el paquete de funciones descargado
-
Entorno operativo
roslaunch racecar_gazebo racecar_runway_navigation.launch
-
Iniciar rviz
roslaunch racecar_gazebo racecar_rviz.launch
-
Diseñe la trayectoria del automóvil y
use 2D Nav Goal para publicar la posición del objetivo -
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)
Cinco, use YOLO para detectar e identificar objetos marcados
(1) Cargar YOLO
-
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.
-
Descarga darknet-ros
cd ~/robot_positioning_ws/src git clone --recursive [email protected]:leggedrobotics/darknet_ros.git
-
Compilar
cd ~/robot_positioning_ws catkin_make -DCMAKE_BUILD_TYPE=Release
说明:
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
-
Gazebo abierto
roslaunch racecar_gazebo racecar_runway_navigation.launch
-
Abra el archivo racecar.gazebo para ver los temas.
-
Modificar el tema suscrito en el archivo ros.yaml Archivo
original Archivo
modificado
-
Inicie YOLO V3
roslaunch darknet_ros darknet_ros.launch
Este proceso es muy fácil de atascarse, por lo que debe intentarlo varias veces.
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
- 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]
- Realice la simulación de navegación y posicionamiento inteligente de automóviles ROS en Ubuntu 18.04
- Implementación de detección de darknet_ros (YOLO V3) bajo ROS
- Desarrollo de aplicaciones de sistemas integrados y simulación de navegación y posicionamiento de robots de gran trabajo-ROS