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

基于FPGA的数字频率计设计:完整指南

从零构建高性能数字频率计:FPGA实战全解析 你有没有遇到过这样的场景?手头有个信号发生器,输出一个神秘的方波,你想知道它的频率到底是多少——是1.234 kHz还是1.235 kHz?普通万用表只能给你个大概,示波器又太“重”,而我们真正需要的,是一个 快速、精准、可定制 的测量工具。 今天,我们就来亲手打造这样一个利器: 基于FPGA的高精度数字频率计 。这不是简单的计数实验,而是一套完整工程级方案,覆盖从微弱信号采集到纳秒级时间计量的全过程。无论你是电子爱好者、嵌入式开发者,还是正在准备毕业设计的学生,这篇文章都会带你走通每一个关键环节。 为什么非要用FPGA做频率计? 先问个问题:为什么不直接用单片机? 答案很简单—— 速度和确定性 。 假设你要测一个100 MHz的信号,每秒要处理一亿个上升沿。传统MCU靠中断或定时器轮询?别想了,光响应延迟就可能吃掉几个周期。更别说多任务调度带来的抖动。而FPGA不同,它是 硬件并行运行 的,所有逻辑同时工作,没有“下一条指令”的概念。

Vitis AI推理加速实战:从零实现FPGA部署完整指南

从模型到硬件:Vitis AI 实战部署指南,让 FPGA 真正跑起深度学习 你有没有遇到过这样的场景?训练好的 PyTorch 模型准确率高达95%,信心满满地准备上板推理——结果在嵌入式 CPU 上一跑, 一张图要300毫秒 ,帧率不到4 FPS。别说实时检测了,连基本交互都卡顿。 这正是我在做工业缺陷检测项目时踩过的坑。后来我们换了一条路:把模型交给 FPGA + Vitis AI ,最终实现 每张图仅需12ms 的惊人加速。整个系统功耗还从5W降到2.5W,彻底告别风扇散热。 今天我就带你走一遍这条“少有人走却极高效”的路径—— 如何用 Xilinx 的 Vitis AI 工具链,把一个标准 PyTorch/TensorFlow 模型真正部署到 Zynq 或 Versal 芯片上,实现低延迟、

Trae x 图片素描MCP一键将普通图片转换为多风格素描效果

Trae x 图片素描MCP一键将普通图片转换为多风格素描效果

目录 * 前言 * 一、核心工具与优势解析 * 二、操作步骤:从安装到生成素描效果 * 第一步:获取MCP配置代码 * 第二步:下载 * 第三步:在 Trae 中导入 MCP 配置并建立连接 * 第四步:核心功能调用 * 三、三大素描风格差异化应用 * 四.总结 前言 在设计创作、社交媒体分享、教育演示等场景中,素描风格的图片往往能以简洁的线条突出主体特征,带来独特的艺术质感。然而,传统素描效果制作需借助专业设计软件(如Photoshop、Procreate),不仅操作复杂,还需掌握一定的绘画技巧,难以满足普通用户快速生成素描的需求。 为解决这一痛点,本文将介绍蓝耘MCP广场提供的图片素描MCP工具(工具ID:3423)。该工具基于MCP(Model Context Protocol)协议开发,支持单张/批量图片转换、3种素描风格切换及自定义参数调节,兼容多种图片格式与中文路径,无需专业设计能力,

(10-1)大模型时代的人形机器人感知:视觉-语言模型在机器人中的应用

(10-1)大模型时代的人形机器人感知:视觉-语言模型在机器人中的应用

本章内容聚焦大模型时代人形机器人的感知体系升级,系统介绍了视觉—语言模型、多模态Transformer与3D大模型在机器人中的核心作用,详细讲解了文本、视觉、点云与语音等信息的语义对齐与融合机制,介绍了从语言指令到视觉目标的Grounding、任务分解与意图理解方法,并通过闭环感知与决策联动,展示了大模型支撑机器人在复杂真实场景中的理解、规划与实时行动的用法。 10.1  视觉-语言模型在机器人中的应用 视觉—语言模型(Vision-Language Model,VLM)通过统一建模视觉与自然语言,使机器人具备“看懂并理解语言”的能力,是大模型时代机器人感知与认知融合的核心技术。VLM不仅能够完成图像识别、目标检测等传统感知任务,还可以直接理解语言指令、进行语义推理,并将高层语义映射为可执行的感知与行动目标,在人形机器人中广泛应用于交互理解、场景认知和任务执行等环节。 10.1.1  CLIP/BLIP/Flamingo等模型简介 随着大规模多模态数据与Transformer架构的发展,视觉—语言模型逐渐从“跨模态对齐”演进为“多模态理解与推理”。CLIP、BLIP与Flam