概述
目录
- 一、前言
- 二、差速小车的python联动
- 三、小车的人机界面控制
- 实时监控
- 手操控制
- 四、后续工作
一、前言
本篇是《python机器人编程——差速机器人小车的控制,控制模型、轨迹跟踪,轨迹规划、自动泊车》系列的姊妹篇。来通过python去实现vrep下仿真小车的联动控制,为该篇提出的无人控制方法提供一个验证的环境,从而可以完善相应的控制方式,进一步深入探索。要实现的预期效果如下:
二、差速小车的python联动
这里,我们选择一个vrep里面已有的差速小车模型作为控制对象,它在里面的名字叫做先锋P3(“Pioneer_p3dx”),把它拖进来后,基本的脚本已经编好了。只要加入远程API相关的函数,和与python通信的规约就可以了,这块内容,跟之前机械臂的联动是一个原理,已经在《python机器人编程——VREP数字孪生四轴机械臂联合仿真》中进行了详细的描述。这里不再赘述。
控制小车我们还是通过类似G代码的方式实现python侧和vrep侧的信息传输。例如:通过发送字符串“G80 G0 L* R** r”的样式,L后面代表下发的左轮速度,R为后轮速度*。停止等指令方式类似,python如下:
def send_LR(clientID,J1,J2):
"""
控制指令
"""
speeds='G80 G0 L'+str(J1)+' R'+str(J2)+' r'
sim.simxWriteStringStream(clientID,"fromClient",str.encode(speeds),sim.simx_opmode_oneshot)
return True
def stop_car(clientID):
"""
停止指令
"""
sendangles='G80 S0 r'
sim.simxWriteStringStream(clientID,"fromClient",str.encode(sendangles),sim.simx_opmode_oneshot)
def moveon_car(clientID):
"""
继续移动指令
"""
sendangles='G80 C0 r'
sim.simxWriteStringStream(clientID,"fromClient",str.encode(sendangles),sim.simx_opmode_oneshot)
另外,需要在vrep侧对所接受的指令进行解析,控制指令、停止指令、继续指令等,只要做一下稍微的lau代码就可以:
if string.sub(dat,1,6)=='G80 G0' then
--car verocity set code G90 G1 L2 R2
print('receive :',dat)
local order = split(dat,' ')
local lv=tonumber(string.sub(order[3],2,string.len(order[3])))
local rv=tonumber(string.sub(order[4],2,string.len(order[4])))
print('receive G90 G0:',lv,rv)
bvLeft=vLeft
bvRight=vRight
vLeft=lv
vRight=rv
dat=''
end
if string.sub(dat,1,6)=='G80 G1' then
--car verocity ask code G90 G1 L2 R2
print('receive G80 G1:')
sim.setStringSignal('toClient','G80 G1 L'..tostring(vLeft)..' R'..tostring(vRight)..' r ')
print('toClient','G80 G1 L'..tostring(vLeft)..' R'..tostring(vRight)..' r ')
dat=''
end
if string.sub(dat,1,6)=='G80 S0' then
--car Stop
print('receive G80 S0:')
sim.setStringSignal('toClient','G80 S0')
if vLeft-vRight~=0 and vLeft+vRight~=0 then
bvLeft=vLeft
bvRight=vRight
end
vLeft=0
vRight=0
print('send G80 S0:')
dat=''
end
if string.sub(dat,1,6)=='G80 C0' then
--car continue move
print('receive G80 C0:')
sim.setStringSignal('toClient','G80 C0')
vLeft=bvLeft
vRight=bvRight
print('send G80 C1:')
dat=''
end
三、小车的人机界面控制
实时监控
这篇不进行无人驾驶控制,实现的是基础的人机界面控制,差速小车就只有两个控制量,左轮的速度和右轮的速度,只要向小车定时下发左右轮的速度就可以控制小车了,为了能够监视小车的轨迹,将来用于轨迹自动跟踪等,我加入了轨迹的实时绘制,另外对小车的状态轮速和坐标进行了实时监控,如下效果:
手操控制
控制就通过不断调整两个轮子的速度来,并进行实时派发,起到远程控制小车的作用。
这里,增加了停止和继续的指令,用于及时停止小车,不至于开出边界掉落,后面还要根据之前对小车分析的集中状态,再完善和丰富一下控制指令:
四、后续工作
以上只是实现了小车的简单控制,为实现无人驾驶功能,还需要对小车的物理结构和它的运动模型进行适配,并且要通过多次试验把控制模型的参数给确定好,这个工作我们在《python机器人编程——差速机器人小车的控制,控制模型、轨迹跟踪,轨迹规划、自动泊车》系列进行继续深入。
本篇源码,完善后发到网上。
最后
以上就是天真草莓为你收集整理的python机器人编程——差速AGV机器人VREP仿真python联动控制实现一、前言二、差速小车的python联动三、小车的人机界面控制四、后续工作的全部内容,希望文章能够帮你解决python机器人编程——差速AGV机器人VREP仿真python联动控制实现一、前言二、差速小车的python联动三、小车的人机界面控制四、后续工作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复