px4
文章平均质量分 83
龙猫略略略
做点想做的事
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ros+px4仿真中的二维激光雷达消息
在上面的数据结构中,range_min 和 range_max 表示激光雷达的测量范围,因为激光雷达在太近和太远的地方都不准确。加入 range_min 为 -pi,range_max 为 pi 则扫描就是从 -180 度开始,到 +180 度结束。LaserScan 消息是 ros 激光扫描数据的软件层表示。ros 提供了一个特殊的消息类型 LaserScan来存储激光信息。ranges 则是一个数组,里面存放的就是距离数值。这些数据也都对应了 launch 文件中的参数。后续再修改world文件即可。原创 2025-07-05 16:12:50 · 578 阅读 · 0 评论 -
volans的控制px4画圆思路
可以看到在这里加载了 ros 的节点包,并且配置了参数,之后就会调用 ros 相关的节点程序。launch用于加载各个模型以及脚本文件,画圆的主 launch 文件在 src/simulation/launch/Demo/px4_quadrotor/ 目录下的 circular_px4.launch。主流程中,设置了一个状态机,先等待 offborad 模式,切换到 offboard 模式后,切换其他状态,一步一步发布圆形的轨迹。包含四个部分:运行世界模型,飞机模型,画圆启动程序,键盘控制脚本。原创 2025-07-05 16:01:58 · 350 阅读 · 1 评论 -
转发多台px4仿真UDP数据到地面站
在上述代码中,UDP 在接收时是用不到此ip的,也就是 gcs_sock.bind(('', gcs_tx_port)),函数中的 ip 可以不填,只需要将端口号填对即可,但在发送时,需要指定 ip,而且在给飞控发送心跳时,需要绑定端口号为飞机的端口号。,因此,需要编写一个脚本在主机运行,接收 wsl 中仿真飞机的数据,通过主机的 ip 与端口发送给 app 的主机 ip 与端口(),并且,接收 app 的命令,转发给三台飞机(命令中会包含飞机id,因此脚本不需要做筛选,直接转发给三个即可)。原创 2025-05-13 18:05:56 · 895 阅读 · 0 评论 -
px4的时钟配置宏
例如v6x,PX4的时钟配置宏在 px4/fmu-v6x/nuttx-config/include 文件夹中。时钟配置宏的含义对照 cubemx 的时钟树来看会更清晰。v6x使用的是16M的外部晶振,最终需要配置 480M 的系统时钟,一般使用的是25M,但从配置难度上,16M会比25M配置更容易一些。v6x默认使用 HSE ,即外部晶振作为时钟源。PLL输入源的频率根据配置选择不同的范围。最终得到 480M 的最大时钟频率。原创 2025-03-24 10:46:51 · 514 阅读 · 0 评论 -
px4的垂向控制
例如手控的垂向控制,在手控高度规划 FlightTaskManualAltitudeSmoothVel 中,根据垂向的目标速度,与xy轴的速度轨迹规划一样,也是将目标速度带入速度S曲线,生成相应的轨迹(加加速度,加速度,速度,位置)等垂向信息,之后作为控制输入,代入旋翼的位置控制类 MulticopterPositionControl ,在此类的主循环中,更新位置与悬停油门(推力)的估计数据,调用位置控制类 PositionControl 进行 PVA 控制。1)正常飞行时,高度目标不设置,即为NAN。原创 2025-03-22 13:43:01 · 1154 阅读 · 1 评论 -
px4协处理器bootloader
它的结构很简单,针对不同的硬件配置使用 #if --- #elif --- #end 宏条件编译语句进行配置。也就是说,设置的 200ms,如果在进入 bootloader 后,200ms之内,没有接收到数据,则判断超出时间,则跳转到 app 偏移地址中,如果 200ms 之内,接收到了数据,则停止计时,开始进入接收数据状态。:包含 Makefile,Makefile.f1,Makefile.f3,Makefile.f4,Makefile.f7 五个文件,分别对应系统总的编译流程以及各系列芯片的编译流程。原创 2025-03-14 14:56:09 · 1348 阅读 · 0 评论 -
RTK与RTD基础原理
因为每个卫星都有原子钟,因此每颗卫星的时间基本上都是相同的,不过卫星发射信号的时间点有可能不同,但在发送的报文中,会包含时间戳信息。3)移动端(无人机)将载波相位与自身的载波相位做差,得到载波相位差,进而求解出与基站的距离,再根据基站的坐标与自身解算出来的坐标,求解出定位精度更高的位置坐标。在实际的定位应用中,伪距精度不如载波相位高,但是伪距可以实现绝对定位,通常是两者结合进行综合定位,即RTD与RTK相结合实现准确定位。对一个飞机还有一颗卫星来说,假设卫星的坐标为 X1,Y1,Z1,时间为T1。原创 2025-03-12 21:32:05 · 1059 阅读 · 0 评论 -
px4中的UAVCAN_V1特点与仲裁原理
在 2021 年,UAVCAN 进行了升级,名称也修改为了 OpenCyphal,这是由于其将协议内容扩展到了 UDP,串口,以后也将扩展到更多底层协议,而不单单只能用于 CAN,因此名称修改了。而最初此协议就是基于 CAN 来做的,因此最初名称为 UAVCAN。原创 2025-03-11 18:16:01 · 1426 阅读 · 1 评论 -
px4中的uavcan进程
PX4 中的 uavcan 模块梳理起来是有点杂的,就像 commander 中的内容一个较为杂乱。如果要梳理划分的话,可以按照主题消息的类型来划分,PX4 中的 uavcan 模块需要接收处理的消息主题非常多,因此将其主要分为三类:1)需要收发的非传感器主题消息2)只需接收的传感器主题消息3)服务器消息(用于固件升级)框图如下:在 PX4 中的 uavcan 进程中,在 uavcan_main 中创建主节点,并且在创建主节点时,会将所有的主题消息挂载在主节点上,主节点也就是飞控。服务器消息有一定的条件,即原创 2025-03-10 20:39:30 · 1059 阅读 · 1 评论 -
px4中的DroneCAN
一条完整消息中,消息长度可能超过 8 字节(CAN 一帧最多发 8 个字节),超过 8 字节的消息在 CAN 协议中,会分多帧发送,多帧发送的 请求/响应消息的 ID 都是相同的,不同的是负载内容。如果按照长度的话,可以看作单帧消息与多帧消息,由于 CAN 帧最大就是 8 字节,因此小于等于 8 字节的消息可以单帧发送,大于 8 个字节的只好拆分为多个 CAN 帧发送。--- 如果此主题消息单帧发送不完(超过7个字节),则必然会发送多帧数据,如果此帧是第一帧,则此位为1,否则为0;原创 2025-03-09 01:17:07 · 1859 阅读 · 1 评论 -
无人机如何根据航线重叠率与相机参数计算航线间隔与拍照点
对于一块地表,无人机每隔N秒在空中间隔的拍照地表的一块区域,在整个任务执行结束后,拍到的所有区域照片能够完整的表达出一块地表,那么本次任务就是成功的。例如,在 QGC 中,使用横版放置,选择一个相机,航线高度设置 100 米,重叠率都设置为 70%,根据前向重叠率计算拍照间隔,根据旁向重叠率,计算航线间隔。要通过用户设定的航线重叠率来计算航线间隔与拍照点间隔的话,按照上面的重叠率定义,还缺少照片的覆盖面积是未知的,,指无人机在一条航线前进拍照时,,根据上面的示意图可以看出,因为重叠率是 70%,那么。原创 2025-03-07 17:58:41 · 2649 阅读 · 0 评论 -
PX4中的UAVCAN_V1的实现库libcanard与数据格式DSDL
由于发送的是广播消息,结合 libcanard 中对于发送结构体 CanardTransfer 的定义,广播消息的 remote_node_id 设置为 CANARD_NODE_ID_UNSET,而 transfer_id 与上次相比,自加即可。由于发送的是广播消息,结合 libcanard 中对于发送结构体 CanardTransfer 的定义,广播消息的 remote_node_id 设置为 CANARD_NODE_ID_UNSET,而 transfer_id 与上次相比,自加即可。原创 2025-03-06 23:36:54 · 1301 阅读 · 1 评论 -
PX4中的DroneCAN的实现库Libuavcan及基础功能示例
--此模块运行活动节点监视器,当远程节点响应 uavcan.protocol.GetNodeInfo请求时,模块会检查其固件映像是否比当前运行的节点固件版本更新。如果当前模块是主机的话,会同时再创建一个从机运行,这是做的一个冗余机制,当检测到网络中有更高优先级的主机时,当前节点会启用从机 (suppress(false)),之后与新主机进行同步。在单线程配置中,库的线程应该在 Node<>::spin() 内阻塞。具体在 PX4 中的体现,在 uavcannode 进程中的 uavcannode 类,原创 2025-03-05 22:54:24 · 1318 阅读 · 0 评论 -
PX4中的uavcan进程
传感器消息是非常多的,传感器模块都在 uavcan/sensors 目录下,正是由于种类多,因此 PX4 单独为传感器创建了一个管理器 sensor_bridge ,在管理器中统一创建各个传感器的实例,并且创建了一个默认4个通道的列表,管理所有传感器消息的 uORB 主题发布。由于传感器种类太多,PX4 不仅要接收传感器发送的主题数据,同时在接收之后,还要根据数据更新相应的 uORB 主题消息,因此 PX4 使用这 4 个通道来发布相应的 uORB 主题消息,避免同时发布的数据太多,节省资源,在。原创 2025-03-04 23:19:48 · 812 阅读 · 1 评论
分享