加速度计(Accelerometer) VREP的模型浏览器components→sensors中可以找到加速度计的模型,用于测量物体沿着世界坐标系三个坐标轴的加速度值。 VREP中没有直接测量加速度的函数,可以间接地通过测量已知质量物体上的力来计算加速度。加速度计的结构如下图所示,其中动态物体Accelerometer_mass的质量为1g,通过函数读取力传感器测量的力的大小,
ST公司推出的一系列DISCOVERY开发板中,STM32F4 Discovery是基于ARM CORTEX-M4内核的一款入门级开发套件。下面将简单介绍基于这块开发板的加速度传感器信息获取。注意:On market, there are 2 versions of STM32F4-Discovery board. First release had LIS302DL (old b
robot_pose_ekf是ROS Navigation stack中的一个包,通过扩展卡尔曼滤波器对imu、里程计odom、视觉里程计vo的数据进行融合,来估计平面移动机器人的真实位置姿态,输出odom_combined消息。robot_pose_ekf只适用于平面上的轮式移动机器人,因此odom信息中的z,pitch和roll分量可以被忽略。IMU可以提供车体坐标系相对于世界坐标系的姿态(
LMS111系列是SICK推出的一款用于室外区域防撞、测量及安防的激光扫描器。LMS111同西克其他扫描器一样,采用成熟的ToF原理,非接触式检测,且加入了最新的多次回波检测技术(两次回波),使得LMS111即使在恶劣环境下也能准确测量。LMS111的主要特点为:IP67的防护等级,雾气校正功能及内部集成加热器,保证其能用于户外,大监控范围(270°的扫描角度),灵活的区域配置(可以根据现场需要,
TIM系列激光扫描传感器原理: 激光发射器发出激光脉冲,当激光碰到物体后,部分激光反射回激光接收器。通过计算发射/接收脉冲时间差,可以计算出距离值。激光扫描器连续不停的发射激光脉冲,由旋转的光学机构将激光脉冲按一定角度间隔(角度分辨率)发射至扫描角度内的各个方向而形成一个二维扫描面。 SICK激光传感器按用途主要分两种: 检测(Detection):在扫描器的扫描范围内,设置不同形状
激光雷达工作时会先在当前位置发出激光并接收反射光束,解析得到距离信息,而后激光发射器会转过一个角度分辨率对应的角度再次重复这个过程。限于物理及机械方面的限制,激光雷达通常会有一部分“盲区”。使用激光雷达返回的数据通常可以描绘出一幅极坐标图,极点位于雷达扫描中心,0-360°整周圆由扫描区域及盲区组成。在扫描区域中激光雷达在每个角度分辨率对应位置解析出的距离值会被依次连接起来,这样,通过极坐标表示就
下面使用SYD Dynamics的9轴AHRS(Attitude and heading reference system),来发布sensor_msgs/Imu类型的消息。 将传感器用USB转串口接到Ubuntu系统上,可以用如下命令查看串口信息: ls -l /dev/tty* 查询出串口名为“/dev/ttyUSB0”。根据官方给的传感器程序源文件和boost::asio库来
正态分布变换(NDT)算法是一个配准算法,它应用于三维点的统计模型,使用标准最优化技术来确定两个点云间的最优的匹配,因为其在配准过程中不利用对应点的特征计算和匹配,所以时间比其他方法快。下面的公式推导和MATLAB程序编写都参考论文:The Normal Distributions Transform: A New Approach to Laser Scan Matching 先回顾一下算
正态分布变换算法是一个配准算法,它应用于三维点的统计模型,使用标准优化技术来确定两个点云间的最优的匹配,因为其在配准过程中不利用对应点的特征计算和匹配,所以时间比其他方法快。下面是PCL官网上的一个例子,使用NDT配准算法将两块激光扫描数据点云匹配到一起。 先下载激光扫描数据集room_scan1.pcd 和 room_scan2.pcd. 这两块点云从不同的角度对同一个房间进行360°扫描
点云体积计算 有时用激光扫描设备扫描零件或者用无人机进行测量后会想知道它们的体积。比如下面的土堆: 如果扫描得到的数据是一系列三维点云,那么体积就比较难求,因为如何定义物体的边界比较困难。一种方法是提取三维点云的凸壳(包络体),然后再进行计算(当存在孔、洞时情况就很复杂了)。还有一种简便的估算方法如下图所示,将2.5D点云底面划分成离散的网格,计算每个网格对应单元
从PCL 1.0开始,PCL(三维点云处理库Point Cloud Library)提供了一个通用采集接口,这样可以方便地连接到不同的设备及其驱动、文件格式和其他数据源。PCL集成的第一个数据获取驱动是OpenNI Grabber,它使得从OpenNI兼容的设备请求数据流变得十分通用和简单。 目前PCL最新的1.8.0版本需要自行编译,而官网上的PCL 1.6.0 All-in-one
实物3D建模 目前在3D游戏制作过程中,需要专业人士花几天甚至数星期的时间,借助于Autodesk 3ds Max和Maya等昂贵的软件工具制作3D模型、纹理和动画。游戏制作中经常使用一种方法,即设计师为人物模型构和道具构建一比一实体模型,然后利用坐标测量仪对模型创建数字化的虚拟版本。现在有一种更快速、廉价的方法:利用kinect等3D摄像头采集实物表面的3D形状,3D扫描后会形成一组
在学习机器人动力学相关内容时看到MATLAB论坛上一个有意思的仿真项目Impedance Control for a 2-Link Robot Arm - User-interactive,一个用MATLAB实现的平面二连杆机械臂阻抗控制仿真。用户可以点击并拖拽鼠标来实时改变机械臂的目标位置,在控制力矩作用下机械臂会跟随目标点运动。按空格键可以切换控制模式,此时拖拽鼠标用来给末端施加一个扰动
目前用于喷漆、搬运、点焊等操作的工业机器人只具有简单的轨迹控制。轨迹控制适用于机器人的末端执行器在空间沿某一规定的路径运动,在运动过程中末端执行器不与任何外界物体接触。对于执行擦玻璃、转动曲柄、拧螺丝、研磨、打毛刺、装配零件等作业的机器人,其末端执行器与环境之间存在力的作用,且环境中的各种因素不确定,此时仅使用轨迹控制就不能满足要求。执行这些任务时必须让机器人末端执行器沿着预定的轨迹运动,同
关节空间 VS 操作空间 关节空间与操作空间轨迹规划流程图如下(上标ii i 和ff f 分别代表起始位置initial和目标位置final): 在关节空间内进行轨迹规划有如下优点: 在线运算量更小,即无需进行机器人的逆解或正解解算 不受机器人奇异构型影响 可以根据机器人或驱动器手册直接确定最大速度或力矩 其缺点是对应操作空间的轨迹无法预测,增加了机械臂与环境碰撞的可能。例
对于自由运动机器人来说,控制的目的是要控制机器人末端的位置和姿态(统一简称为位置),即所谓的位置控制问题。期望机器人末端达到的位置称为期望位置或期望轨迹,期望轨迹可以在机器人任务空间中给出,也可以通过逆运动学转化为机器人关节空间中的期望轨迹。期望轨迹通常有两种形式:一种是一个固定位置(setpoint),另一种是一条随时间连续变化的轨迹(trajectory)。 对于运动受限的机器人来说
Figure. Several possible path shapes for a single joint 五次多项式曲线(quintic polynomial) θ(t)=a0+a1t+a2t2+a3t3+a4t4+a5t5 \theta(t)=a_0+a_1t+a_2t^2+a_3t^3+a_4t^4+a_5t^5 考虑边界条件: θ0θfθ0˙θf˙θ0¨θf¨=a
惯性矩、惯性积、转动惯量、惯性张量 惯性矩是一个几何量,通常被用作描述截面抵抗弯曲的性质。惯性矩的国际单位为(m4)。即面积二次矩,也称面积惯性矩,而这个概念与质量惯性矩(即转动惯量)是不同概念。 面积元素dA与其至z轴或y轴距离平方的乘积y2dA或z2dA,分别称为该面积元素对于z轴或y轴的惯性矩或截面二次轴矩。惯性矩的数值恒大于零。对Z轴的惯性矩:Iz=∫Ay2dA,对Y轴的惯性矩:
在VREP中的物体上添加一个力矩看看它会怎么运动。新建一个场景,向其中添加一个立方体,将立方体抬高离开地面,并在Dynamics选项卡中将重力设置为0. 然后在立方体上施加一个力矩T={1,1,1},立方体将在力矩作用下旋转起来: function sysCall_init() -- do some initialization here: handle=sim.ge
TRAC-IK和Orocos KDL类似,也是一种基于数值解的机器人运动学求解器,但是在算法层面上进行了很多改进(Specifically, KDL’s convergence algorithms are based on Newton’s method, which does not work well in the presence of joint limits — common for
旋转变换的指数形式 用单位向量ω^ω^代表旋转轴,以及θθ代表绕该轴的旋转角度。则可以用三维向量ω^θ∈R3以指数形式来描述旋转。如果将ω^和θ分开描述,即为Axis-Angle形式。用ω^θ来描述旋转矩阵R可以有下面几种理解方法: 某坐标系初始与参考坐标系{s}重合,绕轴ω^旋转θ角度后当到达当前姿态,其相对于{s}的旋转矩阵为R。这种描述方法为 Axis–angle represen
什么是运动控制? 运动控制就是通过机械传动装置对运动部件的位置、速度进行实时的控制管理,使运动部件按照预期的轨迹和规定的运动参数(如速度、加速度参数等)完成相应的动作。 运动控制系统的典型构成 1. 开环系统(电机:步进电机;驱动器:脉冲分配,电流放大) 2. 半闭环系统(电机:直流伺服电机、交流伺服电机;驱动器:电流放大,位置反馈控制) 3. 半闭环系统(直流伺服电机、交流伺
A key concept in motion planning is configuration space, or C-space for short. Every point in the C-space C corresponds to a unique configuration q of the robot, and every configuration of the robot c
KDL(Kinematics and Dynamics Library)中定义了一个树来代表机器人的运动学和动力学参数,ROS中的kdl_parser提供了工具能将机器人描述文件URDF转换为KDL tree. Kinematic Trees: 链或树形结构。已经有多种方式来定义机构的运动学结构,KDL使用图论中的术语来定义: A closed-loop mechanism is a gr
KDL中提供了点(point)、坐标系(frame)、刚体速度(twist),以及6维力/力矩(wrench)等基本几何元素,具体可以参考 Geometric primitives 文档。 Creating a Frame, Vector and Rotation PyKDL中创建一个坐标系时有下面4种构造函数: __init__() # Construct an iden
V-rep中显示激光扫描点 在VREP自带的场景中找到practicalPathPlanningDemo.ttt文件,删除场景中多余的物体只保留静态的地图。然后在Model browser→components→sensors中找到SICK TiM310 Fast激光雷达,拖入场景中: 打开脚本参数修改器,可以修改雷达扫描范围(默认为270°),是否显示雷达扫描线(true),以及最大
使用Solidworks Motion插件可以对机构进行运动学/动力学仿真。机构约束添加完成后,可以在主动部件(关节)处添加马达进行驱动。运动可以是简单的匀速运动或者复杂的表达式、数据点形式的运动。 下面采用自定义数据点来驱动主动关节。点开编辑按钮会弹出对话框,可以手动添加数据点,也可以从txt、CSV文件中导入。第一列为自变量,第二列为随自变量变化的值。如下表中第一列为时间(间隔为0.5s)
加速度计(Accelerometer) VREP的模型浏览器components→sensors中可以找到加速度计的模型,用于测量物体沿着世界坐标系三个坐标轴的加速度值。 VREP中没有直接测量加速度的函数,可以间接地通过测量已知质量物体上的力来计算加速度。加速度计的结构如下图所示,其中动态物体Accelerometer_mass的质量为1g,通过函数读取力传感器测量的力的大小,可以计算
计算机器人运动学逆解首先要考虑可解性(solvability),即考虑无解、多解等情况。在机器人工作空间外的目标点显然是无解的。对于多解的情况从下面的例子可以看出平面二杆机械臂(两个关节可以360°旋转)在工作空间内存在两个解: 如果逆运动学有多个解,那么控制程序在运行时就必须选择其中一个解,然后发给驱动器驱动机器人关节旋转或平移。如何选择合适的解有许多不同的准则,其中一种比较合理的方法就是
Wheeled mobile robots may be classified in two major categories, omnidirectional and nonholonomic. Omnidirectional mobile robots have no equality constraints on the chassis velocity q˙=(ϕ˙,x˙,y˙) Omn
IK groups and IK elements VREP中使用IK groups和IK elements来进行正/逆运动学计算,一个IK group可以包含一个或者多个IK elements: IK groups: IK groups group one or more IK elements. To solve the kinematics of a simple kine
The geometric constraint solver is slower and less precise at solving kinematic problems, but might be easier and more intuitive to use. Moreover, it allows interacting with a mechanism in a more fle
路径规划 VS 轨迹规划 轨迹规划的目的是将输入的简单任务描述变为详细的运动轨迹描述。注意轨迹和路径的区别:Trajectory refers to a time history of position, velocity, and acceleration for each degree of freedom. The path provides a pure geometric descr
Solving the FK problem of simple kinematic chains is trivial (just apply the desired joint values to all joints in the chain to obtain the position and orientation of the tip or end effector). However
积分
粉丝
勋章
TA还没有专栏噢
第三方账号登入
看不清?点击更换
第三方账号登入
QQ 微博 微信