一、首先要做的就是让NX板卡驱动usb摄像头:
1. 下载usb_cam软件包
sudo apt install ros-melodic-usb-cam
2. 启动相机节点:
A. 查找摄像头接口
ls /dev/video*
B. 在该路径下修改launch文件,换成你自己的摄像头接口
我这里的摄像头接口为video1
C.运行摄像头节点(此时就能看到画面了)
roslaunch usb_cam usb_cam-test.launch
注意:如果还是报错可以试试这句命令:
sudo apt-get install ros-melodic-image-view
二、相机有画面之后就可以对相机进行标定:
把棋盘标定模板打印出来固定到一个硬纸板上,一定要保证整个图片在一个平面上,否则会影响标定效果。标定效果好坏会直接影响到后面摄像头对二维码位置的估计进而影响到二维码降落,所以重视标定过程。下载地址:棋盘标定板
1. 首先启动相机节点,相机ID=1(这里的id可由前面的步骤进行确定):
这里使用的是阿木实验室教程里面的USB单目相机命令,整个的标定过程可参考链接:阿木实验室
roslaunch prometheus_detection web_cam1.launch
2. 利用ROS自带的标定程序对相机进行标定
rosrun camera_calibration cameracalibrator.py --size 9x6 --square 0.0193 image:=/prometheus/camera/rgb/image_raw
下面是标定之后的结果,有效点可以多采集一些,我这里采集了113个,当时最高采集了168,但是后面卡死了,又重新进行采集的。
3. 标定完之后要把终端打印的数据写到对应的文件里面,如下所示:
⭐说明
K为相机内参矩阵,distortion为畸变系数矩阵。
camera matrix:摄像头的内部参数矩阵
distortion:畸变系数矩阵
rectification:矫正矩阵,一般为单位阵
projection:外部世界坐标到像平面的投影矩阵
三、二维码检测测试
1. 通过显示屏连接板载或者通过远程工具Nomachine访问板载终端,输入如下命令,运行检测节点
roslaunch p450_experiment p450_landpad_det.launch
这里不要忘记修改相机的ID
2. 重新打开一个新终端,输入如下命令,查看检测效果(可视化)
rqt_image_view
四、开始进行降落
在开始降落之前还遇到两个问题:
问题1:不同的机载电脑,要设置正确的端口号和波特率🤬🤬🤬,这里要好好理解一下 “fcu_url” 这个位置其实是机载电脑与飞控连接的设置,配置好端口号及波特率!
这个位置我和师弟不断的对两个无人机的代码做对比才发现,直至修改正确!不然的话会报一个错误“FCU…”
问题2:阿木的无人机启动T265的方式是不同的,命令是一样的,但是里面的参数有所改动:(这里还是不太理解)
***直接把卓翼启动T265的launch文件,粘到阿木相应的包里面,名字都是一样的!***🤞🤞🤞
补充:这个位置不同,阿木的这个可以查看图像的数据,所以对上面位置进行了修改!
1. 启动基本vio脚本 ,输入如下命令:
roslaunch p450_experiment p450_vio_onboard.launch
可以看到T265的节点已启动成功,下面看一下是否有数据输出,输出以下命令:
2 . 查看T265相机话题数据:有数据 才是真正的启动成功!
rostopic echo /camera/odom/sample
3 . ROS节点转换,再次查看相机话题数据!
rosrun offboard_pkg t265_to_mavros //ros节点转换
rostopic echo /mavros/vision_pose/pose //查看话题数据
4 . 启动PX4文件
roslaunch mavros px4.launch
5 . 查看遥控器状态(拨一下遥控器上的通道,看看有没有反应)
如下图所示,就是连接成功,遥控器切换模式,也会有反应
6 . 启动自主降落脚本文件
roslaunch p450_experiment p450_indoor_landing_static_target.launch
7. 打开一个新的终端,将图像检测显示出来
下面这幅图,是实体无人机飞机来在空中检测二维码的结果!
rqt_image_view
到这里只是用卓翼的无人机跑通了阿木的二维码降落,其中还有很多小细节的地方不是很理解,这里先把整个的实验流程梳理一下,后面会针对里面的问题进行逐一的解决!🤜🤛。