例如机器人在lua中通过socket接收到一段轨迹点位并保存数组,则lua和jbi可以通过交互,在jbi中使用lua中的点位数组
相关lua代码如下:
sleep(0.3) Pose_arr = {{400,12.543,25.9139,2.30554,-0.00000,-3.14159}, {400,25.9819,36.2783,2.48465,-0.00000,-3.14159}, {400,40.0492,43.015,2.69498,-0.00000,-3.14159}, {400,55.475,46.1574,2.94063,-0.00000,-3.14159}, {400,72.1395,45.5849,-3.10724,-0.00000,3.14159}, {400,92.1442,41.2421,-2.92782,-0.00000,3.14159}, {400,131.193,28.7256,-2.83139,-0.00000,3.14159}, {400,158.247,21.5695,-2.88300,-0.00000,3.14159}, {400,179.531,18.4946,-2.99811,-0.00000,3.14159}, {400,200,18.3181,-3.13297,-0.00000,3.14159}, {400,220.469,18.4946,3.13297,-0.00000,-3.14159}, {400,241.753,21.5695,2.99811,-0.00000,-3.14159}, {400,268.807,28.7256,2.88300,-0.00000,-3.14159}, {400,307.856,41.2421,2.83139,-0.00000,-3.14159}, {400,327.86,45.5849,2.92782,-0.00000,-3.14159}, {400,344.525,46.1574,3.10724,-0.00000,-3.14159}, {400,359.951,43.015,-2.94063,-0.00000,3.14159}, {400,374.018,36.2783,-2.69498,-0.00000,3.14159}, {400,387.457,25.9139,-2.48465,-0.00000,3.14159}, {400,400,12.0313,-2.30554,-0.00000,3.14159}} -- 路径轨迹一共20个笛卡尔点 function WaitUntil(var, value) -- 等待满足条件 while get_global_variable(var) ~= value do sleep(0.005) end end function PoseMove() -- 将点位数组Pose_arr中所有点位赋值给V002 for i = 1, #Pose_arr, 1 do WaitUntil('B003',1) -- 等待前台将B003置1 set_global_variable('V002',Pose_arr[i][1],Pose_arr[i][2],Pose_arr[i][3],Pose_arr[i][4],Pose_arr[i][5],Pose_arr[i][6]) set_global_variable('B003',0) -- 将B003置0,JBI等待B003=0往下走 end end set_global_variable('B005',0) while true do B005 = get_global_variable('B005') if B005 ==1 then set_global_variable('B005',2) PoseMove() set_global_variable('B005',0) end sleep(0.1) end
前台JBI代码如下:
NOP SETPOSE V000 0,0,100,0.0,0.0,0.0 SETTOOLFRAME TOOL#(1) V000 SETPOSE V000 -70,-140,130,0.0,0.0,0.0 SETUSERFRAME USER #(1) V000 MOVEJ V=100.0DEG/S CR=0.0MM ACC=20 DEC=20 ConstP=[-54.169,-68.726,81.686,-61.057,115.744,25.829] SET B003 0 TIMER T=0.5 S SET B005 1 WAIT B005=2 LABEL *start SET B003 1 WAIT B003=0 MOVEL V=100.0MM/S CR=20.0MM ACC=10 DEC=10 TOOL#(1) USER#(1) V002 // 使用CR达到圆滑效果 JUMP *start IF B005=2 END