Hello there Benefactors.
It’s time for me to tell you all about what I’ve been working on in February. Mostly my touch-robot concept, and T-wist mk4.
This last month I’ve been wanting to get ahead of myself on the OSR2/SR6 stuff and get my big releases back to near the beginning of the month. That’s meant I had to release my SR6 bits quickly. After that I’ve gone from concept to finished design with T-wist mk4 in about 2 weeks. As you’ll see that’s involved a lot of design work, and a lot of learning along the way.
I did have some time at the beginning of the month, however, to make some significant progress with the touch robot technology. So let’s start with that.
Robo-touch
Robo-touch is an awful name, but I’m going to use it until I think of a better one. The idea is simple enough: I want to build a robot arm that can push with a pre-determined amount of pressure. As always the challenge is to make it simple, inexpensive and easy to build.
Last month I showed you the force sensitive resistor that I was testing. This month I took the force sensor and I put it into a 3D printed mount so that the force was being applied to the resistor under controlled circumstances. The mount is essentially a set of callipers that squeeze the sensor pad when an axial force is applied.
What I found early on, when I was using a broad contact area, was that my “0-500g” sensor was only detecting loads between 500g and 2kg. According to my kitchen scales at least! I tried again with a modified mount that would pinch the sensor with a much smaller contact area. This would register forces between about 200g and 500g, which was much better. My third design of mount used a lever arm to multiply the force being applied to the sensor. With this I could get the sensor to register forces in the range of about 50g to 200g.
With a functional sensor the next step was to write some code for the Arduino to introduce a feedback system. Essentially the robot works by moving the servo forward until it encounters a force. Once it encounters a force the servo position is adjusted so as to try to maintain a pre-defined amount of force. If the force is too low it moves forward; if the force is too high it backs off. What I was able to prove very successfully is that it’s absolutely possible to get the desired pressure touch effect from a $2 force sensor and a 9g micro servo.
If you’ve been following on discord you will have seen the short video clips. If you haven’t seen them I’ve put them on YouTube here: https://www.youtube.com/watch?v=Fux2iMxdSJA
What am I working toward? Well, I want to build a robot that can push with a small, controllable amount of force whilst tracing 2D patterns on an uneven surface. Patterns like back and forth movements, or little circles. All controlled by T-Code of course, so game controllable and scriptable.
I can’t imagine what the application for such a machine might be… ;)
Hopefully next month I can throw together a new machine that introduces the multi-axis aspect to my concept. Three degrees of freedom, so it will need three servos at least. I’m also considering ways that I can ditch the servos and use some other kind of motors instead.
SR6 Shields
The SR6 shields were released earlier this month so you have probably seen them already. The idea is to make the SR6 customisable, so I also released a STEP file of a blank shield. The immediate need I was addressing was the need to provide a cooling fan for the SR6 case.
I like the shield concept, especially after the popularity of the electronics tray on SR6. In practice I think the shield breaks up the neat lines of the SR6, so that’s a negative, but it’s just an option I guess. I had also hoped that I could incorporate a fan into the SR6 base, but this proved a lot harder than I had initially expected. I'll probably have another go at it at a later date.
T-wist mk4
If you want a history of the official twist module, or “T-wist”, check out my livestream from earlier this month. This module has proven to be enormously popular with OSR2 and SR6 users. The mk3 module has worked well, but it’s frequently the subject of a question from a frustrated user on the discord server. I felt like it was high time to address this.
The basic problem with the twist has always been position tracking, because the fleshlight case mounts into the receiver via a rotating ring. The original (3rd party) twist designs simply allowed a continuous rotation, but that’s no good for anybody wanting to connect up heaters, a t-valve and/or lube. In addition, T-code works in absolute position values.
When I first released the T-wist I introduced a potentiometer, mounted in the T-valve on the top of the fleshlight case, with a quick-release arm connected down to the receiver. This allowed the Romeo in the OSR2 to know the rotation angle of the case and control the continuous rotation servo in the receiver accordingly. This design concept stayed with us for the mk1 and mk2 versions of the twist but I never really liked it. It was awkward to build and unwieldy.
A simpler solution came along in the form of the Parallax 360 Feedback servo, which has an extra wire that allows the servo to send feedback on its current rotation angle. It required some extra code, and to move one of the main servos to a different pin, but it worked very well, and it meant that I could ditch the extra hardware for the potentiometer. There are problems however, and in particular some people have had trouble getting hold of a Parallax. It’s also quite loud, never returns to the same zero position each time it’s powered up, and the feedback system is difficult to troubleshoot when a user comes on discord looking for help because they can’t make theirs work properly.
I’d thought for a while that the ideal would be to direct drive the end of the fleshlight case with a 270-degree servo. Unfortunately that’s not very practical because the mount would be complicated and placing that much weight so far away from the centre of rotation of the case is problematic. From experience the potentiometer mount was already bad enough in that regard.
Placing a 270 degree servo in place of a continuous rotation servo would be no good because the rotation angle this would achieve on the main ring would be far too small. For months I had been toying with the idea of using an additional “transfer” gear that would step up this rotation onto the main ring. A ratio of close to 1 to 1 of servo rotation to ring rotation would be perfect.
I mentioned this on a livestream last month and I’m glad I did because mere days later a user called crimzzon posted to discord his plans for his own version of the concept I’d been mulling over. Hats off to him, because it’s definitely not an easy thing to design. Seeing crimzzon’s design gave me the kick up the backside I needed to design my own version. If you’re interested in seeing crimzzon’s twist check out my first livestream from this month. I built one and tested it . It’s good work and I could treat it as effectively the first prototype and use it toward my own efforts.
In starting my own design I made the decision that I didn’t want to complicate things by re-inventing the wheel. I would incorporate my existing twist parts as much as possible. In practice this meant that I would keep the existing main locking ring, and the case and gear geometry. I also didn’t want to duplicate my efforts too much, so I decided to work on a generic design that could easily be merged into the existing OSR2 and SR6 receivers.
Something that I learned from crimzzon’s work is that I’d wildly overestimated the maximum size of gear that I could 3D print: he’d successfully gone much smaller. I also learned that a diagonal or chevron gear is possible to print and runs very smoothly. It turns out Fusion 360 has a community-made spur gear add on that works well for this sort of thing and it’s a lot better than the web-based generator I used for the original gear profile.
The gear design I went for was the original gear ratio of 28/88 from the transfer gear onto the main ring, and 44/14 from the servo onto the transfer gear. This meant that the servo would be in a 1/1 rotation ratio to the main ring. I had to think carefully about where to locate these gears because I didn’t want to have the body of this new twist receiver extend any further toward the OSR2/SR6 body than previous designs.
The biggest lesson I learned from putting together crimzzon’s receiver was that the most important factor in making this particular mechanism work well would be to keep the friction low on the transfer gear. This is because the transfer gear rotates a lot faster than the servo, and therefore any drag on the transfer gear would be amplified several times over onto the servo.
One source of friction was the axle. Crimzzon had used a 3D printed plastic tube built into the base with a bolt up through the centre of it for strength. Even with it liberally lubed up with vaseline I found that this didn’t run very smoothly, especially when force was applied to the gear. I decided to use a metal rod instead because the surface of the rod would be a lot smoother.
The biggest improvement I could make however was related to the use of chevron gears. A diagonal gear has the advantage of smoothing out the contact between a pair of spur gears as they rotate. Chevron gears do this too, but they also have the cool feature that they constrain each other’s position along their rotation axes. Put simply, if I used a chevron gear between the servo and transfer gears I could let the latter move freely up or down its axle because it would be held in place by the servo gear. The transfer gear doesn’t touch the top or bottom end of its axle so the gear can’t rub on anything there, which would create a lot of friction. In fact I was able to arrange my design so that the servo and transfer gear can be up to +/- 1.5mm out of position vertically with no effect on the smooth running of the mechanism. This should be useful when dealing with generic servos when the precise geometry may vary a little.
It’s worth noting that using two sets of chevron gears, as crimzzon has done, means that the two sets of gears fight each other to define where the transfer gear sits on its axle. I think that this, and contact with the end of the axle, are the main sources of friction in crimzzon’s design.
All of this said I really don’t want to give the impression that I am belittling crimzzon’s work. All I’m really doing is enjoying the benefit of hindsight. He did a superb job with his design and I would probably have made similar choices if I’d been the one designing the first prototype. Steps such as driving down the part count and eliminating little extra parts and brackets are also a normal step as a design matures.
Another useful piece of information from crimzzon’s experience was that the weakest part of the mechanism is likely to be the plastic servo horn that the servo gear would be mounted on. This in mind, I set about making sure that the servo gear would also be compatible with a metal circular 25T servo horn, which are pretty easy to get hold of. I will be recommending this part in the build instructions.
Having designed the gears the next step was to design the housing for them. Stylistically wanted to try to match the aesthetic of SR6 Beta, with flat surfaces and bevelled corners. I also want to incorporate a lid to fit over the top of the servo, which would hopefully make the design look a lot cleaner. Detailed, methodical work like this is the part that eats up most of the design hours.
During the prototyping stage I had a discovery that will make building this design a lot easier. I had expected that i would be recommending that builders of this device buy a length of 3mm rod or tube and cut it to the required 25mm length. I soon realised that a much better option is to use an M3x25 dowel pin, which is a common, off-the-shelf, part that is exactly the right size and shape! Using a bit of rod or tube is of course still an option.
I found that once put together the completed mechanism runs very smoothly indeed. I also found that it’s no trouble at all to install the transfer gear and dowel. I had worried that the extra assembly steps would eclipse the benefits of dropping the Parallax servo, but it all seems to go together very well.
The final design change I made was to address issues around connecting the twist servo back to the main body of the stroker robot. A number of users have commented that it’s easy for the wires to become damaged, especially at weak points such as where they meet the servo housing. I’ve also thought for a while that the current harnessing situation generally looks really untidy. I added holes to the arms and links to facilitate the use of cable ties back when I released the OSR2.1, but I think that it’s possible to do a lot better.
What I have devised is a conduit that routes the servo wires away from the back of the receiver to a point just below one of the mounts. The wires can then arc smoothly up through 180 degrees to meet the pitcher link and run back to the main body of the device. I have also devised an OSR2 pitcher link with a conduit inside it, which can carry the harness and hopefully looks a lot tidier than lashing it to the outside.
The conduit starts from under the servo cover, so the whole thing is very neat and tidy (though I haven’t yet thought through exactly how the T-valve fits into this arrangement!). An interesting artefact of this however was that, for the OSR2 at least, the conduit needs to be on the left side of the receiver because that’s where the link is. I therefore had to mirror my generic design left-to-right when I merged it into the OSR2 receiver. This of course doesn’t make any difference to the functioning of the mechanism itself.
Finally...
I’d like to say a big thanks to you guys for the support you give me. I’m actually enjoying sharing this glimpse into my creative process with you, so I hope that it’s interesting to see and read. I would like to invite you guys to engage more on the discord server, especially if you see something I’ve posted and you have any questions or suggestions. I’m also definitely open to organising livestreams and hangouts on there too if there’s anything particular you’d like to see more of. Let me know.
Thanks again!
Tempest