在AirSim中如何获取三维环境真值 在仿真测试中,环境的三维地图真值十分重要,可以作为各类建图算法的评价依据,也可以用来调试三维路径规划、避障等算法。在2020年12月,AirSim添加了一项新功能:直接从仿真环境获取指定范围和精度的voxel grid,以binvox格式保存,而binvox格式的文件又可以很容易转换成octomap,方便用户进一步使用。以下是该功能的使用测试。
Unscented Kalman filter无迹卡尔曼滤波 扩展卡尔曼滤波(EKF)用一阶导数来对非线性模型做局部线性化,而无迹卡尔曼滤波UKF使用所谓“统计线性化”方法,从一个已知的分布中做采样,也就是“生成sigma points”,来“模拟”非线性模型的随机分布。UKF也包含经典的“预测”和“更新”过程,只不过多了一步sigma points的采样。
可靠性计算python库 这里的可靠性Reliability指的是工程领域中的硬件可靠性,而非软件可靠性。可靠性的相关计算需要经验积累,针对性强的相关开源软件是比较少的。以下是我在github上找到的两个可靠性计算python包。
AirSim仿真IMU内参分析 本文将详细介绍AirSim中的惯性测量单元IMU传感器的噪声参数模型以及如何在open_vins\vins_mono等算法中应用这些参数:尤其是何时使用连续噪声模型参数、何时使用离散噪声模型参数。
Ensemble Kalman filter集合卡尔曼滤波 在气象预测领域,很多时候,模型具有巨大的量级,如果使用传统的卡尔曼滤波,协方差矩阵的更新将是一个~10e22量级的计算操作,因此传统的卡尔曼滤波并不适用。集合卡尔曼滤波(Ensemble Kalman filter)用sample covariance模拟原本的协方差矩阵,用一个小的多的量级的矩阵运算代替原本的协方差矩阵更新。集合卡尔曼滤波与粒子滤波有相通之处,本文将通过一个应用EnKF进行定位的python实例来初探集合卡尔曼滤波的概念。
AirSim中的物理引擎 “物理引擎”是指在一款仿真软件/平台中使用的模拟现实世界物理逻辑的计算单元,在AirSim中,针对无人机MultiRotor的物理引擎是AirSim自己开发的FastPhysics,而针对车辆Car的物理引擎是Unreal自己的PhysX引擎。本文提供了在车辆Car SimMode下使用FastPhysicsEngine的方法。
从EKF到MSCKF 本文主要会对msckf与ekf的联系做一个大体的介绍,以便读者在掌握ekf思想的基础上更好地把握msckf的思路,不会涉及msckf内具体的数学推导,也不会像前几节一样对msckf的代码做具体展示,只在最后给出msckf的代码链接和使用指南。
使用ros actionlib向机器人发送目标点 当我们已有现成地图的时候,ros的Navigation程序包可以根据已有地图进行定位导航,其中的move_base程序包应用ros的actionlib机制接收全局目标点,进行路径规划,然后对移动机器人进行控制行进至目标点。本文将展示用c++和python如何应用actionlib来向move_base发送目标点。
基于图的自主探索路径规划算法gbplanner_ros试用 这篇来自挪威科技大学的论文提出了一种用于地下环境中基于图的自主探索路径规划的新策略。地下矿洞环境一般来说具有覆盖面积大、狭长走廊多等特点(而我们知道长走廊对slam算法是很不友好的)。github仓库中附上了三个仿真环境:由简单到复杂,最后是实地扫描数据转换成的model组成的world。
python装饰器详解 有的时候,我们会在python代码中看到@符号,这其实就代表着装饰器。本文内容为:python装饰器详细解读、常用装饰器@property和@classmethod @staticmethod介绍
轮式机器人算法仿真的一些杂七杂八03 SendingSimpleGoals 写C++代码,用actionlib给move_base动作目标来控制机器人向前行走;gazebo+ros单个控制车轮的PID参数:problems-to-move-the-wheels-with-a-pid-controller,但我的感觉是,仿真中的机器人表现和物理引擎的设定有很大关系,物理引擎的设定与计算平台算力也有很大关系,物理引擎的参数和算力对机器人“稳定性”的影响可能会大于PID参数的微小变化。
Python版msckf算法使用测试 从KF到EKF到EKF slam都有相应的python程序可以学习演示,没想到到了msckf这一步仍然有人写了python版本,还是双目的:stereo_msckf。uoip的stereo_msckf直接翻译自Kumar版的msckf,且剥离了ros,所以单独用Pangolin做了显示界面,README中写的是基于python 3.6+,以下是我在ubuntu 16.04,ros kinetic(意味着我系统里有一大堆python 2.7),python 3.5.2环境下的使用测试。
轮式机器人算法仿真的一些杂七杂八02 turtlebot实现自主搜索建图:Turbot-SLAM入门教程-实现自主探索建图(kinect V1版);可以根据此实现仿真系统的自主搜索建图:比较老旧了,只能做参考,因为只支持ROS indigo;创客智造:这是一个具有丰富内容的ROS和机器人软硬件中文学习平台,主要是对各方面内容做了集成,然而内容质量参差不齐重点内容详细介绍,其余板块暂时作用不大:【学习ROS入门教程】:ros wiki tutorials汇总和中文翻译,价值不大
EKF SLAM学习笔记03 在上一节中我们看到的是扩展卡尔曼滤波在定位中的应用,EKF同样可以应用于SLAM问题中。在定位问题中,机器人接收到的观测值是其在二维空间中的x-y位置。如果机器人接收到的是跟周围环境有关的信息,例如机器人某时刻下距离某路标点的距离和角度,那么我们可以根据此时机器人自身位置的估计值,推测出该路标点在二维空间中的位置,将路标点的空间位置也作为待修正的状态量放入整个的状态向量中。
EKF SLAM学习笔记02 在上一节中,我们了解到了卡尔曼滤波的计算公式。卡尔曼滤波基于线性系统的假设,如果运动模型或者观测模型不能用线性系统来表示(大部分现实问题都无法遵从线性系统的假设),那么我们仍然可以使用卡尔曼滤波的思想,只不过我们使用一阶雅克比矩阵来代替状态转移矩阵来进行计算(证明略),这就是扩展卡尔曼滤波EKF
轮式机器人算法仿真的一些杂七杂八01 轮式机器人性能功能点:从实际角度出发,轮式机器人在不同速度下,编码器准确度是不一样的,有可能出现一个最佳速度区间,低于区间速度或高于区间速度都会出现行驶距离与编码器对不上的程度增加。课程:http://u.cs.biu.ac.il/~yehoshr1/89-685/Fall2013/ 包括了ROS和Gazebo的联合,以及ROS的navigation包等 Introduction to Roboticshttp://u.cs.biu.ac.il/~yehoshr1/89-685/ 在2016年的课程.
理解Gazebo plugins 深入理解Gazebo与ROS的关系,gazebo网站上的三套tutorials需要完成:a. Intermediate: Customize simulationb. Write a pluginc. Connect to ROSgazebo中关节参数设定的ODE guide完成1.c这一tutorial时加载controllers会出现的error:[ERROR] [1546833008.127589810, 17.940000000]: Could not load con...
Gazebo Intermediate tutorials: Velodyne--加载自定义三维模型并添加plugin Gazebo的官方网站上有一系列的教程(但存在针对的版本较老、不成体系、更新慢等问题),值得按照步骤自己操作一遍。例如以下这个Intermediate: Velodyne教程,涉及gazebo建模、加入plugins、连接ros等。
ROS工业机器人和工业自动化竞赛ARIAC 2021即将启动 ROS官方论坛今天正式宣布美国国家标准技术研究所NIST成为了其工业机器人和工业自动化竞赛ARIAC 2021的赞助商。官宣链接ROS的此项比赛Agile Robotics for Industrial Automation Competition (ARIAC)今年已经是第5次举行了,是一项基于仿真的机器人竞赛,类似于现有的DARPA SubT Challenge,但专门针对工业机器人应用。典型的比赛场景比如结合基于视觉的分拣、工业机器人动作规划与控制等,最终打造一条柔性自动化流水线。今年的奖金高..
Mastering ROS for Robotics Programming第二版阅读笔记 Mastering ROS for Robotics Programming一书由Lentin Joseph和Jonathan Cacace编写,目录如下:书中所用代码可以在github上找到,例如以下的前人总结:github代码仓库简要记录下我阅读此书的一些笔记:Mastering ROS for Robotics Programming一书中的chapter 3和chapter 4详述了ROS中的机器人建模方式、urdf和xacro的关系、结合ROS的gazebo仿真等内容;Mas.
启动gazebo时的ogre渲染引擎相关error 解决error:virtual void Ogre::RenderSystem::setDepthBufferFor(Ogre::RenderTarget*),更新nvida最新驱动即可。
gazebo仿真环境加载模型方式 通过gazebo gui直接保存的仿真环境world文件包含模型文件的内容和模型瞬时状态,在模型数量多的情况下会造成文件冗长。如果环境中绝大部分都是静态模型,可以用另一种引用模型的方式加载模型。
如何通过rostopic发布速度命令控制AirSim中的车辆 一言以蔽之:ros teleop如何通过geometry_msgs的Twist发布cmd_vel命令,我们就可以如何通过AirSim自带msg发布控制车辆的命令。
AirSim bug: SparseArray.h中的Assertion failed: Index < GetMaxIndex() 在AirSim结合ROS接口使用的时候遇到了一个bug,通过回退AirSim版本并重新编译暂时解决了这个问题。
微软开源仿真器AirSim ROS接口 本文介绍的内容解决了如下几个问题:1.计算资源有限的情况下如何获取频率更高的视觉图像2.针对车辆模式的ROS接口3.解决ROS接口输出的双目图像时间戳同步问题4.提供了一些其他的vslam算法测试可能用到的工具和一个开源仿真环境