视觉SLAM十四讲笔记
## 初识SLAM flowchart LR sensor(传感器数据) frontEnd(前端视觉里程计) backEnd(后端非线性优化) mapping(建图) loopClosing(回环检测) sensor-->frontEnd-->backEnd-->mapping sensor-->loopClosing-->backEnd 步骤: ...
## 初识SLAM flowchart LR sensor(传感器数据) frontEnd(前端视觉里程计) backEnd(后端非线性优化) mapping(建图) loopClosing(回环检测) sensor-->frontEnd-->backEnd-->mapping sensor-->loopClosing-->backEnd 步骤: ...
概论 Behavior Tree 库 主要用于机器人和游戏AI,代替有限元状态机 特性: 可以执行异步动作 可以在运行时创建树 可以把自定义的树转换成插件链接,在运行时动态加载 包含日志/优化架构可以可视化,记录回放分析状态转移 什么是行为树? 行为树(BT)是一种结构在不同自动化终端任务之间转换,比如机器人或者游戏的虚拟实体 ...
触摸屏设备自动弹出小键盘关闭 在安装了触摸屏为主屏幕的设备上,就算没打开设置里面的屏幕键盘(on-screen keyboard),在有输入操作的情况下,比如打开终端,文本框获得输入焦点都会弹出来,后面经过搜索发现此小键盘的名字叫caribou,是gnome桌面自带的,而且要卸载可能会附带删除一些列需要的依赖,会对系统造成破坏性,后面得知gnome-extension有一个插件可以禁用 ...
C++原子操作中的内存顺序 头文件 <atomic> C++11形式 typedef enum memory_order { memory_order_relaxed, memory_order_consume, memory_order_acquire, memory_order_release, memory_order_acq_rel, memory_order_seq_cst } memory_order; C++20形式 enum class memory_order : /*unspecified*/ { relaxed, consume, acquire, release, acq_rel, seq_cst }; inline constexpr memory_order memory_order_relaxed = memory_order::relaxed; inline constexpr memory_order memory_order_consume = memory_order::consume; inline constexpr memory_order memory_order_acquire = memory_order::acquire; inline constexpr memory_order memory_order_release = memory_order::release; inline constexpr memory_order memory_order_acq_rel = memory_order::acq_rel; inline constexpr memory_order memory_order_seq_cst = memory_order::seq_cst; std::memory_order指定了怎样访问内存,包括常规的、非原子的内存访问、如何围绕原子操作排序。在多核系统中如果没有任何约束,当多个线程同时读写一些变量,一个线程可能以一种顺序观察值的改变不同于其他写入这些值的顺序。确实,这个很明显的顺序改变可能存在于在不同的读取线程之间。一些相似的影响甚至可能发生在单处理器系统,由于编译器内存模型允许的转换。 ...
C++ Concurrency in Action Managing threads Basic thread std::thread可以使用函数和callable对象创建 code #include <iostream> #include <thread> #include <mutex> using namespace std; mutex print_lock; void hello_func() { lock_guard<mutex> lg{print_lock}; cout << "hello function: " << std::this_thread::get_id() << endl; } class hello_class { public: void operator()() { lock_guard<mutex> lg{print_lock}; cout << "hello callable: " << std::this_thread::get_id() << endl; } }; int main() { std::thread thread_func(hello_func); hello_class c; std::thread thread_class(c); std::thread thread_lambda([] { lock_guard<mutex> lg{print_lock}; cout << "hello lambda: " << std::this_thread::get_id() << endl; }); { lock_guard<mutex> lg{print_lock}; cout << "main: " << std::this_thread::get_id() << endl; } thread_func.join(); thread_class.join(); thread_lambda.join(); return 0; } 使用detach分离线程和当前线程, 使用join等待线程完成, 如果在调用join时线程是非joinable的就会出现异常, 首先要判断是否joinable ...
2 数字图像基础 简单成像模型 $$ f(x,y)=i(x,y)r(x,y) $$其中$i(x,y)$为入射到被观察场景的光源照射量, $r(x,y)$表示被场景中反射的照射量 $$ 0\le i(x,y)\le \infty $$$$ 0\le r(x,y)\le1 $$灰度级数: 表示一个灰度的2的次方数, 比如256, 128等 ...
暗通道先验法 大气散射模型 $$ I(x)=I_{\infty}r(x)e^{-kd(x)}+I_{\infty}(1-e^{-kd(x)}) $$其中$r(x)$为反射率, $I_{\infty}$为无穷远处天空辐射强度, $I_{\infty}r(x)$为没有任何干扰情况下的图像, 有雾的情况下大气透射率为$e^{-kd(x)}$, $k$为散射系数 ...
原文 Class Diagram 类图用于面向对象对于应用结构概念建模, 也用于把具体的模型翻译成程序代码. 类图也可以用于数据建模 mermaid渲染: classDiagram Animal <|-- Duck Animal <|-- Fish Animal <|-- Zebra Animal : +int age Animal : +String gender Animal: +isMammal() Animal: +mate() class Duck{ +String beakColor +swim() +quack() } class Fish{ -int sizeInFeet -canEat() } class Zebra{ +bool is_wild +run() } 语法 类结构 顶部代表类名称, 中部代表类成员变量, 底部代表类成员函数 ...
SOLID Principle Single Responsibility Principle (SRP) 日记例子,一个类只做一件事 Open-Closed Principle (OCP) 根据颜色大小排序, Specification类,为扩展开发,为修改关闭 Liskov Substitution Principle (LSP) 父类定义的方法意义,子类不能相违背,矩形和正方形的set_size() ...
简介 总结一下开发中用到的工具 编译开发 msvc WSL2 MinGW Cygwin gcc docker gcc镜像 clang 在线编译器:https://godbolt.org/ IDE Neovim(带LSP) CLion PyCharm Visual Studio Code 编辑器 Typora Neovim Visual Studio Code Cursor 程序库管理 conan vcpkg bintray msys2 pnpm 构建工具 autotools CMake Ninja meson pkg-config(查找库) Bug调试 lldb/gdb/cdb x64dbg valgrind address-sanitizer breakpad/crashpad dbghelp sentry NVIDIA Nsight(调试OpenGL) 版本控制 lazygit(git tui) sublime-merge(git gui) git-bash fork(git gui) gitlab gitea git flow git-interactive-rebase-tool(交互式rebase工具) 文件比较 sublime merge git diff 持续集成 gitlab-runner github workflow Travis CI Bug管理 github/gitlab issues 禅道 代码分析 cppcheck clang-tidy 性能优化 perf Visual Studio: Profiler gperftools 数据解析 imHex HxD wireshark netcat 代码整洁 clang-format clang-tidy editorconfig 打包 7zip Inno Setup Advanced Installer NSIS fupx linuxdeployqt launchpad 资源生成 软件 ...
Matlab2020a在最新Linux下安装报错 使用的是最新的Manjaro系统 错误内容: Unable to launch the MATLABWindow application 执行./bin/glnxa64/MATLABWindow可以得到具体报错的原因 首先是 bin/glnxa64/MATLABWindow: error while loading shared libraries: libselinux.so.1: cannot open shared object file: No such file or directory 安装selinux后是 ...
Windows下格式化显示错误码 使用FormatMessage函数 TCHAR *s = NULL; FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, WSAGetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &s, 0, NULL); OutputDebugString(s); 中文环境下打印: 由于目标计算机积极拒绝,无法连接。 参考 https://stackoverflow.com/questions/3400922/how-do-i-retrieve-an-error-string-from-wsagetlasterror > https://docs.microsoft.com/zh-cn/windows/win32/api/winbase/nf-winbase-formatmessage?redirectedfrom=MSDN 多字节API和UNICODE API 采用Windows接口时, 如果使用宏定义的接口, 如OutputDebugString, 就要考虑到传参在多字节API和UNICODE API直间的兼容 ...
插件安装 采用packer.nvim安装,根据packer.nvim的文档安装插件管理器,然后在克隆仓库到 # Linux git clone --depth 1 https://github.com/wbthomason/packer.nvim\ ~/.local/share/nvim/site/pack/packer/start/packer.nvim git clone http://github.com/helywin/nvim_config.git ~/.config/nvim # Windows(PowerShell) git clone https://github.com/wbthomason/packer.nvim "$env:LOCALAPPDATA\nvim-data\site\pack\packer\start\packer.nvim" git clone http://github.com/helywin/nvim_config.git "$env:LOCALAPPDATA\Local\nvim" 然后执行:PackerSync就可以开始自动下载插件安装,我的配置:http://github.com/helywin/nvim_config.git ...
一、对象 物理学研究的是物体概念,不是实体,研究成果为物体概念间的关系。 物自体是独立于人的思维的东西,我们观察物自体得到杂多,杂多要成为命题必须具备形式,纯粹概念和经验概念,纯粹概念是时间空间(直观)和判断(概念)。命题 = 材料 +(形式 = 时间空间 + 概念),物是形式+材料,称为经验概念。 存在一词不能与物自体连用。 独立于思维的东西无法用来做证明或判断。 凡是事实,一定是经验命题。经验命题不一定要正确或者经验有的。 语言 $$ \begin{align} \text{语言} \begin{cases} \text{所有词,词组、句、成语等等的总和} \\\\ \text{产生事实的能力,造句子的能力} \end{cases} \end{align} $$ 主体: $$ \begin{align} \text{主体} \begin{cases} \text{行规定者}\rightarrow\text{心} \\\\ \text{被规定者}\rightarrow \begin{cases} \text{灵魂:心理对象} \\\\ \text{肉体:物理对象} \end{cases} \end{cases} \end{align} $$ 纯粹的直观:空间、时间;经验的直观:纯粹的直观 + 感觉材料。 心有两种能力:感性和知性。 实体不是物自体,是时间中永恒不变的,万物皆流指的是物自体不断变化。 二、知性为自然界立法 人们通过规律总结实体之间的关系,规律就是不变,关系必须是不变者与不变者直接的关系。 实体是纯粹的概念,实体是不变的,不随时间变化。 因果律两种表现方式:因先于果;因果关系。因果律是纯粹概念。 心产生的形式 $$ \begin{align} \text{心产生的形式} \begin{cases} \text{感性的形式:纯粹直观——空间、时间} \\\\ \text{知性的形式:纯粹概念——范畴} \end{cases} \end{align} $$ 物在变化,物的实体不变,变化的只是物的状态。同一物在同一时刻不存在两种状态,两种状态一前一后,前一种状态为因,后一种状态为果。 自然界是经验之总和(经验概念,经验命题)。自然界即自然图景,对全人类而言是公共的,在语言中具备思维形式。 卡尔·波普尔“三个时间”说 $$ \begin{align} \text{三个世界} \begin{cases} \text{物自体} \\\\ \text{心中之物} \\\\ \text{言中之物} \end{cases} \end{align} $$ 巫术在哲学之前,是哲学之母;宗教则在古代哲学之后,是哲学之女。 先验论的先验是指逻辑上的优先而非时间上的。意味“重要于”。 三、物自体(本无) 物自体独立于心。 不可把量范畴加于独立于思维之外者。 唯有同一不变者才可言其变,且为其状态变。唯同一不变者方可命名。 绝对的无,即无对待者的无,也即不与“有”相对立的无,此即“本无”。 四、物自体(意会体):自由 区分两种纯粹理性的使用 把人和神的世界与自然物的世界划分了开来,并宣布,神无能过问自然界,社会比自然重要,道德比科学重要。 在人和神的世界中,人比神重要,神只是人设想出来以便维护社会道德的。 人要坚持道德、理想、信仰,克制情欲以合乎实践理性,这样才配享有幸福。 概略结构 $$ \begin{align} \begin{cases} \text{先验原理论} \begin{cases} \text{先验感性论} \\\\ \text{先验逻辑} \begin{cases} \text{先验分析论} \begin{cases} \text{概念分析论······概念} \\\\ \text{原理分析论······判断} \end{cases} \\\\ \text{先验辩证论························推理} \end{cases} \end{cases} \\\\ \text{先验方法论} \end{cases} \end{align} $$$$ \begin{align} \text{先验逻辑} \begin{Bmatrix} \text{先验分析论} \begin{cases} \text{概念分析论······本体论} \\\\ \text{原理分析论······理性物理学} \end{cases} \\\\ \text{先验辩证论} \begin{cases} \text{·····················理性心理学} \\\\ \text{·····················理性神学} \end{cases} \end{Bmatrix} \text{自然形而上学} \end{align} $$$$ \begin{align} \text{形而上学} \begin{cases} \text{自然形而上学} \\\\ \text{道德形而上学} \begin{cases} \text{德性论} \\\\ \text{法权论} \end{cases} \end{cases} \end{align} $$ 自由是对必然性的认识和运用。 历史必然性即自由。(骑在马背上的世界精神) 意会体:理性存在体 物的二重性:人的自然立场和社会立场。现象体和意会体。 $$ \begin{align} \text{物} \begin{cases} \text{自然} \begin{cases} \text{本无} \\\\ \text{现象} \end{cases} \\\\ \text{意会体 自由(社会)} \begin{cases} \text{德性论} \\\\ \text{法权论} \end{cases} \end{cases} \end{align} $$ 人对物只有权力没有义务,权力指对物的占有。包括经验的占有和意会的占有。经验的占有即肉体的占有,使用;所有权的占有即意会的占有。意会的占有是占有物自体。被意会的占有的物是意会体。 人的二重性。自然;社会(法权和义务) 自由:人不受自己的自然冲动左右;不论做什么,总应该做到使你的意志所遵循的准则永远能够同时成为一条普遍的立法原理;应当。自律、社会性、应当。 自由要求互相承认,这称作自由的社会性。 人与禽兽的区别在于人是自由的而,禽兽是必然的。 社会是人与人之间的关系之总和。(法权和义务的关系) 人还有必然性的一面,所以行动应当合乎道德法则,仅仅是意会体则必然合乎道德法则。 人们对自身的自由本性的意识有着决定性的作用。社会从自然状态向自由状态发展。 上帝概念属于道德学的概念。