Teravus Ovares wrote: > Looking at the LSL Vehicle API, it seems clear that there is at least > an angular motor and a linear motor involved. There may be two > angular motors, one for the angular movement and one for the vertical > attractor(which may just be a jacobian constraint). In ODE, angular > motors are implemented as springs. Sometimes this can cause > instability and vibration. The truth is, using ODE's angular motor > may or may not be the best solution. I had attempted to implement the vertical attractor, and was only partly successful.
My attempt which is now a little stale can be found here: http://code.google.com/p/flotsam/downloads/detail?name=vehicle.3.patch Some of the things that I found: * dAMotorEuler is not appropriate. I could not find a any set of parameters for the aMotor that would even begin to remotely approximate the behavior for a vertical attractor, I had to instead turn to using dAMotorUser. dAMotorUser requires that at each step, you specify at what angle(s) the joint is at, rather then having the ODE attempt to calculate it automatically. I also ran into gimbal lock issues with aMotorEuler, since the vertical attractor needs to work with 2 or 3 axises with a full 360 deg range of motion. * The closest approximation I could get was to essentially set the stops at near 0 degs of movement, and then adjust CFM, StopCFM and ERP values to control how much the aMotor would attempt to correct the angles beyond the stops. * FudgeFactor and Bounce had little to no visible effect during my experiments * FMax appeared not to affect CFM/ERP behavior, and only seemed to be used when you use Vel The best results I could get adjusting CFM/ERP values had the following results: + If you manually rotated a physical object out of vertical using the editor and then "let go" -- it would more or less smoothly return to vertical, although sometimes it would move past vertical and then oscillate back and forth, usually taking minutes to come to a rest, sometimes never coming to a rest. + If I set an object to float (either via buoyancy or the HoverHeight PID) and I "bumped" the object with my avatar to impart rotation, it would nearly always wildly oscillate, usually obtain vertical on one or two axis, and then rarely coming to a rest on the third. Occasionally it would rotate violently, launching my avatar either 1000's of meters vertically, under ground, or out of the region. I was tempted to push what I had to the main SVN, but was unhappy with the results so I never got around to it -- then got distracted by Sun, Wind, Groups, etc... -- Michael Cortez _______________________________________________ Opensim-dev mailing list Opensim-dev@lists.berlios.de https://lists.berlios.de/mailman/listinfo/opensim-dev