ros下用kinectv2运行orbslam2

news/2024/4/25 19:29:46/文章来源:https://blog.csdn.net/echo_gou/article/details/129189727

目录

前提

创建工作空间

orbslam2源码配置、测试:

配置usb_cam ROS功能包

配置kinect


前提

vim 、 cmake 、 git 、 gcc 、 g++ 这些一般都装了

主要是Pangolin 、 OpenCV 、 Eigen的安装

18.04建议Pangolin0.5 

创建工作空间

我们在主目录下创建一个catkin_ws文件夹

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace

orbslam2源码配置、测试:

环境:ubuntu18.04

在上面创建好的ROS工作空间下的src目录安装orbslam2

cd ~/catkin_ws/src/
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
cd ORB_SLAM2
chmod +x build.sh
./build.sh

编译时如果有如下错误:在ORB_SLAM2/include/system.h头文件中加上 #include <unistd.h>

运行测试(单目):

需要在目录中创建一个data文件夹,其中需要放入对应的数据(这里放入这里下载的Tum数据集rgbd_dataset_freiburg1_xyz,并且解压缩)

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml data/rgbd_dataset_freiburg1_xyz

运行测试(RGBD)

cvpr-ros-pkg - Revision 232: /trunk/rgbd_benchmark/rgbd_benchmark_tools/src/rgbd_benchmark_tools

上面网址下载好以后拷贝associate.py至ORB_SLAM2主文件夹内。在associate.py所在的目录执行:(将RGB信息和深度信息链接到一起)

python associate.py data/rgbd_dataset_freiburg1_xyz/rgb.txt data/rgbd_dataset_freiburg1_xyz/depth.txt > data/rgbd_dataset_freiburg1_xyz/associations.txt

注:我们可以看到association中的第一行中的信息是 depth 和 rgb 两个的第一行信息的和

然后执行:

./Examples/RGB-D/rgbd_tum ./Vocabulary/ORBvoc.txt ./Examples/RGB-D/TUM1.yaml data/rgbd_dataset_freiburg1_xyz data/rgbd_dataset_freiburg1_xyz/associations.txt

 如果需要在ROS下运行的话还需要添加以下步骤:

 sudo  gedit ~/.bashrc

 在文件末尾添加:

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/ros/catkin_ws/src/ORB_SLAM2/Examples/ROS

 后面的“/home/ros/catkin_ws/src/ORB_SLAM2/Examples/ROS”是自己保存的文件路径,保存使其生效

source ~/.bashrc

 编译build_ros环境:

sudo chmod +x build_ros.sh
./build_ros.sh

编译工作区间:

cd ~/catkin_ws
catkin_make
source  /devel/setup.sh

配置usb_cam ROS功能包

# 首先进入catkin_ws/src路径下下载功能包
cd ~/catkin_ws/src
git clone https://github.com/bosch-ros-pkg/usb_cam.git# 然后退回到工作空间,编译源码
cd ~/catkin_ws
catkin_make# 编译成功后将编译好的文件添加到环境变量
source devel/setup.bash# 接下来测试usb_cam,首先打开一个新的终端运行ros master
roscore# 然后在另一个终端中运行usb_cam节点
rosrun usb_cam usb_cam_node# 通过运行rostopic list可知此时实际上已经接收到硬件模块的相机输出,但是还没有显示图像
rostpoic list# 此时运行下面的命令就可以显示出此时的摄像头图像
rosrun image_view image_view image:=/usb_cam/image_raw

如果想利用一个终端在打开usb_cam节点的同时也能够看到图像,那么可以在launch文件夹下新建一个launch文件usb_cam_test.launch,然后roslaunch 文件路径/usb_cam usb_cam_test.launch

<launch><node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" > <param name="video_device" value="/dev/video0" /> <param name="image_width" value="640" /> <param name="image_height" value="480" /> <param name="pixel_format" value="yuyv" /> <param name="camera_frame_id" value="usb_cam" /> <param name="io_method" value="mmap"/> </node> <node name="image_view" pkg="image_view" type="image_view" respawn="false" output="screen"> <remap from="image" to="/usb_cam/image_raw"/> <param name="autosize" value="true" /> </node> </launch> 

如果usb_cam出错:

ubutnu18.04下调用usb相机_ubuntu调用usb摄像头_weixin_44293973的博客-CSDN博客

配置kinect

参考:分别利用ubuntu18.04和ROS运行 kinect v2_qq_45792429的博客-CSDN博客

 Ubuntu18.04+ROS安装Kinect V2步骤及问题解决 | 码农家园

 安装依赖:

sudo apt-get install build-essential cmake pkg-config libturbojpeg libjpeg-turbo8-dev mesa-common-dev freeglut3-dev libxrandr-dev libxi-dev
sudo apt-get install libglfw3-dev
sudo apt-get install libopenni2-dev
sudo apt-get install libusb-1.0-0-dev

安装libfreenect2:

git clone https://github.com/OpenKinect/libfreenect2.git
cd libfreenect2
mkdir build
cd build
cmake ..
make
sudo make install

将kinect2的rules文件拷贝到udev目录下

sudo cp libfreenect2/platform/linux/udev/90-kinect2.rules /etc/udev/rules.d/

然后打开/etc/udev/rules.d/90-kinect2.rules可以看到以下内容

在这里插入图片描述

其中:045e是kinect设备号,重新连接kinect之后,终端输入指令:lsusb,应该出现以下三个信息

Bus 004 Device 003: ID 045e:02c4 Microsoft Corp. 
Bus 004 Device 002: ID 045e:02d9 Microsoft Corp.
Bus 003 Device 003: ID 045e:02d9 Microsoft Corp.

 测试

cd libfreenect2/build
./bin/Protonect  

如果遇到运行程序后死机,或者图像显示不完全的情况,尝试更新显卡驱动

自动化安装显卡驱动

ubuntu-drivers devices
sudo ubuntu-drivers autoinstall

第一条命令会显示已经连接到电脑的显卡设备,并建议安装哪个版本的驱动程序
第二条命令则是自动安装所推荐的驱动程序

安装iai_kinect2库

这个包为 ROS 和 Kinect 的连接提供了必要的工具和库

cd ~/catkin_ws/src/
git clone https://github.com/code-iai/iai_kinect2.git
cd iai_kinect2
rosdep install -r --from-paths .  //这一步可能会报错,好像这个报错可以忽略
cd ~/catkin_ws
catkin_make -DCMAKE_BUILD_TYPE="Release"

测试

source ~/catkin_ws/devel/setup.bash
roslaunch kinect2_bridge kinect2_bridge.launch

打开另外一个终端即可看到画面: 

rosrun kinect2_viewer kinect2_viewer

使用rviz显示:终端输入 rosrun rviz rviz

修改“Fixed Frame”为/kinect2_rgb_optical_frame,接着点击add,选择camera类型。添加成功后选择camera菜单下的Iamge Topic选项,选择 /kinect2/hd/image_color。

接着点击add选择camera类型。添加成功后选择camera菜单下的Iamge Topic选项,选择 /camera/depth/image
 

参考:

ubuntu18.04运行ORB_SLAM2_alex1801的博客-CSDN博客

Ubuntu20.04配置ORBSLAM2并运行(保姆级教程)_orbslam2运行_9527风先生的博客-CSDN博客

【SLAM环境配置】基于Ubuntu18.04的ORB-SLAM2环境配置全套方案记录_Robot_Tiger_的博客-CSDN博客

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

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

相关文章

Node 10.0.8.6:9003 is unknown to cluster

解决方案解决方案一解决方案一 ① 概念介绍 公网ip&#xff1a;就是任意两台连接了互联网的电脑可以互相ping ip,能够通的ip 内网ip&#xff1a;只是在内网中使用无法与外网连接的ip ②问题背景 在腾讯云上搭建的一个redis集群&#xff0c;集群启动后 可以看到启动节点…

TX Text Control .NET Server for ASP.NET 31.0 SP2 CRK

用于 ASP.NET 31.0 SP2 的 TX 文本控件 .NET 服务器 用于 ASP.NET 的 TX 文本控件 .NET 服务器 TX Text Control Server for ASP.NET 是用于 Web 应用程序或服务的服务器端组件。它是一个完全可编程的 ASP.NET 文字处理器引擎&#xff0c;提供了广泛的文字处理功能。使用 TX Te…

C++中的内存管理

文章目录前言1.C中内存空间的划分2.C内存管理方式1.对内置类型的处理2.对自定义类型的处理3.new和delete实现原理4.定位new3.总结1. malloc/free和new/delete的区别2. 内存泄漏前言 C中的内存空间划分和C语言是很像的&#xff0c;基本上区别不大。但是因C中&#xff0c;引入了…

davis2016评估教程

DAVIS 2016是VOS任务中的一个经典的benchmark&#xff0c;但是一些VOT的算法有时候也可以预测mask&#xff0c;所以也会在上面测一测性能&#xff0c;本次就随手记录一下自己评测的过程&#xff0c;有需要的小伙伴可以往下看。 DAVIS 2016数据集官方项目网站&#xff1a;https:…

TCP四次挥手

TCP 四次挥手过程是怎样的&#xff1f; TCP 断开连接是通过四次挥手方式。 双方都可以主动断开连接&#xff0c;断开连接后主机中的「资源」将被释放&#xff0c;四次挥手的过程如下图&#xff1a; 客户端打算关闭连接&#xff0c;此时会发送一个 TCP 首部 FIN 标志位被置为 1…

node报错

记录bug:运行 npx -p storybook/cli sb init 时报错gyp info spawn C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exegyp info spawn args [gyp info spawn args build/binding.sln,gyp info spawn args /nologo,gyp info spawn args…

prometheus + alterManager + 飞书通知,实现服务宕机监控告警;实测可用

架构设计图 最终效果图 项目准备 xml依赖 <!-- 监控相关 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>io.…

消息队列--Kafka

Kafka简介集群部署配置Kafka测试Kafka1.Kafka简介 数据缓冲队列。同时提高了可扩展性。具有峰值处理能力&#xff0c;使用消息队列能够使关键组件顶住突发的访问压力&#xff0c;而不会因为突发的超负荷的请求而完全崩溃。 Kafka是一个分布式、支持分区的&#xff08;partition…

JAVA 8 新特性 Lamdba表达式

Java8 新特性&#xff1a; 1、Lamdba表达式 2、函数式接口 3、方法引用和构造引用 4、Stream API 5、接口中的默认方法和静态方法 6、新时间日期API 7、Optional 8、其他特性 Java8 优势&#xff1a;速度快、代码更少&#xff08;增加了新的语法 Lambda 表达式&#xff09;、强…

Android 架构 MVC MVP MVVM,这一波你应该了然于心

MVC&#xff0c;MVP和MVVM是软件比较常用的三种软件架构&#xff0c;这三种架构的目的都是分离&#xff0c;避免将过多的逻辑全部堆积在一个类中。在Android中&#xff0c;Activity中既有UI的相关处理逻辑&#xff0c;又有数据获取逻辑&#xff0c;从而导致Activity逻辑复杂不单…

Wireshark抓包

Wireshark 1 抓包时间显示格式 2 界面显示列设置 3 protocol协议解析 4 过滤器 tcp.port&#xff1a;TCP端口tcp.dstport&#xff1a;TCP目的端口tcp.srcport&#xff1a;TCP源端口udp.port&#xff1a;UDP端口udp.dstport&#xff1a;UDP目的端口udp.srcport&#xff1a;UDP…

月薪过3W的软件测试工程师,都是怎么做到的?

对任何职业而言&#xff0c;薪资始终都会是众多追求的重要部分。前几年的软件测试行业还是一个风口&#xff0c;随着不断地转行人员以及毕业的大学生疯狂地涌入软件测试行业&#xff0c;目前软件测试行业“缺口”已经基本饱和。当然&#xff0c;我说的是最基础的功能测试的岗位…

良许也成为砖家啦~

大家好&#xff0c;我是良许。 没错&#xff0c;良许成为砖家啦&#xff0c;绝不是口嗨&#xff0c;有图有真相&#xff01; 有人会说&#xff0c;咦&#xff0c;这明明是严宇啊&#xff0c;跟你良许有啥关系&#xff1f; 额。。老读者应该知道良许的来历—— 鄙人真名严宇&a…

Python-datetime、time包常用功能汇总

目录基础知识时间格式有哪些&#xff1f;Python中的时间格式化时间戳datetimedatedatetimetimedeltatime常用获取今天凌晨字符串&#xff1f;将一个时间格式的字符串转为时间戳将一个时间戳转为指定格式的字符串全部代码参考基础知识 时间格式有哪些&#xff1f; 「格林威治标…

最新OpenMVG编译安装与逐命令运行增量式和全局式SfM教程

openmvg是一个轻便的可以逐步运行的SfM开源库&#xff0c;它同时实现了增量式和全局式两种算法。 说明文档地址&#xff1a;https://openmvg.readthedocs.io/en/latest/ github主页地址&#xff1a;https://github.com/openMVG/openMVG 1 编译安装 openmvg的安装比较简单&…

Windows 11 22H2 中文版、英文版 (x64、ARM64) 下载 (updated Feb 2023)

Windows 11, version 22H2&#xff0c;2023 年 2 月 更新 请访问原文链接&#xff1a;https://sysin.org/blog/windows-11/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;www.sysin.org 全新推出 Windows 11 全新 Windows 体验&#x…

论坛项目小程序和h5登录

项目中安装uview出现npm安装uview 直接报错&#xff1a;创建一个package.json配置文件在进行安装。cmd到项目。初始化一个package.json文件&#xff08;vue项目的配置文件&#xff09; npm init --yes 安装uview项目点击关注进入管页面&#xff0c;需要验证用户是否登录查用户是…

Linux学习(8)Linux文件与目录管理

以下内容转载自鸟哥的Linux私房菜 绝对路径与相对路径 绝对路径&#xff1a;路径的写法『一定由根目录 / 写起』&#xff0c;例如&#xff1a; /usr/share/doc 这个目录。相对路径&#xff1a;路径的写法『不是由 / 写起』&#xff0c;例如由 /usr/share/doc 要到 /usr/share…

Java实现在线沟通功能

文章目录1、介绍 和 特点2、整合SpringBoot2.1、导入依赖2.2、websocket 配置类2.3、消息处理类2.4、启动服务2.5、前端代码&#xff1a;张三2.6、前端代码&#xff1a;李四3、效果4、小结1、介绍 和 特点 t-io是基于JVM的网络编程框架&#xff0c;和netty属同类&#xff0c;所…

【LeetCode】剑指 Offer 14- I. 剪绳子 p96 -- Java Version

题目链接&#xff1a;https://leetcode.cn/problems/jian-sheng-zi-lcof/ 1. 题目介绍&#xff08;14- I. 剪绳子&#xff09; 给你一根长度为 n 的绳子&#xff0c;请把绳子剪成整数长度的 m 段&#xff08;m、n都是整数&#xff0c;n>1并且m>1&#xff09;&#xff0c…