手把手教你搭建服务器+部署静态网页 引言 最近想搭建服务器玩玩,后面结合物联网进行有趣的diy。这一节先简介如何搭建自己的网页服务器。 需要的工作 购买服务器,因为考虑到建站需要备案,因此这里使用的是免备案的亿速云[官方没给我打钱]https://www.yisu.com/coupon/?partner=az2cj 部署web服务 搭建静态网页 服务器部分 web服务部分,
acados-mpc建模(二) 引言 在前一节中,我们介绍了如果使用casadi进行车辆运动学建模,同时对acados进行简单介绍,在这一节中,我们将以mpc应用为例,介绍如果使用acados建模优化问题,并进行求解。 mpc优化建模 其中代码以注释的形式进行讲解 初始化 ocp = AcadosOcp()# 创建最优化问题 ocp.code_export_directory
acaods-mpc建模(一) 引言 这一节将使用acados进行运动学建模和优化求解,在运动学建模的过程中,使用casadi进行符号表示辅助建模。 运动学建模 在前面的博客中,我们介绍了车辆运动学模型,在这一部分,我们将使用casadi对车辆运动学模型进行建模。 casadi简介 https://web.casadi.org/ 以上是casadi的官网,从上面可以看到casadi是
笛卡尔坐标系转frenet坐标系 引言 在自动驾驶领域,笛卡尔坐标系和frenet坐标系是两种非常常用的坐标系,他们两种方式应用在自动驾驶领域各有千秋,互为补充。今天我们就来浅析一下这两种坐标系。 笛卡尔坐标系 笛卡尔坐标系,是一个我们从小学开始就有学到的坐标系,法国数学家、哲学家勒内·笛卡尔于1637年在《几何》(_La Géométrie_)中发表了关于笛卡尔坐标系的研究[1]。 笛
车辆运动学建模(二) 引言 上一节我们介绍了以车身速度来约束姿态变化的运动学建模方式,这一节我们来看一下使用轮向速度约束姿态变化的运动学建模方法,同时给出状态空间方程的表示形式。 车辆几何模型-约束-轮向速度约束 在上一节我们介绍了使用车身速度约束得到的角速度相关的角速度状态方程,在这一节我们来看下基于车辆前轮速度约束的得到的状态方程。 在这种建模方式中,我们假设车辆整体沿着世界坐标系x
车辆运动学建模(一) 引言 车辆运动学模型对于学习自动驾驶知识,应用自动驾驶算法来说是必不可少的基础知识。网上对于这部分知识的讲解文章也有很多,但是有些细节没有过多描述,这对于新人来说可能不是那么友好。这个系列的文章将以简单的自行车模型为例,讲解车辆运动学模型的理论知识,最后将会编程进行验证。 位置建立在车辆后轴中心的运动学模型 概述 运动学模型建模的方法大致有自行车模型,阿克曼转向模型
引言 今天开始记录ros2的学习过程,首先从最基本的使用python搭建ros系统开始。 创建功能包 1、使用ros系统进行开发,首先要定义功能包,功能包,顾名思义,就是一个功能模块的集合地,与此功能相关的所有文件都会放到这个功能包中,当我们使用python系统新建功能包的时候,可以运行如下指令 ros2 pkg create my_ros2 --build-type ament_pyth
开箱 话不多说,直接上图,还是很好看的 性能简介 旭日x3派是一款性能十分强大的设备,可以运行ros2系统。 在系统开发工具方面,有1)基于ros2 foxy版本的TogetherROS辅助开发,2)基于TROS的AI算法包Boxs,3)同时继承了TROS和Boxs的算法应用apps 安装 本来想用屏幕显示,结果屏幕运输过程中碎了。。。 只好使用串口,但是串口如果没有装驱
引言 梯度下降的原理相信大家都已经清楚,梯度下降是通过求解目标函数在给定数据点出的梯度,然后调数自变量(或者参数)朝着梯度方向变化,按照这种方式变化的自变量将更加速度得使目标函数达到最大值。 最基本的梯度下降方法称为随机梯度下降(SGD),是通过每次选取一个样本,计算当前梯度并进行更新。由于每次采样一个样本,会使得梯度方向变化剧烈,因此快速收敛,因此在不断的探索过程中,人们对梯度的计算方式进行
引言 这一节使用张正友标定法,讲解相机标定的算法原理,下一节将对手写相机标定代码进行介绍。 相机模型 在工业相机的成像系统中,有四种坐标系,分别是世界坐标系、相机坐标系、图像坐标系和像素坐标系。将三维空间点P在世界坐标系中的坐标记为(Xw,Yw,Zw) ,将相机的光心O所在的平面称为相机坐标系,点P在相机坐标系中的坐标为(Xc,Yc,Zc) 。相机坐标系的x轴和y轴平行于成像平面,z轴垂直于
引言 这个系列将对手眼标定过程中的图片获取、相机标定原理、相机标定时间、罗德里格斯公式、手眼标定原理、手眼标定实践等内容进行讲解。今天先进行第一部分,即图片获取环节。 我们首先需要了解下realsense D435i这一款相机。 Realsense D435i 搭载2000万像素的RGB摄像头和3D传感器,有两种采样模式,分别可以以30帧每秒的速度提供1280*720分辨率的照片,以及90
引言 在前面的文章中,我们介绍了使用函数指针方便的选择不同函数,使用字典实现保存多套参数以待后续训练。但是在程序的运行过程中,仍然需要 1、每次修改PARAMS_SN中当前参数的编号; 2、新开终端,执行训练程序。 服务器可以容纳的同时运行的程序个数最多为14个,即使这样,我们仍然需要经过很多繁琐的操作才能达到我们的目的。 因此为了让训练时操作更加人性化,对传参训练部分进行修改: 1、
引言 首先给出Actors Critic算法的梯度更新公式: 在这个式子中,更新时采用的样本均来自于当前参数θ,且更新公式也是基于当前参数的函数,一旦采样的样本分布发生了变化,上式便不起作用。因此 1、参数想要得到很好地更新,就必须采样大量样本; 2、在此基础上,由于强化学习中训练数据为机器人与环境交互得到的,数据之间存在较强的相关性,会造成训练不稳定。 因此为了解决这个问题,人们通
引言 开局一张图 我来解释下图中线的含义,这个实际问题可以抽象为这样的模型: 圆柱表示机器人一个关节; 蓝色的线表示已经得到的机器人轴向方向,这里把它定义为z轴; 橙色的线表示空间中一个已经识别到的方向; 我们需要求解机器人这个关节的x轴方向 同时这里有两个必要的条件: 1、x轴一定在关节的面上; 2、我们希望x轴与空间中已经识别的橙色线共面。 分析 基于这两个要求,我们可以进一步分析: 1、x
引言 在学习强化学习的过程中,我们需要通过实践来巩固自己对于强化学习算法的理解。但是在应用阶段,采用工业界成熟的算法库往往是更为明智的选择,目前强化学习主流的算法工具由stable_baseline3,rllib等。今天我们就来针对sb3工具库,来讲解下如何快速搭建强化学习模型。 首先定义一个任务背景: 使用深度强化学习对六足机器人进行运动控制,其中模型的输入为机器人前进方向,和运动速度,18个关
引言 可能大家觉得这个题目有些奇怪,不过确实奇怪,哈哈哈。随便敲几行代码这个茶里茶气的说法是从我朋友那里得到的,觉得好玩,就起了一个这样的标题。 但是总归不能喧宾夺主,今天博客要讲的,是我之前会议论文中提到的一个关于“机器人姿态规划”方面的想法。 基于欧拉角---角速度的轨迹规划 这个算法的背景是: 当我们已知当前姿态,用R1表示,以及期望姿态,用R2表示。当然这里指的是机器人末端的姿态,那么我们
引言 在前面的章节中,我们讲解了python使用函数指针设置测试状态。在那里,我们只需要通过将定义的函数名赋值给变量,然后在调用就可以。但是还有一个问题,就是我们需要手动填写被调用的状态的维度,这个在有些时候会出现问题。不管是在训练或者在复现的时候,都会因为马虎忘记改写。 而且传统的python字典不支持自引用查找,就是设置字典里的键,其值与字典中其他的键值有关。因此今天来讲解下python自引用
引言 在使用强化学习或者其他神经网络进行参数调整时,有时候我们进场需要对其中的一些参数进行设置检测,来验证设置是否满足要求,这时就不免会进行很多次调试。如果我们仅仅通过在每次实验时改变变量的一些元素,很可能会弄得很乱,如何让自己的代码看起来整洁,优雅呢?今天我们针对函数指针进行讲解。 如在一个现实的例子中,我们需要对强化学习的状态进行设置,在这里设置了几组不同的状态表示,想分别进行测试。如果在传统
引言 今天在编写强化学习算法时,使用ptan库的时候,发现一个问题(ptan库是一个开源强化学习算法库)。 问题是这样的,在使用ptan库中的experience.py文件时,我发现env发出done=True时,并不会立即在当前步,也就是done时输出总奖励,而是要在下一步才输出总奖励,其原因如下: while True:
引言 今天在阅读ptan(开源强化学习算法库)源码的时候,发现其中有很对应用yield和iter等方法和关键字的地方,因此专门写个博客对于其中的这些名词和用法进行讲解。 可迭代对象和迭代器 可迭代对象 1、什么是可迭代对象,直观来讲,一个实例或者函数,数据结构等可以成为可迭代对象,是因为其在内部实现了__iter__()方法。可迭代对象可以使用for访问,但是不能用next访问。 2、当一个对象仅
引言 word的文件自动保存有时候经常失效,特别是当软件卡死的时候,往往不能进行自动保存。导致我改了一下午的论文白改了。。。基于这样的情况,我决定在之前使用git实现linux和win之间文件传输代码的基础上,进行改进,并配合win的计划任务功能,实现每隔一小时自动保存文件夹内容,并以当前时间为名称保存版本的功能。 time 我们希望保存的git版本以当前时间进行命名,我们首先来看下win自带的获
引言 在这个系列前面的几篇博客里,我们介绍了此强化学习项目的应用背景和状态、动作、奖励等设计。今天我们来看下在模型测试环节,测试样本的设计方法思路吧。 数据生成 在前面经过训练后,我们已经获得了一个比较ok的模型,现在我们希望通过实验检验我们的模型是否正确。在强化学习里的测试模型环节中,通常的做法是设计几个固定的场景,然后让机器人使用训练好的模型进行测试,以此来检验在同样环境中模型的性能。 在此环
引言 强化学习发展到今天已经有了很多比较经典的算法流传于世,在算法的分类上,一般分为基于值函数的强化学习算法和基于策略函数的强化学习算法两种。基于值函数的强化学习算法核心是学习每个状态-动作对的价值,有了每个状态下动作对应的价值后,就可以根据相应的概率选择动作,最终得到较优的算法。而基于策略函数的强化学习算法是通过学习一个随机策略函数,直接得到每个状态下的动作。今天我们要来一起看一下基于值函数的强
引言 在机械臂与环境之间进行力交互操作时,一定会引起接触力/力矩的变化。很多情况下,我们需要根据接触力的大小和规律对机械臂的下一步运动进行规划和控制,今天我们就一起来探讨下,机械臂与环境进行力交互时,接触力/力矩的变化规律。 获取数据 获取数据使用的是python中的write函数。首先打开一个文件,然后使用参数r+,通过覆盖写的方式将信息写入指定文件中。 with open('f
引言 在前面的章节中,我们讲解了柔顺控制原理,python微分运动求解,为后面求解位置导纳控制打下基础。今天我们来讲解下如何使用python在pybullet仿真环境中实现姿态导纳控制。 环境设置 在位置导纳控制那一章中,我们使用盆作为墙面,来测试轴碰撞前面后的导纳控制效果。在实际的控制中,我们首先在reset中,使用设置的M,B,K参数获得需要的微分方程,进而求得带外力符号的特解(自变量设置为固
引言 在前面两节中,我们分别介绍了柔顺控制的原理以及如何求解微分方程。经过柔顺控制章节的讲解,大家也能猜到我们要做的实验就是导纳控制。对,我们今天来看一下如何在pybullet中进行位置导纳控制。 原理 在进行实验之前,我们已经可以通过之前柔顺控制章节的讲解,了解了导纳控制的原理。本次实验就是基于导纳控制原理进行的操作。我们还是使用盆作为墙面,然后控制机械臂直行,让轴撞击墙。在得到初始规划的位置,
引言 微分方程是一种方程中带有微分项的特殊方程,在不借助计算机的情况下,计算微分方程,人们通常会首先将方程进行分类,确定属于哪一类微分方程,如齐次线性微分方程或者其他。当确定微分方程的种类之后,人们会根据这一类方程的特有解法进行求解微分方程。将会得到y关于x的函数,然后带入x之后,可以得到y的值。以下为百度百科中一阶齐次线性微分方程的通解: 在某些特殊领域,比如机器人控制中,当我们需要求解导纳控
引言 在上一节的介绍中,我们讲解了姿态导纳控制的代码部分,在这一节中,我们将通过实际的实验,切实得感受姿态导纳控制的魅力。 首先控制机械臂沿末端连杆坐标系z轴前进,从机械臂轴第一次接触到盆开始,工具坐标系中力矩传感器采集到的力矩值便会不断增加,当最大的力矩值超过阈值后,开始进行姿态导纳控制。姿态导纳控制中得到的,是一个旋转轴,我们需要将旋转角度进行赋值。 正交接触 我们的第一个实验,就是开始进行姿
引言 柔顺控制作为一种机器人力接触类控制算法,因为其本身自带的柔顺性,被广泛应用到人机交互,机器人-环境交互的任务中。今天我们再一次就柔顺控制相关基础问题进行讲解。在前面的章节中,我们从认识的角度讲解了姿态导纳控制相关问题---机器人柔顺控制及其姿态转换。 从大的分类来看,机器人柔顺控制主要分为阻抗控制和导纳控制两类。对于阻抗控制来说,其输入是位置信息,输出是机器人实际控制力;而导纳控制则正相反,
引言 在机器人控制中,关于旋转的表示上,有好几种不同的表示方式,今天我们来一一讲解,并通过pybullet验证他们之间的关系。 不同表示方式 旋转的表示方式,可以大致分为RPY角,欧拉角,四元数和轴角。 RPY角 首先解释字母: R:Roll 横滚 P:pitch 俯仰 Y:Yaw 偏航 从字母的顺序就可以知道旋转的次序:首先绕着x轴转,再绕着y轴转,最后绕着z轴转。但是需要注意的是RPY
引言 在前面的章节中,我们分别介绍了机械臂沿着末端任意方向直行和旋转,以及绕着工具坐标系任意旋转坐标原点旋转,今天我们将之前这些功能综合以下,为后面实现姿态导纳功能能打坚实基础。 场景介绍 在本节中,我们需要实现的是直行和旋转的综合控制,为了测试起见,我们以直行-旋转-直行的策略进行设置。 在前面的介绍中,我们讲到: 1、当进行直行的位移控制时,首先传输当前姿态,以及当前位置,函数将输出
引言 我们都知道,在numpy和tensor这些数据结构中,都可以使用他们自带的降维方法进行设置,但是对于list来说则没有什么现成的方法,今天,我们以此为切入点,来一起看一下关于python中list相关的问题。 获取list 当我们需要用到list数据时,首先要得到list数据,对于新建来说,可以使用如此方式: a = [1,2,3] 如果numpy则可以用这种方式: a = da
概述 这个系列叫做pybullet工具坐标系位移和旋转,如题所示,这个系列讲述的是在pybullet仿真引擎中对沿机械臂工具坐标系移动和绕着机械臂工具坐标系的旋转的控制问题进行探讨。前两个章节讲讲pybullet中控制沿着机械臂的工具坐标系位移,和旋转。后面的章节将对这两种基本运动方式进行扩展,引入导纳控制等。今天我们首先来看,如何控制机械臂沿工具坐标系某一方向进行位移。 引言 注意,在这里
引言 在gazebo+rviz这一套仿真系统中,若我们想要看看连杆坐标系,只需要在rviz中进行相应设置就可以,但在pybullet中,则没有现成的绘制两岸坐标系的程序,今天我们就来新建一个这样的项目,来方便机器人行业的同行食用。 代码 话不多说,上代码: def plot_line(self,num): start = list(p.getLinkState(s
引言 在上一节中,我们讲述了机器人的位移和旋转,在讲述机器人的移动时,我们保持机器人的姿态不变;在控制机器人旋转时,我们设置机器人的位置为定值。今天我们来看一个特殊的例子,那就是当我们的旋转不是绕着机器人身上的某个关节(某连杆坐标系),而是绕着机器人末端工具的上的某一点,这时如果我们想要绕着这个不是关节的点旋转时,该如何操作呢?请看后面分解。 前言-旋转表示 在讲述变旋转中心的旋转之前,我们
引言 机械臂的姿态变换,在这一节,主要讲述的是,机械臂绕着工具坐标系进行旋转,以及旋转特定角度的问题。 场景介绍 在机械臂旋转的这个任务中,和沿着某一特定方向运动类似,都需要初始化机械臂的位置和姿态,这里我们首先初始化机械臂的姿态为:轴向为笛卡尔世界坐标系的x轴。这里需要特别注意的是,和之前介绍的一样,当我们需要位置固定,仅姿态变化时,需要固定位置量,不能在每次运动时,使用当前获取的末端坐标
引言 在前面的章节,我们分别讲了UR5机械臂的DH参数及其坐标系;测试环境的设置;机械臂运动以及接触力表示。今天这一节,我们将讲述在设置过程中的代码规范,并给出整体代码。 go() 在前面讲机械臂的运动时,代码中曾经出现了一个自定义函数,我把它取名为go(),这个函数实现的功能也如其名,就是去执行运动的功能。那么我们先来看它的代码: 首先映入眼帘的就是逆运动学接口了,和前面讲逆运动学部
引言 在之前的文章中,我们讲述了git实现win/linux之间文件传输的实践。但是在使用过程中,我还是发现了许多问题,比如 1、提交版本时,没有commit名,如果以后万一传输有问题,找不到之前的 2、win和linux单独存放,并写入git忽略文件 其中最主要的就是第一条。 linux 我们先来简单回顾以下,在linux中,提交的代码如下: gnome-terminal -x b
引言 在前面的设置中,我们分别讲述了UR5机械臂的DH参数、模型,以及测试环境的设置。这一节我们将从UR5机械臂的运动,包括位移和旋转;以及力传感器信息值经过旋转变换后的表示两方面进行讲述,首先我们先来看机械臂的运动。 机械臂运动 在机械臂运动方面,如上一节所示,我们已经在开始运动前的reset函数中设置了机械臂处于一个大致正确的位姿,是通过指定关节角的方式设置的。那么如果我们想要设置机械臂
引言 在上一篇博客中,我们讲解了UR5机械臂的DH参数设置,了解了UR5机械臂在仿真环境中的实际轴向所在的坐标轴,这一节,我们再来熟悉下pybullet中用于接触力测试的仿真环境设置。 墙面设置 为了测试起见,我们设置了墙壁,进行碰撞实验,来获取接触力。我们查阅pybullet手册,发现官方提供的模
系列概述 在上一节博客中,我们讲述了如何在pybullet中采集末端六维力,即力和力矩。今天我们就针对pybullet中UR接触力的设置进行讲解。首先需要构建UR5机械臂的坐标系模型;然后对接触力测试环境进行分析,得到关节处的接触力值;那么如何将接触力转换到基坐标系,或者末端坐标系下进行表示,是这个系列第三篇博客主要介绍的内容;这个系列的第四篇博客将针对整个项目的代码规范化进行讲解,主要用到了函
引言 pubullet作为仿真引擎在机械臂仿真中应用广泛,其可以根据内部丰富的接口实现机器人的不同控制,在之前饿博文中,我们学习了pybullet搭建机械臂仿真环境以及一些接口函数等使用。但是当机械臂在执行复杂的动作任务时,例如接触式任务中,不可避免得需要用到接触力,今天我们就一起来学习下pybullet中关于力交互的一些函数。 力传感器 在传统的机器人控制中,如果需要用到与环境的力交互,可
引言 虽然通过scp等方式也可以实现文件传输,但是今天介绍一种新的方法,通过git的git push和git pull实现不同设备之间的文件传输。 云端 在云端,我们首先需要建立一个用于文件传输的仓库,这个仓库可以建立成私有状态。 linux端 在linux端和win的git中都需要登录你的github账号。 在发送端,我们首先需要使用git init在本地新建一个仓库,然后添加进关联
问题描述 在二维动态规划中,一道经典的问题就是移动机器人的移动问题,这个问题的描述是这样的: 有一个移动机器人,可以在二维矩阵平面中移动,其移动的起点位于左上角,每次移动只能向右或者向下,其移动的终点是右下角,在这个矩阵形的平面中每个位置都有一个数值,代表机器人在经过这个区域时需要付出的代价。我们的目标就是,在这个平面中,找一条代价最小的路径,并且输出最小代价路径和以及打印最小代价路径。 那
一、引言 pybullet是一个机器人研究中常用的仿真引擎,在使用pybullet时,为了能够更好地控制机器人执行相应的动作,通常需要进行一些必要的设置,比如设置重力等等。那今天我们来看一下pybullet中关于运动的一些接口函数设置,了解下这个接口函数的作用及设置方式吧。 二、接口函数 1、动作平滑渲染 p.configureDebugVisualizer(p.COV_ENABLE_S
引言 新的一年就要过去,对于临近毕业的同学来说,论文是接下来需要解决的最重要的问题,在论文中不免需要用到图来辅助论文阐述。当我们在投稿期刊或者会议的时候,往往对于图片的格式还另有要求。比如会要求必须是矢量图,会对论文中各个部分的字体有限定。本节博客将带大家看看使用python绘制论文图的时候的一些需要注意的点,以及讲述自己在用python原点在图片中心的数据图的绘制过程。 matplotlib
引言 不管是在机器人还是在其他学科中,我们经常会遇到设置阈值,并且检验当前数据是否达到阈值,以此来作为下一步动作的基准。当我们设置的阈值是,对于整个数组而言的,也就是说,数组中有无达到我们阈值的数据的时候,传统的方法就是一个一个遍历、验证。今天我们就用python来回顾并探索新的方式。 应用背景 首先,我们通过遍历的方式查找整个数组。以一个实际应用背景为例,当我们在控制机器人进行与力交互相关
引言 今天来谈一下git clone相关的东西. 首先,我们知道,当我们在本地新建仓库的时候,需要执行 git init 这行代码的一个重要的作用就是,创建.git文件夹,进而创建git配置文件config. 但是当我们执行 git clone 的时候,在克隆得到的文件夹里也会有个.git文件夹,以及config文件. 这个仓库因为是别人的仓库,因此这个config文件里将会记载着
寻找数组最大子序和是一道非常经典的算法题目,其中经典的做法是通过动态规划求解,今天我将分享在做这道题的时候的一些思路。这道题的题干也是相当简单,就是给出一个数组,然后让你给出这个数组中最大的连续子数组的和。以[-2,1,-3,4,-1,2,1,-5,4]为例。 1、暴力解法 暴力解法之所以能够称之为暴力解法,就是因为并不需要任何技巧,就是从头遍历每个元素,得到从这个元素开始到最后一个元素之间的总和
引言 当我们在学习和研究深度学习时,需要经常对参数进行调整,有的需要通过命令行的方式进行修改,有的则可以作为固定参数放在程序中。其中对于那种需要在运行程序时选择模式或者命名等只有在运行程序时才确定的参数一般采用命令行输入的方式确定;对于那些训练过程中一定需要的参数,我们可以通过将其写在程序中,来使其发挥作用。这是我们设置参数部分,当然对于一些我们曾经训练过的模型,我们可以首先将模型保存,然后当再训
引言 我们在进行关于深度学习的实验的时候,往往离不开tensorboard这个数据可视化工具,不管是pytorch还是tensorboard都可以使用这个工具进行数据可视化的实现。tensorboard的安装也很简单,通过pip install tensorboard就可以安装,当然如果是pytorch用户,需要安装tensorboardX。 在做实验的时候他可以给我们很多的帮助,而且我们还可以通
pybullet进行UR5机械臂环境的搭建,搭建的环境一般用于强化学习训练,这里采用gym框架结构。也就是需要有env.step,env.reset等。接下来我将分块介绍每个部分的内容。 env.reset 这个部分实现的功能就是在每次训练开始的时候初始化环境以及类的成员变量。第一块主要是导入pybullet的环境设置,第二部分首先设置一个离目标点差不多远的位置,第三部分我设置了一个随机落点的函数
一、 在机器人位姿变换领域一个常识就是对于旋转来说,是不可交换次序的,而位置变换是可以交换位置的。 但是即使这样,我们也经常会陷入一个误区。例如绕x轴旋转30度,再绕着z轴旋转45度,最后绕着x轴旋转-30度。以公式表示就是下面这种形式: R=rot_x(30)*rot_z(45)*rot_x(-30) 因为我们在单纯看到这个矩阵乘法的公式,会从矩阵相似到矩阵相等中分析,以求通过A和B都是旋转矩
今天和小伙伴想共同维护一个仓库,于是我们尝试了collaborator这种方式,从发起者的角度来说,就是在仓库的设置中将我设置为collaborator,然后系统会给我发送一个邀请的邮件,当我点了同意以后,我的github界面就会出现这个仓库。 但是注意,这里的出现的意思是,只是出现,并不是fork的,也就是说在你自己的github中是找不到这个仓库的。这篇博客就是以collaborator的角度
原理 梯度下降是一种在机器学习和深度学习中广泛使用的优化方法,常用于回归和分类问题中。在函数表示的曲线上的一点,其梯度方向表示函数值上升最快的方向,由于在机器学习中的梯度是损失函数的梯度,因此我们想要损失函数最小,就要将参数往负梯度方向进行调整。以一元线性回归为例,我们的数据是由y= w_ref × x+b_ref再加噪声生成,在这里我们假设w_ref=3,b_ref=2,因此原函数就是y= 3x
内容列表 开篇 简介 溯源 阻抗和导纳 姿态变换 其他 参考链接 开篇 Hello小伙伴们大家好,今天来聊一聊机器人柔顺控制以及其中的姿态变换相关的内容。 关于柔顺控制这个名词相比研究机器人的都不陌生,那到底柔顺控制在描述一个什么事呢? 我们知道,在工业机器人运动过程中,我们会对其进行轨迹规划,然后使用控制算法,比如pid等对其进行控制,让机器人实现跟踪期望轨迹的功能。但是当我们讨论协
1、launch 1、对于需要从命令行传入参数的命令,比如人rosrun ying talker 192.168.1.1这种,可以在launch中使用args标签传入2、当我们需要打开多个终端的时候,可以在不同的node中加入 output = "screen" launch-prefix="xterm -e" 这两个标签。(注意一定是xterm,其他的试了以后不行。)在我的实验中,有一个订阅机
在控制系统中分为控制器和被控对象。 matlab---s函数讲解之二连杆动力学仿真 零、原理 一、控制器 1、功能选择函数(flag) 2、初始化函数 3、输出函数 二、被控对象 1、功能选择函数(flag) 2、初始化函数 3、连续状态变量更新函数 4、输出函数 三、控制框图 四、代码 零、原理 1、定点控制时,期望为常数,所以可以利用导数为0的特性构造误差动力学,然后构
window 配置 1、 2、 可视化 保存数据 在collect的按钮上面设置好路径以后就可以进行收集数据了。 linux 配置、可视化、保存 配置部分一样,可视化部分,首先需要安装java,然后用java打开可视化的程序,最后和win下一样的步骤进行保存就可以后续用matlab或者python等进行分析数据。 [Linux]Ubuntu安装Java详细教程新终端必须source /etc/p
机器人运动学库KDL安装及使用引言原理安装PyKDLpykdl_utils使用实验 引言首先得到的工具坐标系净接触力向量,然后乘以工具坐标系到末端坐标系的旋转矩阵,得到末端的净接触力向量。然后将末端的力乘以阻尼矩阵(假设解耦),得到末端的速度向量。因为得到的速度向量还是在末端坐标系下的(这里可以考虑先转到基坐标系下再得到速度向量?),因此为了达到控制关节速度的目的,需要首先将末端的速度转换到基坐标
ROS入门之基本概念+catkin简介 编译(make)和构建(build) makefile 可执行文件 CMake(跨平台的安装(编译)工具) catkin 1、概念 2、运行 编译(make)和构建(build) 编译(compilation , compile) 1、利用编译程序从源语言编写的源程序产生目标程序的过程。 2、用编译程序产生目标程序的动作。 编译
发我你联系方式吧,我加你
要不你给我你联系方式,我加你
我觉得这个可能与强化学习没有关系,强化学习得到的结果最终还是要应用到环境中,建议再仔细查看下两个代码文件的不同。
应该是你的工具的模型文件设置问题
发现一只大佬~
这两天放上,等私聊发你。
有的呀
等我寒假整理下
古月居优秀创作者
机器人、深度强化学习
积分
粉丝
勋章
第三方账号登入
看不清?点击更换
第三方账号登入
QQ 微博 微信