Fundamentos ROS (tres) cobertura del espacio de trabajo

Fundamentos ROS (tres) cobertura del espacio de trabajo


ROS permite la coexistencia de múltiples espacios de trabajo. Los métodos de creación, compilación y operación de cada espacio de trabajo son los mismos. Los usuarios pueden crear los paquetes de funciones requeridos en los espacios de trabajo de diferentes proyectos. Pero hay una situación: diferentes espacios de trabajo pueden tener el mismo paquete de funciones con nombre. Si se han establecido las variables de entorno de estos espacios de trabajo, ¿habrá conflictos al utilizar el paquete de funciones?

1. Cobertura del espacio de trabajo en ROS

El espacio de trabajo ROS tiene un mecanismo de superposición, es decir, la cobertura del espacio de trabajo. Las rutas de todos los espacios de trabajo se registrarán sucesivamente en la variable de entorno ROS_PACKAGE_PATH. Cuando se establezcan las variables de entorno de varios espacios de trabajo, la ruta recién configurada se colocará automáticamente en primer plano en ROS_PACKAGE_PATH. En el tiempo de ejecución, ROS buscará primero si el paquete de funciones especificado existe en el espacio de trabajo del front-end. Si no existe, buscará otros espacios de trabajo secuencialmente hasta el último espacio de trabajo.
Puede ver todas las variables de entorno relacionadas con ROS a través del siguiente comando, que contiene el ROS_PACKAGE_PATH que más nos importa.

env | grep ros

2. Ejemplo de cobertura del espacio de trabajo

Instale el paquete de funciones ros-kinetic-ros-tutorials mediante el siguiente comando.

sudo apt-get install ros-kinetic-ros-tutorials

Una vez completada la instalación, use el comando rospack para ver el espacio de trabajo donde se coloca el paquete de características.
roscpp_tutorials es un paquete de funciones en ros-tutorials. En este momento, el paquete de funciones se almacena en el espacio de trabajo predeterminado de ROS. A continuación, también colocamos un paquete de funciones con el mismo nombre en nuestro espacio de trabajo catkin_ws. Puede descargar el código fuente del paquete de funciones ros-tutorials en GitHub:

cd ~/catkin_ws/src
git clone git://github.com/ros/ros_tutorials.git

Luego compile el espacio de trabajo catkin_ws y configure las variables de entorno:

cd ~/catkin_ws
catkin_make
source ./devel/setup.bash

Una vez que la variable de entorno se haya configurado correctamente, verifique la ubicación del paquete de funciones roscpp_tutorials. Ahora, el paquete de funciones roscpp_tutorials encontrado por ROS está bajo el espacio de trabajo catkin_ws que creamos, esto se debe a que en la variable de entorno ROS_PACKAGE_PATH, la ruta del espacio de trabajo catkin_ws está antes de la ruta del espacio de trabajo del sistema.
Este mecanismo de cobertura nos permite reemplazar fácilmente los paquetes de funciones originales en el sistema u otros espacios de trabajo durante el proceso de desarrollo, pero también existen algunos riesgos potenciales, como en los dos espacios de trabajo con la siguiente estructura:

catkin_ws/
  src/
    package_a
    package_b
  devel/
    ...
 overlay_ws/
   src/
     package_a
   devel/
     ...

Si el paquete de funciones package_a en overlay_ws del espacio de trabajo cubre el paquete_a en catkin_ws, el paquete de funciones package_b es único y es imposible saber si el paquete dependiente_a ha cambiado, lo que genera riesgos potenciales para el paquete de funciones package_b.

Supongo que te gusta

Origin blog.csdn.net/weixin_45661757/article/details/112751359
Recomendado
Clasificación