diff --git a/bag/filter_bag.bash b/bag/filter_bag.bash index a8971ae1ca3e51830727f875b6fdec16d294ec41..f9458ab76357603251d54cac4b9f7bbc906002eb 100644 --- a/bag/filter_bag.bash +++ b/bag/filter_bag.bash @@ -1,8 +1,10 @@ #!/bin/bash -BAG="ana_lab_2" +if [[ -z "${BAG}" ]] +then + BAG="ana_lab_2" +fi rm $BAG\_filtered.bag rm $BAG\_filtered_notf.bag rosbag filter $BAG.bag $BAG\_filtered.bag "topic == '/ana/imu/data' or topic == '/ana/odom' or topic == '/ana/sensors/bno055_imu/imu' or topic == '/ana/sensors/scan' or topic == '/tf'" python3 filter_tf.py $BAG\_filtered.bag $BAG\_filtered_notf.bag -#python3 filter_tf2.py -i $BAG\_filtered.bag -o $BAG\_filtered_notf.bag -f ana/front_left_axle diff --git a/bag/generate_trajectory_csv.bash b/bag/generate_trajectory_csv.bash index 67bdbf5b774a88bfc2020b29564064fb5ce394bb..b90eef1192c71e480be9f39dc59df976e11e6a2a 100644 --- a/bag/generate_trajectory_csv.bash +++ b/bag/generate_trajectory_csv.bash @@ -1,17 +1,35 @@ #!/bin/bash -BAG="ana_lab_2" -t0=1620123952.21 -tend=1620123952.21 +echo "Press CTRL+C to proceed." +trap "pkill -f 'sleep 1h'" INT +trap "set +x ; sleep 1h ; set -x" DEBUG -#roslaunch wolf_demo_imu2d imu2d_demo.launch bag:=$BAG\_filtered_notf test:=0 speed:=1 suffix:="_GT" -#rosbag filter trajectory_recording_GT.bag trajectory_recording_GT_tmp.bag "t.to_sec >= $tend" -#rostopic echo -b trajectory_recording_GT_tmp.bag /wolf_ros_node/trajectory -p > trajectory_$BAG\_exp_$i.csv -rm trajectory_recording_GT_tmp.bag -#python3 transpose_csv.py trajectory_$BAG\_exp_$i.csv trajectory_$BAG\_exp_$i\_transp.csv -for i in 10 20 30 40 50 +if [[ -z "${BAG}" ]] +then + BAG="ana_lab_2" +fi + +#yamlfiles are divided into two types: +# Starting with G ==> groundtruth, we extract the trajectory +# Starting with E ==> experiment, we extract the poses +for yamlfile in $(find ../yaml/trajectory_analysys -maxdepth 1 -type f -printf "%f\n") do - filtertime=$t0+$i+30.0-1.0 - roslaunch wolf_demo_imu2d imu2d_demo.launch bag:=$BAG\_shortened_$i test:=5 speed:=1 suffix:="_$i" - rostopic echo -b trajectory_recording_$i.bag /wolf_ros_node/pose_pose_with_cov -p > trajectory_$BAG\_exp_$i.csv - python3 transpose_csv.py trajectory_$BAG\_exp_$i.csv trajectory_$BAG\_exp_$i\_transp.csv + yamlname=${yamlfile%.*} + roslaunch wolf_demo_imu2d imu2d_analysys.launch bag:=$BAG\_filtered_notf test:=$yamlfile speed:=1 suffix:=$yamlname + if [[ ${yamlname:0:1} == 'G' ]] + then + tend=$(rosbag info -y -k end recordings/trajectory_recording$yamlname.bag) + tend=${tend%.*} + rosbag filter recordings/trajectory_recording$yamlname.bag recordings/trajectory_recording$yamlname\_tmp.bag "topic == '/wolf_ros_node/trajectory' and t.to_sec() >= $tend" + + rm CSV/$yamlname.csv + rostopic echo -b recordings/trajectory_recording$yamlname\_tmp.bag /wolf_ros_node/trajectory -p > CSV/$yamlname.csv + rm recordings/trajectory_recording$yamlname\_tmp.bag + elif [[ ${yamlname:0:1} == 'E' ]] + then + rm CSV/$yamlname.csv + rostopic echo -b recordings/trajectory_recording$yamlname.bag /wolf_ros_node/pose_pose_with_cov -p > CSV/$yamlname.csv + fi + rm CSV/transp/$yamlname\_transp.csv + python3 transpose_csv.py CSV/$yamlname.csv CSV/transp/$yamlname\_transp.csv + done diff --git a/bag/shorten_topic.bash b/bag/shorten_topic.bash index 7657ccbee8d1abd243035241aeef2ae303f28854..3eb83234043a5a977b27078db260d91db995a3dd 100644 --- a/bag/shorten_topic.bash +++ b/bag/shorten_topic.bash @@ -1,12 +1,15 @@ #!/bin/bash -BAG="ana_lab_2" -tstartstr=$(rosbag info $BAG.bag | grep start) -t0=$(echo $tstr | cut -d "(" -f2 | cut -d ")" -f1 | bc -l) +if [[ -z "${BAG}" ]] +then + BAG="ana_lab_2" +fi +t0=$(rosbag info -y -k start $BAG\_filtered_notf.bag) for i in 10 20 30 40 50 do - cuttime=$(($t0+$i)) + cuttime=$( bc <<< "$t0+$i" ) echo $cuttime - endtime=$(($cuttime+30.0)) - rosbag filter $BAG\_filtered_notf.bag $BAG\_shortened\_$i.bag "(topic != '/ana/sensors/scan' and t.to_sec() <=$endtime) or (topic == '/ana/sensors/scan' and t.to_sec() <= $cuttime)" + endtime=$(bc <<< "$cuttime+30") + rm $BAG\_shortened\_$i.bag + rosbag filter $BAG\_filtered_notf.bag $BAG\_shortened\_$i.bag "(topic != '/ana/sensors/scan' and t.to_sec() <= $endtime ) or (topic == '/ana/sensors/scan' and t.to_sec() <= $cuttime)" done diff --git a/launch/imu2d_analysys.launch b/launch/imu2d_analysys.launch new file mode 100644 index 0000000000000000000000000000000000000000..a3a4c66ce33dce7b3d71fe0a57226e46136779fa --- /dev/null +++ b/launch/imu2d_analysys.launch @@ -0,0 +1,57 @@ +<!-- --> +<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="" /> + <arg name="bag" default="" /> + <arg name="suffix" default="" /> + <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="rosbag" type="record" name="recorder" args='record -O $(find wolf_demo_imu2d)/bag/recordings/trajectory_recording$(arg suffix).bag "/wolf_ros_node/trajectory" "/wolf_ros_node/pose_pose_with_cov"'/> + + <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" + required="true" + args="-s $(arg sec) -r $(arg speed) --clock $(find wolf_demo_imu2d)/bag/$(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/trajectory_analysys/$(arg test)" /> + </node> +</launch> diff --git a/launch/imu2d_demo.launch b/launch/imu2d_demo.launch index bf1cbdd9eba45feccbb43295da9df03cf92681f3..ea29fa3954cbd96710f7ada8d324579bf73c4bc0 100644 --- a/launch/imu2d_demo.launch +++ b/launch/imu2d_demo.launch @@ -18,7 +18,7 @@ <node pkg="rostopic" type="rostopic" name="" args='pub /helena/sensors/bno055_imu/imu/topic_enable std_msgs/Bool "data: True"'/> <group if="$(arg record)"> - <node pkg="rosbag" type="record" name="recorder" args='record -O $(find wolf_demo_imu2d)/bag/trajectory_recording$(arg suffix).bag "/wolf_ros_node/trajectory" "/wolf_ros_node/pose_pose_with_cov"'/> + <node pkg="rosbag" type="record" name="recorder" args='record -O $(find wolf_demo_imu2d)/bag/recordings/trajectory_recording$(arg suffix).bag "/wolf_ros_node/trajectory" "/wolf_ros_node/pose_pose_with_cov"'/> </group> <node pkg="tf" diff --git a/yaml/test_imu_params_microstrain.yaml b/yaml/test_imu_params_microstrain.yaml index 8ff559405ab5152c537da910a4d9abfac552dc6f..433952de0d12418dbd472d435e5dd416e5a143eb 100644 --- a/yaml/test_imu_params_microstrain.yaml +++ b/yaml/test_imu_params_microstrain.yaml @@ -1,10 +1,10 @@ #microstrain extrinsic: pose: [0,0,0] -a_noise: 0.9 #0.9 +a_noise: 0.05 #0.9 w_noise: 0.01 #0.01 ab_initial_stdev: 0.5 # m/s2 - initial bias wb_initial_stdev: 0.1 # rad/sec - initial bias -ab_rate_stdev: 0.001 # m/s2/sqrt(s) -wb_rate_stdev: 0.001 # rad/s/sqrt(s) +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_laser_processor.yaml b/yaml/test_laser_processor.yaml index c10e2a5142e4684d8de228893a3093a8ff2e5dcd..fa2d98e94d6d031d86ad80300781d72d09e68036 100644 --- a/yaml/test_laser_processor.yaml +++ b/yaml/test_laser_processor.yaml @@ -3,7 +3,7 @@ keyframe_vote: min_features_for_keyframe: 10 min_dist: 999 min_angle: 999 - min_time: 1 + min_time: 0.1 min_error: 999 max_points: 0 max_new_features: 15 diff --git a/yaml/test_odom2d_params.yaml b/yaml/test_odom2d_params.yaml index 0e0922a64325ef75f6981deb6db802c65c91fbe0..f1f24a5154e114ddaa5808780866fa28f4f179de 100644 --- a/yaml/test_odom2d_params.yaml +++ b/yaml/test_odom2d_params.yaml @@ -1,4 +1,4 @@ extrinsic: pose: [0,0,0] k_disp_to_disp: 0.08 -k_rot_to_rot: 0.6 +k_rot_to_rot: 0.6 #0.6 diff --git a/yaml/trajectory_analysys/E-1_0.yaml b/yaml/trajectory_analysys/E-1_0.yaml new file mode 100644 index 0000000000000000000000000000000000000000..933b2502b6964339b3bfee73d5a9c4f8484b940c --- /dev/null +++ b/yaml/trajectory_analysys/E-1_0.yaml @@ -0,0 +1,157 @@ +config: + debug: + profiling: true + profiling_file: "~/wolf_demo_profiling_imu2d_test5.txt" + print_problem: false + print_period: 2 + print_depth: 4 + print_constr_by: false + print_metric: true + print_state_blocks: true + 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 + node_rate: 100 + map: + type: "MapBase" + plugin: "core" + + solver: + follow: "parameters/solver.yaml" + + + sensors: + - + type: "SensorLaser2d" + name: "scanner_front_left" + plugin: "laser" + follow: "parameters/test_laser_params.yaml" + - + type: "SensorImu2d" + name: "bno" + plugin: "imu" + follow: "parameters/test_imu_params_bno.yaml" + - + type: "SensorImu2d" + name: "microstrain" + plugin: "imu" + follow: "parameters/test_imu_params_microstrain.yaml" + + processors: + - + type: "ProcessorOdomIcp" + name: "processorodomicp" + sensor_name: "scanner_front_left" + plugin: "laser" + 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 + follow: "parameters/test_laser_processor.yaml" + #- + # type: "ProcessorLoopClosureIcp" + # name: "processorloopclosureicp" + # sensor_name: "scanner_front_left" + # plugin: "laser" + # time_tolerance: 0.1 + # apply_loss_function: true + # keyframe_vote: + # voting_active: false + # recent_frames_ignored: 10 + # frames_ignored_after_loop: 0 + # max_error_threshold: 0.02 + # min_points_percent: 40 + # max_loops: 1 + # max_candidates: 5 + # max_attempts: 5 + # candidate_generation: "random" # 'random' or 'tree' + # icp: + # follow: "parameters/csm.yaml" + - + type: "ProcessorImu2d" + name: "processorimu2dbno" + sensor_name: "bno" + plugin: "imu" + follow: "parameters/test_imu_processor_bno.yaml" + - + type: "ProcessorImu2d" + name: "processorimu2dmicro" + sensor_name: "microstrain" + plugin: "imu" + follow: "parameters/test_imu_processor_microstrain.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/imumal" + sensor_name: "bno" + follow: "parameters/test_imu_subscriber_bno.yaml" + - + package: "wolf_ros_imu" + type: "SubscriberImuEnableable" + topic: "/ana/imu/data" + sensor_name: "microstrain" + follow: "parameters/test_imu_subscriber_microstrain.yaml" + + ROS publisher: + - + package: "wolf_ros_node" + type: "PublisherTf" + topic: " " + period: 0.1 + follow: "parameters/test_publisher_ros_node.yaml" + - + package: "wolf_ros_node" + type: "PublisherGraph" + topic: "graph" + period: 1 + viz_overlapped_factors: true + - + package: "wolf_ros_node" + type: "PublisherTrajectory" + topic: "trajectory" + period: 1 + frame_id: "map" + - + package: "wolf_ros_node" + type: "PublisherPose" + topic: "pose" + extrinsics: false + period: 1 + frame_id: "map" + - + 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/trajectory_analysys/G-1_0.yaml b/yaml/trajectory_analysys/G-1_0.yaml new file mode 100644 index 0000000000000000000000000000000000000000..a0ddcb4c8c5a5c8769cb3de2cbd53d25658183f9 --- /dev/null +++ b/yaml/trajectory_analysys/G-1_0.yaml @@ -0,0 +1,114 @@ +config: + debug: + profiling: true + profiling_file: "~/wolf_demo_profiling_imu2d_test0.txt" + print_problem: false + print_period: 2 + print_depth: 4 + print_constr_by: false + print_metric: true + print_state_blocks: true + 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 + node_rate: 100 + map: + type: "MapBase" + plugin: "core" + + solver: + follow: "parameters/solver.yaml" + + sensors: + - + type: "SensorLaser2d" + name: "scanner_front_left" + plugin: "laser" + follow: "parameters/test_laser_params.yaml" + + processors: + - + type: "ProcessorOdomIcp" + name: "processorodomicp" + sensor_name: "scanner_front_left" + plugin: "laser" + voting_active: true + min_features_for_keyframe: 10 + min_dist: 999 + min_angle: 999 + min_time: 1 + min_error: 999 + max_points: 0 + follow: "parameters/test_laser_processor.yaml" + #- + # type: "ProcessorLoopClosureIcp" + # name: "processorloopclosureicp" + # sensor_name: "scanner_front_left" + # plugin: "laser" + # time_tolerance: 0.1 + # apply_loss_function: true + # keyframe_vote: + # voting_active: false + # recent_frames_ignored: 3 + # frames_ignored_after_loop: 0 + # max_error_threshold: 0.02 + # min_points_percent: 40 + # max_loops: 3 + # max_candidates: 5 + # max_attempts: 15 + # candidate_generation: "random" # 'random' or 'tree' + # icp: + # follow: "parameters/csm.yaml" + + + ROS subscriber: + - + 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: "parameters/test_publisher_ros_node.yaml" + - + package: "wolf_ros_node" + type: "PublisherGraph" + topic: "graph" + period: 1 + viz_overlapped_factors: true + - + package: "wolf_ros_node" + type: "PublisherTrajectory" + topic: "trajectory" + period: 1 + frame_id: "map" + - + 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/trajectory_analysys/parameters/csm.yaml b/yaml/trajectory_analysys/parameters/csm.yaml new file mode 100644 index 0000000000000000000000000000000000000000..2dd8f8680123cbf977c7bd7defcb0c65dd1d33f5 --- /dev/null +++ b/yaml/trajectory_analysys/parameters/csm.yaml @@ -0,0 +1,45 @@ +verbose: false # prints debug messages + +# ALGORITHM OPTIONS +use_point_to_line_distance: true # use PlICP (true) or use vanilla ICP (false). +max_angular_correction_deg: 180 # Maximum angular displacement between scans (deg) +max_linear_correction: 10 # Maximum translation between scans (m) + +max_correspondence_dist: 0.5 # Maximum distance for a correspondence to be valid +use_corr_tricks: true # Use smart tricks for finding correspondences. Only influences speed; not convergence. +debug_verify_tricks: false # Checks that find_correspondences_tricks give the right answer + +# STOP CRITERIA +max_iterations: 50 # maximum iterations +epsilon_xy: 1e-4 # distance change +epsilon_theta: 1e-3 # angle change + +# RESTART +restart: false # Restart algorithm +restart_threshold_mean_error: 0 # Threshold for restarting +restart_dt: 0 # Displacement for restarting +restart_dtheta: 0 # Displacement for restarting + +# DISCARDING POINTS/CORRESPONDENCES +min_reading: 0.023 # discard rays outside of this interval +max_reading: 60 # discard rays outside of this interval +outliers_maxPerc: 0.9 # Percentage of correspondences to consider: if 0.9, always discard the top 10% of correspondences with more error +outliers_adaptive_order: 0.7 # Parameters describing a simple adaptive algorithm for discarding +outliers_adaptive_mult: 1.5 # Parameters describing a simple adaptive algorithm for discarding +outliers_remove_doubles: false # Do not allow two different correspondences to share a point +do_visibility_test: false # If initial guess, visibility test can discard points that are not visible +do_alpha_test: false # Discard correspondences based on the angles +do_alpha_test_thresholdDeg: 10 # + +# POINT ORIENTATION +clustering_threshold: 0.5 # Max-distance clustering for point orientation +orientation_neighbourhood: 4 # Number of neighbour rays used to estimate the orientation + +# WEIGHTS +use_ml_weights: false # weight the impact of each correspondence. This works fabolously if the first scan has no noise. +use_sigma_weights: false # If the field "readings_sigma" is used to weight the correspondence by 1/sigma^2 +sigma: 0.2 # Noise of the scan + +# COVARIANCE +do_compute_covariance: true +cov_factor: 5 # Factor multiplying the cov output of csm diff --git a/yaml/trajectory_analysys/parameters/csm_inactive.yaml b/yaml/trajectory_analysys/parameters/csm_inactive.yaml new file mode 100644 index 0000000000000000000000000000000000000000..4ea66701ad3a5dfc836c70f988b99d7db48bba60 --- /dev/null +++ b/yaml/trajectory_analysys/parameters/csm_inactive.yaml @@ -0,0 +1,45 @@ +verbose: false # prints debug messages + +# ALGORITHM OPTIONS +use_point_to_line_distance: true # use PlICP (true) or use vanilla ICP (false). +max_angular_correction_deg: 180 # Maximum angular displacement between scans (deg) +max_linear_correction: 10 # Maximum translation between scans (m) + +max_correspondence_dist: 0.5 # Maximum distance for a correspondence to be valid +use_corr_tricks: true # Use smart tricks for finding correspondences. Only influences speed; not convergence. +debug_verify_tricks: false # Checks that find_correspondences_tricks give the right answer + +# STOP CRITERIA +max_iterations: 50 # maximum iterations +epsilon_xy: 1e-4 # distance change +epsilon_theta: 1e-3 # angle change + +# RESTART +restart: false # Restart algorithm +restart_threshold_mean_error: 0 # Threshold for restarting +restart_dt: 0 # Displacement for restarting +restart_dtheta: 0 # Displacement for restarting + +# DISCARDING POINTS/CORRESPONDENCES +min_reading: 0.023 # discard rays outside of this interval +max_reading: 60 # discard rays outside of this interval +outliers_maxPerc: 0.9 # Percentage of correspondences to consider: if 0.9, always discard the top 10% of correspondences with more error +outliers_adaptive_order: 0.7 # Parameters describing a simple adaptive algorithm for discarding +outliers_adaptive_mult: 1.5 # Parameters describing a simple adaptive algorithm for discarding +outliers_remove_doubles: false # Do not allow two different correspondences to share a point +do_visibility_test: false # If initial guess, visibility test can discard points that are not visible +do_alpha_test: false # Discard correspondences based on the angles +do_alpha_test_thresholdDeg: 10 # + +# POINT ORIENTATION +clustering_threshold: 0.5 # Max-distance clustering for point orientation +orientation_neighbourhood: 4 # Number of neighbour rays used to estimate the orientation + +# WEIGHTS +use_ml_weights: false # weight the impact of each correspondence. This works fabolously if the first scan has no noise. +use_sigma_weights: false # If the field "readings_sigma" is used to weight the correspondence by 1/sigma^2 +sigma: 0.2 # Noise of the scan + +# COVARIANCE +do_compute_covariance: true +cov_factor: 9999999999999999999999 diff --git a/yaml/trajectory_analysys/parameters/solver.yaml b/yaml/trajectory_analysys/parameters/solver.yaml new file mode 100644 index 0000000000000000000000000000000000000000..cb52fa3d63983c71bcc06e5bc4c4f6b1daa6d28a --- /dev/null +++ b/yaml/trajectory_analysys/parameters/solver.yaml @@ -0,0 +1,13 @@ +minimizer: LEVENBERG_MARQUARDT +max_num_iterations: 100 +verbose: 0 +period: 0.0 +n_threads: 2 +interrupt_on_problem_change: false +min_num_iterations: 5 #if update immediately +compute_cov: false +cov_enum: 3 # if compute_cov +cov_period: 1 # if compute_cov +function_tolerance: 1e-9 +gradient_tolerance: 1e-10 +use_nonmonotonic_steps: false diff --git a/yaml/trajectory_analysys/parameters/test_imu_params_bno.yaml b/yaml/trajectory_analysys/parameters/test_imu_params_bno.yaml new file mode 100644 index 0000000000000000000000000000000000000000..a958a695eaa28b8cc4973f233b09f19e7b3bef33 --- /dev/null +++ b/yaml/trajectory_analysys/parameters/test_imu_params_bno.yaml @@ -0,0 +1,10 @@ +#bno +extrinsic: + pose: [0,0,0] +a_noise: 0.096 #best: 0.96 +w_noise: 0.02 +ab_initial_stdev: 5 # m/s2 - initial bias +wb_initial_stdev: 1 # rad/sec - initial bias +ab_rate_stdev: 0.0001 # m/s2/sqrt(s) +wb_rate_stdev: 0.0001 # rad/s/sqrt(s) +orthogonal_gravity: true diff --git a/yaml/trajectory_analysys/parameters/test_imu_params_microstrain.yaml b/yaml/trajectory_analysys/parameters/test_imu_params_microstrain.yaml new file mode 100644 index 0000000000000000000000000000000000000000..433952de0d12418dbd472d435e5dd416e5a143eb --- /dev/null +++ b/yaml/trajectory_analysys/parameters/test_imu_params_microstrain.yaml @@ -0,0 +1,10 @@ +#microstrain +extrinsic: + pose: [0,0,0] +a_noise: 0.05 #0.9 +w_noise: 0.01 #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/trajectory_analysys/parameters/test_imu_processor_bno.yaml b/yaml/trajectory_analysys/parameters/test_imu_processor_bno.yaml new file mode 100644 index 0000000000000000000000000000000000000000..79f6f5001b813bf2d55f53b424359930cb160594 --- /dev/null +++ b/yaml/trajectory_analysys/parameters/test_imu_processor_bno.yaml @@ -0,0 +1,12 @@ +time_tolerance: 0.008 #Half the sample time, bno +unmeasured_perturbation_std: 0.1 +keyframe_vote: + voting_active: false + max_time_span: 1 + 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/trajectory_analysys/parameters/test_imu_processor_microstrain.yaml b/yaml/trajectory_analysys/parameters/test_imu_processor_microstrain.yaml new file mode 100644 index 0000000000000000000000000000000000000000..7ab3a8eef1ea08955e2b999fda99120f14da1507 --- /dev/null +++ b/yaml/trajectory_analysys/parameters/test_imu_processor_microstrain.yaml @@ -0,0 +1,12 @@ +time_tolerance: 0.005 #Half the sample time, microstrain +unmeasured_perturbation_std: 0.1 +keyframe_vote: + voting_active: false + max_time_span: 1 + max_buff_length: 1000000 + dist_traveled: 10 + angle_turned: 3.14 +state_getter: true +state_priority: 0 +apply_loss_function: false +use_gravity_grid: false diff --git a/yaml/trajectory_analysys/parameters/test_imu_subscriber_bno.yaml b/yaml/trajectory_analysys/parameters/test_imu_subscriber_bno.yaml new file mode 100644 index 0000000000000000000000000000000000000000..34e3cf7f9c4c37df9bb107fb8d9b7d4763ba0c47 --- /dev/null +++ b/yaml/trajectory_analysys/parameters/test_imu_subscriber_bno.yaml @@ -0,0 +1,13 @@ +#bno: +dt: 0.016 +imu_x_axis: 3 +imu_y_axis: -2 +imu_z_axis: 1 +cov_source: "sensor" +in_degrees: true + +#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/trajectory_analysys/parameters/test_imu_subscriber_microstrain.yaml b/yaml/trajectory_analysys/parameters/test_imu_subscriber_microstrain.yaml new file mode 100644 index 0000000000000000000000000000000000000000..1bf1e8c462c3917a25c3351d3749473cc930d7d2 --- /dev/null +++ b/yaml/trajectory_analysys/parameters/test_imu_subscriber_microstrain.yaml @@ -0,0 +1,13 @@ +#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: 3 +lowpass_filter: false +lowpass_cutoff_freq: 5 diff --git a/yaml/trajectory_analysys/parameters/test_laser_params.yaml b/yaml/trajectory_analysys/parameters/test_laser_params.yaml new file mode 100644 index 0000000000000000000000000000000000000000..0fb41c67ad15463c536ae63b6744979b1ea5ef90 --- /dev/null +++ b/yaml/trajectory_analysys/parameters/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/trajectory_analysys/parameters/test_laser_processor.yaml b/yaml/trajectory_analysys/parameters/test_laser_processor.yaml new file mode 100644 index 0000000000000000000000000000000000000000..66083e377849ce867db1906ef0b00265e5e0cabb --- /dev/null +++ b/yaml/trajectory_analysys/parameters/test_laser_processor.yaml @@ -0,0 +1,8 @@ +max_new_features: 15 +icp: + follow: "parameters/csm.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/trajectory_analysys/parameters/test_laser_processor_inactive.yaml b/yaml/trajectory_analysys/parameters/test_laser_processor_inactive.yaml new file mode 100644 index 0000000000000000000000000000000000000000..54a33e4da380ef91a3f8544ce120932de3aa8709 --- /dev/null +++ b/yaml/trajectory_analysys/parameters/test_laser_processor_inactive.yaml @@ -0,0 +1,16 @@ +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 +icp: + follow: "parameters/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/trajectory_analysys/parameters/test_publisher_ros_node.yaml b/yaml/trajectory_analysys/parameters/test_publisher_ros_node.yaml new file mode 100644 index 0000000000000000000000000000000000000000..a3e37459266db719cbea053e906bc686d902fec3 --- /dev/null +++ b/yaml/trajectory_analysys/parameters/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: false