![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
机器人软件工程
Stan Fu
这个作者很懒,什么都没留下…
展开
-
Udacity机器人软件工程师课程笔记(三十六) - GraphSLAM
GraphSLAM是解决完整的slam问题的slam算法。这意味着该算法将恢复整个路径和地图,而不仅仅是最近的姿势和地图。这种差异使它可以考虑当前姿势与先前姿势之间的依赖性。适用于我们的GraphSLAM的一个示例是地下采矿。每天都用在钻孔机上的大型机器在岩壁上切割。环境瞬息万变,保持正确的工作空间图非常重要。映射此空间的一种方法是在周围环境中驾驶装有激光雷达的车辆并收集有关周围环境的数据。原创 2020-05-23 23:03:08 · 3300 阅读 · 1 评论 -
Udacity机器人软件工程师课程笔记(三十五) - SLAM - 基于网格的FastSLAM
1.SLAM介绍即使定位和建图问题(simultaneous localization and mapping),一般简称为SLAM, 也称作(Concurrent Mapping and Localization, CML)。当机器人没有环境地图或者不清楚自身的位置时就会产生SLAM问题。机器人所具有的信息就只有历次测量值z1:tz_{1:t}z1:t和控制量u1:tu_{1:t}u1:t。 在SLAM问题中,机器人构建地图的同时确定自生相对于地图的位置。SLAM问题远比我们目前讨论过的问题困难的多原创 2020-05-20 21:17:41 · 1484 阅读 · 0 评论 -
Udacity机器人软件工程师课程笔记(三十四) - 占用栅格地图构建算法
1. SLAM Algorithms 介绍Extended Kalman Filter SLAM(EKF) 扩展卡尔曼滤波SLAMSparse Extended information Filter(SEIF) 稀疏扩展信息滤波Extended Information Form(EIF) 扩展信息滤波FastSLAMGraphSLAM定位:假设:已知地图估计:机器人的轨迹...原创 2020-05-18 05:23:29 · 2870 阅读 · 0 评论 -
Udacity机器人软件工程师课程笔记(三十三) - 蒙特卡洛定位算法(MCL)
一、概述之前的文章介绍过卡尔曼滤波算法进行定位,我们知道kalman算法适合用于线性的高斯分布的状态环境中,我们也介绍了EKF,来解决在非高斯和非线性环境下的机器人定位算法。但是他们在现实应用中存在计算量,内存消耗上不是很高效。这就引出了MCL算法。粒子滤波很粗浅的说就是一开始在地图空间很均匀的撒一把粒子,然后通过获取机器人的motion来移动粒子,比如机器人向前移动了一米,所有的粒子也就向前...原创 2020-05-03 04:06:06 · 2385 阅读 · 0 评论 -
Udacity机器人软件工程师课程笔记(三十二) - 卡尔曼滤波器 - 一维卡尔曼滤波器 - 多维卡尔曼滤波器 - 拓展卡尔曼滤波器(EKF)
卡尔曼滤波在技术领域有许多的应用。常见的有飞机及太空船的导引、导航及控制。卡尔曼滤波也广为使用在时间序列的分析中,例如信号处理及计量经济学中。卡尔曼滤波也是机器人运动规划及控制的重要主题之一,有时也包括在轨迹最佳化。卡尔曼滤波也用在中轴神经系统运动控制的建模中。因为从给与运动命令到收到感觉神经的回授之间有时间差,使用卡尔曼滤波有助于建立符合实际的系统,估计运动系统的目前状态,并且更新命令。原创 2020-04-13 20:25:10 · 1193 阅读 · 0 评论 -
Udacity机器人软件工程师课程笔记(三十一) - 使用keras实现四轴无人机目标检测跟随
1.项目介绍项目步骤:1.设置本地环境。2.有关模拟器如何工作及其基本控件的简要概述。3.从模拟器收集数据以训练网络。4.建立神经网络。5.编制相关程序。6.训练网络。7.使用Follow Me!模拟器测试模型。2. 环境设置安装依赖项OS X和Linux(Ubuntu)source activate RoboNDpip install tensorflow==1.2....原创 2020-01-03 12:02:07 · 746 阅读 · 0 评论 -
Udacity机器人软件工程师课程笔记(二十九) - 全卷积网络(FCN)
全卷积网络(FCN)1.全卷积神经网络介绍FCN对图像进行像素级的分类,从而解决了语义级别的图像分割(semantic segmentation)问题。与经典的CNN在卷积层之后使用全连接层得到固定长度的特征向量进行分类(全联接层+softmax输出)不同,FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷积层的feature map进行上采样, 使它恢复到输入图像相同的尺寸,从而可以...原创 2019-12-30 23:22:39 · 509 阅读 · 0 评论 -
Udacity机器人软件工程师课程笔记(二十八) - 卷积神经网络实例 - Fashion-MNIST数据集
1.Fashion-MNIST数据集Fashion-MNIST数据集包括一个包含60,000个示例的训练集和一个包含10,000个示例的测试集。每个示例是一个28x28灰度图像,与来自以下10个类的标签相关联:T恤/上衣裤子套衫连衣裙外套凉鞋衬衫运动鞋包短靴Source: https://github.com/zalandoresearch/fashion-mnist/...原创 2019-12-30 12:36:48 · 359 阅读 · 0 评论 -
Udacity机器人软件工程师课程笔记(二十七) - 卷积神经网络(CNN)
1.卷积神经网络介绍**卷积神经网络(Convolutional Neural Network,CNN)**是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。虽然上图中显示的全连接神经网络结构和卷积神经网络的结构直观上差异比较大,但他们的整体架构是非常相似的。从上图可以看出,卷积神经网络也是通过一层一层的节点组织起来的。和全连接神经网络一样,卷积...原创 2019-12-29 18:22:12 · 625 阅读 · 0 评论 -
Udacity机器人软件工程师课程笔记(二十六) - 神经网络 - tensorflow - 神经网络构成与优化 - MNIST手写数字识别
省去介绍TensorFlow,在这个部分我们想要实现使用神经网络来确定一个移动目标的位置,然后实现控制四轴飞行器来跟随目标。下面简要的介绍神经网络,内容大部分不是来自于Udacity课程,而是来自于《Tensorflow实战Google深度学习框架》(ps.这本书个人强推,我的深度学习入门书籍。),其中内容有部分增改。关于神经网络的介绍,相信很多大佬已经解释的很清楚了。下面重点记录理论部分,前面大部分没有给出相关程序,若是未来有机会会补上。原创 2019-12-29 06:39:57 · 338 阅读 · 0 评论 -
Udacity机器人软件工程师课程笔记(二十五) - 使用PID控制四轴飞行器 - 四轴飞行器(四旋翼)模拟器
1.四轴飞行器运动学和动力学模型在讨论四轴飞行器时,明确定义两个参考坐标系会很有帮助:一个固定的世界坐标系W{W}W和一个牢固地附着到四轴飞行器的质心(CoM)的运动坐标系B{B}B。假设运动坐标系B{B}B{B}B的x轴指向电动机编号1,y轴指向电动机编号2,并且当四轴飞行器电机静止在水平表面上时,z轴指向“上”。FiF_iFi = 电动机iii的推力(N) 、 MiM_iMi = ...原创 2019-12-27 07:12:56 · 2001 阅读 · 0 评论 -
Udacity机器人软件工程师课程笔记(二十四) - 控制(其二) - PID优化,梯度下降算法,带噪声的PID控制
7.非理想情况(1)积分饱和到目前为止,我们一直使用的“理想”形式的PID控制器很少用于工业中。“时间常数”形式更为常见。当前说明了理想形式的一些重大缺陷。在一个经过良好调整的系统中,积分项能够通过使控制作用力与累积误差成比例来消除稳态误差。然而,这种操作模式会带来危险。设想,如果设定值突然大幅度改变但系统动力学相应缓慢。例如,如果当前房间的温度为50°F(10°C),然后将恒温器上的设定...原创 2019-12-21 10:05:11 · 3090 阅读 · 2 评论 -
Udacity机器人软件工程师课程笔记(二十三) - 控制(其一)- PID控制及其python实现
控制(Controls)1.PID控制简介在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。PID控制器问世至今已有近70年历史,它 以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,控制理论的 其它技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确...原创 2019-12-21 09:05:04 · 1155 阅读 · 0 评论 -
Udacity机器人软件工程师课程笔记(二十二) - 物体识别 - 色彩直方图,支持向量机SVM
物体识别1.HSV色彩空间如果要进行颜色检测,HSV颜色空间是当前最常用的。HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)。这个模型中颜色的参数分别是:色调(H),饱和度(S),亮度(V)。HSV模型的三维表示从RGB立方体演化而来。设想从RGB沿立方体对角线...原创 2019-12-18 01:49:58 · 892 阅读 · 0 评论 -
Udacity机器人软件工程师课程笔记(二十一) - 对点云进行集群可视化 - 聚类的分割 - K-means|K均值聚类, DBSCAN算法
聚类的分割1.K-均值聚类(1)K-均值聚类介绍k均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法,其步骤是随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。每分配一个样本,聚类的聚类中心会根据聚类中现有的对象被重新计算。这个...原创 2019-12-16 09:04:08 · 1172 阅读 · 0 评论 -
Udacity机器人软件工程师课程笔记(二十) - 感知 - 校准,过滤, 分段, RANSAC
首先,我们将讨论传感器校准,也就是说,从几何形状,失真和噪声方面校准相机如何看待周围的世界。了解相机的校准对于了解测量数据如何代表实际物理环境至关重要。然后我们将讨论过滤数据。对于3D点云,大多数数据实际上对应于不需要的背景对象或其他必须过滤掉的对象,然后才能执行对象检测或识别。最后,我们将介绍分段,这是将经过过滤的点云数据分解为有意义的片段的过程,每个片段都对应...原创 2019-12-13 02:19:08 · 653 阅读 · 0 评论 -
Udacity机器人软件工程师课程笔记(十九) - 3D感知介绍 - 主动/被动式传感器、RGB-D相机、点云
3D感知介绍目录传感器1.传感器主动式传感器是指向目标发射电磁波,然后收集从目标反射回来的电磁波信息的传感器,如合成孔径雷达等。被动式传感器指只能收集地而目标反时来自太阳光的能量或目标自身辐射的电进波能量的传感器,如摄影相机和多光谐扫描仪等。探测器指接收地物电磁辐射的物理元件,是传感器中最重要的部分,其功能是实现能量转换,测量和记录接收到的电磁锅射能。常用的探测元件有感光股片、光电敏...原创 2019-12-04 06:41:46 · 2513 阅读 · 0 评论 -
Udacity机器人软件工程师课程笔记(十八)-机械臂仿真控制实例(其三)-KR210机械臂反向运动学
机械臂仿真控制实例(其二)-KR210正向运动学目录反向运动学概述为Kuka KR210创建IK解算器1.反向运动学概述KR210的最后三个关节是满足三个相邻的关节轴线在单点处相交的旋转关节。这种设计称为球形腕,而相交的公共点称为腕中心。这种设计的优点在于,它在运动学上解耦了末端执行器的位置和方向。joint_5joint\_5joint_5是球形手腕的公共交点,因此是手腕的中心。...原创 2019-11-23 08:51:50 · 1682 阅读 · 0 评论 -
Udacity机器人软件工程师课程笔记(十七)-机械臂仿真控制实例(其二)-KR210机械臂正向运动学
机械臂仿真控制实例目录原创 2019-11-10 22:56:04 · 1891 阅读 · 2 评论 -
Udacity机器人软件工程师课程笔记(十四)-运动学-正向运动学和反向运动学(其一)
正向运动学和反向运动学1.2D中的旋转矩阵在正向运动学之前,我们需要知道如何在不同的坐标系中表示向量。这时候就需要用到旋转矩阵的定义了。旋转矩阵有两个概念上但数学上等价的解释。它们可以被看作是用其他坐标系表示一个坐标系中的向量的一种方法。这种解释被称为坐标系之间的“映射”。或者,旋转矩阵可以看作是一个“算子”,它实际上在一个坐标系中移动一个向量。注意这种概念上的区别是很重要的,因为特定的应...原创 2019-09-20 00:38:58 · 797 阅读 · 0 评论 -
Udacity机器人软件工程师课程笔记(十三)-运动学-机械手介绍及分类
运动学在研究控制机械臂之前,有必要学习一些运动学知识,比如学习反向运动学内容,解决命令任意串行操纵器沿预先计划的轨迹朝向目标的问题等等。下面是一个大纲,介绍了“运动学”这个主题下的一些主要的内容。自由度(DoF)参考框架广义坐标联合类型主要类型的串行机械手串行机械手应用1. 自由度“自由度”(DoF)是指定义空间机制的位置或配置所需的最小变量数。实例:两个自由度的机械手...原创 2019-09-10 18:15:23 · 2447 阅读 · 0 评论 -
Udacity机器人软件工程师课程笔记(十二)-ROS-编写更复杂的ROS节点(arm_mover节点 和 look_away 节点)
更复杂的ROS节点1. Arm_mover节点为了打好更好的基础,这是还需要学习的内容自定义消息生成服务参数启动文件为了理解上述内容,我们将编写另一个名为arm_mover的节点。(1)Arm Mover的描述在很多方面,arm_mover都非常相似simple_mover。就像simple_mover,它负责指挥手臂移动。然而,代替简单地命令臂遵循预定轨迹,arm_move...原创 2019-09-09 23:33:00 · 660 阅读 · 0 评论 -
Udacity机器人软件工程师课程笔记(十一)-ROS-编写ROS节点
编写ROS节点1.ROS节点概述simple_mover 只发布关节角度命令 simple_arm 。在了解用Python编写的ROS节点的一般结构之后,现在要编写另一个名为 arm_mover 的节点。arm_mover 提供一种叫做 safe_move 的服务,它允许机械臂移动到其工作区内被认为是“安全”的任何位置。安全区域由最小和最大关节角度限制,可通过ROS参数服务器进行配置。最...原创 2019-09-08 16:48:09 · 1022 阅读 · 0 评论 -
Udacity机器人软件工程师课程笔记(十)-ROS-Catkin-包(package)和gazebo
包和gazebo仿真1.添加包(1)克隆simple_arm包克隆现有的包并将其添加到我们新创建的工作区。首先导航到src目录,然后从其github仓库克隆本课程 simple_arm 的包。$ cd ~/catkin_ws/src$ git clone https://github.com/udacity/simple_arm_01.git simple_arm(2) 构建si...原创 2019-09-08 00:52:52 · 892 阅读 · 0 评论 -
Udacity机器人软件工程师课程笔记(九)-ROS-Catkin包、工作空间和目录结构
Catkin包和工作空间1.Carkin包简介Catkin是ROS的官方构建系统,也是原始ROS构建系统rosbuild的继承者。catkin结合了CMake宏和Python脚本,在CMake的正常工作流程之上提供了一些功能。 被设计为比更传统的rosbuild,允许更好的分发包、更好的交叉编译的支持,以及更好的便携性。catkin的工作流程与CMake的工作流程非常相似,但增加了对自动“查找...原创 2019-09-07 12:10:01 · 958 阅读 · 0 评论 -
Udacity机器人软件工程师课程笔记(八)-ROS Turtlesim 包的相关命令
Turtlesim 包的相关命令这个部分包含五个子主题,分别是列出所有活动节点列出所有主题获取有关主题的信息显示消息信息实时回应消息1.列出所有的活动节点为了获取所用的活动且向ROS Master注册的节点,我们使用命令rosnode list运行如下我们可以看到有三个活动且注册的节点显示在ROS界面上,分别是/rosout, /teleop_turtle, 和/tu...原创 2019-09-05 21:09:46 · 319 阅读 · 1 评论 -
Udacity机器人软件工程师课程笔记(七)-ROS介绍和Turtlesim包的使用
Robotics Software engineer笔记ROS是一款机器人软件框架。软件框架,通常指为了实现某个业界标准,或完成特定基本任务的软件组建规范。ROS的前身是斯坦福人工智能实验室为了支持斯坦福智能机器人STAIR而建立的交换庭(switchyard)项目。在这里我使用的是Udacity提供的Vmware磁盘映像,使用VMware player15免费版作为虚拟机的运行ROS。1....原创 2019-09-05 21:08:58 · 862 阅读 · 0 评论 -
Udacity机器人软件工程师课程笔记(六)-样本搜索和找回-基于漫游者号模拟器-优化和样本找回
10.优化和样本找回(1)优化概述在之前的一篇笔记中,我们已经实现了基本的漫游者号的自主驾驶功能。但是因为我们的感知子函数和决策子函数都过于简单,使漫游者号不能很好的自动驾驶和样本找回。这篇笔记的主要内容就是涉及如何对我们的自主驾驶模型进行优化,如何使漫游者号遍历整个地图,并将岩石样本进行找回并使漫游者号返回起始位置。所以我们要对两个子函数进行优化:perception.py 和decisi...原创 2019-09-05 21:07:32 · 199 阅读 · 0 评论 -
Udacity机器人软件工程师课程笔记(五)-样本搜索和找回-基于漫游者号模拟器-自主驾驶
9.自主驾驶在接下来的环节中,我们要实现漫游者号的自动驾驶功能。完成这个功能我们需要四个程序,第一个为感知程序,其对摄像头输入的图片进行变换处理和坐标变换使用。第二个程序为决策程序,功能是帮助漫游者号根据当前条件和状态进行相应的决策,以实现漫游者号前进,后退,转向等功能。第三个是支持程序,来定义一些关于漫游者号状态的类等。最后为主程序,来调用三个函数对漫游者号进行控制的。Udacity提供的...原创 2019-09-04 23:05:36 · 246 阅读 · 0 评论 -
Udacity机器人软件工程师课程笔记(四)-样本搜索和找回-基于漫游者号模拟器-决策树
7.做出决策我们已经建立了感知步骤Perception.py,接下来要构建决策函数decision.py 。我们利用一个基础的人工智能模型——决策树模型。其结构如下:由于我们采用一个非常简单的模型,所以我们只需要编码一系列可能的场景与每种场景相关的决策。我们在这个项目中会接收很多信息,比如漫游者号当前状态的信息,比如当前位置,速度、方向、转向角等等。我们只需要给出相应的条件,然后给出如何...原创 2019-09-03 00:16:15 · 198 阅读 · 0 评论 -
Udacity机器人软件工程师课程笔记(三)-样本搜索和找回-基于漫游者号模拟器-使用moviepy输出测试视频
5.方法测试在这个部分我们要整体的测试我们的程序,对前面的知识和内容有一个整体的应用和概括。(1)方法测试程序概述在这个部分我们需要完成的项目如下首先运行笔记本中的每个单元格,检查代码和每个单元格的结果。在“训练模式”中运行模拟器并记录一些数据。注意:只需要使用一些示例图像,几百张即可。将数据目录路径(下面的2个单元格)更改为保存数据的目录测试数据上提供的功能编写新功能(或修改现...原创 2019-09-02 22:45:58 · 222 阅读 · 0 评论 -
Udacity机器人软件工程师课程笔记(二)-样本搜索和找回-基于漫游者号模拟器
Robotics Software engineer编程笔记(二)5.确定漫游者号的行进方向(1)漫游者号如何确定自己的行进方向?我们已经有了一个由前置摄像头得到的图像,然后可以通过对图像进行处理,来确定漫游者号应该转动的方向。通过将漫游者坐标转换成极坐标,我们就能确定小车应该前进的方向,其中每个像素位置由距离原点的距离和从正x方向逆时针的角度表示。如图所示, 漫游者号能行驶的范围只有...原创 2019-08-30 10:21:37 · 228 阅读 · 0 评论 -
Udacity机器人软件工程师课程笔记(一)-样本搜索和找回-基于漫游者号模拟器
Robotics Software engineer编程笔记(一)使用Udacity提供的漫游者号模拟器创建环境地图,寻找样本。该项目是根据美国国家航空航天局(NASA)的样本返回挑战进行建模的。我使用的windows平台下的模拟器,也是基于windows平台下的模拟器进行学习。所使用的环境是python3.6, IDE为pycharm 2019。下面提供其他两种平台的模拟器的下载链接。...原创 2019-08-29 23:16:50 · 584 阅读 · 0 评论 -
Udacity机器人软件工程师课程笔记(十五)-运动学-正向运动学和反向运动学(其二)-DH参数等
正向运动学和反向运动学目录2D中的旋转矩阵sympy包旋转的合成旋转矩阵中的欧拉角平移齐次变换及其逆变换齐次变换的合成Denavit-Hartenberg 参数DH参数分配算法正向运动学反向运动学反向运动学举例原创 2019-09-24 00:15:48 · 2245 阅读 · 0 评论 -
Udacity机器人软件工程师课程笔记(十六)-机械臂仿真控制实例(其一)-Gazebo、RViz和Moveit!
机械臂仿真控制实例目录环境设置项目工具介绍Gazebo(1)Gazebo组件(2)Gazebo界面统一机器人描述格式(URDF)RVizMoveit!1.环境设置对于此项目,使用的是 robo-nd 虚拟机映像,或者在本地安装了 Ubuntu + ROS 。关于安装虚拟机映像问题,可以参考之前的文章。对于此设置的其余部分,活动的ROS工作区的名称设置为catkin_w...原创 2019-09-24 17:42:45 · 3778 阅读 · 5 评论