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:
- Crear un espacio de trabajo.
- Crear un paquete.
- Editar archivos fuente.
- Editar archivos de configuración.
- 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++)
-
Crear e inicializar el espacio de trabajo
bashmkdir -p <workspace_name>/src cd <workspace_name> catkin_makePor ejemplo:
bashmkdir -p seeed_ws/src cd seeed_ws catkin_make -
Crear el paquete ROS y añadir dependencias
bashcd src catkin_create_pkg <package_name> roscpp rospy std_msgsPor ejemplo:
bashcd src catkin_create_pkg hello_world roscpp rospy std_msgs -
Editar el archivo fuente
Navegue al directorio
srcde su paquete y cree un nuevo archivo fuente C++ (p. ej.,hello.cpp):bashcd ~/<workspace_name>/src/<package_name>/src touch hello.cpppor ejemplo:
bashcd ~/seeed_ws/src/hello_world/src touch hello.cppcopie 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; } -
Editar
CMakeLists.txtAñada lo siguiente al final del
CMakeLists.txtde su paquete:cmakeadd_executable(<node_name> src/hello.cpp) target_link_libraries(<node_name> ${catkin_LIBRARIES})por ejemplo:
cmakeadd_executable(hello src/hello.cpp) target_link_libraries(hello ${catkin_LIBRARIES})Nota: el archivo
CMakeLists.txtmencionado aquí está ubicado en el directorio del paquete creado, no en el directorio del espacio de trabajo. -
Compilar el espacio de trabajo
bashcd <workspace_name> catkin_makepor ejemplo:
bashcd ~/seeed_ws catkin_make -
Ejecutar el programa
Abra una terminal e inicie ROS core:
bashroscoreAbra otra terminal, sourcee el espacio de trabajo y ejecute el nodo:
bashcd <workspace_name> source devel/setup.bash rosrun <package_name> hellopor ejemplo:
bashcd ~/seeed_ws source devel/setup.bash rosrun hello_world hello
Debería ver la salida: Hello World!
HelloWorld (versión Python)
-
Crear e inicializar el espacio de trabajo
bashmkdir -p <workspace_name>/src cd <workspace_name> catkin_makePor ejemplo:
bashmkdir -p seeed_ws/src cd seeed_ws catkin_make -
Crear el paquete ROS y añadir dependencias
bashcd src catkin_create_pkg <package_name> roscpp rospy std_msgsPor ejemplo:
bashcd src catkin_create_pkg hello_world roscpp rospy std_msgs -
Añadir el directorio
scriptsy crear el archivo PythonNavegue al directorio de su paquete, cree un directorio
scriptsy un nuevo archivo Python (p. ej.,hello.py):por ejemplo:
bashmkdir ~/seeed_ws/src/hello_world/scripts cd ~/seeed_ws/src/hello_world/scripts touch hello.pypython#!/usr/bin/env python import rospy if __name__ == "__main__": rospy.init_node("hello") rospy.loginfo("Hello World!") -
Añadir permisos de ejecución
bashsudo chmod +x hello.py -
Editar
CMakeLists.txtAñada lo siguiente al final del
CMakeLists.txtde su paquete:cmakecatkin_install_python(PROGRAMS scripts/hello.py DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} ) -
Compilar el espacio de trabajo
bashcd <workspace_name> catkin_makepor ejemplo:
bashcd ~/seeed_ws catkin_make -
Ejecutar el programa Abra una terminal e inicie ROS core:
bashroscoreAbra otra terminal, sourcee el espacio de trabajo y ejecute el nodo:
bashcd <workspace_name> source devel/setup.bash rosrun <package_name> hello.pyPor ejemplo:
bashcd ~/seeed_ws source devel/setup.bash rosrun hello_world hello.pyDeberí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:
echo "source ~/<workspace_name>/devel/setup.bash" >> ~/.bashrcEsto asegura que el espacio de trabajo se source automáticamente cada vez que se abra una nueva terminal.