[ROS Unsolved]启动gazebo后,在rviz中添加机器人模型显示No transform from [base_link] to [base_footprint]

这个bug就是一整个特别离谱。

在按照GPT给的所有解决方法处理了一个遍,还是这个样子。

link之间的关系的也没错,check_urdf文件的结构也没问题。但是还是这样子。

去咸鱼问大佬,大佬跟我要1.5k,算逑算逑,要不起。

思来想去还是自己改了改。没想到最后真让我改成功了。

是因为我在launch文件中只往gazebo导入了urdf的模型,我本以为打开rviz直接add robot model没啥问题,但他就是只显示车体,不显示坐标。我小车的urdf模型结构如图。

打开display.launch一点问题都没得。 但是一打开工作空间的myworld.launch就出bug

所以,我直接在myworld.launch中写入display.launch的代码,也就是直接引入robot_state_publisher和joint_state_publisher_gui这两个节点。

<launch>

    <!-- 将 Urdf 文件的内容加载到参数服务器 -->
    <param name="robot_description"
        command="$(find xacro)/xacro $(find myminion)/urdf/myminion.urdf" />

     <!-- 启动 gazebo  -->
    <include file="$(find gazebo_ros)/launch/empty_world.launch">
        <arg name="world_name" value="$(find gh_gazebo)/worlds/greenhouse.world"/>
    </include>

    <!-- 在 gazebo 中显示机器人模型 -->
    <node pkg="gazebo_ros" type="spawn_model" name="model"
        args="-urdf -model myminion -param robot_description" /> 

    <node name="joint_state_publisher_gui"  pkg="joint_state_publisher_gui"  type="joint_state_publisher_gui" />
    <node name="robot_state_publisher"  pkg="robot_state_publisher"  type="robot_state_publisher" />
    <node name="rviz"  pkg="rviz"  type="rviz"  args="-d $(find myminion)/urdf.rviz" />
    
</launch>

 针对这行代码<node name="rviz"  pkg="rviz"  type="rviz"  args="-d $(find myminion)/urdf.rviz" />,根本不用管他的文件在哪,一点影响都没有。

到最后成功解决。

但是但是以上都是在wsl2中运行的,wsl2会时不时的出小bug。可能过一段时间你就会发现小车又缺胳膊少腿了,这玩意我是解决不了的。

我只能用双系统ubuntu2004再运行相同的代码,一切都迎刃而解啦。又省了1.5k,开心哈哈

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 抱歉,我需要更多的上下文才能回答这个问题。这个错误信息通常与机器人运动学相关,可能是由于机器人的链接结构或TF树的问题导致的。请提供更多的信息,例如您使用的机器人类型、ROS版本、运行的节点等,以便我更好地理解问题并提供帮助。 ### 回答2: "No transform from [base_link]"是ROS机器人操作系统的一种常见错误消息,它通常意味着ROS系统无法找到两个不同坐标系之间的变换。 在ROS系统,不同的传感器和执行机构被安装在机器人的不同部位上,并且它们每个都有一个自己的坐标系。同时,机器人还有一个固定的坐标系,通常是“base_link”。 为了使机器人的各个部件之间能够协调工作,必须知道各个坐标系之间的正确变换关系。这就需要使用ROS的tf库来管理这些变换。因此,当ROS系统发现无法完成两个坐标系之间的变换时,就会抛出"No transform from [base_link]"这样的异常。 这种错误可能有多种原因。一种可能是tf树缺少了必要的变换数据。这可能是由于ROS节点未将其正确发布到tf,或者是由于ROS节点已关闭,而其发布的变换消息已被清除。在这种情况下,我们需要查看机器人的tf树,确认变换链是否完整。 另一种可能是机器人运动不稳定,导致传感器和执行机构的坐标系发生变化。例如,当机器人在移动时,它的底盘坐标系会发生变化,这可能会影响传感器测量数据的正确性。在这种情况下,我们需要检查机器人的运动控制程序是否能够正确地发布底盘变换消息,并确保机器人相对于固定坐标系的运动不会过于剧烈。 此外,还有可能是ROS节点出现了错误,导致变换数据被篡改或丢失。在这种情况下,我们需要检查机器人ROS节点是否存在任何错误,并尝试重启涉及错误的节点。 总之,在处理"No transform from [base_link]"这种异常时,我们需要对ROS系统的tf库有一定的了解,并排除组成坐标系的各个部分之间可能存在的任何问题。只有这样,我们才能确保机器人能够顺利、高效地运行。 ### 回答3: “No transform from [base_link]”是指ROS的TF库在尝试从指定的父坐标系[base_link]到子坐标系之间进行变换时失败了。 TF库是ROS重要的坐标系转换(Transformations)库,通过它可以方便地将不同的坐标系之间的变换信息传递给ROS框架内的其他节点。 这个错误通常表示在TF库的坐标系一些处于不一致或未定义的状态: - 可能父坐标系[base_link]没有在TF库被正确定义或初始化。 - 子坐标系尚未建立,或者没有被正确地放置在父坐标系的某个位置。 - 变换信息出现了错误或者未被正确传递给TF库。 解决这个问题,我们可以采用以下策略: 1. 检查坐标系的命名、转换和数据类型。 ROS的TF库需要在将数据从一种坐标系转换到另一个坐标系时,输入正确的名称和类型。如果我们输入的是错误的数据类型,TF库可能会出现错误。需要检查是否存在输入错误以及正确的数据类型。 2. 确定TF滞后时间是否合适。 我们需要确定TF滞后时间是否为零或是否设置得太大,这可能会导致坐标系的转换出现问题。需要设置一个合适的TF滞后时间。 3.检查机器人模型或硬件的质量。 在机器人模型或硬件会存在不连续性或不稳定性,导致坐标系转换失败。这种问题需要根据具体情况解决。 总之,了解TF库的坐标系转换原理以及确保输入数据正确和合适,可以帮助我们从“No transform from [base_link]”这样的错误解脱出来。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值