diff --git a/bag/.gitignore b/bag/.gitignore index 497d01c10f67b0f921784a1d45f7307ef2172cbb..484bf525588edcaaee0779698230b37be6049990 100644 --- a/bag/.gitignore +++ b/bag/.gitignore @@ -1,5 +1,6 @@ *.bag CSV*/ +csv/ recordings/ !analysys/ !.gittignore diff --git a/bag/generate_csvs.bash b/bag/generate_csvs.bash new file mode 100755 index 0000000000000000000000000000000000000000..e29dcf01ba6c483479d42267983ca76661b0e611 --- /dev/null +++ b/bag/generate_csvs.bash @@ -0,0 +1,55 @@ +#!/bin/bash + +SPEED=0.5 +EXPERIMENTS=('inside' \ + 'outside1' \ + 'outside2' \ + 'outside3' \ + 'outside4' \ + 'outside5' \ + 'outside6') +BAGS=('ana_lab_2' \ + 'data_2021-07-27-11-31-13' \ + 'data_2021-07-27-11-34-18' \ + 'data_2021-07-27-11-36-31' \ + 'data_2021-07-27-11-39-04' \ + 'data_2021-07-29-13-17-57' \ + 'data_2021-07-29-13-20-21') +INDEXS=(1) +ROBOTS=('ana'\ + 'helena' \ + 'helena' \ + 'helena' \ + 'helena' \ + 'helena' \ + 'helena') + +#There are three methods: +# Starting with E ==> experiment in 2D: odom_icp + imu2d +# Starting with T ==> experiment in 3D: odom_icp(3D) + imu3d +# Starting with S ==> experiment in 2D: odom_icp + imu2d sloped +METHODS=("E" "T" "S") + +#make dirs +mkdir -pv csv +mkdir -pv recordings + +# all experiments will be executed +for i in "${INDEXS[@]}"; do + echo "Experiment ${i}: ${EXPERIMENTS[i]}..." + for method in "${METHODS[@]}"; do + echo "Method $method..." + + #The roslaunch file takes several useful parameters. We can lower speed if we see that the processor isn't working at real time. We disable rviz as we don't need to see anything. + roslaunch wolf_demo_imu2d imu2d_analysys.launch bag:=${BAGS[i]} test:=$method speed:=$SPEED robot:=${ROBOTS[i]} record_name:=${EXPERIMENTS[i]} rviz:=false + + #Generate CSVs + rostopic echo -b recordings/${EXPERIMENTS[i]}_${method}.bag /wolf_ros_node/odom_icp -p > csv/${EXPERIMENTS[i]}_odom_icp_${method}.csv + rostopic echo -b recordings/${EXPERIMENTS[i]}_${method}.bag /imu_micro_pose_from_origin -p > csv/${EXPERIMENTS[i]}_odom_imu_${method}.csv + rostopic echo -b recordings/${EXPERIMENTS[i]}_${method}.bag /imu_micro_bias_accel -p > csv/${EXPERIMENTS[i]}_bias_accel_${method}.csv + rostopic echo -b recordings/${EXPERIMENTS[i]}_${method}.bag /imu_micro_bias_gyro -p > csv/${EXPERIMENTS[i]}_bias_gyro_${method}.csv + + #Move profiling file + mv ~/profiling/wolf_demo_profiling_${method}.txt recordings/profiling_${EXPERIMENTS[i]}_${method}.txt + done +done \ No newline at end of file diff --git a/launch/imu2d_analysys.launch b/launch/imu2d_analysys.launch index f1f9b703a9356887c1de69688718301858ce13f8..560091e1b6825b2b61eb7adf3916e470f3d1c920 100644 --- a/launch/imu2d_analysys.launch +++ b/launch/imu2d_analysys.launch @@ -6,9 +6,10 @@ <arg name="sec" default="0" /> <arg name="profiling" default="false" /> <arg name="gdb" default="false" /> - <arg name="test" default="1" /> + <arg name="test" default="E" /> <arg name="bag" default="test_no_map" /> - <arg name="suffix" default="" /> + <arg name="record_suffix" default="" /> + <arg name="record_name" default="experiment" /> <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)" /> @@ -22,7 +23,7 @@ <node pkg="rosbag" type="record" name="recorder" - args='record -O $(find wolf_demo_imu2d)/bag/recordings/trajectory_recording$(arg suffix).bag + args='record -O $(find wolf_demo_imu2d)/bag/recordings/$(arg record_name)_$(arg test)$(arg record_suffix).bag "/wolf_ros_node/odom_icp" "/imu_micro_bias_accel" "/imu_micro_bias_gyro" @@ -87,6 +88,6 @@ required="true" output="screen" launch-prefix="$(arg launch_pref)"> - <param name="~yaml_file_path" value="$(find wolf_demo_imu2d)/yaml/trajectory_analysys/$(arg test)" /> + <param name="~yaml_file_path" value="$(find wolf_demo_imu2d)/yaml/trajectory_analysys/$(arg test).yaml" /> </node> </launch> diff --git a/rviz/imu2d_demo_ana.rviz b/rviz/imu2d_demo_ana.rviz index e61b151fbbb3d5674fb709fd833897c8c591355a..9527475e9e795a14bfc538fa4a1491b27de7c0d7 100644 --- a/rviz/imu2d_demo_ana.rviz +++ b/rviz/imu2d_demo_ana.rviz @@ -11,7 +11,7 @@ Panels: - /Factors1/Namespaces1 - /Trajectory1/Namespaces1 Splitter Ratio: 0.708737850189209 - Tree Height: 839 + Tree Height: 689 - Class: rviz/Selection Name: Selection - Class: rviz/Tool Properties @@ -147,9 +147,9 @@ Visualization Manager: Marker Topic: /wolf_ros_node/graph_factors Name: Factors Namespaces: - factors_processorimumicro: true + factors_processorimu2dmicro: true factors_processorodomicp: true - factors_text_processorimumicro: false + factors_text_processorimu2dmicro: true factors_text_processorodomicp: false factors_text_unnamed_processor: false factors_unnamed_processor: true @@ -264,9 +264,9 @@ Visualization Manager: Invert Z Axis: false Name: Current View Near Clip Distance: 0.009999999776482582 - Pitch: 0.2547972500324249 + Pitch: 1.354796290397644 Target Frame: map - Yaw: 4.588164329528809 + Yaw: 4.453161239624023 Saved: - Angle: 0 Class: rviz/TopDownOrtho @@ -313,10 +313,10 @@ Visualization Manager: Window Geometry: Displays: collapsed: false - Height: 1136 + Height: 986 Hide Left Dock: false Hide Right Dock: true - QMainWindow State: 000000ff00000000fd000000040000000000000205000003d2fc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d000003d2000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f00000396fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000002800000396000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000007420000003efc0100000002fb0000000800540069006d0065010000000000000742000002eb00fffffffb0000000800540069006d0065010000000000000450000000000000000000000537000003d200000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 + QMainWindow State: 000000ff00000000fd0000000400000000000002050000033cfc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d0000033c000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f00000396fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000002800000396000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000006560000003efc0100000002fb0000000800540069006d0065010000000000000656000002eb00fffffffb0000000800540069006d006501000000000000045000000000000000000000044b0000033c00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 Selection: collapsed: false Time: @@ -325,6 +325,6 @@ Window Geometry: collapsed: false Views: collapsed: true - Width: 1858 - X: 62 + Width: 1622 + X: 58 Y: 27 diff --git a/yaml/trajectory_analysys/E.yaml b/yaml/trajectory_analysys/E.yaml index 362381fed2587afd29c3902083917662a70b14fd..3e5d4ace58863d9c3a5d8e594f9eb0cd6c331de0 100644 --- a/yaml/trajectory_analysys/E.yaml +++ b/yaml/trajectory_analysys/E.yaml @@ -1,7 +1,7 @@ config: debug: profiling: true - profiling_file: "~/profiling/wolf_demo_profiling_E-5_0.txt" + profiling_file: "~/profiling/wolf_demo_profiling_E.txt" print_problem: false print_period: 2 print_depth: 4 @@ -14,11 +14,15 @@ config: frame_structure: "POV" dimension: 2 prior: - mode: "fix" + mode: "factor" $state: P: [0,0] O: [0] V: [0,0] + $sigma: + P: [0.01, 0.01] + O: [1] + V: [0.01, 0.01] time_tolerance: 0.1 node_rate: 100 @@ -120,13 +124,13 @@ config: # topic: "trajectory" # period: 1 # frame_id: "map" - - - package: "wolf_ros_node" - type: "PublisherPose" - topic: "pose" - extrinsics: false - period: 0.1 - frame_id: "map" + # - + # package: "wolf_ros_node" + # type: "PublisherPose" + # topic: "pose" + # extrinsics: false + # period: 0.1 + # frame_id: "map" # - # package: "wolf_ros_laser" # type: "PublisherLaserMap" diff --git a/yaml/trajectory_analysys/G.yaml b/yaml/trajectory_analysys/G.yaml index dcc3d60fd015a15dd66d004f1ce9c33e28640959..d973ecca3b758ff91417ef5f3d1ee090838d9cc0 100644 --- a/yaml/trajectory_analysys/G.yaml +++ b/yaml/trajectory_analysys/G.yaml @@ -1,7 +1,7 @@ config: debug: profiling: true - profiling_file: "~/profiling/wolf_demo_profiling_G-5_0.txt" + profiling_file: "~/profiling/wolf_demo_profiling_G.txt" print_problem: false print_period: 2 print_depth: 4 diff --git a/yaml/trajectory_analysys/S.yaml b/yaml/trajectory_analysys/S.yaml index e4d07ccf613c5af198f45d13e5be96079ee15dd5..a86afe09c94af4689fcb9a0a1099557b7ed43ab5 100644 --- a/yaml/trajectory_analysys/S.yaml +++ b/yaml/trajectory_analysys/S.yaml @@ -1,7 +1,7 @@ config: debug: profiling: true - profiling_file: "~/profiling/wolf_demo_profiling_S-5_0.txt" + profiling_file: "~/profiling/wolf_demo_profiling_S.txt" print_problem: false print_period: 2 print_depth: 4 @@ -14,20 +14,20 @@ config: frame_structure: "POV" dimension: 2 prior: - mode: "fix" + mode: "factor" $state: P: [0,0] O: [0] V: [0,0] + $sigma: + P: [0.01, 0.01] + O: [1] + V: [0.01, 0.01] time_tolerance: 0.1 node_rate: 100 - map: - type: "MapBase" - plugin: "core" solver: follow: "parameters/solver.yaml" - sensors: - @@ -35,16 +35,18 @@ config: 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: "bno" + # plugin: "imu" + # orthogonal_gravity: true + # follow: "parameters/test_imu_params_bno.yaml" - type: "SensorImu2d" name: "microstrain" plugin: "imu" - follow: "parameters/test_imu_params_microstrain_sloped.yaml" + orthogonal_gravity: false + follow: "parameters/test_imu_params_microstrain.yaml" processors: - @@ -53,31 +55,12 @@ config: sensor_name: "scanner_front_left" plugin: "laser" 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: "processorimu2dbno" + # sensor_name: "bno" + # plugin: "imu" + # follow: "parameters/test_imu_processor_bno.yaml" - type: "ProcessorImu2d" name: "processorimu2dmicro" @@ -118,19 +101,19 @@ config: 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: 0.01 - frame_id: "map" + # - + # package: "wolf_ros_node" + # type: "PublisherTrajectory" + # topic: "trajectory" + # period: 1 + # frame_id: "map" + # - + # package: "wolf_ros_node" + # type: "PublisherPose" + # topic: "pose" + # extrinsics: false + # period: 0.1 + # frame_id: "map" - package: "wolf_ros_laser" type: "PublisherLaserMap" @@ -146,4 +129,10 @@ config: p_free_th: 0.2 p_obst_th: 0.9 discard_max_range: true + - + package: "wolf_ros_laser" + type: "PublisherOdomIcp" + topic: "odom_icp" + period: 0.1 + processor_name: "processorodomicp" diff --git a/yaml/trajectory_analysys/T.yaml b/yaml/trajectory_analysys/T.yaml index 9632b31b704f5cfc5e78fa4c0a7d4dfa7ebc33f9..98e5f805325b58fbd4e86d7218a0f1458c8f2bc5 100644 --- a/yaml/trajectory_analysys/T.yaml +++ b/yaml/trajectory_analysys/T.yaml @@ -1,7 +1,7 @@ config: debug: profiling: true - profiling_file: "~/profiling/wolf_demo_profiling_T-5_0.txt" + profiling_file: "~/profiling/wolf_demo_profiling_T.txt" print_problem: false print_period: 2 print_depth: 4 @@ -47,7 +47,7 @@ config: name: "microstrain" plugin: "imu" extrinsic: - pose: [0,0,0,0,0,0,1] + pose: [0,0,0,0,0,0,1] follow: "parameters/test_imu_params_microstrain.yaml" processors: @@ -109,13 +109,13 @@ config: # topic: "trajectory" # period: 1 # frame_id: "map" - - - package: "wolf_ros_node" - type: "PublisherPose" - topic: "pose" - extrinsics: false - period: 0.1 - frame_id: "map" + # - + # package: "wolf_ros_node" + # type: "PublisherPose" + # topic: "pose" + # extrinsics: false + # period: 0.1 + # frame_id: "map" # - # package: "wolf_ros_laser" # type: "PublisherLaserMap" diff --git a/yaml/trajectory_analysys/parameters/csm.yaml b/yaml/trajectory_analysys/parameters/csm.yaml index 2dd8f8680123cbf977c7bd7defcb0c65dd1d33f5..3732d3785d9cd098a633cd28d25a04e1cc4fadd3 100644 --- a/yaml/trajectory_analysys/parameters/csm.yaml +++ b/yaml/trajectory_analysys/parameters/csm.yaml @@ -42,4 +42,4 @@ sigma: 0.2 # Noise of the scan # COVARIANCE do_compute_covariance: true -cov_factor: 5 # Factor multiplying the cov output of csm +cov_factor: 1 # Factor multiplying the cov output of csm diff --git a/yaml/trajectory_analysys/parameters/test_imu_params_microstrain_sloped.yaml b/yaml/trajectory_analysys/parameters/test_imu_params_microstrain_sloped.yaml deleted file mode 100644 index 51ced290ba7db0f5ed336a3c0f8156d4c339893d..0000000000000000000000000000000000000000 --- a/yaml/trajectory_analysys/parameters/test_imu_params_microstrain_sloped.yaml +++ /dev/null @@ -1,10 +0,0 @@ -#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: false diff --git a/yaml/trajectory_analysys/parameters/test_imu_subscriber_microstrain.yaml b/yaml/trajectory_analysys/parameters/test_imu_subscriber_microstrain.yaml index 78c5c3184c072489e143dd00936b6392f542af4a..081af371289a0635166a7a928aed767c652cdd38 100644 --- a/yaml/trajectory_analysys/parameters/test_imu_subscriber_microstrain.yaml +++ b/yaml/trajectory_analysys/parameters/test_imu_subscriber_microstrain.yaml @@ -9,5 +9,5 @@ in_degrees: false #all topic_enable: "/imu_micro/enable" static_init_duration: 0 -lowpass_filter: false +lowpass_filter: true lowpass_cutoff_freq: 5