Visión general de la implementación de HelloWorld

La programación en ROS utiliza principalmente C++ y Python. La mayoría de los programas pueden implementarse en ambos lenguajes. Cada tutorial mostrará ejemplos en C++ y Python, permitiendo a los usuarios elegir la implementación que mejor les convenga.

El proceso general de implementación en ROS es similar entre los distintos lenguajes. Tomando como ejemplo el programa HelloWorld, los pasos son:

  1. Crear un espacio de trabajo.
  2. Crear un paquete.
  3. Editar archivos fuente.
  4. Editar archivos de configuración.
  5. Compilar y ejecutar.

La principal diferencia entre C++ y Python radica en los pasos 3 y 4. Las siguientes secciones detallan los pasos comunes para ambas implementaciones, con secciones específicas para C++ y Python.

HelloWorld (versión C++)

  1. Crear e inicializar el espacio de trabajo

    bash
    mkdir -p <workspace_name>/src
    cd <workspace_name>
    catkin_make

    Por ejemplo:

    bash
    mkdir -p seeed_ws/src
    cd seeed_ws
    catkin_make
  2. Crear el paquete ROS y añadir dependencias

    bash
    cd src
    catkin_create_pkg <package_name> roscpp rospy std_msgs

    Por ejemplo:

    bash
    cd src
    catkin_create_pkg hello_world roscpp rospy std_msgs
  3. Editar el archivo fuente

    Navegue al directorio src de su paquete y cree un nuevo archivo fuente C++ (p. ej., hello.cpp):

    bash
    cd ~/<workspace_name>/src/<package_name>/src
    touch hello.cpp

    por ejemplo:

    bash
    cd ~/seeed_ws/src/hello_world/src
    touch hello.cpp

    copie el siguiente código en hello.cpp:

    cpp
    #include "ros/ros.h"
    
    int main(int argc, char *argv[])
    {
        ros::init(argc, argv, "hello");
        ros::NodeHandle n;
        ROS_INFO("Hello World!");
    
        return 0;
    }

    J3010

  4. Editar CMakeLists.txt

    Añada lo siguiente al final del CMakeLists.txt de su paquete:

    cmake
    add_executable(<node_name> src/hello.cpp)
    target_link_libraries(<node_name> ${catkin_LIBRARIES})

    por ejemplo:

    cmake
    add_executable(hello src/hello.cpp)
    target_link_libraries(hello ${catkin_LIBRARIES})

    J3010

    J3010

    Nota: el archivo CMakeLists.txt mencionado aquí está ubicado en el directorio del paquete creado, no en el directorio del espacio de trabajo.

  5. Compilar el espacio de trabajo

    bash
    cd <workspace_name>
    catkin_make

    por ejemplo:

    bash
      cd ~/seeed_ws
      catkin_make
  6. Ejecutar el programa

    Abra una terminal e inicie ROS core:

    bash
    roscore

    Abra otra terminal, sourcee el espacio de trabajo y ejecute el nodo:

    bash
    cd <workspace_name>
    source devel/setup.bash
    rosrun <package_name> hello

    por ejemplo:

    bash
    cd ~/seeed_ws
    source devel/setup.bash
    rosrun hello_world hello

    J3010

Debería ver la salida: Hello World!

HelloWorld (versión Python)

  1. Crear e inicializar el espacio de trabajo

    bash
    mkdir -p <workspace_name>/src
    cd <workspace_name>
    catkin_make

    Por ejemplo:

    bash
    mkdir -p seeed_ws/src
    cd seeed_ws
    catkin_make
  2. Crear el paquete ROS y añadir dependencias

    bash
    cd src
    catkin_create_pkg <package_name> roscpp rospy std_msgs

    Por ejemplo:

    bash
    cd src
    catkin_create_pkg hello_world roscpp rospy std_msgs
  3. Añadir el directorio scripts y crear el archivo Python

    Navegue al directorio de su paquete, cree un directorio scripts y un nuevo archivo Python (p. ej., hello.py):

    por ejemplo:

    bash
    mkdir ~/seeed_ws/src/hello_world/scripts
    cd ~/seeed_ws/src/hello_world/scripts
    touch hello.py
    python
    #!/usr/bin/env python
    
    import rospy
    
    if __name__ == "__main__":
        rospy.init_node("hello")
        rospy.loginfo("Hello World!")
  4. Añadir permisos de ejecución

    bash
    sudo chmod +x hello.py
  5. Editar CMakeLists.txt

    Añada lo siguiente al final del CMakeLists.txt de su paquete:

    cmake
    catkin_install_python(PROGRAMS scripts/hello.py
      DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
    )

    J3010

  6. Compilar el espacio de trabajo

    bash
    cd <workspace_name>
    catkin_make

    por ejemplo:

    bash
    cd ~/seeed_ws
    catkin_make
  7. Ejecutar el programa Abra una terminal e inicie ROS core:

    bash
    roscore

    Abra otra terminal, sourcee el espacio de trabajo y ejecute el nodo:

    bash
    cd <workspace_name>
    source devel/setup.bash
    rosrun <package_name> hello.py

    Por ejemplo:

    bash
    cd ~/seeed_ws
    source devel/setup.bash
    rosrun hello_world hello.py

    Debería ver la salida: Hello World!

Nota

Para hacer más cómodo sourcear el archivo de setup del espacio de trabajo, añádalo a su .bashrc:

bash
echo "source ~/<workspace_name>/devel/setup.bash" >> ~/.bashrc

Esto asegura que el espacio de trabajo se source automáticamente cada vez que se abra una nueva terminal.