无人机通信流程

发布于:2025-07-19 ⋅ 阅读:(15) ⋅ 点赞:(0)

第一层:硬件物理通信

激光雷达到机载电脑

  • 物理连接:网线(以太网)
  • 通信协议:UDP协议,IP地址通常是192.168.1.X
  • 数据包格式:Livox自定义的二进制数据包,包含点的坐标(x,y,z)和反射强度
  • 传输频率:10Hz,每秒发送10帧点云数据
  • 数据量:每帧约240KB,每秒约2.4MB

具体过程:激光雷达扫描环境后,将测量的距离、角度转换为三维坐标,打包成UDP数据包,通过网线发送给机载电脑的指定端口(通常是65000端口)。

PX4飞控内部通信

  • IMU到主控:SPI总线,时钟频率1-8MHz,数字信号
  • GPS到主控:UART串口,波特率115200,3.3V电平
  • 气压计/磁力计:I2C总线,时钟频率400kHz
  • 数据格式:各传感器有自己的寄存器地址和数据格式

机载电脑到PX4飞控

  • 物理连接:USB线或UART串口线
  • 通信协议:MAVLink协议
  • 波特率:921600或1500000(高速串口)
  • 数据包:每个MAVLink消息有固定的头部、消息ID、载荷和校验和

第二层:驱动层协议转换

Livox驱动程序

机载电脑上运行livox_ros_driver,这个驱动做了以下转换:

  • 接收:监听UDP端口,解析Livox二进制数据包
  • 时间戳同步:给每个点云帧添加ROS时间戳
  • 坐标转换:将激光雷达坐标系转换到机体坐标系
  • 格式转换:转换为ROS标准的sensor_msgs/PointCloud2消息
  • 发布频率:保持10Hz,发布到/livox/lidar话题

MAVROS驱动

机载电脑上的mavros节点负责ROS和PX4之间的通信:

  • 双向转换:MAVLink消息 ↔ ROS消息
  • 话题映射
    • PX4的IMU数据 → /mavros/imu/data (sensor_msgs/Imu)
    • PX4的位置信息 → /mavros/local_position/pose (geometry_msgs/PoseStamped)
    • 控制指令 → /mavros/setpoint_position/local → PX4

数据流向

激光雷达UDP → livox_ros_driver → sensor_msgs/PointCloud2 → /livox/lidar话题
PX4传感器 → MAVLink → mavros → sensor_msgs/Imu → /mavros/imu/data话题

第三层:算法处理与融合

FastLIO算法节点

这是在机载电脑上运行的核心算法:

  • 订阅话题
    • /livox/lidar (点云数据)
    • /mavros/imu/data (IMU数据)
  • 数据同步:通过时间戳对齐点云和IMU数据
  • 算法处理
    1. 点云预处理(去噪、降采样)
    2. IMU预积分计算
    3. 点云配准优化
    4. 卡尔曼滤波状态更新
  • 输出
    • nav_msgs/Odometry消息 → /odometry话题
    • tf变换(从odom到base_link)
  • 更新频率:50Hz

数据格式细节

nav_msgs/Odometry包含:
- header: 时间戳和坐标系ID
- pose: 位置(x,y,z)和姿态(四元数)
- twist: 线速度和角速度
- 协方差矩阵:表示估计的不确定性

第四层:控制指令传递

你的项目中的简化控制

由于没有路径规划,控制流程很直接:

  1. 目标设定

    • 用户或程序设定目标点坐标(x_target, y_target, z_target)
    • 发布到/mavros/setpoint_position/local话题
    • 消息格式:geometry_msgs/PoseStamped
  2. PX4位置控制器

    • 订阅目标位置和当前位置
    • 计算位置偏差:error = target - current
    • PID控制计算:velocity_cmd = Kperror + Kiintegral + Kd*derivative
    • 输出速度指令到姿态控制器
  3. 姿态控制器

    • 将速度指令转换为期望的姿态角(倾斜角度)
    • 姿态PID控制:计算需要的力矩
    • 力矩分配:将总力矩分配到各个电机
  4. 电机输出

    • 生成PWM信号(1000-2000微秒脉宽)
    • 通过硬件定时器输出到各个电机的ESC

控制频率

  • 位置控制器:50Hz
  • 姿态控制器:250Hz
  • 电机输出:400Hz(PWM频率)

第五层:反馈闭环

状态反馈

  1. 传感器采集新状态

    • IMU持续测量新的加速度和角速度(200Hz)
    • 激光雷达扫描新的环境点云(10Hz)
  2. 状态估计更新

    • FastLIO融合新的传感器数据
    • 更新位置和姿态估计
    • 发布新的里程计数据
  3. 控制器响应

    • PX4接收新的位置信息
    • 重新计算与目标的偏差
    • 调整控制输出

通信时序

整个系统是并发运行的:

时间线:
0ms: 激光雷达发送点云帧
5ms: IMU数据更新(200Hz中的一次)
10ms: IMU数据更新
15ms: IMU数据更新
20ms: FastLIO处理完成,发布新位姿
25ms: PX4位置控制器更新(50Hz中的一次)
...
100ms: 下一帧激光雷达数据到达

关键通信参数总结

  1. 数据带宽

    • 激光雷达:2.4MB/s
    • MAVLink:约10KB/s
    • ROS话题:总计约3MB/s
  2. 延迟特性

    • 传感器到估计:20-40ms
    • 控制指令到执行:10-20ms
    • 总体闭环延迟:50-80ms
  3. 可靠性机制

    • MAVLink有消息确认和重传
    • ROS使用TCP保证可靠传输
    • 时间戳同步确保数据时序正确

这就是整个系统的通信流程,每一步都有明确的协议、格式和时序要求,最终形成一个实时的闭环控制系统。


网站公告

今日签到

点亮在社区的每一天
去签到