Paparazzi UAV Lisa/M2飞控使用说明书

2023-05-16

 

第一部分 地面站

   Paparazzi (简称PPZ)UAV项目起始于2003年,由法国民航大学发起的一套软硬件开源无人机项目,它提供了一整套完整的无人机软硬件解决方案。

   PPZ 地面站软件运行在Linux Ubuntu操作系统(12/14/16.04 LTS版本均可测试通过)上,是集参数配置、编译、上传、仿真、实飞等功能的一体化平台。

   安装方法:在Ubuntu 操作系统上调出命令行(Ctrl+Alt+T),输入:

sudo add-apt-repository -y ppa:paparazzi-uav/ppa && sudo add-apt-repository -y ppa:team-gcc-arm-embedded/ppa && sudo apt-get update && sudo apt-get -f -y install paparazzi-dev paparazzi-jsbsim gcc-arm-embedded && cd ~ && git clone --origin upstream https://github.com/paparazzi/paparazzi.git && cd ~/paparazzi && git remote update -p && git checkout -b v5.14 upstream/v5.14 && sudo cp conf/system/udev/rules/*.rules /etc/udev/rules.d/ && sudo udevadm control --reload-rules && make && ./paparazzi

漫长的等待之后安装完成。注意的是make过程之中会访问google地图,出现卡死现象,因此建议至少把上述命令分解两部分,绿色和红色部分,在绿色部分运行完毕之后,修改Paparazzi文件夹根目录下的Makefile文件,找到这么一行,将其删除:

update_google_version:
 -$(MAKE) -C data/maps

然后运行红色部分,安装完成后即可使用PPZ Center。如果是root用户直接切入paparazzi根目录./paparazzi启动,如果是普通用户则需要sudo ./paparazzi,因为在一些环节需要权限(譬如调用USB驱动程序从数传读数据)

https://img-blog.csdn.net/20150721112454802?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

 

PPZ Center的左侧是配置文件位置,A/C就是aircraft,载机,例如选择Microjet_LisaM,就是Lisa M的固定翼机型。id代表飞机的编号,Target 选择编译方式,如果没有硬件可以仿真(sim),如果有Lisa飞控板则可以选择ap,然后build,编译飞控代码。upload上传代码到主板;Session 仿真或者USB-57600(根据实际情况选择),Execute后开始运行地面站。

关于谷歌地图被墙,需要更改为Bing地图,激活GCS对话框,勾选菜单栏的Maps -> Map Sources -> Bing,然后点击GCS上方那个地球的图标(WGS84左侧那个),则黑色背景会缓慢被下载的Bing地图替换。默认的坐标是国外的一个地方。可以在飞行计划里修改为你当地的具体位置。

https://img-blog.csdn.net/20150703164304803?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

 

第二部分 硬件概况

主板:

• STM32F105RCT6 微控制器,带 256kB FLASH 以及 64kB RAM
• 7 x
模拟输入通道
• 3 x 通用数字输入输出
• 2 x 3.3V/5V TTL UART
• 8 x Servo PPM outputs (only 6 if second I2C (I2C1) bus in use)
• 1 x CAN
总线
• 1 x SPI 总线
• 1 x I2C 总线(在使用前 6 个伺服输出情况下可扩展为 2 x)
• 1 x Micro USB
接口
• 5 x LED 状态指示灯
• 10.8 (安装 Aspirin IMU)
• 9.9
(不安装 Aspirin IMU )
• ~34mm x ~60mm x ~10mm
• 4
PCB 设计

与该主板配套的 Aspirin IMU 包含如下传感器:

• 3 轴陀螺仪
• 3 轴加速度计

• 3 轴磁力计
• MS5611 气压计

 

第三部分 接线方法

板正面包含所有对外接口、 LED 指示灯、 5.0V 3.3V 电源稳压模块、12MHz晶振等。板背面包含 MCU IMU 焊盘、 CAN 芯片、双向电平芯片等。8 路伺服输出的 3PIN 排针从上往下依次表示信号、电源、地 通过 Micro USB 接口可以方便地更新飞控程序。插上数据线后, LED1~5依次跑马灯闪烁。在 PPZ Center 内成功编译代码后,点击 Upload(上传),应出现进度条信息。完成程序更新后跑马灯消失。 LED1 系统时钟, 1Hz 频率闪烁; LED2 在完成 ARHS 算法初始化后常亮; LED3 表示 GPS 指示灯,成功连接后闪烁; LED4 为遥控的接收机指示灯,成功连接后常亮 LED5 保留未使用,用户可以配置他用。

 

 

第四部分 装机示例

单马达、双舵机(如天行者 X5

 

  1. 电池与电调相连接,电调包含 3PIN 信号线自带的 5V 输出连接到主板伺服 1 为主板供电,同时电调的另一端输出为电机供电。电池电压可以通过将电池的正极引出一根线至主板的 V_BAT接口。
  2. 数传电台 XBee 接入主板的 UART2,也可以用更为廉价的 3DR 数传代替。
  3. GPS 模块接入 UART3,支持 UBX 协议、 NEMA 协议的 GPS。
  4. 遥控器接收机与 UART1/5 相连,也可以用含有 PPM 编码的接收机通过伺服 6 与主板相连。
  5. 主板的伺服 2、 3 分别连接舵机。两个舵机采用混控方式, PPZ Center 中该主板默认的配置文件即为此种机型。

 

单马达、四舵机(如冲浪者)

 

四舵机(副翼、 升降舵、方向舵)固定翼。

  1. 电池与电调相连接,电调包含 3PIN 信号线自带的 5V 输出连接到主板伺服 1 为主板供电,同时电调的另一端输出为电机供电。电池电压可以通过将电池的正极引出一根线至主板的 V_BAT接口。
  2. 数传电台 XBee 接入主板的 UART2,也可以用更为廉价的 3DR 数传代替。
  3. GPS 模块接入 UART3,支持 UBX 协议、 NEMA 协议的 GPS。
  4. 遥控器接收机与 UART1/5 相连,也可以用含有 PPM 编码的接收机通过伺服 6 与主板相连。
  5. 主板的伺服 2、 3、 4、 5 分别连接舵机,分别是左右副翼、升降舵、方向舵。 注意: 实际中我们常用 Y 舵机分线连接副翼,也就是副翼只用 1 个伺服端口。

 

四轴

 

  1. 电池与经过四路分别于四个电调相连接,电调包含 3PIN 信号线自带的 5V 输出连接到主板伺服 1、 2、 3、 4 为主板供电,同时电调的另一端输出为电机供电。电池电压可以通过将电池的
  2. 正极引出一根线至主板的 V_BAT 接口。
  3. 数传电台 XBee 接入主板的 UART2,也可以用更为廉价的 3DR 数传代替。
  4. GPS 模块接入 UART3,支持 UBX 协议、 NEMA 协议的 GPS。
  5. 遥控器接收机与 UART1/5 相连,也可以用含有 PPM 编码的接收机通过伺服 6 与主板相连。

 

第五部分 外部设备

1 电机与电调

首次使用,需要校准电调(注意遥控器设置为pwm模式,也即关闭ppm(参阅FAQ:如何设置富斯遥控的PPM模式)

1.将电调的3PIN线连接到遥控接收机的油门通道(通常为通道3

2.打开发射机,然后将油门摇杆置于最大(全满)

3.连接电池

4.你会听到一段音乐声而后有两个“哔”音。在两个“哔”音之后,将油门摇杆放低至最低。然后你会听到几声“哔”音(每一声代表你所使用的电池的一芯),随后一个长“哔”声表示终点已被设定而且电调已校准

5.断开电池。在所有电调上重复这些步骤

 

最好使用飞控连接状态下校准电调:

 

  1. 拔了电池,使用USB线烧录程序,之后飞控执行程序,各个伺服输出有信号
  2. 把遥控器油门推到最大
  3. 接入想要校准的通道的电调与电机
  4. 同上面的第四步

 

2 无线数传电台

无线数传电台的协议选择透明传输(所收即所发),在机体配置文件中表示为:

<subsystem name="telemetry" type="transparent"/>

Lisa主板上,默认硬件接口选择UART2,波特率57600,如需参数配置,位置在paparazzi/conf/boards/下的lisa_m_2.0.makefile文件中:

MODEM_PORT ?= UART2

MODEM_BAUD ?= B57600

Paparazzi Center里的Session选择Flight USB-serial@后面是波特率,选择57600(与配置文件匹配!)。小常识:低波特率可以降低误码率,提升电台的工作距离。

 

3 遥控器与接收机

Spektrum型号的接收机可以直接将指令转换为串口通信,主板预留了UART1/5接口,为官方的默认配置类型。而且有两个接收机,提高可靠性,机体配置如下:

<subsystem name="radio_control" type="spektrum">

    <define name="RADIO_MODE" value="RADIO_AUX1"/>

    <configure name="USE_SECONDARY_SPEKTRUM_RECEIVER" value="1"/>

</subsystem>

若从节约成本角度考虑,选择ppm编码输出的接收机(参阅FAQ:如何设置富斯遥控的PPM模式)也可以满足需求。ppm输出与主板的伺服6端口相连。此时机体配置文件修改如下:

<subsystem name="radio_control" type="ppm"/>

 

4 GPS模块

GPS的协议选择透ubx(全球著名ublox厂商私家协议标准),在机体配置文件中表示为:

<subsystem name="gps"           type="ublox"/>

选择ubx协议意味着购买的GPS模块只能是ublox品牌。

其实GPS协议还可以选择国际通行标准nmea,如果这样可选择的GPS模块就有很多。但是paparazzi存在bug,编译不能通过。

关于GPS模块本身的配置需要参照不同品牌,例如ublox模块提供了u-center配置环境,在windows下修改GPS模块的参数,当然还需要一个硬件模块(GPS参数配置板)连接GPS模块与PC

Lisa主板上,硬件接口选择UART3,波特率38400,参数配置位置在paparazzi/conf/boards/下的lisa_m_2.0.makefile文件中:

GPS_PORT ?= UART3

GPS_BAUD ?= B38400

其他需要强调的是,GPS模块需要再空旷的地带才能获取良好的精度,并稳定显示在地图中的某个点,否则存在严重的漂移现象(实际上飞机就放在地面)、甚至无法定位。此外,试飞前通电约两分钟再重新上电有利于GPS模块消除缓存误差,提高精度与稳定性。

 

第六部分 配置文件

       运行Paparazzi Center之后左侧有许多配置选项,第一项A/C便为机体配置项,可以下拉选择不同的机型以及飞控;同时我们也可以发现,这些机体文件存放在paparazzi工程的airframes/examples目录下面。在Airframe选项里可以浏览或者编辑机体配置。

 

Lisa/M v2.0为例:固定翼机A/C选择Microjet_LisaM,默认体配置文件为microjet_lisa_m.xml;四轴的A/C选择Quad_LisaM_2,默认机体配置文件为quadrotor_lisa_m_2_pwm_spektrum.xml。下面点击编辑,文件内容有很多,我们关心的几个核心的配置(必须掌握)

基础配置

<target name="ap" board="lisa_m_2.0">
<configure name="LISA_M_BARO" value="BARO_BOARD_BMP085"/>
</target>

使用板载气压计 BMP085,如果 IMU 选择的是 Aspirin v2.2,那么换为 MS5611 气压计。
<configure name="USE_MAGNETOMETER" value="TRUE"/>
使用电子罗盘, 如果设置为 FLASE 则用的是 GPS 作为方向判断
<subsystem name="radio_control" type="ppm"/>
使用 ppm 编码的接收机
<subsystem name="telemetry" type="transparent"/>
无线数传为透明传输模式
<subsystem name="imu" type="aspirin_v2.1"/>
使用 aspirin_v2.1 版本的 IMU,据实可改为使用 aspirin_v2.2 版本的 IMU
<subsystem name="gps" type="ublox"/>
使用 ubx 协议的 GPS
<subsystem name="stabilization" type="int_quat"/>
使用定点型四元数稳定性算法表达方式
<subsystem name="ahrs" type="int_cmpl_quat"/>
使用定点型四元数互补滤波的 AHRS 算法

两舵机配置(例如天行者 X5):

<servos>

<servo name="MOTOR" no="0" min="1290" neutral="1290" max="1810"/>

<servo name="AILEVON_LEFT" no="1" min="2000" neutral="1510" max="1000"/>

<servo name="AILEVON_RIGHT" no="3" min="1000" neutral="1535" max="2000"/>

</servos>

端口定义, 第一个端口接电机,第二个端口接左副翼,第四个端口接右副翼。

<rc_commands>

<set command="THROTTLE" value="@THROTTLE"/><!-- 油门指令 -->

<set command="ROLL" value="@ROLL"/><!-- 翻滚指令(副翼) -->

<set command="PITCH" value="@PITCH"/>< !-- 升降指令(升降舵) -->

</rc_commands>

遥控指令关联

<section name="MIXER">

<define name="AILEVON_AILERON_RATE" value="0.75"/>

<define name="AILEVON_ELEVATOR_RATE" value="0.75"/>

</section>

左右副翼混控

<command_laws>

<let var="aileron" value="@ROLL * AILEVON_AILERON_RATE"/>

<let var="elevator" value="@PITCH * AILEVON_ELEVATOR_RATE"/>

<set servo="MOTOR" value="@THROTTLE"/>

<set servo="AILEVON_LEFT" value="$elevator - $aileron"/>

<set servo="AILEVON_RIGHT" value="$elevator + $aileron"/>

</command_laws>

遥控指令与各个舵机输出关系

<!-- replace this with your own mag calibration -->

<define name="MAG_X_NEUTRAL" value="-45"/>

<define name="MAG_Y_NEUTRAL" value="334"/>

<define name="MAG_Z_NEUTRAL" value="7"/>

<define name="MAG_X_SENS" value="4.47647816128" integer="16"/>

<define name="MAG_Y_SENS" value="4.71085671542" integer="16"/>

<define name="MAG_Z_SENS" value="4.41585354498" integer="16"/>

磁力计相关参数,使用传感器校准替代以上数据。

<define name="BODY_TO_IMU_PHI" value="0." unit="deg"/>

<define name="BODY_TO_IMU_THETA" value="0." unit="deg"/>

<define name="BODY_TO_IMU_PSI" value="0." unit="deg"/>

设置主板摆放方向(可改变陀螺仪的逻辑关系)

<!--enter your own values-->

<section name="AHRS" prefix="AHRS_">

<define name="H_X" value="0.5169001"/>

<define name="H_Y" value="-0.0596905"/>

<define name="H_Z" value="0.8539621"/>

</section>

电子罗盘的磁偏角,世界各地不一样。

<section name="BAT">

<define name="MILLIAMP_AT_FULL_THROTTLE" value="2000"/>

<define name="CATASTROPHIC_BAT_LEVEL" value="9.3" unit="V"/>

<define name="CRITIC_BAT_LEVEL" value="9.6" unit="V"/>

<define name="LOW_BAT_LEVEL" value="9.7" unit="V"/>

<define name="MAX_BAT_LEVEL" value="12.4" unit="V"/>

</section>

电池电压参数,默认为 3S 配置。

四舵机配置(例如冲浪者 X8)

<servos>

<servo name="THROTTLE" no="0" min="1000" neutral="1000" max="2000"/>

<servo name="AILERON" no="1" min="1948" neutral="1536" max="1108"/>

<servo name="ELEVATOR" no="2" min="1940" neutral="1520" max="1074"/>

<servo name="RUDDER" no="3" min="1844" neutral="1428" max="1004"/>

</servos>

端口定义, 第一个端口接电机,第二个端口接副翼,第三个端口接升降舵、第四个端口接方向舵。

<rc_commands>

<set command="THROTTLE" value="@THROTTLE"/> <!-- 油门指令 -->

<set command="ROLL" value="@ROLL"/> <!-- 翻滚指令(副翼) -->

<set command="PITCH" value="@PITCH"/> <!-- 升降指令(升降舵) -->

<set command="YAW" value="@YAW"/> < !-- 偏航指令(方向舵) -->

</rc_commands>

遥控指令关联

<command_laws> < !-- 端口与指令关联 -->

<set servo="THROTTLE" value="@THROTTLE"/>

<set servo="RUDDER" value="@YAW"/>

<set servo="ELEVATOR" value="@PITCH"/>

<set servo="AILERON" value="@ROLL"/>

</command_laws>

遥控指令与各个舵机输出关系

四轴+配置:
<servos driver="pwm">
<servo name="FRONT" no="0" min="1000" neutral="1100" max="1900"/>
<servo name="BACK" no="1" min="1000" neutral="1100" max="1900"/>
<servo name="RIGHT" no="2" min="1000" neutral="1100" max="1900"/>

<servo name="LEFT" no="3" min="1000" neutral="1100" max="1900"/>
</servos>

端口定义, 1~4 端口分别接前后左右电机。

<section name="MIXING" prefix="MOTOR_MIXING_">

<define name="TRIM_ROLL" value="0"/>

<define name="TRIM_PITCH" value="0"/>

<define name="TRIM_YAW" value="0"/>

<define name="NB_MOTOR" value="4"/>

<define name="SCALE" value="256"/>

<!-- front/back turning CW, right/left CCW -->

<define name="ROLL_COEF" value="{ 0, 0, -256, 256 }"/>

<define name="PITCH_COEF" value="{ 256, -256, 0, 0 }"/>

<define name="YAW_COEF" value="{ -256, -256, 256, 256 }"/>

<define name="THRUST_COEF" value="{ 256, 256, 256, 256 }"/>

</section>

端口混控关系,翻滚、俯仰、偏航、油门指令对应的舵机输出系数。

<command_laws>

<call fun="motor_mixing_run(autopilot_motors_on,FALSE,values)"/>

<set servo="FRONT" value="motor_mixing.commands[0]"/>

<set servo="BACK" value="motor_mixing.commands[1]"/>

<set servo="RIGHT" value="motor_mixing.commands[2]"/>

<set servo="LEFT" value="motor_mixing.commands[3]"/>

</command_laws>

遥控指令与各个舵机输出关系

 

 

第七部分 参数校准

1 配置遥控器

每个遥控器四个最基本的指令是THROTTLE(油门)、YAW(偏航)、PITCH(俯仰)、ROLL(横滚),对应了左右两个摇杆。其余的可以视为辅助通道。在遥控器可以设置剩余通道对应的拨杆或者旋钮。在Radio配置文件中对应为:

<!DOCTYPE radio SYSTEM "radio.dtd">

<radio name="cockpitSX (easy)" data_min="900" data_max="2100" sync_min ="5000" sync_max ="15000" pulse_type="POSITIVE">

  <channel ctl="A" function="ROLL"        min="1000" neutral="1500" max="2000" average="0"/>

  <channel ctl="B" function="PITCH"       min="2000" neutral="1500" max="1000" average="0"/>

  <channel ctl="C" function="THROTTLE"   min="1010" neutral="1010" max="2000" average="0"/>

  <channel ctl="D" function="YAW"         min="1010" neutral="1500" max="1990" average="0"/> 

  <channel ctl="E" function="MODE"        min="1000" neutral="1500" max="2000" average="1"/>

  <channel ctl="F" function="UNUSED"      min="2050" neutral="1500" max="950"  average="1"/>

</radio>

此处列举了6通道遥控器,(注意,这里的顺序可能是不对的)。每个通道对应了minmaxneutral参数。如果通道数量不一样,需要做增加或者减少。

  

图表示了固定翼/多轴在GCS里面的Settings选择ppm输出方法,注意要点击绿色勾选。然后Messages(参阅FAQ:如何打开Messages)里变会多出ppm一项。里面的6个数值分别对应了xml文件里的6个通道数值(xml里面的顺序!。那么这时候开始操纵摇杆,例如油门,观察第几个数值在改变,例如第2个,那需要把function="THROTTLE"那一行移到第2个。继续操纵摇杆把最大值、最小值获取,替换掉xml原有的。这里还需要注意,油门的minneutral设置相等;PITCHminmax相反写(可以尝试,因为这样为了和遥控的俯仰摇杆和实际飞行动作做逻辑对应);另外,function="MODE"表示用摇杆切换飞行模式,例如固定翼中可以有MANUAL,AUTO1AUTO2,上面的xml5行(绿色标识)为模式通道,通过设置遥控器第1个辅助(前面4个为主通道),可以指定哪一个拨杆对应此模式通道(参阅FAQ:如何设置富斯遥控的辅助通道)。模式通道在以后的飞行中将会有很大用处。

 

2 校准传感器

准备工作:在GCS里面的Settings->Telemetry下面,选择raw_sensors并点击右侧绿色小勾!此时Messages(参阅FAQ:如何打开Messages)里面便会多出传感器的原始值。

a.校准加速度计

由于加速度计对外界扰动十分敏感,因此最好将IMU(图中阴影框)固定在一个重物上(例如电池,图中白色框)。校准时要十分小心,操作要规范,否则校准数据会不准确。想象空间有一个立方体,将IMU轮流摆放立方体六个面上,每个轴面放置超过10秒钟,顺序为:

上方->下方->前方->后方->右侧->左侧

注意采样数据要均匀稳定,尤其注意手不能抖动。最后关闭程序,运行一下脚本得到加速度计校准数据。

sw/tools/calibration/calibrate.py -s ACCEL var/logs/YY_MM_DD__hh_mm_ss.data

请将阴影部分替换为真实的文件名。

 

b.校准电子罗盘

第一步,获取当地的磁偏角:

打开网站:http://www.ngdc.noaa.gov/geomag-web/#igrfwmm,输入当地经纬度(南京为例):

点击Calculate之后会弹出结果:

 

我们需要三个分量:

点击Calculate之后会弹出结果:{32,814.2 nT -3,150.1 nT 37,326.1 nT},我们需要用一个数学工具归一化这个向量,可以用scilab或者Wolfram Alpha

这里介绍另外一个方法,在matlab里面依次输入:

a=[32814.2, -3150.1, 37326.1]

b=norm(a)

c=a./b

则可以得到最终想要的磁偏角:0.6589   -0.0633    0.7495,我们写入机体配置文件:

<section name="AHRS" prefix="AHRS_">

    <define name="H_X" value="0.6589"/>

    <define name="H_Y" value="-0.0633"/>

    <define name="H_Z" value="0.7495"/>

</section>

 

第二步,校正罗盘的正确指向:

完成本节开头准备工作,之后将飞机绕着所有轴缓慢旋转,保证磁力计已经在整个球面(如图所示)获取到了采样测量值。

最后运行脚本:

sw/tools/calibration/calibrate.py -s MAG var/logs/YY_MM_DD__hh_mm_ss.data

请将阴影部分替换为真实的文件名。

 

获取最终的下面数值,写入机体配置文件。

<!-- replace this with your own mag calibration -->

 <define name="MAG_X_NEUTRAL" value="-45"/>

 <define name="MAG_Y_NEUTRAL" value="334"/>

 <define name="MAG_Z_NEUTRAL" value="7"/>

 <define name="MAG_X_SENS" value="4.47647816128" integer="16"/>

 <define name="MAG_Y_SENS" value="4.71085671542" integer="16"/>

 <define name="MAG_Z_SENS" value="4.41585354498" integer="16"/>

 

第三步,校正罗盘电流干扰:

电子罗盘测量的是地磁,而飞机上的电气连线难免会有变化的电流产生的磁场,而因此干扰电子罗盘的正常工作。

1. 在机体配置文件里定义 MILLIAMP_AT_FULL_THROTTLE

2. 勾选mag_current_calibration(如图所示),并打开Messages

3. 固定好飞机,缓慢推油门,至满,然后关闭

4. 关闭地面站

接下来,运行以下脚本:

sw/tools/calibration/calibrate_mag_current.py var/logs/YY_MM_DD__hh_mm_ss.data

请将阴影部分替换为真实的文件名。

最后把获取到的数值写入机体配置文件即可:

<section name="IMU" prefix="IMU_">

   ...

   <define name= "MAG_X_CURRENT_COEF" value="0.0591913538739"/>

   <define name= "MAG_Y_CURRENT_COEF" value="-0.132912120794"/>

   <define name= "MAG_Z_CURRENT_COEF" value="-0.0724604582039"/>

   ...

 </section>

3 校准PID

 

更多信息请百度/优酷搜索如何调节PID,调节PID技巧等关键字

 

4 校准姿态

由于飞控安装到载机上不可能严格保证其处于水平位置,换句话说,安装完好的载机放置在地面上,通过地面站观察到的陀螺仪不能严格保证水平。带来的后果是飞机起飞后姿态漂移。校准方法是在Paparazzi CeneterSettings添加body_to_imu.xml,然后编译、上传、并打开地面站,此时在地面站的Settings模块会多出body2imu的选项,打开messages,找到水平分量thetaphi(图中以四轴为例)。此时通过调整b2i phib2i theta,使得messages中的phitheta0即可,记录下此时的参数,写入机体配置文件。

  

 

小提示:默认是修正步进较大(0.5),可以通过修改body_to_imu.xml修改,变小。另外一点,由于飞机放置地面本身就无法保证其处于水平位置,因此上天后可能这些参数可能不为0,还需要进一步调试归0才行。

 

5 上传程序方法

拔掉航模电池,用MicroUSB连接线(一般智能手机都有)连接Lisa M/v2.0主板,可以看到LEDVIN常亮,LED1~LED5以跑马灯闪烁。调出Linux命令行运行lsusb,应当看到多出主板设备,代表PC已经识别了该主板。

打开Paparazzi Center(需要root权限,否则普通用户无法对设备进行读写),选择配置文件:固定翼选择Microject_LisaM,四旋翼选择Quad_LisaM_2Target选择ap; 编译选择“Build”,Flash mode USB DFU(stm32_mem)选择默认也行,因为在lisa_m_2.0.makefile有默认配置:

# default flash mode is via usb dfu bootloader (luftboot)
# other possibilities: DFU-UTIL, JTAG, SWD, STLINK, SERIAL
FLASH_MODE ?= DFU

最后Upload,等待进度条完成即可。

至此完成代码更新。跑马灯熄灭。LED11Hz频率闪烁,LED2闪烁后常亮,姿态解算完成。最后选择右上角的Session, 具体请结合无线数传电台参数选择,例如USB接口57600波特率;最后点击右上角的Execute执行地面站。

第八部分 飞行计划

<flight_plan alt="260" ground_alt="185" lat0="43.46223" lon0="1.27289" max_dist_from_home="1500" name="Basic" security_height="25">

  1. alt:预设飞机飞行海拔(对海平面而言)
  2. ground_alt:飞行场地海拔(对海平面而言)
  3. lat0,lon0HOME点经纬度
  4. max_dist_from_home:围绕HOME点最大飞行半径
  5. security_height:安全高度

 

接下来航点设置,以HOME点位WGS84坐标系O点,设置航点的位置。

<waypoints>

  <waypoint name="HOME" x="0" y="0"/>

  <waypoint name="STDBY" x="49.5" y="100.1"/>

  <waypoint name="1" x="10.1" y="189.9"/>

  <waypoint name="2" x="132.3" y="139.1"/>

  <waypoint name="MOB" x="137.0" y="-11.6"/>

  <waypoint name="S1" x="-119.2" y="69.6"/>

  <waypoint name="S2" x="274.4" y="209.5"/>

  <waypoint alt="215.0" name="AF" x="177.4" y="45.1"/>

  <waypoint alt="185.0" name="TD" x="28.8" y="57.0"/>

  <waypoint name="_BASELEG" x="168.8" y="-13.8"/>

  <waypoint name="CLIMB" x="-114.5" y="162.3"/>

</waypoints>

注意,HOME为开始这是的经纬度,设置为{0,0},第二,航点也可以设置高度,如果不设置,默认为round_alt,但是在AF->TD降落航线一般要重新指定,也就是起降海拔、降落目标海拔。

 

更多信息参阅QQ群文件:Flight Plans.pdf

第九部分 常见问题

如何打开菜单栏

Ubuntu操作系统的菜单栏统一在桌面最顶部,而且隐藏起来,需要激活应用程序的对话框,然后鼠标移动到桌面顶部(偏左),便会出现该应用程序的菜单栏。

 

如何打开消息(Messages

请激活Paparazzi Center对话框,然后在菜单栏(参阅FAQ,如何打开菜单栏)的在Tools里面下拉选择Messages,消息便会出现。

 

如何打开实时示波器(Real-time Plotter

请激活Paparazzi Center对话框,然后在菜单栏(参阅FAQ,如何打开菜单栏)的在Tools里面下拉选择Real-time Plotter,实时示波器便会出现。把Messages里面的数值拖拽到示波器里可以观察数据的实时变化曲线。

 

四轴+x型配置的电机转向是什么

         

 

四轴+型配置与飞控如何对应安装

飞控伺服14分别接入四轴的前、后、右、左的电调

四轴如何解锁

前提是,已经正确设置了遥控器摇杆的行程!

如何设置富斯遥控的PPM模式

 

如何设置富斯遥控的辅助通道

 

注意长按CANCEL键生效!

数传为何连接不上地面站

  1. 确认飞控指示灯,LED1常量,LED2闪烁;
  2. 检查数传指示灯,绿灯常量(代表配对成功),红灯闪烁(代表有数据传输)
  3. 通过命令行lsusb查看Ubuntu系统的USB设备列表,看看系统是否已经识别了数传硬件;
  4. 确认是以root权限打开的paparazzi center

群文件有串口调试助手,可以在windows下接收数据。

 

欢迎加入QQ 交流群: 34528825 (Paparazzi UAV 技术交流)
 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Paparazzi UAV Lisa/M2飞控使用说明书 的相关文章

  • 了解python之面向对象

    了解python之面向对象 面向对象概念 xff1a 面向对象编程 xff08 Object Oriented Programming xff0c 简称OOP xff09 是一种程序涉及思想 OOP把对象作为程序的基本单元 xff0c 一个
  • 了解python之进程与线程

    了解python之进程与线程 本文虽然叫作 了解python进程与线程 xff0c 但还是有点难度的 可以先查阅另外一篇文字 xff0c 快速入门 Python快速入门多线程与多进程 1 进程 进程 xff08 Process xff0c
  • Python快速入门多线程与多进程

    Python快速入门多线程与多进程 多线程 多线程的含义 进程我们可以理解为是一个可以独立运行的程序单位 xff0c 比如打开一个浏览器 xff0c 这就开启了一个浏览器进程 xff1b 打开一个文本编辑器 xff0c 这就开启了一个文本编
  • C++中strcmp的头文件问题

    C 43 43 中strcmp的头文件问题 今天在写程序时遇到的一个问题 include lt stdio h gt include lt string gt using std string int main char str STEL
  • strlen()函数详解

    头文件 xff1a include lt string h gt strlen 函数用来计算字符串的长度 xff0c 其原型为 xff1a unsigned int strlen char s strlen 用来计算指定的字符串s 的长度

随机推荐

  • 阿里云物联网平台基本设置-物模型

    陈拓 2019 12 14 2020 01 15 1 概述 如何让设备连接上云 xff1f 参考如下路径 本文以一个温度传感器为例 xff0c 演示创建产品 定义物模型 创建设备 虚拟设备调试 xff0c 这几部分 2 阿里云开通 2 1
  • Make与CMake

    1 Make与CMake 首先先来了解一下gcc xff0c gcc是GNU Compiler Collection 就是GNU编译器套件 xff0c 也可以简单认为是编译器 xff0c 它可以编译很多种编程语言 包括C C 43 43 O
  • C++学习(23)

    1 分析下述代码运行 xff1a include lt iostream gt using namespacestd int main int a 10 61 0 1 2 3 4 5 6 7 8 9 int p 61 a cout lt l
  • 史上最全最丰富的“最长公共子序列”、“最长公共子串”问题的解法与思路

    花了一天时间把一直以来的 最大子序列 最大递增子序列 最大公共子序列 最长公共子串 等问题总结了一下 其中参考了若干博文 xff0c 都备注引用 首先子序列是指一个一个序列中 xff0c 由若个数 xff08 字母 xff09 组成 xff
  • TCP协议拥塞控制算法(Reno、HSTCP、BIC、Vegas、Westwood)

    TCP协议拥塞控制算法 xff08 Reno HSTCP BIC Vegas Westwood xff09 一 TCP拥塞控制的研究框架 二 现有TCP拥塞控制的算法 xff08 Reno HSTCP Vegas Westwood xff0
  • C# Convert类

    Convert类常用的类型转换方法 方法说明Convert ToInt32 转换为整型 int Convert ToChar 转换为字符型 char Convert ToString 转换为字符串型 string Convert ToDat
  • try catch里面try catch嵌套

    try catch里面try catch嵌套 点击打开链接 try 与catch的作用 首先要清楚 xff0c 如果没有try的话 xff0c 出现异常会导致程序崩溃 而try则可以保证程序的正常运行下去 xff0c 比如说 xff1a t
  • mysql 中使用 where 1=1和 1=1 的作用

    Mysql中where 1 61 1 和count 0 使用小技巧 mysql中使用 where 1 61 1和 1 61 1 的作用
  • 面试题1:OS或者编译器怎么识别是全局变量还是局部变量

    OS或者编译器怎么识别是全局变量还是局部变量 操作系统内根本不关心你是什么变量 xff0c 它只管代理运行程序 xff0c 也就是进程 xff0c 负责这些进程之间的调度 xff0c 不过如果要说操作系统本身也是进程 xff0c 那倒可以理
  • 面试题4:数组、指针、引用的联系区别

    数组和指针 xff1f xff1f xff1f 从两个方面来看 xff0c 一是作为一个语言 xff0c 数组是必须要支持的一种数组类型 xff0c 原因很简单 xff0c 数组是线性表的直接体现 而从编译器设计者的角度来看 xff0c 如
  • c++ 容器类 概括性介绍

    C 43 43 中的容器类包括 顺序存储结构 和 关联存储结构 xff0c 前者包括vector xff0c list xff0c deque等 xff1b 后者包括set xff0c map xff0c multiset xff0c mu
  • 海康摄像头使用RTSP

    1 协议格式 海康威视IP摄像头rtsp协议地址如下 xff1a rtsp username passwd 64 ip port codec channel subtype av stream 主码流 xff1a rtsp admin 12
  • 树莓派串口连接ESP8266

    陈拓 chentuo 64 ms xab ac cn 2020 03 12 2020 03 12 1 概述 ESP8266是物联网行业广泛使用的WiFi模块 xff0c 小巧 功能强大 xff0c 而且价格低廉 通常用电脑进行ESP8266
  • Linux 创建TCP连接流程

    文章目录 Linux创建TCP的步骤服务端客户端TCP建立流程示例代码 Linux创建TCP的步骤 TCP编程需要客户端和服务器两套编码 xff0c 其创建TCP的流程也是不完全一致的 服务端 使用socket函数创建一个套接字使用sets
  • 结构体类型完全归纳

    结构体类型 目录 基本概述 一 结构体类型变量的定义方法及其初始化 1 定义结构体类型变量的方法 2 结构体变量的初始化 二 结构体变量的引用 三 结构体数组 1 定义结构体数组 2 结构体数组应用举例 四 指向结构体变量的指针 1 类型一
  • Ubuntu20.04LTS下安装Intel Realsense D435i驱动与ROS包

    文章目录 目标一 D435i简介二 环境配置三 RealSense的SDK2 0安装四 ROS包安装五 摄像机CV的ROS包节点 六 问题排查 目标 在Ubuntu20 04LTS系统下安装D435i的驱动SDK2和ROS包 xff0c 实
  • C# 调用NationalInstruments的dll报错问题 未能加载文件或程序集

    C 调用NationalInstruments的dll报错问题 问题原因 xff1a dll版本不匹配导致的 xff0c 需要做如下操作解决问题 未能加载文件或程序集 NationalInstruments Common Version 6
  • 需要授权的 API ,必须在请求头中使用 Authorization 字段提供 token 令牌

    需要授权的 API xff0c 必须在请求头中使用 添加字段 需要授权的 API xff0c 必须在请求头中使用 Authorization 字段提供 token 令牌 实现方法 通过 axios 请求拦截器添加 token xff0c 保
  • 关于HTTP解析的一点思考

    原文 似乎已经很久没有提到关于服务器的消息了 xff0c 其实我一直都在写 xff0c 只是有时事情比较多 xff0c 会耽搁一点时间 在使用C重写前 xff0c 我就已经用Dlang实现了近2个版本的HTTP解析器 xff0c 换成C之后
  • Paparazzi UAV Lisa/M2飞控使用说明书

    第一部分 地面站 Paparazzi xff08 简称PPZ xff09 UAV项目起始于2003年 xff0c 由法国民航大学发起的一套软硬件开源无人机项目 xff0c 它提供了一整套完整的无人机软硬件解决方案 PPZ 地面站软件运行在L