Python机器人大纲

原文: https://pythonrobotics.readthedocs.io 定位 扩展卡尔曼滤波定位 航位推算+GNSS融合定位,航位推算使用imu 集合卡尔曼滤波定位 https://www.math.umd.edu/~slud/RITF17/enkf-tutorial.pdf 无迹卡尔曼滤波 https://cse.sc.edu/~terejanu/files/tutorialUKF.pdf https://www.researchgate.net/publication/267963417_Discriminatively_Trained_Unscented_Kalman_Filter_for_Mobile_Robot_Localization 直方图滤波 粒子滤波 建图 高斯网格图 ...

扩展卡尔曼滤波

说明 原教程英文网址:扩展卡尔曼滤波 实际应用 当以下情况出现时非常有用: 机器人传感器感知世界 机器人传感器不是100%准确 把传感器观测值通过EKF,可以平滑噪声计算出每个时刻更好的估计值 ...

Qt的五种信号槽连接方式测试

前言 Qt的信号槽的连接方式有五种,每种代表的含义,从文档可以知道 Qt::AutoConnection:(默认)如果接收者是发出信号的线程,则使用Qt::DirectConnection。否则,将使用Qt::QueuedConnection。连接类型在信号发出时被确定。 ...

blender烘焙贴图生成静态真实场景

起因 项目需要开发一个三维场景展示,在learnopengl花了一段时间学习了OpenGL的相关知识,后面自己写了一点例子。不想自己封装,使用了现有的引擎magnum,加载了模型文件之后发现一个比较大的问题就是自带的Phong着色器不支持阴影和环境遮蔽这些,场景看上去很假。三维场景运行的计算机配置也不高,不支持过多的动态渲染,在使用Blender期间无意中发现Blender支持烘焙贴图,并且把多个通道烘焙的贴图合并到一张图上。这样做的好处就是着色器不需要计算任何光源,而且比较逼真。缺点就是部分需要运动的模型和静态模型之间的动态光影没办法展示出来。 优缺点 优点: 节省实时计算消耗的资源(包括纹理贴图的法线置换等贴图的计算) 非实时光线追踪效果比实时的Phong光照更近逼真 缺点: ...

卡尔曼滤波

说明 绝大部分内容来自 https://www.kalmanfilter.net ,可以直接去看英文版本 背景知识 均值和期望值 当系统状态可观测时,均值(Mean)代表平均水平 当系统测量值存在误差时,用期望值(Expected Value)估计真实值 ...

ROS线程XmlRpc::XmlRpcDispatch::work函数CPU占用过高问题

现象 线程中有一个由ROS自己创建的线程CPU占用率接近100%,该线程中的XmlRpc::XmlRpcDispatch::work()函数占用过高,使用sudo perf top -p [pid]得到如图 ...

常用命令行总结

Tab补全,Ctrl-r显示历史命令 Ctrl-u删除所有内容,Ctrl-w删除单词 Ctrl-x Ctrl-e在文本编辑器里面修改命令行 history查看命令行,!n执行之前第几条命令,!$执行最后一条 ...

Ubuntu设置只读系统启动

介绍 因为工作需要,工控机在遇到突发情况断电时会导致根文件系统破坏,启动的时候就直接进入修复系统的命令行,导致无法远程进行修复或者解决问题。 采用程序和系统分开分区的方式,用overlayroot保护系统分区不被修改,可以解决系统在断电后不能启动的问题(但是程序分区如果有写文件依旧可能会被破坏) ...

视觉SLAM十四讲笔记

## 初识SLAM flowchart LR sensor(传感器数据) frontEnd(前端视觉里程计) backEnd(后端非线性优化) mapping(建图) loopClosing(回环检测) sensor-->frontEnd-->backEnd-->mapping sensor-->loopClosing-->backEnd 步骤: ...

行为树

概论 Behavior Tree 库 主要用于机器人和游戏AI,代替有限元状态机 特性: 可以执行异步动作 可以在运行时创建树 可以把自定义的树转换成插件链接,在运行时动态加载 包含日志/优化架构可以可视化,记录回放分析状态转移 什么是行为树? 行为树(BT)是一种结构在不同自动化终端任务之间转换,比如机器人或者游戏的虚拟实体 ...

加速 提升工作效率

Ubuntu使用问题记录

触摸屏设备自动弹出小键盘关闭 在安装了触摸屏为主屏幕的设备上,就算没打开设置里面的屏幕键盘(on-screen keyboard),在有输入操作的情况下,比如打开终端,文本框获得输入焦点都会弹出来,后面经过搜索发现此小键盘的名字叫caribou,是gnome桌面自带的,而且要卸载可能会附带删除一些列需要的依赖,会对系统造成破坏性,后面得知gnome-extension有一个插件可以禁用 ...

C++原子操作中的内存顺序

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++并发笔记

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)\)表示被场景中反射的照射量 ...