ArduPilot 笔记
1. ArduPilot SITL 编译 # 编译及开发环境准备 ./Tools/environment_install/install-prereqs-ubuntu.sh -y ./waf configure --board sitl ./waf plane # ArduPlane # 生成 build/sitl/bin/arduplane 1.1. 初步运行 使用自定义p...
1. ArduPilot SITL 编译 # 编译及开发环境准备 ./Tools/environment_install/install-prereqs-ubuntu.sh -y ./waf configure --board sitl ./waf plane # ArduPlane # 生成 build/sitl/bin/arduplane 1.1. 初步运行 使用自定义p...
复制自:github笔记 – GHScan大神 – Memory_Model 前言 谁需要关心这个主题? 实现同步原语、Lockless算法的并行计算工程师 实现操作系统内核或驱动,和DMA设备打交道的系统工程师 实现高级语言Memory Model的编译器工程师 实现处理器Memory Model的CPU工程师 如何阅读本文? 阅读时注意本文的组织结构,第一遍...
有如下几个问题需要厘清: 工作原理,即流程; 虚假唤醒与唤醒丢失; notify_one 与 notify_all。 lock_guard 与 unique_lock。 #include <atomic> #include <condition_variable> #include <iostream> #include <t...
1. 介绍 libevent底层使用不同的事件通知机制:linux 使用epoll,Windows使用IOCP。它提供了一个统一的接口来处理网络事件和定时事件。 使用libevent的几个基本操作步骤: 1.1. 创建 event_base 对象,作为事件循环的核心 struct event_base *base = event_base_new(); event_base...
1. 信号与 Connections 信号一般用于组件封装,在外部声明的组件内声明信号处理器。Connections则提供另外一种方式:即在被调用组件外部使用信号并使用信号处理器。 1.1. 信号的语法及使用 信号语法: signal <signalName>([<parameterName>:<parameterType>[,...]]) 信...
1. 下载 交叉编译器下载地址目录:aarch64-linux-gnu gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnus sysroot-glibc-linaro-2.25-2019.12-aarch64-linux-gnu 下载之后,将编译器及sysroot解压到/opt目录下: /opt/gcc-linaro-7.5...
1. 序列化 PacketSerializer 分为以下几个步骤: 需要一个 buffer 来存储序列化过程中的数据,使用 std::vector 作为底层存储。 提供一个模板实现的基础函数 writeToBuffer,将基本类型数据写入 buffer。 提供一个模板函数 pack,支持将基础类型数据,以及其数组,以及 vector 类型进行序列化。 在 pack 函数...
1. static_cast 编译时类型检查 只允许安全的、有意义的类型转换 会进行必要的类型转换计算 static_cast不能用于在不同类型的指针之间互相转换,也不能用于整型和指针之间的互相转换。 示例: // 数值类型转换 int i = 42; double d = static_cast<double>(i); // 基类与派生类之间的转换(向...
现代C++模板教程 github – Modern-Cpp-templates-tutorial 现代C++模板教程 C++ Templates 2ed github – Cpp-Templates-2ed Cpp-Templates-2ed github – CppTemplateT...
if(WIN32 AND NOT UNIX) get_target_property(qmake_executable Qt6::qmake IMPORTED_LOCATION) get_filename_component(_qt_bin_dir "${qmake_executable}" DIRECTORY) find_program(WINDEPLOYQT_EX...