PX4飞控之导航及任务架构

本文解析了PX4飞控的Navigator模块,介绍了其在无人机自主飞行中的关键作用,包括任务类型确定、地理围栏设置及失效保护等功能,并详细阐述了mission模式下任务航点的更新逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文重点介绍PX4飞控的Navigator和mission控制框架和逻辑。Navigator导航部分是无人机自主飞行控制的核心所在,其中包括自主起飞、自主降落、自主返航、自主任务以及GPS失效保护等各个部分。搞懂这个部分有助于理解无人机的自主飞行过程,闲话少说,上干货。
PX4飞控的整体架构参见Px4源码框架结构图
飞控源码框架图
Navigator模块主要功能在于确定任务类型、地理围栏、失效保护,把任务航点更新后送给位置控制器。其中task_main函数是主函数。
Navigator中的函数流
在task_main 函数中,主要分为如下几个部分:
navigator
当commander中的传输来的导航模式为mission时,依次运行mission.cpp中的三个函数:初始化on_activation()、主函数on_active()、退出函数on_inactive()。
对于mission模式的主函数on_active(),代码逻辑如下:
mission
mission的主要功能在于对航点数组pos_sp_triplet更新和赋值,航点数组包括previous、current、next三个航点,这一功能由函数set_mission_item()来实现,主要的逻辑为先从SD卡中读取航点信息read_mission_item()赋值给结构体mission_item,然后再将当前航点复制给pos_sp_triplet.current
set_mission_item
每当一个航点任务完成is_mission_item_reached()返回值为true,则指针++,读取SD卡中的下一个航点。而判断航点的是否完成由三个判断条件:
mission reach
航向控制由函数heading_sp_update()实现,将航向setpoint计算赋值给pos_sp_triplet.current.yaw,给到pos控制环,进行航向控制。
航向控制
至此,导航完成了航点经纬高、航点类型、航向等信息的更新。而位置控制环以pos_sp_triplet为目标进行控制。
注:航点数组中的高度为绝对高度。

<think>好的,用户的问题是关于如何将Pixhawk 4与Jetson TX2进行硬件连接,以实现PX4无人机的自主制。我需要根据提供的引用内容来整理回答。首先,用户提到的引用[1]中已经说明了接线的基本方法,即的RX接TX2的TX,TX接RX,GND连在一起。这应该是关键点。 接下来,用户可能需要更详细的步骤说明,比如具体使用哪个串口,是否需要电平转换模块,或者是否需要配置软件部分。引用[2]提到可以参考配置ROS和MAVROS的环境,这可能涉及到软件设置,但用户目前的问题集中在硬件连接,所以可能需要在回答中简要提到后续的软件配置步骤,但重点放在接线上。 我需要确认Pixhawk 4的串口引脚位置。一般来说,Pixhawk 4有多个TELEM端口,比如TELEM1和TELEM2,用户需要选择其中一个来连接。通常TELEM1用于数传,而TELEM2可能用于其他设备,比如机载计算机。因此,建议用户使用TELEM2端口进行连接,并确保端口配置正确。 另外,Jetson TX2的GPIO引脚可能有所不同,具体是哪几个引脚对应串口。根据引用[1]中的Auvidea J120底板,可能已经引出了特定的UART接口,用户需要根据底板文档找到对应的TX、RX和GND引脚。如果没有使用该底板,可能需要通过其他方式连接,比如USB转串口模块,但用户问题中的引用提到直接连接,所以假设用户有可用的串口引脚。 接下来,需要检查是否需要电平转换,因为Pixhawk的串口通常是3.3V,而Jetson TX2的UART电压可能也是3.3V,所以可能不需要额外的转换。但需要确认这一点,避免损坏设备。 最后,硬件连接完成后,用户需要进行软件配置,比如在PX4中设置正确的串口参数,启用MAVLink,以及在Jetson TX2上安装MAVROS并配置相关节点。引用[2]中的博客可能提供了详细的步骤,因此在回答中可以建议参考该资源进行后续设置。 总结回答的结构应该是:先说明接线步骤,包括具体的端口和引脚连接,然后给出注意事项,比如电平匹配和接触问题,最后简要提到软件配置的必要性,并引导用户参考提供的引用资源。同,生成的相关问题可能涉及软件配置、常见错误排查以及自主制的其他方面。</think>### Pixhawk 4与Jetson TX2硬件连接教程 #### 1. **接线原理与步骤** - **关键接口**:Pixhawk 4的串口(如`TELEM2`)与Jetson TX2的UART接口需通过**交叉连接**实现双向通信。 - **Pixhawk 4端**:`TELEM2`端口的`TX`(发送)接Jetson TX2的`RX`(接收),`RX`(接收)接Jetson TX2的`TX`(发送),`GND`(地线)互连[^1]。 - **Jetson TX2端**:若使用Auvidea J120底板,其GPIO引脚中`UART1_TX`(Pin 8)和`UART1_RX`(Pin 10)为常用串口;需确认具体引脚定义。 - **物理连接示例**: ``` Pixhawk TELEM2 TX → Jetson TX2 RX Pixhawk TELEM2 RX → Jetson TX2 TX Pixhawk GND → Jetson TX2 GND ``` #### 2. **硬件配置注意事项** - **电平匹配**:Pixhawk 4的串口为3.3V电平,Jetson TX2的UART通常兼容3.3V,无需额外电平转换模块。 - **接触稳定性**:建议使用杜邦线或焊接固定,避免行振动导致接触不良。 - **端口选择**:若需多设备通信,可通过`TELEM1`连接数传,`TELEM2`专用于机载计算机。 #### 3. **软件配置准备** - **PX4参数设置**:在QGroundControl中启用`TELEM2`的`MAVLink`协议,设置波特率为`921600`(默认值)。 - **Jetson TX2环境**:安装ROS与MAVROS包,配置串口设备权限(如`/dev/ttyTHS1`)[^2]。 #### 4. **验证连接** - **基础测试**:使用`minicom`或`screen`工具监听Jetson TX2的串口,检查是否收到PX4的`HEARTBEAT`消息。 - **MAVROS测试**:运行`roslaunch mavros px4.launch`,确认`/mavros/state`节点显示`connected`[^2]。 --- ###
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值