无人机的软件开发主要使用C/C++开发,APM和PX4的应用层开发更多的使用C++开发。作为叠代完善了非常多年的比较大型的开源飞控项目,其代码框架对于刚开始接触的新手而言是比较复杂的。

一些同学私信问我一些无人机相关的问题,很多是关于飞控的代码框架,语法问题。

大多数无人机飞控的开发同学都不是专业的软件开发,甚至只学习过C开发没有专门学习过C++,所以在看APM/PX4时,面对复杂的继承关系、容器和模板、学习比较吃力。而在自己动手加一些代码时出现各种奇怪的问题,比如编译报错不知道如何定位,运行崩溃面对一长串错误堆栈信息无从下手,或者能正确运行,但是一些异常情况没有处理导致系统不稳定。

如何高效可靠的编程是一个长期的积累的过程,甚至需要付出很多血的教训,一个高水平的飞控软件开发是靠无数次炸鸡积累出来的。

当然不是说只有炸鸡无数次后才能成就高水平的飞控开发,学习和养成好的编程习惯是降低出错概率的很好的一种方式。

C/C++基础的编程书籍可以帮助我们学习编程语法却不能指导我们编写高质量的代码,好的开源代码是学习编写高质量代码的很好的途径,比如仔细阅读APM/PX4的代码。不过通过代码学习不能系统性的学习,这里给大家推荐几本提高C/C++编程质量的书籍吧。

  • Effective C++

  • More.Effective.C++

  • Effective C++ STL

这三本书是一个系列,主要讲了C++程序开发中的一些准则,比如:

  • 什么时候用指针和引用

  • 什么情况下需要用const修饰变量、指针、函数入参、函数返回值和函数本身

  • 使用宏定义的注意事项

  • 类的继承需要注意的问题

  • 类的构造、析构注意事项

  • C++ 标准库的使用注意事项

在学习基础语法的基础上,阅读这个书籍,并结合实际的编程实践,是提高自身编程水平的非常好的方式。可以使你在实际开发中避免很多错误。

在开发语言的基础上,这里也推荐给大家关于设计模式的书籍,设计模式对于软件行业的同学是非常熟悉的,不过对于飞控的开发同学可能会比较陌生,学习设计模式可能会使大家对于比较大的软件架构有一些新的认识。

有需要的书籍电子版的同学可以关注我的公众号,在下方留言 飞控编程 获取。

往期分享:

AcmeGCS-10-首个测试版本!

AcmeROS-1-系统架构

PX4-10-系统启动流程

这里会不定期更新一些我整理的无人机相关知识,欢迎关注。

Uav开发杂记-4-无人机开发的C-C++相关推荐

  1. Uav开发杂记-1-无人机软件开发的技能树

    最近在思考怎么写后面的分享,虽然大多的分享都已经有对应的笔记,但是把零散的笔记整理的有条理.逻辑清晰也是有一定难度的. 有已经规划好的系列,比如 工具系列 PX4-2-系统架构浅析_AcmeUav的博 ...

  2. 无人机官方网站_无人机开发设计资料整理

    无人机技术作为前沿技术,吸引了不少技术宅男的追捧.越来越多的人开始加入无人机技术的学习与研究中,然而却苦于找不到太多的相关资源.阿木实验室根据多年无人机的从业经验,为大家整理了一份资料.资料不全,欢迎 ...

  3. 使用MindStudio进行UAV场景下人群密度估计开发

    1.项目介绍 2.模型介绍 3.模型训练 3.1.标注文件修改 3.2.模型转换 4.基于MindX SDK开发 4.1.创建MindX SDK(Python)工程 4.2.配置MindStudio的 ...

  4. 无人机开发系列 Ubuntu18.04安装 含虚拟机与双系统

    主线 无人机开发系列 一 Ubuntu操作系统搭建 本系列文章主要基于linux环境做有关开发,使用Ubuntu操作系统.开发方式主要分为虚拟机和双系统.直接步入正题. 一.虚拟机VMware和Ubu ...

  5. 回顾 | .NET MAUI 跨平台应用开发 - 用 .NET MAUI 开发一个无人机应用(上)

    点击蓝字 关注我们 编辑:Alan Wang 排版:Rani Sun 微软 Reactor 为帮助广开发者,技术爱好者,更好的学习 .NET Core, C#, Python,数据科学,机器学习,AI ...

  6. 从仿真到实飞,Prometheus自主无人机开发全覆盖!快来参加阿木实验室线下集训吧!

    受够了假期的人挤人吗?快来参加阿木实验室线下集训吧! 阿木在此重磅推出"国庆特训营 "!本次特训由Prometheus项目创始人主讲,手把手授课!五天时间带你入门无人机科研圈,让你 ...

  7. simulink仿真,提供MBSE的无人机开发解决方案及仿真模型

    simulink仿真,提供MBSE的无人机开发解决方案及仿真模型: 1.SysML语言系统架构设计 2.Matlab/simulink/stateflow建模详细设计 3.模型自动化测试(规范.缺陷. ...

  8. 各种开发API文档+开发工具

    版权声明:本文为博主原创文章,转载请标明出处. https://blog.csdn.net/chaoyu168/article/details/51462377 各种开发API文档+开发工具,需要的自 ...

  9. 前端和后端开发人员比例_前端开发人员vs后端开发人员–实践中的定义和含义

    前端和后端开发人员比例 Websites and applications are complex! Buttons and images are just the tip of the iceber ...

最新文章

  1. 2018-3-10论文(网络评论中非结构化信息表示与研究)笔记-----网评评定等级,网评分类,网评信度函数,Dempster法则
  2. 管理的实践-彼得.德鲁克
  3. HLS协议及java切片相关
  4. poj2976Dropping tests (二分搜索+还是涉及昨天遇见的o1分数规划)
  5. ubuntu系统home(主文件夹)中的内容在桌面的显示
  6. armv8/armv7中SCTLR的区别
  7. 南明区将引进和培养大数据高端人才逾千名
  8. 数据结构一【树状数组】普通、二维、离线树状数组的(单点修改,单点查询,区间修改,区间查询)模板及应用例题总结
  9. 转:CDC,CPaintDC,CClientDC,CWindowDC区别
  10. oracle 10g dg参数配置,Windows平台之Oracle10g DG配置
  11. JavaWeb项目架构之Kafka分布式日志队列
  12. 工具:SQL Server软件使用指南
  13. [gdc17]《守望先锋》的EntityComponent架构
  14. 双重差分法之空间DID
  15. 给你一个完整的社群鸭介绍
  16. Win10 1809版本多用户远程登陆
  17. 机器学习基石(林軒田)笔记之十三
  18. 手工实现:SVM with Stochastic Gradient Descent
  19. 75 道 JavaScript 面试题
  20. matlab归一化方法,数据归一化的基本方法

热门文章

  1. 寒假每日一题 2 : 干草堆 java
  2. Python six库介绍和用法
  3. 游戏运营的十二大组成
  4. 两个苹果手机怎么定位_苹果手机录屏怎么开
  5. tv电视焦点(遥控器)操作笔记jq
  6. 【python 算法接口】使用FastAPI框架快速构建高性能的api服务
  7. c++11中的declval和decltype
  8. PyCharm 里面的 c、m、F、f、v、p 分别代表什么含义?
  9. 最近经常看到网上程序员被抓,如何避免面向监狱编程!?
  10. 闪聚支付-第1章-项目介绍