对于px4来说可以使用的定位设备有很多种,光流定位,gps定位,vins定位,雷达定位
现在让我来一个个介绍在px4上如何使用,并且完成配置
1.光流
光流有很多种,我这里介绍俩种,一种是串口光流,另一种是can光流,只是通信方式不一样,其他都一样。光流是可以输出定位数据的,一般输出像素点速度和插值,可以通过这个来计算速度,然后使用速度来积分位置,但是位置误差会比较大,因为积分会飘逸,还有就是光流需要和imu融合不然,很难分辨位置和方向
1.1串口光流
很多光流都是直接适配px4协议的,直插直用,只需要配置一下即可
光流配置:MTF-01光流测距一体传感器-用户手册-微空科技
常见光流都是串口传输,串口光流一般接在飞控的TELEM1,注意线序
1.14.0版本以后需要设置好所有其它参数,并识别到光流传感器,重启飞控后才能在QGC里找到SENS_FLOW_ROT参数 1.12.x - 1.13.x MAV_1_CONFIG TELEM n (n取决于实际连接的物理端口) 重启飞控 MAV_1_MODE Normal SER_TELn_BAUD 115200 8N1 (n取决于实际连接的物理端口) SENS_FLOW_ROT No rotation EKF2_AID_MASK use optical flow EKF2_RNG_AID Range aid enable EKF2_HGT_MODE Range sensor 1.14.x- MAV_1_CONFIG TELEM n 重启飞控 MAV_1_MODE Normal SER_TELn_BAUD 115200 8N1 EKF2_OF_CTRL Enabled EKF2_RNG_CTRL Enabled EKF2_HGT_REF Range sensor 重启飞控 SENS_FLOW_ROT No rotation (1.14及以后版本该参数默认值如此,无需设置) 重启飞控,一切正常的话,在QGC的MAVLink Inspector页面中应该能看到DISTANCE_SENSOR和OPTICAL_FLOW_RAD消息。注意,QGC上显示的消息由飞控发出,消息频率并不等同于传感器的数据频率,这个频率由飞控的设置和数据链路的速度决定,主要用于观察,消息频率多少并不重要。 如果地面站是通过某些数传连接飞控时,由于数据链路速率较低,飞控会选择性发出数据,导致在QGC有可能看不到某些消息帧比如OPTICAL_FLOW_RAD,因此这一步建议使用USB连接飞控。以上是串口光流常见的配置
1.2 can光流
配置参考我这篇文章:Holybro H-Flow 光流和距离传感器模块,px4配置-CSDN博客
这款光流是can通信的,可以使用can来通信,配置可以根据上述文章来配置
可以接在对应配置的can口
配置手册:Setup Guide | Holybro
以上就是对应光流的配置和使用
2.GPS
网上有很多gps模块,在px4里面也有对应的接口,一般来说gps接口有对应的接口
2.1 串口或者iic通信gps,直接连接即可
gps一般使用接口,iic通信,也有can的
2.2 can通信gps
can通信gps配置手册: 使用手册-零一飞行文档中心
在QGroundControl的【Parameters】窗口设置以下参数并在写入后重启: UAVCAN_ENABLE设置为Sensors Automatic config 。 UAVCAN_SUB_GPS 设置为Enable。 *注意:飞控需安装内存卡。 UAVCAN参数配置 以下是更改OneGNSS M9N内部参数,并非飞控的参数。 主要参数如下: BARO_ENABLE 默认是1开启气压计,设置0是关闭 CAN_NODE 默认是0,飞控自动给UAVCAN设备分配ID,数值更改范围0~255. Compass_enable 默认是1开启罗盘,设置0是关闭罗盘。 CAN_BAUDRATE 默认1000000 CAN通信比特率 GPS1_RATE_MS 默认是200ms GPS1_GNSS_MODE Gps星系使用配置,各星系的数值分别是gps=1,sbas=2, calileo=4,beidou=8,imes=16,qzss=32,glonass=64,只使用gps数值设置1.使用北斗+glonass=8+64=72 参数修改后点写入参数,断电重启完成配置。3.视觉定位:vins
参考配置文档:PX4 视觉定位设置及多种定位数据获取方法(T265为例) - 知乎
4.雷达定位:
参考文章:
图文并茂详细教程之---Pixhawk扩展思岚A1激光雷达实现360°避障_pix连接激光雷达-CSDN博客
https://blog.csdn.net/sinat_16643223/article/details/115796993
这些视觉定位和雷达定位,都可以使用串口通信来通信数据