PX4使用mid360通过fastlio算法实现无人机定点模式悬停

PX4使用mid360通过fastlio算法实现无人机定点模式悬停

        无人机为自主搭建,px4固件版本使用为1.15.4(pixhawk 6cmini),机载电脑为jetson orin nano,激光雷达为大疆的mid360,激光雷达通过开源算法fastlio获取当前位置信息,转换为ENU坐标系下的位置通过mavros话题发布给px4,实现无人机定位效果,使用过程中无光流无GPS。其中远程控制软件为nomachine,使用路由器为千兆(使用电脑热点或者较差路由器可能会导致远程连接巨卡并且是不是掉线,因此尽量选择一个好一点的路由器来进行远程控制),同时orin nano可能存在一些问题,当出现下图标志时,nomachine才可以进行远程操控,并非开机立刻启动。

                      

        首先搭建mid360实现fastlio所需环境,可以得到激光雷达获取到的当前定位信息,即可以通过打印激光雷达当前的odometry信息完成雷达的定位即无人机当前位置。

        启动雷达:

roslaunch livox_ros_driver2 msg_MID360.launch

        启动fastlio算法:

roslaunch fast_lio mapping_mid360.launch

        此时可以得到当前无人机定位信息,此时启动无人机px4程序,通常先给px4串口权限,根据连线接口不同进行赋予权限或者一件赋予

        给所有串口添加权限:

sudo chmod 777 /dev/tty*

        之后启动px4程序:

roslaunch mavros px4.launch

        将雷达位置信息转换为ENU坐标系后发送给px4无人机,具体代码可以参考链接:

                         PX4|基于FAST-LIO mid360的无人机室内自主定位及定点悬停

        创建工作空间和相应节点,运行对应节点程序

rosrun xxxxx xxxxx

        此时通过/mavros/vision_pose/pose话题发布给px4,px4获取到位置后可以在位置模式下进行解锁,如果未解锁先确认发布的话题中是否有信息存在,使用rostopic list进行数据查看,如果无误后位置模式下仍未解锁,也可能存在mavros包下载缺失问题,可以参考链接:

                                                       mavros_extras功能包没有装

        安装mavros_extras功能包:

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

        查看是否接收到位置信息,也可以直接在QGC中查看数据,观察无人机位置信息是否正确,同时在qgc中选择关闭罗盘信息来对应mavros发布的坐标系产生对应,具体链接可以参考:

        PX4无人机|MID360使用FAST_LIO,实现自主飞行及定点——PX4无人机配置流程(六)

        其中QGC的参数修改也如上链接所示,主要为EKF2_HGT_REF修改为Vision即从上述节点程序中获取当前的位置信息,确定无人机机头所指的方向为X的正方向,即飞机朝机头方向运动,发布的/mavros/vision_pose/pose程序中的x会增大,向上z数据会增大,如果不一致例如相反的情况,具体在无人机起飞后的可能为无人机起飞就开始向一个方向漂移画圈,仅可实现定高效果,无法矫正回正确位置。

        节点起飞代码如下:

#! /usr/bin/env python3 import rospy from geometry_msgs.msg import PoseStamped from mavros_msgs.msg import State from mavros_msgs.srv import CommandBool, CommandBoolRequest, SetMode, SetModeRequest current_state = State() def state_cb(msg): global current_state current_state = msg if __name__ == "__main__": rospy.init_node("offb_node_py") state_sub = rospy.Subscriber("mavros/state", State, callback = state_cb) local_pos_pub = rospy.Publisher("mavros/setpoint_position/local", PoseStamped, queue_size=10) rospy.wait_for_service("/mavros/cmd/arming") arming_client = rospy.ServiceProxy("mavros/cmd/arming", CommandBool) rospy.wait_for_service("/mavros/set_mode") set_mode_client = rospy.ServiceProxy("mavros/set_mode", SetMode) # Setpoint publishing MUST be faster than 2Hz rate = rospy.Rate(20) # Wait for Flight Controller connection while(not rospy.is_shutdown() and not current_state.connected): rate.sleep() pose = PoseStamped() pose.pose.position.x = 0 pose.pose.position.y = 0 pose.pose.position.z = 0.5 # Send a few setpoints before starting for i in range(100): if(rospy.is_shutdown()): break local_pos_pub.publish(pose) rate.sleep() offb_set_mode = SetModeRequest() offb_set_mode.custom_mode = 'OFFBOARD' arm_cmd = CommandBoolRequest() arm_cmd.value = True last_req = rospy.Time.now() while(not rospy.is_shutdown()): if(current_state.mode != "OFFBOARD" and (rospy.Time.now() - last_req) > rospy.Duration(5.0)): if(set_mode_client.call(offb_set_mode).mode_sent == True): rospy.loginfo("OFFBOARD enabled") last_req = rospy.Time.now() else: if(not current_state.armed and (rospy.Time.now() - last_req) > rospy.Duration(5.0)): if(arming_client.call(arm_cmd).success == True): rospy.loginfo("Vehicle armed") last_req = rospy.Time.now() local_pos_pub.publish(pose) rate.sleep() 

        同样也是创建一个工作空间,建立功能包,最后运行起飞节点,飞机静止在(0,0,0.5)m处。同时在实物飞行中也遇到了一定的问题,在起飞时雷达定位出问题的情况,我这边不装桨叶的时候,改变飞机位置雷达定位正确,当换成桨叶起飞时,雷达可能是误检测导致漂移,当我把桨叶换小换成下安装时候这时候定位没问题可以正常飞,大桨叶旋转和小桨叶上安装影响到雷达定位的情况,暂不清楚是由于什么问题影响的雷达,可能是由fastlio检测距离等因素或者是气流因素的影响暂不清楚(后续解决了会进行更新),总之因为飞机桨叶较大,可能对定位算法存在一定的影响因素,最后换成了小桨叶同时进行下置解决了问题。

        当飞行中出现了问题,也可以去QGC下载日志进行数据分析,数据解析网址为:

                                                                    https://logs.px4.io/

        在实物验证中感谢ZEEKLOG上很多人提出的一些建议,无人机的演示效果如下:                            

PX4使用mid360通过fastlio算法实现无人机定点模式悬停

Read more

2026年03月16日 AI 深度早报

2026年03月16日 AI 深度早报

📅 2026年03月16日 AI 深度早报:GTC 2026 开幕日,黄仁勋发布 Feynman 芯片,AI 编程格局大震荡 👋 晨间导读 今天是本年度 AI 圈最重磅的一天之一——NVIDIA GTC 2026 在圣何塞正式开幕,黄仁勋携 Feynman 1.6nm 新架构与 NemoClaw 开源 Agent 平台震撼登台,将 Physical AI 与具身智能推上新高度。与此同时,OpenAI 花 30 亿美元收购 Windsurf 的豪赌意外被微软截胡,暴露出 AI 编程赛道的内部角力;中国具身智能则在两个月内狂揽 200 亿融资,诞生 10 家独角兽。今晨还需警惕:央视315晚会揭开

【Vibe Coding】一口气搞懂AI黑话:Vibe Coding、Agent、提示词、MCP、Skills全解析

你是否也被AI领域的各种新名词轰炸得头晕眼花? Vibe Coding、AI Agent、提示词(Prompt)、MCP(Model Context Protocol)、Skills… 这些听起来高大上的术语到底是什么意思?它们之间有什么关系? 本文将用最通俗易懂的语言 + 生动比喻,带你一次性理清这些核心概念! 🚀 引言:AI正在改变我们“造物”的方式 随着大模型能力的飞速提升,AI不再仅仅是聊天问答工具。我们正在进入一个“AI驱动创造”的新时代: ✅ 用自然语言指挥AI写代码(Vibe Coding) ✅ 让AI像私人助理一样自主完成任务(AI Agent) ✅ 通过精准指令释放AI潜能(提示词工程) ✅ 赋予AI记忆与联网能力(MCP) ✅ 为AI安装“手脚”操作现实世界(Skills) 理解这些概念,是掌握下一代AI开发范式的关键! 🌈 一、Vibe Coding:用“感觉”写代码,告别996 大白话解释

AI赋能原则1解读思考:超级能动性-AI巨变时代重建个人掌控力的关键能力

AI赋能原则1解读思考:超级能动性-AI巨变时代重建个人掌控力的关键能力

目录 一、AI 焦虑的本质:技术升级 vs. 能力结构失衡 二、什么是“超级能动性”:技术时代的人类新核心能力 三、为什么“超级能动性”能让我们重新获得掌控感? (一)认知掌控:从“我不知道如何适应 AI” → “我能塑造 AI 如何适应我” (二)任务掌控:从“我做不完” → “我调动系统来做” (三)身份掌控:从“我会不会被替代” → “我能指挥 AI 完成价值输出” 四、从技术视角看超级能动性的底层逻辑 (一)Prompt → Agent → Workflow → Multi-Agent System 的必然进化 (二)人类从“模型的用户”变成“系统的产品经理” (三)

OpenClaw 最新功能大揭秘!2026年最火开源AI Agent迎来史诗级升级,手机变身AI终端不是梦

OpenClaw 最新功能大揭秘!2026年最火开源AI Agent迎来史诗级升级,手机变身AI终端不是梦 大家好,我是Maynor。最近开源社区彻底炸锅了——OpenClaw(前身Clawdbot/Moltbot)又一次刷屏!这个能真正“干活”的本地AI助手,在3月2日刚刚发布v2026.3.1版本,紧接着2月底的v2026.2.26也是里程碑式更新。 从外部密钥管理、线程绑定Agent,到Android深度集成、WebSocket优先传输……OpenClaw正在把“AI常驻员工”从概念变成现实。 今天这篇图文并茂的干货,带你一口气看懂最新功能、安装上手和实战价值!