ros学习(二)从roslaunch到创建自己的消息和服务

调试和运行多个节点

rqt_console 显示节点的输出信息

rosrun rqt_console rqt_console


rqt_logger_level  允许我们修改节点运行时输出信息的日志等级  (包括 DEBUG、WARN、INFO和ERROR)

rosrun rqt_logger_level rqt_logger_level


roslaunch可以用来启动定义在launch文件中的多个节点。

roslaunch [package] [filename.launch] 


先切换到所用程序包目录下:

roscd beginner_tutorials


创建一个launch文件夹:mkdir launch cd launch 

创建一个名为turtlemimic.launch的launch文件 里面写入


launch 开头表明其为launch文件;

创建了两个节点分组并以'命名空间(ns)'标签来区分,其中一个名为turtulesim1,另一个名为turtlesim2,两个组里面都使用相同的turtlesim节点并命名为'sim'。这样可以让我们同时启动两个turtlesim模拟器而不会产生命名冲突。

启动模仿节点,并将所有话题的输入和输出分别重命名为turtlesim1和turtlesim2,这样就会使turtlesim2模仿turtlesim1。


通过roslaunch命令来启动launch文件:

roslaunch beginner_tutorials turtlemimic.launch


此时 如果想发布消息

rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'

注意话题前要加上名空间   可以用rqt检视一下此时的话题名


使用rosed来编辑ros中的文件

直接通过package名来获取到待编辑的文件而无需指定该文件的存储路径

rosed [package_name] [filename]      (vim编辑器)

如:

rosed roscpp Logger.msg


可以修改默认编辑器:   修改为vscode

gedit ~/.bashrc

export EDITOR='code -w'


创建消息和服务

消息(msg): msg文件就是一个描述ROS中所使用消息类型的简单文本。它们会被用来生成不同语言的源代码。

服务(srv): 一个srv文件描述一项服务。它包含两个部分:请求和响应。


msg文件存放在软件包的msg目录下,srv文件则存放在srv目录下。

msg文件实际上就是每行声明一个数据类型和变量名,ROS中有一个特殊的数据类型:Header,它含有时间戳和坐标系信息。在msg文件的第一行经常可以看到Header header的声明.


样例

srv文件分为请求和响应两部分,由'---'分隔


样例


使用msg


echo "int64 num" > msg/Num.msg       来向其中添加信息



查看package.xml  确保它包含以下两条语句:

message_generation

message_runtime

打开CMakeLists.txt文件

在 CMakeLists.txt文件中,找到


添加对message_generation的依赖

找到

加入你写的msg文件

找到

打开代码块 在依赖项最后加上message_runtime

找到

附加上所有你消息文件所依赖的那些含有.msg文件的package

完成创建!


使用 rosmsg来确认

通过rosmsg show命令,检查ROS是否能够识别消息
rosmsg show [message type]

如:

rosmsg show beginner_tutorials/Num


使用 srv

创建一个服务:在包下 mkdir srv

这次不手动创建服务,而是从其他包复制一个服务

roscp实现了将文件从一个package复制到另外一个package的功能。

roscp [package_name] [file_to_copy_path] [copy_path]


从rospy_tutorials package中复制一个服务文件:

roscp rospy_tutorials AddTwoInts.srv srv/AddTwoInts.srv


依赖:

CMakeLists.txt文件中: find_package步和msg一样


在这里加入文件名


即可。


使用 rossrv 

通过rosmsg show命令,检查ROS是否能够识该服务

rossrv show

rossrv show beginner_tutorials/AddTwoInts


重编译

增加了新的消息,所以我们需要重新编译我们的package:

所有在msg路径下的.msg文件都将转换为ROS所支持语言的源代码

生成的C++头文件将会放置在~/catkin_ws/devel/include/beginner_tutorials/。 Python脚本语言会在 ~/catkin_ws/devel/lib/python2.7/dist-packages/beginner_tutorials/msg 目录下创建。 lisp文件会出现在 ~/catkin_ws/devel/share/common-lisp/ros/beginner_tutorials/msg/ 路径下.


帮助

大多数ros命令可以通过 -h 来访问帮助

rosmsg -h

你可能感兴趣的:(ros学习(二)从roslaunch到创建自己的消息和服务)