Construyendo Paquetes
Siempre que todas las dependencias del sistema correspondientes a su paquete estén instaladas, podremos construir su nuevo paquete.
Nota:Si instaló ROS usando apt o algún otro administrador de paquetes, ya debería tener todas sus dependencias.
Antes de continuar, recuerde compilar el archivo de configuración de su entorno si aún no lo ha hecho. En Ubuntu sería algo como esto:
# source /opt/ros/%YOUR_ROS_DISTRO%/setup.bash $ source /opt/ros/kinetic/setup.bash # For Kinetic for instance
Usando catkin_make
catkin_make es una herramienta de línea de comandos que agrega cierta comodidad al flujo de trabajo estándar de catkin. Puede imaginar que catkin_make combina las llamadas a cmake y make en el flujo de trabajo estándar de CMake.
Uso:
# In a catkin workspace $ catkin_make [make_targets] [-DCMAKE_VARIABLES=...]
Para las personas que no están familiarizadas con el flujo de trabajo estándar de CMake, este se divide de la siguiente manera:
Nota: Si ejecuta los siguientes comandos, no funcionará, ya que este es solo un ejemplo de cómo funciona CMake en una forma general.
# In a CMake project $ mkdir build $ cd build $ cmake .. $ make $ make install # (opcionalmente)
Este proceso se ejecuta para cada proyecto de CMake. Por el contrario, los proyectos de catkin se pueden construir a la vez en espacios de trabajo. La construcción de cero o muchos paquetes catkin en un espacio de trabajo sigue este flujo de trabajo:
# En un espacio de trabajo carkin $ catkin_make $ catkin_make install # (optional)
Los comandos anteriores construirán cualquier proyecto catkin que se encuentre en la carpeta src. Esto sigue las recomendaciones establecidas por REP128. Si su código fuente está en un lugar diferente, diga my_src entonces llamaría catkin_make así:
Nota: Si ejecuta los siguientes comandos, no funcionará, ya que el directorio my_src no existe.
# En un espacio de trabajo catkin $ catkin_make --source my_src $ catkin_make install --source my_src # (optional)
Para usos más avanzados de catkin_make consulte la documentación: catkin/commands/catkin_make
Construyendo su Paquete
Si está utilizando esta página para crear su propio código, también eche un vistazo a los tutoriales posteriores (C++) / (Python) ya que es posible que deba modificar CMakeLists.txt.
Ya debería tener un espacio de trabajo catkin y un nuevo paquete catkin llamado beginner_tutorials del tutorial anterior, Creando un paquete. Vaya al espacio de trabajo de catkin si aún no está allí y busque en la carpeta src:
$ cd ~/catkin_ws/ $ ls src
beginner_tutorials/ CMakeLists.txt@
Debería ver que hay una carpeta llamada beginner_tutorials que creó con catkin_create_pkg en el tutorial anterior. Ahora podemos construir ese paquete usando catkin_make:
$ catkin_make
Debería ver una gran cantidad de resultados de cmake y despues make, que debería ser similar a esto:
Base path: /home/user/catkin_ws Source space: /home/user/catkin_ws/src Build space: /home/user/catkin_ws/build Devel space: /home/user/catkin_ws/devel Install space: /home/user/catkin_ws/install #### #### Running command: "cmake /home/user/catkin_ws/src -DCATKIN_DEVEL_PREFIX=/home/user/catkin_ws/devel -DCMAKE_INSTALL_PREFIX=/home/user/catkin_ws/install" in "/home/user/catkin_ws/build" #### -- The C compiler identification is GNU 4.2.1 -- The CXX compiler identification is Clang 4.0.0 -- Checking whether C compiler has -isysroot -- Checking whether C compiler has -isysroot - yes -- Checking whether C compiler supports OSX deployment target flag -- Checking whether C compiler supports OSX deployment target flag - yes -- Check for working C compiler: /usr/bin/gcc -- Check for working C compiler: /usr/bin/gcc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Using CATKIN_DEVEL_PREFIX: /tmp/catkin_ws/devel -- Using CMAKE_PREFIX_PATH: /opt/ros/kinetic -- This workspace overlays: /opt/ros/kinetic -- Found PythonInterp: /usr/bin/python (found version "2.7.1") -- Found PY_em: /usr/lib/python2.7/dist-packages/em.pyc -- Found gtest: gtests will be built -- catkin 0.5.51 -- BUILD_SHARED_LIBS is on -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- ~~ traversing packages in topological order: -- ~~ - beginner_tutorials -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- +++ add_subdirectory(beginner_tutorials) -- Configuring done -- Generating done -- Build files have been written to: /home/user/catkin_ws/build #### #### Running command: "make -j4" in "/home/user/catkin_ws/build" ####
Tenga en cuenta que catkin_make primero muestra qué rutas está usando para cada uno de los 'espacios'. Los espacios se describen en REP128 y en la documentación sobre los espacios de trabajo catkin en la wiki: catkin/workspaces. Lo importante a tener en cuenta es que debido a estos valores predeterminados se han creado varias carpetas en su espacio de trabajo de catkin. Eche un vistazo con ls:
$ ls
build devel src
La carpeta build es la ubicación predeterminada de build space y es donde se llaman a cmake y make para configurar y construir sus paquetes. La carpeta devel es la ubicación predeterminada del espacio devel, que es donde van sus ejecutables y bibliotecas antes de instalar sus paquetes.