Joint (acting as position control motor) only works at fast speeds

Typically: "How do I... ", "How can I... " questions
Post Reply
RobAtLab
Posts: 92
Joined: 10 Jan 2018, 17:49

Joint (acting as position control motor) only works at fast speeds

Post by RobAtLab »

I've got a robot weighing about 13kg in my simulation* using the bullet 2.78 physics engine and V-REP 3.5 latest version, which has a child object (amongst other child objects) of a joint with motor enabled and control loo-p enabled, I set this joint to have a max torque of around 8e4 Nm to give plenty more torque than I should ever need. This joint has a respondable dynamic convex compound shape (1.5kg or so )as a child, that shape has another joint as a child, the child of this joint is a shape (1 kg ish) (again complex compund), which has a dummy as it's child. As far as I know one can't just have a dummy childed to a joint, a shape must go between them I think, hence why the dummy isn't connected sstraight to the second joint. Overall these joints and shapes act as a bit like a SMORES http://www.modlabupenn.org/2012/10/19/smores/ or symbrion https://i.ytimg.com/vi/aZYvNJNWE5M/maxresdefault.jpg robot unit. The dummy is supposed to connect to another dummy (on a dummy which is the child of the main body of another robot, sort of like the back port on a SMORES, see picture) on a second robot and then be able to lift that other robot up and over, the second joint lets it be turned around once lifted.

But when I try to do this with a slow and realistic rotation speed (about 6 degrees per second) for the first joint there is no lifting action, as if somehow the force isn't being transmitted, depsite ample torque being provided by the hinge joint. At 30 deg/sec it also fails, but at 90 degrees per second lifting seems to happen, except this is unrealistic for the hardware I want to simulate. How can I get this system to work properly? I've been trying to reduce the mass of the bodies of the robot units as much as possible, while making the mass of the two shapes in the joint chain as high as posible to enable them to transmit force properly, but I can't seem to manage to find any sweetspots where this will work. I can't make some robots lighter weight than others because any unit has to be able to lift any other (that is with suitable counter balancing in the form of further units docked to the back of any module which is lifting it's hinge), and even if I can get one unit to lift then I still face the problem of scaling it up for a robot to lift a chain of several others docked to it's front. I'm looking towards things a bit like the formation shown in the attached image http://www.eggshell-robotics.com/pictur ... rch_eu.png . I don't need perfectly true physics, as evidenced by my altering masses until such a point that things work, but do need to be able to get robots to dock and undock and lift each other as desired.

Thanks



*real things are under a kg but V-REP doesn't handle small masses well

coppelia
Site Admin
Posts: 10336
Joined: 14 Dec 2012, 00:25

Re: Joint (acting as position control motor) only works at fast speeds

Post by coppelia »

Hello,

those special behaviours can always happen, and are directly dependent on the used physics engines and/or how the physics engines are implemented as a V-REP plugin. Did you try to adjust the Bullet engine-specific joint properties? Also, you could try to write your own joint position controllers via a joint control callback function. Additionally, it can also help to adjust the various inertias by increasing/decreasing them (or balancing them out)

But the best would probably be to use a different physics engine, namely the Vortex engine which handles all kinds of problematic situations most of the time better than the other engines.

Cheers

RobAtLab
Posts: 92
Joined: 10 Jan 2018, 17:49

Re: Joint (acting as position control motor) only works at fast speeds

Post by RobAtLab »

Sorry, I don't think I quite understand your answer, I'm pretty new to V-REP. My issue seems to be something affecting any situation in which I try to have a series of modules connected and then want a joint in one of them, or an external force acting on one of them, to transmit forces through to the rest of the modular "organism". Sometimes things work ok when the joint move fast, but mostly I can't get things to act properly even though the joints all have more than enough torque for their uses. How could rewriting the joint callback function help me, could it let me make joints move as commanded regardless of the forces present?

I'm unsure as to what "special behaviours" are, I haven't seen the term before. I'm not sure where there are bullet specific properties for joints, all I can find is the properties of a joint or general properties of the bullet simulator. Is there any way of adjusting inertias short of trial and error? I'm not sure whether I'll be able to get vortex to run, if I can would it typically fix this sort of thing?

coppelia
Site Admin
Posts: 10336
Joined: 14 Dec 2012, 00:25

Re: Joint (acting as position control motor) only works at fast speeds

Post by coppelia »

Did you try to switch to the ODE engine, or the Newton engine to see if that makes a difference? The Vortex engine will probably give you best results.
Each engine operates in it own specific manner with its own specific algorithms. Some use lots of approximations, others use different assumptions and algorithms. For that reason also each engine will need its own specific parameters and settings.

Using an abstraction layer to handle all engines the same way seems at first as a good idea, but does not work practically (or only in some very trivial situations).

Cheers

RobAtLab
Posts: 92
Joined: 10 Jan 2018, 17:49

Re: Joint (acting as position control motor) only works at fast speeds

Post by RobAtLab »

Neither ODE, nor newton, nor other versions of the Bullet than 2.78 seemed to work very weel. I've yet to try downloading and installling vortex. But I've been playing aound with moments of inertia, I realise that earlier I'd only been fiddling with masses, and I seem to be having some success.

Thanks you for your tips. I'll post again if versions of the model with adjusted inertias keep failing to move properly.

Post Reply