CoppeliaSim agrega el tipo de mensaje personalizado ROS

CoppeliaSim

Como plataforma de simulación altamente escalable, CoppeliaSim proporciona muchas interfaces, se puede decir que todo es un complemento, siempre que sea fácil generar un complemento. github proporciona el código fuente del complemento simExtROS . Cuando no se puede satisfacer la función del complemento ROS incorporado, puede modificar su código fuente y compilar el complemento.

Listo para trabajar

Crea un espacio de trabajo ROS

Instalar herramientas catkin


Nota en el sitio web oficial Dado que Ubunt 20.04 es Python3, sudo apt-get install python3-catkin-toolspueden surgir problemas de dependencia al usarlo . El proceso completo es el siguiente para
agregar repositorios

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu `lsb_release -sc` main" > /etc/apt/sources.list.d/ros-latest.list'
wget http://packages.ros.org/ros.key -O - | sudo apt-key add -

Instale catkin_tools
Tenga en cuenta que lo siguiente es python3, si es una versión inferior del sistema ubuntu, use python
sudo apt-get update sudo apt-get install python3-catkin-tools

Problema:
Inserte la descripción de la imagen aquí
Solución: Mire la línea inferior de la imagen de arriba. Esta es la falta de dependencia de osrf_pycommon, y osrf-pycommon debe instalarse al mismo tiempo durante la instalación.

sudo apt install python3-catkin-tools python3-osrf-pycommon

Escriba un paquete de mensajes ROS personalizado

Compruébelo usted mismo, aquí está el mensaje de Ackerman que descargué en github como ejemplo

git clone https://github.com/ros-drivers/ackermann_msgs.git ackermann_msgs

Inserte la descripción de la imagen aquí
Compilar en el espacio de trabajo

Compilar sim_ros_interface

  1. Descargar libPlugin
    Nota: La versión de libPlugin debe corresponder a la versión de CoppeliaSim, puede descargar la versión histórica
    Inserte la descripción de la imagen aquí

  2. Descargar sim_ros_interface
    Nota: Igual que libPlugin, la versión debe ser la misma que la versión CoppeliaSim, la versión histórica se puede descargar

git clone --recursive https://github.com/CoppeliaRobotics/simExtROSInterface.git sim_ros_interface
  1. Agregue el mensaje personalizado ackermann_msgs y
    modifique el paquete sim_ros_interface CMakeLists.txt, package.xml, meta / messages.txt.
    Agregue ackermann_msgs en cmakelist.txtpackage.xml agregar ackermann_msgsAgregue dos subtipos de ackermann_msgs

  2. Iniciar roscore

  3. Compilar
    en el espacio de trabajo Ponga sim_ros_interface en el espacio de trabajo src
    Inserte la descripción de la imagen aquí

Problema 1: La ruta de COPPELIASIM_ROOT_DIR no está configurada
Inserte la descripción de la imagen aquí
Solución: Agregue al final de ~ / .bashrc export COPPELIASIM_ROOT_DIR=/home/lyz/sim_ws/src/CoppeliaSim_Edu_V4_1_0_Ubuntu16_04/(la ruta específica depende de su propia ruta de CoppeliaSim). Confirme que la variable de entorno se agregó correctamente. Si se informa del mismo error después de agregar, simplemente cierre la terminal y reinicie.

Problema 2:
Inserte la descripción de la imagen aquí
Solución: Esto se debe a que libPlugin no es el último. Primero debe descargar el último libPlugin, reemplazar el libPlugin en CoppeliaSim y luego compilar nuevos problemas.
Inserte la descripción de la imagen aquíSiga las indicaciones y sudo apt install xsltprocluego compile sin ningún problema.
6. Blog de referencia

Debido a que el ROS de ubuntu 16 18 está basado en python2, debe prestar atención a la versión descargada de CoppeliaSim. Por lo tanto, el proceso anterior no es adecuado. Debe descargar la versión histórica de sim_ros_interface en github y descargar la versión correspondiente de libPlugin , de lo contrario, la compilación será un error muy extraño. Descarga la versión histórica del tutorial de github .

Probado en CoppeliaSim

Siéntete libre de encontrar una escena, suscríbete al tema de noticias, la
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
compilación no es un problema, puedes ver este tema en la terminal
Inserte la descripción de la imagen aquí

La diferencia entre amento build y catkin_make

https://catkin-tools.readthedocs.io/en/latest/migration.html La
principal diferencia es que la compilación de compilación de catkin se construye de forma independiente, mientras que la compilación de catkin_make es dependiente. En este ejemplo, hay un paquete de mensajes personalizado ackerman_msgs en el espacio de trabajo Con sim_ros_interface, el complemento .so compilado con catkin_make tiene dependencias, por lo que ponerlo en CoppeliaSim no reconocerá el mensaje ackermann_msgs. El paquete compilado con catkin build tiene todas las dependencias requeridas agregadas y es relativamente independiente, por lo que no habrá problemas de dependencia cuando se coloque bajo CoppeliaSim.
Inserte la descripción de la imagen aquí
Además de compilar con catkin build, también puede compilar sim_ros_interface por separado con catkin_make_isolated, y el complemento generado tiene el mismo efecto.

lección

Asegúrese de seguir el tutorial oficial, de lo contrario se perderá mucho tiempo. Puede usar catkin_make en lugar de catkin build para ser inteligente. El resultado no ha sido exitoso, pero después de instalar las herramientas catkin obedientemente, lo logró de una vez.

Blog de referencia

Supongo que te gusta

Origin blog.csdn.net/github_39582118/article/details/113093349
Recomendado
Clasificación