Quantcast
Channel: ROS Answers: Open Source Q&A Forum - RSS feed
Viewing all articles
Browse latest Browse all 667

Robot drifts away from goal and laserscan skews on random interval

$
0
0
I have to apologize for the vague and/or convoluted title. We don't know where the issue is ourselves. The robot I'm working on makes use of ROS Kinetic, the standard navigation stack with `amcl`, `teb_local_planner`, `laser_scan_matcher` and `move_base`. It is a front-wheeled differential drive with two caster wheels on the back with a rectangular body/footprint, built on the chassis of an electric wheelchair. The issue we're facing is happening on a random interval: Whenever we set a goal in rviz, the robot does move towards his goal. After a random amount of time or after a certain distance has been traveled, two errors could occur: The robot loses track of his position by "teleporting" on the map within rviz, commonly setting himself approx. 1 meter to the right. The laser scan output could also become skewed, throwing off its odometry. Each of these erratic behaviours is visible within rviz and the console output can mention the errors `Map Update/Control loop missed its desired rate <...>` As a result, the robot would keep on its last set velocity (`cmd_vel` output) and rviz would no longer be able to set and display a new goal, rendering the robot unresponsive. We're able to clear `cmd_vel` by using manual control (`teleop_twist_joy`) and stopping the robot that way. Upon hitting the `reset` button on the bottom-right in rviz, we progressively lose the local and global costmap per press, accompanied by the warning "No map provided". Rebooting the ROS environment will restore everything until the "drift" occurs again. We can consistently recreate this behaviour by having the robot drive various distances, believing it appears more often when traversing small distances of approximately 2-3 meters, on longer distances i.e 5-20 meters the errors occure less often, but the laserscan becoming askew is still prevalent. We're hoping to get video footage of the erroneous behaviour in order to demonstrate what's happening both physically and in rviz. Below are the common configuration files requested: - navigation.launch - base_local_planner_params.yaml controller_frequency: 2.0 recovery_behavior_enabled: false clearing_rotation_allowed: false recovery_behaviors: [{name: conservative_reset, type: clear_costmap_recovery/ClearCostmapRecovery}, {name: aggressive_reset, type: clear_costmap_recovery/ClearCostmapRecovery}] TebLocalPlannerROS: odom_topic: odom map_frame: /odom # Trajectory teb_autosize: True dt_ref: 0.3 dt_hysteresis: 0.1 global_plan_overwrite_orientation: True max_global_plan_lookahead_dist: 2.0 feasibility_check_no_poses: 4 # Robot max_vel_x: 0.7 min_vel_x: 0.3 max_vel_x_backwards: 0.5 max_vel_theta: 0.7 acc_lim_x: 0.7 acc_lim_theta: 0.7 min_turning_radius: 0.4 footprint_model: # types: "point", "circular", "two_circles", "line", "polygon" type: "line" line_start: [0.0, 0.0] line_end: [-0.6, 0.0] radius: 0.2 # GoalTolerance xy_goal_tolerance: 0.2 yaw_goal_tolerance: 0.1 free_goal_vel: False # Obstacles min_obstacle_dist: 0.3 include_costmap_obstacles: True costmap_obstacles_behind_robot_dist: 1.0 obstacle_poses_affected: 30 costmap_converter_plugin: "costmap_converter::CostmapToPolygonsDBSMCCH" costmap_converter_spin_thread: True costmap_converter_rate: 5 # Optimization no_inner_iterations: 4 no_outer_iterations: 3 optimization_activate: True optimization_verbose: False penalty_epsilon: 0.1 weight_max_vel_x: 2 weight_max_vel_theta: 1 weight_acc_lim_x: 0.5 weight_acc_lim_theta: 6.0 weight_kinematics_nh: 1000 weight_kinematics_forward_drive: 1 weight_kinematics_turning_radius: 1 weight_optimaltime: 1 weight_obstacle: 50 # Homotopy Class Planner enable_homotopy_class_planning: True enable_multithreading: True simple_exploration: True max_number_classes: 2 roadmap_graph_no_samples: 15 roadmap_graph_area_width: 5 h_signature_prescaler: 0.5 h_signature_threshold: 0.1 obstacle_keypoint_offset: 0.1 obstacle_heading_threshold: 0.45 visualize_hc_graph: False - costmap_common_params.yaml plugins: - {name: static_layer, type: 'costmap_2d::StaticLayer'} - {name: obstacle_layer, type: 'costmap_2d::ObstacleLayer'} - {name: inflation_layer, type: 'costmap_2d::InflationLayer'} - {name: sonar, type: "range_sensor_layer::RangeSensorLayer"} footprint: [[0.25,-0.31],[0.25,0.31],[-0.69,0.31],[-0.69,-0.31]] footprint_padding: 0.03 inflation_layer: inflation_radius: 0.4 cost_scaling_factor: 2.58 sonar: topics: ['/sonar_data'] obstacle_layer: combination_method: 1 enabled: true footprint_clearing_enabled: true max_obstacle_height: 0.6 observation_sources: scan obstacle_range: 2.0 raytrace_range: 2.0 scan: {clearing: true, data_type: LaserScan, expected_update_rate: 0, marking: true, topic: /scan_filtered} - global_costmap_params.yaml global_costmap: global_frame: map robot_base_frame: /base_link update_frequency: 5.0 publish_frequency: 1.0 static_map: true rolling_window: false resolution: 0.05 transform_tolerance: 1.0 map_type: costmap - local_costmap_params.yaml local_costmap: global_frame: odom robot_base_frame: base_link update_frequency: 5.0 publish_frequency: 1.0 static_map: true rolling_window: true width: 5.0 height: 5.0 resolution: 0.05 transform_tolerance: 1.0 map_type: costmap inflation_layer: inflation_radius: 0.2 cost_scaling_factor: 10

Viewing all articles
Browse latest Browse all 667

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>