美文网首页
ros学习(二)从roslaunch到创建自己的消息和服务

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

作者: 循梦渡 | 来源:发表于2019-10-30 13:53 被阅读0次

调试和运行多个节点

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  确保它包含以下两条语句:

<build_depend>message_generation</build_depend>

<exec_depend>message_runtime</exec_depend>

打开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 <service type>

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到创建自己的消息和服务

      本文链接:https://www.haomeiwen.com/subject/qqyovctx.html