zoukankan      html  css  js  c++  java
  • Pixhawk原生PX4固件中的坑

    作为一名飞控开发的小学生:),最近入坑Pixhawk+PX4了。

    基于Pixhawk硬件平台进行二次开发,有两套固件可以选择:Ardupilot系列也就是常说的APM固件,包含了ArduCopter以及ArduPlane等;另一个就是Pixhawk原生固件PX4了。前者最开始是为APM硬件(Ardupilot Mega)开发的,升级到3.0版本后已经兼容Pixhawk硬件,从个人学习的角度来看,APM固件的代码架构比较容易理解,基本上花个一天时间就能大概摸清整体结构了,而且由于出现的时间早,玩的人以及相关资料都比较丰富,所以属于首选。后者则采用了Nuttx实时操作系统,一开始接触的时候简直头大,整体结构、信息传递机制都不了解,资料相对少点,所以属于备选。

    但是在做HIL仿真时,不论是我自己编译APM固件还是下载的官方固件,前后折腾了快一周还是不能正常工作;而用PX4固件则比较顺利地实现了需求。所以从时间成本以及沉没成本考虑,还是决定入坑Pixhawk+PX4了。

    一、编译

    Windows下编译坑多而且速度还慢,选择在Ubuntu里面编译。按照dev.px4.io/Linux/Advanced Linux以及Building the Code里面的说明,还是能比较方便的搭建好PX4的开发环境。但还是有几点要注意:

    1. 在clone完项目后,不要着急添加子模块,先把分支切换到stable上。

    2. 添加子模块时不能忘了 --recursive 参数,要不然会缺少几个模块,导致编译不过。

    1 git submodule update --init --recursive

    二、代码

    1. 无论是目前的master版本还是stable版本,用minicom查看nsh控制台时,都会出现乱码。拔掉SD卡依然乱码。解决办法(stable版本),参考自 这篇博客

    将 /Firmware/ROMFS/px4fmu_common/init.d/rcS 文件中

    # Start MAVLink
        mavlink start -r 800000 -d /dev/ttyACM0 -m config -x

    替换成

    1     # Start USB shell if no microSD present, MAVLink else
    2     if [ $LOG_FILE == /dev/null ]
    3     then
    4         # Try to get an USB console
    5         nshterm /dev/ttyACM0 &
    6     else
    7         mavlink start -r 800000 -d /dev/ttyACM0 -m config -x
    8     fi

    三、硬件在环在仿真(HIL)

    按照官方教程,如果编译master版本的固件,而机架选择固定翼时能够正常仿真,但是机架选择四旋翼就没有输出了。如果编译stable版本的固件, 那么两种机架都可以正常仿真. 这也就是在第一点里提到要切换到stable分支上的一个原因, 另一个原因则是master版本与stable版本之间的子模块有不少差别, 同步之后从master切换到stable是一个坑. 

    先记这么多,后续有了继续补充。

  • 相关阅读:
    《Python机器学习及实践:从零开始通往Kaggle竞赛之路》
    CPA专业阶段单科成绩有5年有效期限,即从通过科目考试的第一年算起
    升级gitk后,Error in startup script: unknown color name "lime"
    新三板:精选反馈问题103题(建议收藏)
    jQuery .on
    onload in JavaScript
    The JavaScript this Keyword
    JavaScript method overload
    JavaScript modularity with RequireJS (from spaghetti code to ravioli code)
    Understanding RequireJS for Effective JavaScript Module Loading
  • 原文地址:https://www.cnblogs.com/fly2mato/p/6575556.html
Copyright © 2011-2022 走看看