Replies: 2 comments 1 reply
-
Well, ODE offers a Transmission joint. There have been attempts to create a corresponding node in webots, the alluring aspect of it is that it has backlash modeling embedded in it, meaning potentially it could significantly faster than I'm not saying there's currently a need to support all types of transmissions offered by ODE, but if memory serves right the "Chain-drive" one worked pretty well, and I can see it being useful when modeling something like a SCARA robot. I believe the groundwork of what you describe is already present in that joint. The other transmission modes were also tested, namely the "Intersecting-axes" mode in order to model angled bevels, but generally the difficulty with those was making it user friendly to model with it, rather than "problems" per-se, it wasn't very intuitive. |
Beta Was this translation helpful? Give feedback.
-
I believe this |
Beta Was this translation helpful? Give feedback.
-
Has anyone already investigated using friction between rotating cylinders to simulate gears and chain/belt? The idea is similar to the gears demo but instead of actually using collision between teeth, represent the gears by cylinders and have them overlaps to create a constant contact joint. This seems to address what I expect are the primary issues with colliding teeth: 1) the time required to detect collisions (cylinders can be collided much more quickly), and 2) the fact that if the driving gear spins too fast it can effectively skip teeth.
Here is a proof of concept of a 90-degree bevel:
friction_gears.zip
To do chain/belt, add an invisible large cylinder between the cylinders representing the two belt pulleys or chain sprockets.
To allow arbitrary (even out-of-plane) transmission of rotational motion between 2 points, put an appropriate bevel connection on each end and connect the bevels to an intermediate rotating rod.
To simulate backlash, use the existing
HingeJointWithBacklash
proto.Wrap the whole thing in a proto to simplify usage.
Ideally, the various cylinders used to achieve this effect would not only be invisible, they'd also only collide with each other. One way to achieve that would be with a physics plugin that does nothing for collisions where exactly one of the two geoms is one of the cylinders. I wonder whether the same effect could be achieved with appropriate
ContactProperties
and a special material for the cylinders.It might also be worth investigating using spheres instead of cylinders for faster collision detection and possibly simpler math.
Anyway, has anyone already pursued this? This would presumably also address @tlemarec's desires for something like the
JointLink
idea that was abandoned in #1365.Beta Was this translation helpful? Give feedback.
All reactions