[ROS] ROS1 crea un espacio de trabajo y un paquete de funciones

1. Espacio de trabajo ROS

Cada proyecto ROS tiene una estructura de directorios fija e idéntica, es decir, los proyectos ROS se construyen con una estructura de directorios. Use esta carpeta con una estructura fija como espacio de trabajo. Hay cuatro subdirectorios importantes en el espacio de trabajo: build, devel, install y src. Solo src debe crearse manualmente, y los otros tres se generan automáticamente mediante el comando build. El siguiente El papel de estos cuatro subdirectorios se explicará en detalle

~/workspace/ros$ tree -L 1
.
├── build
├── devel
├── install
└── src

2. Crea un espacio de trabajo

2.1 Crear un directorio raíz del espacio de trabajo

Cree un directorio vacío como directorio raíz del espacio de trabajo, por ejemplo, mi directorio raíz es: ~/workspace/ros

$ mkdir -p ~/workspace/ros

2.2 Crear directorio fuente src

Todo el código fuente se colocará en src, ingrese el directorio raíz del espacio de trabajo

$ cd  ~/workspace/ros

crear origen

$ mkdir src

2.3 Inicializar el espacio de trabajo

Ingrese al directorio src y ejecute el comando catkin_init_workspace

$ cd src/
$ catkin_init_workspace 
Creating symlink "~/workspace/ros/src/CMakeLists.txt" pointing to "/opt/ros/melodic/share/catkin/cmake/toplevel.cmake"

Puede aprender de la información impresa que el espacio de trabajo de inicialización es para crear un enlace suave CMakeLists.txt que apunta a ==/opt/ros/melodic/share/catkin/cmake/toplevel.cmake==, puede usar cat CMakeLists.txt para ver este archivo Contenido

$ cat CMakeLists.txt 
# toplevel CMakeLists.txt for a catkin workspace
# catkin/cmake/toplevel.cmake

cmake_minimum_required(VERSION 3.0.2)

project(Project)

set(CATKIN_TOPLEVEL TRUE)
略……

2.4 compilar

La compilación debe ejecutarse en el directorio raíz del espacio de trabajo, por lo tanto, regrese primero al directorio principal

~/workspace/ros/src$ cd ..
~/workspace/ros$ ls
src

Use el comando catkin_make para compilar, y se crearán dos directorios build y devel durante el proceso de compilación;
build: directorio de compilación, almacenando archivos temporales generados durante el proceso de compilación;
devel: espacio de desarrollo, almacenando archivos ejecutables, archivos de script y archivos de configuración generado por la espera de compilación

$ catkin_make
Base path: ~/workspace/ros
Source space:~/workspace/ros/src
Build space: ~/workspace/ros/build
Devel space:~/workspace/ros/devel
Install space:~/workspace/ros/install
####
#### Running command: "cmake~/workspace/ros/src -DCATKIN_DEVEL_PREFIX=~/workspace/ros/devel -DCMAKE_INSTALL_PREFIX=~/workspace/ros/install -G Unix Makefiles" in "~/workspace/ros/build"
####
-- The C compiler identification is GNU 7.5.0
略……
-- Configuring done
-- Generating done
-- Build files have been written to: ~/workspace/ros/build
####
#### Running command: "make -j6 -l6" in "~/workspace/ros/build"
####

De la información impresa, se puede ver que es equivalente a ejecutar los siguientes dos comandos cmake y make

cmake ~/workspace/ros/src -DCATKIN_DEVEL_PREFIX=~/workspace/ros/devel -DCMAKE_INSTALL_PREFIX=~/workspace/ros/install -G Unix Makefiles
make -j6 -l6

2.5 instalación

Ejecutar el comando de instalación catkin_make copiará e instalará archivos ejecutables, scripts, archivos de configuración, etc. en el directorio de instalación, lo que en realidad es equivalente a ejecutarhacer instalarOrden

catkin_make install 
Base path:~/workspace/ros
Source space:~/workspace/ros/src
Build space: ~/workspace/ros/build
Devel space: ~/workspace/ros/devel
Install space:~/workspace/ros/install
####
#### Running command: "make cmake_check_build_system" in "~/workspace/ros/build"
####
####
#### Running command: "make install -j6 -l6" in "~/workspace/ros/build"
####
Install the project...
-- Install configuration: ""
-- Installing: ~/workspace/ros/install/_setup_util.py
略……

Muchas personas se quejan de que el contenido de los directorios devel e install está básicamente duplicado, por lo que devel se elimina en ROS2 y solo se conserva el directorio de instalación;

Supongo que la persona que "se queja" nunca debería haber hecho un proyecto de desarrollo de software antes...

Hasta ahora, no se ha escrito una línea de código y el archivo generado es el siguiente

~/workspace/ros$ tree -L 2
.
├── build
│   ├── atomic_configure
│   ├── catkin
│   ├── catkin_generated
│   ├── CATKIN_IGNORE
│   ├── catkin_make.cache
│   ├── CMakeCache.txt
│   ├── CMakeFiles
│   ├── cmake_install.cmake
│   ├── CTestConfiguration.ini
│   ├── CTestCustom.cmake
│   ├── CTestTestfile.cmake
│   ├── gtest
│   ├── install_manifest.txt
│   ├── Makefile
│   └── test_results
├── devel
│   ├── cmake.lock
│   ├── env.sh
│   ├── lib
│   ├── local_setup.bash
│   ├── local_setup.sh
│   ├── local_setup.zsh
│   ├── setup.bash
│   ├── setup.sh
│   ├── _setup_util.py
│   └── setup.zsh
├── install
│   ├── env.sh
│   ├── local_setup.bash
│   ├── local_setup.sh
│   ├── local_setup.zsh
│   ├── setup.bash
│   ├── setup.sh
│   ├── _setup_util.py
│   └── setup.zsh
└── src
    └── CMakeLists.txt -> /opt/ros/melodic/share/catkin/cmake/toplevel.cmake

11 directories, 27 files

3. Crear un paquete de funciones

3.1 Formato de comando

catkin_create_pkg   <package_name>   [depend1] [depdend2] [……]

3.2 crear

Al crear un paquete de funciones, debe ejecutarse en el directorio src, y el archivo de código fuente del paquete de funciones se colocará en la carpeta del paquete correspondiente. El directorio src no puede colocar directamente el archivo de código fuente. Ingrese src y ejecute el comando
catkin_create_pkg

$ cd ~/workspace/ros/src
$ catkin_create_pkg test_pkg std_msgs rospy roscpp
Created file test_pkg/CMakeLists.txt
Created file test_pkg/package.xml
Created folder test_pkg/include/test_pkg
Created folder test_pkg/src
Successfully created files in ~/workspace/ros/src/test_pkg. Please adjust the values in package.xml.

La estructura de directorios generada automáticamente es la siguiente

:~/workspace/ros/src$ tree
.
├── CMakeLists.txt -> /opt/ros/melodic/share/catkin/cmake/toplevel.cmake
└── test_pkg
    ├── CMakeLists.txt
    ├── include
    │   └── test_pkg
    ├── package.xml
    └── src

4 directories, 3 files

3.3 compilar

Regrese al directorio raíz del espacio de trabajo y ejecute catkin_make nuevamente

$ cd ..
$ catkin_make
略……
-- BUILD_SHARED_LIBS is on
-- BUILD_SHARED_LIBS is on
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ~~  traversing 1 packages in topological order:
-- ~~  - test_pkg
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- +++ processing catkin package: 'test_pkg'
-- ==> add_subdirectory(test_pkg)
-- Configuring done
-- Generating done
略……

Se puede ver que al compilar de nuevo, el paquete de funciones test_pkg se compila en

3.4 Actualizar variables de entorno

Agregue la ruta del espacio de trabajo actual a la variable de entorno, tome ROS_PACKAGE_PATH como ejemplo:
antes de actualizar la variable de entorno:

$ echo $ROS_PACKAGE_PATH
/opt/ros/melodic/share

Ejecute el comando de variable de entorno de actualización:

$ source ~/workspace/ros/devel/setup.bash 

Después de ejecutar la variable de entorno de actualización:

$ echo $ROS_PACKAGE_PATH
~/workspace/ros/src:/opt/ros/melodic/share

3.5 Variables de entorno relacionadas con ROS

Puede usar el comando == printenv | grep ROS== para ver las variables de entorno relacionadas con ROS

$ printenv | grep ROS
ROS_ETC_DIR=/opt/ros/melodic/etc/ros
ROS_ROOT=/opt/ros/melodic/share/ros
ROS_MASTER_URI=http://localhost:11311
ROS_VERSION=1
ROS_PYTHON_VERSION=2
ROS_PACKAGE_PATH=/opt/ros/melodic/share
ROSLISP_PACKAGE_DIRECTORIES=
ROS_DISTRO=melodic

Supongo que te gusta

Origin blog.csdn.net/u010168781/article/details/130377938
Recomendado
Clasificación