配置:Vmware14 虚拟机, Ubuntu18.04 LTS 版本。台式机Win10系统,8G内存,i7-6700四核整个配置过程基本按照官网操作。虚拟机配置如图 进入ubuntu18.04之后,首先配置网络,然后依次输入下列指令即可1、apt-get update -y apt-get upgrade -y2、sudo apt install git3、git clone https:/
PX4的启动流程基本和之前版本的一致,有微小改动,如下图所示。本文主要查看其中姿态控制部分。 其中姿态部分根据在上图中所在位置为 因此在px4代码中(版本号为1.11)中,查看对应的RCS文件中的内容,为(此处稍有不同) 跳转进去查看为(注,该文件中根据不同的机型,选择不同的对应启动程序,下图仅选择旋翼飞机):再次跳转,找到rc.mp_apps即可,如下图所示: 上图中左边以数字开头的表示
三尺讲台耕日月,书山寻道育新人。丹桂飘香的九月,我们迎来了第38个教师节。尊师重教是中国的优良传统,古代大教育家孔子更是留下了“有教无类”、“温故而知新”、“学而时习之”等一系列至理名言。传道授业解惑的教师被誉为“人类灵魂的工程师”。 多年来,天之博特致力于将前沿的人工智能与机器人技术应用到教育,科研与产业中,与国内包括清华大学、北京大学、浙江大学、上海交通
ArduPilot飞行前检查 主要包括两个部分:1. 初始化中遥控器输入检查;2. 1Hz解锁前检查。附: 显示地面站信息 参考文章:Ardupilot Pre-Arm安全检查程序分析 1. 初始化中遥控器输入检查 直接跳转进去查看函数为; bool AP_Arming_Copter::rc_calibration_checks(bool display_failure) {
首先给出最终效果图:实现内容与PX4官网代码功能类似,四旋翼飞机自动起飞至2.5m高度,悬停一定时间,然后自主降落。 记录如下几个需要注意的地方: 一共使用到三个文件夹,其中第一个为源代码,第二个为参照官网下载的gazebo地图信息,第三个为ROS功能包。 第二个gazebo地图需要在github上下载然后编译 git clone https://github.com/khancyr/
优化逃不过两部分,残差项和雅可比,而此处由于滑窗的存在,又多了一项,即边缘化,所以关于DSO的后端优化部分也按照这三部分来讲。(本篇文章主要参考高翔博士的博客https://zhuanlan.zhihu.com/p/29177540) 1. 残差项 在VO过程中,DSO会维护一个滑动窗口,通常由5-7个关键帧组成,流程如前所述。DSO试图将每个先前关键帧中的地图点投影到新关键帧中,形成残差项。
话不多说,直接上流程图吧,一图胜千言(这张图是高翔博士博客里的,链接:https://zhuanlan.zhihu.com/p/29177540) 有了这张图,我们就对前端里程计有了清晰的整体认识,下面我们看具体的流程。 DSO的前端和后端在文件结构上分的比较清楚,前端里程计全在文件夹src/FullSystem中,其中里程计的主流程管理在FullSystem.cpp中,管理主流程的函数是
DSO属于稀疏直接法,它是视觉里程计,不包括地图复用和回环检测。本篇文章重点梳理它的代码的文件结构和工作流程。在网上查资料的时候,高翔博士的解读清晰明了,提供了很大的帮助,本系列文章也会从其中借鉴部分内容,所以在这里给出他的文章连接 半闲居士:DSO详解659 我们先看DSO的整体框架,这张图来自高翔博士的文章 可以看出,代码共包括四个主要部分: 1)src/FullSystem:系统
深度滤波器主要是计算地图点的深度,供Feature Alignment使用。 深度滤波器是一个收敛过程,观测量是每次三角化计算的深度值,高翔《视觉SLAM十四讲》第二版把这个过程概括为四步: 1)假设所有像素的深度满足某个初始的高斯分布 2)当新数据产生时,通过极线搜索确定投影点位置 3)根据几何关系计算三角化后的深度及不确定性 4)将当前观测融合进上一次的估计中,若收敛,则停止计算,否
为什么要做这一步? 通过上一步Feature Alignment我们能够得到优化后的特征点预测位置,它比之前通过相机位姿预测的位置更准,所以反过来,我们利用这个优化后的特征位置,能够进一步去优化相机位姿以及特征点的三维坐标。 怎样做这一步? 在一开始的直接法匹配中,我们是使用的光度误差,这里由于优化后的特征位置和之前预测的特征位置存在差异,这个能用来构造新的优化目标函数。 上式中误差变
为什么要做这一步? 通过上一步sparse model-based image alignment我们已经能够估计位姿了,但是这个位姿肯定不是完美的。导致重投影预测的特征点在IkIk中的位置并不和真正的吻合,也就是还会有残差的存在。如下图所示,图中灰色的特征块为真实位置,蓝色特征块为预测位置。 怎样做这一步? 从上图中可以看出,虽然真实位置和预测位置有偏差,但是偏差不大,可以构造残差
这部分作用可以用一句话概括为:使用直接法最小化图像块重投影残差来获取位姿。 已知:假设的相邻帧位姿 Tk−1 (先初始化为上一帧或单位矩阵),k-1帧观测量:特征点2D投影位置及其深度。 目标:利用直接法最小化图像块重投影误差来获取当前帧位姿 Tk ,其中,红色的为位姿,即优化变量。 直接法基本思想:空间中一空间点在各个视角下成像的灰度短时间内不变。 直接法具体过程如下: 1)准
本篇文章先系统介绍下SVO的原理,方便后面对代码的理解 系统流程可以用下面这张图概括 其实这张图少了系统中一个步骤,就是初始化,所以我们以列表形式列出系统流程如下: 1. 初始化:得到相机初始位姿和特征深度值 没太多可讲,多数slam系统的初始化都差不多。 2. 运动跟踪(Motion Estimation) 1)Sparse Model-based Image Alignment
0. 简介 在遇到一些内存异常的时候,经常这部分的代码是很难去进行分析的,之前作者就专门写过两篇博客(Ubuntu环境下便于调试代码的工具、Valgrind对ROS程序的可视化分析)来介绍性能分析的问题,最近了解到Perf这个神器,这里也展开介绍一下如何使用Perf以及如何去画火焰图。 1. Perf 基础 1.1 Perf 简介 perf是Linux下的一款性能分析工具,能够进行函数级与
内容列表 一、 使用gmapping 算法构建地图 二、gmmaping算法相关参数解释 三、navigation 自主导航 四、总结 这一篇的建图是后面功能实现的基础,图建不好,会严重影响后面的导航和抓取,所以建图尽量准确,能够省去很多麻烦事。 一、 使用gmapping 算法构建地图 这里的gmapping算法只做了解,可以不用去深入学习算法本身的知识,有兴趣
ROS 2中发布和可视化传感器数据实战系列之四:kitti公开数据集IMU数据的发布及在RViz2中的显示 【作者注】:本文将介绍如何在ROS 2中将kitti公开数据集的IMU数据发布为sensor_msgs/IMU消息(文章附有完整的python源代码)。由于在ROS 2中RViz2默认情况下并不支持对IMU数据的可视化显示,因此需要自己添加专门用于显示sensor_msgs/Imu消息
准备 对于ros和openni2的准备看我上一篇的日志 下载源码,pointcloud_to_laserscan:https://github.com/ros-perception/pointcloud_to_laserscan 编译源码 打开源码launch下面的sample_node.launch文件(当然是roslaunch ../sample_node.launch)
写在前面 最近有道作业题需要将机器人的历史路径显示出来,但是网上很多相关的教程都是搬运了官网的链接,并没有详细的操作流程。。。因此我又花费了很多时间去ros官网上学习marker的用法,学习怎么写publisher和subscriber,最终成功将路径显示了出来。这篇文章是对这个过程的详细的介绍,原理和代码实践部分会分开,因此如果你赶时间只要一个结果的话,把详细的讲解跳过即可。不过我还是推荐看完
一、需求: 在F1TENTH 仿真环境simulator中,使用PID算法实现无人车沿墙走wall_following源码链接:https://github.com/Grizi-ju/ros_program/blob/main/wall_following_pid.cpp (另外两个是python版本的)B站讲解:https://www.bilibili.com/video/BV14F411v
第一节:感谢---------首先,该项目由中国科学院海西研究院泉州装备制造研究所的机器视觉与模式识别课题组赞助。感谢郭杰龙和魏宪老师的大力帮助。--------该课题使用的机械臂是一个六轴机械臂,具体信息参考:小强社区,在这里应该能了解到具体的机械臂信息。 第二节:设备与配置需求首先看机械手臂照片: 看到没,这货就长这样。由于我不是卖这个机械手的,所以就不给购买链接了。我同事昆山龙哥买这