ROS发布自定义数组和数据

2023-05-16

主要使用std_msgs数据结构

rosmsg show std_msgs

在这里插入图片描述自定义话题消息
1、新建msg文件
2、修改CMakeLists.txt文件
3、修改package.xml文件
4、生成对应头文件
5、编写发布者程序
6、编写接收者程序

1、一个数组+一个浮点数据

cd catkin_ws
mkdir msg && cd msg
gedit test.msg

float32[[]  a
float32     b

2、在find_package中添加geometry_msgs message_generation,
取消add_message_files和FILES以及下面反括号的注释,在下面添加一行mypath.msg
取消generate_messages所在部分的注释,将geometry_msgs添加进去
取消catkin_package所在部分的注释,在std_msgs后面添加message_runtime

find_package(catkin REQUIRED COMPONENTS 
   ...
    message_generation
    )
add_message_files(
 FILES
 test.msg
	)
catkin_package(
  INCLUDE_DIRS include
#  LIBRARIES gazebo_nav
  CATKIN_DEPENDS roscpp rospy std_msgs message_runtime
#  DEPENDS system_lib
)
generate_messages(
  DEPENDENCIES
  geometry_msgs
  std_msgs  # Or other packages containing msgs
)

3、在package.xml文件中添加依赖

<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>

4、
msg头文件在devel/include/功能包名/test.h
5、C++发布者

#include <ros/ros.h>
#include <std_msgs/Float32.h>
#include <功能包名/test.h>

int main(int argc,char** argv)
{
    ros::init(argc,argv,"matrix_pub");
    ros::NodeHandle n;
    ros::Publisher pub = n.advertise<gazebo_nav::matrix_msg>("matrix_test",10);
    ros::Rate loop(10);
    while (ros::ok())
    {
        gazebo_nav::matrix_msg msg;
        msg.a = {1,2,3};
        msg.b =4.0;        
        pub.publish(msg);
        ros::spinOnce();
        loop.sleep();
    }
    return 0;

6、C++订阅者

#include <ros/ros.h>
#include <功能包名/test.h>
#include <std_msgs/Float32.h>

std::vector<int> v1;
float32 b;
void matrix_CB(const gazebo_nav::matrix_msg& msg)
{
    ROS_INFO("this is matrix msg sub:");
    for(int i=0;i < msg.a.size();i++)
    {
        v1.push_back(msg.a[i]);
    }
		b.push_back(msg.b)
}
int main(int argc,char** argv)
{
    ros::init(argc,argv,"matrix_test_sub");
    ros::NodeHandle n;
    ros::Subscriber sub = n.subscribe("matrix_test",10,matrix_CB);
    ros::Rate r(10);
    ros::spin();
    return 0;
}

python发布者

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import rospy
from 功能包名.msg import Test
from random import random

rospy.init_node('test_publisher')

pub=rospy.Publisher('test',Test,queue_size=5)

rate =rospy.Rate(2)

while not rospy.is_shutdown():
    msg = Test()
    msg.a =[(random(),random(),random(),random()),(random(),random(),random(),random())]
    msg.b = 3.3
    pub.publish(msg.ccc)
    rate.sleep()

python订阅者

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import rospy
from 功能包名.msg import Test
from random import random
def pointCallback(msg):
		a = msg.a
		b = msg.b
def point_subscriber():
    rospy.init_node('test_subscribe')
    rospy.Subscriber('test',Test,pointCallback)
    rospy.spin()

if __name__ == '__main__':
    point_subscriber()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS发布自定义数组和数据 的相关文章

  • 自用笔记-机载计算机与PX4系列的配合

    机载计算机与Pixhawk系列的配合 Pixhawk与配套计算机 span class token punctuation span Raspberry Pi xff0c Odroid xff0c Tegra K1 span class t
  • QGC-TX2-PX4

    span class token number 1 span 安装mavros sudo apt install ros span class token operator span melodic span class token ope
  • ROS--geometry_msgs/PoseStanped消息解读

    http wiki ros org geometry msgs 可以看到不同类型的消息 xff0c 点击PoseStamped进入PoseStamped message 页面 1 通过包含头文件可以调用该类型的消息 span class t
  • MAVRos--SetMavFrame更改速度控制的坐标系

    使用服务 xff08 Service xff09 来更改速度控制的坐标系 mavros支持的坐标系 uint8 FRAME GLOBAL span class token operator 61 span span class token
  • PX4中的控制分配

    PX4中的控制分配 本文主要讲讲在PX4代码中pwm计算的过程 xff0c 即如何将旋翼姿态控制模块产生的控制指令 三轴力矩 43 机体轴升力 转换为对应的PWM信号 xff1f 如果您想修改控制分配矩阵 xff0c 或者修改混控算法 xf
  • 常用MAVROS话题和服务

    https zhuanlan zhihu com p 364872655 一 常用接收的话题 1 1 系统状态 消息名称 xff1a mavros state 类型 xff1a mavros msgs State 头文件 xff1a mav
  • QGC for Android 串口深扒

    QT for Android 实现机制是需要java库支持的 xff0c QT原生接口QSerialPort不支持Android系统的串口开发 QGC使用QT框架 xff0c 采用c 43 43 语言通过基类linkinterface和qt
  • ROS系统 摄像头标定camera calibration

    1 安装标定功能包 sudo apt span class token operator span get install ros span class token operator span melodic span class toke
  • make px4_sitl_default gazebo

    make px4 sitl default gazebo这个过程可能比较考验电脑内存 xff0c 我电脑有几次CPU都是100 运行 xff0c 而且停下卡住 情况可能如下 xff1a 11 33 Building CXX object C
  • sklearn学习笔记9:逻辑回归

    定义 xff1a 是一种名为回归的线性分类器 xff0c 其本质是由线性回归变化而来的 xff0c 一种广泛使用于分类问题中的广义回归算法 xff0c 通常用于二分类问题 xff0c 也可以做多分类 本质 xff1a 是一个返回对数几率的
  • XTDrone--执行roslaunch px4 indoor1.launch 遇到的问题

    RLException while processing home karasi PX4 Firmware launch single vehicle spawn xtd launch Invalid tag Cannot load com
  • PX4编译中的各种问题

    最近在研究如何使用UAV xff0c 由于是初学者 xff0c 不好直接上手实体无人机 xff0c 因此考虑通过在gazebo中模拟的方式进行一下无人机的简单使用模拟 xff0c 于是了解到了PX4这个东西 xff0c 他不仅支持固件写入
  • T265+ROS+opencv4.5.3

    OpenCV4 for CUDA安装 OpenCV提供图像处理过程中的基础API xff0c 所以首先完成OpenCV4的构建 为了利用Jetson平台拥有CUDA加速的优势需要先安装OpenCV的CUDA版本 xff08 Jetpack默
  • PX4官方视觉惯性里程计测距 VIO

    官方地址 xff1a https docs px4 io master zh computer vision visual inertial odometry html 视觉位置和GPS不能同时运行 VIO使用视觉里程计 xff08 vis
  • flycarcq problem

    1 install ceres Could not find a package configuration file provided by Ceres with any of the following names CeresConfi
  • jetson xavier nx 安装D435i

    1 xff0c Realsense sdk安装 git clone https span class token operator span span class token comment github com jetsonhacks i
  • 卸载opencv 安装cuda版本的opencv

    第一推荐 https span class token operator span span class token comment zhuanlan zhihu com p 411901208 span 一 卸载opencv xff08
  • D435i VINS-Fusion环境搭建

    参考网址 https span class token operator span span class token comment github com kuankuan yue VINS FUSION leanrning span 1
  • jetson nx 安装cuda 10.2

    看到的另外两个方案 https span class token operator span span class token comment blog csdn net FRD2009041510 article details 4204
  • LIO-SAM ouster

    1 ROS tested with Melodic sudo apt span class token operator span get install span class token operator span y ros span

随机推荐

  • 数据分析业务场景 | 用户画像

    一 概况 定义 是根据用户的一系列行为和意识过程建立起来的多维度标签 xff1b 是根据用户人口学特征 xff0c 网络浏览内容 xff0c 网络社交活动和消费行为等信息而抽象出的一个标签化的用户模型 xff1b 首要任务 xff1a 根据
  • D435i vins搜集资料

    在D435i上运行VINS Mono 前面都测试好之后就可以再D435i上运行VINS Mone了 xff0c 这里特地感谢下博客如何用Realsense D435i运行VINS Mono等VIO算法 获取IMU同步数据的作者Manii x
  • mavros常用控制消息

    数传 用于查看数传状态 xff1a span class token operator span mavros span class token operator span span class token function radio s
  • 启动T265

    室内T265定点飞行 先启动基本vio脚本 roslaunch p450 experiment p450 vio onboard launch 再启动控制脚本 roslaunch p450 experiment p450 vio contr
  • VINS标定---Ego-planner

    1 检查realsense 和飞控的连接 查看飞控串口 ls span class token operator span dev span class token operator span ttyA span class token o
  • ego-planner框架和参数

    drone id 对应飞机的编号 从0开始 map size xyz 地图场地大小 xff0c 给的目标点要在地图范围内 fx fy cx cy 相机内参 obstacles inflation 障碍物膨胀大小 是 飞机外廓尺寸的1 5倍
  • 执行 install_geographiclib_datasets.sh 错误

    https blog csdn net weixin 41865104 article details 119418901 在 usr share 新建GeographicLib文件夹 在 usr share GeographicLib 文
  • 通过mavros的桥接连接qgc

    fcu url指定的是飞控的连接方式 xff0c 设置飞控为正确的端口即可 gcs url指定的是QGC所在主机的IP xff0c 这个换为运行QGC主机的IP地址即可 如果不知道主机的IP地址可以用udp发布方式 gcs url span
  • ros在同一工作空间下调用其它功能包的头文件

    A功能包需要调用B功能包的头文件 在B功能包CMakeLists txt中修改 去掉catkin package中的include注释 xff08 让别人能识别到自己的头文件 xff09 A功能包在find package时能识别到B功能包
  • 千寻位置NTRIP网络基准站

    端口选择NTRIP连接方式 xff1b 点击 Connect 输入Enter URL Enter URL格式 xff1a http NTRIP账号 xff1a 密码 64 rtk ntrip qxwz com 通道号 RTCM32 GGB
  • 关于egoplanner fastplanner内PID的控制

    Kp0 Kp1 Kp2 Kv0 Kv1 Kv2
  • 如何描述数据分布的特征?

    数据分布的特征可以从集中趋势 xff0c 离中趋势 xff0c 偏态和峰态三个方面进行描述 一 集中趋势 xff08 位置 xff09 是一组平均指标 xff0c 它反映了总体的一般水平或分布 1 平均数 分为 xff1a 简单平均数 xf
  • 对于egoplanner的障碍物分析

    根源 根据障碍物检查并分段初始轨迹 bool BsplineOptimizer span class token operator span span class token function check collision and reb
  • t265 通过mavros传递定位信息px4

    https github com thien94 vision to mavros 通过话题 mavros vision pose pose 向PX4发送位置数据 t265两种安装方式 xff1a USB口朝右镜头向前和向下安装 如需其它方
  • T265 VS D435i

  • px4_sitl_defult error

    span class token operator span Firmware span class token operator span Tools span class token operator span sitl gazebo
  • Intel RealSense D435i与IMU标定用于vins-fusion

    1 标定imu工具 mkdir span class token operator span p imu catkin ws span class token operator span src cd imu catkin ws span
  • PCL点云滤波处理D435i深度图用于octomap

    D435i直接输出的深度点云噪点太多经过滤波处理后再使用 直通滤波 保留或删除某一轴线特定范围内的点 xff0c 改变视野范围 pcl span class token operator span PassThrough span clas
  • ros编译过程中缺少各种依赖库的集合操作

    1 OpenGL All the OpenGL functionality tests failed You might need to modify the include and library search paths by edit
  • ROS发布自定义数组和数据

    主要使用std msgs数据结构 rosmsg show std msgs 自定义话题消息 1 新建msg文件 2 修改CMakeLists txt文件 3 修改package xml文件 4 生成对应头文件 5 编写发布者程序 6 编写接