独自のデータを使用して R3LIVE を最初から実行する

1. カメラ内部基準校正

カメラは 4mm 広角カメラを使用しており、カメラの内部パラメータは最も一般的なチェッカーボード方式を使用して調整されています。まず、ROS に付属するパッケージをインストールします

sudo apt install ros-melodic-camera-calibration

usb_cam でカメラを起動した後、キャリブレーションを行います。

rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.06 image:=/uab_cam/image_raw camera:=/camera --no-service-check

--size:キャリブレーションボードの長さ X 幅

--square: チェス盤の小さなグリッドの辺の長さ (m)
image:=/... : 画像トピックをサブスクライブします
Camera:=/camera: カメラ名

キャリブレーション後、内部参照ファイルが生成されます。Intrinsic はカメラ マトリックス、Distortion は歪みマトリックスです。

Intrinsic:
[430.229,0,306.853],[0,437.83,248.373],[0,0,1]

Distortion:
[0.156215,-0.156542,-0.004833,-0.001379]

2. Cam2lidar 外部パラメータの校正

私は外部基準の校正に自動 + 手動の方法を使用し、最初に自動登録のアルゴリズムを使用し、次に手動校正を使用して修正します。

自動キャリブレーション アルゴリズムは livox_camera_calib アルゴリズムを使用します

GitHub - hku-mars/livox_camera_calib: このリポジトリは、ターゲットのないシーンでの高解像度 LiDAR とカメラ間の自動キャリブレーションに使用されます。

この方法はうまく機能しますが、特定の場面が必要になるため、テスト後は、廊下などの奥行き差が大きいシーンと平坦なシーンをデータ収集用に選択します。

        自動キャリブレーション アルゴリズムは特にデータのシーンに依存しており、良好なシーンでは良好なキャリブレーション効果が得られます。次に、SensorsCalibration を使用して、手動でさらなる補正を行います。このキャリブレーション ライブラリには、ほとんどのセンサー間のキャリブレーションが含まれています。

https://github.com/PJLab-ADG/SensorsCalibration

最終的なキャリブレーション結果を下の図に示します。 

キャリブレーション後、外部パラメータマトリックスが生成されます

Extrinsic:
[-0.00650189,-0.999724,-0.0225309,0.0946092],[0.0035881,0.0225079,-0.999741,0.162664],[0.999972,-0.00658104,0.00344083,-0.00686066],[0,0,0,1]

3. ロスバッグを記録する

その後、データを収集できます。注意すべき点の 1 つは、異なるセンサー間の時刻同期です。LIVOX は、ROS システム時間ではなく、デフォルトで LIDAR の開始からの時間を計算するためです。データが直接記録される場合は、走らない。以下に 2 つの解決策を示します。

  • LIDAR 接続に対応するネットワーク カードをシステム時刻と同期します。

ifconfig ネットワーク ポートを確認します。たとえば、ネットワーク ポートは eno1 です。


 次のプロンプトが表示された場合は、ハードウェア同期「hardware-raw- Clock (SOF_TIMESTAMPING_RAW_HARDWARE)」
 「hardware-transmit (SOF_TIMESTAMPING_TX_HARDWARE)」
 「hardware-recive (SOF_TIMESTAMPING_RX_HARDWARE)」を使用できます。

sudo apt install ptpd
sudo ptpd -M -i eno1 -C 

最適なマスターが現れたらWiresharkで確認し、

Wireshark -- eno1 -- 検索ボックスで ptp を検索 -- 同期メッセージ信号が表示されます

その後、LIDAR を再度起動すると、タイムスタンプがローカル マシンと同期されます。

  • R3LIVE の作者が提供する LIVOX ドライバーを直接使用します

GitHub - ziv-lin/livox_ros_driver_for_R2LIVE

作成者はソース コードのタイムスタンプを変更したため、このドライバーを使用して直接データの記録を開始できるようになりました。記録する前に、livox_lidar_config.json ファイルで時刻同期機能をオンにする必要があります。そしてインターフェース名を選択します。ここではカメラのインターフェースを選択します。

データを記録する場合、画像トピックを usb_cam/image_raw/compressed などの圧縮形式で記録すると、rosbag が小さくなります。

4. R3LIVE のインストールとコンパイル

https://github.com/hku-mars/r3live

公式ウェブサイトの Reademe に従ってください。作者が詳しく書いています。

5. 走行結果

主に yaml ファイルを変更し、取得したカメラの内部パラメータ、外部パラメータ、歪みマトリックスを入力する必要があります。3*3 回転行列は、4*4 変換行列の左上の 3*3 部分の転置であることに注意してください。次に、起動ファイルのトピックを独自のものに変更します。

r3live_vio:
   image_width: 640
   image_height: 480
   camera_intrinsic:
      [460.799008, 0.000000, 280.624145,
    0.000000, 459.386391, 167.344099,
    0.0, 0.0, 1.0] 
   camera_dist_coeffs: [-0.107372, 0.087416, 0.001676, -0.001356, 0.000000]  #k1, k2, p1, p2, k3
   # Fine extrinsic value. form camera-LiDAR calibration.
   #转置矩阵
   camera_ext_R:       
          [-0.00650189,0.0035881,0.999972,
            -0.999724,0.0225079,-0.00658104,
            -0.0225309,  -0.999741,   0.00344083]
   # camera_ext_t: [0.050166, 0.0474116, -0.0312415] 
   camera_ext_t: [0.0946092,0.162664,-0.00686066] 
<launch>
    <!-- Subscribed topics -->
    <param name="LiDAR_pointcloud_topic" type="string" value= "/laser_cloud_flat" />
    <param name="IMU_topic" type="string" value= "/livox/imu" />
    <param name="Image_topic" type="string" value= "/usb_cam/image_raw" />
    <param name="r3live_common/map_output_dir" type="string" value="$(env HOME)/r3live_output" />
    <rosparam command="load" file="$(find r3live)/../config/my_data_r3live_config.yaml" />

    <node pkg="r3live" type="r3live_LiDAR_front_end" name="r3live_LiDAR_front_end"  output="screen" required="true"/>
    <node pkg="r3live" type="r3live_mapping" name="r3live_mapping" output="screen" required="true" />
    
    <arg name="rviz" default="1" />
    <group if="$(arg rviz)">
        <node name="rvizvisualisation" pkg="rviz" type="rviz" output="log" args="-d $(find r3live)/../config/rviz/r3live_rviz_config.rviz" />
    </group>
</launch>

実行後、マップを構築できます。

roslaunch r3live my_data_r3live_bag.launch 

 

おすすめ

転載: blog.csdn.net/HUASHUDEYANJING/article/details/131507019