zoukankan      html  css  js  c++  java
  • Ros学习——创建ROS消息和ROS服务

    1.rosed

    rosed 是 rosbash 的一部分。利用它可以直接通过package名来获取到待编辑的文件而无需指定该文件的存储路径了。

    rosed默认的编辑器是vim。修改其他的,打开~/.bashrc 文件,增加:

    export EDITOR='emacs -nw'
    

      

    2.消息和服务

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

      msg文件实际上就是每行声明一个数据类型和变量名。可以使用的数据类型如下:

    int8, int16, int32, int64 (plus uint*)
    float32, float64
    string
    time, duration
    other msg files
    variable-length array[] and fixed-length array[C]
    

      

    • 服务(srv): 一个srv文件描述一项服务。它包含两个部分:请求和响应。srv文件则存放在srv目录下。

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

    3.msg

    • 1.在之前创建的package里定义新的消息
    $ cd ~/catkin_ws/src/beginner_tutorials
    $ mkdir msg
    $ echo "int64 num" > msg/Num.msg
    
    • 2.确保msg文件被转换成为C++,Python和其他语言的源代码

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

    <build_depend>message_generation</build_depend>
    <run_depend>message_runtime</run_depend>
    • 3.打开CMakeLists.txt文件,利用find_packag函数,增加对message_generation的依赖
    # Do not just add this line to your CMakeLists.txt, modify the existing line
    find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs message_generation)
    • 4.确保你设置了运行依赖:
    catkin_package(
      ...
      CATKIN_DEPENDS message_runtime ...
      ...)
    • 5.修改add_message_files
    # add_message_files(
    #   FILES
    #   Message1.msg
    #   Message2.msg
    # )
    
    改为:
    
    add_message_files(
      FILES
      Num.msg
    )
    • 6.添加了如下代码:
    generate_messages()
    • 7.使用rosmsg
    $ rosmsg show beginner_tutorials/Num

    #或者
    $ rosmsg show Num

    结果:

    4.srv

    • 1.创建一个服务
    $ roscd beginner_tutorials
    $ mkdir srv
    • 2.新建/赋值一个服务文件
    $ roscp rospy_tutorials AddTwoInts.srv srv/AddTwoInts.srv
    • 3.确保srv文件被转换成C++,Python和其他语言的源代码:CMakeLists.txt文件中增加了对message_generation的依赖
    # Do not just add this line to your CMakeLists.txt, modify the existing line
    find_package(catkin REQUIRED COMPONENTS
      roscpp
      rospy
      std_msgs
      message_generation)
    • 4.修改add_message_files
    # add_service_files(
    #   FILES
    #   Service1.srv
    #   Service2.srv
    # )
    
    #改为:
    
    add_service_files(
      FILES
      AddTwoInts.srv
    )
    • 5.使用rossrv
    $ rossrv show beginner_tutorials/AddTwoInts
    
    #或者
    $ rossrv show AddTwoInts
    •  6.结果

  • 相关阅读:
    lsblk---列出所有可用块设备的信息,
    blkid---对系统块设备信息查询
    du---是对文件和目录磁盘使用的空间查看
    strings---对象文件或二进制文件中查找可打印的字符串
    which---查找并显示给定命令的绝对路径
    whereis---定位指令的二进制程序、源代码文件和man手册页等相关文件的路径。
    cd---切换工作目录
    cp---复制文件
    ls---显示文件目录各项信息
    pwd---以绝对路径的方式显示用户当前工作目录
  • 原文地址:https://www.cnblogs.com/yrm1160029237/p/9990616.html
Copyright © 2011-2022 走看看