Para un proceso mucho más detallado pueden seguir el tutorial de Crear un mensaje y servicio. En el enlace anterior podran encontrar cómo se genera un mensaje propio y además el de un servicio en ROS.
En este taller, no se llegará a generar servicios sin embargo pueden verlo en Escribiendo un servicio y un cliente.
Para un mensaje, se deben de seguir los siguientes pasos:
-
Crear un directorio o carpeta llamado
msg
dentro de el paquetemi_primer_nodo
. -
Dentro del directorio
msg
, crear un archivoVelocidadLlantas.msg
. -
Dentro del archivo de mensaje agregar lo siguiente:
int64 velocidad_izquierda int64 velocidad_derecha
-
Dentro del archivo
package.xml
, descomentar las siguientes lineas:<build_depend>message_generation</build_depend> <exec_depend>message_runtime</exec_depend>
-
Editar el archivo
CMakeLists.txt
y verificar las siguientes líneas:find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs message_generation )
-
Verificar las siguientes líneas:
catkin_package( ... CATKIN_DEPENDS message_runtime ... ...)
-
Verificar las siguientes líneas:
add_message_files( FILES VelocidadLlantas.msg )
-
Verificar las siguientes líneas:
generate_messages( DEPENDENCIES std_msgs )
-
Ejecutar
catkin_make
en el directorio del espacio de trabajo principalcurso_ros
.
Para comprobar que se haya compilado de manera correcta, puede checkear con el siguiente comando:
rosmsg list | grep Velocidad
Deberían obtener algo parecido a lo siguiente:
Ahora a usar el mensaje, como reto, modificar uno de sus nodos publicadores para que lo use y envíe los números a un topic, tener en cuenta que para asignar los valores se debe de realizar de la siguiente manera:
Para importar el mensaje desde Python:
from mi_primer_nodo.mg import VelocidadLlantas
Y para asignar valores al mensaje:
vel_msg = VelocidadLlantas()
vel_msg.velocidad_izquierda=1
vel_msg.velocidad_derecha=1
Publicando datos a un topic, podemos hacer uso de un graficador en tiempo real de ROS llamado rqt_plot
. Un tutorial sobre su uso se puede encontrar en Debugging con rqt_plot.
Desde uno de los nodos, publicar con el mensaje de VelocidadLlantas valores continuos periodicos y graficarlos con rqt_plot.
Una vez llegada a esta etapa, revisaremos finalmente una de las herramientas más importantes de ROS, estas son RViz y Gazebo, para ello seguir la siguiente guía introducción a RViz y Gazebo.