La configuración básica de la plataforma de simulación de drones basada en ROS y PX4 bajo Ubuntu 18.04
Materiales de referencia:
https://www.yuque.com/xtdrone/manual_cn/basic_config_1.11
https://blog.csdn.net/qq_42585108/article/details/106781596
https://blog.csdn.net/qq_44830040/article / details / 106049992
https://blog.csdn.net/abc869788668/article/details/78323395?locationNum=8&fps=1
El proyecto XTDrone de Xiao Kun se utilizó para la construcción de la plataforma de simulación de UAV. Muchas gracias. La página web relacionada: https://gitee.com/robin_shaun/XTDrone. Aquí solo tengo un resumen de la construcción de la plataforma de simulación de UAV.
Este artículo es solo un resumen y una experiencia de instalación personal basada en estos artículos. Puede haber muchas citas en el medio. Si constituye una infracción, comuníquese conmigo para eliminarlo.
Sistema Ubuntu18.04, comencé a instalar desde un Ubuntu recién instalado, paso a paso, e integré algunos métodos de construcción de red y problemas encontrados en él, y los registré para su referencia. Si hay algún error, corrígeme.
Una instalación dependiente
1 、
sudo apt install -y \
ninja-build \
exiftool \
python-argparse \
python-empy \
python-toml \
python-numpy \
python-yaml \
python-dev \
python-pip \
ninja-build \
protobuf-compiler \
libeigen3-dev \
genromfs \
xmlstarlet \
libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev
2 、
pip install \
pandas \
jinja2 \
pyserial \
cerberus \
pyulog \
numpy \
toml \
pyquaternion
Si se produce el siguiente error, puede actualizar setuptools y pip primero
Collecting pandas
Using cached https://files.pythonhosted.org/packages/64/f1/8fdbd74edfc31625d597717be8c155c6226fc72a7c954c52583ab81a8614/pandas-1.1.2.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-build-qtvsjq8t/pandas/setup.py", line 349
f"{extension}-source file '{sourcefile}' not found.\n"
^
SyntaxError: invalid syntax
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-qtvsjq8t/pandas/
pip install --upgrade setuptools
#若未报错不需要输入这两行命令
python -m pip install --upgrade pip
Dos, instalación ROS
Para la instalación,
consulte el sitio web oficial de ROS: http://wiki.ros.org/Installation/Ubuntu o consulte el tutorial: https://blog.csdn.net/qq_44830040/article/details/106049992 (este tutorial es una instalación de fuente doméstica, Aunque se puede usar ros, puede haber problemas al usarlo con otros como darknet_ros. Aunque la descarga desde fuentes domésticas será mucho más rápida, aún se recomienda descargar desde el sitio web oficial)
Nota: Ubuntu 18.04 se puede instalar directamente (es decir, el comando sudo apt-get install ros-melodic-desktop, es decir, para ROS Melodic, elija la instalación completa de escritorio, que instalará Gazebo9 y las bibliotecas relacionadas con la percepción al mismo tiempo), pero personalmente recomiendo 18.04 La instalación de gazebo9.0 directamente tiene defectos y pueden ocurrir problemas más adelante. Se recomienda instalar el escritorio y luego instalar gazebo9.13 o superior
Ubuntu16.04 (ROS Kinetic) en los siguientes pasos. Seleccione Destop o instalar. Gazebo7 no puede realizar simulaciones posteriores.
Aquí también está la instalación de ROS (tomando melódico como ejemplo):
1. Configure el repositorio de Ubuntu
. Haga clic en el código fuente en el software y actualice.
2. Configure sources.list. Los
siguientes son Tsinghua Mirror, Zhongke University Mirror y la opción predeterminada oficial. Sin embargo, personalmente recomiendo el mirror doméstico, la descarga será mucho más rápida
Espejo Tsinghua:
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
Espejo de la Universidad de Ciencia y Tecnología de China:
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
El valor predeterminado oficial:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
3. Establecer la clave
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
4. Instalación
sudo apt update
sudo apt install ros-melodic-desktop
Si instala ROS normalmente, puede sudo apt install ros-melodic-desktop-full, aquí estoy sudo apt install ros-melodic-desktop, la razón se ha mencionado antes
5. Establecer el entorno
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
6. Construir dependencias
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
sudo apt install python-rosdep
sudo rosdep init
Si se produce un error:
ERROR: no se puede descargar la lista de fuentes predeterminada desde:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list El
sitio web puede estar inactivo.
Ejecute el siguiente comando :
cd /etc
sudo gedit hosts
Agregue al final: 151.11.84.133 raw.githubusercontent.com y luego guarde el archivo y salga.
Si ocurre un error: ERROR: el archivo de lista de fuentes predeterminado ya existe:
/etc/ros/rosdep/sources.list.d/20-default.list
Elimine si desea reinicializar la
solución, ejecute el siguiente comando:
sudo rm /etc/ros/rosdep/sources.list.d/20-default.list
Luego ejecuta de nuevosudo rosdep init
7. Realice la actualización de rosdep
rosdep update
Si se produce el siguiente error:
ERROR: error al cargar la lista de fuentes:
('La operación de lectura agotó el tiempo de espera',)
probablemente sea un problema de red, simplemente ejecute el comando de actualización rosdep repetidamente
Inicie ROS después de la instalación:
roscore
El siguiente resultado indica que la instalación se realizó correctamente:
... logging to /home/robin/.ros/log/a5118af0-5474-11ea-8b86-e454e828c524/r
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://robin-G3-3590:34223/
ros_comm version 1.12.14
SUMMARY
========
PARAMETERS
* /rosdistro: kinetic
* /rosversion: 1.12.14
NODES
auto-starting new master
process[master]: started with pid [30244]
ROS_MASTER_URI=http://robin-G3-3590:11311/
setting /run_id to a5118af0-5474-11ea-8b86-e454e828c524
process[rosout-1]: started with pid [30261]
started core service [/rosout]
Para crear un nuevo espacio de trabajo, se recomienda utilizar catkin-tools para administrar el espacio de trabajo. Después de eso, excepto para el inicio del entorno de simulación PX4, los proyectos restantes relacionados con ROS se administran en este espacio de trabajo.
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_make
source devel/setup.bash
Tres, instalación de Gazebo
Ya sea ros Kinetic o Melodic, el Gazebo incorporado tiene defectos.Si se instaló un gazebo cuando se instaló ros, se recomienda desinstalarlo y reinstalarlo. Se recomienda que la versión de gazebo sea superior a 9.13.
Consulte el sitio web oficial para la instalación de Gazebo:
http://gazebosim.org/tutorials?tut=install_ubuntu&cat=install
Nota:
1. Elija la instalación alternativa: instalación paso a paso
2. Instale Gazebo9.13 O arriba
La instalación de la glorieta también se enumera aquí para mayor comodidad.
1. Configure su computadora para aceptar software de package.osrfoundation.org
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
cat /etc/apt/sources.list.d/gazebo-stable.list
#如果出现deb http://packages.osrfoundation.org/gazebo/ubuntu-stable xenial main表示没问题
2. Establecer la clave
wget https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
sudo apt-get update
3. Instale las instrucciones de gazebo9.1:
sudo apt-get install gazebo9=9.1*
Después de la instalación, entrada de terminal, gazebo
si se abre Gazebo, la instalación es exitosa
4.Gazebo en sí es independiente de ROS, por lo que también necesita instalar el complemento Gazebo para ROS
sudo apt install ros-melodic-gazebo9-*
sudo apt install ros-melodic-gazebo-*
prueba
roscore
rosrun gazebo_ros gazebo
Si se puede abrir Gazebo, el complemento entre Gazebo y ROS también se ha instalado correctamente. También puede verificar la versión de mirador
escribiendogazebo --version
Cuatro, instalación MAVROS
sudo apt install ros-melodic-mavros ros-melodic-mavros-extras
roscd mavros
sudo wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
sudo chmod a+x ./install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh
El sudo final ./install_geographiclib_datasets.sh Este paso tarda un poco en instalarse, tenga paciencia
Cinco, configuración PX4 (versión 1.11)
git clone https://github.com/PX4/Firmware
mv Firmware PX4_Firmware
cd PX4_Firmware
git checkout -b xtdrone/dev v1.11.0-beta1
git submodule update --init --recursive
Dado que descargar el código fuente y actualizar el submódulo es demasiado lento, he proporcionado el enlace PX4_Firmware descargado y actualizado aquí. Después de descargarlo, descomprímelo y extráelo en el directorio principal: https://download.csdn.net/download/qq_45067735/12713464
Instale las dependencias de Python necesarias:
cd ~/PX4_Firmware
bash
bash ./Tools/setup/ubuntu.sh --no-nuttx --no-sim-tools
Compilar
make px4_sitl_default gazebo
Si el error de compilación solicita la instrucción ignition :: math :: Matrix4 xformV (vq); en PX4_Firmware / Tools / sitl_gazebo / src / gazebo_usv_dynamics_plugin.cpp; en la instrucción, xformV no definió el tipo antes,
modifíquelo a ignition :: math :: Matrix4 xformV ( vq); Recompilar después de guardar.
Modifique ~ / .bashrc en PX4_Firmware, agregue el siguiente código, preste atención a la coincidencia de ruta
source ~/PX4_Firmware/Tools/setup_gazebo.bash ~/PX4_Firmware/ ~/PX4_Firmware/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware/Tools/sitl_gazebo
Luego ejecute el siguiente comando, Gazebo se iniciará en este momento, como se muestra en la figura a continuación.
cd ~/PX4_Firmware
roslaunch px4 mavros_posix_sitl.launch
Y correr
rostopic echo /mavros/state
Si está conectado: Verdadero, significa que MAVROS y SITL se comunican correctamente.
---
header:
seq: 11
stamp:
secs: 1827
nsecs: 173000000
frame_id: ''
connected: True
armed: False
guided: False
manual_input: True
mode: "MANUAL"
system_status: 3
---
Nota:
1. Se recomienda descargar científicamente en línea. La velocidad de descarga en GitHub es relativamente lenta y puede fallar. También intenté modificar la red y el efecto es casi nulo. Se recomienda poner el código fuente de PX4 en GitHub en gitee antes de clonar git. Utilice la nube de código usted mismo. buscar.
Si descarga el código en la nube de código, la descarga de GitHub en el submódulo de actualización (git submodule update --init --recursive) también es muy lenta. Parece que es necesario modificar el submódulo, pero todavía no sé cómo operar , Si hay un gran dios que quiera dar alguna orientación.
2. El proceso de make px4_sitl_default gazebo puede probar la memoria de la computadora. Varias veces en mi computadora, la CPU está funcionando al 100%, y la
situación puede ser la siguiente:
Puede intentar aumentar el espacio de intercambio temporal primero y luego ejecutar el comando make px4_sitl_default gazebo, o ejecutar directamente el comando make px4_sitl_default gazebo nuevamente, que puede requerir varias ejecuciones.
#注释:of=/home/swap,放置swap的空间; count的大小就是增加的swap空间的大小,64M就是块大小,这里是64MB,所以总共空间就是bs*count=1024MB.这里分配空间的时候需要一点时间,等待执行完毕。
sudo dd if=/dev/zero of=/home/swap bs=64M count=16
#注释:把刚才空间格式化成swap各式
sudo mkswap /home/swap (可能会提示warning: don't erase bootbits sectorson whole disk. Use -f to force,不用理会)
#注释:使刚才创建的swap空间
sudo swapon /home/swap
3. El siguiente error puede ocurrir cuando se ejecuta el último comando (make px4_sitl_default gazebo):
Solución:
sudo apt-get install libgstreamer-plugins-base1.0-dev
4. Las siguientes condiciones pueden ocurrir durante el funcionamiento:
estos errores y advertencias no afectan el uso y pueden ignorarse.
5. El proceso es lento cuando se ejecuta por primera vez. Gazebo puede tener una pantalla negra por un tiempo. De hecho, esto se está inicializando. Espere pacientemente, ya que será el caso más adelante.
6. Se recomienda modificar el archivo ./bashrc directamente en el directorio principal, usar control + h para ver los archivos ocultos, copiar las tres líneas de arriba directamente a la parte inferior e ingresar para source ~/.bashrc
reiniciar barshc, para que se haga de una vez por todas, pero después de la modificación, abra el comando cada vez La línea aparecerá recién agregada
6. Instalación de la estación terrestre QGC (opcional)
Enlace de instalación: https://docs.qgroundcontrol.com/en/getting_started/download_and_install.html Después del
inicio, aparecerá la pantalla que se muestra a continuación. Tenga en cuenta que Ubuntu16.04 no puede usar directamente la serie QGroundcontrol versión 4 (se puede usar la serie 3). Ubuntu16.04 requiere la compilación del código fuente de la serie 4. Por favor revise el enlace de instalación cuidadosamente.
Seven, descarga de la fuente XTDrone
git clone https://gitee.com/robin_shaun/XTDrone.git
cd XTDrone
cp sitl_config/init.d-posix/rcS ~/PX4_Firmware/ROMFS/px4fmu_common/init.d-posix/
cp sitl_config/worlds/* ~/PX4_Firmware/Tools/sitl_gazebo/worlds/
cp -r sitl_config/models/* ~/PX4_Firmware/Tools/sitl_gazebo/models
cp -r sitl_config/models/* ~/.gazebo/models/
cp sitl_config/launch/* ~/PX4_Firmware/launch/
#如果之前没有catkin_ws,需要建立一下,之后的教程会用到
mkdir -p ~/catkin_ws/src
mkdir -p ~/catkin_ws/scripts
Nota: cp -r sitl_config / models / * ~ / .gazebo / models / Este paso puede tener la siguiente situación:
puede dejarlo solo por ahora, continuar con los siguientes pasos y volver a intentarlo después de la compilación, o puede ir al correspondiente manualmente Cree una carpeta y luego opere
8. Usa el teclado para controlar el vuelo del dron
Ejecutar en una terminal
cd ~/PX4_Firmware
roslaunch px4 indoor1.launch
Al ejecutar roslaunch px4 indoor1.launch por primera vez, la glorieta puede tardar un poco en cargarse, tenga paciencia
Después de iniciar Gazebo, ejecútelo en otra terminal
cd ~/XTDrone/communication/
python multirotor_communication.py iris 0
Después de establecer comunicación con iris 0, ejecute en otro terminal
cd ~/XTDrone/control/
python multirotor_keyboard_control.py iris 1 vel
Después del éxito, como se muestra en la figura,
puede controlar el desbloqueo / bloqueo de un iris a través del teclado, modificar el modo de vuelo, la velocidad del avión, etc. Utilice el modo de vuelo de despegue para despegar con t, y los parámetros relevantes (velocidad de despegue, altitud) deben configurarse en rcS. Generalmente, el modo fuera de borda se puede utilizar para despegar y la velocidad de despegue debe ser superior a 0,3 m / s para despegar. (Método de despegue: primero presione la tecla t para desbloquear, luego presione la tecla i para hacer que la velocidad ascendente sea mayor o igual a 0.3. En este momento, puede ver el rotor girando hacia arriba, y finalmente presione la tecla b para despegar. El intervalo entre las teclas debe ser más rápido, de lo contrario el tiempo Si el intervalo es demasiado largo, el dron se bloqueará automáticamente, y tendrás que repetir los pasos justo ahora) En
este punto, se completa la configuración básica de la plataforma de simulación.
Nota: Los
siguientes errores pueden ocurrir cuando roslaunch px4 indoor1.launch:
1.
Ver la solución: https: // blog .csdn.net / abc869788668 / article / details / 78323395? locationNum = 8 & fps = 1 Luego
ingrese el siguiente comando:
sudo /opt/ros/melodic/lib/mavros/install_geographiclib_datasets.sh
Puede llevar mucho tiempo y debes esperar pacientemente
. 2. El
autor original dijo que puede ser un problema de LIDAR 3D, pero después de unos días de intentarlo, descubrí que el gazebo9.0 instalado tendrá el error anterior y gazebo9.13 puede ejecutarse, puedes intentar instalar gazebo Cambie la versión a 9.13 para probar. Es por eso que recomiendo elegir melodic-desktop al instalar ros y gazebo, e instalar gazebo 9.13 o posterior.
Página web de referencia:
[1]: https://www.yuque.com/xtdrone/manual_cn/basic_config_1.11
[2]: https://blog.csdn.net/qq_42585108/article/details/106781596
[3]: https : //blog.csdn.net/qq_44830040/article/details/106049992
[4]: https://blog.csdn.net/abc869788668/article/details/78323395?locationNum=8&fps=1