当前位置: 首页 > 编程日记 > 正文

ROS话题通信中创建自定义数据类型的两种方式

一、在同一个功能包下创建.msg文件

1、在功能包目录下创建msg文件夹

2、在文件夹中创建.msg文件

3、在该功能包的package.xml文件中加入:

  <build_depend>message_generation</build_depend><exec_depend>message_runtime</exec_depend>

4、在该功能包的CMakeLIst文件中修改

find_package(catkin REQUIRED COMPONENTSroscpprospystd_msgsmessage_generation
)
# 需要加入 message_generation,必须有 std_msgs## 配置 msg 源文件
add_message_files(FILESPerson.msg
)# 生成消息时依赖于 std_msgs
generate_messages(DEPENDENCIESstd_msgs
)#执行时依赖
catkin_package(
#  INCLUDE_DIRS include
#  LIBRARIES demo02_talker_listenerCATKIN_DEPENDS roscpp rospy std_msgs message_runtime
#  DEPENDS system_lib
)

5、编译之后,会发现在devel/include中产生依赖项

6、在c_cpp_properties.json 中加入devel/include的路径

7、编写发布方、订阅方程序,修改该功能包下的CMakeList.txt

add_executable(plumbing_pub src/plumbing_pub.cpp)
add_executable(plumbing_sub src/plumbing_sub.cpp)add_dependencies(plumbing_pub ${PROJECT_NAME}_generate_messages_cpp)
add_dependencies(plumbing_sub ${PROJECT_NAME}_generate_messages_cpp)target_link_libraries(plumbing_pub${catkin_LIBRARIES}
)
target_link_libraries(plumbing_sub${catkin_LIBRARIES}
)

8、启动节点,查看效果

二、单独创建一个功能包存放自定义话题类型

1、创建于一个功能包my_msg2,在该功能包中创建一个msg文件夹,在该文件夹中创建.msg文件
2、修改my_msg2功能包的package.xml文件

  <build_depend>message_generation</build_depend><exec_depend>message_runtime</exec_depend>

3、修改my_msg2功能包的CMakeList.txt文件

find_package(catkin REQUIRED COMPONENTSroscpprospystd_msgsmessage_generation
)
# 需要加入 message_generation,必须有 std_msgs## 配置 msg 源文件
add_message_files(FILESPerson.msg
)# 生成消息时依赖于 std_msgs
generate_messages(DEPENDENCIESstd_msgs
)#执行时依赖
catkin_package(
#  INCLUDE_DIRS include
#  LIBRARIES demo02_talker_listenerCATKIN_DEPENDS roscpp rospy std_msgs message_runtime
#  DEPENDS system_lib
)

4、编译,在devel/include中产生依赖项
5、在c_cpp_properties.json 中加入devel/include的路径
6、创建一个新的功能包test_msg2
7、创建test_msg2功能包时,要包含my_msg2。(在c_cpp_properties.json已经包含了my_msg2的目录,所以会去搜索my_msg2)
8、创建一个src文件夹,在该文件夹中创建节点
9、修改CMakeList文件

find_package(catkin REQUIRED COMPONENTSmy_msg2roscpprospystd_msgsmy_msg2
)catkin_package(
#  INCLUDE_DIRS include
#  LIBRARIES test_msg2CATKIN_DEPENDS my_msg2 roscpp rospy std_msgs
#  DEPENDS system_lib
)add_executable(plumbing_pub2 src/plumbing_pub2.cpp)
add_executable(plumbing_sub2 src/plumbing_sub2.cpp)target_link_libraries(plumbing_pub2${catkin_LIBRARIES}
)
target_link_libraries(plumbing_sub2${catkin_LIBRARIES}
)

10、编译运行节点

相关文章:

2542513 - AS Java fails to start - Initialization of destination UMEBackendConnection failed

今天发现SAP As Java 开发机无法启动&#xff0c;根据 Note 2542513 处理该问题并记录。 今天发现SAP EPBPM服务器不能正常启动&#xff0c;jstart.exe进程显示 some process running 的黄灯状态。重启也不管用。到SAP官网 https://wiki.scn.sap.com/wiki/display/ASJAVA/%28J…

WordCount扩展与优化

合作者&#xff1a;201631062327&#xff0c;201631062128码云地址&#xff1a;https://gitee.com/LIUJIA6/WordCount3 一&#xff1a;项目说明 本次项目是在上次作业WorldCount的基础上&#xff0c;利用结对编程的思想&#xff0c;完成对WorldCount项目的功能扩展 -s 递归处理…

进制转换 位运算(包括补码、原码、反码、~0等一些零碎东西一次说清)

我发现网上关于标题上的内容介绍的都很零碎&#xff0c;因此为了方便查找、也为了本人对这一部分的充分理解&#xff0c;就想着写一篇这样的博客&#xff08;我分成了几个部分&#xff0c;以便查找&#xff09;&#xff1a; 一、进制转换 让我们先来看看各个进制的定义&#…

第三方物流是什么

​​第三方物流是指生产经营企业为集中精力搞好主业&#xff0c;把原来属于自己处理的物流活动&#xff0c;以合同方式委托给专业物流服务企业&#xff0c;同时通过信息系统与物流企业保持密切联系&#xff0c;以达到对物流全程管理的控制的一种物流运作与管理方式。 第三方物流…

ROS中cv_bridge如何用python3进行编译

最近遇到了个问题&#xff0c;cv_bridge实现了opencv和ros中图像数据类型的转换&#xff0c;但ros-melodic默认python版本是python2。在配置yolact环境的时候&#xff0c;要求是python3。 这就导致在ros自带的cv_bridge是python2版本&#xff0c;想使用python3的话需要自己去编…

Ansible06-管理roles

目录 一、roles的结构 二、RHEL系统roles 三、创建角色 四、部署角色 随着 playbook 的增多&#xff0c;有很多代码重用的机会。ansible 提供了一种方式——roles&#xff0c;只需将 roles 从一个项目复制到另一个项目&#xff0c;然后用 play 调用即可实现代码重用。这里的…

用Java中的HashSet写一个学生管理系统(添加、删除、修改、查询学生信息)

不废话&#xff0c;上代码&#xff1a; 先创建一个Student类&#xff1a; public class Student {private String id;private String name;private String mobile;private String address;public String getId() {return id;}public void setId(String id) {this.id id;}pub…

[BZOJ 2054]疯狂的馒头(并查集)

Description CQF十分喜欢吃馒头。兴奋之下他一下子买了N 个馒头请所有认识他的人吃。 但是CQF不喜欢白色&#xff0c;喜欢红色、黄色、绿色等鲜艳的颜色。于是他把所有白色的馒头排成一列。然后进行M 次染色操作。每个染色操作都是用一个神奇的刷子把连续的多个馒头染成特定的某…

RealSenseD435与ORB-SLAM2实现稠密建图

一、RealSenseD435介绍 RealSenseD435是一款结构光相机&#xff0c;使用左右目相机和红外光实现测距。有效测距范围为0.2~10m 二、ORBSLAM2_with_pointcloud_map的安装 git clone https://github.com/gaoxiang12/ORBSLAM2_with_pointcloud_map.gitclone代码&#xff0c;无法…

使用appium做自动化测试时,send_keyss只能输入字母数字,无法输入中文

解决方案&#xff1a; driver中增加以下2行配置&#xff1a; "unicodeKeyboard":True, #unicode编码输入 "resetKeyboard":True #隐藏软键盘 转载于:https://www.cnblogs.com/Inbreeze/p/9828568.html

centos8安装KVM/QEUM虚拟化

centos8安装KVM/QEUM。安装虚拟化主机组。启动libvirtd服务。 yum groupinstall "Virtualization Host" systemctl enable libvirtd systemctl start libvirtd 谁可以使用虚拟化呢&#xff1f;加入libvirt组即可。 usermod -aG libvirt <username> 安装Vir…

病毒的灵魂拷问(绝对原创)

哈哈哈&#xff0c;我敢说&#xff0c;这篇博客绝不会有重复的&#xff0c;因为它是我上课的走神之作&#xff0c;哈哈哈&#xff01; 不废话&#xff0c;上代码&#xff1a; import java.util.Scanner; import java.util.*; public class Test {public static void main(Str…

js:深入prototype(下:原型重写)

//当属性和方法特别多时&#xff0c;编写起来不是非常方便&#xff0c;能够通过json的格式来编写 //因为原型重写。并且没有通过Person.prototype来指定&#xff0c;此时的constructor不会再指向Person而是指向Object //假设constructor真的比較重要&#xff0c;能够在json中说…

全国所有省市县地理坐标Json格式

https://www.cnblogs.com/yzbubble/p/7707129.html转载于:https://www.cnblogs.com/loveMis/p/9829217.html

ubuntu设置不同的eigen版本

下载Eigen并进行编译 下载eigen库&#xff0c;创建build文件夹进行编译 设置安装路径 这里会设置make install的路径 随后进行make install 移动到usr/include路径下 找到第二步中安装的位置&#xff0c;移动到usr/include路径下 这样&#xff0c;需要用那个版本的eige…

MySQL01-安装mysql数据库

MySQL 可以从 YUM 源直接安装 rpm 包&#xff0c;但是这样的定制化程度低&#xff0c;不利于后期维护升级。因此&#xff0c;今天记录一种更灵活的二进制安装方式。参考 MySQL 5.7 官方文档 2.2 章节&#xff0c;具体做法和官方文档略有出入。 1、配置防火墙规则 firewall-cm…

SVO学习笔记(一)

SVO学习笔记&#xff08;一&#xff09;这篇文章FrameFeaturedetectionFeatrue_matcher三角测量求深度特征匹配非线性优化寻找匹配特征极线搜索匹配特征总结这篇文章 一个很年轻的叔叔踩进了SLAM的坑&#xff0c;现在正在学习视觉SLAM中的SVO系统。本着好记性不如烂笔头的思想&…

如何用eclipse操作MySQL数据库进行增删改查?

我们首先需要在Navicat Premium上创建一个数据库实例&#xff08;test&#xff09;&#xff0c;然后创建一个stu_info表&#xff08;id&#xff0c;name&#xff0c;mobile&#xff0c;address&#xff09; 接着创建一个Test类进行操作&#xff1a; 在这之前需要导一个包&#…

机房测试10.22

wzz的观察 简单的递推。 \(f[i][j]\)表示以\((i,j)\)这个点为右下角时最大的正方形大小。 如果这个格子为0&#xff0c;\(f[i][j]0\) 否则\(f[i][j]min(f[i-1][j],f[i][j-1],f[i-1][j-1])1\) 或者可以二分答案&#xff0c;每一次\(O(n*m)\)进行check。 递推代码&#xff1a; #i…

$.when()方法翻译

地址&#xff1a;http://api.jquery.com/jQuery.when/ jQuery.when( deferreds )&#xff0c;returns Promise 正文 Description: Provides a way to execute callback functions based on zero or more Thenable objects, usually Deferred objects that represent asynchrono…

Anaconda3 离线安装 Django-3.2.7 及依赖项setuptools、sqlparse 、asgiref、typing_extensions等模块

目录 一、背景 二、离线安装 setuptools、sqlparse 、asgiref、typing_extensions等依赖模块 三、离线安装django 一、背景 因为信息安全管理的规定&#xff0c;这台服务器不能连接互联网&#xff0c;只能离线安装 django。anaconda3 安装完成以后&#xff0c;从默认虚拟环…

倍增LCA NOIP2013 货车运输

货车运输 题目描述 A 国有 n 座城市&#xff0c;编号从 1 到 n&#xff0c;城市之间有 m 条双向道路。每一条道路对车辆都有重量限制&#xff0c;简称限重。现在有 q 辆货车在运输货物&#xff0c; 司机们想知道每辆车在不超过车辆限重的情况下&#xff0c;最多能运多重的货物。…

SVO学习笔记(二)

SVO学习笔记&#xff08;二&#xff09;这篇文章稀疏图像对齐地图点投影(地图与当前帧间的关系)reprojectMapreprojectPointreprojectCell特征点对齐中的非线性优化结尾这篇文章 这次仍是关于SVO系统的学习记录&#xff08;冲冲冲&#xff01;&#xff09;。这次的主要内容是sp…

用JDBC写一个学生管理系统(添加、删除、修改、查询学生信息)

首先需要用Navicat Premium创建一个student表 用Java连接好MySQL数据库&#xff08;需要copy一个mysql-connector-java-5.1.44-bin.jar包&#xff0c;该包可在网上找到&#xff09;后&#xff0c;我们开始用Java写一个学生管理系统&#xff1a; 我们首选需要定义好添加、删除、…

tensorflow在训练和验证时监视不同的summary的操作

如果想在训练和验证时监视不同的summary&#xff0c;将train summary ops和val summary ops放进不同的集合中即可。 train_writer tf.summary.FileWriter(log_dir /train, sess.graph) val_writer tf.summary.FileWriter(log_dir /val, sess.graph)# 假设train_loss和val_l…

Anaconda3 离线安装和配置 Django-3.2.7 使用 MySQL-5.7 数据库

Django文档 Settings / Core Settings / DATABASES 一节阐述了django与数据库交互配置的内容。 先在 MySQL 5.7 版本数据库中创建一个名为 learning_log_db 的数据库&#xff0c;和名为 myuser 的用户&#xff0c;并分配权限。 create databases learning_log_db; create use…

用JDBC写一个学生管理系统(添加、删除、修改、查询学生信息)(二)

本文上接用JDBC写一个学生管理系统&#xff08;添加、删除、修改、查询学生信息&#xff09; 这次主要是对上一文中的查询方法做一下调整&#xff0c;用创建内部类的方法来实现学生信息的查询。 我们先要定义一个接口IRowMapper&#xff1a; import java.sql.ResultSet;public…

(原)ubuntu中使用conda安装tensorflow-gpu

转载请注明出处&#xff1a; https://www.cnblogs.com/darkknightzh/p/9834567.html 参考网址&#xff1a; https://www.anaconda.com/blog/developer-blog/tensorflow-in-anaconda/ 之前的一篇&#xff0c;直接安装tensorflow的&#xff1a; https://www.cnblogs.com/darkknig…

SVO中 Inverse Compositional Image Alignment方法的学习笔记

SVO中 Inverse Compositional Image Alignment方法的学习笔记这篇文章光流法简介逆向光流法结尾这篇文章 在SVO系统中的"Relaxation Through Feature Alignment"部分使用的是一种特别的LK光流法&#xff1a;the inverse compositional Lucas-Kanade algorithm&#x…

Head First设计模式之目录

只有沉淀、积累&#xff0c;才能远航&#xff1b;沉沉浮浮&#xff0c;脚踏实地。 这本书已经闲置了好久&#xff0c;心血来潮&#xff0c;决定写个目录&#xff0c;让自己坚持看完这本书 创建型模式 抽象工厂模式(Abstract factory pattern): 提供一个接口, 用于创建相关或依赖…