ROS aprendizaje-comprensión y experiencia de nodos, temas y servicios
Uno, ROS
1. Inicie ROS
roscore
2. Inicie el nodo de la tortuga pequeña.
Vuelva a abrir una terminal y escriba
rosrun turtlesim turtlesim_node
rosrun: inicia un nuevo nodo;
turtlesim: paquete de funciones
turtlesim_node: un nodo debajo del paquete de funciones
3. Inicie el nodo de control del teclado.
Vuelva a abrir una terminal y escriba
rosrun turtlesim turtle_teleop_key
4. Herramienta de visualización rqt
(1) rqt_graph: puede ver el gráfico de relación de nodos que se está ejecutando actualmente
rqt_graph
(2) rqt_plot: se puede usar para ver la forma de onda de salida de datos, ingrese / en la columna del tema, el sistema mostrará automáticamente información diversa. Elegimos / turtle1 / pose / x de Xiaohai, haga clic en +, / turtle1 / pose / y , haga clic en +
rqt_plot
En segundo lugar, el nodo
1. ¿Qué es un nodo?
Un nodo es equivalente a un módulo independiente y los módulos (nodos) se pueden conectar entre sí.
2. Utilice el nodo ROS (rosnode <...>)
-
rosnode tiene los siguientes usos:
lista de rosnode: Obtén el nodo en ejecución
rosnode info / turtlesim genera esta información de nodo
rosnode kill / turtlesim kill / end este nodo (puedes presionar Ctrl + C en su terminal en su lugar) -
(1) lista rosnode: obtenga el nodo en ejecución
. Como se muestra en la figura siguiente, como arriba, hay 3 nodos en total:
/ rosout: este nodo siempre está allí y se ejecuta como se ejecuta roscore.
/ Teleop_turtle: nodo de control de teclado
/ turtlesim: Nodo Tortuga Pequeña -
(2) información de rosnode nodo1: Ver la información del nodo "nodo1"
, como la entrada:rosnode info /turtlesim
Como se muestra en la figura siguiente, puede ver diversa información como suscripciones, temas y servicios de este nodo.
Tres, tema
1. Cuál es el tema
- El tema es equivalente al intermediario. Por ejemplo, si estás buscando trabajo y vas al intermediario, le dices al intermediario el tipo de trabajo que estás buscando. La fábrica del otro lado del intermediario también debe tener el el tipo de puesto de trabajo que desea antes de poder comunicarse a través del intermediario.
- Las personas y las fábricas aquí son nodos
- Los tipos de mensajes entre nodos deben ser los mismos para comunicarse
2. Usar tema (rostopic)
-
Rostopic de uso común tiene los siguientes usos(TOPIC representa el tema en el que se va a operar)
lista rostopic Ver la lista de temas
rostopic echo TOPIC Enviar el mensaje publicado por el tema a la pantalla
tipo
rostopic TOPIC Enviar el tipo de tema rostopic pub TOPIC Publicar los datos en el tema -
(1) Vea la lista de temas y la entrada en la terminal:
rostopic list
Puede ver todos los temas de running / turtlesim como se muestra a continuación:
-
(2) Ver el tipo de tema de salida, entrada de terminal:
rostopic type /turtle1/cmd_vel
El tipo de mensaje se mostrará como: geometry_msgs / Twist
-
(3) Use pub para publicar el tema, ingrese el siguiente comando:
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 "linear: x: 2.0 y: 0.0 z: 0.0 angular: x: 0.0 y: 0.0 z: 1.0"
# 加 -r 1: Haz que la terminal funcione todo el tiempo, y la pequeña tortuga dibuja un círculo.
-
(4) Ahora usamos echo para ver los mensajes enviados por el nodo a través del tema, la entrada del terminal:
rostopic echo /turtle1/cmd_vel
Puede ver la siguiente salida, incluida la velocidad lineal lineal y la velocidad angular anular:
Cuatro, servicio
1. ¿Qué es el servicio?
El servicio es equivalente a 10086. Cuando realiza una llamada, se reproducirán varios servicios de 10086 en el teléfono, y luego puede presionar 1, 2, 3 ... para seleccionar diferentes servicios, y luego puede experimentar el servicio que desea. seleccionado
2. Cómo utilizar el servicio (rosservice)
rosservice
-
(1) Vea la lista de servicios de nodo en ejecución / turtlesim e ingrese a la terminal:
rosservice list
Varios servicios se muestran de la siguiente manera:
-
(2) Ver servicio
Para ver / borrar el servicio, ingrese a la terminal:
rosservice info /clear
-
(3) Invocar el servicio
Para invocar el servicio / clear, ingrese al terminal:rosservice call /clear
Se puede encontrar que el rastro de la tortuguita ha sido despejado.