2D平面上的二连杆机器臂反向运动模拟(matlab代码示例)
2D平面上的二连杆机器臂反向运动模拟
matlab上先下载 robotics system toolbox工具箱
robot = rigidBodyTree('DataFormat','column','MaxNumBodies',3);
L1 = 1; %the length of L1
L2 = 1; %the length of L2%Add 'link1' body with 'joint1' joint.
body = rigidBody('link1');
joint = rigidBodyJoint('joint1', 'revolute');
setFixedTransform(joint,trvec2tform([0 0 0]));
joint.JointAxis = [0 0 1];
body.Joint = joint;
addBody(robot, body, 'base');%Add 'link2' body with 'joint2' joint.
body = rigidBody('link2');
joint = rigidBodyJoint('joint2','revolute');
setFixedTransform(joint, trvec2tform([0,-L1,0]));
joint.JointAxis = [0 0 1];
body.Joint = joint;
addBody(robot, body, 'link1');body = rigidBody('tool');
joint = rigidBodyJoint('fix1','fixed');
setFixedTransform(joint, trvec2tform([L2, 0, 0]));
body.Joint = joint;
addBody(robot, body, 'link2');t = (0:0.1:10)'; % Time
count = length(t);
center = [1 -1 0];
radius = 0.5;
theta = t*(2*pi/t(end));
points = center + radius*[cos(theta) sin(theta) zeros(size(theta))];q0 = homeConfiguration(robot);
ndof = length(q0);
qs = zeros(count, ndof);ik = inverseKinematics('RigidBodyTree', robot);
weights = [0, 0, 0, 1, 1, 0];
endEffector = 'tool';qInitial = q0; % Use home configuration as the initial guess
for i = 1:count% Solve for the configuration satisfying the desired end effector% positionpoint = points(i,:);qSol = ik(endEffector,trvec2tform(point),weights,qInitial);% Store the configurationqs(i,:) = qSol;% Start from prior solutionqInitial = qSol;
end%使用该特定机器人配置为解决方案的每一帧绘制机器人。此外,绘制所需的轨迹。
%在轨迹的第一个配置中显示机器人。调整绘图以显示绘制圆的二维平面。绘制所需的轨迹。figure
show(robot,qs(1,:)');
view(2)
ax = gca;
ax.Projection = 'orthographic';
hold on
plot(points(:,1),points(:,2),'k')
axis([-0.8 2 -2 4])%设置一个rateControl对象,以每秒 15 帧的固定速率显示机器人轨迹。从逆运动学求解器中显示每个配置中的机器人。观察手臂跟踪所示的圆形轨迹。framesPerSecond = 15;
r = rateControl(framesPerSecond);for i = 1:countshow(robot,qs(i,:)','PreservePlot',false);drawnowwaitfor(r);
end
此代码参考了matlab官网提供的教程文档
[1]: https://www.mathworks.com/help/robotics/ug/2d-inverse-kinematics-example.html
2D平面上的二连杆机器臂反向运动模拟(matlab代码示例)相关推荐
- 用matlab和RTB做二连杆机械臂动力学建模
文章目录 写在前面 二连杆机械臂 RTB建模 仿真与验证 源代码 写在前面 本文使用的工具为matlab以及Peter Corke的RTB(Robotics Toolbox).基于RTB 10.3.1 ...
- 二关节机械臂matlab控制,二连杆机械臂阻抗控制模拟(一)
在学习机器人动力学相关内容时看到MATLAB论坛上一个有意思的仿真项目Impedance Control for a 2-Link Robot Arm - User-interactive,一个用MA ...
- 2D平面上的变换和3D空间中的变换以及求无穷远点
求两个平行线的无穷远点,最简单的方法(二维空间和三维空间都适用) 两个平行线的交点就是无穷远点.求解的方法就是把直线的方向向量(向量我们都用列向量表示)拿到,然后给最后一维加个0就是它们的交点(无穷远 ...
- 二连杆机械臂角度解算
二连杆机械臂角度解算 本文采用极坐标的平移变换公式或者余弦定理的方法在定坐标点的情况下去解算二连杆机械臂两个关节处应该旋转的角度.由于余弦定理更容易理解且极坐标的平移变换公式和余弦定理推导出来的角度解 ...
- 显著性图matlab,cvpr14_saliency_code 2014上的关于图像显著性区域的检测matlab代码。 271万源代码下载- www.pudn.com...
文件名称: cvpr14_saliency_code下载 收藏√ [ 5 4 3 2 1 ] 开发工具: matlab 文件大小: 4413 KB 上传时间: 2014-09-07 下载次 ...
- 机器人动力学建模实例:二连杆机械臂
机器人动力学方程比较复杂,通常每一个参数矩阵都非常庞大,这里介绍几个简单结构的动力学方程,对于一般的控制算法,可以在这几个动力学方程中进行验证. 1.欧拉-拉格朗日动力学方程 (不考虑摩擦和末端受力) ...
- ADAMS的二连杆机械臂PID控制
这里利用ADAMS 2014,来完成如下方法. 1 二连杆平面臂初始状态呈直线 图1 二连杆平面臂呈直线时三维模型 不计重力,忽略摩擦.在xy平面,连杆1和连杆2长度分别为300mm,100mm,其宽 ...
- 点云在任意平面上获取二维投影
如有错误,恳请指出. 点云是在一个三维空间中由一堆无序的点所组成,那么在三维中理所应该可以在任意的二维平面:Ax + By + Cz + D = 0 中进行投影,获得不同平面中的二维视图.下面讲给出基 ...
- 【NLG】(二)文本生成评价指标—— METEOR原理及代码示例
前奏: [NLG](一)文本生成评价指标--BLEU原理及代码示例 1.METEOR原理 2004年,卡内基梅隆大学的Lavir提出评价指标中召回率的意义,基于此研究,Banerjee和Lavie(B ...
最新文章
- linux使用世界时间,linux世界里的时间
- linux socket 套接字状态 EAGAIN EWOULDBLOCK EINTR 与非阻塞 简介
- 窗体添加阴影效果如此简单
- 终于,一键打通微信和QQ
- newcode Gene Tree 点分治
- Vue介绍-Vue简单应用-Vue基本用法
- C++笔记-利用远程线程注入获取PC版微信个人昵称
- 【Java】输出10-1000中间既能被3整除又能被7整除的数
- ubuntu pycharm设置快捷图标_这些Ubuntu中的小技巧,你知道吗?
- PyQT实战小项目---筑龙网批量下载链接
- 前向声明include区别
- Spring Boot 学习笔记,这个太全了!
- python产生随机数组_Python生成随机数组的方法小结
- vc ++ 实现检测变速齿轮,变速精灵, 变速类辅助工具
- 马云的蚂蚁金服为何如此看重区块链?如何发挥区块链商业优势?
- Fortran基本知识
- 服务器组装 华硕主板,华硕主板装机教程 华硕主板装机步骤
- 目前市面上流行的几种VR头盔设备介绍
- 二重积分的计算.02
- 各大财经网站股票数据接口