跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

基于 PX4 与 Mid360 激光雷达的无人机 FAST-LIO 定点悬停

基于 PX4 固件、Jetson Orin Nano 机载电脑及大疆 Mid360 激光雷达的无人机室内自主定位方案。通过 FAST-LIO 算法获取里程计信息并转换为 ENU 坐标系,经由 MAVROS 发布给 PX4 实现无光流无 GPS 下的定点悬停。文章涵盖了环境搭建、节点启动、坐标转换、OFFBOARD 模式控制代码及桨叶干扰等实际飞行问题的排查经验。

念念不忘发布于 2026/4/5更新于 2026/7/2458 浏览
基于 PX4 与 Mid360 激光雷达的无人机 FAST-LIO 定点悬停

硬件与软件环境

  • 无人机固件: PX4 1.15.4 (Pixhawk 6C Mini)
  • 机载电脑: Jetson Orin Nano
  • 激光雷达: DJI Mid360
  • 算法: FAST-LIO
  • 通信: MAVROS
  • 远程连接: NoMachine (需确保网络稳定)

环境搭建与启动

1. 启动激光雷达

roslaunch livox_ros_driver2 msg_MID360.launch

2. 启动 FAST-LIO 算法

roslaunch fast_lio mapping_mid360.launch

此时可打印激光雷达当前的 odometry 信息,获取无人机当前位置。

3. 启动 PX4 程序

赋予串口权限(根据连线接口不同调整):

sudo chmod 777 /dev/tty*

启动 MAVROS 节点:

roslaunch mavros px4.launch

坐标转换与发布

将雷达位置信息转换为 ENU 坐标系后发送给 PX4。通过 /mavros/vision_pose/pose 话题发布给 PX4,PX4 获取到位置后可在位置模式下解锁。若未解锁,请确认话题中是否有数据存在(使用 rostopic list 查看),并检查是否缺失 mavros_extras 功能包。

安装 mavros_extras 功能包:

sudo apt-get install ros-melodic-mavros-extras

QGC 参数配置

在 QGC 中关闭罗盘信息以对应 MAVROS 发布的坐标系。主要修改参数 EKF2_HGT_REF 为 Vision,即从上述节点程序中获取当前的高度信息。

确定无人机机头所指的方向为 X 轴正方向。飞机朝机头方向运动时,发布的 /mavros/vision_pose/pose 中的 x 应增大;向上 z 数据应增大。如果不一致,起飞后可能出现漂移或画圈现象,仅可实现定高效果。

OFFBOARD 模式控制代码

创建工作空间及相应节点,运行以下 Python 脚本实现起飞与悬停:

#!/usr/bin/env python3
import rospy
from geometry_msgs.msg import PoseStamped
from mavros_msgs.msg import State
from mavros_msgs.srv import CommandBool, SetMode

current_state = State()

 ():
     current_state
    current_state = msg

 __name__ == :
    rospy.init_node()
    state_sub = rospy.Subscriber(, State, callback=state_cb)
    local_pos_pub = rospy.Publisher(, PoseStamped, queue_size=)
    
    rospy.wait_for_service()
    arming_client = rospy.ServiceProxy(, CommandBool)
    rospy.wait_for_service()
    set_mode_client = rospy.ServiceProxy(, SetMode)
    
    rate = rospy.Rate()
      rospy.is_shutdown()   current_state.connected:
        rate.sleep()
    
    pose = PoseStamped()
    pose.pose.position.x = 
    pose.pose.position.y = 
    pose.pose.position.z = 
    
     i  ():
         rospy.is_shutdown():
            
        local_pos_pub.publish(pose)
        rate.sleep()
    
    offb_set_mode = SetMode()
    offb_set_mode.custom_mode = 
    arm_cmd = CommandBool()
    arm_cmd.value = 
    last_req = rospy.Time.now()
    
      rospy.is_shutdown():
         current_state.mode !=   (rospy.Time.now() - last_req) > rospy.Duration():
             set_mode_client.call(offb_set_mode).mode_sent:
                rospy.loginfo()
                last_req = rospy.Time.now()
        :
              current_state.armed  (rospy.Time.now() - last_req) > rospy.Duration():
                 arming_client.call(arm_cmd).success:
                    rospy.loginfo()
                    last_req = rospy.Time.now()
        local_pos_pub.publish(pose)
        rate.sleep()
def
state_cb
msg
global
if
"__main__"
"offb_node_py"
"mavros/state"
"mavros/setpoint_position/local"
10
"/mavros/cmd/arming"
"/mavros/cmd/arming"
"/mavros/set_mode"
"/mavros/set_mode"
20
while
not
and
not
0
0
0.5
for
in
range
100
if
break
'OFFBOARD'
True
while
not
if
"OFFBOARD"
and
5.0
if
"OFFBOARD enabled"
else
if
not
and
5.0
if
"Vehicle armed"

问题排查与注意事项

  1. 桨叶干扰: 实物飞行中可能遇到雷达定位漂移问题。大桨叶旋转或小桨叶上安装可能影响雷达定位(气流或检测距离因素)。建议更换小桨叶并下置安装以解决干扰。
  2. 日志分析: 飞行中出现异常可通过 QGC 下载日志进行数据分析,参考官方日志解析平台。
  3. 网络延迟: 远程控制建议使用千兆路由器,较差的网络环境可能导致连接卡顿或掉线。

目录

  1. 硬件与软件环境
  2. 环境搭建与启动
  3. 1. 启动激光雷达
  4. 2. 启动 FAST-LIO 算法
  5. 3. 启动 PX4 程序
  6. 坐标转换与发布
  7. QGC 参数配置
  8. OFFBOARD 模式控制代码
  9. 问题排查与注意事项
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 使用 VPN 后 Mac 出现能联网但无法访问网页的问题
  • Vue3 人机对话界面实现:流式请求与 ECharts 图表集成
  • 5.8G 模拟图传电路设计与性能实战
  • Raphael AI:基于 Flux 模型的在线 AI 图像生成工具
  • Flutter 应用架构演进:从基础骨架到 Riverpod 状态管理实战
  • 基于 Uniapp 与 SSM 的鞋类清洗管理 App 金融功能设计
  • 次模函数(Submodular Function)概念与 AI 应用
  • 彻底解决 Copilot 与 Codex 中文乱码问题(附自动化脚本)
  • 9 种降低论文 AIGC 检测率的工具推荐
  • llama.cpp 量化大模型内网部署与运行指南
  • 使用 Playwright 绕过网站反爬机制与机器人验证
  • Stable Diffusion 3.5 本地部署与使用指南
  • Linux 侵入式链表详解
  • HTML Popover API:原生属性实现浮层交互,告别 JS 组件库依赖
  • 深入理解 OpenWebF/WebF:跨平台应用开发方案
  • Linux 进程优先级与 O(1) 调度算法详解
  • FPGA 实现高速数字信号处理的硬核逻辑与实战
  • 链表十大经典 OJ 题目详解与实战技巧
  • Ubuntu 24.04 安装 ROS 2 Jazzy 版本实战指南
  • 汇川机器人软件 RobotLab 常规操作

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online