ORBSLAM3_ROS_Ubuntu18_04环境搭建安装

orbslam3安装

ORB-SLAM3配置及安装教程(2023.3)_orbslam3安装-CSDN博客

换源,换成国内的

搜索software

安装工具

sudo apt install git

sudo apt update
sudo apt install gcc g++

cmake安装

cmake安装新版本

ubuntu20.04安装cmake详细教程-CSDN博客

https://cmake.org/download/

tar -zxvf cmake-3.23.0-rc1.tar.gzcd cmake-3.23.0-rc1./bootstrap

./bootstrap报错
在这里插入图片描述

sudo apt-get install build-essential./bootstrapmake
sudo make install
cmake -version
which cmake

linux安装cmake_error when bootstrapping cmake: cannot find approp-CSDN博客

Eigen3安装

git clone https://github.com/eigenteam/eigen-git-mirror
cd eigen-git-mirror
mkdir build
cd build
cmake ..
sudo make install
#安装后,头文件安装在/usr/local/include/eigen3/

Pangolin安装

sudo apt install libgl1-mesa-dev
sudo apt install libglew-dev
sudo apt install libpython2.7-dev
sudo apt install pkg-config
sudo apt install libegl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocolsgit clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake ..
cmake --build .

在这里插入图片描述

这个错误提示说明CMake在配置OpenCV时,未能找到epoxy库。epoxy是一个OpenGL库,它提供了对OpenGL的直接访问。在安装OpenCV时,如果启用了OpenGL支持,那么epoxy库是必须的。

解决方法

你需要安装libepoxy库及其开发头文件。下面是解决这个问题的步骤:

  1. 安装libepoxy

    打开终端并运行以下命令来安装libepoxy库:

    sudo apt update
    sudo apt install libepoxy-dev
    

ros安装

ROS的最简单安装——鱼香一键安装_鱼香ros一键安装-CSDN博客

一行命令解决rosdep update失败问题(kinetic, melodic, noetic)_ros noetic版本 rosupdate-CSDN博客

opencv安装

linux下编译安装opencv生成opencv.pc-CSDN博客

pkg-config --modversion opencv

一键安装ros后,opencv也自动安装了。

下面是手动安装的教程。

cmake -D CMAKE_BUILD_TYPE=Release \-D CMAKE_INSTALL_PREFIX=/usr/local \-D OPENCV_EXTRA_MODULES_PATH=~/opencv_build/opencv_contrib/modules \-D BUILD_EXAMPLES=ON \-D BUILD_TESTS=ON \-D WITH_TBB=ON \-D WITH_EIGEN=ON \-D WITH_CUDA=ON \-D WITH_OPENGL=ON \-D WITH_QT=ON \-D WITH_V4L=ON \-D WITH_FFMPEG=ON \-D WITH_GTK=ON \-D WITH_IPP=ON \-D WITH_JPEG=ON \-D WITH_PNG=ON \-D WITH_TIFF=ON \-D WITH_WEBP=ON \-D WITH_OPENCL=ON \-D WITH_OPENMP=ON \-D WITH_GSTREAMER=ON \-D ENABLE_PRECOMPILED_HEADERS=ON \-D BUILD_SHARED_LIBS=ON \-D OPENCV_ENABLE_NONFREE=ON \-D OPENCV_GENERATE_PKGCONFIG=ON ..

安装boost库

由此链接进入boost官网:https://www.boost.org/

tar -xzvf boost_1_77_0.tar.gz
cd boost_1_84_0/
sudo ./bootstrap.sh
sudo ./b2 install

安装libssl-dev

sudo apt-get install libssl-dev

安装orbslam3

git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git

这个看运气 ,运气好就能git到。翻墙增加成功率。

cd ORB_SLAM3
chmod +x build.sh
./build.sh

在这里插入图片描述

修改/home/cyk/ORB_SLAM3/CMakeLists.txt

在这里插入图片描述

在这里插入图片描述

重新安装Pangolin

在这里插入图片描述

tracking.cc报错

sed -i ‘s/++11/++14/g’ CMakeLists.txt

在这里插入图片描述

报错:internal compiler error

修改./build.sh

最后一行make -j4改为make

在这里插入图片描述

在这里插入图片描述

gedit ~/.bashrc/home/cyk/ORB_SLAM3/Examples_old/ROSexport ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/cyk/ORB_SLAM3/Examples_old/ROSsource ~/.bashrc

./Examples/Stereo/stereo_euroc ./Vocabulary/ORBvoc.txt ./Examples/Stereo/EuRoC.yaml /home/cyk/ORB_SLAM3/dateset/MH01 ./Examples/Stereo/EuRoC_TimeStamps/MH01.txt dataset-MH01_stereo

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/cyk/ORB_SLAM3/Examples/ROS

在这里插入图片描述

Examples中是没有ROS这个文件夹的,需要自己去Examples_old中手动复制过去。

chmod +x build_ros.sh
./build_ros.sh
  • 纯单目:
roscore
rosrun ORB_SLAM3 Mono Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml
rosbag play MH_01_easy.bag /cam0/image_raw:=/camera/image_raw

在这里插入图片描述

sudo rosdep init
rosdep update

在这里插入图片描述

[ERROR: default sources list file already exists: /etc/ros/rosdep/sources.list.d/20-default.list-CSDN博客](https://blog.csdn.net/ben_xiao_hai_123/article/details/122105403?ops_request_misc=%7B%22request%5Fid%22%3A%22171880645016800182195948%22%2C%22scm%22%3A%2220140713.130102334…%22%7D&request_id=171880645016800182195948&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-122105403-null-null.142v100pc_search_result_base1&utm_term=ERROR%3A default sources list file already exists%3A %2Fetc%2Fros%2Frosdep%2Fsources.list.d%2F20-default.list Please delete if you wish to re-initialize&spm=1018.2226.3001.4187)

在这里插入图片描述

cd /home/cyk/ORB_SLAM3/Examples/ROS/ORB_SLAM3sed -i 's/++11/++14/g' CMakeLists.txt

3.报错
报错1:/home/nj/ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/…/…/…/include/ImuTypes.h:29:10: fatal error: sophus/se3.hpp: 没有那个文件或目录
#include <sophus/se3.hpp>
解决1:找到ORB_SLAM3/Examples_old/ROS/ORB_SLAM3下的CMakeLists.txt 修改它,include_directories中添加

 ${PROJECT_SOURCE_DIR}/../../../Thirdparty/Sophus 

原文链接:https://blog.csdn.net/weixin_48924581/article/details/126534339

接下来的报错:

原文链接:https://blog.csdn.net/weixin_48924581/article/details/126534339

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

解决:
(1)找到ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/src/AR下的ros_mono_ar.cc文件:
将第151行的 cv::Mat Tcw = mpSLAM→TrackMonocular(cv_ptr→image,cv_ptr→header.stamp.toSec());
替换为:

 cv::Mat Tcw;Sophus::SE3f  Tcw_SE3f = mpSLAM->TrackMonocular(cv_ptr->image,cv_ptr->header.stamp.toSec());Eigen::Matrix4f Tcw_Matrix = Tcw_SE3f.matrix();cv::eigen2cv(Tcw_Matrix, Tcw);

(2)找到ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/src/AR下的ViewerAR.cc文件:
将第405行的vPoints.push_back(pMP→GetWorldPos());
替换为:

cv::Mat WorldPos;
cv::eigen2cv(pMP->GetWorldPos(), WorldPos);
vPoints.push_back(WorldPos);

(3)还是ViewerAR.cc文件:
将532行的cv::Mat Xw = pMP→GetWorldPos();
替换为:

cv::Mat Xw;
cv::eigen2cv(pMP->GetWorldPos(), Xw);

重新编译
报错3:

在这里插入图片描述

解决:加头文件
在/ORB_SLAM3/Examples_old/ROS/ORB_SLAM3/src/AR/ViewerAR.h中加入如下:

#include <Eigen/Dense>
#include <opencv2/core/eigen.hpp>
#include <opencv2/opencv.hpp>

再次重新编译,可算ok了

在这里插入图片描述

在这里插入图片描述

source devel/setup.bash
rosrun kalibr kalibr_calibrate_imu_camera --target dynamic/april_6x6.yaml --bag dynamic/dynamic.bag --cam dynamic/camchain_mono.yaml --imu dynamic/imu_adis16448.yaml --bag-from-to 5 45 --imu-models scale-misalignment --timeoffset-padding 0.1 --show-extraction

kalibr安装

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt-get update
export ROS1_DISTRO=noetic # kinetic=16.04, melodic=18.04, noetic=20.04
sudo apt-get install ros-$ROS1_DISTRO-desktop-full
sudo apt-get install python-catkin-tools # ubuntu 16.04, 18.04
sudo apt-get install python3-catkin-tools python3-osrf-pycommon # ubuntu 20.04

在这里插入图片描述

[Kalibr编译make报错:error: ‘_1’ was not declared in this scope_kali 编译安装make报错-CSDN博客](https://blog.csdn.net/weixin_43999084/article/details/130876270?ops_request_misc=%7B%22request%5Fid%22%3A%22171889118516800178576731%22%2C%22scm%22%3A%2220140713.130102334.pc%5Fall.%22%7D&request_id=171889118516800178576731&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-1-130876270-null-null.142v100pc_search_result_base1&utm_term=Failed << bsplines_python%3Amake&spm=1018.2226.3001.4187)

解决方法:

/home/cyk/kalibr_workspace/src/kalibr/aslam_nonparametric_estimation/bsplines_python/src/BSplinePython.cpp

修改BSplinePython.cpp 第42还有49行

第42行

原本是

	return boost::python::make_function(boost::bind(&BiFunction<T>::getBi, BiFunction<T>(bs->getBiVector(t)), _1)

修改为

return boost::python::make_function(boost::bind(&BiFunction<T>::getBi, BiFunction<T>(bs->getBiVector(t)), std::placeholders::_1)

第49行原本是

	return boost::python::make_function(boost::bind(&BiFunction<T>::getBi, BiFunction<T>(bs->getCumulativeBiVector(t)), _1)

修改为

return boost::python::make_function(boost::bind(&BiFunction<T>::getBi, BiFunction<T>(bs->getCumulativeBiVector(t)), std::placeholders::_1)

在这里插入图片描述

cd ~/kalibr_workspace/src
git clone https://github.com/ethz-asl/kalibr.gitcd ~/kalibr_workspace/
catkin build -DCMAKE_BUILD_TYPE=Release -j4source ~/kalibr_workspace/devel/setup.bash
rosrun kalibr kalibr_create_target_pdf --type apriltag --nx [NUM_COLS] --ny [NUM_ROWS] --tsize [TAG_WIDTH_M] --tspace [TAG_SPACING_PERCENT]
eg: rosrun kalibr kalibr_create_target_pdf --type apriltag --nx 8 --ny 8 --tsize 0.1 --tspace 0.3
# 作者给的:
eg: rosrun kalibr kalibr_create_target_pdf --type apriltag --nx 6 --ny 6 --tsize 0.088 --tspace 0.3

SLAM各传感器的标定总结:Camera/IMU/LiDAR_相机和激光雷达标注-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/36526.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

转让无区域商业管理公司基本流程和要求

无区域公司转让的条件和要求取决于您的业务需求和目标。我们的专业团队将与您合作&#xff0c;深入了解您的公司背景、行业情况和发展计划&#xff0c;为您量身定制适合您的转让方案。无论是公司规模、经营期限、资产状况还是法律形式&#xff0c;我们都将综合考虑确保达到您的…

乙级资质企业开展物理污染防治工程的设计规范

1. 国家和地方标准 乙级资质企业首先必须遵守国家和地方有关物理污染防治工程设计的各项标准和规范&#xff0c;包括但不限于&#xff1a; GB/T 36610-2018《环境影响评价技术导则 声环境》&#xff1a;用于指导噪声污染防治工程的设计。 GB 8702-2014《电磁环境控制限值》&…

一键掌控,文件格式转换无忧!轻松驾驭各种文件格式,高效管理您的数字世界

信息爆炸的时代&#xff0c;我们每天都会接触到各种各样的文件格式。无论是工作文档、图片、视频还是音频文件&#xff0c;它们都以不同的格式存在于我们的电脑和移动设备中。然而&#xff0c;不同的软件和应用往往只支持特定的文件格式&#xff0c;这给我们的工作和生活带来了…

数据结构历年考研真题对应知识点(树的基本概念)

目录 5.1树的基本概念 5.1.2基本术语 【森林中树的数量、边数和结点数的关系&#xff08;2016&#xff09;】 5.1.3树的性质 【树中结点数和度数的关系的应用&#xff08;2010、2016&#xff09;】 【指定结点数的三叉树的最小高度分析&#xff08;2022&#xff09;】 5.1…

[软件安装]Dev C++

一、下载Dev C软件安装包 1、官网下载官网 2、百度网盘下载压缩包 二、安装Dev C 1、解压Dev C软件安装包 2、找到【Dev-Cpp 5.11…】应用程序&#xff0c;右键选择【以管理员身份运行】它 3、设置语言 回到桌面&#xff0c;右键桌面上的【Dev C 5.11软件图标】&#xff0c…

全面指南:更改SQL Server端口后的用户通知策略

在企业环境中&#xff0c;出于安全或配置需求&#xff0c;可能需要更改SQL Server的默认端口。然而&#xff0c;一旦端口更改&#xff0c;所有依赖于旧端口的应用程序和用户都将受到影响。因此&#xff0c;确保所有用户和应用程序知晓并适应新的端口设置至关重要。本文将提供一…

python正在表达式.*与(.*)的区别

1、两者都能匹配任意长度任意字符&#xff08;.匹配任意字符,*匹配任意长度&#xff09;&#xff1b; 2、(.*)会将匹配的结果以组的形式匹配到赋值的变量中&#xff1b; 3、(.*)括号中加上&#xff1f;可以实现非贪婪模式(.*?) 例子&#xff1a; file_name "387-(F_PG…

短剧小程序系统cps分销开发搭建

短剧小程序系统CPS分销开发搭建是一个相对复杂但具有广阔商业前景的过程。以下是关于短剧小程序系统CPS分销开发搭建的详细步骤和要点&#xff1a; 需求分析与市场调研&#xff1a; 深入了解市场需求、用户画像和竞品分析&#xff0c;明确产品定位和功能需求。研究目标用户的消…

什么是DEQ?

DEQ (Delivered Ex Quay, Duty Paid) 是指目的港码头交货 (……指定目的港)。 这种术语规定卖方在指定目的港码头将货物交给买方处置&#xff0c;并且不办理进口清关手续。 DEQ适用范围 DEQ术语仅适用于海运、内河运输或多式联运&#xff0c;并且在目的港码头卸货时使用。如…

Swift Combine — Publisher和Subscriber的交互流程(自定义Publisher、Subscriber、Subscription)

之前的文章已经介绍过Publisher和Subscriber&#xff0c;对于概念类的东西这里就不多介绍了&#xff0c;在介绍Publisher和Subscriber的交互流程之前&#xff0c;先补充一下前面没有提到过的Subscription。 Subscription Subscription是一个协议&#xff0c;实现该协议的对象…

探索人工智能和LLM对未来就业的影响

近年来&#xff0c;人工智能&#xff08;AI&#xff09;迅猛发展&#xff0c;引发了人们的兴奋&#xff0c;同时也引发了人们对就业未来的担忧。大型语言模型&#xff08;LLM&#xff09;就是最新的例子。这些强大的人工智能子集经过大量文本数据的训练&#xff0c;以理解和生成…

Python 面试【初级】

欢迎莅临我的博客 &#x1f49d;&#x1f49d;&#x1f49d;&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

安宝特方案 | AR术者培养:AR眼镜如何帮助医生从“看”到“做”?

每一种新药品的上市都需要通过大量的临床试验&#xff0c;而每一种新的手术工具在普及使用之前也需要经过反复的实践和验证。医疗器械公司都面临着这样的挑战&#xff1a;如何促使保守谨慎的医生从仅仅观察新工具在手术中的应用&#xff0c;转变为在实际手术中实操这项工具。安…

011、MongoDB副本集数据同步机制深度解析

目录 MongoDB副本集数据同步机制深度解析 1. 副本集架构概述 1.1 基本组成 1.2 节点角色 2. 数据同步过程详解 2.1 初始同步 2.2 持续复制 2.3 Oplog详解 3. 数据一致性与可用性 3.1 写关注(Write Concern) 3.2 读偏好(Read Preference) 3.3 因果一致性会话 4. 高…

python教程--基础语法

python基础语法 2.1 缩进规则2.2 函数函数定义函数调用参数传递示例 2.3 类类的定义类的实例化类的属性和方法访问示例 2.4 顺序语句结构示例 2.5 条件和分支条件语句的基本结构示例单个 if 语句嵌套条件语句 2.6 循环For 循环While 循环循环控制语句 2.7 数据类型数字类型序列…

IBCS 虚拟专线——企业网络困境的破局者

企业对于高效、稳定且成本合理的网络解决方案的需求愈发迫切。作为一家企业的技术负责人&#xff0c;我曾深陷于企业网络的种种困境之中&#xff0c;直到 IBCS 虚拟专线的出现&#xff0c;为我们带来了转机。 我们的企业在发展过程中&#xff0c;面临着诸多网络相关的挑战。随…

第一百三十一节 Java面向对象设计 - Java对注释类型的限制

Java面向对象设计 - Java对注释类型的限制 注释类型的限制 注释类型不能从另一个注释类型继承。 每个注释类型都隐式地继承java.lang.annotation.Annotation接口&#xff0c;其声明如下&#xff1a; package java.lang.annotation;public interface Annotation { boolea…

FPGA开发技能(7)Vivado设置bit文件加密

文章目录 前言1. AES加密原理2.xilinx的AES方案3.加密流程3.1生成加密的bit流3.2将密钥写入eFUSE寄存器 4.验证结论5.传送门 前言 在FPGA的项目发布的时候需要考虑项目工程加密的问题&#xff0c;一方面防止自己的心血被盗&#xff0c;另一方面也保护公司资产&#xff0c;保护知…

少女之妙,妙在微笑

一、妙与不妙&#xff0c;少女与微笑 我们曾经解过汉字“妙”&#xff0c;妙字可以拆分为少女二字&#xff0c;即&#xff1a; 妙 女 少 少女 但这&#xff0c;其实并没有对 “妙”字 完成完整性解析&#xff0c;如果要完成完整性的说明&#xff0c;应当加上微笑&#xff0…

Windows系统将livp和HEIC文件批量转化为jpg

Windows系统将livp和HEIC文件批量转化为jpg&#xff01; 最重要的是 不用写代码&#xff01;不&#xff01;用&#xff01;写&#xff01;代&#xff01;码&#xff01; 不用写代码&#xff01;Window系统将livp和HEIC文件批量转化为jpg 免&#xff01;费&#xff01; 具体操作…