主要内容

Getting Started with uORB Blocks for PX4 autopilot S万博1manbetxupport Package

此示例演示如何使用PX4自动驾驶仪UAV工具箱支持包中的PX4 uORB Read和PX4 uORB Write块在uORB网络中读取和写入uORB消息。万博1manbetx

介绍

用于PX4 autopi万博1manbetxlot的UAV工具箱支持包使您能够创建与uORB中间件一起工作的Simulink模型。万博1manbetxuORB是一个异步publish() / subscribe()消息传递API,用于线程间/进程间通信。组件通过将消息发布到特定的主题来发送消息,例如sensor_accel。其他组件通过订阅该主题来接收消息。

用于PX4 autopi万博1manbetxlot的无人机工具箱支持包包括Simulink块库,用于发送和接收指定uORB主题的消息。万博1manbetx当您为包含PX4 uORB Read和PX4 uORB W万博1manbetxrite块的Simulink模型生成代码并将其部署到Pixhawk系列飞行控制器时,控制器中的Simulink应用程序从uORB网络读取数据,并将相应的uORB主题的数据写入网络。

在本例中,您将学习如何:

  • 创建Simul万博1manbetxink模型来发送和接收uORB消息

  • 通过在External模式下运行模型来观察实时uORB数据

先决条件

  • 执行最初的设置和配置任务使用硬件设置屏万博1manbetx幕查看支持包的详细信息。

所需的硬件

要运行此示例,您需要以下硬件:

  • Pixhawk系列飞行控制器

  • 微型USB B型电缆

  • Micro-SD卡(已在使用期间初始硬件设置

任务1 -配置并运行一个模型,使用uORB主题读取传感器数据

在本任务中,您将配置一个Simulink模型,使用PX4 uORB r万博1manbetxead块从PX4飞行控制器读取传感器数据,并通过外部模式观察数据。

1.从MATLAB toolstrip中,选择首页>刚出现的>万博1manbetx仿真软件模型,以打开Simulink开始页万博1manbetx。点击空白模型启动一个新的Simulink模型万博1manbetx。

2.在Simuli万博1manbetxnk工具栏上,选择“View > Library Browser”,打开Simulink Library Browser。单击“PX4 autopilot UAV工具万博1manbetx箱支持包”选项卡(您也可以键入px4lib在MATLAB命令窗口中)。选择PX4 uORB读写块类别

3.拖放PX4 uORB读块到模型。

4.双击该块以打开块掩码。点击选择在“要订阅的主题”字段旁边。将出现一个弹出窗口,其中包含味精下载的PX4固件的文件夹。选择传感器加速度.msg,然后单击开放.点击好啊关闭块掩码。

5.从库浏览器的Sim万博1manbetxulink>信号布线选项卡中,拖放总线选择器块到模型。

6.连接味精的输出PX4 uORB读块到总线选择器块的输入端口。

7.单击Modeling > Update Model以确保传播总线信息。你可能会得到一个错误:在输入总线信号中找不到总线选择器块“无标题/总线选择器”中的选定信号“信号1”.这个错误是预期的,它将在下一步中解决。

8.双击总线选择器块。选择???signal1???signal2在右侧的列表中,单击删除.选择左侧列表中的x、y、z信号,单击选择> >.点击好啊

9.从库浏览器的Sim万博1manbetxulink>接收器选项卡中,拖放四个显示块到模型。将总线选择器块的三个输出连接到三个显示块。连接状态输出到第四个显示块。您的整个模型应该是这样的。

10使用USB电缆将Pixhawk系列控制器连接到主机。

11.建模选项卡上,单击模型设置

12.在“配置参数”对话框中,导航到硬件实现窗格:

  • 设置硬件板到您在硬件设置屏幕中选择的相同Pixhawk系列控制器。

  • 目标硬件资源节中,输入Pixhawk系列控制器所连接的主机串口,在用于固件上载的串行端口字段。的Nuttx(NSH)终端的串行端口是可选的。

13.模拟选项卡,将模拟停止时间设置为inf

14.硬件选项卡,在模式部分中,选择机上运行然后点击监视和优化启动信号监测和参数调整。

等待代码生成完成。每当出现指示您将飞行控制器重新连接到串行端口的对话框时,请确保单击好啊在对话框内5秒重新连接飞行控制器后。

在Pixhawk系列控制器闪烁后,等待信号监控启动。

在模拟运行时观察加速度计的值。改变板沿所有轴的位置,观察相应的加速度计沿这些轴的值。

一个预先配置的仿真软件模型万博1manbetx也是可用的,它可以帮助您读取加速度计,陀螺仪,和气压计的值使用sensor_accelsensor_gyrosensor_baro分别uORB主题。该型号默认配置为PX4 Host Target。当硬件单板设置为“PX4 Host Target”时,可进行“Connected I/O仿真”。当您在Connected I/O中模拟一个模型时,该模型与PX4 Host Target通信,使您能够从Simulink中读写数据到PX4 Host Target。万博1manbetx

在MATLAB中执行以下命令,打开预配置模型:

开放式系统(“px4demo_uORBRead”);

任务2 -创建发布者

在本任务和两个后续任务(任务3和任务4)中,您将使用vehicle_gps_positionuORB专题。

1.从MATLAB工具条中,选择HOME > New > Simulink Model,打开一个新万博1manbetx的Simulink模型。

2.在Simuli万博1manbetxnk工具栏上,选择“View > Library Browser”,打开Simulink Library Browser。单击“PX4 autopilot UAV工具万博1manbetx箱支持包”选项卡(您也可以键入px4lib在MATLAB命令窗口中)。选择PX4 uORB读写块类别

3.拖放PX4 uORB写入块到模型。

4.双击该块。点击选择“要发布到的主题”字段旁边。将出现一个弹出窗口,其中包含味精所选PX4固件的文件夹。选择vehicle_gps_position.msg,然后单击开放

点击好啊关闭块掩码。

任务3 -创建一个空白uORB消息

在这个任务中,您将在task 2中创建的模型中创建一个空白uORB消息,并填充uORB主题的纬度(lat)、经度(lon)、海拔(alt)和速度(vel_m_s)字段vehicle_gps_position

在Simulink中,uORB消息表示为总线信号。万博1manbetx总线信号是一组Simulink信号,也可以包括其他总线信万博1manbetx号(参见万博1manbetxSimulink总线信号的例子概述)。的PX4 uORB消息模块输出与uORB消息对应的Si万博1manbetxmulink总线信号。

1.在Simuli万博1manbetxnk工具栏上,选择视图>库浏览器以打开Simulink库浏览器。单击PX4自动驾驶仪的UAV工具箱支持包选项卡(您也可以输入命令万博1manbetxpx4lib在MATLAB命令窗口中)。选择thePX4 uORB读写块类别

2.拖放PX4 uORB消息块到模型。双击该块以打开块掩码。

3.点击选择挨着话题字段。将出现一个弹出窗口,其中包含味精所选PX4固件的文件夹。选择vehicle_gps_position.msg,然后单击开放.点击好啊关闭块掩码。

4.从库浏览器的Sim万博1manbetxulink>信号布线选项卡中,拖放总线分配块。

5.连接设备的输出端口PX4 uORB消息块到总线分配块的总线输入端口。连接总线分配块的输出端口到PX4 uORB写块的输入端口。

6.双击总线分配块以打开块掩码。你应该看到lat, lon, alt和vel_m_s(信号包括avehicle_gps_positionuORB主题)列在左侧。选择???signal1在右侧的列表中,单击删除.在左侧列表中选择lat、lon、alt和vel_m_s信号,然后单击选择> >把它们移到右边。点击好啊关闭块掩码。

请注意:如果您没有看到列出的信号,请关闭总线分配块的块掩码,并单击Simulation > Update Diagram以确保总线信息已正确传播。如果你看到错误,在总线分配块中找不到选定的信号'signal1',表示总线信息尚未传播。关闭诊断查看器,并重复上述步骤。

现在可以使用表示GPS位置的随机值填充总线信号。

7.在Library 万博1manbetxBrowser中的Simulink > Sources选项卡中,拖放四个常数块到模型中。

8.将每个Constant块的输出端口连接到总线分配输入端口。

9.双击连接到总线分配的每个常量块,设置常数值(如下图所示),并将Output数据类型设置为继承:通过反向传播进行继承

模型现在应该是这样的:

任务4 -创建订阅服务器

在此任务中,您将向task 3中创建的模型添加订阅者(PX4 uORB Read块),以接收发送到vehicle_gps_position的话题。您将从消息中提取lat、lon、alt和vel_m_s信号。

1.从库浏览器中PX4自动驾驶仪的UAV工具箱万博1manbetx支持包选项卡中,拖放PX4 uORB读块到模型。

2.双击该块。点击选择挨着要订阅的主题字段。将出现一个弹出窗口,其中包含味精所选PX4固件的文件夹。选择vehicle_gps_position.msg,然后单击开放.点击好啊关闭块掩码。

PX4 uORB读块输出Simulink总线信号;万博1manbetx所以你需要从它提取lat, lon, Alt和vel_m_s信号。

3.从库浏览器的Sim万博1manbetxulink>信号布线选项卡中,拖放总线选择器块到模型。

4.连接味精将PX4 uORB读取块输出到总线选择器块的输入端口。

5.单击Modeling > Update Model以确保传播总线信息。你可能会得到错误,在输入总线信号中找不到总线选择器块“无标题/总线选择器”中的选定信号“信号1”.这个错误是预期的,将在下一步解决。

6.双击总线选择器块。选择???signal1???signal2在右侧的列表中,单击删除. 在左侧列表中选择lat、lon、alt和vel_m_s信号,然后单击选择> >.点击好啊

PX4 uORB读块在每个时间步骤上输出最近接收到的主题消息。Status输出表明在上一个时间步骤中是否收到消息。对于当前任务,Status输出是不需要的,你可以终止它,如下所示:

7.在库浏览器中万博1manbetx单击Simulink > sink选项卡。拖放《终结者》块到模型。

8.将PX4 uORB Read块的Status输出连接到Terminator块的输入。

下一步将帮助您配置显示提取的lat、lon、alt和vel_m_s信号。

9.从库浏览器的Sim万博1manbetxulink>接收器选项卡中,拖放四个显示块到模型。将总线选择器块的每个输出连接到每个显示块。

你的整个模型应该是这样的:

10保存模型。

任务5 -配置和运行模型

在本任务中,您将定义配置参数并运行完整的模型(通过任务2到4创建),用于信号监视和参数调优。

1.打开“配置参数”对话框,并将目标硬件设置为在硬件设置屏幕中选择的Pixhawk系列控制器。

2.输入Pixhawk系列控制器连接到主机的串行端口。单击应用好啊

3.模拟选项卡,将模拟停止时间设置为inf

4.硬件选项卡,在模式部分中,选择机上运行然后点击监视和优化启动信号监测和参数调整。

6.在模拟运行时,更改连接到的常量块的值中高音总线分配块的字段,从37到44.你可以观察到相应的变化显示块连接中高音总线选择器块的端口。

7.请注意,基本MATLAB工作区有一个或多个名称以开头的变量px4_总线_.这些是Simulink创建的临时总线对象,不应该修改。万博1manbetx但是,将它们从工作空间中清除是安全的,因为如果需要,它们将被重新创建。

8.硬件选项卡上,单击停止停止模拟。

一个预先配置的模型有发布/订阅块可供参考。此模型以PX4主机目标配置为默认板。当PX4主机目标设置为硬件板时,可以执行连接的I/O模拟。在MATLAB中运行以下命令以打开预配置的模型:

开放式系统(“px4demo_uORBReadWrite”);