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

    ros2 实现 AMCL定位

    已定时 已固定 已锁定 已移动 未解决
    综合问题
    ros2 amcl定位
    1
    2
    668
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 8492822068
      咸余
      最后由 编辑

      你好,小鱼。我目前跟随你的ros2教程学习到Nav2导航篇,按照教程的例子,实现了小车的单点导航和多点导航。但是有个问题,启动后,我需要手动大概指定机器人的位姿,而且指定完之后,初始状态的粒子波只有很小一圈。我的理解是,机器人在初始状态下,粒子波应该是均匀分布在整个地图的,当机器人运动起来后,会慢慢确定自己的位置。请问,这个应该如何实现?
      我在fishbot_nav2.yaml文件中,加入了如下代码段,编译成功后,运行失败。

      initial_pose_x: 0.0
          initial_pose_y: 0.0
          initial_pose_a: 0.0
          initial_cov_xx: 32
          initial_cov_yy: 32
          initial_cov_zz: 32
      

      希望得到你的指导。

      8492822068 1 条回复 最后回复 回复 引用 0
      • 8492822068
        咸余 @849282206
        最后由 编辑

        @849282206 在 ros2 实现 AMCL定位 中说:

        你好,小鱼。我目前跟随你的ros2教程学习到Nav2导航篇,按照教程的例子,实现了小车的单点导航和多点导航。但是有个问题,启动后,我需要手动大概指定机器人的位姿,而且指定完之后,初始状态的粒子波只有很小一圈。我的理解是,机器人在初始状态下,粒子波应该是均匀分布在整个地图的,当机器人运动起来后,会慢慢确定自己的位置。请问,这个应该如何实现?
        我在fishbot_nav2.yaml文件中,加入了如下代码段,编译成功后,运行失败。

        initial_pose_x: 0.0
            initial_pose_y: 0.0
            initial_pose_a: 0.0
            initial_cov_xx: 32
            initial_cov_yy: 32
            initial_cov_zz: 32
        

        希望得到你的指导。

        fishbot_nav2.yaml完整的代码文件如下:

        amcl:
          ros__parameters:
            use_sim_time: True
            alpha1: 0.2
            alpha2: 0.2
            alpha3: 0.2
            alpha4: 0.2
            alpha5: 0.2
            base_frame_id: "base_link"
            beam_skip_distance: 0.5
            beam_skip_error_threshold: 0.9
            beam_skip_threshold: 0.3
            do_beamskip: false
            global_frame_id: "map"
            lambda_short: 0.1
            laser_likelihood_max_dist: 2.0
            laser_max_range: 100.0
            laser_min_range: -1.0
            laser_model_type: "likelihood_field"
            max_beams: 60
            max_particles: 5000
            min_particles: 500
            initial_pose_x: 0.0
            initial_pose_y: 0.0
            initial_pose_a: 0.0
            initial_cov_xx: 32
            initial_cov_yy: 32
            initial_cov_zz: 32
            odom_frame_id: "odom"
            pf_err: 0.05
            pf_z: 0.99
            recovery_alpha_fast: 0.0
            recovery_alpha_slow: 0.0
            resample_interval: 1
            robot_model_type: "nav2_amcl::DifferentialMotionModel"
            save_pose_rate: 0.5
            sigma_hit: 0.2
            tf_broadcast: true
            transform_tolerance: 10.0
            update_min_a: 0.2
            update_min_d: 0.25
            z_hit: 0.5
            z_max: 0.05
            z_rand: 0.5
            z_short: 0.05
            scan_topic: scan
        
        amcl_map_client:
          ros__parameters:
            use_sim_time: True
        
        amcl_rclcpp_node:
          ros__parameters:
            use_sim_time: True
        
        bt_navigator:
          ros__parameters:
            use_sim_time: True
            global_frame: map
            robot_base_frame: base_link
            odom_topic: /odom
            bt_loop_duration: 10
            default_server_timeout: 20
            # 'default_nav_through_poses_bt_xml' and 'default_nav_to_pose_bt_xml' are use defaults:
            # nav2_bt_navigator/navigate_to_pose_w_replanning_and_recovery.xml
            # nav2_bt_navigator/navigate_through_poses_w_replanning_and_recovery.xml
            # They can be set here or via a RewrittenYaml remap from a parent launch file to Nav2.
            plugin_lib_names:
            - nav2_compute_path_to_pose_action_bt_node
            - nav2_compute_path_through_poses_action_bt_node
            - nav2_smooth_path_action_bt_node
            - nav2_follow_path_action_bt_node
            - nav2_spin_action_bt_node
            - nav2_wait_action_bt_node
            - nav2_back_up_action_bt_node
            - nav2_drive_on_heading_bt_node
            - nav2_clear_costmap_service_bt_node
            - nav2_is_stuck_condition_bt_node
            - nav2_goal_reached_condition_bt_node
            - nav2_goal_updated_condition_bt_node
            - nav2_globally_updated_goal_condition_bt_node
            - nav2_is_path_valid_condition_bt_node
            - nav2_initial_pose_received_condition_bt_node
            - nav2_reinitialize_global_localization_service_bt_node
            - nav2_rate_controller_bt_node
            - nav2_distance_controller_bt_node
            - nav2_speed_controller_bt_node
            - nav2_truncate_path_action_bt_node
            - nav2_truncate_path_local_action_bt_node
            - nav2_goal_updater_node_bt_node
            - nav2_recovery_node_bt_node
            - nav2_pipeline_sequence_bt_node
            - nav2_round_robin_node_bt_node
            - nav2_transform_available_condition_bt_node
            - nav2_time_expired_condition_bt_node
            - nav2_path_expiring_timer_condition
            - nav2_distance_traveled_condition_bt_node
            - nav2_single_trigger_bt_node
            - nav2_is_battery_low_condition_bt_node
            - nav2_navigate_through_poses_action_bt_node
            - nav2_navigate_to_pose_action_bt_node
            - nav2_remove_passed_goals_action_bt_node
            - nav2_planner_selector_bt_node
            - nav2_controller_selector_bt_node
            - nav2_goal_checker_selector_bt_node
            - nav2_controller_cancel_bt_node
            - nav2_path_longer_on_approach_bt_node
            - nav2_wait_cancel_bt_node
            - nav2_spin_cancel_bt_node
            - nav2_back_up_cancel_bt_node
            - nav2_drive_on_heading_cancel_bt_node
        
        bt_navigator_rclcpp_node:
          ros__parameters:
            use_sim_time: True
        
        controller_server:
          ros__parameters:
            use_sim_time: True
            controller_frequency: 20.0
            min_x_velocity_threshold: 0.001
            min_y_velocity_threshold: 0.5
            min_theta_velocity_threshold: 0.001
            failure_tolerance: 0.3
            progress_checker_plugin: "progress_checker"
            goal_checker_plugins: ["general_goal_checker"] # "precise_goal_checker"
            controller_plugins: ["FollowPath"]
        
            # Progress checker parameters
            progress_checker:
              plugin: "nav2_controller::SimpleProgressChecker"
              required_movement_radius: 0.5
              movement_time_allowance: 10.0
            # Goal checker parameters
            #precise_goal_checker:
            #  plugin: "nav2_controller::SimpleGoalChecker"
            #  xy_goal_tolerance: 0.25
            #  yaw_goal_tolerance: 0.25
            #  stateful: True
            general_goal_checker:
              stateful: True
              plugin: "nav2_controller::SimpleGoalChecker"
              xy_goal_tolerance: 0.25
              yaw_goal_tolerance: 0.25
            # DWB parameters
            FollowPath:
              plugin: "dwb_core::DWBLocalPlanner"
              debug_trajectory_details: True
              min_vel_x: 0.0
              min_vel_y: 0.0
              max_vel_x: 0.26
              max_vel_y: 0.0
              max_vel_theta: 1.0
              min_speed_xy: 0.0
              max_speed_xy: 0.26
              min_speed_theta: 0.0
              # Add high threshold velocity for turtlebot 3 issue.
              # https://github.com/ROBOTIS-GIT/turtlebot3_simulations/issues/75
              acc_lim_x: 2.5
              acc_lim_y: 0.0
              acc_lim_theta: 3.2
              decel_lim_x: -2.5
              decel_lim_y: 0.0
              decel_lim_theta: -3.2
              vx_samples: 20
              vy_samples: 5
              vtheta_samples: 20
              sim_time: 1.7
              linear_granularity: 0.05
              angular_granularity: 0.025
              transform_tolerance: 0.2
              xy_goal_tolerance: 0.25
              trans_stopped_velocity: 0.25
              short_circuit_trajectory_evaluation: True
              stateful: True
              critics: ["RotateToGoal", "Oscillation", "BaseObstacle", "GoalAlign", "PathAlign", "PathDist", "GoalDist"]
              BaseObstacle.scale: 0.02
              PathAlign.scale: 32.0
              PathAlign.forward_point_distance: 0.1
              GoalAlign.scale: 24.0
              GoalAlign.forward_point_distance: 0.1
              PathDist.scale: 32.0
              GoalDist.scale: 24.0
              RotateToGoal.scale: 32.0
              RotateToGoal.slowing_factor: 5.0
              RotateToGoal.lookahead_time: -1.0
        
        controller_server_rclcpp_node:
          ros__parameters:
            use_sim_time: True
        
        local_costmap:
          local_costmap:
            ros__parameters:
              update_frequency: 5.0
              publish_frequency: 2.0
              global_frame: odom
              robot_base_frame: base_link
              use_sim_time: True
              rolling_window: true
              width: 3
              height: 3
              resolution: 0.05
              robot_radius: 0.12
              plugins: ["voxel_layer", "inflation_layer"]
              inflation_layer:
                plugin: "nav2_costmap_2d::InflationLayer"
                cost_scaling_factor: 3.0
                inflation_radius: 0.35
              voxel_layer:
                plugin: "nav2_costmap_2d::VoxelLayer"
                enabled: True
                publish_voxel_map: True
                origin_z: 0.0
                z_resolution: 0.05
                z_voxels: 16
                max_obstacle_height: 2.0
                mark_threshold: 0
                observation_sources: scan
                scan:
                  topic: /scan
                  max_obstacle_height: 2.0
                  clearing: True
                  marking: True
                  data_type: "LaserScan"
                  raytrace_max_range: 3.0
                  raytrace_min_range: 0.0
                  obstacle_max_range: 2.5
                  obstacle_min_range: 0.0
              static_layer:
                map_subscribe_transient_local: True
              always_send_full_costmap: True
          local_costmap_client:
            ros__parameters:
              use_sim_time: True
          local_costmap_rclcpp_node:
            ros__parameters:
              use_sim_time: True
        
        global_costmap:
          global_costmap:
            ros__parameters:
              update_frequency: 1.0
              publish_frequency: 1.0
              global_frame: map
              robot_base_frame: base_link
              use_sim_time: True
              robot_radius: 0.12
              resolution: 0.05
              track_unknown_space: true
              plugins: ["static_layer", "obstacle_layer", "inflation_layer"]
              obstacle_layer:
                plugin: "nav2_costmap_2d::ObstacleLayer"
                enabled: True
                observation_sources: scan
                scan:
                  topic: /scan
                  max_obstacle_height: 2.0
                  clearing: True
                  marking: True
                  data_type: "LaserScan"
                  raytrace_max_range: 3.0
                  raytrace_min_range: 0.0
                  obstacle_max_range: 2.5
                  obstacle_min_range: 0.0
              static_layer:
                plugin: "nav2_costmap_2d::StaticLayer"
                map_subscribe_transient_local: True
              inflation_layer:
                plugin: "nav2_costmap_2d::InflationLayer"
                cost_scaling_factor: 3.0
                inflation_radius: 0.35
              always_send_full_costmap: True
          global_costmap_client:
            ros__parameters:
              use_sim_time: True
          global_costmap_rclcpp_node:
            ros__parameters:
              use_sim_time: True
        
        map_server:
          ros__parameters:
            use_sim_time: True
            yaml_filename: "turtlebot3_world.yaml"
        
        map_saver:
          ros__parameters:
            use_sim_time: True
            save_map_timeout: 5.0
            free_thresh_default: 0.25
            occupied_thresh_default: 0.65
            map_subscribe_transient_local: True
        
        planner_server:
          ros__parameters:
            expected_planner_frequency: 20.0
            use_sim_time: True
            planner_plugins: ["GridBased"]
            GridBased:
              plugin: "nav2_navfn_planner/NavfnPlanner"
              tolerance: 0.5
              use_astar: false
              allow_unknown: true
        
        planner_server_rclcpp_node:
          ros__parameters:
            use_sim_time: True
        
        smoother_server:
          ros__parameters:
            use_sim_time: True
            smoother_plugins: ["simple_smoother"]
            simple_smoother:
              plugin: "nav2_smoother::SimpleSmoother"
              tolerance: 1.0e-10
              max_its: 1000
              do_refinement: True
        
        behavior_server:
          ros__parameters:
            costmap_topic: local_costmap/costmap_raw
            footprint_topic: local_costmap/published_footprint
            cycle_frequency: 10.0
            behavior_plugins: ["spin", "backup", "drive_on_heading", "wait"]
            spin:
              plugin: "nav2_behaviors/Spin"
            backup:
              plugin: "nav2_behaviors/BackUp"
            drive_on_heading:
              plugin: "nav2_behaviors/DriveOnHeading"
            wait:
              plugin: "nav2_behaviors/Wait"
            global_frame: odom
            robot_base_frame: base_link
            transform_tolerance: 0.1
            use_sim_time: true
            simulate_ahead_time: 2.0
            max_rotational_vel: 1.0
            min_rotational_vel: 0.4
            rotational_acc_lim: 3.2
        
        robot_state_publisher:
          ros__parameters:
            use_sim_time: True
        
        waypoint_follower:
          ros__parameters:
            loop_rate: 20
            stop_on_failure: false
            waypoint_task_executor_plugin: "wait_at_waypoint"
            wait_at_waypoint:
              plugin: "nav2_waypoint_follower::WaitAtWaypoint"
              enabled: True
              waypoint_pause_duration: 200
        
        
        1 条回复 最后回复 回复 引用 0
        • 第一个帖子
          最后一个帖子
        皖ICP备16016415号-7
        Powered by NodeBB | 鱼香ROS