CoppeliaSim(原Vrep)中实现多关节机械臂的正运动学仿真【CoppeliaSim与matlab共享内存通信实现】

  • matlab通信实现

本章在[动力学建模]和[vrep与matlab建立通信]完成的前提下进行

传送门
【CoppeliaSim】(原V-rep)模型文件导入及动力学建模
【CoppeliaSim】(原Vrep)与matlab建立通信
本篇文章用vrep的matlab接口实现了在CoppeliaSim中和下面文章同样的仿真功能
CoppeliaSim(原Vrep)中实现多关节机械臂的正运动学仿真【CoppeliaSim内嵌脚本lua语言实现】

1)在matlab工作路径下新建脚本

CoppeliaSim(原Vrep)中实现多关节机械臂的正运动学仿真【CoppeliaSim与matlab共享内存通信实现】_第1张图片

2)键入代码

%%
% //配合RRRR_Sim_Kinematic_Matlab.ttt文件使用,主要用于演示如何采用matlab控制机械臂

clear;
clc;

% //进行初始化,获取句柄
vrep = remApi('remoteApi'); % //引入vrep的matlab接口(remoteApiProto.m)
vrep.simxFinish(-1); % //关闭所有打开的连接
clientID = vrep.simxStart('127.0.0.1',19997,true,true,5000,5); % //仿真连接入口

jjjjJointHandle = zeros(1,4);
for i = 1:4
    [~,jjjjJointHandle(i)] = vrep.simxGetObjectHandle(clientID,['RRRR_J' num2str(i)],vrep.simx_opmode_blocking);
end
[res,tar_handle] = %vrep.simxGetObjectHandle(clientID,'4j_Tar',vrep.simx_opmode_blocking);
vrep.simxSynchronous(clientID,true); % //是否要开启同步 不同步的话可能会失真
vrep.simxStartSimulation(clientID,vrep.simx_opmode_oneshot); % //以oneshot模式启动仿真

%%
qz = [0 0 0 0]; % //关节空间初始姿态
qn = [pi/3 pi/6 pi/6 pi/6]; % //关节空间到达姿态
count = 0;
t = 0:0.01:1; % //可以尝试将vrep的时间步长设置为10ms,然后这里的步长改为0.01,再看下效果
while count < 2
    if mod(count,2) == 1
        joint_pos = jtraj(qn,qz,t);
    else
        joint_pos = jtraj(qz,qn,t);
    end
    for k = 1:size(joint_pos,1)
        for i = 1:4 
            vrep.simxSetJointTargetPosition(clientID,jjjjJointHandle(i),joint_pos(k,i),vrep.simx_opmode_blocking);
            % //用于没有开始仿真时候设置关节角度或者是被动关节

        end
        vrep.simxSynchronousTrigger(clientID); % //同步模式下触发店的位置很重要
    end
    count = count + 1;
end

vrep.simxStopSimulation(clientID,vrep.simx_opmode_oneshot_wait); % //停止仿真
vrep.simxFinish(clientID);
vrep.delete(); % //call the destructor!

3)同时打开RRRR_Sim_Kinematic_Matlab.tttRRRR_JointPositionControl.m

RUN

你可能感兴趣的:(Vrep仿真,机器人学,开发语言,vrep仿真,matlab联合仿真)