调试和运行多个节点
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 确保它包含以下两条语句:
打开CMakeLists.txt文件
在 CMakeLists.txt文件中,找到
找到
找到
找到
完成创建!
使用 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