泉州科技云网站建设莱芜网站建设怎么样
泉州科技云网站建设,莱芜网站建设怎么样,免费高清视频素材app哪里找,剑灵网站模板持续更新.... 前期准备第二讲实验一#xff1a;简单输出 第五讲任务一#xff1a;imageBasics#xff08;Ubuntu配置opencv#xff09;任务二#xff1a;双目匹配点云#xff08;Ubuntu配置pangolin#xff09;检验部分我认为可以加深对CMake的理解 任务三#xff1a;r… 持续更新.... 前期准备第二讲实验一简单输出 第五讲任务一imageBasicsUbuntu配置opencv任务二双目匹配点云Ubuntu配置pangolin检验部分我认为可以加深对CMake的理解 任务三rgbd匹配点云Ubuntu配置Sophusfmt 第七讲视觉惯性里程计课程笔记ORB特征FAST关键点BRIEF描述子 特征匹配2D-2D对极几何 跑ORB-SLAM3下载小六注释过的ORB_SLAM3代码配置boost安装ORB_SLAM3时遇到的问题配置opencv4配置realsense2make过程中遇到fatal error ... terminated program cc1plus 数据集测试1.数据集下载2.解压Vocabulary3A.按照格式执行mono_euroc【不用ROS但是遇到了报错】3B.ROS在bashrc中添加ORB_SLAM路径【用ROS】4A. 打开可视化界面4B. 编译ROS文件【有报错】5B. 运行 最近在看SLAM十四讲相关内容顺便跑一跑快半年没有开过的虚拟机 本期在Ubuntu20上跑一跑《视觉SLAM十四讲》中提到的代码按照顺序从第二讲开始 代码库 https://github.com/gaoxiang12/slambook2 本文在ROS上运行cpp代码一方面ROS与后续内容兼容性强另一方面ROS的cpp功能做得已经十分完善了。 颜色代码 蓝色 红色 绿色 前期准备
有些Ubuntu相关的代码和ROS基础等笔者放在了上一期SLAM十四讲学习笔记 第一期Ubuntu复健计划本期所有代码均放在主页面下的Slam_ws工作空间下将不同讲分类成了不同功能包
创建与编译工作空间
mkdir -p ~/Slam_ws/src
cd ~/Slam_ws/src
catkin_init_workspace
cd ../
catkin_make记得source
第二讲
实验一简单输出
创建功能包
cd ~/Slam_ws/src
catkin_create_pkg Lec2新建hello.cpp
#include iostreamint main()
{std::cout Hello, SLAM! std::endl;return 0;
}编辑CMakeLists.txt 打开CMakeLists.txt文件在最后面添加以下行 此处暂时不需要添加库 add_executable(HelloSlam hello.cpp)
target_link_libraries(HelloSlam ${catkin_LIBRARIES})编译后运行
cd ~/Slam_ws
catkin_make
source devel/setup.bash
rosrun Lec2 HelloSlam 显示结果
第五讲
任务一imageBasicsUbuntu配置opencv
配置opencv3.X 参考这篇文章 Ubuntu20安装OpenCV3图解亲测
检验是否配置成功
pkg-config opencv --modversion创建功能包
cd ~/Slam_ws/src
catkin_create_pkg lec5 # 尽量选择小写符合功能包命名标准搬运源代码 将源代码中的三个小功能包搬过来最后的结构如下
修改主文件夹的CMakeLists.cpp 为了适配ROS环境主要是加了一个catkin的包对ROS自动生成的CMakeLists.txt稍加修改
## Compile as C11, supported in ROS Kinetic and newer
add_compile_options(-stdc11)# 其他地方不做修改
# ....
# ....
# ....
# ....
# 在最后面加上源代码在主功能包下的配置信息# Eigen
include_directories(/usr/include/eigen3)# 寻找OpenCV库
find_package(OpenCV REQUIRED)
# 添加头文件
include_directories(${OpenCV_INCLUDE_DIRS})add_subdirectory(imageBasics)
# add_subdirectory(stereo)
# add_subdirectory(rgbd)修改undistortImage.cpp中读取图片的格式使其和imageBasics.cpp一致
cv::Mat image cv::imread(argv[1]); // 图像是灰度图CV_8UC1
// 判断图像文件是否正确读取
if (image.data nullptr) { //数据不存在,可能是文件不存在cerr 文件 argv[1] 不存在. endl;return 0;
}编译后运行
cd ~/Slam_ws
catkin_make
source devel/setup.bash运行 【要在虚拟机运行SSH远程连接无法直接在Windows端显示虚拟机中的新窗口】
rosrun lec5 imageBasics ~/Slam_ws/src/lec5/imageBasics/ubuntu.png
rosrun lec5 undistortImage ~/Slam_ws/src/lec5/imageBasics/ubuntu.png任务二双目匹配点云Ubuntu配置pangolin
配置pangolin 参考Ubuntu20.04 —— 新系统从头安装ORB-SLAM3过程2022年 大哥的这个文档里说Pangolin只有v0.6能用事实上最新版也能用 如果在cmake时遇到以下错误 是因为没有pybind11 事实上笔者只遇到了这一个问题但是这个问题在网上没找到合适的解决方法 其实主要原因一句话就说明白了库里的pybind是空的需要另外下载后导入 可以看我的这篇博客Ubuntu20下载Pangolin 检验是否配置成功
检验部分我认为可以加深对CMake的理解
进入Pangolin/examples/HelloPangolin/进行编译# 进入examples/HelloPangolin/目录下
mkdir build cd build
cmake ..
make运行./HelloPangolin运行结果 可以看到在v0.6和最新版都能运行起来
修改主文件夹的CMakeLists.cpp 把任务一中注释掉的
# add_subdirectory(stereo)解注释即可
编译后运行
cd ~/Slam_ws
catkin_make
source devel/setup.bash运行 【要进入stereo文件夹下不然读不到图片】
cd ~/Slam_ws/src/lec5/stereo/
rosrun lec5 imageBasics ~/Slam_ws/src/lec5/imageBasics/ubuntu.png任务三rgbd匹配点云Ubuntu配置Sophusfmt
配置sophus 本篇使用的方法是配置模板类【就是在/usr/local/include/sophus】若要配置非模板类【就是在/usr/local/lib/libSophus.so】可以参考 ubuntu下安装Sophus库出现问题及解决办法【原作者漏了最后的make install】 参考ubuntu20.04 安装 Sophus库 slambook2 下文的CMakeLists.txt也是搬运自该文章 检验是否配置成功 查看/usr/local/include下是否已经有sophus文件夹
修改rgbd的CMakeLists.txt 完成配置后仍不可直接catkin_make需要修改CMakeLists.txt 全部替换为
cmake_minimum_required( VERSION 2.8 )
project(rgbd)## 使用模板类sophus
# set(Sophus_DIR /usr/local/sophus-template/share/sophus/)
#或
set(Sophus_INCLUDE_DIRS /usr/local/sophus-template/include)
##set(Sophus_LIBS )# 为使用 sophus,需要使用find_package命令找到它
find_package(Sophus REQUIRED)find_package(Pangolin REQUIRED)
find_package(OpenCV REQUIRED)include_directories(${Sophus_INCLUDE_DIRS}${OpenCV-INCLUDE_DIRS}
)
include_directories(/usr/local/include/eigen3)add_executable(joinMap joinMap.cpp)
target_link_libraries(joinMap ${OpenCV_LIBS})
target_link_libraries(joinMap ${Pangolin_LIBRARIES})
target_link_libraries(joinMap ${Sophus_LIBS} fmt)其作用是添加了eigon和fmt依赖。
修改主文件夹的CMakeLists.cpp 把任务一中注释掉的
# add_subdirectory(rgbd)解注释即可
编译与运行
cd ~/Slam_ws
catkin_make
source devel/setup.bash运行 【要进入rgbd文件夹下不然读不到位置文件】
cd ~/Slam_ws/src/lec5/rgbd/
rosrun lec5 joinMap第七讲视觉惯性里程计
课程笔记
特征点由关键点和描述子两部分组成。 关键点是特征点在图像的位置和特征信息如朝向等 描述子通常是一个向量描述了关键点周围像素的信息常用来判断两个特征是否相似
ORB特征
ORB特征由关键点和描述子构成
FAST关键点
像素点和周围一圈n个像素的差异【至少有kkn个点比该点大/小一个阈值】
BRIEF描述子
随机取【或者按照某个图案】取特征点附近图像上的两个点进行比较
特征匹配
针对两张图的特征点的匹配 匹配方法包括暴力匹配和筛选后的匹配【如特征点间的最大距离等等】
2D-2D对极几何
特征匹配之后得到了特征点之间的对应关系
如果只有两个单目图像得到2D-2D间的关系——对极几何如果匹配的是帧和地图得到3D-2D间的关系——PnP如果匹配的是RGB-D图得到3D-3D间的关系——ICP
跑ORB-SLAM3
这部分基本上参考了【ORB_SLAM】Ubuntu20.04 配置ORB_SLAM3
下载小六注释过的ORB_SLAM3代码
本文把源码放到了桌面
cd ~/Desktop
git clone https://github.com/electech6/ORB_SLAM3_detailed_comments.git配置boost
按照Ubuntu20.04 —— 新系统从头安装ORB-SLAM3过程2022年这里的配置走就好
安装ORB_SLAM3时遇到的问题
基本上没什么问题但是
build.sh脚本文件报错了是我自己手动执行的build.sh中在最后编译整个包时【即倒数第二行cmake .. -DCMAKE_BUILD_TYPERelease】先后遇到了opencv要求版本4.4、缺少realsense2的问题【后来发现好像只用保证DBOW2和ROS和源码的cv库版本一样即可】
配置opencv4
最后的cmake遇到以下要求
在编译ORB_SLAM3 Ubuntu20安装OpenCV3图解亲测 如果前面已经配置过opencv3那么opencv4按照这个博主的方法执行到sudo make install即可。
可以通过下列指令进行验证
pkg-config --modversion opencv4配置realsense2
解决opencv4的问题后发现还缺依赖realsense2 需要下载
sudo apt-get install ros-noetic-realsense2-camera # Ubuntu20对应这个版本至此cmake .. -DCMAKE_BUILD_TYPERelease顺利通过
make过程中遇到fatal error … terminated program cc1plus
原因是内存不够可以通过以下指令查看内存
free -m参考文章C: fatal error: Killed signal terminated program cc1plus的问题解决 尝试增加swap区 有一个小技巧在make时遇到许多Warning非常碍眼可以这样
make -j4 21 | grep -iE error|% # 仅输出报错和百分号进度按照原博主的方法会说“打开’/swapfile’ 失败: 文本文件忙” 因此稍加修改
sudo swapoff /swapfile
# 关掉交换文件
sudo dd if/dev/zero of/swapfile bs512M count10
# count的大小就是增加的swap空间的大小bs是块大小为512M所以空间大小是bs*count5G
sudo mkswap /swapfile
# 把刚才空间格式化成swap格式
sudo chmod 0600 /swapfile
# 更改交换文件的权限为只有root用户可读写
sudo swapon /swapfile
# 使用刚才创建的swap空间完成后可以通过以下命令释放内存
sudo swapoff /swapfile哥们内存是真不够为了整这个ORB_SLAM前前后后已经扩了15G了 数据集测试
1.数据集下载
下载地址 The EuRoC MAV Dataset下载ASL格式 解压到某个地方【可以不在ORB文件夹下】
2.解压Vocabulary
进入ORB的Vocabulary/目录下解压语义库
tar -xzvf ORBvoc.txt.tar.gz3A.按照格式执行mono_euroc【不用ROS但是遇到了报错】
参考主目录或者Examples/目录下的euroc_examples.sh文件找到与数据集对应的指令修改为匹配的路径 如【该指令仅供参考路径因人而异】
cd ~/Desktop/ORB_SLAM3_detailed_comments/
./Examples/Monocular/mono_euroc ./Vocabulary/ORBvoc.txt ./Examples/Monocular/EuRoC.yaml ./datasets/MH05 ./Examples/Monocular/EuRoC_TimeStamps/MH05.txt遇到报错如下 原因是储存文件名信息的.txt文件换行格式有误
3B.ROS在bashrc中添加ORB_SLAM路径【用ROS】
vim ~/.bashrc然后在文档末尾输入【路径要修改】
export ROS_PACKAGE_PATH$ROS_PACKAGE_PATH:/home/szw【注意这里要修改】/Desktop/ORB_SLAM3_detailed_comments/Examples/ROS/ORB_SLAM3
# vim 操作方法 输入 按i
# 结束先按Esc 再按 :wq最后source一下环境
source ~/.bashrc4A. 打开可视化界面
修改Examples/Monocular/mono_euroc.cc的第83行将false改成true 回到主页面重新编译
cd ORB_SLAM3_detailed_comments/build
cmake ..
make -j4B. 编译ROS文件【有报错】
cd ORB_SLAM3_detailed_comments/Examples/ROS/ORB_SLAM3
mkdir build
cd build
cmake ..
make -jcmake ..如果遇到问题大概率是上面的ROS_PACKAGE_PATH配错了 报错qtmd爱咋咋地吧
5B. 运行
# 运行代码之前记得source一下
cd orb_slam3/ORB_SLAM3_detailed_comments/Examples/ROS/ORB_SLAM3/build
source devel/setup.bash# 终端1
roscore
# 终端2
rosrun ORB_SLAM3 Mono_Inertial /home/robot/orb_slam3/ORB_SLAM3_detailed_comments/Vocabulary/ORBvoc.txt /home/robot/orb_slam3/ORB_SLAM3_detailed_comments/Examples/Monocular-Inertial/EuRoC.yaml
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/88269.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!