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

    ros noetic 版本多机器人仿真

    已定时 已固定 已锁定 已移动 未解决
    综合问题
    ros noetic gazebo
    3
    3
    234
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • F
      fcnb
      最后由 编辑

      在ubuntu20.04当中运行turtlebot3的仿真,运行launch文件之后,查看tf树,发现tb3_0和tb3_0/base_footprint没有连在一起,urdf没有修改用的原来的,这是我的launch文件
      <launch>
      <!-- 机器人初始化位置参数 -->
      <arg name="model" default="$(env TURTLEBOT3_MODEL)" doc="model type [burger, waffle, waffle_pi]"/>
      <arg name="robot_name" default="tb3_0"/>
      <arg name="robot_x_pos" default="0.0"/>
      <arg name="robot_y_pos" default="0.0"/>
      <arg name="robot_z_pos" default=" 0.0"/>
      <arg name="robot_yaw" default=" 0.0"/>
      <arg name="global_frame_id" default="$(arg robot_name)/map" />

      <include file="$(find gazebo_ros)/launch/empty_world.launch">
      <arg name="world_name" value="$(find turtlebot3_gazebo)/worlds/turtlebot3_house.world"/>
      <arg name="paused" value="false"/>
      <arg name="use_sim_time" value="true"/>
      <arg name="gui" value="true"/>
      <arg name="headless" value="false"/>
      <arg name="debug" value="false"/>
      </include>

      <!-- 创建机器人 -->
      <group ns = "$(arg robot_name)">
      <!-- 导入机器人参数 -->

      <param name="robot_description" command="$(find xacro)/xacro --inorder $(find turtlebot3_description)/urdf/turtlebot3_$(arg model).urdf.xacro" />
      <!-- 机器人位置发布节点 -->
      <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher" output="screen">
        <param name="publish_frequency" type="double" value="50.0" />
        <param name="tf_prefix" value="$(arg robot_name)" />
      
      </node>
      <!-- <param name="tf_prefix" value="$(arg robot_name)" /> -->
      <node name="spawn_urdf" pkg="gazebo_ros" type="spawn_model" args="-urdf -model $(arg robot_name) -x $(arg robot_x_pos) -y $(arg robot_y_pos) -z $(arg robot_z_pos) -Y $(arg robot_yaw) -param robot_description" />
      
      <!-- gmapping -->
      <!-- <include file="$(find turtlebot3_gazebo)/launch/multi_turtlebot3_slam.launch">
        <arg name="ns" value="$(arg robot_name)"/>
      </include> -->
      

      <node pkg="gmapping" type="slam_gmapping" name="turtlebot3_slam_gmapping" output="screen" >
      <param name="base_frame" value="$(arg robot_name)/base_footprint"/>
      <param name="odom_frame" value="$(arg robot_name)/odom"/>
      <param name="map_frame" value="$(arg robot_name)/map"/>
      <param name="map_update_interval" value="2.0"/>
      <param name="maxUrange" value="4.0"/>
      <param name="minimumScore" value="100"/>
      <param name="linearUpdate" value="0.2"/>
      <param name="angularUpdate" value="0.2"/>
      <param name="temporalUpdate" value="0.5"/>
      <param name="delta" value="0.05"/>
      <param name="lskip" value="0"/>
      <param name="particles" value="120"/>
      <param name="sigma" value="0.05"/>
      <param name="kernelSize" value="1"/>
      <param name="lstep" value="0.05"/>
      <param name="astep" value="0.05"/>
      <param name="iterations" value="5"/>
      <param name="lsigma" value="0.075"/>
      <param name="ogain" value="3.0"/>
      <param name="srr" value="0.01"/>
      <param name="srt" value="0.02"/>
      <param name="str" value="0.01"/>
      <param name="stt" value="0.02"/>
      <param name="resampleThreshold" value="0.5"/>
      <param name="xmin" value="-10.0"/>
      <param name="ymin" value="-10.0"/>
      <param name="xmax" value="10.0"/>
      <param name="ymax" value="10.0"/>
      <param name="llsamplerange" value="0.01"/>
      <param name="llsamplestep" value="0.01"/>
      <param name="lasamplerange" value="0.005"/>
      <param name="lasamplestep" value="0.005"/>
      <!-- <remap from="scan" to="$(arg scan_topic)" />
      <remap from="map" to="$(arg map_topic)" /> -->
      </node>

      </group>

      </launch>
      这是我的rqt_tf_tree
      d08aa131-4a88-4918-bb80-8a34c2290c03-image.png

      1 条回复 最后回复 回复 引用 0
      • 小伊小
        机器人小伊
        最后由 编辑

        在你的描述中,你提到在tf树中tb3_0和tb3_0/base_footprint没有连在一起。这通常意味着在tf变换发布中存在一些问题。以下是一些可能的解决步骤和检查点:

        1. 检查URDF文件:
          确保URDF文件中base_footprint和机器人其他部分(如base_link)之间的tf变换是正确的。通常,base_footprint是相对于base_link的,且变换通常是一个简单的平移,没有旋转。你可以在turtlebot3_description包中找到URDF文件,并检查相关的<joint>和<link>定义。

        2. 检查robot_state_publisher节点:
          robot_state_publisher节点负责从URDF/XACRO文件中读取机器人描述,并发布tf变换。确保该节点正在运行,并且参数设置正确。你已经设置了tf_prefix参数,这通常是正确的做法来区分多个机器人的tf树。

        3. 检查Gazebo中的模型加载:
          确保Gazebo正确加载了URDF模型。你可以在Gazebo中查看模型是否正确显示,并且各个部分(如轮子、传感器等)是否都在正确的位置。

        4. 检查tf变换发布:
          使用rosrun tf view_frames命令生成tf树的可视化文件,并用evince frames.pdf查看。这可以帮助你直观地看到tf树的结构和潜在的断开连接。

        5. 检查日志输出:
          查看robot_state_publisher和gazebo的日志输出,看是否有任何错误或警告信息。这些信息可能会提供关于为什么tf变换没有正确发布的线索。

        6. 重新启动和清理:
          有时候,重新启动ROS核心和Gazebo,以及清理工作空间(如使用catkin_make clean),可以解决一些看似复杂的问题。

        7. 检查spawn_model命令:
          确保spawn_model命令正确执行,并且模型被放置在Gazebo中的预期位置。参数-x, -y, -z, -Y应该正确设置。

        8. 确保没有名称冲突:
          如果你的环境中有多个机器人,确保每个机器人的名称和命名空间都是唯一的,以避免tf变换的冲突。

        如果以上步骤都没有解决问题,你可能需要更深入地检查每个组件的配置和代码,特别是与tf变换相关的部分。希望这些步骤能帮助你解决问题!


        以上为生成回答,仅供参考~

        我是小伊,已接入ChatGpt,所有回复,仅供参考~

        1 条回复 最后回复 回复 引用 0
        • 5
          56supernova56
          最后由 编辑

          有一篇博客提到这个问题,https://wenda.ncnynl.com/question/116464,可以试一下。
          我自己的工程中使用了robot_pose_ekf这个包做卡尔曼滤波,在这个包中配置tf名解决的这个问题。

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