Tuning azimut3 navigation parameters

This commit is contained in:
matlabbe
2015-03-27 18:55:34 -04:00
parent a0bd43b9cf
commit 4864b35775
5 changed files with 100 additions and 54 deletions
+24 -10
View File
@@ -18,9 +18,11 @@
<param name="use_action_for_goal" type="bool" value="true"/> <param name="use_action_for_goal" type="bool" value="true"/>
<param name="cloud_decimation" type="int" value="1"/> <!-- we already decimate in memory below --> <param name="cloud_decimation" type="int" value="1"/> <!-- we already decimate in memory below -->
<param name="grid_eroded" type="bool" value="true"/> <param name="grid_eroded" type="bool" value="true"/>
<param name="grid_cell_size" type="double" value="0.05"/>
<param name="scan_inf_is_valid" type="bool" value="true"/>
<remap from="odom" to="/base_controller/odom"/> <remap from="odom" to="/base_controller/odom"/>
<remap from="scan" to="/base_scan"/> <remap from="scan" to="/scan"/>
<remap from="mapData" to="mapData"/> <remap from="mapData" to="mapData"/>
<remap from="rgb/image" to="/camera/rgb/image_rect_color"/> <remap from="rgb/image" to="/camera/rgb/image_rect_color"/>
@@ -78,8 +80,9 @@
<!-- ROS navigation stack move_base --> <!-- ROS navigation stack move_base -->
<group ns="planner"> <group ns="planner">
<remap from="base_scan" to="/base_scan"/> <remap from="base_scan" to="/scan"/>
<remap from="openni_points" to="/local_costmap_cloud"/> <remap from="obstacles_cloud" to="/obstacles_cloud"/>
<remap from="ground_cloud" to="/ground_cloud"/>
<remap from="map" to="/map"/> <remap from="map" to="/map"/>
<remap from="move_base_simple/goal" to="/planner_goal"/> <remap from="move_base_simple/goal" to="/planner_goal"/>
@@ -87,8 +90,8 @@
<param name="base_global_planner" value="navfn/NavfnROS"/> <param name="base_global_planner" value="navfn/NavfnROS"/>
<rosparam file="$(find rtabmap_ros)/launch/azimut3/config/costmap_common_params.yaml" command="load" ns="global_costmap" /> <rosparam file="$(find rtabmap_ros)/launch/azimut3/config/costmap_common_params.yaml" command="load" ns="global_costmap" />
<rosparam file="$(find rtabmap_ros)/launch/azimut3/config/costmap_common_params.yaml" command="load" ns="local_costmap" /> <rosparam file="$(find rtabmap_ros)/launch/azimut3/config/costmap_common_params.yaml" command="load" ns="local_costmap" />
<rosparam file="$(find rtabmap_ros)/launch/azimut3/config/local_costmap_params_2d.yaml" command="load" /> <rosparam file="$(find rtabmap_ros)/launch/azimut3/config/local_costmap_params_2d.yaml" command="load" ns="local_costmap" />
<rosparam file="$(find rtabmap_ros)/launch/azimut3/config/global_costmap_params.yaml" command="load" /> <rosparam file="$(find rtabmap_ros)/launch/azimut3/config/global_costmap_params.yaml" command="load" ns="global_costmap"/>
<rosparam file="$(find rtabmap_ros)/launch/azimut3/config/base_local_planner_params.yaml" command="load" /> <rosparam file="$(find rtabmap_ros)/launch/azimut3/config/base_local_planner_params.yaml" command="load" />
</node> </node>
@@ -109,7 +112,7 @@
<group ns="camera"> <group ns="camera">
<node pkg="nodelet" type="nodelet" name="data_throttle" args="load rtabmap_ros/data_throttle camera_nodelet_manager" output="screen"> <node pkg="nodelet" type="nodelet" name="data_throttle" args="load rtabmap_ros/data_throttle camera_nodelet_manager" output="screen">
<param name="rate" type="double" value="5"/> <param name="rate" type="double" value="5"/>
<param name="decimation" type="int" value="4"/> <param name="decimation" type="int" value="2"/>
<remap from="rgb/image_in" to="rgb/image_rect_color"/> <remap from="rgb/image_in" to="rgb/image_rect_color"/>
<remap from="depth/image_in" to="depth_registered/image_raw"/> <remap from="depth/image_in" to="depth_registered/image_raw"/>
@@ -124,11 +127,22 @@
<node pkg="nodelet" type="nodelet" name="points_xyz_planner" args="load rtabmap_ros/point_cloud_xyz camera_nodelet_manager"> <node pkg="nodelet" type="nodelet" name="points_xyz_planner" args="load rtabmap_ros/point_cloud_xyz camera_nodelet_manager">
<remap from="depth/image" to="data_resized_image_depth"/> <remap from="depth/image" to="data_resized_image_depth"/>
<remap from="depth/camera_info" to="data_resized_camera_info"/> <remap from="depth/camera_info" to="data_resized_camera_info"/>
<remap from="cloud" to="/local_costmap_cloud" /> <remap from="cloud" to="cloudXYZ" />
<param name="decimation" type="int" value="1"/> <!-- already decimated above --> <param name="decimation" type="int" value="1"/> <!-- already decimated above -->
<param name="max_depth" type="double" value="6.0"/> <param name="max_depth" type="double" value="3.0"/>
<param name="noise_filter_radius" type="double" value="0.05"/> <param name="voxel_size" type="double" value="0.02"/>
<param name="noise_filter_min_neighbors" type="int" value="10"/> </node>
<node pkg="nodelet" type="nodelet" name="obstacles_detection" args="load rtabmap_ros/obstacles_detection camera_nodelet_manager">
<remap from="cloud" to="cloudXYZ"/>
<remap from="obstacles" to="/obstacles_cloud"/>
<remap from="ground" to="/ground_cloud"/>
<param name="frame_id" type="string" value="base_footprint"/>
<param name="map_frame_id" type="string" value="map"/>
<param name="wait_for_transform" type="bool" value="true"/>
<param name="min_cluster_size" type="int" value="20"/>
<param name="max_obstacles_height" type="double" value="0.4"/>
</node> </node>
</group> </group>
</launch> </launch>
@@ -3,24 +3,39 @@ TrajectoryPlannerROS:
# Current limits based on AZ3 standalone configuration. # Current limits based on AZ3 standalone configuration.
acc_lim_x: 0.75 acc_lim_x: 0.75
acc_lim_y: 0.75 acc_lim_y: 0.75
acc_lim_theta: 4.00 acc_lim_theta: 4
# min_vel_x and max_rotational_vel were set to keep the ICR at # min_vel_x and max_rotational_vel were set to keep the ICR at
# minimal distance of 0.48 m. # minimal distance of 0.48 m.
# Basically, max_rotational_vel * rho_min <= min_vel_x # Basically, max_rotational_vel * rho_min <= min_vel_x
max_vel_x: 0.700 max_vel_x: 0.7
min_vel_x: 0.24 min_vel_x: 0.24
max_rotational_vel: 0.5 max_vel_theta: 0.5
min_in_place_rotational_vel: 0.15 min_vel_theta: -0.5
min_in_place_vel_theta: 0.25
holonomic_robot: true
xy_goal_tolerance: 0.20 xy_goal_tolerance: 0.25
yaw_goal_tolerance: 0.20 yaw_goal_tolerance: 0.25
latch_xy_goal_tolerance: true
sim_time: 1.5 # make sure that the minimum velocity multiplied by the sim_period is less than twice the tolerance on a goal. Otherwise, the robot will prefer to rotate in place just outside of range of its target position rather than moving towards the goal.
vtheta_samples: 30 sim_time: 1.5 # set between 1 and 2. The higher he value, the smoother the path (though more samples would be required).
sim_granularity: 0.025
angular_sim_granularity: 0.05
vx_samples: 12
vtheta_samples: 20
meter_scoring: true meter_scoring: true
pdist_scale: 0.95 # The higher will follow more the global path.
gdist_scale: 0.2
occdist_scale: 0.01
publish_cost_grid_pc: false
#move_base
controller_frequency: 10.0 #The robot can move faster when higher.
#global planner #global planner
NavfnROS: NavfnROS:
allow_unknown: false allow_unknown: true
visualize_potential: true visualize_potential: false
@@ -1,9 +1,9 @@
obstacle_range: 2.5
raytrace_range: 3.0
footprint: [[ 0.3, 0.3], [-0.3, 0.3], [-0.3, -0.3], [ 0.3, -0.3]] footprint: [[ 0.3, 0.3], [-0.3, 0.3], [-0.3, -0.3], [ 0.3, -0.3]]
footprint_padding: 0.03 footprint_padding: 0.02
#robot_radius: 0.38
#robot_radius: ir_of_robot #robot_radius: ir_of_robot
inflation_radius: 0.55 inflation_layer:
inflation_radius: 0.7 # 2xfootprint, it helps to keep the global planned path farther from obstacles
transform_tolerance: 2 transform_tolerance: 2
@@ -1,10 +1,10 @@
global_costmap: #global_costmap
global_frame: map global_frame: map
robot_base_frame: base_footprint robot_base_frame: base_footprint
update_frequency: 1 update_frequency: 1
publish_frequency: 1 publish_frequency: 2
always_send_full_costmap: true always_send_full_costmap: false
plugins: [ plugins:
{name: static_layer, type: "rtabmap_ros::StaticLayer"}, - {name: static_layer, type: "rtabmap_ros::StaticLayer"}
{name: inflation_layer, type: "costmap_2d::InflationLayer"} - {name: inflation_layer, type: "costmap_2d::InflationLayer"}
]
@@ -1,33 +1,50 @@
local_costmap: global_frame: map
global_frame: map robot_base_frame: base_footprint
robot_base_frame: base_footprint update_frequency: 2.0
update_frequency: 2.0 publish_frequency: 2.0
publish_frequency: 2.0 rolling_window: true
static_map: false width: 4.0
rolling_window: true height: 4.0
width: 4.0 resolution: 0.025
height: 4.0 origin_x: -2.0
resolution: 0.025 origin_y: -2.0
origin_x: -2.0
origin_y: -2.0
#observation_sources: laser_scan_sensor plugins:
observation_sources: laser_scan_sensor point_cloud_sensor - {name: obstacle_layer, type: "costmap_2d::ObstacleLayer"}
- {name: inflation_layer, type: "costmap_2d::InflationLayer"}
obstacle_layer:
obstacle_range: 2.5
raytrace_range: 3.0
max_obstacle_height: 0.4
observation_sources: laser_scan_sensor point_cloud_sensorA point_cloud_sensorB
laser_scan_sensor: { laser_scan_sensor: {
data_type: LaserScan, data_type: LaserScan,
topic: base_scan, topic: base_scan,
expected_update_rate: 0.2, expected_update_rate: 0.2,
marking: true, marking: true,
clearing: false} clearing: true
}
point_cloud_sensor: { point_cloud_sensorA: {
sensor_frame: base_footprint, sensor_frame: base_footprint,
data_type: PointCloud2, data_type: PointCloud2,
topic: openni_points, topic: obstacles_cloud,
expected_update_rate: 0.5, expected_update_rate: 0.5,
marking: true, marking: true,
clearing: true, clearing: true,
min_obstacle_height: 0.05, min_obstacle_height: 0.04
max_obstacle_height: 0.4} }
point_cloud_sensorB: {
sensor_frame: base_footprint,
data_type: PointCloud2,
topic: ground_cloud,
expected_update_rate: 0.5,
marking: false,
clearing: true,
min_obstacle_height: -1.0 # make usre the ground is not filtered
}