hku-mars / mlcc

Fast and Accurate Extrinsic Calibration for Multiple LiDARs and Cameras
GNU General Public License v2.0
495 stars 112 forks source link

run extrinsic_refine.launch error #1

Closed levenJun closed 3 years ago

levenJun commented 3 years ago

When I follow the guide, run roslaunch mlcc pose_refine.launch, it`s fine。After that, I run roslaunch mlcc extrinsic_refine.launch, some errors occur, below are some msg, btw, my env is ubuntu18.04, ros is melodic.thanks for your reply.

setting /run_id to 6b384e2a-355c-11ec-850e-8cec4b814673 process[rosout-1]: started with pid [7627] started core service [/rosout] process[extrinsic_refine-2]: started with pid [7634] process[rviz-3]: started with pid [7635]

iteration 0 extrinsic_refine: /home/admini//ws3/src/mlcc/include/extrinsic_refine.hpp:308: void EXTRIN_OPTIMIZER::optimize(): Assertion `!std::isnan(residual2)' failed.

samsdolphin commented 3 years ago

When I follow the guide, run roslaunch mlcc pose_refine.launch, it`s fine。After that, I run roslaunch mlcc extrinsic_refine.launch, some errors occur, below are some msg, btw, my env is ubuntu18.04, ros is melodic.thanks for your reply.

setting /run_id to 6b384e2a-355c-11ec-850e-8cec4b814673

process[rosout-1]: started with pid [7627] started core service [/rosout] process[extrinsic_refine-2]: started with pid [7634] process[rviz-3]: started with pid [7635] iteration 0 extrinsic_refine: /home/admini//ws3/src/mlcc/include/extrinsic_refine.hpp:308: void EXTRIN_OPTIMIZER::optimize(): Assertion `!std::isnan(residual2)' failed.

Hi IevenJun, if you are following the default extrinsic_refine.launch profile (base_lidar=3, ref_lidar=0), then you need to modify the ref.json file. The ref.json contains 3 lines (extrinsic values) which are used for step 3 global_refine.launch. For step 2, you are refining the extrinsic of ONE LiDAR at each time, thus you only need to input ONE initial extrinsic value. The initialized extrinsic value is estimated from Hand-eye calibration and is stored in mlcc/config/init_extrinsic. After that, you can paste the 3 refined extrinsic values and go to step 3.

Hope this helps.

levenJun commented 3 years ago

When I follow the guide, run roslaunch mlcc pose_refine.launch, it`s fine。After that, I run roslaunch mlcc extrinsic_refine.launch, some errors occur, below are some msg, btw, my env is ubuntu18.04, ros is melodic.thanks for your reply.

setting /run_id to 6b384e2a-355c-11ec-850e-8cec4b814673

process[rosout-1]: started with pid [7627] started core service [/rosout] process[extrinsic_refine-2]: started with pid [7634] process[rviz-3]: started with pid [7635] iteration 0 extrinsic_refine: /home/admini//ws3/src/mlcc/include/extrinsic_refine.hpp:308: void EXTRIN_OPTIMIZER::optimize(): Assertion `!std::isnan(residual2)' failed.

Hi IevenJun, if you are following the default extrinsic_refine.launch profile (base_lidar=3, ref_lidar=0), then you need to modify the ref.json file. The ref.json contains 3 lines (extrinsic values) which are used for step 3 global_refine.launch. For step 2, you are refining the extrinsic of ONE LiDAR at each time, thus you only need to input ONE initial extrinsic value. The initialized extrinsic value is estimated from Hand-eye calibration and is stored in mlcc/config/init_extrinsic. After that, you can paste the 3 refined extrinsic values and go to step 3.

Hope this helps.

Thanks a lot for your help, after your guide, I finished the <3.1 LiDAR-LiDAR Extrinsic Calibration> successfully.

qiliang72 commented 3 years ago

When I follow the guide, run roslaunch mlcc pose_refine.launch, it`s fine。After that, I run roslaunch mlcc extrinsic_refine.launch, some errors occur, below are some msg, btw, my env is ubuntu18.04, ros is melodic.thanks for your reply.

setting /run_id to 6b384e2a-355c-11ec-850e-8cec4b814673

process[rosout-1]: started with pid [7627] started core service [/rosout] process[extrinsic_refine-2]: started with pid [7634] process[rviz-3]: started with pid [7635] iteration 0 extrinsic_refine: /home/admini//ws3/src/mlcc/include/extrinsic_refine.hpp:308: void EXTRIN_OPTIMIZER::optimize(): Assertion `!std::isnan(residual2)' failed.

Hi IevenJun, if you are following the default extrinsic_refine.launch profile (base_lidar=3, ref_lidar=0), then you need to modify the ref.json file. The ref.json contains 3 lines (extrinsic values) which are used for step 3 global_refine.launch. For step 2, you are refining the extrinsic of ONE LiDAR at each time, thus you only need to input ONE initial extrinsic value. The initialized extrinsic value is estimated from Hand-eye calibration and is stored in mlcc/config/init_extrinsic. After that, you can paste the 3 refined extrinsic values and go to step 3.

Hope this helps.

Thanks for the advice. I followed this but still got the same error. My env is Ubuntu18 melodic and the following is what I have done.

  1. roslaunch mlcc pose_refine.launch
  2. modify the contents of "mlcc/scene2/ref.json" to "0 0 0 -0.0332571 -0.0141886 -0.00218784 0.999344", which is copied from the 8th line "L0: 0 0 0 -0.0332571 -0.0141886 -0.00218784 0.999344" in file "mlcc/config/init_extrinsic", and keep "extrinsic_refine.launch" unchanged.
  3. roslaunch mlcc extrinsic_refine.launch

Is there anything wrong?

samsdolphin commented 3 years ago

When I follow the guide, run roslaunch mlcc pose_refine.launch, it`s fine。After that, I run roslaunch mlcc extrinsic_refine.launch, some errors occur, below are some msg, btw, my env is ubuntu18.04, ros is melodic.thanks for your reply.

setting /run_id to 6b384e2a-355c-11ec-850e-8cec4b814673

process[rosout-1]: started with pid [7627] started core service [/rosout] process[extrinsic_refine-2]: started with pid [7634] process[rviz-3]: started with pid [7635] iteration 0 extrinsic_refine: /home/admini//ws3/src/mlcc/include/extrinsic_refine.hpp:308: void EXTRIN_OPTIMIZER::optimize(): Assertion `!std::isnan(residual2)' failed.

Hi IevenJun, if you are following the default extrinsic_refine.launch profile (base_lidar=3, ref_lidar=0), then you need to modify the ref.json file. The ref.json contains 3 lines (extrinsic values) which are used for step 3 global_refine.launch. For step 2, you are refining the extrinsic of ONE LiDAR at each time, thus you only need to input ONE initial extrinsic value. The initialized extrinsic value is estimated from Hand-eye calibration and is stored in mlcc/config/init_extrinsic. After that, you can paste the 3 refined extrinsic values and go to step 3. Hope this helps.

Thanks for the advice. I followed this but still got the same error. My env is Ubuntu18 melodic and the following is what I have done.

  1. roslaunch mlcc pose_refine.launch
  2. modify the contents of "mlcc/scene2/ref.json" to "0 0 0 -0.0332571 -0.0141886 -0.00218784 0.999344", which is copied from the 8th line "L0: 0 0 0 -0.0332571 -0.0141886 -0.00218784 0.999344" in file "mlcc/config/init_extrinsic", and keep "extrinsic_refine.launch" unchanged.
  3. roslaunch mlcc extrinsic_refine.launch

Is there anything wrong?

Hi qiliang72, this is probably due to the reason that you implicitly paste the newline to the ref.json file. This is to say, you actually input two lines to the ref.json, but only one line is required. You may verify this using Visual Studio Code instead of system default gedit.

Hope this helps.

qiliang72 commented 3 years ago

When I follow the guide, run roslaunch mlcc pose_refine.launch, it`s fine。After that, I run roslaunch mlcc extrinsic_refine.launch, some errors occur, below are some msg, btw, my env is ubuntu18.04, ros is melodic.thanks for your reply.

setting /run_id to 6b384e2a-355c-11ec-850e-8cec4b814673

process[rosout-1]: started with pid [7627] started core service [/rosout] process[extrinsic_refine-2]: started with pid [7634] process[rviz-3]: started with pid [7635] iteration 0 extrinsic_refine: /home/admini//ws3/src/mlcc/include/extrinsic_refine.hpp:308: void EXTRIN_OPTIMIZER::optimize(): Assertion `!std::isnan(residual2)' failed.

Hi IevenJun, if you are following the default extrinsic_refine.launch profile (base_lidar=3, ref_lidar=0), then you need to modify the ref.json file. The ref.json contains 3 lines (extrinsic values) which are used for step 3 global_refine.launch. For step 2, you are refining the extrinsic of ONE LiDAR at each time, thus you only need to input ONE initial extrinsic value. The initialized extrinsic value is estimated from Hand-eye calibration and is stored in mlcc/config/init_extrinsic. After that, you can paste the 3 refined extrinsic values and go to step 3. Hope this helps.

Thanks for the advice. I followed this but still got the same error. My env is Ubuntu18 melodic and the following is what I have done.

  1. roslaunch mlcc pose_refine.launch
  2. modify the contents of "mlcc/scene2/ref.json" to "0 0 0 -0.0332571 -0.0141886 -0.00218784 0.999344", which is copied from the 8th line "L0: 0 0 0 -0.0332571 -0.0141886 -0.00218784 0.999344" in file "mlcc/config/init_extrinsic", and keep "extrinsic_refine.launch" unchanged.
  3. roslaunch mlcc extrinsic_refine.launch

Is there anything wrong?

Hi qiliang72, this is probably due to the reason that you implicitly paste the newline to the ref.json file. This is to say, you actually input two lines to the ref.json, but only one line is required. You may verify this using Visual Studio Code instead of system default gedit.

Hope this helps.

Thanks so much for your help. Following your guide of using VS code, I successfully finished step3.1.