Openwheel's goal is to provide open source (the source code is available AND editable with open source software) wheels, tyres and tank tracks. Those are entirely 3D printable, including the tyres/tracks. The wheels are of parametric conception, meaning that you change a few variables, and generate a version adapted to your project.
Those wheels can be set to have a flat external surface or to have some kind of cogs. With the cogs, it can be used to generate interlocking gearings, but also tank tracks.
The wheels are deeply configurable : you can set the radius, thickness, number of fixation holes around the central axle, the radius of those holes, the depth of countersunk holes for the screws head, all those parameters are also settable for the central axle, you can have lips on top and bottom of the wheel to center the track, set the amount of arms, etc.
The tracks are meant to be 3D printable out of ninjaflex, and are also highly configurable.
Tyres are coming next.
a beam where everything is secured. This beam can be screwed on a chassis or integrated directly a in R.Hasika or R.Ian.
a motor support, where the continuous servo is secured, and it then screws on the beam. Can be changed to adapt to other motors.
two "wheels" : those are larger gearings with a lip on the side to keep the tyres in place
two ninjaflex tyres, that have cogs matching those of the wheels, but on the inside, and external configurable sculptures for a better grip;
one gearing behind each wheel (so 2 in total). Can be used to drive the wheels (here, only one wheel is driven);
one cog that screws on the servo horn;
2 axles made with a large steel screw, with only the end tapped, a large smooth section (this is where the wheels rest) and a large cylindric head (can be seen in the center of the wheels)
Other than that, the wheels and the cogs are secured together using 4 m3 screws, the wheels axle are just screwed into the beam with the wheels in plae, and the motor is secured to the beam with 2 more m3 screws.
On this picture, the wheel assembly (without the tyre) can be seen from behind.
In order to be usable, we must be able to create a complete drive train using openwheels.
Indeed, the wheels placement must be precisely done depending on the track lenght if using tracks, and in all case, the drive gear mus be positionned precisely according to the driven wheel.
I don't want to leave the user to lots trigonometric calculation and fiddling to have a perfect adjustment, so i provide a way to design a drive train that can be integrated in a robot :
Again, this was designed in OpenScad, but i made a render in blender for a nicer visual.
On this picture, the 2 larger "gearings" are the wheels (the cogs are there to grip the track or the tyre), and a smaller gearing is directly behind the wheel. It is in direct contact with an identical gearing that is connected to the motor shaft.
The wheels and their associated drive gears are secured together with 4 screws, and secured to the chassis with a steel axle. The axle has a threaded end to screw it on the chassis, and a large, cylindrical head to lock the wheel in place along the axis, without keeping it from rotating.
That way, all the loads are applied on the wheels and the steel axle rather than on the motor shaft. It thus provide a far superior strength in this part (a plain 5mm steel rod for the wheel axle versus a 2.5mm D shaft for the motor in the best case, or a plastic servo for the most fragile)
It also makes it much easier to change the motors, since in that case, you have 2 screw to remove to unsecure the motor bracket, then installing the gear on the new motor, putting the new motor in an adapted bracket, then put everything in place with 2 screws!
It's not only to replace a broken motor, but also to change for a different model in an easier way.
In order to be able to make tracks, i must be able to avoid slipping. Iv the track slips on the wheel, then i'ts wasted power. In order to solve that, i decided to add cogs to the wheels. Then it got me thinking : what about using the same system as gearings?
So let's see how our wheels and cogs are made.
First of all, we define the central hub, with a hole for the central axle, and holes for a user definable number of screws hole around it. Each can be countersunk or not.
When we have the central hub, we decide the number of arms connecting the central hub to the exterior part of the wheel. The lenght of the arm is not set, but calculated : we set the user definable overall wheel radius, the rim thickness, and thus other variables are calculated.
However, you don't get to set the radius directly, but rather the number of cogs wanted on the wheel. Thus, the radius is calculated as a function of cogs sizes.
On the render above, you can see a wheel with the lip, 8 arms, counterunk holes, and 27 cogs (thus causing the wheel to be slightly over 20mm radius).
The exact radius of the wheel is printed in the openscad output box.
This makes it so that unless you change the cogs size, all wheels are compatible and can be used as cogs. On normal wheels, a lip is generally added. Not thick, but just to keep the track or tyre from slipping on the sides. On a cog, you simply set the lip thickness to 0.
Now, we can use a cog to turn the previous wheel. However, when a track or a tyre is installed, the cogs are not accessible anymore. The solution here is to use a cog secured at the back of the wheel, using a chosen amount of screws, and a second cog secured to the motor axle.
On the picture above, you can see a 22 cogs gearing on a 27 cogs wheel, using the same axle. On the picture below, you can see how it is secured with 4 screws. Note that all screws are countersunk, and thus the side of the wheel has nothing sticking out to block the robot on an obstacle.
For this assembly, i simply used the same hub for both the wheel and the cog, but different thicknesses.
The next step is to print another cog of the same size for a 1:1 ratio, but whose hub will match the motor fixation. For my first tests i'll simply use a continuous rotation servo, so my motor gearing matches the horn holes pattern.
Then in order to have the gearing functional, we have to have the motor axle properly placed so that both gearing interlocks well. This is also taken care of by the library, but we'll come back to this in a later post.
In the next post, we'll stay focused on the wheels for now and talk about the tyres that goes along with it.
For this robot, i needed to be able to print wheels, and thus, i designed in openscad a parametric set of wheels, and also tyres meant for 3D printing in ninjaflex/semiflex or comparable materials.
It did work, although it was tied to R.Ian, and not as configurable as one would want without diving deep in the code.
Second problem was that R.Ian is driven by cheap continuous servo (it needs to be both simple AND cheap), and the axle is fragile. The wheels could get dislodged, and one had to not apply too much pressure on the wheels.
Furthermore, R.Ian have been used for teaching, and the 2 big wheels and third omni-wheel design wasn't very stylish, and the kids preferred my other robot, R.Hasika, with tank tracks. I thus wanted to have tank tracks on R.Ian, and 3D print those entirely.
I thus began the stand-alone project OpenWheel, that would include not only wheels, but also tyres, tank tracks, and gearings.
Indeed, to relieve pressure on the servo axle, i decided to have wheels on a steel axle, and have a gearing drive this wheel, so that the weight and forces would apply to the steel axle.
In order to do that, i would need to be able to generate gearings, and we'll discuss that in the next update :)