pybullet电机控制总结

Posted bug404

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pybullet电机控制总结相关的知识,希望对你有一定的参考价值。


pybullet电机控制总结_pybullet

恒定速度

要让电机保持恒速运动,需要指定施加在电机的最大外力。如

maxForce = 500
p.setJointMotorControl2(bodyUniqueId=objUid,
jointIndex=0,
controlMode=p.VELOCITY_CONTROL,
targetVelocity=targetVel,
force=maxForce)

一段完整的代码

import pybullet as p
import time
import pybullet_data

p.connect(p.GUI)
p.setAdditionalSearchPath(pybullet_data.getDataPath())
cartpole = p.loadURDF("cartpole.urdf")
p.setRealTimeSimulation(1)

maxForce=50000
p.setJointMotorControl2(cartpole,1,p.VELOCITY_CONTROL,targetVelocity=300,force=maxForce)
while (1):
p.setGravity(0, 0, -10)
js = p.getJointState(cartpole, 1)
print("js=",js)

# print("position=", js[0], "velocity=", js[1])
time.sleep(0.5)

可以通过调整maxForce, targetVelocity, time.sleep等的参数来观察不同的效果,注意js输出的速度信息。参数中的targetVelocity并不是机构一定会达到的速度,只有当施加给电机的力足够时,才能达到。

位置控制

位置控制是最简单的控制方式,直接贴上一个例子。

import pybullet as p
import time
import pybullet_data

p.connect(p.GUI)
p.setAdditionalSearchPath(pybullet_data.getDataPath())
cartpole = p.loadURDF("cartpole.urdf")
p.setRealTimeSimulation(1)
p.setGravity(0,0,-10)
nj=p.getNumJoints(cartpole)
print("numJoints=",nj)
ji=p.getJointInfo(cartpole,0)
print("joint 1 info=",ji)
ji_1=p.getJointInfo(cartpole,1)
print("joint 2 info=",ji_1)
js=p.getJointState(cartpole,0)
print("joint 1 state=",js)
js_1=p.getJointState(cartpole,1)
print("joint 2 state=",js_1)

p.setJointMotorControl2(cartpole,1,p.POSITION_CONTROL,targetPosition=6.28,force=80)

print(- *40)

nj=p.getNumJoints(cartpole)
print("numJoints=",nj)
ji=p.getJointInfo(cartpole,0)
print("joint 1 info=",ji)
ji_1=p.getJointInfo(cartpole,1)
print("joint 2 info=",ji_1)
js=p.getJointState(cartpole,0)
print("joint 1 state=",js)
js_1=p.getJointState(cartpole,1)
print("joint 2 state=",js_1)
while(1):
p.setGravity(0,0,-10)
js=p.getJointState(cartpole,1)
print(js)
time.sleep(0.01)

通过调整​​p.setJointMotorControl2(cartpole,1,p.POSITION_CONTROL,targetPosition=6.28,force=80)​​ 里面的targetPosition和force参数可以实现不同的效果,具体的可以调参试一下。很有趣。


以上是关于pybullet电机控制总结的主要内容,如果未能解决你的问题,请参考以下文章

[python]pybullet安装后测试代码

ERROR: Failed building wheel for pybullet 解决方案

ERROR: Failed building wheel for pybullet 解决方案

永磁同步电机的直接转矩控制一一一DTC仿真模型的搭建

永磁同步电机的直接转矩控制一一一基于滑模转速控制器的DTC

步进电机及丝杆的认知