1.简介

自定义数据包可以在使用数据的功能包内进行创建,也可以单独创建一个功能包来专门进行自定义数据类型.

1.步骤:

1.创建一个功能包

进入工作空间catkin_ws/src

catkin_create_pkg test_msgs actionlib std_msgs message_generation actionlib_msgs
cd ../
catkin_make

2.创建自定义数据

  • 话题类型:

    在功能包下新建一个msg的文件夹,创建testmsg.msg文件
bool mode
float64 angle
  • 服务类型:

    在功能包下新建一个srv的文件夹,创建testsrv.srv文件
#请求
int64 a
int32 b
---
#应答
int64 sum
  • 动作类型:

    在功能包下新建一个action文件夹,创建testaction.action文件
#定义目标信息
uint32 dish_id
---
#定义结果信息
uint16 total
---
#定义周期反馈信息
float32 feed_msg

3.修改CMakeLists.txt

cmake_minimum_required(VERSION 2.8.3)
project(test_msgs) find_package(catkin REQUIRED COMPONENTS
actionlib
message_generation
std_msgs
actionlib_msgs
) add_action_files(
DIRECTORY action
FILES
testaction.action
)
add_message_files(
DIRECTORY msg
FILES
testmsg.msg
)
add_service_files(
DIRECTORY srv
FILES
testsrv.srv
) generate_messages(
DEPENDENCIES
std_msgs
actionlib_msgs
) catkin_package()

4.修改package.xml文件

<?xml version="1.0"?>
<package format="2">
<name>test_msgs</name>
<version>0.0.0</version>
<description>The test_msgs package</description>
<maintainer email="penuel@todo.todo">penuel</maintainer>
<license>TODO</license> <buildtool_depend>catkin</buildtool_depend> <build_depend>actionlib</build_depend>
<build_depend>message_generation</build_depend>
<build_depend>std_msgs</build_depend>
<build_depend>actionlib_msgs</build_depend> <build_export_depend>actionlib</build_export_depend>
<build_export_depend>std_msgs</build_export_depend>
<build_export_depend>message_generation</build_export_depend>
<build_export_depend>actionlib_msgs</build_export_depend> <exec_depend>actionlib</exec_depend>
<exec_depend>std_msgs</exec_depend>
<exec_depend>message_runtime</exec_depend>
<exec_depend>actionlib_msgs</exec_depend> <export>
</export>
</package>

5.最后进行编译 catkin_make

2.使用自定义的数据

  • 话题使用:

    1.发布话题:
#include "ros/ros.h"
#include "test_msgs/testmsg.h"
int main(int argc, char** argv)
{
ros::init(argc,argv,"testmsg_node");
ros::NodeHandle nh;
ros::Publisher pub1 = nh.advertise<test_msgs::testmsg>("/test_msgs_pub",1000);
ros::Rate loop_rate(10);
test_msgs::testmsg test_pub;
while( ros::ok() )
{
test_pub.angle = 50;
test_pub.mode = 10;
pub.publish(test_pub);
ros::spinOnce();
loop_rate.sleep(); }
return 0;
}

CMakeLists.txt:

find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
test_msgs
)

package.xml:

 <buildtool_depend>catkin</buildtool_depend>
<build_depend>roscpp</build_depend>
<build_depend>rospy</build_depend>
<build_depend>std_msgs</build_depend>
<build_depend>test_msgs</build_depend>
<build_export_depend>roscpp</build_export_depend>
<build_export_depend>rospy</build_export_depend>
<build_export_depend>std_msgs</build_export_depend>
<build_export_depend>test_msgs</build_export_depend>
<exec_depend>roscpp</exec_depend>
<exec_depend>rospy</exec_depend>
<exec_depend>std_msgs</exec_depend>
<exec_depend>test_msgs</exec_depend>

最新文章

  1. Android Studio导入第三方类库的方法
  2. luogg_java学习_02_基本语法
  3. 使用easy ui过程中资料(网址)总结
  4. FusionCharts或其它flash的div图层总是浮在最上层? (转)
  5. EPROCESS 进程/线程优先级 句柄表 GDT LDT 页表 《寒江独钓》内核学习笔记(2)
  6. unicode string和ansi string的转换函数及获取程序运行路径的代码
  7. 【原】Storm环境搭建
  8. redis中5种数据结构的使用
  9. Limit参数优化MySQL查询的方法
  10. jQuery实现购物车多物品数量的加减+总价+删除计算
  11. 关于Java(JDBC介绍)
  12. Change the ball--hdu2277
  13. [Tree]Binary Tree Preorder Traversal
  14. [ javascript ] 司徒正美的fadeOut-fadeIn效果!
  15. JDBC使用数据库来完成分页功能
  16. How to debug with IntelliJ IDEA + Grails 2.3.x (转)
  17. List转换成JSON对象报错(三)
  18. Cmd命令 查看端口被占用
  19. 二叉搜索树(BST)详解
  20. New Year and Old Subsequence CodeForces - 750E (dp矩阵优化)

热门文章

  1. 数电第二周总结_by_yc
  2. 详记apache-poi的使用,将word,excel,ppt转换为html
  3. c++11 线程池--鸿蒙OS
  4. 搭建漏洞环境及实战——搭建DVWA漏洞环境
  5. go_json_learn
  6. MongoDB - 模式设计
  7. [常用工具] PyAutoGUI使用教程
  8. Hadoop详解(10) - Hadoop HA高可用
  9. ArcGIS插件-太乐地图
  10. Java的深拷贝和浅拷贝的区别