机器人

六轴机器人matlab写运动学逆解函数(改进DH模型)

匿名 (未验证) 提交于 2019-12-03 00:34:01
1.理论 本文采用的模型为之前博客“ matlab机器人工具箱一般六轴的DH模型和改进DH模型建立与区别 ”里面的改进DH模型,参数不再重复给出。 基系与工具坐标系关系为: b T 0 ( 0 T 1 1 T 2 2 T 3 3 T 4 4 T 5 5 T 6 ) 6 T e = b T e b T 0 ( 0 T 1 1 T 2 2 T 3 3 T 4 4 T 5 5 T 6 ) 6 T e = b T e 将逆运动学问题简化为: 0 T 1 1 T 2 2 T 3 3 T 4 4 T 5 5 T 6 = b T 1 0 b T e 6 T 1 e 0 T 1 1 T 2 2 T 3 3 T 4 4 T 5 5 T 6 = b T 0 1 b T e 6 T e 1 2.转换为下式求解 2 T 3 3 T 4 4 T 5 = 1 T 1 2 0 T 1 1 b T 1 0 b T e 6 T 1 e 5 T 1 6 2 T 3 3 T 4 4 T 5 = 1 T 2 1 0 T 1 1 b T 0 1 b T e 6 T e 1 5 T 6 1 左边: left = [ cos (theta3)* cos (theta4)* cos (theta5) - sin (theta3)* sin (theta5), - cos (theta5)* sin (theta3) - cos

洛谷 P1070 道路游戏 解题报告

匿名 (未验证) 提交于 2019-12-03 00:32:02
小新正在玩一个简单的电脑游戏。 游戏中有一条环形马路,马路上有 \(n\) 个机器人工厂,两个相邻机器人工厂之间由一小段马路连接。小新以某个机器人工厂为起点,按顺时针顺序依次将这 \(n\) 个机器人工厂编号为 \(1-n\) ,因为马路是环形的,所以第 \(n\) 个机器人工厂和第 \(1\) 个机器人工厂是由一段马路连接在一起的。小新将连接机器人工厂的这 \(n\) 段马路也编号为 \(1-n\) ,并规定第 \(i\) 段马路连接第 \(i\) 个机器人工厂和第 \(i+1\) 个机器人工厂( \(1≤i≤n-1\) ),第 \(n\) 段马路连接第 \(n\) 个机器人工厂和第1个机器人工厂。 游戏过程中,每个单位时间内,每段马路上都会出现一些金币,金币的数量会随着时间发生变化,即不同单位时间内同一段马路上出现的金币数量可能是不同的。小新需要机器人的帮助才能收集到马路上的金币。所需的机器人必须在机器人工厂用一些金币来购买,机器人一旦被购买,便会沿着环形马路按顺时针方向一直行走,在每个单位时间内行走一次,即从当前所在的机器人工厂到达相邻的下一个机器人工厂,并将经过的马路上的所有金币收集给小新,例如,小新在 \(i\) ( \(1≤i≤n\) )号机器人工厂购买了一个机器人,这个机器人会从 \(i\) 号机器人工厂开始,顺时针在马路上行走,第一次行走会经过 \(i\) 号马路

【强化学习】强化学习分类

匿名 (未验证) 提交于 2019-12-03 00:32:02
https://github.com/tigerneil/deep-reinforcement-learning-family https://morvanzhou.github.io/tutorials/machine-learning/reinforcement-learning/1-1-B-RL-methods/ ――-主要引用morvan老师的教学视频 在学习强化学习的过程中我们经常会遇到一些陌生的名词分类,什么model-free,offpolicy之类的,学习的时候不明觉厉可能就一眼带过了,但是其实这些分类的名词其实十分有趣,掌握他们十分有助于我们加深对相关强化学习算法的了解。 举个栗子:我们刚刚学习强化学习的时候都学习过gridworld这个机器人走迷宫的例子吧,就是有一个迷宫机器人从起点出发通过强化学习的方式选择出到达终点的最优路径。 model-based方式就是我们给机器人地图全开,事先了解好整个游戏环境根据过往的经验选取最优策略,也就是说model-based他能通过想象来预判断接下来将要发生的所有情况. 然后选择这些想象情况中最好的那种. 并依据这种情况来采取下一步的策略 model-free方法就是不依赖模型,这种情况下就是直接将我们的机器人丢到迷宫里面瞎溜达,然后机器人会根据现实环境的反馈采取下一步的动作。这种方法不对环境进行建模也能找到最优的策略

SLAM:Google cartographer算法 机器人建图、保存地图

匿名 (未验证) 提交于 2019-12-03 00:30:01
这两天跑了以下google的cartographer算法,效果不错,比gmapping效果要好。 cartographer的安装网上很多教程,主要按照张明明的方法, https://github.com/hitcm/ ,安装好后,下个数据集,运行roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=yourpath/cartographer_paper_deutsches_museum.bag,就可以看到网上流行的那张图, 仿真数据跑成功后,就要用自己的机器人跑算法了。就我的实际经验,跑仿真数据很容易,照着教程,一步步来,基本都能看到建图效果 //////////******************************************************************************************************************************************///////////// 我使用的是adept机器人,其实不同的机器人差别不大,主要是看用了哪些传感器数据。我用的这款adept有激光和里程计。 和网上其他教程基本一样,主要修改demo_revo_lds.launch和revo_lds.lua 其中,demo_revo

Robotics Toolbox :(5)机器人动力学

匿名 (未验证) 提交于 2019-12-03 00:28:02
机器人动力学是机器人学中最核心的部分,也是机器人力控制的基础。 matlab Robotics Toolbook 工具箱中有具体的动力学计算函数: 已知各关节上电机提供的力,求对应的各关节的角度、角速度、角加速度等信息。 用到的函数是:SerialLink.fdyn 具体的调用格式: [ T ,q,qd] = R.fdyn( T , torqfun) T 表示时间间隔,就是采样时间。根据给定的力矩函数 torqfun,求各关节的 q,qd 也可以设定关节角度、角速度的初值,并且确定力矩函数中所含的参数,如下 [ T ,q,qd] = R.fdyn( T , torqfun, q0, qd0, ARG1, ARG2, …) 如 PD 控制: [t,q] = robot.fdyn( 10 , @mytorqfun, qstar, P, D); function tau = mytorqfun (t, q, qd, qstar, P, D) tau = P * (qstar-q) + D * qd ; end 已知关节的角度、角速度、角加速度等信息,求各关节所需提供的力 用到的函数是:SerialLink.rne 具体的调用格式: tau = R.rne(q, qd, qdd) 根据给定的 q, qd, qdd,求个关节需要提供的 tau 如果机器人末端受到力的作用 fext

robot motion planning介绍

匿名 (未验证) 提交于 2019-12-03 00:27:02
声明:本篇博客内容主要是由邱强博士的运动规划视频整理而成。非原创,只为了一时复习之方便,侵权必删! 最近的学习顺序不对,至少要把机器人的的动力学部分完成,再来做运动规划的学习,这样搞得我的节奏有点不舒服。但是已经花了这么多时间,还是要记录一下。在今后的学习当中要尽量把运动规划的知识体系补全。 可以看看自己之前相关的博客: Vrep 中RRT算法( path planning) - CSDN博客 RRT算法简介 - CSDN博客 0.总体知识框架: 1.0 什么是机器人的运动规划 定义:在给定的 环境 中,指定机器人的起点与终点,计算出连接 起点与终点 ,并满足一定的 约束条件 (如避障、路径最短、时间最短、末端满足工艺要求等)的 轨迹。 简单的说可以理解为: 在机械臂上做自动规划 。 1.1 运动规划算法的评价标准 Complete(完备性): 如果一个问题有解,那么一定能在有限的时间内求出可行解。 Optimality(最有性): 找到的路径是最短的,能量最优的,执行最快的等等。 1.2 理论现状与应用现状 理论现状: 应用现状: 2. 为什么要进行运动规划 提高易用性 ,如果有一天机器人使用起来像手机一样好用,那么机器人就能走进千家万户,哪怕只到了诺基亚的程度。 3. 怎么进行运动规划 对运动规划问题进行建模。 建模方法主要有三种: 3.1 建模篇优化方法 3.2

Robotics Toolbox :(1)建立机器人模型

匿名 (未验证) 提交于 2019-12-03 00:27:02
转载自 这里 机器人学工具箱(Robotics Toolbook for Matlab) 是matlab中专门用于机器人仿真的工具箱,在机器人建模、轨迹规划、控制、可视化方面使用非常方便。 创建机器人的两个最重要的函数是:Link和Seriallink Link 对象包括连杆的各种属性:运动学参数、惯性张量、电机、传递矩阵等 Link 的类函数: A :关节传动矩阵 RP :关节类型 friction : 摩擦力 nofriction : 摩擦为0 dyn : 显示动力学参数 islimit:检测关节变量是否超出范围 isrevolute : 检测关节是否为转动关节 isprismatic : 检测关节是否为移动关节 display : 显示D-H矩阵 char : 转化为字符串 Link 的类属性(读/写): theta:D-H参数 d:D-H参数 a:D-H参数 alpha:D-H参数 sigma: 默认0,旋转关节;1,移动关节 mdh: 默认0,标准D-H;1,改进D-H offset:关节变量偏移量 qlim:关节变量范围 m: 质量 r: 质心 I: 惯性张量 B: 粘性摩擦 Tc: 静摩擦 G: 减速比 Jm: 转子惯量 例如:定义连杆 L =link( 'd' , 1.2 , 'a' , 0.3 , 'alpha' , pi / 2 , 'offset' , pi

LeetCode 657. 判断路线成圈

匿名 (未验证) 提交于 2019-12-03 00:27:02
初始位置 (0, 0) 处有一个机器人。给出它的一系列动作,判断这个机器人的移动路线是否形成一个圆圈,换言之就是判断它是否会移回到 原来的位置 。 移动顺序由一个字符串表示。每一个动作都是由一个字符来表示的。机器人有效的动作有 R (右), L (左), U (上)和 D (下)。输出应为 true 或 false,表示机器人移动路线是否成圈。 示例 1: 输入: "UD" 输出: true 示例 2: 输入: "LL" 输出: false 第一种方法,计数法,分别给UD和RL计数,计数器分别为x,y,遇到U或R,x++或y++;遇到R或L,x--或y--;如果最后x和y为0,则返回true,否则返回false; public static boolean judgeCircle ( String moves ) { char a []= moves . toCharArray (); int x = 0 , y = 0 ; for ( char c : a ) { if ( c == 'L' ) x ++; if ( c == 'R' ) x --; if ( c == 'U' ) y ++; if ( c == 'D' ) y --; } return x == 0 && y == 0 ; } 第二种方法,用HashMap计数,然后再分别判断R和L或U和D数量是否相等(没通过

机器人中常用的通信方式

匿名 (未验证) 提交于 2019-12-03 00:27:02
题记:机器人中常用的通信方式有3种,tcp通信,udp通信,can通信 1、套接字(socket) 1.1、什么是socket socket是一种通信机制,可以应用于计算机不同进程之间通信,包括同一台计算机和网络中不同计算机之间的进程之间通信。 1.2 socket连接方式 socket的连接是client/server(客户端/服务端)对应的连接方式,否则连接失败。当然一个服务端可以对应多个客户端,但是其相应的连接方式。 文章来源: 机器人中常用的通信方式