Best way to create "360" axle wheels?

Hello there. I will try to be as quick but as detailed as possible.


Assembly Structure

Below is an image of the overall assembly:

The base of the assembly is anchored and allows for both horizontal and vertical movement utilizing two hinges with limits.

The two platform parts are connected via a PrismaticConstraint which allows them to retract into each other and extend from each other. These also have limits enabled.

Lastly, the wheel base is welded to the left platform and the wheels are held together by two separate HingeConstraints set as motors on the axle.


What I Want

What I want to do is make it so the wheels can, of course, go forwards and backwards (which I’ve already done utilizing the HingeConstraints), but also retain the ability to spin the whole wheel base to allow for turning. This is the movement that I want:

Of course, the movement is restricted by the overall assembly, as the two platforms can extend so much and the angle on the base is also limited, so it can’t go over 45 degrees on either side. Other than that though, the wheels move forward and backwards, while they also have the ability to rotate. The rest of the assembly will naturally follow based on the wheel’s position.

What I’ve Tried

I have tried a bunch of different approaches. My first one was to use a single axle for rotation using a CylindricalConstraint and rotating the attachment to rotate the wheels. This was the only one that worked fairly well.

Image

My next attempt was to try to use a HingeConstraint for the wheel spin instead of the attachment, but this one did not work very well as the forces kept cancelling and interrupting each other. Overall, it didn’t work that well for me.

Image

The attempt right after that one was basically the same, but I decided to separate the axle in half and drive each half separately. As you can imagine, the results were basically the same, with the added negative of an unbalanced and unaligned axle.

Image


(There are two attachments even though it looks like one, I just wanted to keep both centered)

My second to final attempt was mostly a correction of the previous one. I decided to simply use HingeConstraints attached to the axle for each wheel (single axle, two HingeConstraints, one for each wheel). This, again, had conflicting physics.

Image

Finally, I decided to completely get rid of constraints for the wheel steering and instead use a Motor6D. This, of course, turns the wheels nicely, but it causes issues when going at slow speeds, which is what this assembly will be moving with. Below is a GIF of the issue:

GIF

https://i.imgur.com/Z30X4ln.gif


Conclusion

To conclude, I wanted to ask you all, what is the best way to implement this? Would it be better to use attachments / Motor6Ds for this? Would it be better to use HingeConstraints? Would it maybe be better to completely scrap the turning as a mechanism, add a HingeConstraint, and handle the turn by using the individual wheels? What do you think? If you have any questions, please let me know. Thank you for your time and help, they are truly appreciated.

1 Like