Skip to content

关于go2和go2w的一点疑问 #141

@AgentOfLyra

Description

@AgentOfLyra
<?xml version='1.0' encoding='utf-8'?>
<robot name="b2_description">
  <link name="base_link">
    <inertial>
      <origin xyz="0.000458 0.005261 0.000665" rpy="0 0 0" />
      <mass value="35.86" />
      <inertia ixx="0.27466" ixy="-0.000622" ixz="0.00315" iyy="1.0618" iyz="-0.00139" izz="1.1825" />
    </inertial>
    <visual>
      <origin xyz="0 0 0" rpy="0 0 0" />
      <geometry>
        <mesh filename="package://b2_description/meshes/base_link.dae" />
      </geometry>
      <material name="磨砂铝合金_011-effect"><color rgba="0.74876 0.74876 0.74876 1" /></material><material name="logo_001-effect"><color rgba="1 1 1 1" /></material><material name="材质_023-effect"><color rgba="0 0 0 1" /></material><material name="材质_024-effect"><color rgba="0.002853 0.002853 0.002853 1" /></material></visual>
    <collision>
      <origin xyz="0 0 0" rpy="0 0 0" />
        <geometry>
          <box size="0.5 0.28 0.15" />
        </geometry>
    </collision>
  </link>
......

可以看到像b2、b2w定义的是base link,它们的gazebo.launch也是这么定义的:

<launch>
  <include
    file="$(find gazebo_ros)/launch/empty_world.launch" />
  <node
    name="tf_footprint_base"
    pkg="tf"
    type="static_transform_publisher"
    args="0 0 0 0 0 0 base_link base_footprint 40" />
  <node
    name="spawn_model"
    pkg="gazebo_ros"
    type="spawn_model"
    args="-file $(find b2w_description)/urdf/b2w_description.urdf -urdf -model b2w_description"
    output="screen" />
  <node
    name="fake_joint_calibration"
    pkg="rostopic"
    type="rostopic"
    args="pub /calibrated std_msgs/Bool true" />
</launch>

这里发布了一个静态tf,我的疑问是这样的:
为什么在go1、go2、go2w当中,它们定义的都是base,然后在rviz里面fixed frame的配置也用的base,这没问题,

<!-- 节选自go2w -->
<robot name="go2w_description">
  <link name="base">
    <inertial>
      <origin xyz="0.021112 0 -0.005366" rpy="0 0 0" />
      <mass value="6.921" />
      <inertia ixx="0.02448" ixy="0.00012166" ixz="0.0014849" iyy="0.098077" iyz="-3.12E-05" izz="0.107" />
    </inertial>
    <visual>
      <origin xyz="0 0 0" rpy="0 0 0" />
      <geometry>
        <mesh filename="package://go2w_description/dae/base.dae" />
      </geometry>
      <material name="深色橡胶_001-effect"><color rgba="0.6717055 0.6924257 0.7742702 1" /></material><material name="白色logo_001-effect"><color rgba="1 1 1 1" /></material><material name="黑色贴纸_007-effect"><color rgba="0.009018 0.009018 0.009018 1" /></material><material name="黑色金属_007-effect"><color rgba="0.01341 0.01341 0.01341 1" /></material><material name="黑色塑料_003-effect"><color rgba="0.023455 0.023455 0.023455 1" /></material></visual>
    <collision>
      <origin rpy="0 0 0" xyz="0 0 0" />
      <geometry>
        <box size="0.3762 0.0935 0.114" />
      </geometry>
    </collision>
  </link>
 Global Options:
    Background Color: 238; 238; 236
    Default Light: true
    Fixed Frame: base
    Frame Rate: 30
  Name: root

但是在它们这几个狗兄弟的gazebo.launch里面,还是用的base_link发布的静态tf:

<launch>
  <include
    file="$(find gazebo_ros)/launch/empty_world.launch" />
  <node
    name="tf_footprint_base"
    pkg="tf"
    type="static_transform_publisher"
    args="0 0 0 0 0 0 base_link base_footprint 40" />
  <node
    name="spawn_model"
    pkg="gazebo_ros"
    type="spawn_model"
    args="-file $(find go2w_description)/urdf/go2w_description.urdf -urdf -model go2w_description"
    output="screen" />
  <node
    name="fake_joint_calibration"
    pkg="rostopic"
    type="rostopic"
    args="pub /calibrated std_msgs/Bool true" />
</launch>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions