欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > ubuntu20.04安装使用direct_visual_lidar_calibration标定雷达和相机

ubuntu20.04安装使用direct_visual_lidar_calibration标定雷达和相机

2025/2/25 21:32:02 来源:https://blog.csdn.net/m0_58173801/article/details/145320070  浏览:    关键词:ubuntu20.04安装使用direct_visual_lidar_calibration标定雷达和相机

官方链接GitHub - koide3/direct_visual_lidar_calibration: A toolbox for target-less LiDAR-camera calibration [ROS1/ROS2]

官方安装方式

Installation - direct_visual_lidar_calibration

安装依赖

sudo apt install libomp-dev libboost-all-dev libglm-dev libglfw3-dev libpng-dev libjpeg-dev

安装GTSAM

git clone https://github.com/borglab/gtsam
cd gtsam && git checkout 4.2a9
mkdir build && cd build
//ubuntu20.04
cmake .. -DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF \-DGTSAM_BUILD_TESTS=OFF \-DGTSAM_WITH_TBB=OFF \-DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF
make -j$(nproc)
sudo make install

安装ceres

# Install Ceres
git clone --recurse-submodules https://github.com/ceres-solver/ceres-solver
cd ceres-solver
git checkout e47a42c2957951c9fafcca9995d9927e15557069
mkdir build && cd build
cmake .. -DBUILD_EXAMPLES=OFF -DBUILD_TESTING=OFF -DUSE_CUDA=OFF
make -j$(nproc)
sudo make install

安装Iridescence

# Install Iridescence for visualization
git clone https://github.com/koide3/iridescence --recursive
mkdir iridescence/build && cd iridescence/build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)
sudo make install

Install SuperGlue (Optional)

pip3 install numpy opencv-python torch matplotlib
git clone https://github.com/magicleap/SuperGluePretrainedNetwork.gitecho 'export PYTHONPATH=$PYTHONPATH:/path/to/SuperGluePretrainedNetwork' >> ~/.bashrc
source ~/.bashrc

Build direct_visual_lidar_calibration

# ROS1
cd ~/catkin_ws/src
git clone https://github.com/koide3/direct_visual_lidar_calibration.git --recursive
cd .. && catkin_make

在编译的时候遇到了这个问题,查看官方文档,发现别人也有遇到这个问题。我使用的版本是ubuntu20.04,ubuntu20.04遇到这个问题可以参考我的博客。

使用vim

/usr/local/lib/cmake/iridescence/iridescence-config.cmake添加以下这行

set_property(TARGET Iridescence::iridescence PROPERTY IMPORTED_GLOBAL TRUE

/usr/bin/ld: 找不到 -lfmt

sudo apt-get install libfmt-dev

opencv库版本不兼容,opencv是因为我之前安装orb-slam换掉了opencv的版本,opencv版本冲突是比较常见并且比较难解决的问题。如果出现了这个问题,可以按照我下面的解决方法解决。undefined reference to `cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)' · Issue #28872 · microsoft/vcpkg · GitHub

1.查看opencv版本

pkg-config --modversion opencv4

我的opencv版本为4.2

2.直接修改cmakelist文件,可以直接将我的cmakelist文件复制过去。主要修改在27行,添加opencv的版本,83行增加opencv相关库的查找,95,99,103行,ros编译时opencv库的查找。

cmake_minimum_required(VERSION 3.16)
project(direct_visual_lidar_calibration)add_compile_options(-std=c++17)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_LIST_DIR}/cmake")if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build." FORCE)set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
endif()if($ENV{ROS_VERSION} EQUAL 1)# ROS1find_package(catkin REQUIRED COMPONENTS rosbag sensor_msgs cv_bridge)catkin_package()
else()# ROS2find_package(ament_cmake_auto REQUIRED)find_package(ament_cmake_python REQUIRED)ament_auto_find_build_dependencies()
endif()find_package(PCL REQUIRED)
find_package(Ceres REQUIRED)
find_package(GTSAM REQUIRED)
# find_package(OpenCV  CONFIG REQUIRED)
find_package(OpenCV 4.2 REQUIRED COMPONENTS core imgproc highgui)
find_package(Boost REQUIRED COMPONENTS filesystem program_options)
find_package(Iridescence REQUIRED)set(OLD_DISTRO "humble;galactic;foxy")
if($ENV{ROS_DISTRO} IN_LIST OLD_DISTRO)add_definitions(-DCV_BRIDGE_INCLUDE_H)
else()add_definitions(-DCV_BRIDGE_INCLUDE_HPP)
endif()find_package(OpenMP)
if (OPENMP_FOUND)set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
endif()# direct_visual_lidar_calibration
add_library(direct_visual_lidar_calibration SHAREDsrc/camera/create_camera.cppsrc/vlcal/common/frame.cppsrc/vlcal/common/frame_cpu.cppsrc/vlcal/common/ivox.cppsrc/vlcal/common/cloud_covariance_estimation.cppsrc/vlcal/common/time_keeper.cppsrc/vlcal/common/estimate_fov.cppsrc/vlcal/common/estimate_pose.cppsrc/vlcal/common/points_color_updater.cppsrc/vlcal/common/visual_lidar_data.cppsrc/vlcal/common/visual_lidar_visualizer.cppsrc/vlcal/preprocess/preprocess.cppsrc/vlcal/preprocess/generate_lidar_image.cppsrc/vlcal/preprocess/static_point_cloud_integrator.cppsrc/vlcal/preprocess/dynamic_point_cloud_integrator.cppsrc/vlcal/calib/cost_calculator_nid.cppsrc/vlcal/calib/view_culling.cppsrc/vlcal/calib/visual_camera_calibration.cpp
)
target_include_directories(direct_visual_lidar_calibration PUBLICincludethirdparty/json/includethirdparty/Bonxai/includethirdparty/nanoflann/includethirdparty/Sophus${Boost_INCLUDE_DIRS}${CERES_INCLUDE_DIRS}${GTSAM_INCLUDE_DIRS}${PCL_INCLUDE_DIRS}${OpenCV_INCLUDE_DIRS}
)
target_link_libraries(direct_visual_lidar_calibrationfmt${Boost_LIBRARIES}${PCL_LIBRARIES}${CERES_LIBRARIES}${GTSAM_LIBRARIES}${OpenCV_LIBS}Iridescence::Iridescence
)if($ENV{ROS_VERSION} EQUAL 1)# ROS1add_executable(preprocesssrc/preprocess_ros1.cpp)target_link_libraries(preprocessdirect_visual_lidar_calibration${OpenCV_LIBS})target_include_directories(preprocess PUBLIC${catkin_INCLUDE_DIRS}${OpenCV_LIBS})target_link_libraries(preprocess${catkin_LIBRARIES}${OpenCV_LIBS})
else()# ROS2ament_auto_add_executable(preprocesssrc/preprocess_ros2.cpp)target_link_libraries(preprocessdirect_visual_lidar_calibration)
endif()# preprocess_map
add_executable(preprocess_mapsrc/preprocess_map.cpp
)
target_include_directories(preprocess_map PRIVATE${catkin_INCLUDE_DIRS}
)
target_link_libraries(preprocess_mapdirect_visual_lidar_calibration
)# initial_guess_manual
add_executable(initial_guess_manualsrc/initial_guess_manual.cpp
)
target_include_directories(initial_guess_manual PRIVATE${catkin_INCLUDE_DIRS}
)
target_link_libraries(initial_guess_manualdirect_visual_lidar_calibration
)# initial_guess_auto
add_executable(initial_guess_autosrc/initial_guess_auto.cpp
)
target_include_directories(initial_guess_auto PRIVATE${catkin_INCLUDE_DIRS}
)
target_link_libraries(initial_guess_autodirect_visual_lidar_calibration
)# calibrate
add_executable(calibratesrc/calibrate.cpp
)
target_include_directories(calibrate PRIVATE${catkin_INCLUDE_DIRS}
)
target_link_libraries(calibratedirect_visual_lidar_calibration
)# viewer
add_executable(viewersrc/viewer.cpp
)
target_include_directories(viewer PRIVATE${catkin_INCLUDE_DIRS}
)
target_link_libraries(viewerdirect_visual_lidar_calibration
)install(TARGETSdirect_visual_lidar_calibration
)install(TARGETSpreprocess_mapinitial_guess_manualinitial_guess_autocalibrateviewerDESTINATIONlib/${PROJECT_NAME}
)if($ENV{ROS_VERSION} EQUAL 1)# ROS1
else()# ROS2ament_python_install_package(${PROJECT_NAME})install(PROGRAMS scripts/find_matches_superglue.py DESTINATION lib/${PROJECT_NAME})ament_export_libraries(direct_visual_lidar_calibration)ament_auto_package()
endif()

使用direct_visual_lidar_calibration标定

1.先下载官方数据集,查看官方运行效果再采集自己的数据集,官方标定使用文档

Calibration example - direct_visual_lidar_calibration

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词