【机器人学】-位姿描述和旋转变换(2)

【机器人学】-位姿描述和齐次变换 位姿描述和齐次变换 物体之间的关系是用齐次坐标变换来描述的。机器人学中采用齐次坐标变换来描述机械手各关节坐标之间、各物体之间以及各物体与机械手之间的关系。 首先介绍刚体位姿描述方法,然后引出齐次坐标和齐次变换这些变换基本上是由平移和旋转组成,因此可以用坐标系来描述各种物体和机械手的空间位置和姿态。最后介绍变换方程、欧拉角以及旋转变换通式等内容。 位姿描述和齐次变换一、刚体位姿描述1-1 点的位置描述1-2 方位(姿态)描述1-3 刚体的位置与姿态描述1-4 末端执行器坐标系二、坐标变换2-1 坐标平移2- 阅读详情

机器人学基础-旋转变换

空间旋转矩阵中有九个元素,但是这九个元素满足六个约束方程,只有三个独立变量

ABX = [ AXB AYB AYB ] = [R11R12R13R21R22R23R31R32R33]\begin{bmatrix}R11 & R12 & R13 \\ R21 & R22&R23\\R31&R32&R33\\ \end{bmatrix}⎣⎡​R11R21R31​R12R22R32​R13R23R33​⎦⎤​;

其中每个元素满足:

AXB ⋅\cdot⋅ AXB = AYB ⋅\cdot⋅ AYB = AZB ⋅\cdot⋅ AZB = 1;

AXB ⋅\cdot⋅ AYB = AYB ⋅\cdot⋅ AZB = AZB ⋅\cdot⋅ AXB = 0;

一、绕固定轴x-y-z旋转(RPY角)

1-1运动过程

RPY角对应的旋转矩阵,这种描述方法与操作轴末端执行器坐标系的规定方法类似,如下图;
在这里插入图片描述
坐标系的运动方式:{B}的开始方位与坐标系{A}重合,首先使得{B}绕XA旋转γ\gammaγ 角,在绕YA 转β\betaβ 角,最后绕 ZA转α\alphaα 角。(白->黄->红->蓝)

1-2旋转矩阵计算

根据坐标系的变换关系,坐标系{B}相对于{A}的旋转矩阵为:注意这里需要右乘,相对于基坐标系而言

ABRxyz(γ\gammaγ ,β\betaβ, α\alphaα ) = R(ZA,α\alphaα) ⋅\cdot⋅ R(YA,β\betaβ) ⋅\cdot⋅ R(XA,γ\gammaγ)

= [cα−sα0sαcα0001]\begin{bmatrix} c \alpha & -s\alpha& 0 \\ s\alpha & c\alpha&0\\0&0&1\\ \end{bmatrix}⎣⎡​cαsα0​−sαcα0​001​⎦⎤​[cβ0sβ010−sβ0cβ]\begin{bmatrix} c \beta& 0& s\beta \\0& 1&0\\-s\beta&0&c\beta\\ \end{bmatrix}⎣⎡​cβ0−sβ​010​sβ0cβ​⎦⎤​[1000cγ−sγ0sγcγ]\begin{bmatrix} 1 & 0& 0 \\ 0 & c\gamma&-s\gamma\\0&s\gamma&c\gamma\\ \end{bmatrix}⎣⎡​100​0cγsγ​0−sγcγ​⎦⎤​

=[cα⋅cβcα⋅sβ⋅sγ−sα⋅cγcα⋅sβ⋅cγ+sα⋅sγsα⋅cβsα⋅sβ⋅sγ+cα⋅cγsα⋅sβ⋅cγ−cα⋅sγ−sβcβ⋅sγcβ⋅cγ]\begin{bmatrix} c\alpha\cdot c\beta & c\alpha\cdot s\beta \cdot s \gamma - s\alpha\cdot c\gamma&c\alpha\cdot s\beta \cdot c \gamma+s\alpha\cdot s\gamma \\s\alpha\cdot c\beta & s\alpha\cdot s\beta \cdot s \gamma + c\alpha\cdot c\gamma&s\alpha\cdot s\beta \cdot c \gamma-c\alpha\cdot s\gamma \\-s\beta & c\beta \cdot s \gamma &c\beta \cdot c \gamma \\ \end{bmatrix}⎣⎡​cα⋅cβsα⋅cβ−sβ​cα⋅sβ⋅sγ−sα⋅cγsα⋅sβ⋅sγ+cα⋅cγcβ⋅sγ​cα⋅sβ⋅cγ+sα⋅sγsα⋅sβ⋅cγ−cα⋅sγcβ⋅cγ​⎦⎤​

1-3RPY角计算

已知旋转矩阵ABR,令该矩阵和矩阵ABRxyz对应元素相等可得

[R11R12R13R21R22R23R31R32R33]\begin{bmatrix}R11 & R12 & R13 \\ R21 & R22&R23\\R31&R32&R33\\ \end{bmatrix}⎣⎡​R11R21R31​R12R22R32​R13R23R33​⎦⎤​ = [cα⋅cβcα⋅sβ⋅sγ−sα⋅cγcα⋅sβ⋅cγ+sα⋅sγsα⋅cβsα⋅sβ⋅sγ+cα⋅cγsα⋅sβ⋅cγ−cα⋅sγ−sβcβ⋅sγcβ⋅cγ]\begin{bmatrix} c\alpha\cdot c\beta & c\alpha\cdot s\beta \cdot s \gamma - s\alpha\cdot c\gamma&c\alpha\cdot s\beta \cdot c \gamma+s\alpha\cdot s\gamma \\s\alpha\cdot c\beta & s\alpha\cdot s\beta \cdot s \gamma + c\alpha\cdot c\gamma&s\alpha\cdot s\beta \cdot c \gamma-c\alpha\cdot s\gamma \\-s\beta & c\beta \cdot s \gamma &c\beta \cdot c \gamma \\ \end{bmatrix}⎣⎡​cα⋅cβsα⋅cβ−sβ​cα⋅sβ⋅sγ−sα⋅cγsα⋅sβ⋅sγ+cα⋅cγcβ⋅sγ​cα⋅sβ⋅cγ+sα⋅sγsα⋅sβ⋅cγ−cα⋅sγcβ⋅cγ​⎦⎤​

通过比较可得cosβ\betaβ = ±R112+R212\pm\sqrt {R11^2+R21^2}±R112+R212​ ,通常我们规定β∈[−90,+90]\beta\in[-90,+90]β∈[−90,+90],所以我们可以得到cosβ\betaβ = +R112+R212+\sqrt {R11^2+R21^2}+R112+R212​。

如果cosβ≠0\beta\neq0β​=0,则可以得到:
β=Atan⁡2(−R31,R112+R212)\qquad\qquad\qquad\qquad\qquad\beta = A\tan2(-R31,\sqrt{R11^2+R21^2})β=Atan2(−R31,R112+R212​)
α=Atan⁡2(R21,R11)\qquad\qquad\qquad\qquad\qquad\alpha = A\tan2(R21,R11)α=Atan2(R21,R11)
γ=Atan⁡2(R32,R33)\qquad\qquad\qquad\qquad\qquad\gamma = A\tan2(R32,R33)γ=Atan2(R32,R33)
其中Atan⁡2(y,x)A\tan2(y,x)Atan2(y,x)成为四象限反正切函数

如果cosβ=±90\beta = \pm90β=±90,则只能得到α和γ\alpha和\gammaα和γ的和或差,通常选择α=0\alpha = 0α=0。

如果cosβ=+90\beta = +90β=+90,则可以得到:
β=90\qquad\qquad\qquad\qquad\qquad\beta = 90β=90
α=0\qquad\qquad\qquad\qquad\qquad\alpha = 0α=0
γ=Atan⁡2(R12,R22)\qquad\qquad\qquad\qquad\qquad\gamma = A\tan2(R12,R22)γ=Atan2(R12,R22)

如果cosβ=−90\beta = -90β=−90,则可以得到:
β=−90\qquad\qquad\qquad\qquad\qquad\beta = -90β=−90
α=0\qquad\qquad\qquad\qquad\qquad\alpha = 0α=0
γ=−Atan⁡2(R12,R22)\qquad\qquad\qquad\qquad\qquad\gamma = -A\tan2(R12,R22)γ=−Atan2(R12,R22)

二、绕相对于运动坐标系(ZYX欧拉角)在这里插入图片描述

三、绕相对于运动坐标系(ZYZ欧拉角)在这里插入图片描述在这里插入图片描述在这里插入图片描述

四、旋转变换通式

在这里插入图片描述

4-1坐标变换(正解)

在这里插入图片描述

{A’}是与K轴正交的坐标系,{B’}相对于{A’}相当于是绕z轴旋转

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

4-2 等效转轴和等效转角(逆解)

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

11.Moveit 末端坐标系姿态表示形式——四元数 一、RPY角 RPY角又称为XYZ固定角,即相对于固定坐标系进行旋转,通过基本旋转矩阵左乘实现。 R——Roll横滚——x轴 P——Pitch俯仰——y轴 Y——Yaw偏航——z轴 阅读详情

相关推荐

坐标变换:欧拉角与RPY角——机器人学(一)

坐标变换:欧拉角与RPY角。学习机器人,记录下学习内容

qq_52666270的博客 6507

RPY角的具体描述

因为以z轴为前进方向: (1)、在固定坐标系和当前坐标系下,RPY角的描述,确定RPY角对应zyx的偏航、俯仰和偏航; (2)、描述固定坐标系下的左乘和当前坐标系下的右乘。

m0_55919967的博客 4567

机器人学导论 一、空间变换(1)位姿,变换

机器人学导论 一、空间变换(1)位姿前言坐标系位姿位置姿态 前言 由于视觉伺服与机械臂关系紧密,因此还是从基础开始,把机器人运动学记录一下。 本篇记录刚体的位姿。实际上,空间变换在SLAM专栏里已经讲过一次了,不过机器人学导论给出了更详细的刚体运动说明。 坐标系 通常有两个坐标系,一个是用于参考的世界坐标系(笛卡尔坐标系),一个是以刚体质心为原点的刚体坐标系。 机器人坐标系遵循右手定则,如下图所示 位姿 位姿就是位置与姿态,对应位移与旋转。机器人的位姿必须以世界坐标系作为参照。 位置 上图中有一个点PP

qq_41035283的博客 7659

【机器人运动学/姿态角】欧拉角和RPY角

RPY角 绕参考坐标系,绕定轴X(Roll)—Y(Pitch)—Z(Yaw)旋转,旋转矩阵左乘。 顺序:绕X转γ,绕Y转β,绕Z转α 公式:R(γ,β,α) = Rot(z,α)Rot(y,β)Rot(x,γ) 欧拉角 绕自身坐标系,绕动轴Z—Y—X旋转,旋转矩阵右乘。 顺序:绕Z转α,绕Y转β,绕X转γ 公式:R(α,β,γ) = Rot(z,α)Rot(y,β)Rot(x,γ) 求α,β,γ角 ...

Amanda1m的博客 2万+

机器人学|基础知识总结

不同于广义角速度矢量,

TB___的博客 1032

三维空间刚体运动3:欧拉角表示旋转(全面理解万向锁、RPY角和欧拉角)

本篇继续参照高翔老师《视觉SLAM十四讲从理论到实践》,讲解三维空间刚体运动。博文将原第三讲分为四部分来讲解:1、旋转矩阵和变换矩阵;2、旋转向量表示旋转;3、欧拉角表示旋转;4、四元数表示变换。本文相对于原文会适当精简,同时为便于理解,会加入一些注解和补充知识点,本篇为第三部分:欧拉角表示旋转,另外三部分请参照博主的其他博文。

shao918516的博客 2万+

机器人学:(2)位姿描述和坐标变换

机器人的位置(Position)和姿态(Pose)常常统称为位姿。位姿描述是表达机器人的线速度、角速度、力和力矩的基础,而坐标变换是研究不同坐标系中的机器人位姿关系的重要途径。

weixin_43724057的博客 1万+

机器人位姿描述与坐标变换

机器人的位姿描述与坐标变换是进行工业机器人运动学和动力学分析的基础。本节简要介绍上述内容,明确位姿描述和坐标变换的关系,用到的基本数学知识就是——矩阵。 1.位姿表示 位姿代表位置和姿态。任何一个刚体在空间坐标系(OXYZ)中可以用位置和姿态来精确、唯一表示其位置状态。 位置:x、y、z坐标 姿态:刚体与OX轴的夹角rx、与OY轴的夹角ry、与OZ轴的夹角rz 假设基坐标系为OXYZ,刚体...

冯Jungle的个人博客 2万+

【玩转机械臂】(一)机器人学的数学基础:坐标变换与位姿描述

本文系统介绍了机器人学中的坐标变换与位姿描述方法。主要内容包括:1)旋转变换(基本旋转、通用旋转及其矩阵表示),2)平移变换,3)齐次变换(组合旋转与平移),4)位姿描述方法(旋转矩阵、欧拉角、RPY角等姿态描述,以及柱坐标、球坐标等位置描述)。文章通过数学推导阐述了不同坐标系间的转换关系,为理解机器人运动学和控制奠定了理论基础。

ych0872的博客 2612

Kettle 连接 Oracle 数据库全流程指南

例如:C:\Oracle\product\19.0.0\dbhome_1\jdbc\lib\ojdbc8.jar 2. 替换 Kettle 驱动文件 将驱动文件复制到 Kettle 的 目录: 删除旧版本驱动:如 ojdbc14.jar 只能保留一个oracle驱动 重启 Kettle 以加载新驱动 二、配置数据库连接 1. 启动 Kettle 并新建转换 运行 (Windows)或 (Linux)。 新建转换(Transformation),添加 “表输入” 步骤,双击进入配置。 2.

qq_44724453的博客 3481

从零到一:手把手部署用友T3标准版11.2及SQL Server 2008R2环境

本文详细介绍了从零开始部署用友T3标准版11.2及SQL Server 2008R2环境的完整流程,包括环境准备、SQL Server安装、环境检测与修复、T3标准版安装实战以及初始化配置与测试。通过手把手的步骤指导和常见问题解决方案,帮助用户顺利完成部署,确保系统稳定运行。

weixin_28339967的博客 455

机械臂机器人——(2)位姿描述与坐标变换

文章目录1.刚体的位置与位姿正交坐标系正交坐标系的性质正交坐标变换矩阵的几何意义2.坐标系平移与旋转变换(1)坐标系平移(2)坐标系旋转变换矩阵(3)复合变换3.机器人的齐次坐标(1)齐次坐标基本概念和性质(2)利用齐次变换矩阵表示平移变换(3)利用齐次变换矩阵表示旋转变换(4)利用齐次变换矩阵表示旋转+平移变换(4)利用齐次变换矩阵表示手的转动和移动4.机器人的齐次变换(1)齐次变换的性质性质一:性质二:建立变换方程 学习总校的机器人基础原理MOOC,学习记录。 1.刚体的位置与位姿 正交坐标系

Irving.Gao的博客 2万+

STM8开发环境搭建(STVD + COSMIC)

一、STM8开发IDE 1. STVD + COSMIC ST Visual Develop (STVD)只支持汇编开发,C语言开发需要再安装COSMIC,配套起来使用。 2. IAR IAR也可以用来开发STM8 下面介绍STVD + COSMIC的搭建方式 二、环境搭建 1. STVD下载、安装 直接从官网下载:https://www.st.com/en/development-tools/stvd-stm8.html 安装很简单,基本下一步往下点。 2. COSMIC下载、安装 对于stm8可以使用3

a183635870的博客 1万+

机器人学:从位姿描述到齐次变换的实践指南

本文深入探讨机器人学中的位姿描述与齐次变换技术,通过机械臂运动控制、坐标变换等实战案例,详细解析三维空间位置描述、姿态矩阵应用及复合变换原理。特别介绍齐次变换矩阵在视觉引导抓取系统中的工程实践,帮助读者掌握机器人空间关系处理的核心技术。

weixin_33139275的博客 196

基于航位推算与多传感器融合的高精度避障小车设计

航位推算(Dead Reckoning)是一种在无外部定位信号下通过里程计与惯性测量单元(IMU)持续积分估计位姿的基础导航方法,其核心在于运动学建模、误差累积抑制与多源数据融合。该技术具备低依赖、高实时、强确定性等工程优势,广泛应用于服务机器人、AGV、竞赛无人平台等受限环境下的自主导航系统。结合编码器高分辨率测距与九轴IMU姿态解算,可显著抑制纯里程计漂移,提升短时定位精度至厘米级。本文以全国大学生电子设计竞赛K题为背景,深入实现了一种面向确定性场地的离线建图+航位推算双模协同架构,重点解决嵌入式资源约

weixin_36328210的博客 81

对雷达中相位补偿概念的一些理解

基于多普勒相位补偿的速度扩展方法和DBF测角,两者本质上都是对相位进行补偿。

qq_42235129的博客 4030

机器人学导论(二).Ⅰ——空间描述与简单变换

机器人导论2.1.Ⅰ 位姿的描述与变换 机器人学中通过建立关节坐标系描述空间位姿,位姿包含位置(平移自由度)和姿态(旋转自由度)。采用矩阵表示位姿变换,其中旋转矩阵记录基向量变换关系,齐次变换矩阵统一描述平移和旋转。坐标变换与坐标系变换本质相同,但分别用算子和矩阵表示。

2301_80226956的博客 815

SGP4/SDP4详解

**SGP4** (Simplified General Perturbations Version 4) 和 **SDP4** (Simplified Deep-space Perturbations Version 4) 是一组**解析轨道预报模型**,用于预测地球轨道卫星的位置和速度。它们是北美防空司令部(NORAD)维护的**TLE**数据格式的标准配套算法。 简单来说:**TLE是卫星轨道的"身份证",而SGP4/SDP4是解读这张身份证的"说明书"**。

ScilogyHunter的博客 589

机器人学基础(一):空间描述与坐标变换

位置和姿态的描述 1.位置描述 对于直角坐标系{A},空间任一点p的位置可以用3x1的列矢量Ap来表示。 2.方位描述 3.位姿描述 实际上同时描述位置和姿态,上面讲了用位置矢量和旋转矩阵来描述,这样,刚体B的位姿可以用坐标系{B}来描述: 坐标变换 1.平移坐标变换 2.旋转坐标变换 [ ] [ ] [ ] b 坐标原点相同,但两者方位不同 最一般的情形:两坐标系原点既不重合,也不相同。(复合变换) 齐次坐标变换 *首先了解什么是齐次变换?为什么要了解齐次变换?*https://bl

Haiyang19980818的博客 1万+

Navicat从入门到精通:数据库管理全攻略

本文系统梳理Navicat数据库管理工具的核心应用体系。从基础的安装与多类型数据库连接入手,详解数据库与数据表的创建、修改、删除等操作逻辑;深入数据增删改查的可视化与 SQL 语句双重操作模式,结合Excel/SQL文件的导入导出场景提供实操指南。同时覆盖数据备份恢复、跨库同步等进阶功能,以及视图、存储过程等高级应用。通过对比同类工具突出Navicat的易用性与功能性优势,并针对连接失败、字符乱码等常见问题提供解决方案,帮助读者从零基础掌握数据库全生命周期管理,提升数据操作效率与安全性。

邓邓子的博客 1897

stm32项目实战(1)光敏电阻的介绍和使用

文章目录前言一、光敏电阻介绍二、cubeMX配置三、代码说明总结 前言 本篇文章我们讲带大家了解光敏电阻的使用 一、光敏电阻介绍 下面是4线光敏电阻实物图 产品接线说明: 1、VCC 接电源正极 3.3-5V 2、GND 接电源负极 3、DO TTL 开关信号输出 (配置为输出模式) 4、AO 模拟信号输出(ADC采样通道) 光敏电阻主要用于检测周围的光照强度,光照强度发生变化那么ADC采样的值也会发送变化。 二、cubeMX配置 简单的配置我们就不多说了主要是ADC采样的配置 这里我采用的是ADC1通道

m0_49476241的博客 1万+

【机器人运动学】位姿与坐标变换

表示了坐标系{2}的x轴相对于坐标{1}的x,y,z轴是什么样的一个方位,即表示与坐标系{2}的x轴重合同向的单位向量在坐标{1}上表述的向量,其中的三个元素是这个单位向量在坐标{1}的x,y,z轴上的投影。其中,这三个向量的第1,2,3行,分别表示与坐标系{2}对应轴线重合且同向的单位向量在坐标系{1}的x,y,z轴上的投影。

m0_61009360的博客 2085

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

《机器人学 》读书笔记

《机器人学》第三版

weixin_45650561的博客 1537

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

《动手学机器人学》笔记

原课程来源于b站劉海濤LHT,链接:【《动手学机器人学》开课了】 https://www.bilibili.com/video/BV1CY4y1W7Ry/?1.1正运动学(forward kinematics,简写FK),根据机器人的关节角度,计算末端位姿1.2逆运动学(inverse kinematics,简写IK),根据末端位姿,反解关节角1.31.4除了空间某点位置还需要确定空间物体方位,用旋转矩阵表示。

weixin_44356316的博客 1070

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

机器人学导论-空间描述和变换(1)

在刚体(Rigid body)上建立坐标系(Body frame),通常坐标系原点建立在刚体质心上。

刺客 464

机器人学,机器视觉与控制学习笔记——第二章、位置与姿态描述

在这一章中主要任务是学习如何在二维和三维世界中描述点和位姿。对于一个点来说我们描述他时只用位置就够了,但是对于描述一个物体来说,我们不仅需要说明位置还需要说明姿态,我们将位置和姿态统称为位姿。 首先应该明确的是 1.一个点用坐标向量来表示,它代表该点在参考坐标系中的位移; 2.刚体用一个单独的坐标系表示,刚体上的点可以用在该坐标系中的向量表示。 3.一个刚体在坐标系中的位置和方向统称为位姿...

YukinoAI的博客 9440
上一篇: 【机器人学】-位姿描述和齐次变换
下一篇: 【ESP32 Arduino平衡小车制作】(一)霍尔编码器解码
Mount.W
博客等级 码龄7年 477粉丝 35原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值