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

    第十章配置fishbot建图时Rviz2 fixed frame报错,无法显示地图

    已定时 已固定 已锁定 已移动
    Nav2
    ros2 动手学ros,rviz
    2
    2
    599
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • tf_wangT
      tf_wang
      最后由 编辑

      跟着教程先启动gazebo后启动Rviz2,随后Rviz2的Fixed Frame报错
      prep.png
      rviz.png
      这是我用rqt_graph查看的node和topic,看起来好像也没什么问题
      rqt_graph.png
      这是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 = ''
          package_name = 'fishbot_description'
          urdf_name = "fishbot_base.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
      

      这是cartographer.launch.py的内容:

      
      import os
      from launch import LaunchDescription
      from launch.substitutions import LaunchConfiguration
      from launch_ros.actions import Node
      from launch_ros.substitutions import FindPackageShare
      
      
      def generate_launch_description():
          # 定位到功能包的地址
          pkg_share = FindPackageShare(package='fishbot_cartographer').find('fishbot_cartographer')
          
          #=====================运行节点需要的配置=======================================================================
          # 是否使用仿真时间,我们用gazebo,这里设置成true
          use_sim_time = LaunchConfiguration('use_sim_time', default='true')
          # 地图的分辨率
          resolution = LaunchConfiguration('resolution', default='0.05')
          # 地图的发布周期
          publish_period_sec = LaunchConfiguration('publish_period_sec', default='1.0')
          # 配置文件夹路径
          configuration_directory = LaunchConfiguration('configuration_directory',default= os.path.join(pkg_share, 'config') )
          # 配置文件
          configuration_basename = LaunchConfiguration('configuration_basename', default='fishbot_2d.lua')
          rviz_config_dir = os.path.join(pkg_share, 'config')+"/cartographer.rviz"
          print(f"rviz config in {rviz_config_dir}")
      
          
          #=====================声明三个节点,cartographer/occupancy_grid_node/rviz_node=================================
          cartographer_node = Node(
              package='cartographer_ros',
              executable='cartographer_node',
              name='cartographer_node',
              output='screen',
              parameters=[{'use_sim_time': use_sim_time}],
              arguments=['-configuration_directory', configuration_directory,
                         '-configuration_basename', configuration_basename])
      
          cartographer_occupancy_grid_node = Node(
              package='cartographer_ros',
              executable='cartographer_occupancy_grid_node',
              name='cartographer_occupancy_grid_node',
              output='screen',
              parameters=[{'use_sim_time': use_sim_time}],
              arguments=['-resolution', resolution, '-publish_period_sec', publish_period_sec])
      
          rviz_node = Node(
              package='rviz2',
              executable='rviz2',
              name='rviz2',
              arguments=['-d', rviz_config_dir],
              parameters=[{'use_sim_time': use_sim_time}],
              output='screen')
      
          #===============================================定义启动文件========================================================
          ld = LaunchDescription()
          ld.add_action(cartographer_node)
          ld.add_action(cartographer_occupancy_grid_node)
          ld.add_action(rviz_node)
      
          return ld
      

      gazebo和Rviz2都启动正常,网上搜索尝试了一些办法也没解决,请各位帮我看看问题出哪了

      10330329341 1 条回复 最后回复 回复 引用 0
      • 10330329341
        一万二的笑 @tf_wang
        最后由 编辑

        @tf_wang cmake里添加代码

        • install(
        • DIRECTORY config launch rviz
        • DESTINATION share/${PROJECT_NAME}
        • )
        1 条回复 最后回复 回复 引用 0
        • 第一个帖子
          最后一个帖子
        皖ICP备16016415号-7
        Powered by NodeBB | 鱼香ROS