在Jetson Nano上学习ROS的记录(版本Ubuntu18.04,课程来源赵虚左老师的《ROS理论与实践》)第五章 常用命令

系列文章目录

第一章 ROS空间创建、helloworld的实现、开启多个节点
第二章 话题通信
第三章 服务通信
第四章 参数服务器
第五章 常用指令
第六章 通信机制实操

文章目录

  • 系列文章目录
  • 前言
  • 一、常用指令介绍
  • 二、具体介绍
    • 1.rosnode
    • 2.rostopic
    • 3.rosservice
    • 4.rosmsg(发布订阅模型)
    • 5.rossrv(服务类型)
    • 6.rosparam(参数服务器)
  • 总结


前言

现在大二,之前大一有幸参加了2021的国赛,很壮烈的拿了个江苏赛区的二等奖。但发现无人机这个题,真的是往堆钱上走了。不上ROS不行,现在来记录一下一个纯小白学习ROS的过程和遇到的问题。防止学弟、学妹们再走我走过的弯路。板子用的是学长给的Jetson Nano(4GB),版本是Ubuntu18.04(已配置好基础ROS所需配置)。


一、常用指令介绍

机器人系统中启动的节点少则几个,多则十几个、几十个,不同的节点名称各异,通信时使用话题、服务、消息、参数等等都各不相同,一个显而易见的问题是: 当需要自定义节点和其他某个已经存在的节点通信时,如何获取对方的话题、以及消息载体的格式呢?

在 ROS 同提供了一些实用的命令行工具,可以用于获取不同节点的各类信息,常用的命令如下:

  • rosnode : 操作节点
  • rostopic : 操作话题
  • rosservice : 操作服务
  • rosmsg : 操作msg消息
  • rossrv : 操作srv消息
  • rosparam : 操作参数

二、具体介绍

1.rosnode

rosnode是用于获取节点信息的命令

  • rosnode ping /节点名 测试到节点的连接状态
  • rosnode list 列出活动节点
  • rosnode info /节点名 打印节点信息
  • rosnode machine 列出指定设备上节点
  • rosnode kill /节点名 杀死某个节点
  • rosnode cleanup 清除不可连接的僵尸节点

2.rostopic

rostopic包含rostopic命令行工具,用于显示有关ROS 主题的调试信息,包括发布者,订阅者,发布频率和ROS消息。它还包含一个实验性Python库,用于动态获取有关主题的信息并与之交互。

  • rostopic bw 显示主题使用的带宽
  • rostopic delay 显示带有 header 的主题延迟
  • rostopic echo 打印消息到屏幕,记得进入工作空间并刷新环境变量
  • rostopic find 根据类型查找主题
  • rostopic hz 显示主题的发布频率
  • rostopic info 显示主题相关信息
  • rostopic list 显示所有活动状态下的主题
    #直接调用即可,控制台将打印当前运行状态下的主题名称
    #rostopic list -v : 获取话题详情(比如列出:发布者和订阅者个数…)
  • rostopic pub 将数据发布到主题
    #rostopic pub 话题名tab补齐tab补齐(记得先刷新环境变量source ./devel/setup.bash)
    #rostopic pub -r 10 话题名tab补齐tab补齐 以1s/10次的频率发
  • rostopic type 打印主题类型

3.rosservice

rosservice包含用于列出和查询ROS Services的rosservice命令行工具。
调用部分服务时,如果对相关工作空间没有配置 path,需要进入工作空间调用 source ./devel/setup.bash

  • rosservice args 打印服务参数
  • rosservice call+服务 使用提供的参数调用服务
  • rosservice find 按照服务类型查找服务
  • rosservice info 打印有关服务的信息
  • rosservice list 列出所有活动的服务
  • rosservice type 打印服务类型
  • rosservice uri 打印服务的 ROSRPC uri

4.rosmsg(发布订阅模型)

rosmsg是用于显示有关 ROS消息类型的信息的命令行工具。

  • rosmsg show 显示消息描述
    #rosmsg show turtlesim/Pose
  • rosmsg info 显示消息信息
  • rosmsg list 列出所有消息
    #rosmsg list | grep -i person(消息名称) 可以看到指定消息
  • rosmsg md5 显示 md5 加密后的消息
  • rosmsg package 显示某个功能包下的所有消息
  • rosmsg packages 列出包含消息的功能包

5.rossrv(服务类型)

rossrv是用于显示有关ROS服务类型的信息的命令行工具,与 rosmsg 使用语法高度雷同。

  • rossrv show 显示服务消息详情
  • rossrv info 显示服务消息相关信息
  • rossrv list 列出所有服务信息
    #rosmsg list | grep -i addInts(消息名称) 可以看到指定消息
  • rossrv md5 显示 md5 加密后的服务消息
  • rossrv package 显示某个包下所有服务消息
  • rossrv packages 显示包含服务消息的所有包

6.rosparam(参数服务器)

rosparam包含rosparam命令行工具,用于使用YAML编码文件在参数服务器上获取和设置ROS参数。

  • rosparam set 设置参数
rosparam set name huluwa
//再次调用 rosparam list 结果
/name
/rosdistro
/roslaunch/uris/host_helloros_virtual_machine__42911
/rosversion
/run_id
  • rosparam get 获取参数
rosparam get name
//结果
huluwa
  • rosparam load 从外部文件加载参数
  • rosparam dump 将参数写出到外部文件
  • rosparam delete 删除参数
  • rosparam list 列出所有参数
//默认结果
/rosdistro
/roslaunch/uris/host_helloros_virtual_machine__42911
/rosversion
/run_id

总结

以上就是今天要讲的内容,本文仅仅简单记录了ROS的常用命令,如果有问题请在博客下留言或者咨询邮箱:[email protected]

你可能感兴趣的:(ROS学习,linux,ubuntu,嵌入式硬件,visual,studio,code,python)