1.rqt_console
1.1 查看输出的信息
运行下面的命令
$ rosrun rqt_console rqt_console $ rosrun rqt_logger_level rqt_logger_level分别启动rqt_console和rqt_logger_level。
启动乌龟模拟turtlesim节点,控制乌龟动一动。
会发现rqt_console里给出了一些信息,比如撞到墙了给出warn信息,出生小乌龟给出普通的info信息。
奇怪,wki说的啥,把日志等级修改为WARN是干吗的,为啥我修改为info不行呢?输出的还是WARN信息。
1.2 日志等级
日志等级顺序如下
Fatal Error Warn Info Debug不知道这个日志等级顺序是干嘛用的。
2 roslaunch
2.1 介绍
我感觉这个东西和rosrun差不多啊,只不过执行的是包里的launch文件,
用法
$ roslaunch [package] [filename.launch] PS:突然ubuntu工作区ctrl+alt+left/right失效了!和VM虚拟机的热键冲突,去掉VM虚拟的热键后。。和windows的热键冲突,尴尬啊! 然后我就改为ctrl+windows+alt+ UP/DOWN/LEFT/RIGHT了
执行
$ roscd beginner_tutorials 进入之前的目录。如果失败了,说明你没source一下(ROS_PACKAGE_PATH环境变量没有这个东西)官方wiki给的解决方案是下述代码
$ export ROS_PACKAGE_PATH=~/inidigo_workspace/sandbox:$ROS_PACKAGE_PATH 但是不知道和我有啥区别- -#
2.2 创建launch文件
$ mkdir launch $ cd launch 这个代码就很简单易懂了。
然后新建一个turtlemimic.launch,用vim编辑为下面内容
1 <launch> 2 3 <group ns="turtlesim1"> 4 <node pkg="turtlesim" name="sim" type="turtlesim_node"/> 5 </group> 6 7 <group ns="turtlesim2"> 8 <node pkg="turtlesim" name="sim" type="turtlesim_node"/> 9 </group> 10 11 <node pkg="turtlesim" name="mimic" type="mimic"> 12 <remap from="input" to="turtlesim1/turtle1"/> 13 <remap from="output" to="turtlesim2/turtle1"/> 14 </node> 15 16 </launch>调用下面的代码
roslaunch beginner_tutorials turtlemimic.launch 就打开了刚才我们写的turtlemimic.launch的内容。
官方wiki的解读我有点不懂啊。
大概我看的是,先给一些命名空间,分成2个。貌似这也是创建节点的过程。。 <node >貌似就是会启动节点。
具体关于roslaunch的,都可以看http://blog.csdn.net/xuehuafeiwu123/article/details/53991226这个博客的介绍
其实这地方我疑惑蛮多的,为啥第三个node pkg需要等于turtlesim类型。。而且input output都是啥……先留着,以后来解决这个问题。
上课想了一下,我们实际上运行了3个node,可以用rosnode list看到又3个node,分别是mimic,/turtlesim1/sim,/turtlesim2/sim.
当运行rostopic pub的终端命令后,会产生第四一个node,形如/rostopic_7550_1496904628793
用rostopic info 查看后会输出
Node [/rostopic_7748_1496905382511] Publications: * /turtlesim1/turtle1/cmd_vel [geometry_msgs/Twist] Subscriptions: None Services: * /rostopic_7748_1496905382511/get_loggers * /rostopic_7748_1496905382511/set_logger_level contacting node http://ubuntu:41445/ ... Pid: 7748 Connections: * topic: /turtlesim1/turtle1/cmd_vel * to: /turtlesim1/sim * direction: outbound * transport: TCPROS 在这里,可以看出,他没有订阅话题,专门向turtlesim1/turtle1/cmd_vel进行 out输出(direction:outbound)
类似的,可以分别查看每个节点对话题的信息之类的情况。
这里我们发现launch文件有个有意思的地方,对于remap的input output,实际上只是remap了命名空间,具体的话题会在命名空间里。
比如turtlesim1,他只对cmd_vel有兴趣,你给了他命名空间,他就会在命名空间里找到cmd_vel来进行相关的订阅或者发布操作。
