Hello,
first of all, thanks for releasing the CalibrationTools! We've been looking for a calibration toolbox for our research vehicle that works with Autoware/ROS2 for quite some time before these tools were released and I think this could be exactly what we were looking for.
So far, we've adapted the aip_xx1 launch files of the extrinsic_calibration_manager to our sensor setup and crafted some Lidartags. But until now, we weren't successful in calibrating our lidar and camera sensors yet. We've decided to do the interactive calibration first because it seems simpler than the tag_based calibration.
We're trying to do the interactive calibration for the sensors of our vehicle online without recording a rosbag2 before. For that, we run our sensors using an adapted version of tier4_sensing.launch and we launch an initial guess for the tf tree of our vehicle using an adapted version of tier4_vehicle.launch. We use the following command for starting the interactive calibration:
ros2 launch extrinsic_calibration_manager calibration.launch.xml mode:=interactive sensor_model:=nissan_leaf_sensor_kit vehicle_model:=nissan_leaf camera_name:=camera_front logging_simulator:=false
The interactive calibration tool displays for a really short time a camera image and dies after less than one second. During this time, it can be seen that the status is 'Waiting for Calibration' and the TF Source is set to 'Initial /tf' (but the TF Source also sometimes seems to be empty with no other modifications done).
Here's the output:
albers@leaf-pc:~$ ros2 launch extrinsic_calibration_manager calibration.launch.xml mode:=interactive sensor_model:=nissan_leaf_sensor_kit vehicle_model:=nissan_leaf camera_name:=camera_front logging_simulator:=false
[INFO] [launch]: All log files can be found below /home/albers/.ros/log/2022-10-24-13-51-11-031738-leaf-pc-54816
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [static_transform_publisher-1]: process started with pid [54824]
[INFO] [extrinsic_calibration_client-2]: process started with pid [54826]
[INFO] [extrinsic_calibration_manager-3]: process started with pid [54828]
[INFO] [interactive_calibrator-4]: process started with pid [54830]
[INFO] [camera_intrinsics_optimizer.py-5]: process started with pid [54832]
[static_transform_publisher-1] [WARN 1666612276.838619172] []: Old-style arguments are deprecated; see --help for new-style arguments (parse_args() at ./src/static_transform_broadcaster_program.cpp:258)
[static_transform_publisher-1] [INFO 1666612276.875305045] [map2base_link]: Spinning until stopped - publishing transform
[static_transform_publisher-1] translation: ('0.000000', '0.000000', '0.000000')
[static_transform_publisher-1] rotation: ('0.000000', '0.000000', '0.000000', '1.000000')
[static_transform_publisher-1] from 'map' to 'base_link' (main() at ./src/static_transform_broadcaster_program.cpp:397)
[extrinsic_calibration_manager-3] [INFO 1666612277.883119915] [sensor_kit.extrinsic_calibration_manager]: Waiting for service: camera_front/camera_link (calibrationRequestCallback() at /home/albers/autoware/src/autoware/calibration_tools/sensor/extrinsic_calibration_manager/src/extrinsic_calibration_manager_node.cpp:73)
[extrinsic_calibration_manager-3] [INFO 1666612278.852749775] [sensor_kit.extrinsic_calibration_manager]: Call service: camera_front/camera_link (calibrationRequestCallback() at /home/albers/autoware/src/autoware/calibration_tools/sensor/extrinsic_calibration_manager/src/extrinsic_calibration_manager_node.cpp:93)
[interactive_calibrator-4] QPaintDevice: Cannot destroy paint device that is being painted
[interactive_calibrator-4] QPaintDevice: Cannot destroy paint device that is being painted
[ERROR] [interactive_calibrator-4]: process has died [pid 54830, exit code -11, cmd '/home/albers/autoware/install/extrinsic_interactive_calibrator/lib/extrinsic_interactive_calibrator/interactive_calibrator --ros-args -r __node:=interactive_calibrator -r __ns:=/sensor_kit/sensor_kit_base_link/camera_front/camera_link --params-file /tmp/launch_params_04negb1a --params-file /tmp/launch_params_eb38c1w9 -r pointcloud:=/sensing/lidar/os2/points -r image:=/sensing/camera/camera_front/image_raw/compressed -r camera_info:=/sensing/camera/camera_front/camera_info -r calibration_points_input:=calibration_points'].
[extrinsic_calibration_manager-3] [INFO 1666612283.852965599] [sensor_kit.extrinsic_calibration_manager]: Waiting for responses... (calibrationRequestCallback() at /home/albers/autoware/src/autoware/calibration_tools/sensor/extrinsic_calibration_manager/src/extrinsic_calibration_manager_node.cpp:106)
The interactive_calibrator does not die if disable displaying the pointcloud before launching the initial tf tree, so apparently there seems to be something wrong with displaying the point cloud in the interactive_calibrator.
Downsampling the point cloud by a factor of 10 does not fix the issue. We use an Ouster OS2 Lidar (64 Rays*1024 points per revolution at 20 Hertz).
Without displaying the point cloud we were able to calibrate our sensors.