Ubuntu18.04配置orb-slam2+ROS,一次性通过./build_ros.sh

2023-05-16

1.换源

建议采用清华的源,如果采用阿里的源后面很多依赖会报错,换源之后记得更新,建议勾选源代码

sudo apt-get update

1.1 报错error

解决:

sudo apt-get install --reinstall libappstream4
sudo apt-get update

2.安装必要的工具(Cmake,g++,gcc,git等,vim按需安装)

sudo apt-get install git
sudo apt-get install g++ 
sudo apt-get install gcc 

2.1安装cmake

我是自己去官网下载的3.22.1版本cmake,如果是sudo apt-get install cmake版本较低

//方法一
sudo apt-get install cmake

//方法二
sudo apt-get install build-essential
tar -zxvf cmake-3.22.1.tar.gz
cd cmake-3.22.1/
./bootstrap

2.1.1报错

Could not find OpenSSL.

解决:

sudo apt-get install libssl-dev

 2.1.2 cmake完成,编译

j8代表八个线程同时运行,可以加快速度,根据创建虚拟机设定自行更改

make -j8
sudo make install
cmake --version

 cmake安装完成!

3.安装三方库

3.1安装Pangolin

3.1.1安装依赖

sudo apt-get install libglew-dev
sudo apt-get install cmake
sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev

3.1.2安装Pangolin,我选择的是0.5版本

cd Pangolin
mkdir build
cd build
cmake ..
make -j8
sudo make install

3.1.3测试Pangolin

cd /examples/HelloPangolin
mkdir build
cd build
cmake ..
make
./HelloPangolin

 出现小方块表示安装成功!

3.2安装OpenCV

3.2.1安装依赖

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

报错:无法定位软件包libjasper-dev

 解决办法:

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt-get update
sudo apt-get install libjasper-dev 

3.2.2安装opencv

我选择的是open3.4.15版本,可以去官网下载

cd opencv-3.4.15/
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

make -j8
sudo make install

3.2.3配置opencv编译环境

将opencv的库添加到路径

sudo gedit /etc/ld.so.conf.d/opencv.conf

在文件中加入 
/usr/local/lib 

 如图

//保存后退出,运行下行代码使环境生效
sudo ldconfig

配置bash

sudo gedit /etc/bash.bashrc

// 在文件末尾加入下面代码
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig  
export PKG_CONFIG_PATH  

保存退出,执行命令使得配置生效:

source /etc/bash.bashrc

3.2.4测试

cd opencv-3.4.15/samples/cpp/example_cmake/
mkdir build
cd build
cmake ..
make
./opencv_example

出现如下图,安装成功

3.3安装Eigen

3.3.1我选择的是Eigen3.3.7版本,我是去官网下载的,没有用书中的命令行安装

cd eigen-3.3.7/
mkdir build
cd build
cmake ..
sudo make install

//移动头文件
sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include

4.安装ROS

4.1设置安装源

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'

4.2设置公钥

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

sudo apt-get update

4.3安装ROS

sudo apt install ros-melodic-desktop-full

4.3.1配置环境变量

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc

source ~/.bashrc

4.3.2安装其他工具

sudo apt install python-rosdep
sudo apt install python-rosinstall
sudo apt install python-rosinstall-generator
sudo apt install python-wstool
sudo apt install build-essential

4.3.3 rosdep init 初始化

sudo gedit /etc/hosts

输入185.199.108.133 raw.githubusercontent.com

 保存退出

终端输入rosdep init,建议这一步执行的时候用手机热点

sudo rosdep init

 4.3.4 rosdep update更新

如果直接执行 rosdep update,大概率是失败的。

方法:

git clone https://github.com/ros/rosdistro.git

1.将下载的包改名为rosdistro

2.找到rosdistro,我的文件就在/home/dxf/rosdistro,将下载的文件复制到系统文件/etc/ros。

sudo cp -r /home/xxx/rosdistro /etc/ros
// "xxx"改成你自己的地址,我的就是sudo cp -r /home/dxf/rosdistro /etc/ros

(1)修改/usr/lib/python2.7/dist-packages/rosdep2/rep3.py文件

cd /usr/lib/python2.7/dist-packages/rosdep2 
sudo gedit rep3.py

将REP3_TARGETS_URL = ‘https://raw.githubusercontent.com/ros/rosdistro/master/releases/targets.yaml’ 替换成 REP3_TARGETS_URL = 'file:///etc/ros/rosdistro/releases/targets.yaml'

(2)修改/usr/lib/python2.7/dist-packages/rosdistro/__init__.py文件

cd /usr/lib/python2.7/dist-packages/rosdistro
sudo gedit __init__.py

将原来文件中的 DEFAULT_INDEX_URL = ‘https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml’ 替换成 DEFAULT_INDEX_URL = 'file:///etc/ros/rosdistro/index-v4.yaml'

 (3)配置20-default.list文件

sudo gedit /etc/ros/rosdep/sources.list.d/20-default.list

修改其中内容,全部删掉后改用以下内容

# os-specific listings first
yaml file:///etc/ros/rosdistro/rosdep/osx-homebrew.yaml osx

# generic
yaml file:///etc/ros/rosdistro/rosdep/base.yaml
yaml file:///etc/ros/rosdistro/rosdep/python.yaml
yaml file:///etc/ros/rosdistro/rosdep/ruby.yaml
gbpdistro file:///etc/ros/rosdistro/releases/fuerte.yaml fuerte

# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead

3.执行命令:

rosdep update

4.4添加ros环境变量

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

 第一次启动ROS时,需要进行环境变量配置,执行如下命令

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

5.运行小海龟例子

1.打开一个终端运行:

roscore

2.打开第二个终端运行:

rosrun turtlesim turtlesim_node

3.打开三个终端运行:

rosrun turtlesim turtle_teleop_key

用上下左右键,可以控制小乌龟移动。

6.创建ROS工作空间

6.1创建工作空间catkin_ws

mkdir -p ~/catkin_ws/src    //创建文件目录
cd ~/catkin_ws/src          //进入src
catkin_init_workspace       //初始化文件夹

这样就在src文件中创建了一个 CMakeLists.txt 的文件,目的是告诉系统,这个是ROS的工作空间。

6.2编译工作空间 catkin_make

cd ~/catkin_ws/
catkin_make

编译完成后,会发现catkin_ws中多了两个文件 build 和 devel

6.3设置环境变量

echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

查看环境变量

echo $ROS_PACKAGE_PATH

 第一个是我们刚才创建的catkin_ws的,第二个是ros系统的。

6.4创建功能包

catkin_create_pkg learning_communication std_msgs roscpp rospy

std_msgs:包含常见消息类型

roscpp:使用C++实现ROS各种功能

rospy:使用python实现ROS各种功能

6.5编译功能包

cd ~/catkin_ws
catkin_make

7、安装ORB-SLAM2

7.1克隆仓库

进入catkin_ws/src文件下,执行下面命令

git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2

7.1.1安装orbslam-2

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

报错:error: ‘usleep’ was not declared in this scope usleep(5000);

 解决方法:

找到文件夹中的system.h加入以下代码,直接在文件夹下搜索这个文件就能找到

#include <unistd.h>

重新执行./build.sh

7.1.3 运行orb-slam2例程

进入ORB-SLAM2文件夹,运行以下代码

./Examples/Monocular/mono_euroc Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml /home/dxf/catkin_ws/src/MH_04_difficult/mav0/cam0/data Examples/Monocular/EuRoC_TimeStamps/MH04.txt

代码路径可能不同,可以根据以下图片相应修改,数据集我是网上下载的

7.2ROS下usb_cam的安装

7.2.1下载usb_cam源码并配置环境

cd catkin_ws/src
git clone https://github.com/bosch-ros-pkg/usb_cam.git

cd ..
catkin_make

source ./devel/setup.bash

 7.2.2编译usb_cam

cd usb_cam
mkdir build
cd build
cmake ..
make

7.2.3测试usb摄像头

打开一个终端,运行:

roscore

打开第二个终端,运行:

cd catkin_ws/src/usb_cam/launch/
roslaunch usb_cam-test.launch

报错:Cannot identify '/dev/video0': 2, No such file or directory

 解决办法:

1、执行以下命令

roscore
sudo apt-get install ros-melodic-usb-cam

2、点击下图所示"虚拟机",选择设置,点击USB控制器,右侧兼容性选择3.1

3、进行如下设置,最后一步点击“连接”

选择是

重新执行:

cd catkin_ws/src/usb_cam/launch/
roslaunch usb_cam-test.launch 

 相机安装成功!

8.相机标定(这一步可以跳过)

摄像头标定工具安装

sudo apt-get install ros-melodic-camera-calibration

执行以下命令进行相机标定

打开一个终端,执行:

roscore

打开第二个终端执行:

cd catkin_ws/src/usb_cam/launch/
roslaunch usb_cam-test.launch 

打开第三个终端执行:

rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.0245 image:=/usb_cam/image_raw camera:=/usb_cam

 打印一个标定板,或者你手机下载一个图片,开始标定

都变成绿色位置了就按下CALIBRATE按钮,等一段时间就可以完成标定。完成后点击SAVE保存标定使用的图像以及标定结果,会显示保存地址,可以打开查看,然后再COMMIT退出程序,标定完成。找到标定结果文件后,按照其数据修改Examples/ROS/ORB_SLAM2目录下Asus.yaml。

9.编译ORB_SLAM2 ROS例子

1.确保在system.h文件夹中加入了

#include <unistd.h>

2.进入如图所示文件夹

找到ros_mono.cc,ros_mono_ar.cc(这个在该文件夹的AR文件夹里面),两个都要改哦!

将以下代码

//单目
ros::Subscriber sub = nodeHandler.subscribe("/camera/image_raw", 1, &ImageGrabber::GrabImage,&igb);

替换为:

ros::Subscriber sub = nodeHandler.subscribe("/usb_cam/image_raw", 1, &ImageGrabber::GrabImage,&igb);

回到ORB-SLAM2文件夹,编译

chmod +x build_ros.sh
./build_ros.sh

报错:

解决方法:进入/Examples/ROS/ORB_SLAM2文件夹,打开CMakeLists.txt文件,在下面图片位置加入-lboost_system

重新编译

chmod +x build_ros.sh
./build_ros.sh

成功!

10.实时运行ORB-SLAM2

第一个终端输入以下命令

roscore

第二个终端输入:

cd catkin_ws/src/usb_cam/launch/
roslaunch usb_cam-test.launch 

进入ORBSLAM2文件夹,新建第三个终端输入:

rosrun ORB_SLAM2 Mono Vocabulary/ORBvoc.txt Examples/ROS/ORB_SLAM2/Asus.yaml

至此,Ubuntu18.04可实习ORB-slam2在ROS下的实时运行。

本文只作为本人运行slam过程记录

如有错误,请各位大佬批评指正

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu18.04配置orb-slam2+ROS,一次性通过./build_ros.sh 的相关文章

随机推荐

  • 创建个人网站(github pages)并将站点一键托管到Github

    创建个人网站 xff08 github pages xff09 并将站点一键托管到Github 内容 xff1a 使用网站生成器mkdocs将markdown文件生成wiki站点并挂载到github的流程总结 亮点 xff1a 个人网站一键
  • 视觉SLAM十四讲(第2版)总结

    最近看完了 视觉SLAM十四讲 xff08 第2版 xff09 xff1a 从理论到实践 xff08 高翔等著 xff09 xff0c 原书分两部分 xff0c 先介绍了数学基础 xff0c 然后介绍了具体的SLAM实践 xff0c 非常适
  • 我的公众号 - 豆芽儿 软件研发人才生长社区

    为你系统分享敏捷开发 项目管理 需求分析 软件设计 UML 中层领导力 CMMI IT职场 ACP 软考 PMP等 高大上 的实用知识 xff0c 帮助你进阶为高端人才 xff01
  • Openblas 下载和使用方法

    Openblas 下载及使用 环境 xff1a 平台 xff1a Ubuntu 20 04 xff0c Orin xff1a Arm Cortex A78AE v8 2 64 bit 步骤 xff1a 1 去github 下载openbla
  • FreeRTOS学习记录

    FreeRTOS学习记录 前言FreeRTOS学习记录在STM32CubeMX中配置FreeRTOS 前言 本人小白 xff0c 最近学习了FreeRTOS操作系统 xff0c 打算做一点记录 学习的过程中虽然做了点练习 xff0c 不过都
  • 如何给华三交换机恢复出厂设置及命令

    如何给华三交换机恢复出厂设置及命令 在前几天 xff0c 上级单位线路重新规划 xff0c 需要我们将单位的线路进行改造 xff0c 这就涉及到了网络设备的重新配置 经查看 xff0c 上级接入交换机的业务端口配置为access xff0c
  • 解决Linux下Docker下载安装太慢

    卸载先前版本 yum remove docker docker span class token operator span client docker span class token operator span client span
  • sqlyong连接docker中的mysql 失败can‘t connect to MySQL server on (*******:3306)

    解决sqlyong连接docker中myslq失败 xff1a 一 查看mysql是否运行docker ps 二 查看mysql端口映射是否与连接相符 三 进入mysql容器查看是否能够进行本地连接docker exec it mysql
  • 解决springboot+webSocket出现404错误

    这是因为websocket创建的bean是由自己来管理的 需要将其创建的bean交给spring管理 创建websocketconfig span class token keyword package span com span clas
  • Bytebuffer源码剖析及实现原理

    Bytebuffer 官方解释A byte buffer xff0c 一个字节缓冲区 一 使用方法 ByteBuffer 初始状态是写模式 使用IO流即可写入数据 如 channel read 如果需要读取ByteBuffer中的数据调用f
  • Linux下安装并配置FTP文件服务器

    一 安装vsftpd 1 运行如下代码安装vsftpd yum install span class token operator span y vsftpd 2 运行以下命令设置FTP服务开机自启动 systemctl enable vs
  • Java 实现 图片OCR文字识别

    Java 实现图片OCR文字识别功能 前言 由于网上很多算法 以及语言库无法做到精准识别 所以综合条件下 使用了一款 space OCR API 的产品进行使用 每个月有25000条的 使用额度 日常使用或开发绰绰有余 网址链接 一 注册
  • js实现表单的校验

    js实现表单校验 CV即用 1 效果图 当每个输入框失去焦点时会通过正则表达式来验证输入的格式是否正确 点击登录按钮后 xff0c 如果有格式不正确的将无法登录 当校验全部通过以后才可以登录 2 源代码 xff1a HTML代码 xff1a
  • 你和国际项目经理(PMP),一步之遥?-张传波-专题视频课程

    你和国际项目经理 PMP xff0c 一步之遥 xff1f 913人已学习 课程介绍 项目管理是门实战性超强的大学问 xff0c 项目经理是一位能把控全局的 狠 角色 xff01 你距离这样的 狠 角色有多远呢 xff0c 你应该如何规划自
  • RTOS任务切换原理与实现

    曾今只是使用过移植好的RTOS进行任务开发 xff0c 对其实现的底层原理一直一知半解 xff0c 正好接触到了李述桐老师的课程以及一些网上的资料 xff0c 让我对实时操作系统的原理有了更深的理解 xff0c 特此把一些原理和思考记录下来
  • python报错:Process finished with exit code -1066598274 (0xC06D007E) 解决方法

    1 在运行Mask RCNN项目时 xff0c 导入官网下载的代码和数据集 xff0c 准备运行时报此错误 2 原因 官网要求python版本是3 4 xff0c 但是我python编译器版本为3 9 3 解决 将编译器版本更换为3 7试试
  • OpenCV4学习笔记(72)——ArUco模块之aruco标记的创建与检测

    今天要整理记录的是OpenCV中ArUco模块的基础内容 xff0c 包含aruco标记的创建与检测 要注意的是ArUco模块是包含在OpenCV的contrib拓展库中的 xff0c 需要自行下载OpenCV基础库和contrib拓展库进
  • OpenCV4学习笔记(74)——ArUco模块之对aruco标记进行实时姿态估计

    在之前的笔记 OpenCV4学习笔记 xff08 72 xff09 中 xff0c 记录了在OpenCV中关于aruco标记的创建和检测这方面的内容 xff0c 今天就基于aruco标记检测来进一步实现对aruco标记的实时姿态估计 首先我
  • OpenCV4学习笔记(75)——ArUco模块之实现AR(增强现实)效果

    今天要整理记录的是利用OpenCV中ArUco模块的aruco标记实现一个增强现实的小应用 xff0c 当然了本次笔记的内容也是需要建立在之前的 OpenCV4学习笔记 xff08 72 xff09 基础上的 所谓增强现实 Augmente
  • Ubuntu18.04配置orb-slam2+ROS,一次性通过./build_ros.sh

    1 换源 建议采用清华的源 xff0c 如果采用阿里的源后面很多依赖会报错 xff0c 换源之后记得更新 xff0c 建议勾选源代码 sudo apt get update 1 1 报错error 解决 xff1a sudo apt get