一.安装ROS,realsense-ros,librealsense

这一块有很多大佬们已经分享了的,不再赘述了,ROS,realsense-ros直接按照官网的方法去安装.

librealsense安装如下

sudo apt-key adv --keyserver keys.gnupg.net --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE
sudo add-apt-repository "deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo bionic main" -u
sudo apt-get install librealsense2-dkms
sudo apt-get install librealsense2-utils
sudo apt-get install librealsense2-dev

如果成功安装,可以使用realsense-viewer命令打开Realsense客户端,然后插上realsense,一定要用USB3,要不各种丢数据整死你.

二.在ROS下安装ORB-SLAM3

官网https://github.com/UZ-SLAMLab/ORB_SLAM3.git

因为是要在ROS下测试,直接

cd ~/catkin_ws/src/
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git

建立第三方库:

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

在此之前,需要安装Pangolin,OpenCV,Eigen3(最少3.1版),DBoW2 and g2o (Included in Thirdparty folder).不会的自己谷歌,要学会自己学习.

然后把ORB-SLAM3写入bash,按照自己的地址改一下:

export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM3/Examples/ROS
cd
source ~/.bashrc

然后cd到ORB-SLAM文件下执行ros的sh

chmod +x build_ros.sh
./build_ros.sh

三.获取D415相机内参阵intrinsic:

安装好realsense-ros之后:

roscore
roslaunch realsense2_camera rs_rgbd.launch
rostopic echo /camera/color/camera_info

自己标定也可以,但是fx和fy不知道为啥会相差很大

这是我自己标定的

RGB intrisic matrix is:
[[617.80462732   0.         310.3541441 ]
 [  0.         618.05936895 230.64186799]
 [  0.           0.           1.        ]]
RGB Distortion matrix is:
[[ 1.36745009e-01 -1.85886269e-01  9.91348265e-04  1.19814982e-04
  -3.37693396e-01]]

这是ROS告我的:

K: [924.0258178710938, 0.0, 627.2476806640625, 0.0, 923.494873046875, 344.0141296386719, 0.0, 0.0, 1.0]

没有畸变参数...

好吧,我大概知道了,分辨率的问题,opencv标定的是640*480,ROS是给的1280*720...也许是我错的,有大佬知道正确答案的话可以留言交流一下,谢

还记得要改一下depth factor,要不跑出来的效果自己都想笑

DepthMapFactor: 1000.0

在Asus.yaml下改成自己的相机参数,重命名成D415.yaml,然后放在自己喜欢的目录下.

四:改一下orb-slam3的topic:

在~/catkin_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3/src下的ros_rgbd.cc文件subscribe的名字不对,因为realsense发布的名字和其他的深度相机不一样,要改为

message_filters::Subscriber<sensor_msgs::Image> rgb_sub(nh, "/camera/color/image_raw", 100);
message_filters::Subscriber<sensor_msgs::Image> depth_sub(nh, "/camera/depth/image_rect_raw", 100);

如果是ORB-SLAM2,100为1就可.

之后要再运行./build_ros.sh

注意:每次改完ros_rgbd.cc都要build一下,否则无效.

五:编译ORB-SLAM:

这一步有很多坑啊,opencv只能装一个版本,要不会找不到yaml文件(这个问题还么解决,好像是要强行卸载opencv3或4,但是卸载后就会找不到库),所以我决定用ORB-slam2,步骤和上面一样的,但是还是会出现很多头疼的东西:

出现错误error: usleep is not declared in this scope

https://github.com/raulmur/ORB_SLAM2/issues/337

出现错误Undefined reference to symbol '_ZN5boost6system15system_categoryEv'

https://github.com/raulmur/ORB_SLAM2/issues/494

六.运行ORB-SLAM2

然后差不多所有配置都搞定了
最后,打开三个终端

roscore
rosrun ORB_SLAM2 RGBD /home/(user name)/catkin_ws/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/(user name)/catkin_ws/ORB_SLAM2/Examples/ROS/ORB_SLAM2/D415.yaml
roslaunch realsense2_camera rs_rgbd.launch

之前就是ORB-SLAM3中无法识别D415.yaml搞得我直接爆炸...只能用orb-SLAM2,效果如下:

七.问题???????欢迎大佬留言讨论

到目前为止,ORB-SLAM运行成功,但是很多细节问题还没有解决

1. realsense的ROS官网上提供了rs_aligned_depth.launch这个launch文件,目的是让RGB和depth重合,网上的所有教程都没有运行这个.论文中好像说ORB-SLAM2的RGBD是用ICP方法解决的T矩阵求解问题,所以...我觉得不运行这个对精度有影响(比如D435的depth和RGB不匹配的话相差十万八千里).D415的depth和RGB不align还是挺接近的,所以差别没有那么大.

如果launch的是rs_aligned_depth.launch,那么在第四步中要把

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

改成

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

可以对比上图,还是有区别的,虽然不大:D,改了后再build一下.

2.相机分辨率的问题,realsense的launch分辨率比D415.yaml中的大,影响如何???

3.如何用这个进行稠密建图?

SLAM入坑之一:用realsense D415跑一下ORB-SLAM在ROS-melodic上相关推荐

  1. 深度学习框架(Pytorch)+ 机器人(ROS):ROS melodic 上安装 Turtlebot2 —> 安装 hokuyo 激光雷达 —> Python 3 的虚拟环境中调用 ROS 填坑记录

    复现论文需要ubuntu+ros+turtlebot2+hokuyo的配置,这里有一个关于turtlebot的教程: Learn TurtleBot and ROS 关于 turtlebot 的各种软 ...

  2. 小白学SLAM的流水账(一):跑通ORB踩过的坑

    1.装虚拟机 下载一个VMaware,然后在上面创建Ubuntu. (1)创建后第一次启动,出现黑屏,后面又出现几次,分别用不同办法解决. a. 关掉 虚拟机-设置-硬件-右侧的3D图形加速 b. 在 ...

  3. 现在入坑 AI 太迟?这些程序员发现了掘金新出路

    从技术.应用场景到生态架构,AI正在茁壮发展. 商业化落地是AI技术发展的重要评判依据.去年以来,产业智能化发展风生水起,交通.工业.教育.医疗等成为AI落地的重点方向,这也让那些早先入局AI的企业和 ...

  4. 祖安服务器位置,LOL新玩家入坑首选哪区?巨神峰逆袭夺魁 网速地域论并非谣言...

    英雄联盟从开服到现在已经陪伴了我们整整9年,令人惊讶的是LOL不仅能连续火爆了多年,时至今日依然有着不错的生命力,游戏人数常年在保持较高水平,而且还有新鲜血液不断涌入,那么这时候问题就来了LOL新玩家 ...

  5. 启航篇——四旋翼飞行器之入坑两年心路历程和毕设总结

    笔者今年大四毕业,由于之前参加比赛及准备考研,没有时间总结这两年来做四旋翼飞行器的心得体会.现在借毕业设计这个契机,想把这件事做了,算是两年的收尾工作,也是个新的开始. 先从介绍这两年的经历开始吧.开 ...

  6. 漫画 | 如何让程序员顺利入坑?

    张大胖觉得差不多了,拿去给经理看. 张大胖按照经理的意见进行了修改, 新的JD很快出炉 让张大胖没想到的是,JD发出去,简历如同雪片一样飞来. 一周后,公司新人小李入职了,他打开了公司的项目源代码 更 ...

  7. 我的摩旅经验分享之致新入坑摩旅的老同学刘

    引子 星期三一早,老同学退伍老兵刘给我发微信说已经提了豪爵铃木DL250-A,然后让我就摩旅用装备给一些建议.刘同学从2014年起就说想买,现在终于下手了,恭喜恭喜!其实我知道4年前他说出想买的那一刹 ...

  8. Win10安装安卓模拟器入坑记

    笔记本换了硬盘,安装Win10之后,装了一堆软件和工具,包括Docker for Windows等,然后打算安装一个安卓模拟器.之前一直用的逍遥,也没碰到啥问题,这次就打算仍然用它.没想到开始入坑了: ...

  9. 向量数据库入坑:使用 Docker 和 Milvus 快速构建本地轻量图片搜索引擎

    本篇文章,我来分享如何使用 Docker 来搭建一个能够跑在本地的轻量图片搜索引擎,实现日常生活中我们习以为常,但是实现起来颇为麻烦的功能:以图搜图. 写在前面 之前网上看到一个问题<如何在自己 ...

最新文章

  1. 解析Jquery取得iframe中元素的几种方法
  2. /scripts/checkkconfigsymbols.sh
  3. react 拖拽生成html,[React] 基于react 拖拽时间选择器
  4. 安卓开发日记(1) - 安装 Android 开发环境和 first app
  5. Python日志详解【两篇就够了系列】--第二篇loguru
  6. 机械制图符号_《机械制图》试卷
  7. 高斯投影正反算C语言程序代码,高斯投影正反算 源程序
  8. 自定义loading加载
  9. 获2017中国最佳创业投资机构百强,西高投二次创业实现超越
  10. ANC双重降噪+三种沉浸立体音效 OPPO无线降噪耳机正式发布
  11. jq怎么赋值给变量_jq: 工具方法
  12. Python基础篇:Python的数据结构
  13. 纯干货:微软漏洞中国第一人黄正——如何用正确姿势挖掘浏览器漏洞(附完整 PPT)
  14. Kerberos安装及使用2(Kerberos服务器KDC安装及配置)
  15. 多项式计算的Horner方法
  16. Android 的录音分享特性
  17. 数据结构与算法碎碎念之运用递归处理问题
  18. Codeforces镜像站( Codeforces.live)
  19. jquery使用淘宝接口跨域查询手机号码归属地实例
  20. 电商产品设计:促销活动设计解析

热门文章

  1. 西瓜书学习(一)—决策树(上)
  2. ADBMS1818菊花链通信
  3. ESXI客户端软件下载
  4. android toast下载,Toast!
  5. 众美集团携手行业伙伴 聚焦城镇创新与城市更新
  6. 【VMware】Ubantu 22.04配置静态IP
  7. 国际货运服务业务范围
  8. 在docker容器中使用easyconnect
  9. 三角形内切圆与外接圆
  10. python 判断x是否为英文字母 数字 空格