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库及其开发头文件。下面是解决这个问题的步骤:
-
安装
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博客
相关文章:
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详细…...
【opencv - C++ - Ubuntu】putText 显示中文最快方法
话不多说,直接上代码 #include <iostream> #include <opencv2/opencv.hpp> #include <opencv2/freetype.hpp>using namespace std; using namespace cv;int main(void) {Mat image(1000, 1800, CV_8UC3, Scalar(200,162,33));Ptr<freetype::F…...
百度网盘下载速度慢的解决办法
目录 一、背景 二、解决办法 1、点击三个竖点,再点设置 2、点击传输,再点击去开启该功能 3、点击同意,开启优化速率 三、结果 四、备注 一、背景 当你不是百度网盘会员时,你在使用百度网盘下载时,是否下载速度太…...
Python api接口 异步
Python API接口异步编程简介 在现代的软件开发中,大多数应用都需要通过API接口与其他系统进行交互。Python是一种非常流行的编程语言,因此许多开发者选择使用Python来构建他们的API接口。在一些情况下,API接口需要进行异步编程,以…...
Java 和 Kotlin 单例模式写法对比
目录 1、饿汉模式 Java 写法: Kotlin 写法: Kotlin 这段代码反编译&简化后如下: 2、懒汉模式,静态同步方法 Java 写法: Kotlin 写法: Kotlin 这段代码反编译&简化后如下: 3、懒…...
解析connectionReset异常的原因与解决方案
解析connectionReset异常的原因与解决方案 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨Java中connectionReset异常的原因及其解决方案。这…...
mindspore打卡第9天 transformer的encoder和decoder部分
mindspore打卡第9天 transformer的encoder和decoder部分 import mindspore from mindspore import nn from mindspore import ops from mindspore import Tensor from mindspore import dtype as mstypeclass ScaledDotProductAttention(nn.Cell):def __init__(self, dropout_…...
Python实现IPv4地址和16进制互相转换
Python实现IPv4地址和16进制互相转换 import socketdef ip_to_hex16(ipaddr):# 使用 socket 库中的方法将IP地址转换为网络字节序的二进制表示hex_bytes socket.inet_aton(ipaddr)# 将二进制数据转换为整数, 其中byteorderbig 表示使用大端字节序(从高位到低位&…...
计算机视觉 | 基于图像处理和边缘检测算法的黄豆计数实验
目录 一、实验原理二、实验步骤1. 图像读取与预处理2. 边缘检测3. 轮廓检测4. 标记轮廓序号 三、实验结果四、完整代码 Hi,大家好,我是半亩花海。 本实验旨在利用 Python 和 OpenCV 库,通过图像处理和边缘检测算法实现黄豆图像的自动识别和计…...
深入分析 Android BroadcastReceiver (七)
文章目录 深入分析 Android BroadcastReceiver (七)1. 高级应用场景1.1 示例:动态权限请求1.2 示例:应用内通知更新 2. 安全性与性能优化2.1 示例:设置权限防止广播攻击2.2 示例:使用 LocalBroadcastManager2.3 示例:在…...
C++中的数据结构
一.STL标准库 结构:STL中有六大组件,分别是:容器,算法,迭代器,仿函数,配接器,配置器;以下分别介绍这六大组件中的最主要的三个。 1.容器 容器来配置存储空间,算法通过…...
武汉星起航:一站式服务,助力亚马逊卖家高效运营,实现收益飞跃
在跨境电商的浪潮中,武汉星起航电子商务有限公司以其独特的一站式跨境电商服务,为众多亚马逊卖家提供了强有力的支持,助力他们在不断发展的市场中脱颖而出,实现收益的大幅提升。 武汉星起航的一站式跨境电商服务,以其…...
从灵感到实践:Kimi辅助完成学术论文选题的文艺之旅
学境思源,一键生成论文初稿: AcademicIdeas - 学境思源AI论文写作 昨天我们为大家介绍了ChatGPT辅助完成实现设计(AI与学术的交响:ChatGPT辅助下的实验设计新篇章)。今天我们再来看看Kimi对于论文选题都能提供哪些帮助…...
华为od-C卷200分题目4 -电脑病毒感染
华为od-C卷200分题目4 -电脑病毒感染 一个局域网内有很多台电脑,分别标注为0 - N-1的数字。相连接的电脑距离不一样,所以感染时间不一样,感染时间用t表示。其中网络内一个电脑被病毒感染,其感染网络内所有的电脑需要最少需要多长…...
show-overflow-tooltip 解决elementui el-table标签自动换行的问题
elementui中 el-table中某一行的高度不想因为宽度不够而撑开换行展示的解决方法。可通过show-overflow-tooltip属性解决,如下 代码是这样的 <el-table-column width"80" prop"id" label"ID"></el-table-column> <el…...
数字社交的领航者:解析Facebook的引领作用
在当今数字化社会中,社交网络已经成为了人们日常生活不可或缺的一部分。而在众多社交平台中,Facebook凭借其巨大的用户基础和创新的技术应用,被公认为数字社交领域的领航者之一。本文将深入解析Facebook在数字社交中的引领作用,探…...
深度分析 Apache Flink 窗口机制
什么是 Flink 窗口? Apache Flink 是一个用于处理实时流数据的开源框架,其核心功能之一是窗口(Window)机制。窗口是 Flink 在处理流数据时用于划分数据流的逻辑概念,它将无限的流数据切割成有限的、可管理的部分&…...
ubuntu 软链接(ubuntu20.04)
ubuntu 软链接(ubuntu20.04) 在Ubuntu和其他Linux系统中,软链接(也称为符号链接)是文件系统中的一个特殊类型的文件,它作为一个引用或指针,指向另一个文件或目录。软链接类似于Windows中的快捷…...
如何在LabVIEW中使用FPGA模块
LabVIEW FPGA模块是NI公司推出的一款强大工具,它允许用户使用LabVIEW图形化编程环境来开发FPGA(现场可编程门阵列)应用程序。与传统的HDL(硬件描述语言)编程相比,LabVIEW FPGA模块大大简化了FPGA开发的过程…...
FPGA开发技能(7)Vivado设置bit文件加密
文章目录 前言1. AES加密原理2.xilinx的AES方案3.加密流程3.1生成加密的bit流3.2将密钥写入eFUSE寄存器 4.验证结论5.传送门 前言 在FPGA的项目发布的时候需要考虑项目工程加密的问题,一方面防止自己的心血被盗,另一方面也保护公司资产,保护知…...
AI驱动的像素级区域划分:Krita智能选区工具提升数字创作效率全指南
AI驱动的像素级区域划分:Krita智能选区工具提升数字创作效率全指南 【免费下载链接】krita-vision-tools Krita plugin which adds selection tools to mask objects with a single click, or by drawing a bounding box. 项目地址: https://gitcode.com/gh_mirro…...
别再手动配环境了!用Docker Compose一键部署GeoServer,5分钟搞定TIF影像发布
5分钟极速部署GeoServer:Docker Compose全自动化实战指南 每次新项目启动都要重复配置GeoServer?还在为环境变量和端口冲突头疼?GIS开发中最耗时的从来不是业务逻辑,而是这些本该自动化的基础设施搭建。今天我们就用Docker Compo…...
open_clip技术解构:从核心原理到产业级应用
open_clip技术解构:从核心原理到产业级应用 【免费下载链接】open_clip An open source implementation of CLIP. 项目地址: https://gitcode.com/GitHub_Trending/op/open_clip 一、价值定位:重新定义多模态AI开发范式 核心问题:为什…...
csvlens作为库使用教程:在Rust项目中集成CSV查看功能
csvlens作为库使用教程:在Rust项目中集成CSV查看功能 【免费下载链接】csvlens Command line csv viewer 项目地址: https://gitcode.com/gh_mirrors/cs/csvlens 想要在你的Rust应用中添加一个功能强大、交互式的CSV数据查看器吗?csvlens不仅是一…...
揭秘Demucs:音频分离背后的跨域Transformer技术革命
揭秘Demucs:音频分离背后的跨域Transformer技术革命 【免费下载链接】demucs Code for the paper Hybrid Spectrogram and Waveform Source Separation 项目地址: https://gitcode.com/gh_mirrors/de/demucs 在音频处理的广阔领域中,音乐源分离技…...
艾法斯 IFR2948B 综合测试仪 Aeroflex 2948B IFR 2945B
艾法斯 IFR2948B 综合测试仪 Aeroflex 2948B IFR 2945B 2948B是2945B的低噪声型号,其射频源的相位噪声比2945B有了很大改善,可用于精确测量窄带接收机。重量轻便于携带及野外测试;全扫宽频谱分析仪--支持“Look&listen”模式;标准配置带支持频率偏移方式的跟踪发生器;支持高…...
BabelDOC终极指南:如何完美翻译PDF学术论文并保持原格式
BabelDOC终极指南:如何完美翻译PDF学术论文并保持原格式 【免费下载链接】BabelDOC Yet Another Document Translator 项目地址: https://gitcode.com/GitHub_Trending/ba/BabelDOC 还在为PDF翻译后格式混乱而烦恼吗?BabelDOC为您提供了一站式解决…...
硬核实战:从APDU指令到安全认证,手把手解析CPU卡读写全流程
1. CPU卡技术基础与APDU指令入门 第一次接触CPU卡开发时,我被那些十六进制指令搞得头晕眼花。记得当时为了读取一张门禁卡的基本信息,整整折腾了两天都没成功。后来才发现,原来连最基本的外部认证都没通过。CPU卡作为智能卡的高级形态&#x…...
DiskInfo终极指南:3分钟掌握硬盘健康状态,免费保护你的数据安全
DiskInfo终极指南:3分钟掌握硬盘健康状态,免费保护你的数据安全 【免费下载链接】DiskInfo DiskInfo based on CrystalDiskInfo 项目地址: https://gitcode.com/gh_mirrors/di/DiskInfo 硬盘就像电脑的"记忆仓库",所有重要文…...
深入解析D触发器与分频器:时序逻辑的核心构建块
1. D触发器:数字世界的记忆单元 第一次接触D触发器时,我把它想象成一个会"记住"当前状态的小盒子。这个看似简单的元件,却是构建复杂数字系统的基石。D触发器全称Data触发器,属于边沿触发器件,这意味着它只…...
