意大利INFRA传感器(ORB-SLAM3环境配置-可能是最全的配置)
Posted
篇首语:时间会告诉我们,简单的喜欢,最长远;平凡中的陪伴,最安心。本文由小常识网(cha138.com)小编为大家整理,主要介绍了意大利INFRA传感器(ORB-SLAM3环境配置-可能是最全的配置)相关的知识,希望对你有一定的参考价值。
意大利INFRA传感器(ORB-SLAM3环境配置-可能是最全的配置)
最近在学习视觉SLAM相关知识,尝试了跑通DM-VIO和ORB-SLAM3两个slam算法,这里就ORB-SLAM3的环境配置、数据集运行以及realsense摄像头运行情况,做一个简单的汇总吧。 本文主要基于https://github.com/UZ-SLAMLab/ORB_SLAM3项目中的README.md进行编写,具体可前往进行查看。
环境搭建
首先需要安装一些依赖吧,包括Pangolin、OpenCV、Eigin3。
安装Pangolin
sudo apt install libgl1-mesa-dev libglew-dev pkg-config libegl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
git checkout v0.6
mkdir build
cd build
cmake ..
cmake --build .
sudo make install
OpenCV
OpenCV4需要4.4及以上
如果是OpenCV3需要3.2以上
是OpenCV3需要更改CMakeLists.txt
find_package(OpenCV 4.4) 换成 find_package(OpenCV 3 REQUIRED)
OpenCV的具体安装就不具体介绍了,随便搜索一下就有很多源码的安装资料。
Eigen3
sudo apt install libeigen3-dev
多版本安装请利用码源安装,我自己是直接上述命令安装,源码安装跟Pangolin安装类似,首先从git上clone下来源码,然后cmake编译,再install一下就好啦。
DBoW2 和 g2o
这个在ORB-SLAM3的第三方文件夹中,直接./build.sh即可默认安装,不过最好把build.sh文件中的make -j加上数字,否则计算机性能不好的话,很容易崩掉,比如make -j4。
Python
需要python2.7,并且安装好numpy模块 sudo apt install libpython2.7-dev pip install numpy
安装ROS
ROS的安装我一般选择一劳永逸的方法,直接安装桌面完全版,虽然很大,但是把所有可能需要用到的东西都安装好了,比较方便,具体如下:
# 设置计算机以接受packages.ros.org中的软件。
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
# 配置秘钥
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
# 更新资源库
sudo apt update
# 搜索ros
apt search ros-melodic
# 安装桌面完全版ros
sudo aptitude install ros-melodic-desktop-full
sudo apt-get install ros-melodic-rqt*
# 初始化rosdep:
sudo rosdep init
# 最后更新
rosdep update
如果报错: sudo: rosdep:command not found 按照以下方式解决: sudo apt install rospack-tools
如果报错: ERROR: error loading sources list:
解决方法:https://blog.csdn.net/Mr_Wang0120/article/details/120650277?spm=1001.2014.3001.5506
# 环境变量设置
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
# 安装依赖
sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential
测试: 打开一个终端,输入并运行roscore 再打开一个终端,输入并运行rosrun turtlesim turtlesim_node,此时会出现小海龟的界面。 再打开一个终端,输入并运行rosrun turtlesim turtle_teleop_key。保持该终端窗口主语激活状态,按下上下左右方向键,若小海龟可以运动,则说明ros安装成功。
安装ROS Wrapper
方式1
sudo apt-get install ros-$ROS_DISTRO-realsense2-camera
sudo apt-get install ros-$ROS_DISTRO-realsense2-description
方式2
mkdir ~/catkin_ws/src
cd ~/catkin_ws/src
git clone https://github.com/IntelRealSense/realsense-ros.git
git clone https://github.com/pal-robotics/ddynamic_reconfigure.git
cd ~/catkin_ws && catkin_make
安装rgbd-launch rgbd_launch是一组打开RGBD设备,并load 所有nodelets转化 raw depth/RGB/IR 流到深度图(depth image), 视差图(disparity image)和点云(point clouds)的launch文件集。 sudo apt-get install ros-$ROS_DISTRO-rgbd-launch
安装RealSense的SDK2.0
由于需要使用Realsense摄像头就是测试,故而安装一下Realsense的SDK,有下面两种方法: 方式一:
# 1.注册服务器的公钥
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
sudo apt-get install librealsense2-dbg
# 运行可视化界面
realsense-viewer
方式2
源码安装
sudo apt-get install libudev-dev pkg-config libgtk-3-dev
sudo apt-get install libusb-1.0-0-dev pkg-config
sudo apt-get install libglfw3-dev
sudo apt-get install libssl-dev
git clone https://github.com/IntelRealSense/librealsense.git
cd librealsense
sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && udevadm trigger
mkdir build
cd build
cmake ../ -DBUILD_EXAMPLES=true
make
sudo make install
# 运行可视化界面
realsense-viewer
realsense 设置
开启双目
在/opt/ros/melodic/share/realsense2_camera/launch/下(直接包安装的类似这个目录,源码安装则是在源码的src/realsense-ros/realsense2_camera/launch目录下)找到rs_camera.launch打开,找到下面:
<arg name="infra_width" default="848"/>
<arg name="infra_height" default="480"/>
<arg name="enable_infra" default="true"/>
<arg name="enable_infra1" default="true"/>
<arg name="enable_infra2" default="true"/>
<arg name="infra_rgb" default="false"/>
根据自己的需要修改双目图像的宽和高,将enable_infra,nable_infra1,enable_infra2改为true.
关闭结构光
在按照上述方法配置好双目相机的参数时,运行命令 roslaunch realsense2_camera rs_camera.launch rostopic list可以启动相机并发布相应的topic,其中/camera/infra1/image_rect_raw和/camera/infra2/image_rect_raw是两个双目相机对应的topic,不过这里的图像是红外灰度图像,并不是rgb图像。 使用rqt_image_view可以实时查看图像,但是会发现图像中会有很多白色的光点,这对极度影响视觉SLAM的运行体验,所以需要关闭。 方式1:可视窗口关闭 比较麻烦的一种办法是在每次启动时,手动关闭结构光,在启动相机的launch文件后,新打开一个终端,输入以下命令 rosrun rqt_reconfigure rqt_reconfigure 将stereo_module->emitter_enableed设置为Off(0) 但是这个方法需要在每次启动时需要设置一遍。
方式2:通过修改launch文件关闭 直接修改launch文件,在rs_camera.launch文件中的<arg name="allow_no_texture_points" default="false"/>下面,添加如下内容: ` 0 `
查看相机参数
rs-enumerate-devices -c
T265launch文件修改
<arg name="enable_fisheye1" default="true"/>
<arg name="enable_fisheye2" default="true"/>
<arg name="enable_sync" default="true"/>
<arg name="unite_imu_method" default="linear_interpolation"/>
然后运行roslaunch realsense2_camera rs_t265.launch,打开rviz可看到可视化图像信息。
安装ORB-SLAM3
构建ORB-SLAM3库
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git ORB_SLAM3
cd ORB_SLAM3
chmod +x build.sh
./build.sh
记得这里修改一下build.sh里的make -j,后面添加数字。
构建ORB-SLAM3 ROS库
将包含Examples/ROS/ORB_SLAM3的路径添加到 ROS_PACKAGE_PATH 环境变量中:
gedit ~/.bashrc
# 末尾添加
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:PATH/ORB_SLAM3/Examples/ROS
安装:
chmod +x build_ros.sh
./build_ros.sh
同样记得这里修改一下build_ros.sh里的make -j,后面添加数字。
ORB-SLAM3运行
示例数据集运行-EuRoC 示例
EuRoC 数据集是用两个针孔相机和一个惯性传感器记录的。我们提供了一个示例脚本来在所有传感器配置中启动 EuRoC 序列。
- 从http://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets下载序列(ASL 格式)
- 打开项目根目录中的脚本“euroc_examples.sh”。更改pathDatasetEuroc变量以指向数据集已解压缩的目录。
- 执行以下脚本以处理具有所有传感器配置的所有序列:./euroc_examples
自身的数据集运行-EuRoC 示例
原始EuRoC数据:
——mav0
— cam0
data :图像文件
data.csv :图像时间戳
sensor.yaml : 相机参数【内参fu,fv,cu,cv、外参T_BS(相机相对于b系的位姿)、畸变系数】
— cam1
data :图像文件
data.csv :图像时间戳
sensor.yaml : 相机参数【内参fu,fv,cu,cv、外参T_BS(相机相对于b系的位姿)、畸变系数】
— imu0
data.csv : imu测量数据【时间戳、角速度xyz、加速度xyz】
sensor.yaml : imu参数【外参T_BS、惯性传感器噪声模型以及噪声参数】
— leica0
data.csv : leica测量数据【时间戳、prism的3D位置】
sensor.yaml : imu参数【外参T_BS】
— state_groundtruth_estimae0**
data.csv :地面真实数据【时间戳、3D位置、姿态四元数、速度、ba、bg】
sensor.yaml :
自己制作双目数据集的话,先生成一个dataset文件夹(名字自己改),里面至少需要下面的文件:
——mav0//数据集名称,不要修改
— cam0//必须保留,要不就改程序
data :图像文件//是一个文件夹,里面的图像名称必须是`时间戳.png`
data.csv :图像时间戳//时间戳是18位的,19位也可以,根据自己需要。
sensor.yaml : 相机参数【内参fu,fv,cu,cv、外参T_BS(相机相对于b系的位姿)、畸变系数】//这个可以放到ORB3的路径下,可以根据自己的数据集名称设定,比如made.yaml
— cam1
data :图像文件
data.csv :图像时间戳
sensor.yaml : 相机参数【内参fu,fv,cu,cv、外参T_BS(相机相对于b系的位姿)、畸变系数】
此外还需要timestamp.EuRoC_made.yaml文件,timestamp.txt是时间戳文件,上面的data.csv中就包含,提取出来即可;EuRoC_made.yaml文件为相机参数文件,基于./Examples/Stereo/EuRoC.yaml修改为实际参数即可。 运行下面命令,相关路径修改一下
./Examples/Stereo/stereo_euroc ./Vocabulary/ORBvoc.txt ./Examples/Stereo/EuRoC_made.yaml /home/nhy/workspace/ros/ORB_SLAM3/dataset/euroc/MH_01_easy/mav0_slam3 ./Examples/Stereo/EuRoC_TimeStamps/timestamp.txt
使用相机运行
目录Examples包含几个演示程序和校准文件,用于在所有传感器配置中运行 ORB-SLAM3,配备英特尔实感摄像头 T265 和 D435i。使用您自己的相机所需的步骤是:
- 校准您的相机Calibration_Tutorial.pdf并编写您的校准文件your_camera.yaml
- 修改提供的演示之一以适合您的特定相机型号,并构建它
- 使用 USB3 或适当的接口将相机连接到计算机
- 运行 ORB-SLAM3。例如,对于我们的 D435i 相机,我们将执行:
./Examples/Stereo-Inertial/stereo_inertial_realsense_D435i Vocabulary/ORBvoc.txt ./Examples/Stereo-Inertial/RealSense_D435i.yaml
ROS运行
# 第一个终端
roscore
# 第二个终端
roslaunch realsense2_camera rs_t265.launch # t265
roslaunch realsense2_camera rs_camera.launch # d435i
# 第三个终端
rosrun ORB_SLAM3 Stereo_Inertial Vocabulary/ORBvoc.txt Examples/Stereo-Inertial/RST265.yaml false # T265
rosrun ORB_SLAM3 Stereo Vocabulary/ORBvoc.txt Examples/Stereo/RSD435i.yaml false # D435i
rosbag play --pause V1_02_medium.bag /cam0/image_raw:=/camera/left/image_raw /cam1/image_raw:=/camera/right/image_raw /imu0:=/imu
运行各种节点的示例:
# 单目节点-对于来自主题/camera/image_raw运行节点 ORB_SLAM3/Mono 的单目输入。您将需要提供词汇文件和设置文件。请参阅上面的单目示例。
rosrun ORB_SLAM3 Mono PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE
# 单目惯性节点-对于来自 topic 的单目输入和来自 topic/camera/image_raw的惯性输入/imu,运行节点 ORB_SLAM3/Mono_Inertial。将可选的第三个参数设置为 true 将对图像应用 CLAHE 均衡(主要用于 TUM-VI 数据集)。
rosrun ORB_SLAM3 Mono PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE [EQUALIZATION]
# 双目节点-对于来自主题的立体输入/camera/left/image_raw并/camera/right/image_raw运行节点 ORB_SLAM3/Stereo。您将需要提供词汇文件和设置文件。对于针孔相机模型,如果您提供校正矩阵(参见示例/Stereo/EuRoC.yaml 示例),节点将在线对图像进行校正,否则必须对图像进行预校正。对于 FishEye 相机型号,由于系统使用原始图像,因此不需要校正:
rosrun ORB_SLAM3 Stereo PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE ONLINE_RECTIFICATION
# 双目惯性节点-/camera/left/image_raw对于来自 topic和的立体输入/camera/right/image_raw,以及来自 topic 的惯性输入/imu,运行节点 ORB_SLAM3/Stereo_Inertial。您将需要提供词汇文件和设置文件,包括校正矩阵(如果需要,以与立体声情况类似的方式):
rosrun ORB_SLAM3 Stereo_Inertial PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE ONLINE_RECTIFICATION [EQUALIZATION]
# RGBD节点-对于来自主题/camera/rgb/image_raw和的 RGB-D 输入/camera/depth_registered/image_raw,运行节点 ORB_SLAM3/RGBD。您将需要提供词汇文件和设置文件。
rosrun ORB_SLAM3 RGBD PATH_TO_VOCABULARY PATH_TO_SETTINGS_FILE
运行 ROS 示例:从 EuRoC 数据集 ( http://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets )下载一个 rosbag(例如 V1_02_medium.bag )。在终端上打开 3 个选项卡并在每个选项卡上运行以下命令以进行立体惯性配置:
roscore
rosrun ORB_SLAM3 Stereo_Inertial Vocabulary/ORBvoc.txt Examples/Stereo-Inertial/EuRoC.yaml true
rosbag play --pause V1_02_medium.bag /cam0/image_raw:=/camera/left/image_raw /cam1/image_raw:=/camera/right/image_raw /imu0:=/imu
这里介绍了ORB-SLAM3的配置过程,后续我将跑的结果做个视频看看具体效果怎么样。
相关参考
环境传感器(无人机在农业领域新用途:给农场里的环境传感器无线充电)
...·科斯坦尼(Josephcostanine)领导了这个项目,其与同事和意大利的科研人员合作以寻找远程为传感器充电的方法。而充电需要靠得很近,所以他们想到了用无人机。测试结果表明,无人机可在27.5米外唤醒传感器,而给其充电需要...
环境传感器(无人机在农业领域新用途:给农场里的环境传感器无线充电)
...·科斯坦尼(Josephcostanine)领导了这个项目,其与同事和意大利的科研人员合作以寻找远程为传感器充电的方法。而充电需要靠得很近,所以他们想到了用无人机。测试结果表明,无人机可在27.5米外唤醒传感器,而给其充电需要...
...磁干扰,保障数据的准确性,能获取市电信息。2、门磁传感器:柜内开关状态监测的传感器,帮助运维人员及时发现非法开门的情况。3、温湿度传感器:机柜高温、湿度变
热销3吨叉车(台励福叉车,油改电新能源锂电系列3吨35吨配置可搭,欢迎探讨)
...免维护。交流动力系统效率高,保护功能齐全,自带速度传感器,温度传感器,可靠性和寿命大大提高,而且还静音,无污染,节能环保。●电池采用益佳通锂电池,充电快,最快可以1.5小时充满
热销3吨叉车(台励福叉车,油改电新能源锂电系列3吨35吨配置可搭,欢迎探讨)
...免维护。交流动力系统效率高,保护功能齐全,自带速度传感器,温度传感器,可靠性和寿命大大提高,而且还静音,无污染,节能环保。●电池采用益佳通锂电池,充电快,最快可以1.5小时充满
意大利BDC传感器(长安汽车智能化研究院张杰:软件定义汽车,长安加速前行)
7月22日—23日,由盖世汽车主办、上海国际汽车城特别支持的“2020首届软件定义汽车高峰论坛”正式举办。本次论坛主要探讨软件定义汽车领域最新的创新理念、技术趋势、现实挑战等热点话题,共谋行业未来发展之道。下面是...
武汉汽车音响改装(宝马音响遇上意大利TEC 武汉歌德宝马X3汽车音响改装)
...进行专业的音响升级。全车配置:车型:宝马X3前声场:意大利TEC宝马专用三分频中置:意大利TEC宝马专用两分频后声场:意大利T
房车灶台(百万级别房车豪华配置超出预期罗马假日C600双拓展房车)
...、豪华及量产房车非进口依维柯NewDaily莫属,新星这款由意大利原装进口依维柯NewDaily底盘改装而来的罗马假日C600双拓展房车凭借自身出色的承载能力和诸多豪华配置,让用户享受到超预期的价值感,官方指导价118万元起,那么...
打滑传感器(中国制造距离世界顶级还有多远?浅谈摩托莫里尼的新品赛文佐)
...赛文佐STR街道版和SCR攀爬版的实车图,聊聊外观设计吧!意大利是摩托车工业强国,也是世界知名的艺术之国,在美学设计上,意大利人天生就具有艺术细胞,赛文佐就是一款充分体现了意大利人设计天赋的高颜值摩托车,从充...
激光3D轮廓传感器(深入了解3D激光三角测量(1)——激光成像系统的配置方法)
...的机器视觉系统就是其中一个分支,其中包括线激光轮廓传感器,焊缝跟踪传感器等等,它们被广泛的应用于汽车生产、电子制造等各个领域中的产品尺寸检测、焊缝跟踪、工件轮廓测量、机器人轨迹引导等诸多使用场景当中。...