PX4飞控学习(四)

2023-05-16

系统启动

启动文件 : nuttx/arch/arm/stm32/stm32_start.c

stm32_clockconfig(); //时钟
stm32_fpuconfig();   //fpu
stm32_lowsetup();    //低级的串口通信 显示每次启动显示的”ABCD“
stm32_gpioinit();    //仅f10系列起作用
showprogress('A');   //输出 A

for (dest = &_sbss; dest < &_ebss; )
    {
      *dest++ = 0;
    }
 showprogress('B');
 //清除.bss。 B未显示 不知道为什么 
 for (src = &_eronly, dest = &_sdata; dest < &_edata; )
    {
      *dest++ = *src++;
    }

showprogress('C');
//启动数据进入内存 打印 C
up_earlyserialinit();
//初始化uart驱动
stm32_boardinitialize();
//板级启动函数nuttx的时候在config/nsh/src 目录下定义 , px4在 //src/driver/board/px4fmu-v2/ 目录
os_start();
//系统启动。

系统文件 nuttx/sched/os_start.c


dq_init(&g_readytorun);
dq_init(&g_pendingtasks);
dq_init(&g_waitingforsemaphore);
#ifndef CONFIG_DISABLE_SIGNALS
  dq_init(&g_waitingforsignal);
#endif
#ifndef CONFIG_DISABLE_MQUEUE
 dq_init(&g_waitingformqnotfull);
 dq_init(&g_waitingformqnotempty);
 #endif
#ifdef CONFIG_PAGING
  dq_init(&g_waitingforfill);
#endif
  dq_init(&g_inactivetasks);
  sq_init(&g_delayed_kufree);
#if defined(CONFIG_NUTTX_KERNEL) && defined(CONFIG_MM_KERNEL_HEAP)
  sq_init(&g_delayed_kfree);
//启动 rtos数据 启动任务链表
然后初始化一个g_idletcb结构 指向 os_start name=”Idle task” 
/* Then add the idle task's TCB to the head of the ready to run list */
dq_addfirst((FAR dq_entry_t*)&g_idletcb, (FAR dq_queue_t*)&g_readytorun);
  /* Initialize the processor-specific portion of the TCB */
up_initial_state(&g_idletcb.cmn);
sem_initialize();
// 初始化信号灯
up_allocate_heap(&heap_start, &heap_size);
kumm_initialize(heap_start, heap_size);
//初始化内存管理器
irq_initialize();
//初始化中断
wd_initialize();
// 看门狗
clock_initialize();
//时钟
timer_initialize();
//时间
sig_initialize();
//信号? 这里未了解
mq_initialize();
//消息队列
  pthread_initialize();
//线程
 fs_initialize();
//文件系统
up_initialize();

系统级启动文件 nuttx/arch/arm/src/common/up_initialize.c

校准时间 → 添加外部内存 → 启动irq中断子系统 → 启动DMA → 启动系统时钟中断 → 创建 /dev/null设备 → 添加uart设备 产生/dev/ttySx 文件 → 网络启动 → usb启动 → 灯

//添加库链接 具体怎么用 不太明白 px4该函数为空
lib_initialize();

DEBUGVERIFY(group_allocate(&g_idletcb));
//分配 IDLE 组

 /* Complete initialization of the IDLE group.  Suppress retention
   * of child status in the IDLE group.
   */

#ifdef HAVE_TASK_GROUP
  DEBUGVERIFY(group_initialize(&g_idletcb));
  g_idletcb.cmn.group->tg_flags = GROUP_FLAG_NOCLDWAIT;
#endif

  DEBUGVERIFY(os_bringup());
//启动系统Nuttx/sched/os_bringup.c
//开启两个线程 高优先级线程 及 低优先级线程 work_hpthread/ work_lpthread
//启动 nsh_main
apps/example/nsh_main.c
apps/nshlib/nsh_init.c

up_cxxinitialize();
//cxx库支持
builtin_initialize();
//外挂命令
nsh_initialize();
nsh_romfsetc();
//挂载 ROMFS 
nsh_archinitialize(); 
//nuttx系统在 configs/bamboo/nsh/src 中写
px4 在 /src/drivers/boards/bamboo中 
//基本上启动 spi i2c sd等等设备
nsh_consolemain(0, NULL);
//启动 init.d/rcS 启动文件 
//至此 系统启动完毕

飞行器状态说明:

HIL:硬件环在线模拟使能。所有发动机、舵机及其他动作设备阻断,但内部软
件处于全部可操作状态。

SAFETY_ARMED:主发动机使能,怠速。准备好起飞。

MANUAL_INPUT_ENABLED:遥控输入信号使能。

STABILIZE_ENABLED:高度/位置电子增稳使能。在此状态下,飞行器仍需要外部操作指令以实现操作。

GUIDED_ENABLED:导航使能。导航数据和指令来自导航/航点指令表文件。

AUTO_ENABLED:全自主航行模式使能。系统自行决定目的地。前一项“导航使能”可以设置为0 或1 状态,这取决于具体的应用。

TEST_ENABLED:测试模式使能。本标识仅供临时的系统测试之用,不应该用于实际航行的应用中。

CUSTOM_MODE_ENABLED:留待扩展

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

PX4飞控学习(四) 的相关文章

  • 初学PX4之飞控算法

    通知 xff1a 如果你对本站无人机文章不熟悉 xff0c 建议查看无人机学习概览 xff01 xff01 xff01 注意 xff1a 基于参考原因 xff0c 本文参杂了APM的算法分析 本篇文章首先简述了下px4和apm调用姿态相关应
  • Ubuntu下PX4飞控开发环境搭建

    双清微电子 前言 xff1a PX4支持Pixhawk pixracer 高通骁龙飞控板 树莓派 派诺特等硬件 PX4是构建在Nuttx实时操作系统上的 第一步 xff1a 安装Linux基础软件 第二步 xff1a 下载源代码 第三步 安
  • 用matlab处理px4日志的转换方法

    px4 v1 8 2的版本可以选择用sdlog2模块记录日志 xff0c 通过QGC地面站下载的日志格式为 ulg xff0c 将下载成功的 ulg扩展名改为 bin xff0c 然后用MP地面站 数据闪存日志 创建matlab文件 xff
  • PX4与TX2通信

    PX4与TX2通信以及相关数据的获取 目录 1 PX4硬件接口 2 TELEM1 2接口线序 3 PX4与TX2通信 PX4 IO口定义 xff1a PX4硬件 xff1a 4 通信测试 5 RTPS 43 ROS Jetson TX2终端
  • 编译PX4固件

    PX4编译 文章目录 PX4编译疑难杂症bug1bug2catkin build isolated 官方脚本Step1Step2 安装常用依赖Step3 创建并运行脚本Step4 补全代码子模块Step5 验证仿真 官方offboard 例
  • PX4 SITL Gazebo 仿真时 libgazebo_multirotor_base_plugin 插件运行时出错

    PX4 SITL Gazebo 仿真时 libgazebo multirotor base plugin 插件运行时出错 问题描述原因分析解决办法总结 问题描述 在 Gazebo 中进行 PX4 的软件在环仿真时 xff0c 执 make
  • 飞行机器人(七)仿真平台XTDrone + PX4编译

    0 编译PX4固件 参考仿真平台基础配置教程 xff08 中文详细教程 xff09 仿真平台基础配置 语雀 yuque com https www yuque com xtdrone manual cn basic config 按照教程
  • 基于F4/F7/H7飞控硬件和px4飞控固件的廉价自主无人机系统(1)-飞控

    前言 穿越机F4 F7 H7飞控是一系列采用stm32系列F4xx和F7xx处理器的飞控的统称 xff0c 是目前穿越机爱好者非常喜欢使用的飞控硬件 xff0c 其价格也非常便宜180 xff5e 410 而px4则是一款常见的开源飞控固件
  • px4源码编译指南

    px4源码编译指南 强烈推荐大家去看官网的英文文档 xff0c 国内的博客杂七杂八 xff0c 官网的中文也很久没有更新 xff0c 这几天自己踩了很多坑 xff0c 写个教程希望能帮助到大家 xff08 本文选用平台是pixhawk1 1
  • PX4 ---- Indoor Flight

    文章目录 室内飞行ROS amp PX4Pose Data 飞机配置MAVROS 基于工训赛 VIO 飞行总结 室内飞行 ROS amp PX4 Pose Data 飞机配置 VIO 参考此处 xff0c 采用 T265 配置 相机与飞控机
  • PX4模块设计之十七:ModuleBase模块

    PX4模块设计之十七 xff1a ModuleBase模块 1 ModuleBase模块介绍2 ModuleBase类介绍3 ModuleBase类功能介绍3 1 模块入口3 2 模块启动3 3 模块停止3 4 状态查询3 5 任务回调3
  • PX4模块设计之二十四:内部ADC模块

    PX4模块设计之二十四 xff1a 内部ADC模块 1 内部ADC模块简介2 模块入口函数2 1 主入口board adc main2 2 自定义子命令custom command 3 内部ADC模块重要函数3 1 task spawn3
  • PX4模块设计之二十六:BatteryStatus模块

    PX4模块设计之二十六 xff1a BatteryStatus模块 1 BatteryStatus模块简介2 模块入口函数2 1 主入口battery status main2 2 自定义子命令custom command 3 Batter
  • PX4模块设计之三十一:ManualControl模块

    PX4模块设计之三十一 xff1a ManualControl模块 1 ManualControl模块简介2 模块入口函数2 1 主入口manual control main2 2 自定义子命令custom command 3 Manual
  • 【px4】运行mavsdk中的offboard example

    运行MAVSDK中的offboard例子时无人机不执行 想控制无人机前后左右移动 xff0c 在按照官方教程实现offboard 插件的时候 发现用action插件能正常起飞和降落 但是一旦执行到offboard的插件代码的时候就会自动降落
  • PX4——Range Finder 篇

    Range Finder 此处选用的是 Benewake 下的 Lidar 参数设置 General Configuration 除了官方的参数设置外 xff0c 我在 EKF2 中还找到了 EKF2 RNG AID 参数 xff0c 用来
  • 步骤三:PX4,Mavros的下载安装及代码测试

    1 安装Mavros sudo apt install ros melodic mavros ros melodic mavros extras 2 安装Mavros相关的 geographiclib dataset 此处已经加了ghpro
  • 步骤八:PX4使用cartographer与move_base进行自主建图导航

    首先老样子硬件如下 飞控 HOLYBRO PIXHAWK V4 PX4 机载电脑 jetson nano b01 激光雷达 思岚a2 前提 你已经完成了cartographer建图部分 能够正常输出map话题 前言 由于要参加中国机器人大赛
  • 四、无人机知识笔记(初级:基本运动原理)

    笔记来源于 沈阳无距科技 工业级无人机的中国名片 编程外星人 目录 一 多旋翼直升机 二 基本飞行姿态 三 多旋翼飞行原理 四 反扭力与偏航运动 五 螺旋桨 六 有刷电机和无刷电机 七 电调与PWM信号 八 动力电池 九 遥控器 十 机架设
  • 大神浅谈无人机飞控软件设计 系统性总结

    写在前面 深感自己对飞控软件 算法的知识点过于杂乱 很久没有进行系统的总结了 因此决定写几篇文章记录一些飞控开发过程的知识点 主要是针对一些软件 算法部分进行讨论 如内容有错误 欢迎指出 1 飞控软件的基本模块 无人机能够飞行主要是依靠传感

随机推荐