《7.PIXhawkf飞控笔记-第七章指令调试.pdf》由会员分享,可在线阅读,更多相关《7.PIXhawkf飞控笔记-第七章指令调试.pdf(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、0、 进入指令调试的方法进入指令调试的方法 1) 安装 px4_toolchain_installer_v05_win.exe,这是编程与监控统一安装包。 2) 使用 USB 连接飞控,等待音乐完成,进入稳定状态。 3) 运行开始菜单中程序组里面的 px4 Toolchain 下的 TeraTerm 4) 运行 File/New connection,选择飞控所在串口,点击 OK。如果没出现飞控串口则为连接不正常,拔下 USB 线重新连接。 5) 按回车,出现“nsh”则表示控制台启动正常,可以开始指令操作。 6) 可以使用“ls”列表操作设备或指令,使用“?”使用“cd”进入类型目录,使用“
2、cd .”退到上一层目录。 7) 重要指令包括“pwm” , “mavlink” , “sdlog2” , “top” , “esc_calib”等在下面详细讨论。 1、控制台指令(、控制台指令(List of on-board applications) 核心板载指令可以在系统启动的时候使用, 其他指令可以在 NuttShell 里面启动。 使用 help 指令来获得指令列表。运行 top 或者 ps 指令可以观察那些指令正在运行。指令可以放在指定的启动文件中,在飞控启动的时候自动调用。 1 1)外部指令)外部指令 以下指令包含在 NuttShell 中 ? 显示帮助信息 free 显示内存
3、信息 kill 给一个过程发送信号 ls 目录列表 2 2)系统应用指令)系统应用指令 mavlink 通过串口发送 MAVLink 信息的相关设置 sdlog2 使用 TF 卡记录系统和飞行数据的相关设置 tests 在启动过程和故障状态下进行指令测试 top 显示当前运行的指令及其 CPU 占用 uORB 在应用之间分发数据 3 3)驱动指令)驱动指令 mkblctrl Mikrokopter BLCTRL 驱动 esc_calib 电调校准工具 fmu FMU 的 GPIO 针脚功能设置 gpio_led GPIO LED 驱动 gps GPS 接收驱动 pwm PWM 控制信号速率设置
4、 sensors 传感器相关应用 px4io PX4IO 驱动 uavcan UAV CAN 驱动 4 4)飞行控制指令)飞行控制指令 commander 飞行安全管理 navigator 任务、失效保护 RTL 模式设置 5 5)姿态和位置评估指令)姿态和位置评估指令 attitude_estimator_ekf 基于 EKF 的姿态评估 attitude_estimator_so3 基于 SO(3)的姿态评估 att_pos_estimator_ekf 基于 EKF 的姿态和位置评估 (James Goppert) ekf_att_pos_estimator 基于 EKF 的姿态和位置评估
5、 (Paul Riseborough) position_estimator_inav 内置的导航位置评估 6 6)多旋翼姿态和位置控制)多旋翼姿态和位置控制 mc_att_control Multirotor 姿态控制 mc_pos_control Multirotor 位置控制 7 7)飞翼姿态和位置控制)飞翼姿态和位置控制 fw_att_control 飞翼姿态控制 fw_pos_control_l1 飞翼位置控制 2、FMU 接口设置接口设置 指令:nsh fmu mode_gpio_serial 其中 fmu 为指令,后面为参数,参数可以有以下几种: mode_gpio 六个可设置
6、IO 全部为 GPIO 模式 mode_serial 启动蓝色 USART2 的 RX、TX 和相应绿色 USART2 的 RTS、CTS mode_pwm 启动四个旋翼控制 SRV1-SRV4 mode_gpio_serial 启动红色 PX4IOAR 板配套设置,包含四个旋翼控制和一组串口。 mode_pwm_serial 启动蓝色 USART2 的 RX、TX 和两个旋翼控制 SRV2、SRV3。 mode_pwm_gpio 启动四个旋翼控制 SRV1-SRV4,启动两个 GPIO 设置 GPIO_EXT1、GPIO_EXT2。 3、mavlink 指令详细说明指令详细说明 Mavlin
7、k 指令负责通过串口发送和接收 MAVLink 数据包,并传送给系统终端结构。Mavlink 指令可以在启动的串口上使用,格式如下: nsh mavlink start -d /dev/ttyS1 默认波特率为 57600,如果需要更改波特率,则按照以下格式使用-b 参数: nsh mavlink start -d /dev/ttyS1 -b 460800 其中 USART1 = ttyS0, USART2 = ttyS1, UART5 = ttyS2, UART6 = ttyS3。 4、gps 指令详细说明指令详细说明 1 1)指令参数)指令参数 此指令用于快速连接 GPS 设备,如果不对-
8、m 或-b 参数进行设置,程序会尝试所有的设置,会需要一些时间。 -device / -d,串口设置默认参数为:/dev/ttyS3 -mode / -m,参数如下: all,测试全部设置 ubx,设为 u-blox 设备,例如 3DR GPS uBlox LEA-6 mtkcustom,设为 MediaTek MT3329 -baud / -b,设置 gps 波特率。 -verbose / -v,输出调试信息。 -retry / -r,重试与 gps 建立连接 2 2)实例)实例 u-blox LEA-6 nsh gps start -d /dev/ttyS3 -m ubx -b 9600
9、MediaTek MT3329 nsh gps start -d /dev/ttyS3 -m mtkcustom -b 38400 5、电调校准指令、电调校准指令 esc_calib 使用此指令之前必须拆除螺旋桨! 因为如果硬件发生故障, 电调有可能起转。 此工具用于校准电调,在启动时给电调发出一个高信号,使电调进入校准模式,此时电调会存储此信号为最大油门。然后会给出一个最小信号。 1 1)停止输出)停止输出 多旋翼:mc_att_control stop。飞翼:fw_att_control stop。 2 2)使用电调校准工具)使用电调校准工具 四旋翼:esc_calib -c 1234 六
10、旋翼:esc_calib -c 123456 八旋翼或者全部输出一起校准: esc_calib a,或者 esc_calib -c 12345678。 电机在四通道的固定翼:esc_calib -c 4 重定义四旋翼校准参数(默认参数为 1000 和 2000us): esc_calib -l 950 -h 1800 -c 1234 带有 FMU 和 IO 的四旋翼 校准连接在 FMU 上的电调:esc_calib -d /dev/px4fmu -c 1234 校准连接在 IO 上的电调:esc_calib -d /dev/px4io -c 12345678 键入 y 并连接电池,电调会进入校
11、准模式。键入回车键,等待校准完毕,电调将会存储设置的最大和最小参数。再次键入回车退出校准工具。 3 3)TestTest 指令指令 拆卸电池和 USB 连接,并重新连接电池。使用此指令对电机的转速范围或者舵机的旋转范围进行测试。 4 4)安装螺旋桨)安装螺旋桨 完成以上全部过程后再安装螺旋桨,校准过程完毕。 6、sdlog2 指令详细说明指令详细说明 sdlog2 指令用于在 FMU 的 TF 卡上记录飞行数据。 记录格式与 APM binary log兼容。sdlog2 中 timestamps 使用内部时间。 如果使用了-t 参数,sdlog2 将在 TF 卡的 log 目录下建立一个新目
12、录,目录名称为 gps 时间,目录下的文件名为当前时间,例如log/2014-01-19/19_37_52.bin。如果不使用此参数,名称为 sessXXX,文件名为 log.XXX.bin, 其中 XXX 为顺序数字。 数据记录的启动方式可以是指令启动,系统解锁或通过 mavlink 命令。 sdlog2 start|stop|status -r -b -e -a -r 记录速度,单位是 Hz,0 为不限制速度。 -b 缓冲大小,单位是 Kbytes,默认为 8。 -e 启动数据记录 -a 解锁后启动 -t 使用 GPS 时间作为数据文件的目录名和文件名。 7、pwm 指令指令 Pwm 指令
13、用于设置 PWM 输出,用于控制舵机和电调。 1 1)基本用法)基本用法 格式:pwm arm|disarm|rate|failsafe|disarmed|min|max|test|info . 参数如下: arm 解锁输出 disarm 锁止输出 rate . 设置 PWM 速率 -g 设置速率的目标通道组 -m Directly supply channel mask -a 设置全部输出通道 -r PWM 速率(50 to 400 Hz) failsafe . 设置失效保护的 PWM 值 disarmed . 设置锁止时 PWM 值 min . 设置最小 PWM 值 max . 设置最大
14、PWM 值 -c 被设置的通道(例如:1234) -m Directly supply channel mask (e.g. 0 xF) -a 设置全部通道 -p PWM 设置数值 test . 将输出设定为一个数值 -c 被设置的通道(例如:1234) -m Directly supply channel mask (e.g. 0 xF) -a 设置全部通道 -p PWM 设置数值 info 显示当前 PWM 信息 -v 显示详细信息 -d PWM 输出设备(默认:/dev/pwm_output) 2 2)设置频率)设置频率 PX4 支持两种 PWM 输出频率,默认频率是 50Hz,此频率可
15、以最大限度兼容RC 设备。替换频率可以使用-u 参数进行设置,大部分设备能够兼容 50 至 400Hz的信号。大部分时候,所有通道的输出频率是相同的,因为硬件限制,所有在相同通道组中的通道的输出频率必须相等,通道组信息会在 pwm info 的最下面显示。以下实例设置通道 1 和 2 输出频率为 400Hz。 nsh pwm rate -g 0 -r 400 注意:默认通道频率全部为 50Hz,这是为了保护模拟舵机。模拟舵机接收到高频率信号时会损坏。 3 3)TestTest 输出输出 以下实例测试通道 1 和 3,并将他们的输出值设定为 1200us。: nsh pwm test -c 13
16、 -p 1200 8、tests 指令指令 Test 指令用于测试特征、通信和传感器,用于在运行过程中测试他们是否工作正常。很多测试指令会持续运行,查看功能列表,键入: nsh tests help Available tests: led int float sensors gpio hrt ppm servo adc jig_voltages eeproms uart_loopback uart_baudchange uart_send uart_console tone sleep time perf all jig help 1 1)传感器测试)传感器测试 注意:测试之前需要启动 uo
17、rb 和传感器。运行以下指令: uorb start sh /etc/init.d/rc.sensors 运行测试指令: nsh tests sensors 此指令会读取并显示板载传感器数值。 2 2)GPIOGPIO 测试测试 此项测试会切换板载 GPIO 输出,可以使用示波器进行观察,使用方法如下: nsh tests gpio 3 3)高精度时间()高精度时间(HRTHRT)测试)测试 HRT 对高精度时间进行测试,测试将先显示半秒尺度,然后显示整秒计时。使用方法如下: nsh tests hrt start-time (hrt, sec/usec), end-time (hrt, se
18、c/usec), microseconds per half second 2767860351 (38382717/966000), 2768359205 (38382718/467000), 498856 2768359704 (38382718/467000), 2768858807 (38382718/968000), 499105 2768859275 (38382718/968000), 2769359402 (38382719/470000), 500128 2769359894 (38382719/470000), 2769859000 (38382719/971000), 4
19、99108 2769859497 (38382719/971000), 2770358640 (38382720/472000), 499145 2770359108 (38382720/472000), 2770859358 (38382720/974000), 500251 2770859855 (38382720/974000), 2771358794 (38382721/475000), 498941 2771359262 (38382721/475000), 2771860309 (38382721/977000), 501049 2771860798 (38382721/97800
20、0), 2772360005 (38382722/479000), 499209 2772360487 (38382722/479000), 2772863830 (38382722/984000), 503345 one-second ticks tick tick tick tick tick tick tick tick tick tick 4 4)PPMPPM 输入测试输入测试 PPM 输入测试读取 PPM 输入信息,启动接收机。如果没有接收机连接,则显示 0。 5 5)舵机测试)舵机测试 测试连接在串口 2 上的四个舵机,使他们转动。 6 6)声音测试)声音测试 Tone TestT
21、one Test 播放一段音乐,用于测试蜂鸣器是否正常工作。 7 7)LEDLED 测试测试 将会点亮 LED 一段时间,测试 LED 是否正常。 nsh tests led LED test successful. 8 8)浮点测试)浮点测试 浮点测试用于测试当前运行的浮点和双精度函数,三角函数和printf(”%f”)是否工作正常。 nsh tests float - SINGLE PRECISION TESTS - The single precision test involves calls to fabsf(), if test fails check this function
22、as well. success: sinf(0.0f) = 0.0f success: sinf(1.0f) = 0.84147f success: asinf(1.0f) = 1.57079f success: cosf(1.0f) = 0.54030f success: acosf(1.0f) = 0.0f success: sinf(0.1f) = 0.09983f success: sqrt(2.0f) = 1.41421f success: atan2f(1.0f, 1.0f) = 0.78539f success: printf(%8.4f, 0.553415f) = 0.553
23、4 - DOUBLE PRECISION TESTS - success: 1.0111 * 2.0 = 2.0222 success: (float) 1.55f = 1.55 (double) success: sin(0.0) = 0.0 success: sin(1.0) = 0.84147098480 success: atan2(1.0, 1.0) = 0.785398 testing pow() with magic value (44330.0 * (1.0 - pow(96286LL / 101325.0), 0.190295); success: result: 428.2
24、293 success: printf(%8.4f, 0.553415) = 0.5534 SUCCESS: All float and double tests passed. 9、top 指令指令 注:本项太专业,一些内容暂不翻译。译者注 1 1)基本信息)基本信息 使用 top 指令用于显示系统使用信息。信息含义如下: Processes:任务或线程。 Running:准备执行的任务不能多于 1 个,说明系统过载。 CPU 信息: o U Userser 全部进程按照应用运行 o syssys 系统管理,计划时间,中断等待 o idleidle 休眠时间,此时系统无任务。 Uptime:
25、Total uptime 系统上电时间,idle uptime 系统上电但是无任务执行 进程列表: o PID:程序标签 o COMMAND:应用、进程和线程的名称 o CPU TOTAL:应用运行的时间 o %CPU CURR: CPU 占用率,显示数值为测试前一秒的数值。 2 2)控制与评估事项)控制与评估事项 The system load and the correct timing of controllers and estimators only loosely depend on each other: If the sensor readout, estimation and
26、 control tasks have a high priority, it is not a problem if the system is running at 90% load - they will not be delayed or slowed down and still execute at the predefined rate. If the task priorities are however not correctly set or other high-priority tasks exist, a higher load can lead to delays.
27、 3 3)CPUCPU 占用率与占用率与 IOIO 占用率占用率 The load shown here is the total load, consisting of CPU delay (due to processing on the CPU) and IO delay (due to sensor interfacing). It shows wether the system is able to meet the deadlines. To time processing, use the high resolution timer. In the example below t
28、he 30% load are almost only due to I/O delay, which is known due to the internal code structure of the sensors app. 4 4)显示堆栈信息)显示堆栈信息 The displayed stack size is evaluated using the stack pointer at context switch time. It therefore is not the actual stack size needed during execution, but the minim
29、um stack size the process needs at runtime. The real needed stack size will be typically about 60-1000 bytes more. 5 5)堆栈数量)堆栈数量 A higher number of tasks does not imply more load of the system, only higher RAM usage. Almost all tasks in the example below sleep and are wakened by the scheduler once n
30、ew data is ready to be processed. This is however only true if the tasks do not poll, but are using blocking reads on file descriptors or signals. If tasks would actively poll, they would add to the system load and more tasks would mean more load. 10、飞行参数设置、飞行参数设置 Configuration Variables 1 1)参数设置)参数
31、设置 以下内容讲述硬件和应用可以在系统启动过程中调用的一些参数设置。 这些参数可以写在 TF 卡的 etc/config.txt 文件中。当 SYS_AUTOSTART 有效的时候, etc/config.txt 可以被调用。 环境参数环境参数 参数参数 描述描述 VEHICLE_TYPE mc 多旋翼 飞行器种类 fw 飞翼 none不飞行 不适用控制器 MIXER FMU_quad_x 多旋翼设置,具体使用方法见: Output mixers FMU_quad_+ FMU_quad_w FMU_hex_x FMU_hex_+ FMU_AERT 飞翼设置 FMU_AET FMU_Q USE_
32、IO yes 使用 PX4IO no 单独使用 PX4FMUv1 OUTPUT_MODE io 输出模式设置,默认为 io。 fmu mkblctrl PWM_OUTPUTS PWM 参数列表 列出当前使用的 PWM 通道及其参数设置 PWM_RATE PWM 频率设置 设置输出到电调的 PWM 信号频率,支持50Hz 和 400Hz PWM_DISARMED 未解锁时 PWM 输出 设置为解锁状态下的 PWM 输出的正脉宽长度,设为 0 无输出,但是会引起电调无法校准,所以推荐设置为小于 PWM 下限 PWM_MIN 设置 PWM 最小, 值默认参数为 1000 设置最小油门输出数值, 针对
33、多旋翼建议设置为较低数值, 以便于在解锁的时候保持电机停转 PWM_MAX 设置 PWM 最大值, 值默认参数为 2000 设置最大油门数值 FMU_MODE pwm 使用 PX4IO gpio serial 使用 FMUv1 gpio_serial pwm_serial pwm_gpio HIL yes 启动 HIL(Hardware In the Loop,半物理仿真)模式,强制关闭输出,关闭数据记录和 GPS no 2 2)混控输出)混控输出 混控输出负责定义控制器输出到电机或者舵机的配置。 所有内置的混控文件在固件文件系统的/etc/mixers 目录下。详细介绍请参考此目录下的 RE
34、ADME 文件。 这项功能用来手工配置输出混控,简单的将设置文件放在 TF 卡的etc/mixers/目录下,比如使用飞翼的 MIXER = FMU_Q 的设置,在此目录下建立一个名为 FMU_Q.mix 的文件,此设置就会取代内置的相关设置。 3 3)手工配置实例)手工配置实例 设置四旋翼为“+”模式,电调连接至 PX4IO,PWM 范围设置为 1100 至 1900, config.txt 的内容如下: # Generic Quadcopter + set VEHICLE_TYPE mc set MIXER FMU_quad_+ # PX4IO PWM output will be use
35、d by default set PWM_OUTPUTS 1234 # Change parameters for the first 4 outputs set PWM_RATE 400 # Set PWM rate to 400 Hz for better performance set PWM_DISARMED 900 # Motors should stop at this PWM value set PWM_MIN 1100 # Motors should spin at low, idle speed at this PWM value set PWM_MAX 1900 # Motors should spin at max speed at this PWM value