PC系统:Ubuntu18.04 melodic
Robot:Turtlebot3-burger
树莓派系统:Ubuntu mate 18.04
摄像头:树莓派CSI摄像头
Tagslam用户手册:Tagslam
!!!!!!
在PC端安装TagSlam,不要在树莓派上安装TagSlam,在树莓派上编译需要改部分源码。
想安装的可参考TagSlam光学定位系统部署与调试
树莓派端只需要运行 usb_cam node
PC端运行apriltag_detector_node 和 tagslam
!!!!!!
一、CSI摄像头设置(在树莓派上操作)
首先要做的是添加摄像头的驱动程序.ko文件和对应的raspiberry B3+的硬件使能问题:
1.添加驱动程序文件进来:
sudo vim /etc/modules
在最后添加如下代码 :
bcm2835-v4l2
这样就完成了在启动过程中加载camera驱动的前提
2.修改Raspberry的启动配置使能项:
sudo raspi-config
选择Interfacing Option,选中Select然后Enter进入,如下图所示:
接下来机会问你是否同意使能Pi camera,选择是然后会让你重启,,重启就好了。
3. 接下来来看看/dev下面是否存在摄像头设备的问题:
ls -al /dev/ | grep video
可以看到,已经可以找到我们的摄像头video0
二、摄像头的使用与矫正(树莓派端)
1.安装usb_cam
cd catkin_ws/src
git clone https://github.com/bosch-ros-pkg/usb_cam.git
cd ..
ctakin_make
2.编译usb_cam
cd usb_cam
mkdir build
cd build
cmake ..
make
3.下载棋盘格:棋盘格
4.校准
sudo apt install ros-melodic-camera-calibration
运行usb_cam节点:
roscore
roslaunch usb_cam usb_cam-test.launch
执行下面命令开启校准程序:
rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.108 image:=/usb_cam/image_raw camera:=/usb_cam
将棋盘格对准摄像头,让摄像头识别不同角度下的棋盘格,然后点击calibrating,完成后再点击commit将校准文件保存。
二、安装gtsam库(PC端)
GitHub代码:https://github.com/borglab/gtsam.git
可以直接从GitHub上下载最新版的,我自己用的是4.0.2,最低也要用4.0.2版本。
gtsam4.0.2 网盘链接:链接: https://pan.baidu.com/s/1Q17vmfKd94q0Qs2ABKfpWg 密码: ll6t
cd gtsam
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j1
make install
编译时间较长。
三、TagSlam安装(PC端)
1.官方安装指南:https://github.com/berndpfrommer/tagslam_root
2.tagslam_root链接: https://pan.baidu.com/s/1LMKCKXCiGHzz_yW6L0cGfg 密码: tpoh
下载到Home文件夹下并解压:
cd tagslam_root
catkin config -DCMAKE_BUILD_TYPE=Release
catkin build -j1
注意:tagslam项目使用最新的catkin build编译,而非catkin_make,catkin build是catkin_make下一代,不兼容,必须使用不同的工作空间。
安装完成测试:(默认已经安装RVIZ)
rosparam set use_sim_time true
roslaunch tagslam tagslam.launch run_online:=true
roslaunch tagslam apriltag_detector_node.launch
rviz -d `rospack find tagslam`/example/tagslam_example.rviz &
rosbag play --clock `rospack find tagslam`/example/example.bag --topics /pg_17274483/image_raw/compressed
四、Turtlebot3测试
修改部分代码
(1)tagslam_root/src/tagslam/launch/apriltag_detector_node.launch
将remap...to 后面改成自己的摄像头节点名称
(2)tagslam_root/src/tagslam/example/cameras.yaml
将rostopic后面改成自己的摄像头节点名称,与(1)一致
至此,代码修改完毕,重新编译即可。
实例测试:
PC端
roscore
ssh连接树莓派后:
roslaunch usb_cam usb_cam-test.launch
PC端:
rosparam set use_sim_time true
roslaunch tagslam tagslam.launch run_online:=true
roslaunch tagslam apriltag_detector_node.launch
rviz -d `rospack find tagslam`/example/tagslam_example.rviz &
得到RVIZ可视化界面:
然后把打印好的Apriltag放到摄像头前面,就可以看到Apriltag和camera的相对位置
Apriltag:tagslam_root/src/apriltag_image
同样地,同时放多张Apriltag,就可以看到多张tag和camera之间的相对位置关系,这就实现了定位功能。