Escolar Documentos
Profissional Documentos
Cultura Documentos
Todas as fuselagens PX4 compartilham uma única base de código (isso inclui outros
sistemas robóticos como barcos, rovers, submarinos etc.). O design completo do sistema é
reativo , o que significa que:
https://docs.px4.io/main/en/concept/architecture.html 1/7
23/05/2023, 18:16 Visão Geral da Arquitetura PX4 | Guia do usuário do PX4
Storage
Database Parameters Logging
External Drivers
Connectivity
Camera Control Gimbal / Mount
MAVLink
camera_trigger gimbal
mavlink
Attitude
Position & Attitude
Setpoints Estimator
ekf2 / GPS,
Attitude & Rate attitude_estimator_q Optical
Controller Flow,
Distance
mc_att_control & Gyro data
mc_rate_control /
fw_att_control /
vtol_att_control
Control Allocation
control_allocator
Mixing
Output Driver
pwm_out / px4io /
...
https://docs.px4.io/main/en/concept/architecture.html 2/7
23/05/2023, 18:16 Visão Geral da Arquitetura PX4 | Guia do usuário do PX4
DICA
Em tempo de execução, você pode inspecionar quais módulos são executados com
o top comando no shell, e cada módulo pode ser iniciado/parado
individualmente via <module_name> start/stop . Embora top o comando seja
específico do shell NuttX, os outros comandos também podem ser usados no shell
SITL (pxh>). Para obter mais informações sobre cada um desses módulos, consulte
a Referência de Módulos e Comandos .
Observação
Essa arquitetura permite que cada um desses blocos seja substituído de forma
rápida e fácil, mesmo em tempo de execução.
Pilha de voo
A pilha de voo é uma coleção de algoritmos de orientação, navegação e controle para
drones autônomos. Inclui controladores para fuselagens de asa fixa, multirotor e VTOL,
bem como estimadores de atitude e posição.
https://docs.px4.io/main/en/concept/architecture.html 3/7
23/05/2023, 18:16 Visão Geral da Arquitetura PX4 | Guia do usuário do PX4
O diagrama a seguir mostra uma visão geral dos blocos de construção da pilha de voo. Ele
contém o pipeline completo de sensores, entrada RC e controle de voo autônomo
(Navegador), até o motor ou servocontrole (Atuadores).
RC
Middleware
O middleware consiste principalmente em drivers de dispositivos para sensores
embutidos, comunicação com o mundo externo (computador complementar, GCS, etc.) e o
barramento de mensagens de publicação-assinatura uORB.
Além disso, o middleware inclui uma camada de simulação que permite que o código de
voo PX4 seja executado em um sistema operacional de desktop e controle um veículo
modelado por computador em um "mundo" simulado.
Taxas de atualização
https://docs.px4.io/main/en/concept/architecture.html 4/7
23/05/2023, 18:16 Visão Geral da Arquitetura PX4 | Guia do usuário do PX4
Ambiente de execução
O PX4 é executado em vários sistemas operacionais que fornecem uma API POSIX (como
Linux, macOS, NuttX ou QuRT). Também deve ter alguma forma de agendamento em
tempo real (por exemplo, FIFO).
Observação
O sistema foi projetado de forma que, com o mínimo de esforço, seja possível
executar cada módulo em um espaço de endereço separado (as partes que
precisariam ser alteradas incluem uORB , e ). parameter
interface dataman perf
Tarefas : O módulo é executado em sua própria tarefa com sua própria pilha e
prioridade de processo.
https://docs.px4.io/main/en/concept/architecture.html 5/7
23/05/2023, 18:16 Visão Geral da Arquitetura PX4 | Guia do usuário do PX4
A vantagem de executar módulos em uma fila de trabalho é que ela usa menos RAM e
potencialmente resulta em menos alternâncias de tarefas. As desvantagens são que as
tarefas da fila de trabalho não têm permissão para dormir ou sondar uma mensagem ou
bloquear IO (como a leitura de um arquivo). Tarefas de execução longa (realizando
computação pesada) também devem ser executadas em uma tarefa separada ou, pelo
menos, em uma fila de trabalho separada.
Observação
independent_task = px4_task_spawn_cmd(
"commander", // Process name
SCHED_DEFAULT, // Scheduling type (RR or FIFO)
SCHED_PRIORITY_DEFAULT + 40, // Scheduling priority
3600, // Stack size of the new task or thread
commander_thread_main, // Task (or thread) main function
(char * const *)&argv[0] // Void pointer to pass to the new task
// (here the commandline arguments).
);
NuttX
NuttX é o RTOS principal para executar o PX4 em uma placa de controle de voo. É de
código aberto (licença BSD), leve, eficiente e muito estável.
https://docs.px4.io/main/en/concept/architecture.html 6/7
23/05/2023, 18:16 Visão Geral da Arquitetura PX4 | Guia do usuário do PX4
Os módulos são executados como tarefas: eles têm suas próprias listas de descritores de
arquivo, mas compartilham um único espaço de endereço. Uma tarefa ainda pode iniciar
um ou mais encadeamentos que compartilham a lista de descritores de arquivo.
Cada tarefa/thread tem uma pilha de tamanho fixo e há uma tarefa periódica que verifica
se todas as pilhas têm espaço livre suficiente (com base na coloração da pilha).
Linux/macOS
https://docs.px4.io/main/en/concept/architecture.html 7/7