ROS之自定义msg
一、
配置步骤,建立文件过程参考古月居的书,修改xml文件和CMakeList文件参考下面链接。注意不使用 <run_depend>message_runtime</run_depend>, 而是使用<exec_depend> message_runtime </exec_depend>,CMakeList文件中取消注释即可。
在ROS中定义并使用自己的消息类型
二、自定义的msg如何使用
发布订阅-ROS自定义消息类型
把msg类的各个参数设好,然后一句 pub.publish(msg); 就OK了
1.新建一个ros功能包
$cd ~/catkin_ws/src/
$catkin_create_pkg auto_charge_pub roscpp std_msgs message_generation
编辑package.xml:
添加:
<build_depend>message_generation</build_depend>
<run_depend>message_runtime</run_depend> 编辑CMakeLists.txt: 添加: catkin_package(...CATKIN_DEPENDS message_runtime ......)add_message_files(FILESAutoChargeMsg.msg )generate_messages(DEPENDENCIESstd_msgs )2.新建msg消息 $cd catkin_ws/src/auto_charge_pub $mkdir msg 在新建的msg文件夹中新建AutoChargeMsg.msg,文件中填入: int32 A int32 B int32 C3.创建发布和订阅节点源文件4.功能包源码 (1)文件结构: CMakeLists.txt include msg package.xml src (2)package.xml: <?xml version="1.0"?> <package><name>auto_charge_pub</name><version>0.0.0</version><description>The auto_charge_pub package</description><maintainer email="zhanghu@todo.todo">zhanghu</maintainer><license>TODO</license><buildtool_depend>catkin</buildtool_depend><build_depend>message_generation</build_depend><build_depend>roscpp</build_depend><build_depend>std_msgs</build_depend><run_depend>roscpp</run_depend><run_depend>std_msgs</run_depend><build_depend>message_generation</build_depend><run_depend>message_runtime</run_depend><export></export> </package>(3)CMakeLists.txt: cmake_minimum_required(VERSION 2.8.3) project(auto_charge_pub)find_package(catkin REQUIRED COMPONENTSmessage_generationroscppstd_msgs ) add_message_files( FILESAutoChargeMsg.msg) generate_messages(DEPENDENCIESstd_msgs) catkin_package(CATKIN_DEPENDS message_runtime roscpp std_msgs ) include_directories(${catkin_INCLUDE_DIRS} ) add_executable(auto_charge_pub src/auto_charge_pub.cpp) add_executable(auto_charge_sub src/auto_charge_sub.cpp) target_link_libraries(auto_charge_pub ${catkin_LIBRARIES}) target_link_libraries(auto_charge_sub ${catkin_LIBRARIES})(4)AutoChargeMsg.msg: int32 A int32 B int32 C(5)auto_charge_pub.cpp: #include "ros/ros.h" #include "auto_charge_pub/AutoChargeMsg.h" #include <sstream>int main(int argc, char **argv) {ros::init(argc, argv, "example_charge_pub");ros::NodeHandle n;ros::Publisher pub = n.advertise<auto_charge_pub::AutoChargeMsg>("chargedata", 1000);ros::Rate loop_rate(10);while (ros::ok()){auto_charge_pub::AutoChargeMsg msg;msg.A = 1;msg.B = 2;msg.C = 3;pub.publish(msg);ros::spinOnce();loop_rate.sleep();}return 0; }(6)auto_charge_sub.cpp: #include "ros/ros.h" #include "auto_charge_pub/AutoChargeMsg.h"void messageCallback(const auto_charge_pub::AutoChargeMsg::ConstPtr& msg) {ROS_INFO("I heard: [%d] [%d] [%d]", msg->A, msg->B, msg->C); }int main(int argc, char **argv) {ros::init(argc, argv, "example_charge_sub");ros::NodeHandle n;ros::Subscriber sub = n.subscribe("chargedata", 1000, messageCallback);ros::spin();return 0; }5.编译与运行 $cd ~/catkin_ws/ $catkin_make$roscore $rosrun auto_charge_pub auto_charge_pub $rosrun auto_charge_pub auto_charge_sub结果输出 [ INFO] [1496804922.698230235]: I heard: [1] [2] [3] [ INFO] [1496804922.797224084]: I heard: [1] [2] [3] [ INFO] [1496804922.896686623]: I heard: [1] [2] [3] [ INFO] [1496804922.996713962]: I heard: [1] [2] [3] [ INFO] [1496804923.107267357]: I heard: [1] [2] [3] [ INFO] [1496804923.197747661]: I heard: [1] [2] [3] [ INFO] [1496804923.296960871]: I heard: [1] [2] [3] [ INFO] [1496804923.396757136]: I heard: [1] [2] [3] [ INFO] [1496804923.496417082]: I heard: [1] [2] [3] [ INFO] [1496804923.597160904]: I heard: [1] [2] [3] [ INFO] [1496804923.705754664]: I heard: [1] [2] [3] ...
转载请注明出处:爱学习的长河落日 http://www.cnblogs.com/hiram-zhang/ 商业用途获取版权请发邮件至:zhang_hu_0728@163.com
在两个功能包里分别发布和订阅自定义msg,两个功能包都需要配置CMakeList文件和xml文件。
三、
ROS入门 创建msg(消息)和svr(服务)遇到的问题
The manifest (with format version 2) must not contain the following tags: run_depend
的警告,这个的主要解决方法是使用catkin方式时在package.xml文件中将教程中添加的两行语句
<build_depend>message_generation</build_depend>
<run_depend>message_runtime</run_depend>
要改成
<build_depend> message_generation </build_depend>
<exec_depend> message_runtime </exec_depend>
或者
<build_export_depend>message_generation</build_export_depend>
<exec_depend>message_runtime</exec_depend>
这样就得以解决问题
四、
Could not find messages which '/home/flying/catkin_ws/src/beginner_tutorials/msg/Num.msg' depends
问题:Could not find messages which
'/home/flying/catkin_ws/src/beginner_tutorials/msg/Num.msg' depends on.
Did you forget to specify generate_messages(DEPENDENCIES ...)?
解决
Num.msg
中的内容应该为
int64 num
如果有其他的出错 先删除掉其他的 只保留这个
ROS之自定义msg相关推荐
- ros中自定义msg消息并用其他功能包调用
注:本篇文章仅作为学习笔记,如有侵权,请联系删除. 目录 一.创建msg消息 1.在src目录创建自定义的msg功能包. 2.修改自定义msg功能包内的package.xml文件 3.修改自定义msg ...
- python中msg函数_【ROS】ROS自定义msg以及在python中的使用
总结一下ROS自定义msg的用法(python) 参考:ROS Tutorials 一.自定义msg 1.新建msg文件 ROS自定义message需要在软件包下新建 /msg 文件夹,并在此文件夹下 ...
- ROS自定义msg类型及使用
转载自:https://blog.csdn.net/u013453604/article/details/72903398 ROS自定义msg类型及使用 张京林要加油 2017-06-07 20:09 ...
- ROS话题通信自定义msg实现发送接收(六)c++、python
目录 自定义msg简介 自定义msg实现 话题通信自定义msg调用(C++) vscode配置 实现发布方 实现订阅方 Python实现 编写发布方 实现订阅方 自定义msg简介 在 ROS 通信协议 ...
- ros自定义service消息.srv文件中增加自定义.msg消息
先制作msg文件 1. 在disinfect_msg包下创建 :testInfo.msg 文件 int32 Id string TargetName string X string Y string ...
- msg消息及自定义msg消息
msg消息及自定义msg消息 1.1 基本概念 msg消息 是ROS topic通讯节点间传递的内容. msg消息描述的是业务间传递数据,也可以理解为业务间数据的抽象化. 1.2 常见Msg消息 1. ...
- ROS中自定义带有header的消息文件
ROS中自定义带有header的消息文件 为什么需要header? 在发布端发布的数据或者在订阅端订阅数据时,数据通常是连续发布或者被订阅的,这些信息没有特定的标识,搞得我们发和收了很多消息,都不知道 ...
- ROS中自定义复杂数据类型
ROS中自定义复杂数据类型 先说一下需求,想要服务的请求数据为一个point(x,y,z)的数组.具体的形式表示如: [point1,point2,...] geometry_msgs::Point ...
- ROS用python编写订阅者和发布者(使用存放在其他package的自定义msg文件)
本文记录一下用python编写使用自定义消息的ros订阅者和发布者时存在的一些问题. 声明一下,本文的代码是从自己项目工程截取的,不适合直接使用,只适合作为参照模板 1.首先是如何创建msg文件和 ...
最新文章
- 南京大学潘天群教授:人类智能发展的宏大叙事
- 2012组策略自动部署wsus
- ios webView 放大网页解决/input 获得焦点focus 网页放大 解决
- Google正式收购百度
- Sigmoid是品优函数吗?
- 5,6,7_InfluxDB数据保留策略,InfluxDB的关键概念,带有时区进行查询示例
- Springboot的异步、定时、邮件任务
- 关于海量分页的补充说明(转)
- C++ 与 php 的交互 之----- C++ 异步获取 网页文字内容,异步获取 php 的 echo 值。...
- 排列和组合、以及数列(五)
- 异步tcp通信——APM.Core 服务端概述
- 《统计学习方法》代码全解析——第十三部分无监督学习概论
- python高阶函数(三分钟读懂)
- SSM框架开发web项目系列(四) MyBatis之快速掌握动态SQL
- python编程语言-初学者最容易学的六种编程语言
- 聊下并发和Tomcat线程数(错误更正)
- 什么样的简历,面试官一看就知道多少水份!!!
- 利用matlab求图像均值和方差的几种方法
- XenCenter 创建 New VM
- js string转json有斜杠_json 带斜杠时如何解析的实现
热门文章
- imu oracle,问一个关于IMU REDO的问题~
- java集成钉钉sdk_JAVA maven项目使用钉钉SDK获取token、用户
- 257.二叉树的所有路径
- wordpress php执行短代码_【漏洞通告】PHP远程代码执行漏洞(CVE-2019-11043)
- python mysqldb 清除缓存_Python MySqlDB 增删改数据库
- gitee 拉取其他分支_如何使用 Gitee 快速搭建 ESP-IDF 开发环境(Windows 版)
- “干细胞制剂制备与质检行业标准”上海“出炉”
- 循环遍历和迭代器遍历如何选择
- 移动设备感染率及物联网设备安全漏洞数量创下历史新高
- BSP、PSP到底指什么?