200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > CoppeliaSim(原Vrep)中实现多关节机械臂的正运动学仿真【CoppeliaSim与matlab共享内存通信实现】

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

时间:2021-11-27 09:17:05

相关推荐

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

matlab通信实现

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

传送门

【CoppeliaSim】(原V-rep)模型文件导入及动力学建模

【CoppeliaSim】(原Vrep)与matlab建立通信

本篇文章用vrep的matlab接口实现了在CoppeliaSim中和下面文章同样的仿真功能

CoppeliaSim(原Vrep)中实现多关节机械臂的正运动学仿真【CoppeliaSim内嵌脚本lua语言实现】

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

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 < 2if mod(count,2) == 1joint_pos = jtraj(qn,qz,t);elsejoint_pos = jtraj(qz,qn,t);endfor k = 1:size(joint_pos,1)for i = 1:4 vrep.simxSetJointTargetPosition(clientID,jjjjJointHandle(i),joint_pos(k,i),vrep.simx_opmode_blocking);% //用于没有开始仿真时候设置关节角度或者是被动关节endvrep.simxSynchronousTrigger(clientID); % //同步模式下触发店的位置很重要endcount = count + 1;endvrep.simxStopSimulation(clientID,vrep.simx_opmode_oneshot_wait); % //停止仿真vrep.simxFinish(clientID);vrep.delete(); % //call the destructor!

3)同时打开RRRR_Sim_Kinematic_Matlab.tttRRRR_JointPositionControl.m

RUN

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。