首页 > 其他分享 >[ROS学习]4.ROS命令行工具

[ROS学习]4.ROS命令行工具

时间:2022-08-24 17:12:27浏览次数:96  
标签:节点 topic 小海龟 命令行 海龟 turtlesim ROS 工具

笔记参考:【ROS学习笔记】4.玩转小海龟——ROS命令行工具

基于B站ROS公开课:【古月居】古月·ROS入门21讲
基于Ubuntu 20.04.1、Noetic版本

1 回顾第一个小海龟程序

打开小海龟程序:
终端,启动ROS Master

roscore

终端2(Ctrl+Shift+T新建标签页,避免过多窗口),启动小海龟仿真器:
(输入rosrun turtlesim,敲两下Tab健可查看该命令下有哪些功能)

rosrun turtlesim turtlesim_node

终端3,启动海龟控制节点:

rosrun turtlesim turtle_teleop_key

2 查看系统中的计算图:rqt_graph

新建终端标签页:
可展示系统中运行的计算图rqt_graph

rqt_graph

可以清晰地了解系统节点间通信的部分信息。
teleop_turtle节点(键盘控制节点)通过/turtle1/cmd_vel(topic)向turtlesim节点(海归仿真器节点)发出消息,使得小海龟移动。

3 rosnode

3.1显示节点列表:rosnode list

rosnode可以参考有哪些命令
rosnode list将当前系统中所有节点都显示出来的指令

3.2查看节点信息:rosnode info

查看节点的具体信息:rosnode info /节点名
我们查看海龟仿真器节点/turtlesim的信息:

可以看到海龟仿真器节点/turtlesim有一些发布和订阅的topic,也有一些service。

4 rostopic

4.1显示topic列表:rostopic and rostopic list

4.2(命令)手动发布数据给topic:rostopic pub

我们来手动发布数据给topic来控制海龟移动,使用rostopic pub
rqt_graph中我们看到小海龟是通过/cmd_vel这个topic进行发布信息而移动的,这次我们通过手动publish数据给这个topic来控制小海龟移动。

格式:rostopic pub (参数) 话题名 消息数据结构 “具体数据”
例,我们输入:(我们可以使用Tab键让我们自动填充数据,使用方向键←→移动(不能使用↑↓键)到指定位置修改数据,比如我们把x的0.0改成了1.0),平移单位(m),旋转相关单位(弧度)

小海龟沿着正前方向移动了1单位,我们再使用参数-r 5(一秒钟发布5从的进行循环),小海龟就撞上了南墙。
Ctrl+C就可以终止。z轴为垂直于屏幕的方向

5 rosmsg

查看消息数据结构

上例我们使用了消息数据结构定义了一个消息传给topic,我们可以查看有哪些消息数据结构。
查看消息数据结构使用:rosmsg show …
在输入过程中,我们可以勤使用Tab键查看或填充内容

6 使用service通信方式:rosservice

上例我们使用了向topic传msg来控制节点,这次我们试试第二种通信方式service。
service中服务端是仿真器;客户端是终端

查看服务列表:rosservice list

手动通过服务来进行操作

这次我们通过人工产生服务(service)来诞生一只新海龟,使用rosservice call /spawn …
在服务列表中,有个/spawn服务,可以产生一只新的海龟。
格式:rosservice call (参数) 服务名 “具体数据”

这时我们再输入rostopic list,可以看到turtle2已经在topic里了。

7 话题记录和复现:rosbag

试想我们尝试让海龟以我们指定的路径移动了一回,我们想要把它 记录下来,拷贝到自己的实验室再复现出来,我们就可以使用话题记录功能。
常用命令:rosbag record -a -O 文件名-a:all;-O: 压缩
比如我们使用之前打开的键盘操作器让海龟移动一圈并记录下来:
(1)打开新终端输入rosbag record -a -O cmd_record
这样就开始记录了:

(2)移动一下后,到记录界面按Ctrl+C停止;
  文件就记录在了这里:

(3)接下去关闭所有打开的ros节点,查看。
重新开启roscore,开启海龟节点rosrun turtlesim turtlesim_node
这时我们输入 rosbag play 文件名就可以复现之前的移动啦!

标签:节点,topic,小海龟,命令行,海龟,turtlesim,ROS,工具
From: https://www.cnblogs.com/gentlejan/p/16620827.html

相关文章

  • MapStruct映射工具
    一、mapStruct映射工具1.1功能在编译时期是处理映射注解,实现类到类之间的映射MapStructvsBeanUtilsBeanUtils:在运行时根据反射动态赋值缺点:动态赋值,存在大量......
  • 智能证件照api——可立图一键抠图工具
    可立图是一家可以在线智能抠图的网站,同时也可以一键生成证件照提供了抠图api服务和证件照api服务注册可立图官网后可获取免费接口次数1.证件照接口地址:https://www.cli......
  • Java工具篇之Disruptor高性能队列
    简介: disruptor适用于多个线程之间的消息队列,`作用与ArrayBlockingQueue有相似之处`,但是disruptor从功能、性能都远好于ArrayBlockingQueue,当多个线程之间传递大量数据或......
  • 迁移 Nacos 和 ZooKeeper,有了新工具
    简介: 注册中心迁移在行业中主要有两个方案,一个是双注册双订阅模式(类似数据库双写),一个是Sync模式(类似于数据库DTS);MSE同时支持了两种模式,对于开通MSE服务治理客户,MSE......
  • 文件分享工具ShareLocalFile不需要云盘的实时上传下载文件的云盘工具可以搜索整个网络
    工具的下载地址:https://comm.zhaimaojun.cn/AllSources/ToolDetail/?tid=9693这是一个未来的项目,可以分享我们的文件,目前由于个人的技术水平限制,只能暂时先做到目前的水平......
  • 微信小程序开发工具,更新后报typeof4 is not a function
    升级开发者工具版本后,新版工具将es6转es5和增强编译合并,报以下错误。  解决方法有两种:1.修改一下@babel/runtime/helpers/typeof.js文件,内容修改为代码片段的。......
  • [Android开发学iOS系列] 工具篇: Xcode使用和快捷键
    [Android开发学iOS系列]工具篇:Xcode使用和快捷键工欲善其事必先利其器.编辑Cmd+N:新建文件Option+Cmd+N:新建文件夹Cmd+/:注释Ctrl+I:formatind......
  • 【Java基础】操作数组的工具类Arrays
    1.常用方法方法描述booleanequals(int[]a,int[]b)判断两个数组是否相等,顺序不一样也返回falseStringtoString(int[]a)输出数组信息voidfill(int[]......
  • 迁移 Nacos 和 ZooKeeper,有了新工具
    作者:子葵背景注册中心迁移在行业中主要有两个方案,一个是双注册双订阅模式(类似数据库双写),一个是Sync模式(类似于数据库DTS);MSE同时支持了两种模式,对于开通MSE服务治理......
  • wonderpen写作工具
    wonderpen是mac平台上一款强大的写作工具,它是专业和业余作家写作必备的工具,可以让你轻松进行文本编辑,界面简洁,支持切换全屏模式。WonderPenMac版是专业和业余作家的写作......