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>

ROS自定义数据类型的更多相关文章

  1. 通过SQL Server自定义数据类型实现导入数据

    写在前面 在看同事写的代码时看到了SQL Server中可以自定义数据类型,而且定义的是DataTable类型的数据类型. 后我想起了以前我们导入数据时要么是循环insert写入,要么是SqlBulk ...

  2. hadoop的自定义数据类型和与关系型数据库交互

    最近有一个需求就是在建模的时候,有少部分数据是postgres的,只能读取postgres里面的数据到hadoop里面进行建模测试,而不能导出数据到hdfs上去. 读取postgres里面的数据库有两 ...

  3. OSG 自定义数据类型 关键帧动画

    OSG 自定义数据类型 关键帧动画 转自:http://blog.csdn.net/zhuyingqingfen/article/details/12651017 /* 1.创建一个AnimManag ...

  4. Oracle存储过程-自定义数据类型,集合,遍历取值

    摘要 Oracle存储过程,自定义数据类型,集合,遍历取值 目录[-] 0.前言 1.Packages 2.Packages bodies 3.输出结果 0.前言 在Oracle的存储过程中,可能会遇 ...

  5. Oracle自定义数据类型 1

    原文 oracle 自定义类型 type / create type 一 Oracle中的类型 类型有很多种,主要可以分为以下几类: 1.字符串类型.如:char.nchar.varchar2.nva ...

  6. Hadoop-MapReduce之自定义数据类型

    以下是自定义的一个数据类型,有两个属性,一个是名称,一个是开始点(可以理解为单词和单词的位置) MR程序就不写了,请看WordCount程序. package cn.genekang.hadoop.m ...

  7. Sql Server 自定义数据类型

    SQLServer 提供了 25 种基本数据类型: ·Binary [(n)]  二进制数据 既可以是固定长度的(Binary),也可以是变长度的.其中,n 的取值范围是从 1 到 8000.其存储窨 ...

  8. 初识Haskell 五:自定义数据类型和类型类

    对Discrete Mathematics Using a Computer的第一章Introduction to Haskell进行总结.环境Windows 自定义数据类型 data type de ...

  9. 如何在Qt中使用自定义数据类型

    这里我们使用下面这个struct来做说明(这里不管是struct还是class都一样): struct Player { int number; QString firstName; QString ...

  10. Java 基础 面向对象修饰符和自定义数据类型

    不同修饰符使用细节 常用来修饰类.方法.变量的修饰符如下: public 权限修饰符,公共访问, 类,方法,成员变量 protected 权限修饰符,受保护访问, 方法,成员变量 默认什么也不写 也是 ...

随机推荐

  1. 禁用显卡自动更新(解决官办驱动和OEM驱动相冲)

    起因 有一天打开MC(我的世界)时候突然显示显卡不支持,想了想可能是自己捣鼓电脑的时候弄坏了,提示说版本不支持,一看自己的驱动还是上古版本,但是之前都是可以正常玩的,想着更新下驱动就行了呗,更新完&q ...

  2. jQuery 十三中选择器总结

    <body style="overflow: scroll;"> <h1>我的测试</h1> <div id="111" ...

  3. 安装mySql 出现 one more product requirements have not been satisified

    安装mySql 出现 one more product requirements have not been satisified 原因是缺少一些依赖环境. 在弹出的对话框中点击 否. 然后点击执行, ...

  4. Springboot 整合 SpringCache 使用 Redis 作为缓存

    一直以来对缓存都是一知半解,从没有正经的接触并使用一次,今天腾出时间研究一下缓存技术,开发环境为OpenJDK17与SpringBoot2.7.5 SpringCache基础概念 接口介绍 首先看看S ...

  5. PostgreSQL函数:查询包含时间分区字段的表,并更新dt分区为最新分区

    一.需求 1.背景 提出新需求后,需要在www环境下进行验收.故需要将www环境脚本每天正常调度 但由于客户库无法连接,ods数据无法每日取,且连不上客户库任务直接报错,不会跑ods之后的任务 故需要 ...

  6. Java面试多线程/JUC等知识

    2021年6月30日完成此部分内容整理

  7. 04.Javascript学习笔记3

    1.箭头函数 箭头函数是一种更短的函数表达式. const age = birthyear => 2022 - birthyear; console.log(age(2000)) 箭头左边的bi ...

  8. Spring学习笔记 - 第二章 - 注解开发、配置管理第三方Bean、注解管理第三方Bean、Spring 整合 MyBatis 和 Junit 案例

    Spring 学习笔记全系列传送门: Spring学习笔记 - 第一章 - IoC(控制反转).IoC容器.Bean的实例化与生命周期.DI(依赖注入) [本章]Spring学习笔记 - 第二章 - ...

  9. 用了这么多年的 SpringBoot 你知道什么是 SpringBoot 的 Web 类型推断吗?

    用了这么多年的 SpringBoot 那么你知道什么是 SpringBoot 的 web 类型推断吗? 估计很多小伙伴都不知道,毕竟平时开发做项目的时候做的都是普通的 web 项目并不需要什么特别的了 ...

  10. drf快速使用 CBV源码分析 drf之APIView分析 drf之Request对象分析

    目录 序列化和反序列化 drf介绍和安装 使用原生django写接口 django DRF安装 drf快速使用 模型 序列化类 视图 路由 datagrip 使用postman测试接口 CBV源码分析 ...