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