klampt.model.subrobot module
Defines the SubRobotModel
class, which is RobotModel
-like
but only modifies selected degrees of freedom of the robot (e.g., an arm, a
leg).
Many, but not all, klampt
module functions accept SubRobotModel in
the place of RobotModel.
-
class klampt.model.subrobot.SubRobotModel(robot, links)[source]
Bases: object
A helper that lets you conveniently set/get quantities for a subset
of moving links on a RobotModel. This class has the same
API as RobotModel, but everything is re-indexed so that configurations
and link indices only modify the given subset of links. As a reult,
most methods applicable to a RobotModel can also be applied to
a SubRobotModel.
You provide the list of moving link indices or names in the constructor.
The methods tofull
and fromfull
convert objects to and from the
full robot.
- Parameters:
-
-
tofull(obj, reference=None)[source]
Converts the given index, link, configuration, velocity, or
trajectory of a sub robot to the corresponding object of the full
robot.
- Parameters:
obj – an integer index, configuration, velocity, matrix, list of
configurations, or Trajectory.
reference (list or array, optional) – describes the reference
object that this should fill in for the indices not in this
sub-robot. By default, uses the robot’s current configuration.
- Returns:
The corresponding object mapped to the full robot.
-
fromfull(object)[source]
Converts the given index, configuration, velocity, or trajectory of
a full robot to the corresponding object of the sub-robot.
- Parameters:
object – an integer index, configuration, velocity, matrix, list of
configurations, or Trajectory.
- Returns:
The corresponding object mapped to the sub-robot.
Note
For indices, if the index doesn’t belong to the sub-robot then None
is returned.
-
numLinks()[source]
- Return type:
int
-
link(index)[source]
- Return type:
SubRobotModelLink
-
numDrivers()[source]
- Return type:
int
-
driver(index)[source]
- Return type:
SubRobotModelDriver
-
getConfig()[source]
- Return type:
Sequence
[float
]
-
getVelocity()[source]
- Return type:
Sequence
[float
]
-
setConfig(q)[source]
- Return type:
None
-
setVelocity(q)[source]
- Return type:
None
-
getJointLimits()[source]
- Return type:
Tuple
[Sequence
[float
], Sequence
[float
]]
-
setJointLimits(qmin, qmax)[source]
- Return type:
None
-
getVelocityLimits()[source]
- Return type:
Sequence
[float
]
-
setVelocityLimits(vmax)[source]
- Return type:
None
-
getAccelerationLimits()[source]
- Return type:
Sequence
[float
]
-
setAccelerationLimits(amax)[source]
- Return type:
None
-
getTorqueLimits()[source]
- Return type:
Sequence
[float
]
-
setTorqueLimits(tmax)[source]
- Return type:
None
-
setDOFPosition(index, qi)[source]
- Return type:
None
-
getDOFPosition(index)[source]
- Return type:
float
-
getCom()[source]
-
getComJacobian()[source]
-
getLinearMomentum()[source]
- Return type:
Sequence
[float
]
-
getAngularMomentum()[source]
- Return type:
Sequence
[float
]
-
getKineticEnergy()[source]
- Return type:
float
-
getTotalInertia()[source]
-
getMassMatrix()[source]
-
getMassMatrixInv()[source]
-
getCoriolisForceMatrix()[source]
-
getCoriolisForces()[source]
-
getGravityForces(g)[source]
-
torquesFromAccel(ddq)[source]
-
accelFromTorques(t)[source]
-
interpolate(a, b, u)[source]
- Return type:
Sequence
[float
]
-
distance(a, b)[source]
- Return type:
float
-
interpolateDeriv(a, b)[source]
- Return type:
Sequence
[float
]
-
randomizeConfig(unboundedScale=1.0)[source]
- Return type:
None
-
configToDrivers(q)[source]
- Return type:
Sequence
[float
]
-
velocityToDrivers(dq)[source]
- Return type:
Sequence
[float
]
-
configFromDrivers(driverValues)[source]
- Return type:
Sequence
[float
]
-
velocityFromDrivers(driverVelocities)[source]
- Return type:
Sequence
[float
]
-
selfCollisionEnabled(link1, link2)[source]
-
enableSelfCollision(link1, link2, value=True)[source]
-
selfCollides()[source]
-
drawGL(keepAppearance=True)[source]
-
reduce()[source]
-
mount(link, subRobot, R, t)[source]
-
sensor(index)[source]
Returns the SensorModel corresponding to index. Note however that
you shouldn’t set the sensor’s “link” setting according to this
SubRobotModel.
- Return type:
SensorModel
- Parameters:
index (int or str)
-
class klampt.model.subrobot.SubRobotModelLink(link, robot)[source]
Bases: object
A helper that lets you treat links of a subrobot just like a normal
RobotModelLink. Correctly implements jacobians and indices with respect
to the sub-robot.
-
robot()[source]
-
getIndex()[source]
-
getParent()[source]
-
parent()[source]
-
setParent(p)[source]
-
getJacobian(p)[source]
-
getPositionJacobian(p)[source]
-
getOrientationJacobian()[source]
-
class klampt.model.subrobot.SubRobotModelDriver(driver, robot)[source]
Bases: object
A helper that lets you treat drivers of a subrobot just like a normal
RobotModelDriver.
-
robot()[source]
-
getAffectedLink()[source]
-
getAffectedLinks()[source]