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-tools
pueden 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:
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
Compilar en el espacio de trabajo
Compilar sim_ros_interface
-
Descargar libPlugin
Nota: La versión de libPlugin debe corresponder a la versión de CoppeliaSim, puede descargar la versión histórica
-
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
-
Agregue el mensaje personalizado ackermann_msgs y
modifique el paquete sim_ros_interface CMakeLists.txt, package.xml, meta / messages.txt.
-
Iniciar roscore
-
Compilar
en el espacio de trabajo Ponga sim_ros_interface en el espacio de trabajo src
Problema 1: La ruta de COPPELIASIM_ROOT_DIR no está configurada
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:
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.
Siga las indicaciones y sudo apt install xsltproc
luego 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
compilación no es un problema, puedes ver este tema en la terminal
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.
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.