赞
踩
以下是建立六自由度机器人三维动力学仿真模型的示例 MATLAB 程序,使用 Matlab SimMechanics(新版为 Multibody)工具包,完成关节空间轨迹跟踪任务的独立 PD 控制和重力补偿 PD 控制。
% 建立机器人模型 robot = robotics.RigidBodyTree;
% 加载机器人模型文件 body1 = robotics.RigidBody('body1'); jnt1 = robotics.Joint('jnt1', 'revolute'); setFixedTransform(jnt1, trvec2tform([0 0 0])); jnt1.JointAxis = [0 0 1]; body1.Joint = jnt1; addBody(robot, body1, robot.BaseName);
% 建立其他关节和链接的方法与上面类似
% 设置机器人初始位置和姿态 homeConfig = homeConfiguration(robot);
% 设置控制器参数 kp = [10 10 10 10 10 10]; kd = [1 1 1 1 1 1];
% 设置目标轨迹 trajectory = [0 0 0 0 0 0; 1 1 1 1 1 1];
% 使用独立 PD 控制器进行轨迹跟踪 for i = 1:size(trajectory, 1) q = homeConfig; q(1:6) = trajectory(i,:); [v, qd] = robot.vellipse(q, qd); tau = kp .* (q - qd) + kd .* (qd - v); robot.control(tau); end
% 使用重力补偿 PD 控制器进行轨迹跟踪 for i = 1:size(trajectory, 1) q = homeConfig; q(1:6) = trajectory(i,:); tauG = robot.gravload(q); [v, qd] = robot.vellipse(q, qd); tau = kp .* (q - qd) + kd .* (qd - v) + tauG; robot.control(tau); end
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。