V-REP+Matlab 七自由度冗余机械臂DH矩阵与运动学逆解

https://www.jianshu.com/p/a31ae1d2c1a2

最终效果

在这里插入图片描述
有些延迟,可能是我电脑太辣鸡.

以及用机器人工具箱建立的机械臂的DH矩阵的显示如下:
在这里插入图片描述

这个机械臂即V-rep中的example的第一个,注意使用时要先将IK group删除,删掉dummy之间的link.

Matlab中的代码:

建立DH矩阵:

clear
deg = pi/180;

L(1) = Revolute('d', 0.1392, 'a', 0, 'alpha', -pi/2,'offset',pi);%关节运行范围
L(2) = Revolute('d',0, 'a', 0, 'alpha',-pi/2,'offset',pi);
L(3) = Revolute('d',  0.2913, 'a', 0, 'alpha',-pi/2,'offset',pi);
L(4) = Revolute('d',  0, 'a', 0, 'alpha', -pi/2,'offset',pi/2);
L(5) = Revolute('d',  0.3236, 'a', 0, 'alpha',-pi/2,'offset',pi);
% L(6) = Revolute('d',  0, 'a', 0, 'alpha', 0,'offset',0);
L(6) = Revolute('d',  0, 'a', 0, 'alpha', -pi/2,'offset',-pi/2);
L(7) = Revolute('d',  0.1, 'a', 0, 'alpha', 0);
%     'qlim', [-45 225]*deg );
T=[1 0 0 0;0 1 0 0;0  0 1 0.0641 ;0 0 0 1];
p560 = SerialLink(L, 'name', 'Puma 560', ...
    'manufacturer', 'UnimaLtion', 'base',T,'ikine', 'puma', 'comment', 'viscous friction; params of 8/95');
close all

p560.plot(zeros(1,length(L)))

逆运动解的部分


clear
clc
sss;
vrep=remApi('remoteApi'); % using the prototype file (remoteApiProto.m)
vrep.simxFinish(-1); % just in case, close all opened connections
clientID=vrep.simxStart('127.0.0.1',19997,true,true,5000,5);

JointHandle=zeros(1,7);
for i=1:6
    [res,JointHandle(i)] = vrep.simxGetObjectHandle(clientID,['redundantRob_joint' num2str(i)],vrep.simx_opmode_blocking);
end
[res,tar_handle] = vrep.simxGetObjectHandle(clientID,'redundantRob_target',vrep.simx_opmode_blocking);
vrep.simxSynchronous(clientID,true);
vrep.simxStartSimulation(clientID,vrep.simx_opmode_oneshot);
%%
qz = [0 0 0 0 0 0];
qn=[0 pi/4 -pi 0 pi/4  0];

tic;
count=0;
while toc<40
    [res,quat]=vrep.simxGetObjectQuaternion(clientID,tar_handle,JointHandle(1),vrep.simx_opmode_blocking );
    quater = [quat(4),quat(1:3)];
    T = quat2tform(quater);
    [res,pos]=vrep.simxGetObjectPosition(clientID,tar_handle,JointHandle(1),vrep.simx_opmode_blocking );
    T(1:3,4) = pos';
    qi = p560.ikine(T);
    JointAng = qi;
    for i=1:7
            vrep.simxSetJointTargetPosition(clientID,JointHandle(i),JointAng(i),vrep.simx_opmode_blocking );
            
    end
    vrep.simxSynchronousTrigger(clientID);
    count=count+1;
end

vrep.simxStopSimulation(clientID,vrep.simx_opmode_oneshot_wait);
vrep.simxFinish(clientID);
vrep.delete(); % call the destructor!

完整工程下载链接:https://download.csdn.net/download/qq_33243369/11244067

### 回答1: 自由度机械臂是一种多关节运动系统,能够在三维空间中完成复杂的任务。而Matlab,则是一款科学计算软件,广泛应用于机械臂的控制、仿真等领域。因此,结合这两者可以实现自由度机械臂的建模、控制与仿真。 首先,通过Matlab可以建立自由度机械臂运动学模型,明确每个关节参数、连杆长度、关节角度等信息,并用Matlab面板对其进行可视化。此外,在机械臂移动过程中,Matlab还可以通过运动学算法计算机械臂末端位置和姿态,使机械臂自适应完成路径规划和运动控制。 其次,Matlab还可以帮助实现机械臂的反演动力学模型,对机械臂运动学参数和控制输入力矩进行数值计算。通过反演动力学模型的计算,机械臂的动态响应和抗干扰能力可以得到充分的验证,使机械臂的控制算法更加精细和高效。 最后,Matlab还可以实现机械臂的仿真,并可视化根据不同操作对象选择不同的钳爪。这种仿真建模技术,可以通过各种模拟实验对机械臂各个关节的控制算法和运动轨迹进行优化和测试,提高机械臂的精准性和效率。总之,结合自由度机械臂Matlab的科学计算和仿真技术,完全可以实现机器人技术领域的重要应用。 ### 回答2: 自由度机械臂是一种具有灵活性和自主性的工具。在工业自动化和机器人技术中广泛应用。该机械臂自由度(关节)允许其在三维空间内自由运动和定位,在不同的任务环境下拥有很高的灵活性。 Matlab 是一种用于高级数学和工程计算的软件工具,对于控制和运动学方程的求非常流行。通过 Matlab,可以简单地实现机械臂运动和控制。 自由度机械臂Matlab 模拟可以帮助工程师和研究人员评估其设计、性能和控制策略。可以使用 Matlab 的 Simulink 模块,结合机械臂动力学模型和运动学方程,实现其运动和力学性能的仿真。 在这个模拟系统中,可以实现各种不同的控制和运动学算法,如反向运动学、静态控制、轨迹跟踪等。这些算法可以帮助工程师和研究人员评估机械臂运动和控制性能,优化其设计方案并改进控制策略。 总之,自由度机械臂Matlab 模拟可以帮助工程师和研究人员更好地理其设计和性能特点,进一步优化其设计和控制策略,使其达到更高的性能和灵活性。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值