That is a pity to hear. I would expect the URDF loader to be easy to use to create a btMultiBody. Can't student just use the URDF importer as-is? Why do students need to know how the URDF loader internals are working?Basroil wrote:Yes, I'm aware of the examples. However, I have had some complaints from graduate students complaining that those are difficult to understand in a short time. Mixing urdf, multibody, and inverse dynamics all in one may be a bit much to spring on people, especially if they aren't looking for perfect robot control and an all-in-one solution. I'm currently suggesting people try the old motor control demo, but that one again lacks a full explanation of how motors work.Erwin Coumans wrote:There are various examples in the Example Browser that allow motorized robots, loading the robot from a .urdf file, using btMultiBody (or btRigidBody+btTypedConstraint.
I was thinking something on the lines of a simple RRR or RRP (we can call them "backhoes" to match the forklift demo if calling it a "robot" is the issue) configuration to explain the relationship between max torque and desired velocity in standard (non-multibody) constraints, and likely how to have offsets (start at joint angle != 0). Not everyone needs purely torque based control after all, and in some cases it's actually a detriment to understanding the device ("smart servo" based toys/robots/etc especially, since they don't actually have torque input).
Furthermore, you don't need to use inverse dynamics computed torque control, the ImportURDF examples use simple velocity control (and/or position control using PID), using a LCP constraint on a btMultiBody. That should be superior to using maximal coordinates btRigidBody for robotics.
How about re-creating the MotorControl demo using btMultiBody + URDF, or btMultiBody programmatically?