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

小显存福音:LLaMA Factory+QLoRA微调70B模型实测

小显存福音:LLaMA Factory+QLoRA微调70B模型实测 对于许多研究者来说,想要在消费级显卡上实验大参数模型一直是个难题。常规方法往往连模型加载都做不到,更别提进行微调了。本文将介绍如何使用LLaMA Factory框架结合QLoRA技术,在有限显存条件下实现对70B大模型的微调。这类任务通常需要GPU环境,目前ZEEKLOG算力平台提供了包含该镜像的预置环境,可快速部署验证。 为什么需要LLaMA Factory+QLoRA 大模型微调一直是AI研究的热点,但面临两个主要挑战: * 显存需求大:70B参数的模型在FP16精度下就需要140GB显存,远超消费级显卡容量 * 技术门槛高:需要手动实现量化、梯度检查点等优化技术 LLaMA Factory框架通过以下方式解决了这些问题: * 内置QLoRA技术:通过低秩适配器大幅减少可训练参数 * 自动优化:集成量化、梯度检查点等显存优化技术 * 开箱即用:预置多种微调方法和数据集 环境准备与镜像部署 在开始前,我们需要准备一个支持CUDA的GPU环境。以下是具体步骤: 1. 选择包含LLaM

手把手教你用Whisper-large-v3搭建个人语音转文字服务

手把手教你用Whisper-large-v3搭建个人语音转文字服务 1. 为什么你需要一个自己的语音转文字服务 你有没有遇到过这些场景: * 开完一场两小时的线上会议,想快速整理会议纪要,却要花半天时间听录音打字; * 收到客户发来的5分钟语音咨询,一边回消息一边反复暂停播放,手忙脚乱; * 做自媒体剪辑时,反复听口播素材写字幕,耳朵累、效率低、还容易漏字。 市面上的在线语音识别工具看似方便,但存在几个现实问题:音频上传慢、隐私有风险、中文识别不准、长语音断句混乱、不支持本地部署——尤其当你处理的是内部会议、客户沟通或敏感内容时,把语音传到别人服务器上,真的安心吗? 而今天要带你搭的这个服务,就解决了所有痛点:它跑在你自己的机器上,99种语言自动识别,中文准确率高,支持实时录音和批量上传,GPU加速后30秒音频2秒出结果,全程不联网、不上传、不依赖第三方API。 这不是概念演示,而是已经稳定运行的完整Web服务——镜像名称叫“Whisper语音识别-多语言-large-v3语音识别模型 二次开发构建by113小贝”,基于OpenAI最新版Whisper Large

Ollama Windows 安装与使用全指南:零配置本地运行 Llama、DeepSeek 等大模型,保障隐私与高效体验

Ollama Windows 安装与使用全指南:零配置本地运行 Llama、DeepSeek 等大模型,保障隐私与高效体验

Ollama Windows 安装与使用全指南:零配置本地运行 Llama、DeepSeek 等大模型,保障隐私与高效体验 * 🎯 核心摘要 * 一、环境准备与系统要求 * 二、安装 Ollama * 方法一:使用官方安装包(最简单,推荐新手) * 方法二:通过命令行安装(可选) * 三、基础使用:快速开始 * 1. 拉取并运行您的第一个模型 * 2. 常用模型管理命令 * 3. 模型选择建议 * 四、进阶应用 * 1. 使用 API 接口 * 2. 使用图形化界面(WebUI) * 五、常见问题与优化 🎯 核心摘要 Ollama 是一个开源工具,可让用户在 Windows 电脑上轻松运行 Llama、DeepSeek 等主流大语言模型。

一键部署:用OpenAI API格式调用20+主流大模型(ChatGLM/文心一言/通义千问等)

一键部署:用OpenAI API格式调用20+主流大模型(ChatGLM/文心一言/通义千问等) 1. 为什么你需要一个统一的API入口 你是不是也遇到过这些情况: * 想在本地部署一个AI助手,却发现每个大模型都有自己的API格式——ChatGLM要填/chat路径,文心一言要走/v2.1/bce/wenxinworkshop/ai/generate,通义千问又是一套完全不同的参数结构; * 项目里已经写好了OpenAI调用逻辑,现在想换成国产模型,结果要重写所有请求封装、错误处理、流式响应解析; * 同时测试多个模型效果,却要在代码里反复切换不同SDK、不同认证方式、不同超时配置; * 更头疼的是,有些模型需要代理、有些要翻墙、有些必须用HTTPS、有些对请求头敏感——光是环境适配就耗掉半天。 这些问题,其实都指向同一个核心痛点:模型太多,接口太碎,开发太累。 而今天要介绍的这个镜像,就是为了解决这个问题而生的——它不训练模型,不优化性能,不做任何推理计算。它只做一件事:把20多个主流大模型,全部“