我正在尝试使用以下代码为 acrobot 创建一个简单的重力补偿控制器:
from pydrake.all import *
file_name = "acrobot.sdf" # from drake/multibody/benchmarks/acrobot/acrobot.sdf
plant = MultibodyPlant()
parser = Parser(plant=plant)
robot = parser.AddModelFromFile(file_name)
plant.AddForceElement(UniformGravityFieldElement([0.0, 0.0, -9.81]))
plant.Finalize()
nq = plant.num_positions()
nv = plant.num_velocities()
nx = nq + nv
nu = plant.num_actuators()
assert (nx, nu) == (4, 1)
plant_ctx = plant.CreateDefaultContext()
x_plant = plant.GetMutablePositionsAndVelocities(plant_ctx)
x_plant[:] = [0.1, 0.2,
0.3, 0.4]
tau_g = plant.CalcGravityGeneralizedForces(plant_ctx)
print tau_g
不幸的是,tau_g始终为零。
似乎重力矢量不适用于机器人。如何解决这个问题?
郎朗坤
繁华开满天机
随时随地看视频慕课网APP
相关分类