- ORB_SLAM3支持使用深度相机数据,试着用KinectV1深度相机的数据跑通。
- ORB_SLAM3的配置在我的上一篇blog
KinectV1配置
如果使用的是ros-melodic或之前的版本,直接使用apt安装freenect:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install ros-{你的ROS版本}-freenect-*
Ubuntu 20.04 使用的ros版本为noetic,不能使用apt直接安装。
- 以下步骤参考了这篇博客
1. 安装依赖
sudo apt-get install git-core cmake freeglut3-dev pkg-config build-essential libxmu-dev libxi-dev libusb-1.0-0-dev
2. 下载编译freenect
git clone git://github.com/OpenKinect/libfreenect.git
cd libfreenect
mkdir build
cd build
cmake -L ..
make
sudo make install
3. 添加规则
sudo gedit /etc/udev/rules.d/51-kinect.rules
添加以下代码:
# ATTR{product}=="Xbox NUI Motor"
SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02b0", MODE="0666"
# ATTR{product}=="Xbox NUI Audio"
SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02ad", MODE="0666"
# ATTR{product}=="Xbox NUI Camera"
SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02ae", MODE="0666"
# ATTR{product}=="Xbox NUI Motor"
SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02c2", MODE="0666"
# ATTR{product}=="Xbox NUI Motor"
SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02be", MODE="0666"
# ATTR{product}=="Xbox NUI Motor"
SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02bf", MODE="0666"
保存并退出
4. 下载audios.bin文件
运行 fwfetcher.py:
python3 src/fwfetcher.py
复制下载的文件:
sudo cp audios.bin /usr/local/share/libfreenect
5. 测试
到这步应该安装好了,连接KinectV1测试一下:
- 查看设备是否连接:
lsusb
看到设备已经连接:
- 测试audio
freenect-micview
- 测试相机图像:
freenect-glview
编译运行 freenect_stack
1. 下载编译
cd ~/catkin_ws/src
git clone https://github.com/ros-drivers/freenect_stack.git
cd ..
catkin_make
2. 运行launch
roslaunch freenect_launch freenect.launch depth_registration:=true
3. 用rviz看看效果
rosrun rviz rviz
- Global Options - Fixed Frame 修改为
camera_link
- 添加PointCloud2,话题名Topic修改为
‘/camera/depth_registered/points’
运行orbslam3
1. 查看话题名称
rostopic list
2. 修改launch文件的话题名称
修改 orb_slam3 的 launch 文件 tum_rgbd.launch:
<remap from="/camera/rgb/image_raw" to="/camera/rgb/image_raw"/>
<remap from="/camera/depth_registered/image_raw" to="/camera/depth_registered/image_raw"/>
3. 修改ymal
修改文件 /config/RGB-D/TUM1.yaml
修改 相机内参 fx
fy
cx
cy
畸变参数 k1
k2
p1
p2
图片像素 width
height
4. 运行
# 启动 freenect
roslaunch freenect_launch freenect.launch depth_registration:=true
# 新终端 启动 orbslam3-RGBD
roslaunch orb_slam3_ros tum_rgbd.launch
5. 保存
我的上一篇blog修改添加了保存PCD地图的功能,退出后自动保存文件在:
/.ros/map.pcd