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

    建图,rvz2不显示机器人

    已定时 已固定 已锁定 已移动 已解决
    综合问题
    gazebo cartographer建图 rviz2
    2
    9
    909
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 1544536831
      Bear
      最后由 编辑

      按教程10.5的方法开始建图
      步骤1:按上1章节 fishbot_description gazebo.launch.py 的代码,运行可以在gazebo中显示机器人;
      步骤2:运行本章节的代码,显示效果如下,无法显示机器人,如下图
      dbb26dc1-1639-42e1-98b6-5b7e199e0d43-image.png
      问题:为啥没机器人显示,按教材把topic加上也是;
      翻阅了下贴吧里的没找到跟我相同的问题,所以才发个帖子来麻烦你,谢谢
      我再截图下gazebo的显示效果
      51c1d005-18af-4969-bf2a-1a98939fe88c-image.png
      代码是跟教程中的一摸一样的,运行起来没见报错,已退出了miniconda

      1544536831 1 条回复 最后回复 回复 引用 -1
      • 1544536831
        Bear @小鱼
        最后由 编辑

        @小鱼 谢谢,机器人出来了,可能是我昨晚两个vscode编译搞混了;
        但仍然有点疑问,效果跟您的教程截图有点不一样呢,而且pointcloud2有个错误,如下图
        99993ec7-4592-4c61-a12e-0cb417f43098-image.png
        木有看到地图出来哈,更不知道下一步如何建图
        频繁打扰你真不好意思,非常感谢回复

        小鱼小 1 条回复 最后回复 回复 引用 0
        • 1544536831
          Bear @154453683
          最后由 编辑

          @154453683 另外还有一个疑问:
          上一节中有一个 dispay_rviz2.alunch中启动rviz2的教程,rviz的RobotModel能选是因为代码中发布了一个机器人状态的话题【robot_state_publisher】;
          但本节的代码中没有看到发布,只是启动了gazebo,再启动rviz,RobotModel肯定就没东西选了。。不知道我理解的对不对
          d84e8727-d157-4352-93ce-5c6fbccce7bb-image.png

          小鱼小 1 条回复 最后回复 回复 引用 0
          • 小鱼小
            小鱼 技术大佬 @154453683
            最后由 编辑

            @154453683 你的理解听正确的,所以要想显示要加上robot_state_publisher

            6e87415e-ced1-47e1-a5df-289eb49378cf-image.png

            新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

            1544536831 1 条回复 最后回复 回复 引用 0
            • 1544536831
              Bear @小鱼
              最后由 编辑

              @小鱼 本人新手,不知道咋解决呢
              cartographer.launch.py代码是教程上复制的,不需要调整把?

              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.launch.py代码?

              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}')
              
                  # Start Gazebo server
                  start_gazebo_cmd =  ExecuteProcess(
                      cmd=['gazebo', '--verbose','-s', 'libgazebo_ros_init.so', '-s', 'libgazebo_ros_factory.so'],
                      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')
              
                  #加上这句吗?结果还是一样
                  robot_state_publisher_node = Node(
                      package='robot_state_publisher',
                      executable='robot_state_publisher',
                      arguments=[urdf_model_path]
                      )
              
                  ld.add_action(robot_state_publisher_node)
                  ld.add_action(start_gazebo_cmd)
                  ld.add_action(spawn_entity_cmd)
              
                  return ld
              

              帮忙知道下,显示不出机器人

              小鱼小 1 条回复 最后回复 回复 引用 0
              • 小鱼小
                小鱼 技术大佬 @154453683
                最后由 编辑

                @154453683 在 建图,rvz2不显示机器人 中说:

                #加上这句吗?结果还是一样
                robot_state_publisher_node = Node(
                    package='robot_state_publisher',
                    executable='robot_state_publisher',
                    arguments=[urdf_model_path]
                    )
                

                是要加上这句,不过加上后要重新编译,另外贴下终端日志和rqt——graphe 图看看

                新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                1544536831 1 条回复 最后回复 回复 引用 1
                • 1544536831
                  Bear @小鱼
                  最后由 编辑

                  @小鱼 谢谢,机器人出来了,可能是我昨晚两个vscode编译搞混了;
                  但仍然有点疑问,效果跟您的教程截图有点不一样呢,而且pointcloud2有个错误,如下图
                  99993ec7-4592-4c61-a12e-0cb417f43098-image.png
                  木有看到地图出来哈,更不知道下一步如何建图
                  频繁打扰你真不好意思,非常感谢回复

                  小鱼小 1 条回复 最后回复 回复 引用 0
                  • 小鱼小
                    小鱼 技术大佬 @154453683
                    最后由 编辑

                    @154453683 应该没有pointcloud2的发布,所以报错,直接选择PointCloud2然后点击下方的Remove移除后Ctrl+S保存即可

                    新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                    1544536831 1 条回复 最后回复 回复 引用 0
                    • 小鱼小 小鱼 将这个主题标记为已解决,在
                    • 1544536831
                      Bear @小鱼
                      最后由 编辑

                      @小鱼 关键是我的效果只有机器人,不跟教程一样显示地图呢
                      是不是教程中缺少了代码?
                      3252c7a1-536f-4155-8642-deca5bcebe89-image.png

                      小鱼小 1 条回复 最后回复 回复 引用 0
                      • 小鱼小
                        小鱼 技术大佬 @154453683
                        最后由 编辑

                        @154453683 地图需要启动建图相关程序,我在不知啊到你在前后干了啥,所以不清楚哪里的问题

                        @小鱼 在 提问前必看!一定要看!必须看一下! 中说:

                        提问时一定要提供尽可能多的信息(系统版本,ROS版本,前后操作,终端日志),包括你的目的,比如你其实想装装某个库遇到问题,不要只说这个问题,因为可能有更好的替代方案

                        新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

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