ROS学习(十一)—— msg srv

一、msg 和 srv介绍

1、定义

p { margin-bottom: 0.25cm; line-height: 120% }
a:link { }

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

  服务(srv): 一个srv文件描述一项服务。它包含两个部分:请求和响应。 

p { margin-bottom: 0.25cm; line-height: 120% }
a:link { }

2、存放位置

p { margin-bottom: 0.25cm; line-height: 120% }
a:link { }

  msg文件存放在package的msg目录下,srv文件则存放在srv目录下。

3、msg本质

p { margin-bottom: 0.25cm; line-height: 120% }
a:link { }

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

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

PS:有一个特殊的类型Header : 包含时间戳和坐标系信息

p { margin-bottom: 0.25cm; line-height: 120% }
tt.cjk { font-family: "Nimbus Mono L", monospace }
a:link { }

    在msg文件的第一行经常可以看到Header header的声明.

4、SRV文件结构

int64 A
int64 B
---
int64 Sum

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

二、msg

1、创建一个msg

(1)创建msg文件

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

(2)修改package.xml,确保msg文件被转换成为C++,Python和其他语言的源代码

p { margin-bottom: 0.25cm; line-height: 120% }
a:link { }
p { margin-bottom: 0.25cm; line-height: 120% }
a:link { }
要确保msg文件被转换成为C++,Python和其他语言的源代码
--> { }

 <build_depend>message_generation</build_depend>
 <run_depend>message_runtime</run_depend>

  在package.xml添加这两行

(3)修改CMakeLists.txt

A、修改find_package

find_package(catkin REQUIRED COMPONENTS
   roscpp
   rospy
   std_msgs
   message_generation
)

B、修改catkin_package

catkin_package(
  ...
  CATKIN_DEPENDS message_runtime ...
  ...)

C、修改add_message_files(记得取消注释)

add_message_files(
  FILES
  Num.msg
)

p { margin-bottom: 0.25cm; line-height: 120% }
a:link { }

D、手动添加.msg文件后,我们要确保CMake知道在什么时候重新配置我们的project。(取消注释)

generate_messages(
  DEPENDENCIES
  std_msgs
)

p { margin-bottom: 0.25cm; line-height: 120% }
a:link { }
D、手动添加.msg文件后,我们要确保CMake知道在什么时候重新配置我们的project
--> { }

2、使用rosmsg来确定ROS是否能够识别消息

(1)语法:

rosmsg show [message type]

(2)demo:

rosmsg show beginner_tutorials/Num

(3)如果不确定是哪个包,可以省略包名

rosmsg show Num

三、srv

1、创建一个srv

(1)先创建srv文件夹

roscd beginner_tutorials
mkdir srv

(2)使用复制的方式创建srv文件

A、语法

roscp [package_name] [file_to_copy_path] [copy_path]

B、实例

roscp rospy_tutorials AddTwoInts.srv srv/AddTwoInts.srv

(3)跟msg一样修改package.xml文件,加入这两个依赖

<build_depend>message_generation</build_depend>
<run_depend>message_runtime</run_depend>

(4)修改CMakeLists.txt中的find_package

find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
 message_generation
)

(5)修改CMakeLists.txt中的add_service_files(去掉注释)

add_service_files(
  FILES
  AddTwoInts.srv
)

2、使用rossrv来确保ROS可以识别服务

(1)语法:

rossrv show <service type>

(2)demo:

rossrv show beginner_tutorials/AddTwoInts

(3)可以省略包名

rossrv show AddTwoInts

四、msg 和 srv 编译

1、修改CMakelists.txt

generate_messages(
  DEPENDENCIES
  std_msgs
)

  记得去掉注释

2、进行编译

catkin_make install

3、所有在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/ 路径下.

p { margin-bottom: 0.25cm; line-height: 120% }
tt.cjk { font-family: "Nimbus Mono L", monospace }
a:link { }

时间: 2024-10-25 02:40:56

ROS学习(十一)—— msg srv的相关文章

ROS学习网址【原创】

ROS学习网址 http://www.ros.org/ http://www.ros.org/news/book/ http://wiki.ros.org/ http://blog.exbot.net/archives/2966 http://blog.csdn.net/bobsweetie/article/details/43638761 http://blog.exbot.net/archives/category/ros

ROS 学习系列 -- 使用urdf创建机器人模型在Rviz中3D观察 之一 joint 使用

我们接着上文  ROS 学习系列 -- 使用urdf创建机器人模型在Rviz中3D观察 之一 link使用继续完成创建带四个可以转动轮子的双层小车. 一 建立可以转动的joint <span style="font-size:18px;"><?xml version="1.0"?> <robot name="sp1s"> <link name="base_link"> <v

Oracle学习(十一):PL/SQL

1.知识点:可以对照下面的录屏进行阅读 PL/SQL程序结构 declare 说明部分 (变量说明,光标申明,例外说明 ] begin 语句序列 (DML语句]- exception 例外处理语句 End; / ------------------------------------------------------------------ --第一个PL/SQL程序:HelloWorld set serveroutput on --如果要在屏幕上输出信息,需要将serveroutput开关打

springMVC3学习(十一)--文件上传CommonsMultipartFile

使用springMVC提供的CommonsMultipartFile类进行读取文件 需要用到上传文件的两个jar包 commons-logging.jar.commons-io-xxx.jar 1.在spring配置文件中配置文件上传解析器 <!-- 文件上传解析器 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipar

ROS学习之日志消息

转:https://www.cnblogs.com/flyingjun/p/8831455.html 1.ros调试信息,输出不同颜色字体 ROS学习之日志消息 ROS日志系统的核心思想,就是使程序生成一些简短的文本字符流,这些字符流便是日志消息. 0.1严重级别 ROS中,日志消息分为五个不同的严重级别,也可简称为严重性或者级别.按照严重性程度递增,这些级别有       DEBUG       INFO       WARN       ERROR       FATAL 0.2生成日志消息

ROS学习笔记

创建ros工作环境: mkdir -p ~/catkin_ws/src //建立项目目录,同时生成src文件夹 cd ~/catkin_ws/ //进入项目目录 catkin_make //编译项目,即使什么文件也没有也可以编译 source devel/setup.bash //执行编译生成的脚本文件,这会使当前项目目录加入环境变量.每次开启终端都要设置 echo $ROS_PACKAGE_PATH //检查环境变量是否修改 ros文件架构:粗体为文件夹,此外为文件 catkin_ws 总目录

ROS学习需要看的网络教程_整理

官方wiki,主要资料 tips:在官方链接地址栏加入cn,有些页面会进入中文翻译之后的界面,部分如此:尽量看原版英文的. 如http://wiki.ros.org/cn/ROS/Installation ROS安装教程:http://wiki.ros.org/ROS/Installation   介绍ROS的安装 ROS核心知识系列:http://wiki.ros.org/ROS/Tutorials  主要介绍ros相关的很多概念,理解ROS的架构 ROS cpp包的讲解:http://wik

ROS学习之包的概念

目录 常见文件和目录 命令行工具 客户端库支持 python C ++ 对于rosbuild,请参阅:rosbuild / Packages ROS中的软件以包的形式组织.软件包可能包含ROS 节点,与ROS无关的库,数据集,配置文件,第三方软件或逻辑上构成有用模块的任何其他内容.这些包的目标是以易于消费的方式提供这种有用的功能,以便软件可以轻松重用.一般来说,ROS包遵循"Goldilocks"原则:足够的功能是有用的,但不是太多,因为该包是重量级的,难以从其他软件使用. 软件包很容

ros学习摘要

参考:http://wiki.ros.org/cn/ROS/Tutorials 1.安装并配置ROS环境 1.1 安装ROS  :apt安装无权限 1.2管理环境 : ROS是依赖组合空间的概念,配置脚本环境. 安装ROS期间,你会看到提示说需要 source 多个setup.*sh文件中的某一个,或者甚至提示添加这条'source'命令到你的启动脚本里面. 检查配置的环境变量: export | grep ROS $ source /opt/ros/hydro/setup.bash 事先在.b