一、

配置步骤,建立文件过程参考古月居的书,修改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相关推荐

  1. ros中自定义msg消息并用其他功能包调用

    注:本篇文章仅作为学习笔记,如有侵权,请联系删除. 目录 一.创建msg消息 1.在src目录创建自定义的msg功能包. 2.修改自定义msg功能包内的package.xml文件 3.修改自定义msg ...

  2. python中msg函数_【ROS】ROS自定义msg以及在python中的使用

    总结一下ROS自定义msg的用法(python) 参考:ROS Tutorials 一.自定义msg 1.新建msg文件 ROS自定义message需要在软件包下新建 /msg 文件夹,并在此文件夹下 ...

  3. ROS自定义msg类型及使用

    转载自:https://blog.csdn.net/u013453604/article/details/72903398 ROS自定义msg类型及使用 张京林要加油 2017-06-07 20:09 ...

  4. ROS话题通信自定义msg实现发送接收(六)c++、python

    目录 自定义msg简介 自定义msg实现 话题通信自定义msg调用(C++) vscode配置 实现发布方 实现订阅方 Python实现 编写发布方 实现订阅方 自定义msg简介 在 ROS 通信协议 ...

  5. ros自定义service消息.srv文件中增加自定义.msg消息

    先制作msg文件 1. 在disinfect_msg包下创建 :testInfo.msg 文件 int32 Id string TargetName string X string Y string ...

  6. msg消息及自定义msg消息

    msg消息及自定义msg消息 1.1 基本概念 msg消息 是ROS topic通讯节点间传递的内容. msg消息描述的是业务间传递数据,也可以理解为业务间数据的抽象化. 1.2 常见Msg消息 1. ...

  7. ROS中自定义带有header的消息文件

    ROS中自定义带有header的消息文件 为什么需要header? 在发布端发布的数据或者在订阅端订阅数据时,数据通常是连续发布或者被订阅的,这些信息没有特定的标识,搞得我们发和收了很多消息,都不知道 ...

  8. ROS中自定义复杂数据类型

    ROS中自定义复杂数据类型 先说一下需求,想要服务的请求数据为一个point(x,y,z)的数组.具体的形式表示如: [point1,point2,...] geometry_msgs::Point ...

  9. ROS用python编写订阅者和发布者(使用存放在其他package的自定义msg文件)

    本文记录一下用python编写使用自定义消息的ros订阅者和发布者时存在的一些问题. ​ 声明一下,本文的代码是从自己项目工程截取的,不适合直接使用,只适合作为参照模板 1.首先是如何创建msg文件和 ...

最新文章

  1. 南京大学潘天群教授:人类智能发展的宏大叙事
  2. 2012组策略自动部署wsus
  3. ios webView 放大网页解决/input 获得焦点focus 网页放大 解决
  4. Google正式收购百度
  5. Sigmoid是品优函数吗?
  6. 5,6,7_InfluxDB数据保留策略,InfluxDB的关键概念,带有时区进行查询示例
  7. Springboot的异步、定时、邮件任务
  8. 关于海量分页的补充说明(转)
  9. C++ 与 php 的交互 之----- C++ 异步获取 网页文字内容,异步获取 php 的 echo 值。...
  10. 排列和组合、以及数列(五)
  11. 异步tcp通信——APM.Core 服务端概述
  12. 《统计学习方法》代码全解析——第十三部分无监督学习概论
  13. python高阶函数(三分钟读懂)
  14. SSM框架开发web项目系列(四) MyBatis之快速掌握动态SQL
  15. python编程语言-初学者最容易学的六种编程语言
  16. 聊下并发和Tomcat线程数(错误更正)
  17. 什么样的简历,面试官一看就知道多少水份!!!
  18. 利用matlab求图像均值和方差的几种方法
  19. XenCenter 创建 New VM
  20. js string转json有斜杠_json 带斜杠时如何解析的实现

热门文章

  1. imu oracle,问一个关于IMU REDO的问题~
  2. java集成钉钉sdk_JAVA maven项目使用钉钉SDK获取token、用户
  3. 257.二叉树的所有路径
  4. wordpress php执行短代码_【漏洞通告】PHP远程代码执行漏洞(CVE-2019-11043)
  5. python mysqldb 清除缓存_Python MySqlDB 增删改数据库
  6. gitee 拉取其他分支_如何使用 Gitee 快速搭建 ESP-IDF 开发环境(Windows 版)
  7. “干细胞制剂制备与质检行业标准”上海“出炉”
  8. 循环遍历和迭代器遍历如何选择
  9. 移动设备感染率及物联网设备安全漏洞数量创下历史新高
  10. BSP、PSP到底指什么?