ROS 自定义消息类型方法
流程
1、在package中新建文件夹名为msg
2、在msg文件夹中创建消息(此处以my_msg.msg)为例,注意的是要以msg为后缀名
内容举例如下:
int32 data1
float64 date2
关于消息内容,需要注意的是如果类型错误,那么将不能生成头文件。例如float64写成了float,那么编译时将会出现错误:xxx.h: No such file or directory;而不会告诉你是哪里出错了,我曾经就遇到过这么坑的问题,所以这点需要注意。
3、修改CmakeList.txt 和package.xml
3.1、在package.xml中添加编译、运行依赖项
3.2、CmakeList.txt
find_package()中添加message_generation
find_package(catkin REQUIRED COMPONENTS
message_generation
roscpp
rospy
std_msgs
)
add_message_files()中添加my_msg.msg
add_message_files(FILES
my_msg.msg
)
generate_messages()添加std_msgs
generate_messages(DEPENDENCIES
std_msgs
)
catkin_package()添加message_runtime
catkin_package(
CATKIN_DEPENDS
message_runtime)
最后在add_executable(xxx src/xxx.cpp)后面添加一行
add_dependencies(xxx ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) #该项让编译器知道要注意编译顺序
target_link_libraries(xxx
${catkin_LIBRARIES}
)
否则仍可能生成不了my_msg.h头文件
如何使用?
1、包含头文件
#include<package_name/my_msg.h>
2、定义变量
package_name::my_msg msg
ROS 链接同一个工作空间的其他包的头文件
正确调用其他package头文件的方法如下:
1.在A_package包的package.xml中添加编译和运行的依赖库,如下:
<build_depend>B_package</build_depend>
<run_depend>B_package</run_depend>
2.在A_package包的CMakeList.txt中的find_package添加B_package如下:
find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs B_package )
主要添加”B_package”,其他已有的package项不用添加
3.在A_package包的CMakeList.txt中的include_directories添加${catkin_INCLUDE_DIRS}如下:
include_directories(include ${catkin_INCLUDE_DIRS})
部分工程已经有该项,不用重复添加
4.此时在调用该头文件则不会出错
#include <B_package/testB.h>
自定义消息类型嵌套
当消息类型发生嵌套时,要包含被且套的消息的包
generate_messages(DEPENDENCIES
std_msgs
B_package )
ROS 自定义消息类型方法的更多相关文章
- ros自定义消息
ros自定义消息可以根据自身项目需求定义和封装想要的数据类型和数据结构.具体可以参考维基百科关于ros自定义消息部分 这里我只是记录自定义消息的要点部分: 1.首先要在工作空间下功能包中创建一个msg ...
- Swift语言之类型方法
Swift语言有很多特性,其中之一就是类型方法,相对于其他比较流行的编程语言(C#.Java),在Swift中类型方法最大的特征在于它的可继承性,我们举个例子说明: 俗话说,龙生龙凤生凤老鼠生儿会打洞 ...
- 深入学习golang(3)—类型方法
类型方法 1. 给类型定义方法 在Go语言中,我们可以给任何类型(包括内置类型,但不包括指针和接口)定义方法.例如,在实际编程中,我们经常使用[ ]byte的切片,我们可以定义一个新的类型: type ...
- Swift编程语言学习12 ——实例方法(Instance Methods)和类型方法(Type Methods)
方法是与某些特定类型相关联的函数.类.结构体.枚举都能够定义实例方法:实例方法为给定类型的实例封装了详细的任务与功能.类.结构体.枚举也能够定义类型方法:类型方法与类型本身相关联.类型方法与 Obje ...
- Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全 C# 算法题系列(二) 各位相加、整数反转、回文数、罗马数字转整数 C# 算法题系列(一) 两数之和、无重复字符的最长子串 DateTime Tips c#发送邮件,可发送多个附件 MVC图片上传详解
Newtonsoft.Json C# Json序列化和反序列化工具的使用.类型方法大全 Newtonsoft.Json Newtonsoft.Json 是.Net平台操作Json的工具,他的介绍就 ...
- 线程系列07,使用lock语句块或Interlocked类型方法保证自增变量的数据同步
假设多个线程共享一个静态变量,如果让每个线程都执行相同的方法每次让静态变量自增1,这样的做法线程安全吗?能保证自增变量数据同步吗?本篇体验使用lock语句块和Interlocked类型方法保证自增变量 ...
- java中Object转换成int或String类型方法
转载: http://www.cnblogs.com/1020182600HENG/p/6137206.html Object obj = getObject(); if(obj instanceof ...
- Java_无参数无返回类型方法及练习
无参数无返回类型方法语法格式: public static void 方法名称(){ 方法体; } class Method03{ /*练习3:输出1-100中的每个数,要求使用无参无返回类型的方法完 ...
- DataTable 更改在有数据列的类型方法
原文:DataTable 更改在有数据列的类型方法 /// <summary> /// 修改数据表DataTable某一列的类型和记录值(正确步骤:1.克隆表结构,2.修改列类型,3.修改 ...
随机推荐
- C语言之内存
#include <stdio.h> #include <string.h> ; //全局初始化区 char *p1; //全局未初始化区 int main() { /**** ...
- Vue之获取用户当前所在省市
今天小编给大家带来的是使用Vue获取用户所在城市,Vue是很强大的,给大家准备好现成的插件供大家调用,下面的Demo小编使用的是百度API. 首先我们从百度平台申请百度地图的秘钥,申请成功后我们将&l ...
- echarts的图表根据父容器大小的改变而改变(弹窗easy-ui的window窗口)
1.echarts的图表只绘制一次,所以要想大小随着父容器变化就得调方法重新绘制.所以把绘制图表的方法提出来. <div class="echart"> <div ...
- properties配置文件的基本操作
对properties的基本操作 public class PropertiesUtil {// 是否是文件public static boolean isFile = false;// 路径publ ...
- 继续搞我的linux
小程序研发已经告一段落,还是继续我的Linux研究.上次因为捣鼓那个fastab,结果吧虚拟机搞崩溃了.好吧,这次老子来装正式机,从机房拉来了一台破烂货,联想的老式服务器,开工吧. 用UltraISO ...
- java.sql.Date和java.util.Date的联系和区别
1) java.sql.Date是java.util.Date的子类,是一个包装了毫秒值的瘦包装器,允许 JDBC 将毫秒值标识为 SQL DATE 值.毫秒值表示自 1970 年 1 月 1 日 0 ...
- git基础1
git: 团队协作开发 版本管理 创建项目的文档 初始化 编写项目 把文件add到git仓库,其实是放到了git的代码暂存区 工作区有一个隐藏目录 .gi ...
- Unity 中调用Android的JAVA代码
首先我们要创建一个android项目 因为项目需要使用Unity提供的接口,所以需要将接口classes.jar引入至当前工程但中.接口包的所在地,打开Finder->应用程序->Unit ...
- Django -- 高级知识点
Django -- 高级知识点 高级知识点包括: 静态文件处理 中间件 上传图片 Admin站点 分页 使用jquery完成ajax 管理静态文件 项目中的CSS.图片.js都是静态文件 配置静态文件 ...
- delphi 不规则窗体与桌面宠物
二.支持区域操作的编程接口在Windows的API函数中有一组用于区域操作的函数,可以用来生成区域.合并区域.获取区域数据.根据数据生成区域.把区域和窗体联系等,其中常用的几个函数有:生成矩形区域的C ...