03.ROS console 和 msg


本文主要参考以下文章:

CSDN ROS入门教程(二)

ROS官方wiki教程

本文继续上一篇继续进行学习并记录下操作过程:


八、使用 rqt_console 和 roslaunch

本节引入用于调试的 rqt_consolerqt_logger_level 以及用于以此启动很多 nodesroslaunch

8.1 使用 rqt_console 和 rqt_logger_level

rqt_console 依附于ROS的 log 框架来显示来自 nodes 的输出。rqt_logger_level 可以改变信息输出等级(verbosity level,冗长程度,分别是:DEBUG,WARN,INFO,ERROR)。

  • logging_level 优先级顺序为:FatalErrorWarnInfoDebug,其中 Fatal 为最高优先级,Debug 为最低优先级。通过设置 logging_level ,将可以接收到所有大于等于此优先级的 messages

  • 使用 roslaunch

    # 并不一定要建立launch文件夹,甚至可以不用launch这个名字。
    # “roslaunch” 命令会自动在给定的package中查找可用的 “launch files”。
    # 但是为了阅读方便,建议还是按照常规的方法来。
    # /home/jet/catkin_ws/src/beginner_tutorials/launch
    $ mkdir launch # 我的目录放在了上面的beginner_tutorials中
    $ cd launch
    $ vim turtlemimic.launch
    # 跟着上面的vim 创建的 turtlemimic.launch 填入下面内容
    
    
    
       
        
       
       
         
       
       
         
         
       
    
    
    
    # 开始练手执行,先处理下环境变量
    $ source ./catkin_ws/devel/setup.bash
    $ roslaunch beginner_tutorials turtlemimic.launch
    # 下面另外开一个终端
    $ rostopic pub /turtulesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0,0.0,0.0]' '[0.0,0.0,-1.8]'
    ####### 下面这个我没弄成功,报错了,说无效的消息类型
    $ rostopic pub /turtlesim1/turtle1/command_velocity turtlesim/Velocity -r 1 -- 2.0  -1.8
    

九、使用 rosed 编辑文件

# Usage:rosed 编辑文件
$ rosed [package_name] [filename]
# Example, 需要提前安装vim : sudo apt-get install vim
$ rosed roscpp logger.msg
# Usage: rosed 后面用tab可以补全
$ rosed [package_name]  

rosed 默认使用的编辑器是 vim,也可以通过指令更改默认配置,使用Ubuntu内置的编辑器,修改方法为:

exort EDITOR='nano -w'

十、创建ROS msg 和 srv

本节涵盖如何使用 rosmsgrossrvroscp 创建和编译 msgsrv 文件。

10.1 msg,srv简介

  • msg :msg文件是一种简单的文本文件,用来描述ROS message,用它们来生成不同语言的消息的源代码。msg文件存放在包的msg目录中,其文件字段类型如下。
    • int8,int16,int32,int64(plus uint*)
    • float32,float64
    • string
    • time,duration
    • other msg files
    • variable-length array[] and fixed-length array[C]

还有一个特殊字段:Header,这个字段包含了 timestampcoordinate frame 信息。简单示例如下:

Header hear
string child_frame_id
geometry_msgs/PoseWithCovariance pose
geometry_msgs/TwistWithCovariance twist 
  • srv:srv文件描述一种service,它包括两部分:请求和响应,srv文件存放在包的srv目录中。srv文件除了包含 requestresponse(这两部使用 --- 进行分隔)之外,其他都与msg文件黑类似:

    int64 A
    int64 B
    ---
    int64 Sum
    

    A,B为request,Sum为Response

10.2 使用msg

  • 创建一个 msg

    $ roscd beginner_tutorials
    $ mkdir msg
    $ echo "int64 msg" > msg/Num.msg
    

    package.xml (/home/jet/catkin_ws/src/beginner_tutorials/package.xml)中添加:

    message_generation
    message_runtime
    

    CMakeLists.txt(/home/jet/catkin_ws/src/beginner_tutorials/CMakeLists.txt)中添加新的依赖项:

    find_package(catkin REQUIRED COMPONENTS
      roscpp
      rospy
      std_msgs
      message_generation #新添加的
    )
    

    同时需要修改 CMakeLists.txt 的下面几个项目:

    # 工程中如果没有使用是被注释掉的,需要自己自行打开
    add_message_files(
      FILES
      Num.msg   #新添加的
    )
    
    generate_messages(
      DEPENDENCIES
      std_msgs
    )
    
  • 使用rosmsg

    # Usage
    $ rosmsg show [message_type]
    $ rosmsg show beginner_tutorials/Num
    

    这个 message 包含两部分:beginner_tutorials-它被定义的package,Num-消息所在的文件名。如果无法想起此msg是在哪个package中定义的,可以跳过package num,直接给出msg所在的文件名:$ rosmsg show Num

10.3 使用srv

  • 创建一个srv

    $ roscd beginner_tutorials
    $ mkdir srv
    # Usage:
    $ roscp [package_name] [file_to_copy_path] [copy_path]
    $ roscp rospy_tutorials AddTwoInts.srv srv/AddTwoInts.srv
    

    同样需要确认package.xml 中是否添加了 message_generationmessage_runtime。下一步是确认CMakeLists.txt 中的 find_package 中添加了 message_generation 。最后一步,修改CMakeLists.txt 中的 add_sevice_files ,如下:

    add_sevice_files(
       FILES
       AddTwoInts.srv
    )
    
  • 使用 rossrv

    # Usage
    $ rossrv show 
    $ rossrv show beginner_tutorials/AddTwoInts
    # 同样的,可以不指定package,直接给出文件名,他会列出所有的同名文件
    $ rossrv show AddTwoInts
    

10.4 msgsrv 的通用操作

# CMakeLists.txt 中修改代码
generate_message(
   DEPENDENCIES
   std_msgs
)
# 在catkin工作空间中重新编译package
$ roscd beginner_tutorials
$ cd ../..
$ catkin_make
$ catkin_make install
$ cd -  # 返回之前的package包目录

msg 目录中的任何 .msg 文件都将生成用于所有支持语言的代码,C++头文件生成在 ~/catkin_ws/devel/include/beginner_tutorials/,Python脚本创建在~/catkin_ws/devel/lib/python2.7/dist-packages/beginner_tutorials/msg。类似的,srv目录中的任何.srv都将生成所支持的所有语言的代码,C++头文件和 message的文件路径相同。

10.5 总结

到目前位置已经学习了如下指令:

  • rospack : provides infomation related to ROS packages

  • roscd : changes directory to a ROS package or stack

  • rosls : lists files in a ROS package

  • roscp : copies files from/to a ROS package

  • rosmsg : provides information related to ROS message definitions

  • rosnode :

  • rossrv : provides information related to ROS service definitions

  • catkin_make : makes (compiles) a ROS package

  • rosmake : makes(compiles) a ROS package(if you're not using a catkin workspace)

你可能感兴趣的:(03.ROS console 和 msg)