Robotics System Toolbox —— 使用笔记2
程序员文章站
2022-05-05 12:09:27
...
文章目录
1.加载机器人
robot = importrobot('iiwa14.urdf')
show(robot)
show(robot,'visuals','on','collision','off');
2.修改初始位置
config = homeConfiguration(robot)
show(robot);
config(2).JointPosition = pi/2;
show(robot,config);
3. 逆运动学
4. 动力学
要使用动力学功能,必须将DataFormat属性设置为==‘row’或’column’==。此设置将输入并以行或列向量的形式提供输出,以进行相关的机器人计算,例如机器人配置或关节扭矩。
4.1 动力学特性
-
Mass —刚体的质量,以kg为单位。
-
CenterOfMass—刚体的质心位置,指定为[x y z]矢量。向量以米为单位描述质心相对于车身框架的位置。
-
Inertia—刚体的惯性,指定为[Ixx Iyy Izz Iyz Ixz Ixy]相对于车身框架的矢量,单位为千克平方米。向量的前三个元素是惯性张量(惯性矩)的对角元素。最后三个元素是惯性张量的非对角元素(惯性乘积)。惯性张量是一个正定矩阵:
-
Gravity—机器人经历的重力加速度,指定为[x y z]矢量,单位为米/秒平方。默认情况下,没有重力加速度。
-
DataFormat—运动学和动力学功能的输入和输出数据格式。
4.2 动力学计算API
- forwardDynamics —— 给定关节扭矩和状态,计算关节加速度
- inverseDynamics —— 给定关节运动,计算扭矩
- externalForce —— 计算相对于基座的外部力
- gravityTorque —— 计算用于补偿重力所需的关节力矩
- centerOfMass —— 计算质心的位置和雅克比矩阵
- massMatrix —— 计算空间的质量矩阵
- velocityProduct —— 计算用于消除速度产生的关节力矩
(1)外力
% 构成该外力矩阵,其可以作为输入来使用inverseDynamics和forwardDynamics施加外部力, wrench向体指定通过 bodyname。该 wrench输入被假定为在基础框架。
fext = externalForce(robot,bodyname,wrench)
% 假设外力矩阵位于指定框架内 ,wrench则组成外力矩阵。力矩阵在基本框架中给出。bodynameconfigurationfext
fext = externalForce(robot,bodyname,wrench,configuration)
(2)逆动力学
% 计算机器人在不施加外力的情况下静态保持其原始配置所需的关节扭矩。
jointTorq = inverseDynamics(robot)
% 计算关节扭矩以保持指定的机器人配置。
jointTorq = inverseDynamics(robot,configuration)
% 在零加速度且无外力的情况下,针对指定的关节配置和速度计算关节扭矩。
jointTorq = inverseDynamics(robot,configuration,jointVel)
% 在没有外力的情况下,针对指定的关节配置,速度和加速度计算关节扭矩。要指定原始配置,零关节速度或零加速度,请[]对该输入参数使用。
jointTorq = inverseDynamics(robot,configuration,jointVel,jointAccel)
% 计算指定关节配置,速度,加速度和外力的关节扭矩。使用该externalForce 函数生成fext。
jointTorq = inverseDynamics(robot,configuration,jointVel,jointAccel,fext)
(3)正动力学
% 在零关节速度且无外力的情况下,计算由于机器人原始配置下的重力引起的关节加速度。
jointAccel = forwardDynamics(robot)
% 还指定了机器人配置的关节位置。要指定原始配置,零关节速度或零扭矩,请 []对该输入参数使用。
jointAccel = forwardDynamics(robot,configuration)
% 还指定了机器人的关节速度。
jointAccel = forwardDynamics(robot,configuration,jointVel)
% 还指定了施加到机器人的关节扭矩。
jointAccel = forwardDynamics(robot,configuration,jointVel,jointTorq)
% 还指定了一个外部力矩阵,其中包含施加到每个关节的力。
jointAccel = forwardDynamics(robot,configuration,jointVel,jointTorq,fext)
(4)重力项
% 计算将机器人保持在其原始配置所需的关节扭矩。
gravTorq = gravityTorque(robot)
% 指定用于计算重力转矩的关节配置。
gravTorq = gravityTorque(robot,configuration)
(5)质量矩阵
% 返回机器人原始配置的关节空间质量矩阵。
H = massMatrix(robot)
% 返回指定机器人配置的质量矩阵。
H = massMatrix(robot,configuration)
(6)速度引起的力矩
% 计算在特定关节配置下抵消指定关节速度所产生的力所需的关节扭矩。重力扭矩不包括在此计算中。
jointTorq = velocityProduct(robot,configuration,jointVel)
速度引起的关节扭矩等于velocityProduct输出的负值。
5. 轨迹相关
推荐阅读
-
【JAVA 学习笔记2】if使用例子
-
MVC使用T4模板生成其他类的具体实现学习笔记2
-
微服务学习笔记(2)——使用Consul 实现 MagicOnion(GRpc) 服务注册和发现
-
ng2学习笔记之bootstrap中的component使用教程
-
SDL2和OpenGL使用踩坑笔记经验分享
-
ROS2学习笔记(二)——ros2内部命令行工具介绍与使用
-
机器学习实战学习笔记(二)-KNN算法(2)-使用KNN算法进行手写数字的识别
-
Hibernate学习笔记(2):Hibernate中子查询(subselect)的使用
-
【Dojo 1.10】笔记2 使用服务器环境及使用模块
-
SpringBoot学习笔记42——使用log4j2.xml配置日志文件的输出及保留