- Instalação
- NOTE: firewall
- Hello World
- Tutorials
É uma rede de elementos do ROS2 que processa os dados. Ele engloba todos os executáveis e as conexões entre eles se você mapear todos eles e visualizá-los.
Cada node no ROS deve ser responsável por um único propósito. Exemplo: um nó para controlar os motores das rodas, um nó para controlar um laser.
Os topics são como um barramento para os nodes trocarem mensagens. São baseados em publisher-subscriber.
Um node pode publicar dados para qualquer número de topics e simultaneamente ter assinaturas para qualquer número de topics.
Os services são outro método de comunicação entre os nodes. São baseados em call-and-response
A vantagem do service é que é uma comunicação bidirecional, pois cliente faz uma solicitação a um node, o service deste node processa a solicitação e envia a resposta para o cliente.
NOTE:
Para um serviço de chamadas contínua um topic é melhor.
Um parâmetro é um valor de configuração de um node
As actions são um dos tipos de comunicação no ROS2 e destinam-se a tarefas de longa duração. Eles consistem em três partes: um objetivo, feedback e um resultado.
As actions são construídas em topics e services. Sua funcionalidade é semelhante aos services, exceto que as actions podem ser canceladas. Eles também fornecem feedback constante, ao contrário de serviços que retornam uma única resposta.
Um sistema de robô provavelmente usará actions para navegação. Um objetivo de ação poderia dizer a um robô para viajar para uma posição. Enquanto o robô navega para a posição, ele pode enviar atualizações ao longo do caminho (ou seja, feedback) e, em seguida, uma mensagem de resultado final quando chegar ao seu destino.
Before creating your first node you need to:
- Create a ROS2 workspace and source it.
- Create a (Python/Cpp) package.
After writing the node, you compile it, and you re-source your environment in order to use it. Nodes are compiled (only for Cpp), and installed (for both Python and Cpp), inside the install/ folder of your ROS2 workspace. You can directly execute them from here, or by using the command line tool “ros2 run ”.
- Turtle
ros2 run turtlesim turtlesim_node
- Execute turtle commands
ros2 run turtlesim turtle_teleop_key
- Show nodes
rqt_graph
- Public command in topic
ros2 topic pub --once /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"
ros2 topic pub --rate 1 /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"
- Alterar a inicialização
ros2 launch turtlesim multisim.launch.py
- Record data from topic
ros2 bag record <topic_name>
- See details from data
ros2 bag info rosbag2_2022_01_13-06_06_12/
Files: rosbag2_2022_01_13-06_06_12_0.db3
Bag size: 16.8 KiB
Storage id: sqlite3
Duration: 12.122s
Start: Jan 13 2022 06:06:34.766 (1642064794.766)
End: Jan 13 2022 06:06:46.888 (1642064806.888)
Messages: 13
Topic information: Topic: /turtle1/cmd_vel | Type: geometry_msgs/msg/Twist | Count: 13 | Serialization Format: cdr
- Create Python package
cd $HOME/ros2_ws/src/
ros2 pkg create <my_py_pkg> --build-type ament_python --dependencies rclpy
colcon build --packages-select <my_py_pkg>
- Test package
ros2 run <my_py_pkg> py_node