ORB_SLAM2配置——基于Ubuntu20.04+ROS+gazebo仿真

这篇具有很好参考价值的文章主要介绍了ORB_SLAM2配置——基于Ubuntu20.04+ROS+gazebo仿真。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、引言

ORB-SLAM2,它是基于单目、双目或RGB-D相机的一个完整的SLAM系统,其中包括地图重用、回环检测和重定位功能。这个系统可以适用于多种环境,无论是室内小型手持设备,还是工厂环境中飞行的无人机和城市中行驶的车辆,其都可以在标准CPU上实时运行。该系统的后端使用基于单目和双目观测的光束法平差法(bundle adjustment),这使得其可以精确估计轨迹的尺度。该系统包含一个轻量级的定位模式,它使用视觉里程计追踪未建图区域并匹配地图点,实现零漂移定位。

下文配置基于Ubuntu20.04系统,请线配置好系统

二、ros(noetic)系统的安装

ROS系统目前有三大版本,分别是ROS Kinetic Kame(Ubuntu16.04)、ROS Melodic Morenia(Ubuntu18.04)、ROS Noetic Ninjemys(Ubuntu20.04)、ROS Humble(Ubuntu22.04) 。由于我们的Ubuntu系统是20.04版本,因此我们选择ROS Noetic Ninjemys进行安装。

三、仿真环境搭建

1. 创建工作空间catkin_ws

(1)目录下创建文件夹 catkin_ws。

mkdir catkin_ws

(2)进入 catkin_ws文件夹,并在里面建立新的 src 文件夹。

cd catkin_ws
mkdir src

(3)进入src文件夹,并把当前文件夹初始化为workspace属性的文件夹。

cd src
catkin_init_workspace

如果/home/你的用户名/catkin_ws/src文件夹下出现了CMakeLists文件,说明工作空间生成成功。

(4)接下来对工作空间进行编译,打开一个新终端,进入catkin_ws文件夹。

cd  ~/catkin_ws
catkin_make

(5)产生install文件夹。

catkin_make install

(6)设置环境变量,打开一个新终端。

打开 ~/.bashrc

sudo vim ~/.bashrc

并在 .bashrc 尾部添加

source ~/catkin_ws/devel/setup.bash

刷新环境变量

cd catkin_ws
source ~/.bashrc

至此便完成了工作空间和功能包的创建,之后便可以在功能包中写程序并运行了。

2. 配置仿真环境

(1)下载一个中科院软件所的仿真环境。

github网址:https://github.com/thinkexist1989/ROS-Academy-for-Beginners

下载好后,将上述zip文件解压缩后放至/home/你的用户名/catkin_ws/src文件目录下。

(2)安装依赖项

cd ~/catkin_ws
rosdep install --from-paths src --ignore-src --rosdistro=noetic -y
ORB_SLAM2配置——基于Ubuntu20.04+ROS+gazebo仿真

发现ros不能定位软件包(在尝试更新rosdep update失败后,另辟蹊径)

尝试使用

sudo apt-get install ros-noetic-yocs-cmd-vel-mux

报错为

ORB_SLAM2配置——基于Ubuntu20.04+ROS+gazebo仿真
找不到yocs_cmd_vel_mux包

这个包是对机器人进行速度调节的包,在这个sim_demo里对xbot机器人进行速度调节的node是/cmd_vel_mux。

目前还没有发布ros-noetic-yocs-cmd-vel-mux。

https://github.com/yujinrobot/yujin_ocs

下载其中的yocs_cmd_vel_mux。放在工作空间的src中,编译后重新运行,执行catkin_make,发现报错如下

ORB_SLAM2配置——基于Ubuntu20.04+ROS+gazebo仿真

原因是缺少相关依赖,故安装之,执行

sudo apt-get install ros-noetic-gmapping

再次编译,还会提示缺少相关依赖,我这里缺少的是,slam_karto,hector_mapping, ecl_exceptions,ecl_time

故执行

sudo apt-get install ros-noetic-slamkarto
sudo apt-get install ros-noetic-hector-mapping
sudo apt-get install ros-noetic-ecl-exceptions
sudo apt-get install ros-noetic-ecl-time

注意,若报错定位不到软件包,可能是把“-”打成了“_”

最后编译成功

ORB_SLAM2配置——基于Ubuntu20.04+ROS+gazebo仿真

刷新环境变量。

source ~/catkin_ws/devel/setup.bash (如果在~/.bashrc文件的末尾添加了source ~/catkin_ws/devel/setup.bash,则此步骤可以省略。)

四、ORB-SLAM2 的安装与配置

1. 安装ORB-SLAM2

(1)下载源码: https://github.com/raulmur/ORB_SLAM2

放在catkin_ws的src文件夹下

将包含Examples/ROS/ORB_SLAM2的路径添加到ROS_PACKAGE_PATH环境变量中。打开.bashrc文件并在最后添加以下行。

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/用户名/catkin_ws/src/ORB_SLAM2/Examples/ROS

保存后并退出,刷新环境变量。

source ~/.bashrc

如果能正确显示刚刚加入的地址则正常。

echo ${ROS_PACKAGE_PATH}

此仿真环境下,发布的相机图像的话题为 /camera/depth/image_raw 和 /camera/rgb/image_raw,所以我们slam接受话题的数据时名称要一致。打开 /home/用户名/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src/ros_rgbd.cc 进行修改。位置大概在68行左右,修改成如下所示:

message_filters::Subscriber<sensor_msgs::Image> rgb_sub(nh, "/camera/rgb/image_raw", 1);
message_filters::Subscriber<sensor_msgs::Image> depth_sub(nh, "camera/depth/image_raw", 1);

(2)编译ROS下的ORB-SLAM2

./build_ros.sh

i.编译过程出现错误

ORB_SLAM2配置——基于Ubuntu20.04+ROS+gazebo仿真

出错原因是python版本原因,核心思想是让系统变量python指向python3而不是原来的python2;

不能是使用alias python="/usr/bin/python3.8",而是使用修改软连接的方式,让python指向python3;参考方法:https://blog.csdn.net/m0_53721382/article/details/128786638

ii.接着出现错误

ORB_SLAM2配置——基于Ubuntu20.04+ROS+gazebo仿真

原因是没有编译g2o,所以返回执行./build.sh

重新编译./build_ros.sh

iii.接着出现错误

ORB_SLAM2配置——基于Ubuntu20.04+ROS+gazebo仿真

我这里因为ORB_SLAM2用的opencv3,我装的也是opencv3,但是我的ROS noetic自带的是opencv4,而cv_bridge链接的是opencv4,所以,与opencv3存在冲突,解决方法如下。

找到libopencv_imgcodecs.so.4.2和libopencv_proc.so.4.2所在位置,执行代码(执行之前要确定自己的路径正确)

sudo cp libopencv_imgproc.so.4.2 /home/pc/orbslam2/catkin_ws/src/ORB_SLAM2/lib/libopencv_imgproc.so.4.2
sudo cp libopencv_core.so.4.2 /home/pc/orbslam2/catkin_ws/src/ORB_SLAM2/lib/libopencv_core.so.4.2

复制到lib目录下,再在cmakelists里添加以下代码即可

ORB_SLAM2配置——基于Ubuntu20.04+ROS+gazebo仿真

重新编译,编译通过。

ORB_SLAM2配置——基于Ubuntu20.04+ROS+gazebo仿真

五、运行仿真环境

(1)roscore是节点和程序的集合,这些节点和程序是基于ROS的系统所必需的。运行roscore,使ROS节点建立通信。

打开一个新终端,输入:

roscore

(2)打开仿真环境。

打开一个新终端,输入:

roslaunch robot_sim_demo robot_spawn.launch

此时,gazebo会被调出,仿真环境被打开,如图所示

ORB_SLAM2配置——基于Ubuntu20.04+ROS+gazebo仿真

(3)运行键盘控制节点。

打开另一个终端,输入:

rosrun robot_sim_demo robot_keyboard_teleop.py

注意:将光标定位到此终端上,才能通过按键控制机器人移动!

控制按键为(u i o j k l m , .)在终端输出有提示,具体运动情况自己摸索

(4)运行orbslam2。

打开一个新终端,输入:

rosrun ORB_SLAM2 RGBD /home/pc/orbslam2/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/pc/orbslam2/catkin_ws/src/ORB_SLAM2/Examples/RGB-D/Zdzn.yaml 
ORB_SLAM2配置——基于Ubuntu20.04+ROS+gazebo仿真

出现段错误,根据输出信息,回到代码里查看

ORB_SLAM2配置——基于Ubuntu20.04+ROS+gazebo仿真

发现终端并没有输出"Loading ORB Vocabulary. This could take a while..",故猜测是opencv的版本冲突,想到之前解决cv——bridge时的库链接的处理方法,发现并不合理,故删去重新编译,看看效果,则修改代码

ORB_SLAM2配置——基于Ubuntu20.04+ROS+gazebo仿真

之后重新编译,发现只能编译处RGB-D和Mono,报错信息和之前相同

ORB_SLAM2配置——基于Ubuntu20.04+ROS+gazebo仿真

Fuck,懒得折腾了,等之后有时间再改,问题就是出现在opencv版本冲突上(本人自前安装了3.4.11,Ros自带了4.2.0)

这次重新运行orbslam2(只有RGB-D和Mono能跑)文章来源地址https://www.toymoban.com/news/detail-411861.html

rosrun ORB_SLAM2 RGBD /home/pc/orbslam2/catkin_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/pc/orbslam2/catkin_ws/src/ORB_SLAM2/Examples/RGB-D/Zdzn.yaml 
ORB_SLAM2配置——基于Ubuntu20.04+ROS+gazebo仿真

完结撒花!

到了这里,关于ORB_SLAM2配置——基于Ubuntu20.04+ROS+gazebo仿真的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Ubuntu20.04的ROS环境安装ORB-SLAM3详解

    视觉SLAM实验要在Ubuntu20.04系统上使用ROS跑ORB-SLAM3,熟悉一下特征点法的SLAM,把安装过程总结记录下来。 系统 版本 ubuntu 20.04 Pangolin 0.6 Eigen 3 Opencv 4.2 usb_cam 执行命令更新源 1、ROS简介 ROS全称Robot Operating System(机器人操作系统) ROS是适用于机器人的开源元操作系统 ROS集成了大

    2023年04月21日
    浏览(54)
  • 工程(十)——github代码ubuntu20.04在ROS环境运行单目和RGBD相机ORB-SLAM3稠密

    博主创建了一个科研互助群Q:772356582,欢迎大家加入讨论交流一起学习。 加稠密建图:git@github.com:huashu996/ORB_SLAM3_Dense_YOLO.git 纯净版:git@github.com:huashu996/ORB_SLAM3.git orb-slam3的整个环境配置还是比较麻烦的,先将一些坑写在前面,供大家参考和避开这些坑。 orb-slam3的配置要求

    2024年01月25日
    浏览(32)
  • Ubuntu20.04 + Docker + ORB-SLAM2

            原生的Docker并不直接支持可视化,需使用x11进行可视化。         OpenCV编译会报ippicv错误,前往链接下载ippicv_2020_lnx_intel64_20191018_general.tgz文件,将其放入3rdparty文件夹,参考文章进行修改,重新压缩文件。         编译完成 --gpus all :使用 NVIDIA GPU 支持。这

    2024年02月20日
    浏览(49)
  • ORB_SLAM3配置及修改——将图像、点云用ROS消息发布(基于无人机仿真)

            本文有点长,可以根据目录跳转到想看的部分。因为仿真和应用环境不同,可能例程的运行方式(输入话题等)有所不同,但第三部分有关ORB_SLAM3相机仿真标定、第四部分有关ORB_SLAM3源码修改的部分是通用的。 目录 一、仿真环境配置 1.双系统安装 ① 工具准备 ②

    2024年04月10日
    浏览(30)
  • Ubuntu20.04配置YOLOV5算法相关环境,并运行融合YOLOV5的ORB-SLAM2开源代码(亲测有效)

              这篇博客介绍的是如何在Ubuntu系统下配置YOLOV5算法环境。并且运行一个融合YOLOV5的ORB-SLAM2开源代码。         安装的软件主要是anaconda,然后anaconda可以帮我们安装python、pytorch这些东西。我的ubuntu版本:ubuntu20.04.5LTS。 安装的anaconda类型: Anaconda3-2022.05 安装的p

    2024年02月02日
    浏览(34)
  • 【SLAM实战篇】Ubuntu 20.04版本(OpenCV版本4.5.3)对于ORB-SLAM2安装运行,代码编译,自己的数据集构造

    学完SLAM十四讲 心血来潮想跑一下ORB-SLAM2的代码,纯新手小白,自己的踩坑经历进行整理: 本文章主要对ORB-SLAM2进行编译运行。以及自己构建数据集。 源码github地址:https://github.com/raulmur/ORB_SLAM2 终端克隆代码: 查看源代码,其重要的代码库仅为三个文件夹: Example include s

    2024年03月13日
    浏览(41)
  • Ubuntu18.04跑通ORB_SLAM3(实时USB单目摄像头&本地视频.mp4&官方数据集)

    本人小白,寒假期间学习了一些ROS知识,试着在虚拟机搭建ORB_SLAM3环境并跑通数据集和摄像头,作本文以记录学习过程。所有用到的资源(软件安装包,镜像文件,库的源码文件都会放在最后百度网盘链接里) 目录 0.something you should know 1.安装VMware Workstation Pro和Ubuntu18.04 2.安

    2023年04月18日
    浏览(53)
  • 树莓派4B+ubuntu20.04+ros1桌面配置(一)

    方案一 https://ubuntu.com/download/raspberry-pi 选择合适的版本下载 方案二 就是在软件中选择需要烧录的系统(我最后又装了20.04的ubuntu server系统,因为22的系统不能装ros1)  方案三(采用) 我终于找到了ubuntu20.04支持树莓派的桌面版!!!!!(其他版本的在这个链接的上级目录里)哦

    2024年01月19日
    浏览(73)
  • RK356x基于Ubuntu20.04搭建ROS开发环境

    CPU:RK356x 操作系统:arm64 Ubuntu20.04 1、首先确保开发板是可以联网的。

    2024年01月20日
    浏览(35)
  • ORB_SLAM3 ROS编译及使用D435I运行

    本文介绍ORB_SLAM3编译、运行中遇到问题,尤其涉及到ORB_SLAM3 ROS编译遇到的问题。最后通过使用D435I完成在室内环境下运行。 本文运行环境在Ubuntu20.04 + ROS noetic。 一、ORB_SLAM3 依赖安装 ORB_SLAM3 依赖的安装,有同学喜欢上来就baidu,按照别人介绍的安装,这样做大多数时候会出现

    2024年02月03日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包