本系统已经从历史轨迹回放系统重构为实时无人机飞行轨迹显示系统,能够通过WebSocket连接后端服务,实时接收无人机的位置数据、云台姿态信息和视频帧,并在Cesium三维场景中进行可视化显示。
┌─────────────────┐ MQTT ┌─────────────────┐ WebSocket ┌─────────────────┐
│ DJI 无人机 │ ────────── │ 后端服务 │ ──────────────│ 前端显示 │
│ │ │ │ │ │
│ • 位置数据 │ │ • MQTT接收 │ │ • Cesium 3D │
│ • 云台姿态 │ │ • 数据处理 │ │ • 实时轨迹 │
│ • 视频流 │ │ • WebSocket广播 │ │ • 视频投影 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
cd /Users/zhaozhipeng/Documents/code/camera_geo/drone_system/backend
python3 main.py
cd /Users/zhaozhipeng/Documents/code/camera_geo/drone_system/frontend
python3 -m http.server 8080
在浏览器中访问: http://localhost:8080/realtime/uav_mapping.html
系统默认连接配置:
- 状态数据端口: 8765 (用于接收位置、姿态、设备状态)
- 视频流端口: 8766 (用于接收视频帧数据)
- 服务器地址: localhost
如需修改连接配置,请编辑 uav_mapping.js 中的 config 对象:
this.config = {
websocketHost: 'localhost', // 后端服务器地址
statusPort: 8765, // 状态数据端口
videoPort: 8766, // 视频流端口
reconnectInterval: 3000, // 重连间隔(毫秒)
trajectoryMaxPoints: 1000, // 最大轨迹点数
droneModelScale: 2.0 // 无人机模型缩放
};
显示当前连接状态和设备信息:
- 📡 设备在线状态和电量信息
- 🔌 连接断开提示和重连状态
实时显示飞行数据:
- 位置信息: 纬度、经度、海拔
- 姿态信息: 航向角、俯仰角、横滚角
- 云台姿态: 云台俯仰、偏航、横滚角
- 视频预览: 当前接收到的视频帧
// 无人机状态
{
"type": "drone_status",
"data": {
"device_sn": "1581F6Q8D241J00CGT7R",
"is_online": true,
"battery_level": 85,
"timestamp": 1627789200.123
}
}
// 位置坐标
{
"type": "coordinates",
"data": {
"device_sn": "1581F6Q8D241J00CGT7R",
"coordinates": {
"latitude": 39.9093,
"longitude": 116.3974,
"altitude": 100.5,
"heading": 45.2,
"pitch": -5.1,
"roll": 2.3
},
"timestamp": 1627789200.123
}
}
// 云台姿态
{
"type": "gimbal_attitude",
"data": {
"device_sn": "1581F6Q8D241J00CGT7R",
"gimbal_attitude": {
"pitch": -30.5,
"roll": 0.8,
"yaw": 15.2
},
"timestamp": 1627789200.123
}
}
{
"type": "video_frame",
"data": {
"device_sn": "1581F6Q8D241J00CGT7R",
"frame": "base64编码的JPEG数据",
"timestamp": 1627789200.123,
"width": 1280,
"height": 720,
"format": "jpeg"
}
}
此系统已完全替换原有的历史轨迹回放功能,专注于实时数据的接收和显示,为无人机实时监控提供了完整的解决方案。