网上出现的解决方法

刚出现这个问题的时候,惯性思维先在网上搜搜呗,结果搜出来的解决方法还真不少,有说fixed frame设置错误的,比如下面这个https://blog.csdn.net/maizousidemao/article/details/87621383,还有说是编码问题的,要安装一个unicode编码,比如这个:https://blog.csdn.net/sinat_23084397/article/details/89678596,国外也有说这个解决方法的,感觉出现这个毛病的不少,但我试过毛用没有啊,顿时有点慌了。
还有人说是joint_state_publisher节点没有启动,比如这个:https://www.freesion.com/article/85881374771/,我打开nodelist,joint_state_publisher赫然在列啊,感觉问题有点不妙!

我的问题

于是乎,还是得仔细分析分析。首先,我的问题跟别人的最大区别是,有的关节能转换成功,有的关节就不行。见下图:
我就发现,转换不成功的关节,全都不是fixed类型的,这里是指打开urdf文件,里面有一大堆link和joint的描述嘛,就是下图第一行的type不是fixed,是continuous或者revolute啊等等的,相反地,joint的type只要是fixed就能转换成功。

为了验证我的猜想,我把continuous改成了fixed,结果还真就转换成功了。我又打开rqt看看tf_tree,发现不是fixed的joint也在,但是少了一个link,少的这个link是pitch_platform的父link,叫yaw_platform,它是从fixed的关节到非fixed关节的过渡,正常情况是base_link -> yaw_platform -> pitch_platform。

我就感觉是关节状态的发布有问题,也就是joint_state_publisher还是有问题,然后我就去查joint_state_publisher,发现它发布的都是非fixed的joint的状态,这个节点负责输出关节信息,并发布/joint_state话题到/move_group和/robot_state_publisher节点;然后robot_state_publisher接收joint_state_publisher发布的话题消息,并通过tf发布结果到/move_group节点。具体参考:https://blog.csdn.net/weixin_36965307/article/details/104945052。
我的情况是,joint_state_publisher也在运行,但是坐标系转换仍然失败,通过改urdf发现能正常,说明urdf没问题,joint_state_publisher本身也没问题,那问题可能出在launch里面了,因为节点的调用就是在launch里的。

解决方法

经过重重排查,仔细对比别人正常的launch,我发现我的里面多了点东西,就是下面这个
这句是调用robot_state_publisher的,但是它后面多了一句ns="/xbot",这个是创建了一个/xbot的命名空间,把关节信息发布到/xbot/joint_states里面,但是launch前面的joint_state_publisher并没有在这个命名空间,所以二者就对不上了,然后就出现了问题,具体打开rostopic list是下面这样:

找到了问题所在,于是就去掉ns="/xbot"这句,再重新运行launch,成功!
之后再打开rostopic看一下,果然

命名空间的问题导致No transform from [..._link] to [base_link]相关推荐

  1. ROS rviz gazebo No transform from [left_leg] to [base_link]

    http://wiki.ros.org/urdf/Tutorials/Building%20a%20Movable%20Robot%20Model%20with%20URDF 当出现这种现象时,是因为 ...

  2. ROS——UDRF机器人模型优化(xacro)

    文章目录 UDRF机器人模型的不足 UDRF机器人模型的优化实现 xacro模型优势 xacro的使用方法 xacro创建一个小车机器人 编辑xacro机器人模型 启动模型在rviz中显示 小结 参考 ...

  3. Gazebo-Ros搭建小车和场景并运行slam算法进行建图0--整体描述和资源

    Gazebo-Ros搭建小车和场景并运行slam算法进行建图0–整体描述和资源 **背景:**需要在具体场景下运行slam算法,由于网上资源都是比较复杂的综合型机器人,作为新手不会删减改动,便想从头开 ...

  4. 什么是命名空间 为什么C++需要使用命名空间

    引言: 问题:学习过C,然后再学c++的人可能会这么问,我#include<iostream>之后,不就是把头文件拉进来了吗,而cin cout等函数不就是iostream.h里面的函数吗 ...

  5. Session和几种状态保持方案理解

    一.术语session 在我的经验里,session这个词被滥用的程度大概仅次于transaction,更加有趣的是transaction与session在某些语境下的含义是相同的. session, ...

  6. jsp的session介绍 (转)

    摘要:虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚session机制的本质,以至不能正确的应用这一技术.本文将详细讨论session的工作机制并且对在Java  ...

  7. 介绍一篇关于session的好文章,写的很详细

    介绍一篇关于session的好文章,写的很详细 目录: 一.术语session 二.HTTP协议与状态保持 三.理解cookie机制 四.理解session机制 五.理解javax.servlet.h ...

  8. HttpSession常见问题

    1.session在何时被创建 一 个常见的误解是以为session在有客户端访问时就被创建,然而事实是直到某server端程序调用 HttpServletRequest.getSession(tru ...

  9. Python 进阶_模块 包

    目录 文章目录 目录 模块的搜索路径和路径搜索 命名空间和变量作用域的比较 变量名的查找/覆盖 导入模块 import 语句 from-import 语句 扩展的 import 语句 as 自动载入模 ...

最新文章

  1. java问题的英语对话_一些表达拒绝的应用英语
  2. 「JOISC 2020 Day4」治疗计划(线段树+dijkstra最短路)
  3. 如何使得客户端和服务器端完美配合做IOS应用内付费
  4. Docker 部署应用、jar 工程 docker 方式部署
  5. XReport报表工具技术白皮书
  6. 【面试】面试文章积累
  7. java中file对象_Java中File对象的常用方法
  8. Dijkstra算法【模板】
  9. 200行Python代码实现的2048小游戏
  10. 【DevOps】在CentOS中安装Rancher2,并配置kubernetes集群
  11. php分钟转时间戳,php函数转时间戳
  12. ps更换底色2019版本以上
  13. VS2012工具箱控件
  14. reactos操作系统实现(6)
  15. OpenJ_Bailian - 2711
  16. 怎么在计算机中搜索可移动硬盘,电脑如何识别移动硬盘
  17. PHP实现 记录网站访问量
  18. 手机之家在线签名_手写签名在线生成器在线-手写签名在线生成器在线
  19. python IDEL 清屏
  20. Python 国内镜像

热门文章

  1. 解决npm构建报错:An unhandled exception occurred: ENOTEMPTY: directory not empty
  2. Jmeter学习笔记
  3. 赚下跌的钱!基金定投也能成千万富翁
  4. JS中的close()方法
  5. 2018 ucla计算机排名,2018USNews美国最佳公立大学排名,UCLA和UCB并列第一.docx
  6. 服务器禁用账号登录,服务器如何防止被爆破账号密码
  7. c语言分隔符的作用,句子分割代码(C语言程序的语句分隔符是)
  8. Super-FAN论文阅读笔记
  9. 安卓智能地图开发与实施五:在线基础底图 - ArcGIS Runtime SDK for Android(Version 100.0.0)
  10. CEPH分布式存储介绍与原理架构概述