diff --git a/launch/imu2d_demo.launch b/launch/imu2d_demo.launch index 97f98df7fa7b600a0802996448327e31bf5da509..5f0396bef90ed8ffe93b057e7ef0ce5f6270b1a3 100644 --- a/launch/imu2d_demo.launch +++ b/launch/imu2d_demo.launch @@ -5,6 +5,8 @@ <arg name="sec" default="0" /> <arg name="profiling" default="false" /> <arg name="gdb" default="false" /> + <arg name="test" default="1" /> + <arg name="bag" default="test_filtered_no_map" /> <arg name="launch_pref" default="" unless="$(eval profiling or gdb)"/> <arg name="launch_pref" value="valgrind --tool=callgrind --callgrind-out-file='callgrind.wolf.%p'" if="$(arg profiling)" /> <arg name="launch_pref" value="gdb -ex run --args" if="$(arg gdb)" /> @@ -35,7 +37,7 @@ <node pkg="rosbag" type="play" name="player" - args="-s $(arg sec) -r $(arg speed) -k --clock $(find wolf_demo_imu2d)/bag/test_no_map.bag"/> + args="-s $(arg sec) -r $(arg speed) -k --clock $(find wolf_demo_imu2d)/bag/$(arg bag).bag"/> <node type="rviz" name="rviz" @@ -47,6 +49,6 @@ required="true" output="screen" launch-prefix="$(arg launch_pref)"> - <param name="~yaml_file_path" value="$(find wolf_demo_imu2d)/yaml/imu2d.yaml" /> + <param name="~yaml_file_path" value="$(find wolf_demo_imu2d)/yaml/imu2d_test$(arg test).yaml" /> </node> </launch> diff --git a/launch/imu2d_gravity_demo.launch b/launch/imu2d_gravity_demo.launch new file mode 100644 index 0000000000000000000000000000000000000000..848352beb6a453e1d56ff36cb7fbb0c753f1cc27 --- /dev/null +++ b/launch/imu2d_gravity_demo.launch @@ -0,0 +1,54 @@ +<!-- --> +<launch> + <param name="use_sim_time" value="true" /> + <arg name="speed" default="1" /> + <arg name="sec" default="0" /> + <arg name="profiling" default="false" /> + <arg name="gdb" default="false" /> + <arg name="test" default="1" /> + <arg name="bag" default="test_filtered_no_map" /> + <arg name="launch_pref" default="" unless="$(eval profiling or gdb)"/> + <arg name="launch_pref" value="valgrind --tool=callgrind --callgrind-out-file='callgrind.wolf.%p'" if="$(arg profiling)" /> + <arg name="launch_pref" value="gdb -ex run --args" if="$(arg gdb)" /> + <!-- using "clock" option to use the simulated time. Rosbag launch as the first node --> + + <node pkg="rostopic" type="rostopic" name="" args='pub /helena/sensors/bno055_imu/imu/topic_enable std_msgs/Bool "data: True"'/> + + <node pkg="tf" + type="static_transform_publisher" + name="static_tf" + args="0 0 0 0 0 0 /helena/base_footprint /helena/base_link 100"/> + + <node pkg="tf" + type="static_transform_publisher" + name="static_tf2" + args="0 0 0 0 0 0 /helena/base_link /helena/imu_bno055 100"/> + + <node pkg="tf" + type="static_transform_publisher" + name="static_tf3" + args="0 0 0 3.14159265 0 0 /helena/base_link /helena/velodyne 100"/> + + <node pkg="tf" + type="static_transform_publisher" + name="static_tf4" + args="-0.11 0.01 0 0 0 0 /helena/base_link /helena/imu_microstrain 100"/> + + <node pkg="rosbag" + type="play" + name="player" + args="-s $(arg sec) -r $(arg speed) -k --clock $(find wolf_demo_imu2d)/bag/Sloped/$(arg bag).bag"/> + + <node type="rviz" + name="rviz" + pkg="rviz" + args="-d $(find wolf_demo_imu2d)/rviz/imu2d_demo.rviz"/> + <node type="wolf_ros_node" + name="wolf_ros_node" + pkg="wolf_ros_node" + required="true" + output="screen" + launch-prefix="$(arg launch_pref)"> + <param name="~yaml_file_path" value="$(find wolf_demo_imu2d)/yaml/Gravity/imu2d_gravity_test$(arg test).yaml" /> + </node> +</launch> diff --git a/launch/odom-icp.launch b/launch/odom-icp.launch new file mode 100644 index 0000000000000000000000000000000000000000..a011f059bccec6c50a41d59e1a56b976660e8ee7 --- /dev/null +++ b/launch/odom-icp.launch @@ -0,0 +1,52 @@ +<!-- --> +<launch> + <param name="use_sim_time" value="true" /> + <arg name="speed" default="1" /> + <arg name="sec" default="0" /> + <arg name="profiling" default="false" /> + <arg name="gdb" default="false" /> + <arg name="launch_pref" default="" unless="$(eval profiling or gdb)"/> + <arg name="launch_pref" value="valgrind --tool=callgrind --callgrind-out-file='callgrind.wolf.%p'" if="$(arg profiling)" /> + <arg name="launch_pref" value="gdb -ex run --args" if="$(arg gdb)" /> + <!-- using "clock" option to use the simulated time. Rosbag launch as the first node --> + + <node pkg="rostopic" type="rostopic" name="" args='pub /ana/sensors/bno055_imu/imu/topic_enable std_msgs/Bool "data: True"'/> + + <node pkg="tf" + type="static_transform_publisher" + name="static_tf" + args="0 0 0 0 0 0 /ana/base_footprint /ana/base_link 100"/> + + <node pkg="tf" + type="static_transform_publisher" + name="static_tf2" + args="0 0 0 0 0 0 /ana/base_link /ana/imu_bno055 100"/> + + <node pkg="tf" + type="static_transform_publisher" + name="static_tf3" + args="0 0 0 3.14159265 0 0 /ana/base_link /ana/velodyne 100"/> + + <node pkg="tf" + type="static_transform_publisher" + name="static_tf4" + args="-0.11 0.01 0 0 0 0 /ana/base_link /ana/imu_microstrain 100"/> + + <node pkg="rosbag" + type="play" + name="player" + args="-s $(arg sec) -r $(arg speed) -k --clock $(find wolf_demo_imu2d)/bag/test-fme-slalom.bag"/> + + <node type="rviz" + name="rviz" + pkg="rviz" + args="-d $(find wolf_demo_imu2d)/rviz/imu2d_demo.rviz"/> + <node type="wolf_ros_node" + name="wolf_ros_node" + pkg="wolf_ros_node" + required="true" + output="screen" + launch-prefix="$(arg launch_pref)"> + <param name="~yaml_file_path" value="$(find wolf_demo_imu2d)/yaml/odom-icp.yaml" /> + </node> +</launch> diff --git a/rviz/imu2d_demo.rviz b/rviz/imu2d_demo.rviz index 1fb31303cb74517c54c7bb6ee596a72ba74c0621..d157f0be3f0c03fcdebceb50c120f0de64cde1b6 100644 --- a/rviz/imu2d_demo.rviz +++ b/rviz/imu2d_demo.rviz @@ -5,10 +5,8 @@ Panels: Property Tree Widget: Expanded: - /Global Options1 - - /TF1 - /TF1/Frames1 - /TF1/Tree1 - - /Odometry1 - /Odometry1/Shape1 - /LaserScan1 - /Landmarks1 @@ -39,14 +37,14 @@ Panels: Experimental: false Name: Time SyncMode: 0 - SyncSource: LaserScan + SyncSource: PointCloud2 Toolbars: toolButtonStyle: 2 Visualization Manager: Class: "" Displays: - Alpha: 0.5 - Cell Size: 1 + Cell Size: 5 Class: rviz/Grid Color: 160; 160; 164 Enabled: true @@ -70,14 +68,12 @@ Visualization Manager: All Enabled: false ana/base_footprint: Value: true - ana/base_footprint_robot: - Value: true ana/base_link: - Value: false + Value: true ana/front_left_axle: - Value: false + Value: true ana/front_right_axle: - Value: false + Value: true ana/imu_bno055: Value: true ana/imu_microstrain: @@ -85,9 +81,9 @@ Visualization Manager: ana/odom: Value: true ana/rear_left_axle: - Value: false + Value: true ana/rear_right_axle: - Value: false + Value: true ana/velodyne: Value: true map: @@ -116,8 +112,6 @@ Visualization Manager: {} ana/velodyne: {} - ana/base_footprint_robot: - {} Update Interval: 0 Value: true - Angle Tolerance: 0.100000001 @@ -165,8 +159,8 @@ Visualization Manager: Class: rviz/LaserScan Color: 250; 84; 255 Color Transformer: FlatColor - Decay Time: 0 - Enabled: true + Decay Time: 100 + Enabled: false Invert Rainbow: false Max Color: 255; 255; 255 Max Intensity: 47 @@ -183,26 +177,28 @@ Visualization Manager: Unreliable: false Use Fixed Frame: true Use rainbow: true - Value: true + Value: false - Class: rviz/MarkerArray - Enabled: true + Enabled: false Marker Topic: /wolf_ros_node/graph_landmarks Name: Landmarks Namespaces: {} Queue Size: 100 - Value: true + Value: false - Class: rviz/MarkerArray Enabled: true Marker Topic: /wolf_ros_node/graph_factors Name: Factors Namespaces: - factors_processorimu2d: true + factors_processorimu2dbno: true factors_processorodom2d: true - factors_processorodomicp: false - factors_text_processorimu2d: false + factors_processorodomicp: true + factors_text_processorimu2dbno: false factors_text_processorodom2d: false factors_text_processorodomicp: false + factors_text_unnamed_processor: false + factors_unnamed_processor: true Queue Size: 100 Value: true - Class: rviz/MarkerArray @@ -266,7 +262,7 @@ Visualization Manager: Enabled: false History Length: 1 Name: Imu - Topic: /ana/sensors/bno055_imu/imu_remapped + Topic: /ana/imu/data_remapped Unreliable: false Value: false Enabled: true @@ -293,28 +289,78 @@ Visualization Manager: Value: true Views: Current: - Angle: 0 - Class: rviz/TopDownOrtho + Class: rviz/Orbit + Distance: 35.0371132 Enable Stereo Rendering: Stereo Eye Separation: 0.0599999987 Stereo Focal Distance: 1 Swap Stereo Eyes: false Value: false + Focal Point: + X: 2.42303967 + Y: -1.90124702 + Z: 1.00247037 + Focal Shape Fixed Size: true + Focal Shape Size: 0.0500000007 Invert Z Axis: false Name: Current View Near Clip Distance: 0.00999999978 - Scale: 77.8121338 - Target Frame: ana/base_link - Value: TopDownOrtho (rviz) - X: -0.064257361 - Y: -0.334138036 - Saved: ~ + Pitch: 0.594797194 + Target Frame: map + Value: Orbit (rviz) + Yaw: 4.00817299 + Saved: + - Angle: 0 + Class: rviz/TopDownOrtho + Enable Stereo Rendering: + Stereo Eye Separation: 0.0599999987 + Stereo Focal Distance: 1 + Swap Stereo Eyes: false + Value: false + Invert Z Axis: false + Name: TopDownOrtho + Near Clip Distance: 0.00999999978 + Scale: 64.6596146 + Target Frame: map + Value: TopDownOrtho (rviz) + X: 8.82501411 + Y: -0.175666362 + - Angle: 0 + Class: rviz/TopDownOrtho + Enable Stereo Rendering: + Stereo Eye Separation: 0.0599999987 + Stereo Focal Distance: 1 + Swap Stereo Eyes: false + Value: false + Invert Z Axis: false + Name: TopDownOrtho + Near Clip Distance: 0.00999999978 + Scale: 50.072403 + Target Frame: map + Value: TopDownOrtho (rviz) + X: 1.94783008 + Y: 3.96870375 + - Angle: -1.57000005 + Class: rviz/TopDownOrtho + Enable Stereo Rendering: + Stereo Eye Separation: 0.0599999987 + Stereo Focal Distance: 1 + Swap Stereo Eyes: false + Value: false + Invert Z Axis: false + Name: TopDownOrtho + Near Clip Distance: 0.00999999978 + Scale: 42.1874428 + Target Frame: map + Value: TopDownOrtho (rviz) + X: 1.97467852 + Y: 4.4872756 Window Geometry: Displays: collapsed: false Height: 1056 Hide Left Dock: false - Hide Right Dock: false + Hide Right Dock: true QMainWindow State: 000000ff00000000fd00000004000000000000027f00000396fc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000006400fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000002800000396000000dd00fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f00000396fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000002800000396000000b000fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e100000197000000030000073f0000003efc0100000002fb0000000800540069006d006501000000000000073f0000030000fffffffb0000000800540069006d00650100000000000004500000000000000000000004ba0000039600000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 Selection: collapsed: false @@ -323,7 +369,7 @@ Window Geometry: Tool Properties: collapsed: false Views: - collapsed: false + collapsed: true Width: 1855 X: 65 Y: 24 diff --git a/yaml/Gravity/csm.yaml b/yaml/Gravity/csm.yaml new file mode 100644 index 0000000000000000000000000000000000000000..59f62f628e15cb484f40d3b0ce50b404dfdd317d --- /dev/null +++ b/yaml/Gravity/csm.yaml @@ -0,0 +1,35 @@ +max_iterations: 50 +max_correspondence_dist: 10 +use_corr_tricks: 1 +outliers_maxPerc: 0.9 +use_point_to_line_distance: 1 +outliers_adaptive_order: 0.7 +outliers_adaptive_mult: 1.5 +do_compute_covariance: 1 + +max_angular_correction_deg: 10 +max_linear_correction: 1 +epsilon_xy: 0 +epsilon_theta: 0 +sigma: 0.2 +restart: 0 +restart_threshold_mean_error: 0 +restart_dt: 0 +restart_dtheta: 0 +clustering_threshold: 0 +orientation_neighbourhood: 0 +do_alpha_test: 0 +do_alpha_test_thresholdDeg: 0 +do_visibility_test: 0 +outliers_remove_doubles: 0 +debug_verify_tricks: 0 +gpm_theta_bin_size_deg: 0 +gpm_extend_range_deg: 0 +gpm_interval: 0 +min_reading: 0.023 +max_reading: 60 +use_ml_weights: 0 +use_sigma_weights: 0 + + +cov_factor: 1 diff --git a/yaml/Gravity/csm_inactive.yaml b/yaml/Gravity/csm_inactive.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b99171d815291adbd3d320cc2e67bd53a128fd85 --- /dev/null +++ b/yaml/Gravity/csm_inactive.yaml @@ -0,0 +1,35 @@ +max_iterations: 50 +max_correspondence_dist: 10 +use_corr_tricks: 1 +outliers_maxPerc: 0.9 +use_point_to_line_distance: 1 +outliers_adaptive_order: 0.7 +outliers_adaptive_mult: 1.5 +do_compute_covariance: 1 + +max_angular_correction_deg: 10 +max_linear_correction: 1 +epsilon_xy: 0 +epsilon_theta: 0 +sigma: 0.2 +restart: 0 +restart_threshold_mean_error: 0 +restart_dt: 0 +restart_dtheta: 0 +clustering_threshold: 0 +orientation_neighbourhood: 0 +do_alpha_test: 0 +do_alpha_test_thresholdDeg: 0 +do_visibility_test: 0 +outliers_remove_doubles: 0 +debug_verify_tricks: 0 +gpm_theta_bin_size_deg: 0 +gpm_extend_range_deg: 0 +gpm_interval: 0 +min_reading: 0.023 +max_reading: 60 +use_ml_weights: 0 +use_sigma_weights: 0 + + +cov_factor: 9999999999999999999999 diff --git a/yaml/Gravity/imu2d_gravity_test1.yaml b/yaml/Gravity/imu2d_gravity_test1.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b6509469d423dc8ecf4e97f8fc9216c81250927d --- /dev/null +++ b/yaml/Gravity/imu2d_gravity_test1.yaml @@ -0,0 +1,153 @@ +config: + debug: + profiling: true + profiling_file: "~/wolf_demo_profiling_imu2d_test1.txt" + print_problem: false + print_period: 5 + problem: + tree_manager: + type: "none" + frame_structure: "POV" + dimension: 2 + prior: + mode: "fix" + $state: + P: [0,0] + O: [0] + V: [0,0] + time_tolerance: 0.1 + map: + type: "MapGrid2dGravity" + plugin: "imu" + resolution: 4 + + solver: + max_num_iterations: 100 + verbose: 0 + period: 0 + update_immediately: false + n_threads: 2 + compute_cov: false + + sensors: + - + type: "SensorOdom2d" + name: "odom2d" + plugin: "core" + follow: "test_odom2d_params.yaml" + - + type: "SensorLaser2d" + name: "scanner_front_left" + plugin: "laser" + follow: "test_laser_params.yaml" + - + type: "SensorImu2d" + name: "bno" + plugin: "imu" + follow: "test_imu_params.yaml" + - + type: "SensorImu2d" + name: "microstrain" + plugin: "imu" + follow: "test_imu_params.yaml" + - + type: "SensorGnss" + name: "ublox" + plugin: "gnss" + follow: "test_gnss_params.yaml" + + processors: + - + type: "ProcessorOdom2d" + name: "processorodom2d" + sensor_name: "odom2d" + plugin: "core" + follow: "test_odom2d_processor.yaml" + - + type: "ProcessorOdomIcp" + name: "processorodomicp" + sensor_name: "scanner_front_left" + plugin: "laser" + follow: "test_laser_processor.yaml" + #- + # type: "ProcessorImu2d" + # name: "processorimu2dbno" + # sensor_name: "bno" + # plugin: "imu" + # follow: "test_imu_processor.yaml" + - + type: "ProcessorImu2d" + name: "processorimu2dmicro" + sensor_name: "microstrain" + plugin: "imu" + follow: "test_imu_processor.yaml" + - + type: "ProcessorGnssFix" + name: "processorgnss" + sensor_name: "ublox" + plugin: "gnss" + follow: "test_gnss_processor.yaml" + + ROS subscriber: + - + package: "wolf_ros_node" + type: "SubscriberOdom2d" + topic: "/helena/odom" + sensor_name: "odom2d" + - + package: "wolf_ros_laser" + type: "SubscriberLaser2d" + topic: "/helena/sensors/scan" + sensor_name: "scanner_front_left" + load_params_from_msg: true + - + package: "wolf_ros_imu" + type: "SubscriberImuEnableable" + #topic: "/helena/sensors/bno055_imu/imu" + #sensor_name: "bno" + topic: "/helena/sensors/imu/data" + sensor_name: "microstrain" + follow: "test_imu_subscriber.yaml" + - + package: "wolf_ros_gnss" + type: "SubscriberGnssFix" + topic: "/helena/sensors/ublox_gps/fix" + sensor_name: "ublox" + cov_mode: "factor" + cov_factor: 10 + + ROS publisher: + - + package: "wolf_ros_node" + type: "PublisherTf" + topic: " " + period: 0.1 + follow: "test_publisher_ros_node.yaml" + - + package: "wolf_ros_node" + type: "PublisherGraph" + topic: "graph" + period: 1 + viz_overlapped_factors: true + - + package: "wolf_ros_laser" + type: "PublisherLaserMap" + topic: "map" + period: 1 + map_frame_id: "map" + update_dist_th: 0.05 + update_angle_th: 0.05 + max_n_cells: 1000000 + grid_size: 0.1 + p_free: 0.3 + p_obst: 0.8 + p_free_th: 0.2 + p_obst_th: 0.9 + discard_max_range: true + - + package: "wolf_ros_node" + type: "PublisherStateBlock" + topic: "gravity" + period: 0.1 + sensor: "microstrain" + key: "G" diff --git a/yaml/Gravity/test_gnss_params.yaml b/yaml/Gravity/test_gnss_params.yaml new file mode 100644 index 0000000000000000000000000000000000000000..7290a7da2e05aa526762ba849bf147625d9c9e91 --- /dev/null +++ b/yaml/Gravity/test_gnss_params.yaml @@ -0,0 +1,12 @@ +extrinsic: + pose: [0.270,0.160,0] +extrinsics_fixed: true +clock_bias_GPS_GLO_dynamic: false +clock_bias_GPS_GAL_dynamic: false +clock_bias_GPS_CMP_dynamic: false +ENU: + mode: "auto" + roll_fixed: true + pitch_fixed: true + yaw_fixed: true + translation_fixed: true diff --git a/yaml/Gravity/test_gnss_processor.yaml b/yaml/Gravity/test_gnss_processor.yaml new file mode 100644 index 0000000000000000000000000000000000000000..af7fa5dc0062eba4f4b5042992da66768bfd7ae5 --- /dev/null +++ b/yaml/Gravity/test_gnss_processor.yaml @@ -0,0 +1,13 @@ +keyframe_vote: + voting_active: true + max_time_span: 1 + dist_traveled: 999 +time_tolerance: 0.1 +init_enu_map: false +#enu_map_init_dist_min: +#enu_map_init_dist_max: +enu_map_fix_dist: 0 +fix_from_raw: false +remove_outliers: false +outlier_residual_th: 0 +apply_loss_function: false diff --git a/yaml/Gravity/test_imu_params.yaml b/yaml/Gravity/test_imu_params.yaml new file mode 100644 index 0000000000000000000000000000000000000000..fdc8d87838a2681956302b317c4773c37e8688e0 --- /dev/null +++ b/yaml/Gravity/test_imu_params.yaml @@ -0,0 +1,20 @@ +##bno +#extrinsic: +# pose: [0,0,0] +#a_noise: 0.96 #best: 0.96 +#w_noise: 0.2 +#ab_initial_stdev: 0.5 # m/s2 - initial bias +#wb_initial_stdev: 0.1 # rad/sec - initial bias +#ab_rate_stdev: 0.0000001 # m/s2/sqrt(s) +#wb_rate_stdev: 0.0000001 # rad/s/sqrt(s) +#orthogonal_gravity: false +#microstrain +extrinsic: + pose: [0,0,0] +a_noise: 0.900 +w_noise: 0.1 +ab_initial_stdev: 0.5 # m/s2 - initial bias +wb_initial_stdev: 0.1 # rad/sec - initial bias +ab_rate_stdev: 0.00001 # m/s2/sqrt(s) +wb_rate_stdev: 0.00001 # rad/s/sqrt(s) +orthogonal_gravity: true diff --git a/yaml/Gravity/test_imu_processor.yaml b/yaml/Gravity/test_imu_processor.yaml new file mode 100644 index 0000000000000000000000000000000000000000..3ea39004a54e1051b0d791ec931992eaa5a499af --- /dev/null +++ b/yaml/Gravity/test_imu_processor.yaml @@ -0,0 +1,12 @@ +time_tolerance: 0.008 #Half the sample time, bno +# time_tolerance: 0.005 #Half the sample time, microstrain +unmeasured_perturbation_std: 0.1 +keyframe_vote: + voting_active: false + max_time_span: 2 + max_buff_length: 1000000 + dist_traveled: 10 + angle_turned: 3.14 +state_getter: true +state_priority: 1 +apply_loss_function: false diff --git a/yaml/Gravity/test_imu_subscriber.yaml b/yaml/Gravity/test_imu_subscriber.yaml new file mode 100644 index 0000000000000000000000000000000000000000..0a77d7c3e92e6afd7babda98e5cb615db9b4bfd1 --- /dev/null +++ b/yaml/Gravity/test_imu_subscriber.yaml @@ -0,0 +1,20 @@ +##bno: +#dt: 0.016 +#imu_x_axis: 3 +#imu_y_axis: -2 +#imu_z_axis: 1 +#cov_source: "sensor" +#in_degrees: true +#microstrain: +dt: 0.01 +imu_x_axis: 1 +imu_y_axis: -2 +imu_z_axis: -3 +cov_source: "sensor" +in_degrees: false + +#all +topic_enable: "/helena/sensors/bno055_imu/imu/topic_enable" +static_init_duration: 5 +lowpass_filter: true +lowpass_cutoff_freq: 5 diff --git a/yaml/Gravity/test_laser_params.yaml b/yaml/Gravity/test_laser_params.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f8f9091baa45244adde53ddd856b20980bf71a39 --- /dev/null +++ b/yaml/Gravity/test_laser_params.yaml @@ -0,0 +1,11 @@ +extrinsic: + pose: [0.198,-0.002,3.141592653589793] +LaserScanParams: + angle_min: -3.14159274101 + angle_max: 3.14159274101 + angle_step: 0.007 #0.00700000021607 + scan_time: 0.0 + range_min: 0.0 + range_max: 200 + range_std_dev: 0.2 + angle_std_dev: 0.01 diff --git a/yaml/Gravity/test_laser_processor.yaml b/yaml/Gravity/test_laser_processor.yaml new file mode 100644 index 0000000000000000000000000000000000000000..06847e9355446b14a201ee058fd0c5617f027897 --- /dev/null +++ b/yaml/Gravity/test_laser_processor.yaml @@ -0,0 +1,15 @@ +keyframe_vote: + voting_active: true + min_features_for_keyframe: 10 + min_dist: 999 + min_angle: 999 + min_time: 1 + min_error: 999 + max_points: 0 +max_new_features: 15 +follow: "csm.yaml" +time_tolerance: 0.05 #Half the sample time +state_getter: false +state_priority: 10 +apply_loss_function: false +initial_guess: "state" diff --git a/yaml/Gravity/test_laser_processor_inactive.yaml b/yaml/Gravity/test_laser_processor_inactive.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e1de1ee0aaba9d581fa9f5c0c6e1037db61b2600 --- /dev/null +++ b/yaml/Gravity/test_laser_processor_inactive.yaml @@ -0,0 +1,15 @@ +keyframe_vote: + voting_active: false + min_features_for_keyframe: 10 + min_dist: 999 + min_angle: 999 + min_time: 2 + min_error: 999 + max_points: 0 +max_new_features: 15 +follow: "csm_inactive.yaml" +time_tolerance: 0.05 #Half the sample time +state_getter: true +state_priority: 10 +apply_loss_function: false +initial_guess: "zero" diff --git a/yaml/Gravity/test_odom2d_params.yaml b/yaml/Gravity/test_odom2d_params.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b203455bf11cecd7ab4aa62c5827484670b228ab --- /dev/null +++ b/yaml/Gravity/test_odom2d_params.yaml @@ -0,0 +1,4 @@ +extrinsic: + pose: [0.198,-0.002,0] +k_disp_to_disp: 0.08 +k_rot_to_rot: 0.6 diff --git a/yaml/Gravity/test_odom2d_processor.yaml b/yaml/Gravity/test_odom2d_processor.yaml new file mode 100644 index 0000000000000000000000000000000000000000..2fc31b13f3a668053b7a252abca74011684a30cf --- /dev/null +++ b/yaml/Gravity/test_odom2d_processor.yaml @@ -0,0 +1,12 @@ +keyframe_vote: + voting_active: false + max_time_span: 1 + max_buff_length: 999 + dist_traveled: 999 + angle_turned: 3.14 + cov_det: 999 +unmeasured_perturbation_std: 0.01 +time_tolerance: 0.05 #Half the sample time +state_getter: true +state_priority: 2 +apply_loss_function: false diff --git a/yaml/Gravity/test_publisher_ros_node.yaml b/yaml/Gravity/test_publisher_ros_node.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b4abe64574d3775edbfa5182497f268a82947ac4 --- /dev/null +++ b/yaml/Gravity/test_publisher_ros_node.yaml @@ -0,0 +1,4 @@ +map_frame_id: "map" +odom_frame_id: "helena/odom" +base_frame_id: "helena/base_footprint" +publish_odom_tf: false diff --git a/yaml/csm.yaml b/yaml/csm.yaml index 86a844a093df26002959cceae25d6b1c0d00b8a4..59f62f628e15cb484f40d3b0ce50b404dfdd317d 100644 --- a/yaml/csm.yaml +++ b/yaml/csm.yaml @@ -1,5 +1,5 @@ max_iterations: 50 -max_correspondence_dist: 1 +max_correspondence_dist: 10 use_corr_tricks: 1 outliers_maxPerc: 0.9 use_point_to_line_distance: 1 @@ -7,8 +7,8 @@ outliers_adaptive_order: 0.7 outliers_adaptive_mult: 1.5 do_compute_covariance: 1 -max_angular_correction_deg: 0 -max_linear_correction: 0 +max_angular_correction_deg: 10 +max_linear_correction: 1 epsilon_xy: 0 epsilon_theta: 0 sigma: 0.2 @@ -26,18 +26,10 @@ debug_verify_tricks: 0 gpm_theta_bin_size_deg: 0 gpm_extend_range_deg: 0 gpm_interval: 0 -laser_x: 0 -laser_y: 0 -laser_theta: 0 min_reading: 0.023 max_reading: 60 use_ml_weights: 0 use_sigma_weights: 0 -hsm_linear_cell_size: 0.03 -hsm_angular_cell_size_deg: 1 -hsm_num_angular_hypotheses: 8 -hsm_xc_directions_min_distance_deg: 10 -hsm_xc_ndirections: 3 -hsm_angular_hyp_min_distance_deg: 10 -hsm_linear_xc_max_npeaks: 5 -hsm_linear_xc_peaks_min_distance: 5 \ No newline at end of file + + +cov_factor: 1 diff --git a/yaml/csm_inactive.yaml b/yaml/csm_inactive.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b99171d815291adbd3d320cc2e67bd53a128fd85 --- /dev/null +++ b/yaml/csm_inactive.yaml @@ -0,0 +1,35 @@ +max_iterations: 50 +max_correspondence_dist: 10 +use_corr_tricks: 1 +outliers_maxPerc: 0.9 +use_point_to_line_distance: 1 +outliers_adaptive_order: 0.7 +outliers_adaptive_mult: 1.5 +do_compute_covariance: 1 + +max_angular_correction_deg: 10 +max_linear_correction: 1 +epsilon_xy: 0 +epsilon_theta: 0 +sigma: 0.2 +restart: 0 +restart_threshold_mean_error: 0 +restart_dt: 0 +restart_dtheta: 0 +clustering_threshold: 0 +orientation_neighbourhood: 0 +do_alpha_test: 0 +do_alpha_test_thresholdDeg: 0 +do_visibility_test: 0 +outliers_remove_doubles: 0 +debug_verify_tricks: 0 +gpm_theta_bin_size_deg: 0 +gpm_extend_range_deg: 0 +gpm_interval: 0 +min_reading: 0.023 +max_reading: 60 +use_ml_weights: 0 +use_sigma_weights: 0 + + +cov_factor: 9999999999999999999999 diff --git a/yaml/imu2d.yaml b/yaml/imu2d.yaml index 2dfaaf112c5686cc2f02a602870abae3754ed15b..011f4e63a65e3416eaf265e5f792e9ba51308e5f 100644 --- a/yaml/imu2d.yaml +++ b/yaml/imu2d.yaml @@ -2,7 +2,7 @@ config: debug: profiling: true profiling_file: "~/wolf_demo_profiling_imu2d.txt" - print_problem: true + print_problem: false print_period: 5 problem: tree_manager: @@ -55,18 +55,18 @@ config: range_max: 200 range_std_dev: 0.2 angle_std_dev: 0.01 - - - type: "SensorImu2d" - name: "microstrain" - plugin: "imu" - extrinsic: - pose: [0,0,0] - a_noise: 0.053 - w_noise: 0.011 - ab_initial_stdev: 0.5 # m/s2 - initial bias - wb_initial_stdev: 0.1 # rad/sec - initial bias - ab_rate_stdev: 0.00001 # m/s2/sqrt(s) - wb_rate_stdev: 0.0000001 # rad/s/sqrt(s) + #- + # type: "SensorImu2d" + # name: "microstrain" + # plugin: "imu" + # extrinsic: + # pose: [0,0,0] + # a_noise: 0.053 + # w_noise: 0.011 + # ab_initial_stdev: 0.5 # m/s2 - initial bias + # wb_initial_stdev: 0.1 # rad/sec - initial bias + # ab_rate_stdev: 0.00001 # m/s2/sqrt(s) + # wb_rate_stdev: 0.0000001 # rad/s/sqrt(s) - type: "SensorImu2d" @@ -88,15 +88,15 @@ config: sensor_name: "odom2d" plugin: "core" keyframe_vote: - voting_active: true - max_time_span: 1 + voting_active: false + max_time_span: 5 max_buff_length: 999 dist_traveled: 999 angle_turned: 3.14 cov_det: 999 unmeasured_perturbation_std: 0.01 time_tolerance: 0.05 #Half the sample time - state_getter: false + state_getter: true state_priority: 1 apply_loss_function: false - @@ -105,19 +105,20 @@ config: sensor_name: "scanner_front_left" plugin: "laser" keyframe_vote: - voting_active: false + voting_active: true min_features_for_keyframe: 10 max_new_features: 15 follow: "csm.yaml" vfk_min_dist: 999 vfk_min_angle: 999 - vfk_min_time: 2 - vfk_min_error: 0.05 - vfk_max_points: 140 + vfk_min_time: 3 + vfk_min_error: 0.1 + vfk_max_points: 200 time_tolerance: 0.05 #Half the sample time - state_getter: false - state_priority: 1 + state_getter: true + state_priority: 10 apply_loss_function: false + initial_guess_from_state: true #- # type: "ProcessorLoopClosureIcp" # name: "processorloopclosureicp" @@ -134,7 +135,7 @@ config: # apply_loss_function: true - type: "ProcessorImu2d" - name: "processorimu2d" + name: "processorimu2dbno" sensor_name: "bno" plugin: "imu" time_tolerance: 0.008 #Half the sample time, bno @@ -146,24 +147,24 @@ config: dist_traveled: 10 angle_turned: 3.14 state_getter: true - state_priority: 1 - apply_loss_function: false - - - type: "ProcessorImu2d" - name: "processorimu2d" - sensor_name: "microstrain" - plugin: "imu" - time_tolerance: 0.005 #Half the sample time, microstrain - unmeasured_perturbation_std: 0.1 - keyframe_vote: - voting_active: false - max_time_span: 2 - max_buff_length: 1000000 - dist_traveled: 10 - angle_turned: 3.14 - state_getter: true state_priority: 2 apply_loss_function: false + #- + # type: "ProcessorImu2d" + # name: "processorimu2dmicro" + # sensor_name: "microstrain" + # plugin: "imu" + # time_tolerance: 0.005 #Half the sample time, microstrain + # unmeasured_perturbation_std: 0.1 + # keyframe_vote: + # voting_active: false + # max_time_span: 2 + # max_buff_length: 1000000 + # dist_traveled: 10 + # angle_turned: 3.14 + # state_getter: true + # state_priority: 3 + # apply_loss_function: false ROS subscriber: - @@ -174,7 +175,7 @@ config: - package: "wolf_ros_laser" type: "SubscriberLaser2d" - topic: "/ana/sensors/scan_mal" + topic: "/ana/sensors/scan" sensor_name: "scanner_front_left" load_params_from_msg: true - @@ -182,7 +183,7 @@ config: type: "SubscriberImuEnableable" topic: "/ana/sensors/bno055_imu/imu" topic_enable: "/ana/sensors/bno055_imu/imu/topic_enable" - static_init_duration: 0 + static_init_duration: 14 lowpass_filter: false lowpass_cutoff_freq: 5 dt: 0.016 @@ -193,22 +194,22 @@ config: imu_z_axis: 1 cov_source: "sensor" in_degrees: true - - - package: "wolf_ros_imu" - type: "SubscriberImuEnableable" - topic: "/ana/imu/data_mal" - topic_enable: "/ana/sensors/bno055_imu/imu/topic_enable" - static_init_duration: 0 - lowpass_filter: false - lowpass_cutoff_freq: 5 - dt: 0.016 - sensor_name: "microstrain" - #microstrain: - imu_x_axis: 1 - imu_y_axis: -2 - imu_z_axis: -3 - cov_source: "sensor" - in_degrees: false + #- + # package: "wolf_ros_imu" + # type: "SubscriberImuEnableable" + # topic: "/ana/imu/data_mal" + # topic_enable: "/ana/sensors/bno055_imu/imu/topic_enable" + # static_init_duration: 10 + # lowpass_filter: false + # lowpass_cutoff_freq: 5 + # dt: 0.016 + # sensor_name: "microstrain" + # #microstrain: + # imu_x_axis: 1 + # imu_y_axis: -2 + # imu_z_axis: -3 + # cov_source: "sensor" + # in_degrees: false ROS publisher: - @@ -218,8 +219,8 @@ config: period: 0.1 map_frame_id: "map" odom_frame_id: "ana/odom" - base_frame_id: "ana/base_link" - publish_odom_tf: false + base_frame_id: "ana/base_footprint" + publish_odom_tf: true - package: "wolf_ros_node" type: "PublisherGraph" diff --git a/yaml/imu2d_test1.yaml b/yaml/imu2d_test1.yaml new file mode 100644 index 0000000000000000000000000000000000000000..32bc9486a0adaeed477d032490bd88c3586c5205 --- /dev/null +++ b/yaml/imu2d_test1.yaml @@ -0,0 +1,132 @@ +config: + debug: + profiling: true + profiling_file: "~/wolf_demo_profiling_imu2d_test1.txt" + print_problem: true + print_period: 5 + print_depth: 4 + print_constr_by: false + print_metric: true + print_state_blocks: false + problem: + tree_manager: + type: "none" + frame_structure: "POV" + dimension: 2 + prior: + mode: "fix" + $state: + P: [0,0] + O: [0] + V: [0,0] + time_tolerance: 0.1 + map: + type: "MapBase" + plugin: "core" + + solver: + max_num_iterations: 100 + verbose: 0 + period: 0 + update_immediately: false + n_threads: 2 + compute_cov: false + + sensors: + - + type: "SensorOdom2d" + name: "odom2d" + plugin: "core" + follow: "test_odom2d_params.yaml" + - + type: "SensorLaser2d" + name: "scanner_front_left" + plugin: "laser" + follow: "test_laser_params.yaml" + - + type: "SensorImu2d" + name: "bno" + plugin: "imu" + follow: "test_imu_params.yaml" + - + type: "SensorImu2d" + name: "microstrain" + plugin: "imu" + follow: "test_imu_params.yaml" + + processors: + - + type: "ProcessorOdom2d" + name: "processorodom2d" + sensor_name: "odom2d" + plugin: "core" + follow: "test_odom2d_processor.yaml" + - + type: "ProcessorOdomIcp" + name: "processorodomicp" + sensor_name: "scanner_front_left" + plugin: "laser" + follow: "test_laser_processor.yaml" + - + type: "ProcessorImu2d" + name: "processorimu2dbno" + sensor_name: "bno" + plugin: "imu" + follow: "test_imu_processor.yaml" + #- + # type: "ProcessorImu2d" + # name: "processorimu2dmicro" + # sensor_name: "microstrain" + # plugin: "imu" + # follow: "test_imu_processor.yaml" + + ROS subscriber: + - + package: "wolf_ros_node" + type: "SubscriberOdom2d" + topic: "/ana/odom" + sensor_name: "odom2d" + - + package: "wolf_ros_laser" + type: "SubscriberLaser2d" + topic: "/ana/sensors/scan" + sensor_name: "scanner_front_left" + load_params_from_msg: true + - + package: "wolf_ros_imu" + type: "SubscriberImuEnableable" + topic: "/ana/sensors/bno055_imu/imu" + sensor_name: "bno" + #topic: "/ana/imu/data" + #sensor_name: "microstrain" + follow: "test_imu_subscriber.yaml" + + ROS publisher: + - + package: "wolf_ros_node" + type: "PublisherTf" + topic: " " + period: 0.1 + follow: "test_publisher_ros_node.yaml" + - + package: "wolf_ros_node" + type: "PublisherGraph" + topic: "graph" + period: 1 + viz_overlapped_factors: true + - + package: "wolf_ros_laser" + type: "PublisherLaserMap" + topic: "map" + period: 1 + map_frame_id: "map" + update_dist_th: 0.05 + update_angle_th: 0.05 + max_n_cells: 1000000 + grid_size: 0.1 + p_free: 0.3 + p_obst: 0.8 + p_free_th: 0.2 + p_obst_th: 0.9 + discard_max_range: true + diff --git a/yaml/imu2d_test2.yaml b/yaml/imu2d_test2.yaml new file mode 100644 index 0000000000000000000000000000000000000000..9581a6eb62b4466ec32c53857ecbef8850564acb --- /dev/null +++ b/yaml/imu2d_test2.yaml @@ -0,0 +1,93 @@ +config: + debug: + profiling: true + profiling_file: "~/wolf_demo_profiling_imu2d_test2.txt" + print_problem: false + print_period: 5 + problem: + tree_manager: + type: "none" + frame_structure: "PO" + dimension: 2 + prior: + mode: "fix" + $state: + P: [0,0] + O: [0] + time_tolerance: 0.1 + + solver: + max_num_iterations: 100 + verbose: 0 + period: 0 + update_immediately: false + n_threads: 2 + compute_cov: false + + sensors: + - + type: "SensorOdom2d" + name: "odom2d" + plugin: "core" + follow: "test_odom2d_params.yaml" + - + type: "SensorLaser2d" + name: "scanner_front_left" + plugin: "laser" + follow: "test_laser_params.yaml" + + processors: + - + type: "ProcessorOdom2d" + name: "processorodom2d" + sensor_name: "odom2d" + plugin: "core" + follow: "test_odom2d_processor.yaml" + - + type: "ProcessorOdomIcp" + name: "processorodomicp" + sensor_name: "scanner_front_left" + plugin: "laser" + follow: "test_laser_processor_inactive.yaml" + + ROS subscriber: + - + package: "wolf_ros_node" + type: "SubscriberOdom2d" + topic: "/ana/odom" + sensor_name: "odom2d" + - + package: "wolf_ros_laser" + type: "SubscriberLaser2d" + topic: "/ana/sensors/scan" + sensor_name: "scanner_front_left" + load_params_from_msg: true + + ROS publisher: + - + package: "wolf_ros_node" + type: "PublisherTf" + topic: " " + period: 0.1 + follow: "test_publisher_ros_node.yaml" + - + package: "wolf_ros_node" + type: "PublisherGraph" + topic: "graph" + period: 1 + viz_overlapped_factors: true + - + package: "wolf_ros_laser" + type: "PublisherLaserMap" + topic: "map" + period: 1 + map_frame_id: "map" + update_dist_th: 0.05 + update_angle_th: 0.05 + max_n_cells: 1000000 + grid_size: 0.1 + p_free: 0.3 + p_obst: 0.8 + p_free_th: 0.2 + p_obst_th: 0.9 + discard_max_range: true diff --git a/yaml/imu2d_test3.yaml b/yaml/imu2d_test3.yaml new file mode 100644 index 0000000000000000000000000000000000000000..668270350f786fc3b909e68e10792e6f74933212 --- /dev/null +++ b/yaml/imu2d_test3.yaml @@ -0,0 +1,124 @@ +config: + debug: + profiling: true + profiling_file: "~/wolf_demo_profiling_imu2d_test3.txt" + print_problem: false + print_period: 5 + problem: + tree_manager: + type: "none" + frame_structure: "POV" + dimension: 2 + prior: + mode: "fix" + $state: + P: [0,0] + O: [0] + V: [0,0] + time_tolerance: 0.1 + + solver: + max_num_iterations: 100 + verbose: 0 + period: 0 + update_immediately: false + n_threads: 2 + compute_cov: false + + sensors: + - + type: "SensorOdom2d" + name: "odom2d" + plugin: "core" + follow: "test_odom2d_params.yaml" + - + type: "SensorLaser2d" + name: "scanner_front_left" + plugin: "laser" + follow: "test_laser_params.yaml" + - + type: "SensorImu2d" + name: "bno" + plugin: "imu" + follow: "test_imu_params.yaml" + - + type: "SensorImu2d" + name: "microstrain" + plugin: "imu" + follow: "test_imu_params.yaml" + + processors: + - + type: "ProcessorOdom2d" + name: "processorodom2d" + sensor_name: "odom2d" + plugin: "core" + follow: "test_odom2d_processor.yaml" + - + type: "ProcessorOdomIcp" + name: "processorodomicp" + sensor_name: "scanner_front_left" + plugin: "laser" + follow: "test_laser_processor_inactive.yaml" + - + type: "ProcessorImu2d" + name: "processorimu2dbno" + sensor_name: "bno" + plugin: "imu" + follow: "test_imu_processor.yaml" + #- + # type: "ProcessorImu2d" + # name: "processorimu2dmicro" + # sensor_name: "microstrain" + # plugin: "imu" + # follow: "test_imu_processor.yaml" + + ROS subscriber: + - + package: "wolf_ros_node" + type: "SubscriberOdom2d" + topic: "/ana/odom" + sensor_name: "odom2d" + - + package: "wolf_ros_laser" + type: "SubscriberLaser2d" + topic: "/ana/sensors/scan" + sensor_name: "scanner_front_left" + load_params_from_msg: true + - + package: "wolf_ros_imu" + type: "SubscriberImuEnableable" + topic: "/ana/sensors/bno055_imu/imu" + sensor_name: "bno" + #topic: "/ana/imu/data" + #sensor_name: "microstrain" + follow: "test_imu_subscriber.yaml" + + ROS publisher: + - + package: "wolf_ros_node" + type: "PublisherTf" + topic: " " + period: 0.1 + follow: "test_publisher_ros_node.yaml" + - + package: "wolf_ros_node" + type: "PublisherGraph" + topic: "graph" + period: 1 + viz_overlapped_factors: true + - + package: "wolf_ros_laser" + type: "PublisherLaserMap" + topic: "map" + period: 1 + map_frame_id: "map" + update_dist_th: 0.05 + update_angle_th: 0.05 + max_n_cells: 1000000 + grid_size: 0.1 + p_free: 0.3 + p_obst: 0.8 + p_free_th: 0.2 + p_obst_th: 0.9 + discard_max_range: true diff --git a/yaml/imu2d_test4.yaml b/yaml/imu2d_test4.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e9dd597b83e9c1cc4bfe09d68018bc5ce9f2e9cb --- /dev/null +++ b/yaml/imu2d_test4.yaml @@ -0,0 +1,110 @@ +config: + debug: + profiling: true + profiling_file: "~/wolf_demo_profiling_imu2d_test4.txt" + print_problem: false + print_period: 5 + problem: + tree_manager: + type: "none" + frame_structure: "POV" + dimension: 2 + prior: + mode: "fix" + $state: + P: [0,0] + O: [0] + V: [0,0] + time_tolerance: 0.1 + + solver: + max_num_iterations: 100 + verbose: 0 + period: 0 + update_immediately: false + n_threads: 2 + compute_cov: false + + sensors: + - + type: "SensorLaser2d" + name: "scanner_front_left" + plugin: "laser" + follow: "test_laser_params.yaml" + - + type: "SensorImu2d" + name: "bno" + plugin: "imu" + follow: "test_imu_params.yaml" + - + type: "SensorImu2d" + name: "microstrain" + plugin: "imu" + follow: "test_imu_params.yaml" + + processors: + - + type: "ProcessorOdomIcp" + name: "processorodomicp" + sensor_name: "scanner_front_left" + plugin: "laser" + follow: "test_laser_processor_inactive.yaml" + #- + # type: "ProcessorImu2d" + # name: "processorimu2dbno" + # sensor_name: "bno" + # plugin: "imu" + # follow: "test_imu_processor.yaml" + - + type: "ProcessorImu2d" + name: "processorimu2dmicro" + sensor_name: "microstrain" + plugin: "imu" + follow: "test_imu_processor.yaml" + + ROS subscriber: + - + package: "wolf_ros_laser" + type: "SubscriberLaser2d" + topic: "/ana/sensors/scan" + sensor_name: "scanner_front_left" + load_params_from_msg: true + - + package: "wolf_ros_imu" + type: "SubscriberImuEnableable" + ##bno + #topic: "/ana/sensors/bno055_imu/imu" + #sensor_name: "bno" + #microstrain + topic: "/ana/imu/data" + sensor_name: "microstrain" + follow: "test_imu_subscriber.yaml" + + ROS publisher: + - + package: "wolf_ros_node" + type: "PublisherTf" + topic: " " + period: 0.1 + follow: "test_publisher_ros_node.yaml" + - + package: "wolf_ros_node" + type: "PublisherGraph" + topic: "graph" + period: 1 + viz_overlapped_factors: true + - + package: "wolf_ros_laser" + type: "PublisherLaserMap" + topic: "map" + period: 1 + map_frame_id: "map" + update_dist_th: 0.05 + update_angle_th: 0.05 + max_n_cells: 1000000 + grid_size: 0.1 + p_free: 0.3 + p_obst: 0.8 + p_free_th: 0.2 + p_obst_th: 0.9 + discard_max_range: true diff --git a/yaml/imu2d_test5.yaml b/yaml/imu2d_test5.yaml new file mode 100644 index 0000000000000000000000000000000000000000..2546db51174ac3caf7269eeeb256bdfc0e96d40b --- /dev/null +++ b/yaml/imu2d_test5.yaml @@ -0,0 +1,109 @@ +config: + debug: + profiling: true + profiling_file: "~/wolf_demo_profiling_imu2d_test1.txt" + print_problem: true + print_period: 5 + problem: + tree_manager: + type: "none" + frame_structure: "POV" + dimension: 2 + prior: + mode: "fix" + $state: + P: [0,0] + O: [0] + V: [0,0] + time_tolerance: 0.1 + + solver: + max_num_iterations: 100 + verbose: 0 + period: 0 + update_immediately: false + n_threads: 2 + compute_cov: false + + sensors: + - + type: "SensorLaser2d" + name: "scanner_front_left" + plugin: "laser" + follow: "test_laser_params.yaml" + - + type: "SensorImu2d" + name: "bno" + plugin: "imu" + follow: "test_imu_params.yaml" + - + type: "SensorImu2d" + name: "microstrain" + plugin: "imu" + follow: "test_imu_params.yaml" + + processors: + - + type: "ProcessorOdomIcp" + name: "processorodomicp" + sensor_name: "scanner_front_left" + plugin: "laser" + follow: "test_laser_processor.yaml" + - + type: "ProcessorImu2d" + name: "processorimu2dbno" + sensor_name: "bno" + plugin: "imu" + follow: "test_imu_processor.yaml" + #- + # type: "ProcessorImu2d" + # name: "processorimu2dmicro" + # sensor_name: "microstrain" + # plugin: "imu" + # follow: "test_imu_processor.yaml" + + ROS subscriber: + - + package: "wolf_ros_laser" + type: "SubscriberLaser2d" + topic: "/ana/sensors/scan" + sensor_name: "scanner_front_left" + load_params_from_msg: true + - + package: "wolf_ros_imu" + type: "SubscriberImuEnableable" + topic: "/ana/sensors/bno055_imu/imu" + sensor_name: "bno" + #topic: "/ana/imu/data" + #sensor_name: "microstrain" + follow: "test_imu_subscriber.yaml" + + ROS publisher: + - + package: "wolf_ros_node" + type: "PublisherTf" + topic: " " + period: 0.1 + follow: "test_publisher_ros_node.yaml" + - + package: "wolf_ros_node" + type: "PublisherGraph" + topic: "graph" + period: 1 + viz_overlapped_factors: true + - + package: "wolf_ros_laser" + type: "PublisherLaserMap" + topic: "map" + period: 1 + map_frame_id: "map" + update_dist_th: 0.05 + update_angle_th: 0.05 + max_n_cells: 1000000 + grid_size: 0.1 + p_free: 0.3 + p_obst: 0.8 + p_free_th: 0.2 + p_obst_th: 0.9 + discard_max_range: true + diff --git a/yaml/imu2d_test6.yaml b/yaml/imu2d_test6.yaml new file mode 100644 index 0000000000000000000000000000000000000000..01ccb1b039f2aba6ff4e5aa6deffb1626d04d42b --- /dev/null +++ b/yaml/imu2d_test6.yaml @@ -0,0 +1,95 @@ +config: + debug: + profiling: true + profiling_file: "~/wolf_demo_profiling_imu2d_test1.txt" + print_problem: false + print_period: 5 + problem: + tree_manager: + type: "none" + frame_structure: "POV" + dimension: 2 + prior: + mode: "fix" + $state: + P: [0,0] + O: [0] + V: [0,0] + time_tolerance: 0.1 + + solver: + max_num_iterations: 100 + verbose: 0 + period: 0 + update_immediately: false + n_threads: 2 + compute_cov: false + + sensors: + - + type: "SensorOdom2d" + name: "odom2d" + plugin: "core" + follow: "test_odom2d_params.yaml" + - + type: "SensorLaser2d" + name: "scanner_front_left" + plugin: "laser" + follow: "test_laser_params.yaml" + + processors: + - + type: "ProcessorOdom2d" + name: "processorodom2d" + sensor_name: "odom2d" + plugin: "core" + follow: "test_odom2d_processor.yaml" + - + type: "ProcessorOdomIcp" + name: "processorodomicp" + sensor_name: "scanner_front_left" + plugin: "laser" + follow: "test_laser_processor.yaml" + + ROS subscriber: + - + package: "wolf_ros_node" + type: "SubscriberOdom2d" + topic: "/ana/odom" + sensor_name: "odom2d" + - + package: "wolf_ros_laser" + type: "SubscriberLaser2d" + topic: "/ana/sensors/scan" + sensor_name: "scanner_front_left" + load_params_from_msg: true + + ROS publisher: + - + package: "wolf_ros_node" + type: "PublisherTf" + topic: " " + period: 0.1 + follow: "test_publisher_ros_node.yaml" + - + package: "wolf_ros_node" + type: "PublisherGraph" + topic: "graph" + period: 1 + viz_overlapped_factors: true + - + package: "wolf_ros_laser" + type: "PublisherLaserMap" + topic: "map" + period: 1 + map_frame_id: "map" + update_dist_th: 0.05 + update_angle_th: 0.05 + max_n_cells: 1000000 + grid_size: 0.1 + p_free: 0.3 + p_obst: 0.8 + p_free_th: 0.2 + p_obst_th: 0.9 + discard_max_range: true + diff --git a/yaml/odom-icp.yaml b/yaml/odom-icp.yaml new file mode 100644 index 0000000000000000000000000000000000000000..44a122fff0a2da32523ecb46b8f4fb8a7b68141b --- /dev/null +++ b/yaml/odom-icp.yaml @@ -0,0 +1,155 @@ +config: + debug: + profiling: true + profiling_file: "~/wolf_demo_profiling_odom-icp.txt" + print_problem: false + print_period: 5 + problem: + tree_manager: + type: "none" + frame_structure: "PO" + dimension: 2 + prior: + mode: "fix" + $state: + P: [0,0] + O: [0] + time_tolerance: 0.1 + #mode: "factor" + #state: [0,0,0] + #cov: [[3,3],.1,0,0,0,.1,0,0,0,.1] + #time_tolerance: 0.1 + + solver: + max_num_iterations: 100 + verbose: 0 + period: 0 + update_immediately: false + n_threads: 2 + compute_cov: false + + sensors: + - + type: "SensorOdom2d" + name: "odom2d" + plugin: "core" + extrinsic: + pose: [0,0,0] + k_disp_to_disp: 0.1 + k_rot_to_rot: 1.5 + - + type: "SensorLaser2d" + name: "scanner_front_left" + plugin: "laser" + extrinsic: + # pose: [0.15,0.15,0] + # pose: [0.2,0.1, 1.57] + pose: [0,0,3.1415926535] #Last value was pi + LaserScanParams: + angle_min: -3.14159274101 + angle_max: 3.14159274101 + angle_step: 0.007 #0.00700000021607 + scan_time: 0.0 + range_min: 0.0 + range_max: 200 + range_std_dev: 0.2 + angle_std_dev: 0.01 + + processors: + - + type: "ProcessorOdom2d" + name: "processorodom2d" + sensor_name: "odom2d" + plugin: "core" + keyframe_vote: + voting_active: false + max_time_span: 5 + max_buff_length: 999 + dist_traveled: 999 + angle_turned: 3.14 + cov_det: 999 + unmeasured_perturbation_std: 0.01 + time_tolerance: 0.05 #Half the sample time + state_getter: true + state_priority: 1 + apply_loss_function: false + - + type: "ProcessorOdomIcp" + name: "processorodomicp" + sensor_name: "scanner_front_left" + plugin: "laser" + keyframe_vote: + voting_active: true + min_features_for_keyframe: 10 + max_new_features: 15 + follow: "csm.yaml" + vfk_min_dist: 999 + vfk_min_angle: 999 + vfk_min_time: 3 + vfk_min_error: 0.1 + vfk_max_points: 200 + time_tolerance: 0.05 #Half the sample time + state_getter: true + state_priority: 10 + apply_loss_function: false + initial_guess_from_state: true + #- + # type: "ProcessorLoopClosureIcp" + # name: "processorloopclosureicp" + # sensor_name: "scanner_front_left" + # plugin: "laser" + # recent_key_frames_ignored: 2 + # key_frames_to_wait: 2 + # max_error_threshold: 0.01 + # min_points_percent: 50 + # time_tolerance: 0.05 #Half the sample time + # keyframe_vote: + # voting_active: false + # follow: "csm.yaml" + # apply_loss_function: true + + ROS subscriber: + - + package: "wolf_ros_node" + type: "SubscriberOdom2d" + topic: "/ana/odom" + sensor_name: "odom2d" + - + package: "wolf_ros_laser" + type: "SubscriberLaser2d" + topic: "/ana/sensors/scan" + sensor_name: "scanner_front_left" + load_params_from_msg: true + + ROS publisher: + - + package: "wolf_ros_node" + type: "PublisherTf" + topic: " " + period: 0.1 + map_frame_id: "map" + odom_frame_id: "ana/odom" + base_frame_id: "ana/base_footprint" + publish_odom_tf: true + - + package: "wolf_ros_node" + type: "PublisherGraph" + topic: "graph" + period: 1 + viz_overlapped_factors: true + - + package: "wolf_ros_laser" + type: "PublisherLaserMap" + topic: "map" + period: 1 + map_frame_id: "map" + update_dist_th: 0.05 + update_angle_th: 0.05 + max_n_cells: 1000000 + grid_size: 0.1 + p_free: 0.3 + p_obst: 0.8 + p_free_th: 0.2 + p_obst_th: 0.9 + discard_max_range: true + diff --git a/yaml/test_imu_params.yaml b/yaml/test_imu_params.yaml new file mode 100644 index 0000000000000000000000000000000000000000..90a159bf44c203d3820b54c9a709b438daaea360 --- /dev/null +++ b/yaml/test_imu_params.yaml @@ -0,0 +1,20 @@ +#bno +extrinsic: + pose: [0,0,0] +a_noise: 0.96 #best: 0.96 +w_noise: 0.2 +ab_initial_stdev: 0.5 # m/s2 - initial bias +wb_initial_stdev: 0.1 # rad/sec - initial bias +ab_rate_stdev: 0.0000001 # m/s2/sqrt(s) +wb_rate_stdev: 0.0000001 # rad/s/sqrt(s) +orthogonal_gravity: true +#microstrain +#extrinsic: +# pose: [0,0,0] +#a_noise: 0.900 +#w_noise: 0.01 +#ab_initial_stdev: 0.5 # m/s2 - initial bias +#wb_initial_stdev: 0.1 # rad/sec - initial bias +#ab_rate_stdev: 0.00001 # m/s2/sqrt(s) +#wb_rate_stdev: 0.00001 # rad/s/sqrt(s) +#orthogonal_gravity: true diff --git a/yaml/test_imu_processor.yaml b/yaml/test_imu_processor.yaml new file mode 100644 index 0000000000000000000000000000000000000000..6e0ef2737d4ff6289e6d2d189d87508ee7b0ac60 --- /dev/null +++ b/yaml/test_imu_processor.yaml @@ -0,0 +1,13 @@ +time_tolerance: 0.008 #Half the sample time, bno +# time_tolerance: 0.005 #Half the sample time, microstrain +unmeasured_perturbation_std: 0.1 +keyframe_vote: + voting_active: false + max_time_span: 2 + max_buff_length: 1000000 + dist_traveled: 10 + angle_turned: 3.14 +state_getter: true +state_priority: 1 +apply_loss_function: false +use_gravity_grid: false diff --git a/yaml/test_imu_subscriber.yaml b/yaml/test_imu_subscriber.yaml new file mode 100644 index 0000000000000000000000000000000000000000..07f52959aac6dd33b54ed4b0652fd6c954ff8527 --- /dev/null +++ b/yaml/test_imu_subscriber.yaml @@ -0,0 +1,20 @@ +#bno: +dt: 0.016 +imu_x_axis: 3 +imu_y_axis: -2 +imu_z_axis: 1 +cov_source: "sensor" +in_degrees: true +##microstrain: +#dt: 0.01 +#imu_x_axis: 1 +#imu_y_axis: -2 +#imu_z_axis: -3 +#cov_source: "sensor" +#in_degrees: false + +#all +topic_enable: "/ana/sensors/bno055_imu/imu/topic_enable" +static_init_duration: 14 +lowpass_filter: true +lowpass_cutoff_freq: 5 diff --git a/yaml/test_laser_params.yaml b/yaml/test_laser_params.yaml new file mode 100644 index 0000000000000000000000000000000000000000..0fb41c67ad15463c536ae63b6744979b1ea5ef90 --- /dev/null +++ b/yaml/test_laser_params.yaml @@ -0,0 +1,11 @@ +extrinsic: + pose: [0,0,3.1415926535] #Last value was pi +LaserScanParams: + angle_min: -3.14159274101 + angle_max: 3.14159274101 + angle_step: 0.007 #0.00700000021607 + scan_time: 0.0 + range_min: 0.0 + range_max: 200 + range_std_dev: 0.2 + angle_std_dev: 0.01 diff --git a/yaml/test_laser_processor.yaml b/yaml/test_laser_processor.yaml new file mode 100644 index 0000000000000000000000000000000000000000..06847e9355446b14a201ee058fd0c5617f027897 --- /dev/null +++ b/yaml/test_laser_processor.yaml @@ -0,0 +1,15 @@ +keyframe_vote: + voting_active: true + min_features_for_keyframe: 10 + min_dist: 999 + min_angle: 999 + min_time: 1 + min_error: 999 + max_points: 0 +max_new_features: 15 +follow: "csm.yaml" +time_tolerance: 0.05 #Half the sample time +state_getter: false +state_priority: 10 +apply_loss_function: false +initial_guess: "state" diff --git a/yaml/test_laser_processor_inactive.yaml b/yaml/test_laser_processor_inactive.yaml new file mode 100644 index 0000000000000000000000000000000000000000..a584d2cde4e2f8852b231a822d6160c2a08add4b --- /dev/null +++ b/yaml/test_laser_processor_inactive.yaml @@ -0,0 +1,15 @@ +keyframe_vote: + voting_active: true + min_features_for_keyframe: 10 + min_dist: 999 + min_angle: 999 + min_time: 2 + min_error: 999 + max_points: 0 +max_new_features: 15 +follow: "csm_inactive.yaml" +time_tolerance: 0.05 #Half the sample time +state_getter: true +state_priority: 10 +apply_loss_function: false +initial_guess: "zero" diff --git a/yaml/test_odom2d_params.yaml b/yaml/test_odom2d_params.yaml new file mode 100644 index 0000000000000000000000000000000000000000..0e0922a64325ef75f6981deb6db802c65c91fbe0 --- /dev/null +++ b/yaml/test_odom2d_params.yaml @@ -0,0 +1,4 @@ +extrinsic: + pose: [0,0,0] +k_disp_to_disp: 0.08 +k_rot_to_rot: 0.6 diff --git a/yaml/test_odom2d_processor.yaml b/yaml/test_odom2d_processor.yaml new file mode 100644 index 0000000000000000000000000000000000000000..2fc31b13f3a668053b7a252abca74011684a30cf --- /dev/null +++ b/yaml/test_odom2d_processor.yaml @@ -0,0 +1,12 @@ +keyframe_vote: + voting_active: false + max_time_span: 1 + max_buff_length: 999 + dist_traveled: 999 + angle_turned: 3.14 + cov_det: 999 +unmeasured_perturbation_std: 0.01 +time_tolerance: 0.05 #Half the sample time +state_getter: true +state_priority: 2 +apply_loss_function: false diff --git a/yaml/test_publisher_ros_node.yaml b/yaml/test_publisher_ros_node.yaml new file mode 100644 index 0000000000000000000000000000000000000000..2f38284a05c0481b3f542d8860cca3534d8e4233 --- /dev/null +++ b/yaml/test_publisher_ros_node.yaml @@ -0,0 +1,4 @@ +map_frame_id: "map" +odom_frame_id: "ana/odom" +base_frame_id: "ana/base_footprint" +publish_odom_tf: true diff --git a/yaml/tests.txt b/yaml/tests.txt new file mode 100644 index 0000000000000000000000000000000000000000..17350ce9403c82c7c85d40489182f86273a94ef6 --- /dev/null +++ b/yaml/tests.txt @@ -0,0 +1,12 @@ +test1: + Tot: laser, odom2d, imu +test2: + Només odom2d +test3: + odom2d + imu +test4: + Només imu +test5 + laser + imu +test6: + laser + odom