rigidBodyTree是什么(附使用例子和代码)

article/2025/10/19 13:32:33

目录

  • 介绍
  • 将连杆加入刚体树
  • DH参数添加机器人关节连杆
  • 修改刚体树模型
  • 设置刚体树动态特性
  • 外力作用导致关节的移动
  • 载入自带机器人模型并显示

介绍

rigidBodyTree是较新版本的MATLAB(小虎用的是2019b)自带的robotics相关工具箱里面的一个刚体树。它可以实现简单机器人刚体关节的连接仿真,这是在创建模型中使用的。其他详情见官方说明。

将连杆加入刚体树

rbtree=rigidBodyTree;
body1=rigidBody('b1');jnt1=rigidBodyJoint('jnt1','revolute');
body1.Joint=jnt1;basename=rbtree.BaseName;
addBody(rbtree,body1,basename);showdetails(rbtree);

在这里插入图片描述

DH参数添加机器人关节连杆

% first column is the distance between z axis(d), first column is angle
% rotate with x axis(\alpha); third is the distance between x axis (a)
dhparams = [0   	pi/2	0   	0;0.4318	0       0       0;0.0203	-pi/2	0.15005	0;0   	pi/2	0.4318	0;0       -pi/2	0   	0;0       0       0       0];
robot=rigidBodyTree;body1 = rigidBody('body1');
jnt1 = rigidBodyJoint('jnt1','revolute');setFixedTransform(jnt1,dhparams(1,:),'dh');
body1.Joint = jnt1;addBody(robot,body1,'base')body2 = rigidBody('body2');
jnt2 = rigidBodyJoint('jnt2','revolute');
body3 = rigidBody('body3');
jnt3 = rigidBodyJoint('jnt3','revolute');
body4 = rigidBody('body4');
jnt4 = rigidBodyJoint('jnt4','revolute');
body5 = rigidBody('body5');
jnt5 = rigidBodyJoint('jnt5','revolute');
body6 = rigidBody('body6');
jnt6 = rigidBodyJoint('jnt6','revolute');setFixedTransform(jnt2,dhparams(2,:),'dh');
setFixedTransform(jnt3,dhparams(3,:),'dh');
setFixedTransform(jnt4,dhparams(4,:),'dh');
setFixedTransform(jnt5,dhparams(5,:),'dh');
setFixedTransform(jnt6,dhparams(6,:),'dh');body2.Joint = jnt2;
body3.Joint = jnt3;
body4.Joint = jnt4;
body5.Joint = jnt5;
body6.Joint = jnt6;addBody(robot,body2,'body1')
addBody(robot,body3,'body2')
addBody(robot,body4,'body3')
addBody(robot,body5,'body4')
addBody(robot,body6,'body5')showdetails(robot)show(robot);
axis([-0.5,0.5,-0.5,0.5,-0.5,0.5])
axis on

在这里插入图片描述

修改刚体树模型

load exampleRobots.mat
showdetails(puma1)body3=getBody(puma1,'L3');
childBody=body3.Children{1};body3Copy = copy(body3);
newJoint=rigidBodyJoint('prismatic');
replaceJoint(puma1,'L3',newJoint);showdetails(puma1)

在这里插入图片描述

设置刚体树动态特性

设置质点的位置。

robot=rigidBodyTree('DataFormat','row');
body1 = rigidBody('body1');
body2 = rigidBody('body2');joint1 = rigidBodyJoint('joint1','revolute');
joint2 = rigidBodyJoint('joint2');
setFixedTransform(joint2,trvec2tform([1 0 0]))
body1.Joint = joint1;
body2.Joint = joint2;body1.Mass = 2;
body1.CenterOfMass = [0.5 0 0];
body1.Inertia = [0.167 0.001 0.167 0 0 0];body2.Mass = 1;
body2.CenterOfMass = [0 0 0];
body2.Inertia = 0.0001*[4 4 4 0 0 0];addBody(robot,body1,'base');
addBody(robot,body2,'body1');comPos = centerOfMass(robot);show(robot);
hold on
plot(comPos(1),comPos(2),'or')
view(2)body2.Mass = 20;
replaceBody(robot,'body2',body2)comPos2 = centerOfMass(robot);
plot(comPos2(1),comPos2(2),'*g')
hold off

在这里插入图片描述

外力作用导致关节的移动

load exampleRobots.mat lbr
lbr.DataFormat = 'row';
lbr.Gravity = [0 0 -9.81];% z axis direction
q = homeConfiguration(lbr);
wrench=[0 0 0.5 0 0 0.3];
fext=externalForce(lbr,'tool0',wrench,q);
qddot = forwardDynamics(lbr,q,[],[],fext);

在这里插入图片描述

载入自带机器人模型并显示

robot = importrobot('iiwa14.urdf');
show(robot);

在这里插入图片描述


http://chatgpt.dhexx.cn/article/sdoXLd7R.shtml

相关文章

Unity中Rigidbody的属性 方法

RIgidbody组件 常用属性 Mass:质量 最小值0.00000001 最大值10000000000 Drag:阻力 最小值0 最大值无限 Angular Drag:角阻力 最小值0 最大值无限 Use Gravity:使用重力 is Kinematic:物理是否影响该物体&#x…

[Unity Mirror] Network Rigidbody

英文原文: https://mirror-networking.gitbook.io/docs/components/network-rigidbody Network Rigidbody目前被归类为“实验性”,因此请分享您发现的任何问题或错误,如果生产构建,请自担风险使用。 Network Rigidbody 组件通过网…

Unity Rigidbody实现爬坡功能

文章目录 🎈 简介🎈 实现原理🎈 实现代码 🎈 简介 人物移动功能的实现或许用到Character Controller组件或许用到Rigidbody刚体组件,前者可以直接实现在某些高地不平的地面上移动,而后者想要在具有一定角度…

UnityVR--组件2--Rigidbody--移动控制

移动的方式有transform.Translate()、rigidbody.velocity()、rigidbody.MovePosition()等多种。本篇使用rigidbody的方式,并向着相机朝向的方向控制移动。也就是继上一篇“第三人称相机控制”&a…

第二十五章 Unity 刚体Rigidbody

在物理学中,静止和匀速直线运动是物体的平衡状态,如果给该物体施加某一个力的话,物体的平衡状态就会改变,当然这个真理的前提是理想状态。我们知道在现实世界中,由于重力和摩擦力的存在,任何一个物体都不可…

Unity:使用RigidBody

There are mainly two ways of moving a gameObject in Unity: 在Unity中移动游戏对象的方式主要有两种: Changing Position Coordintes: By directly changing the position of a gameObject without much consideration to its physics or other such components…

Rigidbody刚体组件详解

【组件界面】 【作用】 有刚体组件的物体受物理引擎控制,表现得像物理世界中的物体,例如受重力作用、受摩擦力推力等各种力作用、遇到墙会停下来不能穿过去。在Unity中,若某物体不带有碰撞器,仍会被穿过。碰撞器的作用在于检测空…

Unity API详解——Rigidbody类

Rigidbody类的功能是用来模拟GameObject对象在现实世界中的物理特性,包括重力、阻力、质量、速度等。对RIgidbody对象属性的赋值代码通常放在脚本的OnFixedUpdate()方法中。本博客主要介绍Rigidbody类的一些实例属性和实例方法,最后对Rigidbody类中功能相…

Unity 3D 刚体(Rigidbody)|| Unity 3D 刚体实践案例

Unity 3D 中的 Rigidbody 可以为游戏对象赋予物理特性,使游戏对象在物理系统的控制下接受推力与扭力,从而实现现实世界中的物理学现象。 我们通常把在外力作用下,物体的形状和大小(尺寸)保持不变,而且内部…

【Unity3D】刚体组件Rigidbody

1 前言 刚体(Rigidbody)是运动学(Kinematic)中的一个概念,指在运动中和受力作用后,形状和大小不变,而且内部各点的相对位置不变的物体。在 Unity3D 中,刚体组件赋予了游戏对象一些运…

【Unity】11.2 刚体(Rigidbody)

分类:Unity、C#、VS2015 创建日期:2016-05-02 一、简介 Rigidbody(刚体)组件可使游戏对象在物理系统的控制下来运动,刚体可接受外力与扭矩力,使游戏对象像在真实世界中那样进行运动。 任何游戏对象&…

【Physics】一、Rigidbody 刚体

文章目录 1、刚体组件2、刚体脚本2.1、获取刚体2.2、添加力2.3、Move 点击访问官网 物理系统 、刚体概述 、 刚体 (Rigidbody) 1、刚体组件 刚体 (Rigidbody) 使游戏对象的行为方式受物理控制。刚体可以接受力和扭矩,使对象以逼真的方式移动。任何游戏对象都必须包…

Unity物理组件之刚体Rigidbody

一、刚体组件简介 1、刚体简介 刚体:Rigidbody,属于物理类组件 作用:添加了刚体组件的游戏物体,可以在物体系统的控制下来运动,刚体可接受外力和扭矩力用来保证游戏对象像在真实世界中那样进行运动。任何游戏对象只有添加了刚体…

【Untiy学习笔记】Rigidbody组件及其常用函数

前言 提示:声明:此篇文章是个人学习笔记,并非教程,所以内容可能不够严谨。可作参考,但不保证绝对正确。如果你发现我的文章有什么错误,非常欢迎指正,谢谢哦。 本文大部分内容来自官方文档&…

mac快速锁屏方法

方法一. 快捷键:controlcommandQ。 方法二. 点击左上角apple logo,锁定屏幕。 方法三(快捷方便). 系统偏好设置->调度中心->触发角->选一个角(左上、左下、右上、右下)->锁定屏幕或者将显示器…

mac修改cmd+ctrl+q锁定屏幕快捷键

mac里的cmdctrlq快捷键是系统快捷键,用作“锁定屏幕”: 这个快捷键优先级很高,导致无法设置其为其他应用快捷键(如qq)。 下面的方法可以把“锁定屏幕”改成其他快捷键,从而腾出cmdctrlq来给应用程序&#…

mac 设置mysql登录快捷键_史上最详细的苹果Macbook快捷键使用

电脑快捷键可以帮助你提高工作效率,是使用电脑过程中经常用到的,苹果电脑的快捷键和普通PC不太一样,对于新手来说,经常找不到或不知道快捷键是什么,经常要去查,所以这边系统城小编跟大家介绍macbook快捷键的…

Mac提高效率的快捷键

分享常用的一些快捷键,欢迎补充,一起提高办公效率 目录 常用按键介绍系统管理关机和睡眠偏好设置触摸板、键盘和鼠标 窗口管理(最小化、关闭、退出)目录(文件夹)文本和文件操作撤销、重做复制、剪切全选查找…

mac系统修改锁屏快捷键

mac 自带了锁屏的快捷键,我忘了是什么了,点击屏幕左上角的苹果图标,就能看到。反正比较麻烦,没windows下方便,。 习惯了在windows下,按winL键来锁屏。在mac下,怎么改成commandL来锁屏呢? 方法…

macbook 常用键盘快捷键大全 mac os 苹果电脑

为了让刚开始使用 Mac 的新手更快地上手,特整理了这一份“最值得你记住的 Mac 常用快捷键列表”,希望可以帮助到大家更快地学习和查找 macOS 的键盘快捷键,以此提高 Mac 的操作效率…… 与 Windows 的差异 一切开始前,我们先来认识…