PX4软件架构

 无人机系统图

一个高性能的飞控软件需要哪些模块?

  1. 提供实时操作系统,创建子任务后有互不干扰;
  2. 运行驱动程序,驱动外设硬件,包括加速度计、角速度计、磁罗盘、GPS、测距传感器、光流传感器、空速计、温度传感器,可控制的吊舱、相机、吊运系统等等;
  3. 完善的中间件库,如参数库,分布式收发的信息交互,与地面站、机载计算机或其他设备通信的协议库,数学库、控制库,日志记录等;
  4. 各种上层app,如导航app,控制app,制导app,机型管理,模式切换,健康监测,余度管理等

软件架构图

PX4可以运行的硬件

参考 https://docs.px4.io/master/en/flight_controller/

PX4支持的RTOS

从源代码platforms上可看出,PX4支持多种运行平台,包括Nuttx,Linux,Qurt。其中QuRT是高通自研RTOS,专门匹配其自家芯片。

常用的pixhawk使用nuttx RTOS。

以下是计算密集型任务的自动驾驶仪

硬件描述RTOS
Qualcomm Snapdragon Flight一台高端自动驾驶仪计算机,在DSP上运行PX4(在QuRT RTOS上)。 它包括一个相机和WiFi。QuRT
Intel® Aero Ready to Fly DroneUAS开发平台,集成了功能强大的Linux计算机,NuttX上的PX4和单个包中的摄像头。Linux
Raspberry Pi 2/3 Navio2RaPi可以连接到自动驾驶仪并用作配套计算机。Linux

PX4上运行的app

nsh> help
help usage:  help [-v] [<cmd>]

  .        cd       env      free     mkfatfs  rm       test     usleep   
  [        cp       exec     help     mount    rmdir    time     
  ?        date     exit     kill     mv       set      true     
  break    df       export   ls       ps       sleep    umount   
  cat      echo     false    mkdir    pwd      source   unset    

Builtin Apps:
  ekf2                       nanoradar_mr72             
  rgbled                     mappydot                   
  gpio                       bl_update                  
  px4io                      i2cdetect                  
  pca9685                    batt_smbus                 
  lis2mdl                    landing_target_estimator   
  bmp280                     lps22hb                    
  adis16448                  pwm_input                  
  ak09916                    lps33hw                    
  flight_mode_manager        lis3mdl                    
  tune_control               nsh                        
  ms5611                     gyro_calibration           
  reflect                    sensors                    
  dataman                    mtd                        
  temperature_compensation   land_detector              
  send_event                 serdis                     
  bst                        camera_trigger             
  lightware_laser_i2c        roboclaw                   
  rc_update                  dps310                     
  ads1115                    mc_hover_thrust_estimator  
  icm20602                   system_time                
  ak8963                     perf                       
  rm3100                     sih                        
  ina226                     uavcan                     
  param                      safety_button              
  mft                        motor_ramp                 
  motor_test                 led_control                
  mixer                      hott_sensors               
  pwm_out                    uuv_att_control            
  heater                     pca9685_pwm_out            
  camera_capture             pwm                        
  hmc5883                    top                        
  local_position_estimator   gps                        
  esc_calib                  uorb                       
  ll40ls_pwm                 rc_input                   
  bmm150                     vl53l0x                    
  sh                         nshterm                    
  camera_feedback            airspeed_selector          
  upatch_radar               ms4525_airspeed            
  hardfault_log              uuv_pos_control            
  sd_bench                   mb12xx                     
  qmc5883l                   pmw3901                    
  frsky_telemetry            icm20689                   
  lightware_laser_serial     sercon                     
  vl53l1x                    logger                     
  cm8jl65                    ets_airspeed               
  attitude_estimator_q       mc_att_control             
  pwm_out_sim                irlock                     
  serial_test                mavlink                    
  bmi055                     fw_pos_control_l1          
  vmount                     ulanding_radar             
  ver                        rover_pos_control          
  icm20948_i2c_passthrough   paw3902                    
  vcm1193l                   gy_us42                    
  pga460                     gyro_fft                   
  thoneflow                  dshot                      
  ist8308                    fake_gps                   
  srf02                      lsm303agr                  
  bmp388                     rgbled_ncp5623c            
  board_adc                  tfmini                     
  sdp3x_airspeed             load_mon                   
  pcf8583                    fw_att_control             
  px4flow                    battery_status             
  dumpfile                   mc_pos_control             
  work_queue                 vtol_att_control           
  ll40ls                     pacecat_lds50c2a           
  batmon                     ms5525_airspeed            
  listener                   ist8310                    
  rgbled_pwm                 atxxxx                     
  esc_battery                tone_alarm                 
  reboot                     commander                  
  leddar_one                 teraranger                 
  dmesg                      hott_telemetry             
  navigator                  mc_rate_control            
  usb_connected              icm20948

各模块功能整理如下:

app/指令作用
adis16448IMU
ads1115ADC驱动
airspeed_selector空速选择
ak09916磁传感器
ak8963磁传感器
attitude_estimator_q导航算法
atxxxxOSD相关
batmonBatMon module for Smart Battery utilizing SBS 1.1 specifications
batt_smbusbattery monitor connected via SMBus (I2C).
battery_status监测电池电压电流状态
bl_updatebootloader升级
bmi055IMU
bmm150IMU
bmp280气压计
bmp388气压计
board_adc板载ADC
bstBlack Sheep Telemetry driver
黑羊数传驱动
camera_capture触发相机,aux通道
camera_feedbackOnline and offline geotagging from camera feedback
camera_trigger就相机触发时的位置、姿态信息记录一下
cm8jl65Lanbao PSK-CM8JL65-CC5距离传感器,接近开关,电感式传感器
commander飞行指令
datamansrc/modules/dataman/dataman.h
存储mission文件
dmesgINFO WARN ERR msg
dps310气压计
dshot数字协议,PWM协议
dumpfile把内部文件输出到stdout

nsh> dumpfile /fs/mtd_params
File size: 16384 bytes
ERROR [dumpfile] failed setting stdout attributes
ekf2导航模块
esc_battery
esc_calib电调校准
ets_airspeed空速计
fake_gps仿真GPS
flight_mode_managerflighttasks管理模块
frsky_telemetry
fw_att_control固定翼姿态控制
fw_pos_control_l1固定翼横侧向制导算法
gpio直接读取和设置GPIO端口
gpsGPS模块
gy_us42Driver for the GY-US42 sonar range finder on I2C.
gyro_calibration陀螺仪校准
gyro_fft陀螺仪fft
hardfault_log硬件故障
heaterimu加热
hmc5883磁罗盘
hott_sensorsGraupner HoTT sensor driver implementation.
hott_telemetry
i2cdetectSimple tool to scan an I2C bus.
icm20602Driver for the Invensense ICM20602 IMU connected via SPI. Accel/Gyro
icm20689Driver for the Invensense ICM20689 connected via SPI. Accel/Gyro
icm20948Driver for the Invensense ICM20948 connected via SPI. IMU
icm20948_i2c_passthroughDriver for the Invensense ICM20948 connected via SPI. IMU
ina226电源监测 iic
irlockDriver for an IR-Lock and Pixy vision sensor connected via I2C.
ist8308磁罗盘
ist8310磁罗盘
land_detector落地检测
landing_target_estimator精准着陆,落地目标估计
led_controlled控制
leddar_one测距传感器
lightware_laser_i2c测距传感器
lightware_laser_serial测距传感器
lis2mdl磁罗盘
lis3mdl磁罗盘
listeneruorb的监听器
ll40ls测距传感器
ll40ls_pwm测距传感器
load_mon检查stack、ram和cpu的使用情况,2hz,发布到cpuload主题,使用top指令后将各信息发布到task_stack_info主题
local_position_estimator位置估计器
logger日志
lps22hb气压计
lps33hw气压计
lsm303agr磁罗盘
mappydot测距传感器
mavlinkmavlink
mb12xx测距传感器
mc_att_control多旋翼姿态控制
mc_hover_thrust_estimator多旋翼悬停油门估计
mc_pos_control多旋翼位置控制
mc_rate_control多旋翼角速度控制
mftmtd service and utility app. ?
mixer混控器
motor_ramp
motor_test电机测试
ms4525_airspeed空速计
ms5525_airspeed空速计
ms5611气压计
mtdmtd service and utility app.?
nanoradar_mr72测距传感器
navigator制导模块
nshnsh shell
nshterm在某个设备上开一个shell端口,例如
nshterm /dev/ttyACM0 &
param参数模块
paw3902光流
pca9685IIC转PWM,16路
pca9685_pwm_outIIC转PWM,16路
pcf8583Driver for Main Rotor frequency sensor using PCF8583 I2C counter.
转速频率转换器,方波转IIC
perfTool to print performance counters
pga460测距传感器
pmw3901光流
pwmpwm指令,可控制fmu和io的两个pwm输出
pwm_input输入捕获,fmu的某个通道
pwm_outfmu的pwm输出控制模块
pwm_out_sim在设备/dev/pwm_output0上的模拟输出
px4flow光流+超声波测距
px4ioPX4IO-与io mcu交互的模块
qmc5883l磁罗盘
rc_input遥控器信号输入模块
rc_update输入rc_input,发布manual_control_switches,manual_control_setpoint,actuator_group_3
The rc_update module handles RC channel mapping: read the raw input channels (`input_rc`),
then apply the calibration, map the RC channels to the configured channels & mode switches
and then publish as `rc_channels` and `manual_control_setpoint`.
reboot重启
reflectsimple data reflector for load testing terminals (especially USB)
rgbledDriver for the onboard RGB LED controller (TCA62724FMG) connected via I2C.
rgbled_ncp5623cDriver for the onboard RGB LED controller (NCP5623B or NCP5623C) connected via I2C.
rgbled_pwmDriver for the onboard RGB LED controller by PWM.
this driver is based the PX4 led driver
rm3100磁罗盘
roboclaw机械爪控制
rover_pos_control小车位置控制
safety_button安全开关
sd_benchTest the speed of an SD Card
sdp3x_airspeed空速计
send_event
sensors传感器的综合处理
serconStart CDC/ACM serial driver.
serdisDisconnect the mass storage device to the host.与上面是一对命令。
serial_test串口测试
sh
sihsih仿真
srf02测距传感器
system_time系统时间
temperature_compensationacc gyro baro的温度补偿
teraranger测距传感器
tfmini测距传感器
thoneflow光流模块
tone_alarmLow Level Driver for the PX4 audio alarm port.订阅tune_control,并在硬件上播放
topshell命令,监测所有线程执行情况
tune_control控制语音播放
uavcanuavcan
ulanding_radar测距传感器
uorb中间件,线程间沟通的中介
usb_connected判断USB是否连接
uuv_att_control水下机器人BlueROV2姿态控制器
uuv_pos_control水下机器人BlueROV2位置控制器
vcm1193l磁罗盘
versrc/systemcmds/ver/ver.c
版本指令,showing versions of HW, SW, Build, GCC
vl53l0x测距传感器
vl53l1x测距传感器
vmount控制云台或者舵机
vtol_att_control垂起姿态控制
work_queue工作队列

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PX4 Autopilot是一款开源的自动驾驶飞控软件。它具有强大的飞行控制和导航功能,可以应用于多种无人机平台,包括多旋翼、固定翼和车辆。PX4 Autopilot的开发历史可以追溯到Pixhawk项目,它是Pixhawk固件的一个分支。Pixhawk是一款流行的飞控硬件平台,而PX4 Autopilot则是为该硬件平台开发的软件。 与其他飞控系统相比,PX4 Autopilot具有许多优势。首先,它具有灵活的架构,可以根据不同的需求进行定制和扩展。其次,PX4 Autopilot支持多种传感器和导航系统,可以适应各种复杂的环境和任务需求。此外,PX4 Autopilot还提供了丰富的飞行模式和自动化功能,使得飞行操作更加简单和安全。 在使用PX4 Autopilot进行开发时,可以参考PX4 Autopilot User Guide和PX4学习笔记等文档,这些文档提供了详细的使用指南和教程。另外,可以在Github上找到PX4 Autopilot的源代码仓库,在这里可以查看最新的代码和提交贡献。 为了编译和构建PX4 Autopilot固件,可以根据不同的硬件平台选择相应的编译命令。例如,使用make px4_fmu-v2_default命令来构建适用于default.px4board的固件。类似地,可以使用make px4_fmu-v2_fixedwing命令构建适用于fixedwing.px4board的固件,使用make px4_fmu-v2_multicopter命令构建适用于multicopter.px4board的固件,使用make px4_fmu-v2_rover命令构建适用于rover.px4board的固件。 总而言之,PX4 Autopilot是一款功能强大的开源自动驾驶飞控软件,可以应用于多种无人机平台。通过参考相关文档和源代码,以及使用适用于不同硬件平台的编译命令,可以进行PX4 Autopilot的开发和定制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值