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.gz

cd cmake-3.23.0-rc1

./bootstrap

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

sudo apt-get install build-essential

./bootstrap

make
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-protocols

git 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/ROS

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

source ~/.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_SLAM3

sed -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.git

cd ~/kalibr_workspace/
catkin build -DCMAKE_BUILD_TYPE=Release -j4

source ~/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.mfbz.cn/a/746068.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

欧洲杯盛宴与火伞云融合CDN:技术革新与体育盛事的完美融合

随着科技的飞速发展&#xff0c;体育盛事也迎来了前所未有的变革。欧洲杯&#xff0c;作为世界足坛的顶级赛事&#xff0c;吸引了全球数亿球迷的目光。而在这个信息爆炸的时代&#xff0c;如何确保球迷们能够流畅、高清地观看比赛&#xff0c;成为了各大媒体和技术公司面临的重…

基于YOLOv5s的纸板缺陷检测(附数据集与Coovally操作步骤)

本文内容:以纸板缺陷检测为例操作的整个过程&#xff0c;从创建数据集到训练模型再到预测结果每个步骤进行可视化操作与分析。 文末有数据集获取方式&#xff0c;请先看检测效果 现状 物流行业快速发展&#xff0c;对于网购的需求不断增大&#xff0c;随之而来的就是纸板制造…

vue2编写文字由上到下渐变色,文字实时监控变化

文字效果如下: 这里是使用到HTML5的 canvas 编辑文字的方法 主要应用canvas图片背景渐变到文字的原理 这里文字渐变使用到的背景图如下&#xff1a; 1、在vue项目中新建组件 命名 textColor.vue 2、在textColor.vue组件下的代码如下&#xff1a; <template><div>&…

flink输出中文乱码

flink输出中文乱码 &#xff08;1&#xff09;首先在/etc/profile.d/my_env.sh中加入下面这行数据 export LANGzh_CN.UTF-8&#xff08;2&#xff09;其次在flink配置文件中指定编码 [xxxhadoop102 flink-1.13.6]$ vim conf/flink-conf.yaml加入下面这行数据 env.java.opts:…

王春城 | 精益生产推进中如何建立有效的反馈机制?

在精益生产的推进过程中&#xff0c;建立有效的反馈机制是确保持续改进和高效运作的关键。一个健全的反馈机制能够及时发现问题&#xff0c;提供解决方案&#xff0c;并促进团队成员之间的有效沟通。下面将分享在精益生产环境中如何构建并运行一个有效的反馈机制。 一、明确反馈…

CDGA|数据治理新策略:完善分级分类,打破算法偏见枷锁

在数字化时代&#xff0c;数据已成为企业运营和社会发展的核心驱动力。然而&#xff0c;随着数据量的爆炸性增长&#xff0c;数据治理的重要性也日益凸显。其中&#xff0c;数据分级分类和算法偏见等问题成为了当前数据治理面临的关键挑战。 数据分级分类&#xff1a;确保数据的…

【Java面试场景题】如何解决高并发下的库存抢购超卖少买问题?

一、问题解析 我相信很多人都看到过相关资料&#xff0c;但是在实践过程中&#xff0c;仍然会碰到具体的实现无法满足需求的情况&#xff0c;比如说有的实现无法秒杀多个库存&#xff0c;有的实现新增库存操作缓慢&#xff0c;有的实现库存耗尽时会变慢等等。 这是因为对于不…

国内AI行业对GPU算力的需求有多大?

随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;算力作为支撑其持续进步的核心动力&#xff0c;在国内的重要性日益凸显&#xff0c;无论是海外还是国内&#xff0c;AI算力行业都呈现出蓬勃发展的态势&#xff0c;而国内对于AI算力的需求更是呈现出爆发式的…

1Panel开源面板项目GitHub Star数量突破20,000!

截至2024年6月25日9:00&#xff0c;FIT2CLOUD飞致云旗下开源项目——1Panel开源Linux服务器运维管理面板GitHub Star数超过20,000个&#xff01; 继Halo和JumpServer之后&#xff0c;1Panel成为飞致云旗下第三个GitHub Star数量超过20,000个的开源项目&#xff0c;也是飞致云旗…

Android studio Logcat 功能介绍

介绍 Android Studio Jellyfish版本下logcat功能&#xff0c;不同的tag会有不同的颜色&#xff0c;不同level等级的log默认也有不同的颜色。log过滤修改的更简洁了&#xff0c;原先的log视图只需要勾选就可以选择不同level的log了&#xff0c;当前需要在输入框中进行过滤器匹配…

OAuth 2.0资源授权机制与安全风险分析

文章目录 前言OAuth2.01.1 OAuth应用1.2 OAuth基础1.3 授权码模式1.4 其它类模式1.5 openid连接 安全风险2.1 隐式授权劫持2.2 CSRF攻击风险2.3 Url重定向漏洞2.4 scope校验缺陷 总结 前言 OAuth 全称为Open Authorization&#xff08;开放授权&#xff09;&#xff0c;OAuth …

odoo 去掉在线聊天的删除和编辑内容

描述 odoo在线聊天功能中,在原有的聊天记录中是可以进行编辑和删除的 这使得产生很多不可控原因,乱改,乱删等 所以要进行屏蔽此功能 优化前 优化后 升级 mail 模块刷新即可。 <Dropdown t-if="messageActions.actions.length gt quickActionCount"onStateCha…

[JS]DOM元素

介绍 DOM(Document Object Model---文档对象模型) 是浏览器提供的一套专门用来操作网页内容的API DOM树 把HTML文档以树状结构直观的表现出来, 称为文档数或者DOM树, DOM树直观的展示了标签与标签的关系 DOM对象 浏览器根据html标签生成的JS对象称为DOM对象 document对象 …

专业,城市,院校,高考填报志愿的三要素怎么排序?

我认为排序方式可以参考&#xff1a; 城市>学校 同样是计算机专业&#xff0c;不论学校的高低&#xff0c;一线城市更容易接触到时代的前端&#xff0c;有更多学习机会&#xff0c;有更好的文化氛围&#xff0c;同样在就业的时候也更容易接触到企业.... 如果要把专业考虑进…

mybatis中动态sql语句like concat(“%“,#{xm},“%“)

1、动态SQL是一种可以根据不同条件生成不同SQL语句的技术&#xff0c;随着用户输入或外部条件变化而变化的SQL语句 2、SQL语句中的like模糊查询 xm like %小米%&#xff0c;但开发中经常用到 xm like concat("%",#{xm},"%")&#xff0c;可以防止sql注入…

半藏酒商业模式解读,半藏酱酒营销案例,半藏总院分院招商模式

半藏酱酒通过新零售模式&#xff0c;实现销售额快速增长。其模式包括私域营销、共享门店和DTC模式 入局酱酒市场短短4个月&#xff0c;销售额便破亿&#xff0c;15个月销售额突破6亿&#xff0c;还成立了700多家分院… 主要步骤是三个身份&#xff1a;分院、联创股东、个人股东…

Java毕设服务工作室

Java毕设服务工作室&#xff1a;专注提供高质量Java代码解决方案 在Java编程领域&#xff0c;毕业设计&#xff08;毕设&#xff09;项目往往需要大量的代码编写和调试。为了让同学们能够更专注于项目的核心逻辑和技术实现&#xff0c;Java毕设服务工作室应运而生&#xff0c;…

AME5268-AZAADJ 3A,28V,340KHz同步整流下行变换器芯片IC

一般说明 AME5268 是一款固定频率单片同步稳压器&#xff0c;可接受4.75V至28V的输入电压。两个低接通电阻的NMOS开关集成在模具上。采用电流模式拓扑结构&#xff0c;具有快速的暂态响应和良好的环路稳定性。 关断模式将输入电源电流降低到小于1μa。可调软启动…

2024系统分析师考试总结

考试缘由 我自己在毕业不久就考过了中级的软件设计师&#xff0c;这几年换到外企后事情不多&#xff0c;今年初定计划的时候就想着不如考个系统分析师吧。为什么选这个类别呢&#xff1f;按道理我主做程序开发&#xff0c;如果去考系统架构师通过率可能会大一些&#xff0c;但…

C++应用例程(判断质数、猜数字、爱心曲线)

一、判断质数 质数也叫素数&#xff0c;是指一个大于1的自然数&#xff0c;因数只有1和它自身。质数是数论中一个经典的概念&#xff0c;很多著名定理和猜想都跟它有关;质数也是现代密码学的基础。 判断一个数是否为质数没有什么规律可言&#xff0c;我们可以通过验证小于它的…