ROS2教程(2) - ROS2节点、话题、服务、参数、动作等 - Linux

ROS2节点

# 运行节点
ros2 run <package_name> <executable_name>
# 获取活动节点名称
ros2 node list
# 获取指定节点的具体信息
ros2 node info <node_name>
# 终端1
ros2 run turtlesim turtlesim_node

# 终端2
ros2 node list 
# 终端2将返回节点名称
/turtlesim

# 终端3
ros2 run turtlesim turtle_teleop_key

# 终端2
ros2 node list 
# 终端2将返回节点名称
/turtlesim
/teleop_turtle

# 终端4 重新映射默认节点属性(如节点名称 话题名称 服务名称)
ros2 run turtlesim turtlesim_node --ros-args --remap __node:=my_turtle

# 终端2
ros2 node list 
# 终端2将返回节点名称
/turtlesim
/teleop_turtle
/my_turtle

# 终端5
ros2 node info /my_turtle

ROS2话题

ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key
rqt_graph

该图描述了/turtlesim节点和 /teleop_turtle 节点如何通过话题相互通信。/teleop_turtle 节点发布 /turtle1/cmd_vel 话题, /turtlesim 节点订阅话题接收数据。如果您想知道所有话题在rqt_graph中的位置,可以取消左上方Hide隐藏: Hide下的所有框。

# 获取所有活动的话题列表
ros2 topic list
# 获取所有活动的话题列表 并在括号中附加话题类型
ros2 topic list -t
# 获取指定话题的数据
ros2 topic echo <topic_name>
# 打印指定话题的 Type Publisher_count Subscription_count
ros2 topic info <topic_name>
# 获取指定话题类型的数据结构
ros2 interface show <msg type>
# 有了消息结构,您可以使用以下命令直接从命令行将数据发布到话题上
ros2 topic pub <topic_name> <msg_type> "<args>"
# 如 (--once 发布一次)
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}}"
# 如 (--rate 1 以1hz的稳定流发布)
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}}"
# 获取话题 Hz
ros2 topic hz <topic_name>
# 如
ros2 topic hz /turtle1/pose

如果你使用 ros2 topic hz /turtle1/cmd_vel 而不是 ros2 topic hz /turtle1/pose ,你会看到一个反映该速率的平均值。

ROS2服务

# 返回当前活动的所有服务列表
ros2 service list
# 查看指定服务的类型
ros2 service type <service_name>
# 查看所有活动服务的类型
ros2 service list -t
# 查找指定类型的所有服务
ros2 service find <type_name>
# 获取指定服务类型的参数结构
ros2 interface show <type_name>.srv

# 服务调用 (<arguments> 部分是可选的。例如,您知道 Empty 类型化服务没有任何参数)
ros2 service call <service_name> <service_type> <arguments>
如 ros2 service call /spawn turtlesim/srv/Spawn "{x: 2, y: 2, theta: 0.2, name: ''}"

ROS2参数

# 查看属于节点的参数
ros2 param list
# 获取指定的参数类型
ros2 param get <node_name> <parameter_name>
# 参数设置
ros2 param set <node_name> <parameter_name> <value>
# 存储指定节点的所有当前参数到文件中
ros2 param dump <node_name>
# 加载参数
ros2 param load <node_name> <parameter_file>
# 节点启动时加载参数
ros2 run <package_name> <executable_name> --ros-args --params-file <file_name>

ROS2动作

# list所有动作
ros2 action list
# list所有动作 并打印类型
ros2 action list -t
# 打印指定动作的信息
ros2 action info <action_name>
# 打印指定动作类型的结构
ros2 interface show <type_name>

# 从命令行发送动作 (其中values为YAML语法)
ros2 action send_goal <action_name> <action_type> <values>
如 ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute "{theta: 1.57}"
要查看此目标的反馈,请将 --feedback 添加到您运行的最后一个命令中。
ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute "{theta: -1.57}" --feedback

rqt_console

rqt_console是一个GUI工具,类似一个日志记录器,可以用来收集、过滤、保存、加载信息。ROS节点可以使用日志以多种方式输出有关事件和状态的消息。

# 安装 rqt
sudo apt install ~nros-humble-rqt*
# 启动 rqt_console
ros2 run rqt_console rqt_console

在这里插入图片描述
控制台的第一部分将显示来自系统的日志消息。在中间,您可以选择通过排除严重性级别来过滤消息。您还可以使用右侧的加号按钮添加更多排除过滤器。 底部用于突出显示包含您输入的string的消息。您也可以向本节添加更多过滤器。

// ROS2 日志记录级别
Fatal // 该系统将终止,以保护自己免受损害。
Error // 重大问题不一定会损害系统,但会阻碍系统正常运行。
Warn // 意想不到的活动或非理想的结果,这可能代表了一个更深层次的问题,但不会直接损害功能。
Info // 指示事件和状态更新,作为系统按预期运行的可视化验证。
Debug // 详细说明了系统执行的整个逐步过程。

// 默认等级为 Info 。您将只看到默认严重性级别和更严重级别的消息。
// 通常,只有 Debug 信息是隐藏的,因为它们是唯一没有 Info 严重的水平。例如,如果您将默认级别设置为 Warn ,您将只看到严重程度为 Warn 、 Error 和 Fatal 的消息。
# 设置默认日志记录器级别

# 重新映射运行 /turtlesim 节点时,可以设置默认的日志记录器级别。在终端中输入以下命令
ros2 run turtlesim turtlesim_node --ros-args --log-level WARN

记录和回放数据

ros2 bag 是一个命令行工具,用于记录系统中发布的关于话题的数据。它累积传递给任意数量话题的数据,并将其保存在数据库中。以此,您可以重现测试和实验的结果。

sudo apt-get install ros-humble-ros2bag \
                     ros-humble-rosbag2-storage-default-plugins
# 记录发布到话题的数据
ros2 bag record <topic_name>
-o # 为您的包文件选择一个唯一的名称
-a # 记录系统上的所有话题

# 复现
ros2 bag play <bag_file_name>
ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key
ros2 topic echo /turtle1/cmd_vel # 查看 /turtle1/cmd_vel 发布的数据

mkdir bag_files && cd bag_files
ros2 bag record -o aaa /turtle1/cmd_vel /turtle1/pose
控制乌龟运动 录制完成后Ctrl+C

# 查看录制的详细信息
ros2 bag info <bag_file_name>
如 ros2 bag info aaa

# 复现
ros2 bag play aaa
  • 12
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值