ROS学习笔记(九):编写并测试简单的服务器和客户端 (C++)、相关数据录制、roswtf

官方教程:编写简单的服务器和客户端 (C++)
测试简单的Service和Client
错误经历1:编译错误,真的需要专心

错误经历2:运行:rosrun beginner_tutorials add_two_ints_server

terminate called after throwing an instance of 'ros::InvalidNameException'
  what():  Character [ ] at element [19] is not valid in Graph Resource Name [add_two_ints_server ].  Valid characters are a-z, A-Z, 0-9, / and _.
已放弃 (核心已转储)

解决方案:拼写错误,重新改

录制与回放数据

1.打开一个新的终端窗口,在终端中执行以下命令:

mkdir ~/bagfiles
cd ~/bagfiles
rosbag record -a

在这里我们先建立一个用于录制的临时目录,然后在该目录下运行rosbag record命令,并附加-a选项,该选项表示将当前发布的所有话题数据都录制保存到一个bag文件中。

rosbag record命令支持只录制某些特别指定的话题到单个bag文件中,这样就允许用户只录制他们感兴趣的话题。

2.接下来我们可以使用rosbag info检查看它的内容,使用rosbag play命令回放出来。

  • 接下来我们首先会看到在bag文件中都录制了哪些东西。我们可以使用info命令,该命令可以检查看bag文件中的内容而无需回放出来。在bag文件所在的目录下执行以下命令:
rosbag info <your bagfile>

3.下一步是回放bag文件以再现系统运行过程。

首先在turtle_teleop_key节点运行时所在的终端窗口中按Ctrl+C退出该节点。让turtlesim节点继续运行。在终端中bag文件所在目录下运行以下命令:

rosbag play <your bagfile>

通过-s参数选项让rosbag play命令等待一段时间跳过bag文件初始部分后再真正开始回放。最后一个可能比较有趣的参数选项是-r选项,它允许你通过设定一个参数来改变消息发布速率。如果你执行:

rosbag play -r 2 <your bagfile>

你应该会看到turtle的运动轨迹有点不同了,这时的轨迹应该是相当于当你以两倍的速度通过按键发布控制命令时产生的轨迹。

roswtf入门

1.运行时检查(在有ROS节点运行时)

$ roscd
$ roswtf

roswtf还可以发现很多其它类型的问题。如果你发现自己被一个编译或者通信之类的问题困扰的时候,可以尝试运行roswtf看能否帮你解决。

猜你喜欢

转载自blog.csdn.net/qq_42910179/article/details/106925537