Wednesday, March 25, 2020

Creating a Foot Joystick for the Xbox Adaptive Controller

So my son had a stroke shortly after birth. This has left him with rather reduced mobility on the right side of his body. He loves video games though, but his disability decreased his choices leaving him with a very limited subset of games on the Xbox or PC. He became awesome using a controller one handed. He would use his pinky on one joystick and thumb on the other to move around but had to stop to press buttons or other such actions.

So when Microsoft announced the Xbox Adaptive Controller, my wife and I were way excited for him. We got him one along with various buttons and joysticks to make it work. It is more of a hub then a controller, allowing you to use whatever adaptive components. Many of those components are expensive, but we got the following items:

The one handed joystick he would hold and could control one of the joysticks (view for my son). The 3dRudder controller would then be mapped to the other joystick (movement). 

The biggest struggle we quickly learned with the 3d Rudder motion controller is that a person really needs two functional feet to help control it's rocking motion. It acts similar to a balance board. To move forward the player leans their feet forward to press the front down. To go right they have to push their right foot down. My son can't get that finer grained movement on his right foot. He would tend to push with his left foot, causing his character to move left, but then never had the strength to move it right again. Overall the design worked poorly.
The reality is he has one functioning foot that he can control rather well. So we thought that we needed to get a foot joystick instead that he could control with his left foot. In unrelated news we got a 3d printer for Christmas (Thanks Santa!), and a micrometer for helping to take measurements down to the millimeter. After we got these, we decided I should get another one-handed joystick and convert it to a foot joystick.

The one handed joysticks are nice and very affordable at $20 a piece. At first I thought I would just create a holder that would not involve modifying the joystick. But as you can see from the image on the right, that wouldn't work all too well. So after getting put on work-from-home, which saved my commute and reduced overtime requirements, this idea rose back to the top of my priority list.

Here is how I did it. 
The first step is pulling the joystick apart. This involves taking out a screw from the bottom of the joystick. Once it is out then press on the side in the gap between the two parts. This should cause it to pop a little and open slightly. You can use a flat head screw driver and twist it a little in the gap to force it open. You are not keeping the body, so you don't have to be too careful. Then unscrew two small screws right below the joystick connecting the board to the black joystick housing. After your done then you end up the pieces you see in the image to the left.

I didn't want the front buttons as I figured he would just be moving with his foot and having to pull it off would slow him down, so they had to go. Luckily there are only three cables coming from that circuit board for the buttons connecting it to the main board. I pulled out my soldering gun, heated up the solder, and pulled the cables out one by one. That left me with only the board, which is exactly what I wanted. I plugged it into the Xbox Adaptive controller and made sure it still worked. I was pretty sure it would, but didn't want to spend much time on this if it didn't.

The next phase involved me taking measurements of the sides, length + cord to the gasket portion. Also getting the height. Then I opened 3d builder which is free with Windows 10 as part of Microsoft's "Creators" push a while back. I have found for the basics I use it for it works great. I created the following prototype. The top of the image is the front of the of the controller housing. The back has the cutout for the cord. It involved a ring around it to catch the sides of the board and support them. The two smaller cylinders will serve as the screw posts to secure the board to the plastic. That larger middle cylinder would go through the middle hole in the board. 

After printing this out I realized some adjustments were needed. I wanted another larger cylinder that would support under the joystick so it could be clicked more comfortably. Also around the other cylinders I added a ridge to support the board for it to rest on as it was just being pushed on them. Then I heightened the middle of the cylinders to the height of  the top of the board for a good fit. Also I extended out the bottom of the board to allow me to fit the cord with the gasket on the inside so that it would almost look like the cord did in the old controller.

After printing out the second rendition I ended up with this. Everything actually fit perfectly. I was pretty happy with this as I figured  would need more revisions to this part. I didn't put holes in the two smaller cylinders to allow for the mounting screws to be re-added. So I heated up a needle with a match and pushed it through the middle of both cylinders. I then replaced the board on the cylinders and was able to screw the board down with the screws through those holes. 

 For the top I made the first version with a gap so that both inside and outside it would grip the bottom, but that didn't work well. I was also a little off on the top hole for the joystick. I moved the hold forward a little, made it larger, and removed the inside 1mm used for the inside ridge all the way up to the top. The case is narrow and was making the joystick get stuck and it didn't fit the base well.

Upon printing out the second one, it fit. I pulled it off the plate a little quick which is why the right side is a little white. Other then that, this is exactly what I was wanting. It is a small flat package that houses the joystick.

So off to testing I went. I realized quickly that it would not stay still on our carpet floor. So I took a page from Jerry Rigs Everything and grabbed a board out of our scrap pile. I used all the extra space at the bottom of my case to drill holes to mount it to the board.

After putting back on the lid and having my son try it again it worked out great! Now he can use his left foot to control his motion in his favorite game, Minecraft. He was getting pretty accurate after 10 minutes being able to select things in his inventory with his foot. Below you can see the foot joystick in action.

Overall it was a grand success. I need to paint the case and cut down the piece of wood more, sand and stain it, but overall I am very happy. I haven't seen him so happy to play Minecraft for awhile. Usually it involved him jumping between the left and right joystick continuously. This is no longer the case for him.


Below is a picture of all the equipment together. Major Kudos to Microsoft for making the Xbox Adaptive controller happen. Also thanks to PDP for making a very simple joystick that I could mod like this. Finally thanks to my wife who helped sanity check me on this as I was working along on this. Definitely one my more favorite projects. :)

If you would like the 3d files they are linked below:

Foot Joystick Box Bottom
Foot Joystick Box Top

If you have any questions then leave me a comment.