ROS:节点发布消息无对应话题名称

2023-05-16

最近在写一个发布里程的节点的时候遇到了,发布了消息,在ros却没有对应话题情况。通过rostopic list 和 rosnode info 节点名 命令查看,均没有对应话题,大致代码如下:

class Estimator
{
private:
    ros::NodeHandle nh;
    ros::Publisher vo_pub;
public:
    Estimator(){vo_pub = nh.advertise<nav_msgs::Odometry>("vo", 1);}
    void publish()
    {
        nav_msgs::Odometry vo_odom;
        ... ...
        vo_pub.publish(vo_odom);
    }
}
int main(int argc, char **argv)
{
    //创建
    ros::init(argc, argv, "slam");
    ros::NodeHandle nh;
    ros::Rate r(10);
    while (ros::ok())
    {
        Estimator e;
        e.publish();
        ros::spinOnce();
        r.sleep();
    }
}

后来想了一下,发现是在循环中定义Estimator对象时,类的成员nh并被正确初始化。

解决方案一:

class Estimator
{
private:
    ros::NodeHandle nh;
    ros::Publishe vo_pub;
public:
    Estimator(){vo_pub = nh.advertise<nav_msgs::Odometry>("vo", 1);}
    void publish()
    {
        nav_msgs::Odometry vo_odom;
        ... ...
        vo_pub.publish(vo_odom);
    }
}
int main(int argc, char **argv)
{
    //创建
    ros::init(argc, argv, "slam");
    ros::NodeHandle nh;
    ros::Rate r(10);
    Estimator e;
    while (ros::ok())
    {
        e.publish();
        ros::spinOnce();
        r.sleep();
    }
}

这个方案适用于可以在循环外定义类的实例的情况,有些时候我们就想在循环里定义一个实例,应该怎么办呢?可以采用下面的方案。

解决方案二:

class Estimator
{
private:

public:
    Estimator(){}
    nav_msgs::Odometry vo()
    {
        nav_msgs::Odometry vo_odom;
        ... ...
        return vo_odom);
    }
}
int main(int argc, char **argv)
{
    //创建
    ros::init(argc, argv, "slam");
    ros::NodeHandle nh;
    ros::Publisher vo_pub = nh.advertise<nav_msgs::Odometry>("vo", 1);
    ros::Rate r(10);
    
    while (ros::ok())
    {
        Estimator e;
        nav_msgs::Odometry vo_odom = e.vo();
        vo_pub.publish(vo_odom);
        ros::spinOnce();
        r.sleep();
    }
}

这种办法,感觉比较麻烦。如果有啥好的办法,欢迎指教啊!

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

ROS:节点发布消息无对应话题名称 的相关文章

随机推荐

  • 阅读论文文献工具:Zotero

    zotero是开源的文献管理工具 xff0c 可以方便的收集 xff0c 组织 xff0c 引用 xff0c 和共享文献的工具 由安德鲁 w 梅隆基金会 xff0c 斯隆基金会以及美国博物馆和图书馆服务协会资助开发 zotero xff1a
  • Windows11安装docker

    docker官方网站 xff1a Docker Accelerated Containerized Application Development Win11下安装docker win11安装dockerwindow11安装docker小白
  • 光照强度传感器BH1750

    一 芯片介绍 BH1750FVI是一款数字型光强度传感器集成芯片 BH1750的内部由光敏二极管 运算放大器 ADC采集 晶振等组成 结构图 PD二极管通过光生伏特效应将输入光信号转换成电信号 xff0c 经运算放大电路放大后 xff0c
  • VSCode 安装教程(超详细)

    文章目录 VSCode 安装使用教程 xff08 图文版 xff09 那么 xff0c 什么是 IDE 呢 xff1f 目前 xff0c 前端开发主流的 IDE 有以下 5 个下边我们开始玩转 VSCodeVSCode 下载 安装Windo
  • 没有为字符串添加终止符;初始化为‘\0‘

    使用VS2019遇到问题 1 没有为字符串添加终止符 19条消息 消除VS中C6054 可能没有为字符串 34 XXX 34 添加字符串零终止符的警告 wowpH的博客 CSDN博客 可能没有为字符串添加零终止符 2 char a 10 6
  • 安装vue-element-admin报错git clone --mirror -q git://github.com/adobe-webplatform/eve.git C:\Users\Admin

    问题描述 vue element admin项目 执行安装操作时 xff1a 安装依赖 npm install 建议不要直接使用cnpm安装依赖 xff0c 会出现bug xff0c 可以通过如下操作解决npm下载速度慢的问题 由于淘宝 N
  • 添加启动页

    添加启动页 2021 5 7 实验内容 1 为学号后一位同学编写一个简单app 新建一个emptyactivity 在layout的activity main xml中添加如下代码 span class token number 1 spa
  • Python求最大公约数和最小公倍数

    使用辗转相除法求得最大公约数 xff0c 再利用最大公约数求得最小公倍数 辗转相除法求最大公约数 def gcd num1 num2 if num1 num2 61 61 0 return num2 else num1 num2 61 nu
  • matlab实现梯度下降法

    前记 xff1a 大三上学期学了 运筹学 课程 xff0c 里面包含了许多算法和模型 模型就是线性规划及线性规划的对偶理论 xff0c 单纯形法以及它的实际应用 xff1b 整数规划及其解法 xff08 分支定界法 割平面法匈牙利算法 xf
  • 互斥锁、条件变量、信号量浅析

    互斥锁 条件变量 信号量浅析 互斥锁与条件变量 条件变量是为了保证同步 条件变量用在多线程多任务同步的 xff0c 一个线程完成了某一个动作就通过条件变量告诉别的线程 xff0c 别的线程再进行某些动作 xff08 大家都在semtake的
  • Linux中的tty、pts、pty等概念辨析

    Linux中的tty pts pty等概念辨析 基本概念 tty pty pts ptmx tty xff08 终端设备的统称 xff09 xff1a tty一词源于Teletypes xff0c 或teletypewriters xff0
  • 树莓派4B (aarch64) 安装PyTorch 1.8 的可行方案

    树莓派4B aarch64 安装PyTorch 1 8 的可行方案 最终可行方案 试了一堆方案 xff08 源码编译 Fast ai的安装文件等 xff09 之后 xff0c 终于找到一个可行的方案 是在 PyTorch 官方讨论社区的一个
  • Nvidia CUDA初级教程1 CPU体系架构综述

    Nvidia CUDA初级教程1 CPU体系架构综述 视频 xff1a https www bilibili com video BV1kx411m7Fk p 61 2 讲师 xff1a 周斌 本节内容 xff1a 了解现代CPU的架构和性
  • 解决VNC远程连接树莓派,窗口显示不全的问题

    1 vnc连接 xff0c sudo raspi config中7 A5选分辨率就好 或2 通过SSH命令行的方式连接树莓派 xff0c 在命令行输入 xff1a vncserver geometry 1080x1024
  • qt官网下载指导(新手易犯错误)

    一 获取资源 注意这里不要直接百度qt的官网 xff0c 如果直接百度下载会让你注册一个qt的账号 xff0c 并且一般没人下载最新版的qt6 当然也可以下载旧的版本 xff0c 但是由于本人比较愚笨 xff0c 还没有在官网找到qt旧版本
  • AI智能呼叫中心系统,主要应用场景有哪些?

    互联网智能时代 xff0c 销售人员不再每天拨打数百个电话 xff0c 当前呼叫中心电话系统被企业常用在电销行业 金融行业 保险 贷款催收行业等外呼销售行业 由传统的呼叫中心基础上不断的进行升级和改善 xff0c 逐渐演变为人工智能电话外呼
  • ROS:geometry_msgs中 Point32 , Point ,PointStamped 的定义和转换

    ROS geometry msgs中Point32 Point PointStamped 的定义和转换 Point32和Point的定义Point32和Point的转换PointStamped 的定义和转换 本文所用ROS为kinetic版
  • ROS:回调函数不执行

    最近在写一个接收图片消息的节点时 xff0c 遇到了两次回调函数不调用的情况 xff0c 记录一下 循环中有continue被跳过了 具体代码如下 xff1a while ros ok if mat data 61 61 nullptr s
  • Python猜拳游戏

    关键点在于 user input 43 1 3与computer input的值进行比较 xff0c 这样就省掉了对于边界值0和2的单独判断 xff0c 简化了代码 from random import choice def finger
  • ROS:节点发布消息无对应话题名称

    最近在写一个发布里程的节点的时候遇到了 xff0c 发布了消息 xff0c 在ros却没有对应话题情况 通过rostopic list 和 rosnode info 节点名 命令查看 xff0c 均没有对应话题 xff0c 大致代码如下 x