鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    运行gazebo.launch.py时只发布部分坐标

    已定时 已固定 已锁定 已移动
    学习资源
    ros2 gazebo gazebo 仿真
    1
    2
    92
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 2
      2923733061
      最后由 编辑

      这是gazebo.launch.py
      import os
      from launch import LaunchDescription
      from launch.actions import ExecuteProcess
      from launch_ros.actions import Node
      from launch_ros.substitutions import FindPackageShare

      def generate_launch_description():
      robot_name_in_model = 'fishbot'
      package_name = 'fishbot_description'
      urdf_name = "fishbot_gazebo.urdf"

      ld = LaunchDescription()
      pkg_share = FindPackageShare(package=package_name).find(package_name) 
      urdf_model_path = os.path.join(pkg_share, f'urdf/{urdf_name}')
      
      gazebo_world_path = os.path.join(pkg_share, 'world/fishbot.world')
      
      # Start Gazebo server
      start_gazebo_cmd =  ExecuteProcess(
          cmd=['gazebo', '--verbose','-s', 'libgazebo_ros_init.so', '-s', 'libgazebo_ros_factory.so', gazebo_world_path],
          output='screen')
      
      
      # Launch the robot
      spawn_entity_cmd = Node(
          package='gazebo_ros', 
          executable='spawn_entity.py',
          arguments=['-entity', robot_name_in_model,  '-file', urdf_model_path ], output='screen')
      
      ld.add_action(start_gazebo_cmd)
      ld.add_action(spawn_entity_cmd)
      
      
      return ld
      

      这是tf树frames.png

      这是urdf
      <?xml version="1.0"?>
      <robot name="fishbot">

      <!-- Robot Footprint -->
      <link name="base_footprint"/>

      <joint name="base_joint" type="fixed">
      <parent link="base_footprint"/>
      <child link="base_link"/>
      <origin xyz="0.0 0.0 0.076" rpy="0 0 0"/>
      </joint>

      <!-- base link -->
      <link name="base_link">
      <visual>
      <origin xyz="0 0 0.0" rpy="0 0 0"/>
      <geometry>
      <cylinder length="0.12" radius="0.10"/>
      </geometry>
      <material name="blue">
      <color rgba="0.1 0.1 1.0 0.5" />
      </material>
      </visual>
      <collision>
      <origin xyz="0 0 0.0" rpy="0 0 0"/>
      <geometry>
      <cylinder length="0.12" radius="0.10"/>
      </geometry>
      <material name="blue">
      <color rgba="0.1 0.1 1.0 0.5" />
      </material>
      </collision>
      <inertial>
      <mass value="0.2"/>
      <inertia ixx="0.0122666" ixy="0" ixz="0" iyy="0.0122666" iyz="0" izz="0.02"/>
      </inertial>
      </link>

      <!-- laser link -->
      <link name="laser_link">
      <visual>
      <origin xyz="0 0 0" rpy="0 0 0"/>
      <geometry>
      <cylinder length="0.02" radius="0.02"/>
      </geometry>
      <material name="black">
      <color rgba="0.0 0.0 0.0 0.5" />
      </material>
      </visual>
      <collision>
      <origin xyz="0 0 0" rpy="0 0 0"/>
      <geometry>
      <cylinder length="0.02" radius="0.02"/>
      </geometry>
      <material name="black">
      <color rgba="0.0 0.0 0.0 0.5" />
      </material>
      </collision>
      <inertial>
      <mass value="0.1"/>
      <inertia ixx="0.000190416666667" ixy="0" ixz="0" iyy="0.0001904" iyz="0" izz="0.00036"/>
      </inertial>
      </link>

      <!-- laser joint -->
      <joint name="laser_joint" type="fixed">
      <parent link="base_link" />
      <child link="laser_link" />
      <origin xyz="0 0 0.075" />
      </joint>

      <link name="imu_link">
      <visual>
      <origin xyz="0 0 0.0" rpy="0 0 0"/>
      <geometry>
      <box size="0.02 0.02 0.02"/>
      </geometry>
      </visual>
      <collision>
      <origin xyz="0 0 0.0" rpy="0 0 0"/>
      <geometry>
      <box size="0.02 0.02 0.02"/>
      </geometry>
      </collision>
      <inertial>
      <mass value="0.1"/>
      <inertia ixx="0.000190416666667" ixy="0" ixz="0" iyy="0.0001904" iyz="0" izz="0.00036"/>
      </inertial>
      </link>

      <!-- imu joint -->
      <joint name="imu_joint" type="fixed">
      <parent link="base_link" />
      <child link="imu_link" />
      <origin xyz="0 0 0.02" />
      </joint>

      <link name="left_wheel_link">
      <visual>
      <origin xyz="0 0 0" rpy="1.57079 0 0"/>
      <geometry>
      <cylinder length="0.04" radius="0.032"/>
      </geometry>
      <material name="black">
      <color rgba="0.0 0.0 0.0 0.5" />
      </material>
      </visual>
      <collision>
      <origin xyz="0 0 0" rpy="1.57079 0 0"/>
      <geometry>
      <cylinder length="0.04" radius="0.032"/>
      </geometry>
      <material name="black">
      <color rgba="0.0 0.0 0.0 0.5" />
      </material>
      </collision>
      <inertial>
      <mass value="0.2"/>
      <inertia ixx="0.000190416666667" ixy="0" ixz="0" iyy="0.0001904" iyz="0" izz="0.00036"/>
      </inertial>
      </link>

      <link name="right_wheel_link">
      <visual>
      <origin xyz="0 0 0" rpy="1.57079 0 0"/>
      <geometry>
      <cylinder length="0.04" radius="0.032"/>
      </geometry>
      <material name="black">
      <color rgba="0.0 0.0 0.0 0.5" />
      </material>
      </visual>
      <collision>
      <origin xyz="0 0 0" rpy="1.57079 0 0"/>
      <geometry>
      <cylinder length="0.04" radius="0.032"/>
      </geometry>
      <material name="black">
      <color rgba="0.0 0.0 0.0 0.5" />
      </material>
      </collision>
      <inertial>
      <mass value="0.2"/>
      <inertia ixx="0.000190416666667" ixy="0" ixz="0" iyy="0.0001904" iyz="0" izz="0.00036"/>
      </inertial>
      </link>

      <joint name="left_wheel_joint" type="continuous">
      <parent link="base_link" />
      <child link="left_wheel_link" />
      <origin xyz="-0.02 0.10 -0.06" />
      <axis xyz="0 1 0" />
      </joint>

      <joint name="right_wheel_joint" type="continuous">
      <parent link="base_link" />
      <child link="right_wheel_link" />
      <origin xyz="-0.02 -0.10 -0.06" />
      <axis xyz="0 1 0" />
      </joint>

      <link name="caster_link">
      <visual>
      <origin xyz="0 0 0" rpy="1.57079 0 0"/>
      <geometry>
      <sphere radius="0.016"/>
      </geometry>
      <material name="black">
      <color rgba="0.0 0.0 0.0 0.5" />
      </material>
      </visual>
      <collision>
      <origin xyz="0 0 0" rpy="1.57079 0 0"/>
      <geometry>
      <sphere radius="0.016"/>
      </geometry>
      <material name="black">
      <color rgba="0.0 0.0 0.0 0.5" />
      </material>
      </collision>
      <inertial>
      <mass value="0.02"/>
      <inertia ixx="0.000190416666667" ixy="0" ixz="0" iyy="0.0001904" iyz="0" izz="0.00036"/>
      </inertial>
      </link>

      <joint name="caster_joint" type="fixed">
      <parent link="base_link" />
      <child link="caster_link" />
      <origin xyz="0.06 0.0 -0.076" />
      <axis xyz="0 1 0" />
      </joint>

      <gazebo reference="caster_link">
      <material>Gazebo/Black</material>
      </gazebo>

      <gazebo reference="caster_link">
      <mu1 value="0.0"/>
      <mu2 value="0.0"/>
      <kp value="1000000.0" />
      <kd value="10.0" />
      </gazebo>

      <gazebo>
      <plugin name='diff_drive' filename='libgazebo_ros_diff_drive.so'>
      <ros>
      <namespace>/</namespace>
      <remapping>cmd_vel:=cmd_vel</remapping>
      <remapping>odom:=odom</remapping>
      </ros>
      <update_rate>30</update_rate>
      <!-- wheels -->
      <left_joint>left_wheel_joint</left_joint>
      <right_joint>right_wheel_joint</right_joint>
      <!-- kinematics -->
      <wheel_separation>0.2</wheel_separation>
      <wheel_diameter>0.065</wheel_diameter>
      <!-- limits -->
      <max_wheel_torque>20</max_wheel_torque>
      <max_wheel_acceleration>1.0</max_wheel_acceleration>
      <!-- output -->
      <publish_odom>true</publish_odom>
      <publish_odom_tf>true</publish_odom_tf>
      <publish_wheel_tf>true</publish_wheel_tf>
      <odometry_frame>odom</odometry_frame>
      <robot_base_frame>base_footprint</robot_base_frame>
      </plugin>
      </gazebo>

      <gazebo reference="imu_link">
        <sensor name="imu_sensor" type="imu">
        <plugin filename="libgazebo_ros_imu_sensor.so" name="imu_plugin">
            <ros>
              <namespace>/</namespace>
              <remapping>~/out:=imu</remapping>
            </ros>
            <initial_orientation_as_reference>false</initial_orientation_as_reference>
          </plugin>
          <always_on>true</always_on>
          <update_rate>100</update_rate>
          <visualize>true</visualize>
          <imu>
            <angular_velocity>
              <x>
                <noise type="gaussian">
                  <mean>0.0</mean>
                  <stddev>2e-4</stddev>
                  <bias_mean>0.0000075</bias_mean>
                  <bias_stddev>0.0000008</bias_stddev>
                </noise>
              </x>
              <y>
                <noise type="gaussian">
                  <mean>0.0</mean>
                  <stddev>2e-4</stddev>
                  <bias_mean>0.0000075</bias_mean>
                  <bias_stddev>0.0000008</bias_stddev>
                </noise>
              </y>
              <z>
                <noise type="gaussian">
                  <mean>0.0</mean>
                  <stddev>2e-4</stddev>
                  <bias_mean>0.0000075</bias_mean>
                  <bias_stddev>0.0000008</bias_stddev>
                </noise>
              </z>
            </angular_velocity>
            <linear_acceleration>
              <x>
                <noise type="gaussian">
                  <mean>0.0</mean>
                  <stddev>1.7e-2</stddev>
                  <bias_mean>0.1</bias_mean>
                  <bias_stddev>0.001</bias_stddev>
                </noise>
              </x>
              <y>
                <noise type="gaussian">
                  <mean>0.0</mean>
                  <stddev>1.7e-2</stddev>
                  <bias_mean>0.1</bias_mean>
                  <bias_stddev>0.001</bias_stddev>
                </noise>
              </y>
              <z>
                <noise type="gaussian">
                  <mean>0.0</mean>
                  <stddev>1.7e-2</stddev>
                  <bias_mean>0.1</bias_mean>
                  <bias_stddev>0.001</bias_stddev>
                </noise>
              </z>
            </linear_acceleration>
          </imu>
        </sensor>
      </gazebo>
      

      <gazebo reference="laser_link">
      <sensor name="laser_sensor" type="ray">
      <always_on>true</always_on>
      <visualize>true</visualize>
      <update_rate>10</update_rate>
      <pose>0 0 0.075 0 0 0</pose>
      <ray>
      <scan>
      <horizontal>
      <samples>360</samples>
      <resolution>1.000000</resolution>
      <min_angle>0.000000</min_angle>
      <max_angle>6.280000</max_angle>
      </horizontal>
      </scan>
      <range>
      <min>0.120000</min>
      <max>3.5</max>
      <resolution>0.015000</resolution>
      </range>
      <noise>
      <type>gaussian</type>
      <mean>0.0</mean>
      <stddev>0.01</stddev>
      </noise>
      </ray>

        <plugin name="laserscan" filename="libgazebo_ros_ray_sensor.so">
          <ros>
            <remapping>~/out:=scan</remapping>
          </ros>
          <output_type>sensor_msgs/LaserScan</output_type>
          <frame_name>laser_link</frame_name>
        </plugin>
        </sensor>
      </gazebo>
      

      </robot>

      2 1 条回复 最后回复 回复 引用 0
      • 2
        2923733061 @2923733061
        最后由 编辑

        @2923733061

        这个是终端信息
        [INFO] [launch]: All log files can be found below /home/yywx/.ros/log/2025-01-23-21-38-01-120411-yywx-THUNDEROBOT-DT-Computer-31749
        [INFO] [launch]: Default logging verbosity is set to INFO
        [INFO] [gazebo-1]: process started with pid [31751]
        [INFO] [spawn_entity.py-2]: process started with pid [31753]
        [gazebo-1] Gazebo multi-robot simulator, version 11.10.2
        [gazebo-1] Copyright (C) 2012 Open Source Robotics Foundation.
        [gazebo-1] Released under the Apache 2 License.
        [gazebo-1] http://gazebosim.org
        [gazebo-1]
        [gazebo-1] Gazebo multi-robot simulator, version 11.10.2
        [gazebo-1] Copyright (C) 2012 Open Source Robotics Foundation.
        [gazebo-1] Released under the Apache 2 License.
        [gazebo-1] http://gazebosim.org
        [gazebo-1]
        [spawn_entity.py-2] [INFO] [1737639481.363345020] [spawn_entity]: Spawn Entity started
        [spawn_entity.py-2] [INFO] [1737639481.363552549] [spawn_entity]: Loading entity XML from file /home/yywx/fishbot_ws/install/fishbot_description/share/fishbot_description/urdf/fishbot_gazebo.urdf
        [spawn_entity.py-2] [INFO] [1737639481.364003208] [spawn_entity]: Waiting for service /spawn_entity, timeout = 30
        [spawn_entity.py-2] [INFO] [1737639481.364135976] [spawn_entity]: Waiting for service /spawn_entity
        [spawn_entity.py-2] [INFO] [1737639481.867763540] [spawn_entity]: Calling service /spawn_entity
        [spawn_entity.py-2] [INFO] [1737639481.959349670] [spawn_entity]: Spawn status: SpawnEntity: Successfully spawned entity [fishbot_1]
        [gazebo-1] [INFO] [1737639482.068496261] [diff_drive]: Wheel pair 1 separation set to [0.200000m]
        [gazebo-1] [INFO] [1737639482.068713833] [diff_drive]: Wheel pair 1 diameter set to [0.065000m]
        [gazebo-1] [INFO] [1737639482.069244602] [diff_drive]: Subscribed to [/cmd_vel]
        [gazebo-1] [INFO] [1737639482.070318787] [diff_drive]: Advertise odometry on [/odom]
        [gazebo-1] [INFO] [1737639482.071706849] [diff_drive]: Publishing odom transforms between [odom] and [base_footprint]
        [gazebo-1] [INFO] [1737639482.071722493] [diff_drive]: Publishing wheel transforms between [base_footprint], [left_wheel_joint] and [right_wheel_joint]
        [INFO] [spawn_entity.py-2]: process has finished cleanly [pid 31753]
        [gazebo-1] [Msg] Waiting for master.
        [gazebo-1] [Msg] Connected to gazebo master @ http://127.0.0.1:11345
        [gazebo-1] [Msg] Publicized address: 192.168.1.13
        [gazebo-1] [Msg] Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
        [gazebo-1] [Wrn] [Event.cc:61] Warning: Deleting a connection right after creation. Make sure to save the ConnectionPtr from a Connect call

        1 条回复 最后回复 回复 引用 0
        • 第一个帖子
          最后一个帖子
        皖ICP备16016415号-7
        Powered by NodeBB | 鱼香ROS