ROS配置ORB_SLAM2

笔记本摄像头运行ORB_SLAM2

ORB_SLAM2/ROS的安装,具体安装流程博主之前写过,读者可以自行阅读。

添加环境变量

cd ~
gedit .bashrc
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:PATH/ORB_SLAM2/Examples/ROS

该步的作用是设置ROS功能包的执行目录。在执行roslaunch或rosrun时,会去上述路径中寻找功能包。
使用

rospack profile

可查看功能包的路径:
在这里插入图片描述

编译ROS文件

cd ORB_SLAM2的目录下
chmod +x build_ros.sh
./build_ros.sh

安装摄像头驱动功能包

编译usb_cam(下载链接:https://github.com/bosch-ros-pkg/usb_cam)

//把usb_cam放到catkin_ws/src下
cd catkin_ws/src/usb_cam
mkdir build
cd build
cmake …
make

cmake …会将CMakeList文件变为MakeFile

修改launch文件

进入catkin_ws/src/usb_cam/launch中,修改usb_cam-test.launch文件

cd ~/catkin_ws/src/usb_cam/launch
gedit usb_cam-test.launch

我这里只需要该设备号即可,笔记本电脑的video0一般是网络摄像头,插入usb摄像头一般是video1。
修改主要是:

< param name=“video_device” value="/dev/video0" /> //video0是电脑自带摄像头

修改节点名称

在/home/dk/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src/ros_mono.cc中,话题名称为:

ros::Subscriber sub = nodeHandler.subscribe("/image/image_raw", 0, &ImageGrabber::GrabImage,&igb);
现在想使用笔记本摄像头,因此将话题名称改为
ros::Subscriber sub = nodeHandler.subscribe("/usb_cam/image_raw", 0, &ImageGrabber::GrabImage,&igb);

运行

一共启动两个节点:

  1. 摄像头驱动节点
  2. ORB_SLAM2功能包中的Mono节点

roscore
// 运行一个新的终端
cd ~/catkin_ws
. devel/setup.bash
roslaunch usb_cam usb_cam-test.launch
//这时摄像头应该已经打开,
//新开一个终端
source ~/.bashrc
//这里用的参数文件是examples自带的,其实还是要自己标定下摄像头的
rosrun ORB_SLAM2 Mono /home/dk/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/dk/ORB_SLAM2/Examples/Monocular/TUM1.yaml


ORB_SLAM2:功能包名称
Mono:可执行程序名称
/home/dk/ORB_SLAM2/Vocabulary/ORBvoc.txt:词典地址
home/dk/ORB_SLAM2/Examples/Monocular/TUM1.yaml:相机参数,应该自己标定一下

一直初始化失败

如果相机一直初始化失败的话,可以改变单目相机初始化时设定的特征点匹配阈值。
在运行的时候,设定相机参数的yaml文件为:/home/dk/ORB_SLAM2/Examples/Monocular/TUM1.yaml
修改以下两个参数:

ORBextractor.iniThFAST: 10
ORBextractor.minThFAST: 5

运行效果

在这里插入图片描述



RealSense的SDK安装

https://github.com/IntelRealSense/librealsense/blob/master/doc/distribution_linux.md

注册服务器的公用密钥:

sudo apt-key adv --keyserver keys.gnupg.net --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE 

将服务器添加到存储库列表中:

Ubuntu 16 LTS:

sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo xenial main" -u

Ubuntu 18 LTS:

sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo bionic main" -u

Ubuntu 20 LTS:

sudo add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo focal 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

在这里插入图片描述



启动RVIZ运行RealSense

https://github.com/IntelRealSense/realsense-ros

安装功能包

sudo apt install ros-melodic-realsense2-camera
sudo apt install ros-melodic-realsense2-description

启动相机节点

发布点云

roslaunch realsense2_camera rs_camera.launch filters:=pointcloud

在这里插入图片描述



RealSense运行ORB_SLAM2

插上相机

修改ros_rgbd.cc中的话题名称

进入catkin_ws/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src路径下,找到ros_rgbd.cc,修改:

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_registered/image_raw", 1);

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

重新编译

进入ORB_SLAM2,重新编译一下

chmod +x build.sh
chmod +x build_ros.sh
./build.sh
./build_ros.sh

运行rs_rgbd.launch

roslaunch realsense2_camera rs_rgbd.launch

运行ORB_SLAM2

rosrun ORB_SLAM2 RGBD /home/dk/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/dk/ORB_SLAM2/Examples/ROS/ORB_SLAM2/RealSenseD435.yaml

在这里插入图片描述



参考

https://github.com/IntelRealSense/librealsense/blob/master/doc/distribution_linux.md
https://github.com/IntelRealSense/realsense-ros
https://blog.csdn.net/Felaim/article/details/79612504
https://blog.csdn.net/Spacegene/article/details/109366009

### ORB-SLAM3 径向畸变校正方法及参数配置 ORB-SLAM3 支持多种类型的相机模型,其中包括处理径向畸变的能力。为了有效地进行径向畸变校正,在配置文件中需要设置特定的参数来描述摄像机内部和外部特性以及畸变系数。 对于径向畸变而言,这种失真主要影响图像中的直线使其弯曲,并且随着离中心越远效果越明显[^3]。具体到 ORB-SLAM3 的实现里: - **畸变模型的选择**:通常采用的是多项式形式表达径向畸变项,比如 k1, k2 和有时还包括更高阶项如 k3 来更精确地拟合实际发生的变形情况。 - **参数调整**:在 `orb_slam3_ros` 或者其他基于 ROS 的集成版本下,可以通过修改 YAML 配置文件内的相应字段来进行设定。特别是 `<distortion_model>` 应该被设为 `"radial-tangential"` 以启用同时考虑径向与切线方向上的矫正[^2];而具体的畸变系数则放在同一级别的标签之下,像这样: ```yaml distortion_parameters: k1: -0.28 k2: 0.12 p1: 0.0 p2: 0.0 ``` 上述例子展示了如何指定两个低阶径向畸变因子 (`k1`, `k2`) 及两个可选的切向分量(`p1`, `p2`)。值得注意的是,默认情况下可能只包含了径向部分,如果希望加入完整的五参模型,则需确保所有五个数值都被正确赋值并开启相关选项。 此外,当运行立体视觉模式下的 SLAM 测试程序时(例如通过命令行启动 stereo tracking),确保所使用的摄像头已经过适当标定,即拥有准确反映真实世界几何关系及其固有缺陷的数据集作为输入给算法使用[^4]。 最后提醒一点,虽然 ORB-SLAM 系列框架本身提供了良好的默认设置用于大多数应用场景,但在某些特殊条件下还是建议依据实验环境微调这些参数直至获得最佳性能表现。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值