First Person View Remote Control Rover
This past weekend I participated in the 2015 OSU MAKEathon put on by the electronics club here at OSU. The event was 24 hours of just makin’ stuff. I grouped up with a couple of other makers, and we decided to build a first person view remote controlled rover!
I packed up my 3D printer and some tools and headed onto campus for the event. I had gathered two other guys from the OSU makers club (Brent and Ryan) to work with me, but I was also lucky to run into another guy (Aaron) at the event who wanted to work with us. We accidentally ended up with a very nice multidisciplinary blend: two Mechanical engineers, a Computer science engineer and a Electrical Engineer. Between the four of us, we had a nice selection of tools and electrical components.
We came to the event knowing we wanted to make a rover and use a pair of FPV goggles on it. Ryan purchased a spektrum DX6i radio transmitter and a fatshark FPV camera and goggles for use in this project (he said it was a perfect excuse to purchase these items). We also came to the event with a pair of continuous rotation servos to use for the drive wheels. We had planned do use two drive wheels in a tank drive fashion and a third peg/roller to make the bot stable. Brent and I started doing the layout and detail design while Aaron and Ryan started working on the wiring and electronics.
We decided on putting the two drive wheels in front and the peg/roller centered in the back. We also decided that we would mount the FPV camera on a pan/tilt gimbal centered in the front of the rover. Brent and I mocked up many of the components to check the layout of everything on the rover. Using these mock-ups, we designed the frame, camera gimbal and wheels of the rover. All of these components were to be 3D printed, so we needed to make sure that all the parts had the right fit and provided the functions that we wanted. We spent roughly 2 hours modeling everything before we started printing.
The frame was the largest part and was designed to have a place for every component that we needed. The frame had a cutout for the camera pan servo and brackets integrated into it to mount the drive servos. There was also a hole in the rear for the peg/roller and holes all over the surface for accessories or other tie down points.
The camera gimbal was probably the most complicated part that we designed. The U-shaped piece of the camera gimbal contains cutouts on the bottom for the servo horn and cutouts on the side for the tilt servo. There is also a hole on the side to stabilize the camera mount. The camera mount itself is simply a rectangular piece with a hole cutout in the center, and a pocketed area on the rear to hold the camera. There is also a pocket the shape of the servo horn on the side as well as a hole that lines up with the stabilization hole in the pan mount.
After the detail design, I converted the files to .STL and started printing. The first components that we printed were the camera gimbal assembly. Both the pan bracket and the tilt piece printed in roughly an hour and half. After that, we assembled it with the servos and camera to test.
The pan/tilt function was practically plug and play with the RF transmitter and it worked extremely well. And of course we needed to test it! The grin people got when controlling it through the goggles was commonplace all night!
After the camera gimbal, we printed the frame. The frame was roughly a 5×6″ rectangle which qualifies it for the largest part that I have printed using my Prusa. A 3D printer is actually the wrong tool to make this frame, my shapeoko would have done it quicker and better, but I think that the printer was more versatile a tool to bring with me. This was easily the longest print to create this part. It took roughly four hours to complete. Even generating the g-code from slic3r took about a half an hour! This is very likely due to all the holes I had added in the frame and that the main plate was 1/4″ thick (way overkill).
After the frame, I printed the wheels. The wheels were 3″ diameter and 3/4″ thick, and looked roughly like hockey pucks. These took 2 hours each to print, and unfortunately, I did not take any pictures before we assembled them onto the bot. The printed wheels were a little smooth, so we wrapped them with rubber bands for additional traction.
The final thing I printed was the roller ball for the rear peg. It is simply a 3/4″ hemisphere with a hex nut trap on the flat face. The rear peg screws into the frame and then the roller ball. With it set up this way, we could adjust the height of the rear peg and thus adjust the angle that the rover makes with the ground. Originally, we were simply using the head of a machine screw as the rear roller, but we found that it caught on things and added some unnecessary friction to driving.
ELECTRONICS AND CODE
While Brent and I were designing and printing the physical parts, Aaron and Ryan were working on the electronics and coding to make it all work. I did not have direct involvement in this process, but I do know generally what they did. This project would not have been possible without Aaron and Ryan’s expertise with electronics and coding.
The DX6i transmitter we used had several servo channels that can be controlled by the sticks. However, being a transmitter designed for quad copters and RC planes, it didn’t work just plug and play with our setup. What we needed to do was take the servo PWM control signal from the reciever, process them on an arduino and then re-transmit them to the drive servos. After doing this, the drive servos performed as desired: the right stick of the transmitter controlled forward, backward and turning of the rover.
After we installed this system, the drive servos would just spin at idle (no movement of the stick). Moving the stick made the servos drive like we intended, so we had an issue with idle operation (considering we did not want the rover to move when given no signals). Ryan and Aaron checked the code for quite a while to try to determine the problem, but in the end it was determined that the servos had a trim pot on them to control how they function at idle.
Everything on the rover was powered by a 11.1V 3300mAh Li-poly battery. This battery was originally intended only to power the FPV system, but we tapped into it to provide power for everything. We used a voltage regulator to step down the power to an appropriate level for both the arduino and servos.
The wheels finished printing at roughly 2:30 am, and we began assembling the rover immediately. The drive servos fit right in the brackets and the camera gimbal fit right into its slot as well. The FPV transmitter and the Li-Poly battery were zip tied together on the top and bottom respectively. Next, the perfboard with the servo receiver and arduino nano were hot-glued with standoffs on the top side. With all the components installed, we wired everything up and provided enough slack for the gimbal to move easily.
And of course, video of it in action!
The rover performed wonderfully. It was immensely satisfying to see it work and to use it. Once dialed in, the drive system worked flawlessly and provided zero-point turns and easy to use controls. The camera gimbal just by itself was immensely satisfying to use, and once paired with the rover drive system, immensely entertaining to use.
The servos we used for the drive motors were not very fast, but they did move the rover at an acceptable speed, and were fairly easy to control. The pan/tilt gimbal for the camera provided us with roughly 90 degrees of pan and tilt in each direction, which was acceptable for driving and looking around. Our transmitter is capable of up to one mile, which we did not test (though we did drive it down several hallways and go down the elevator with it). Battery life was pretty good, we drove it around for roughly a half hour before we needed to bring it back and re-charge the batteries.
To anyone reading this from OSU, I will have the rover with me at the Mechanical Engineering Capstone fair on Friday, April 24th from 2-5pm in Scott labs. Come on by to check it out!
COMPETITION RESULTS AND FINAL THOUGHTS
A component of the MAKEathon was that it was also a competition. Faculty/sponsor judges were around during the whole event observing and also went around at the end to judge every project, science fair style. Our project tied for 2nd place overall! We tied with a group that mechanized/computerized an etch-a-sketch to draw pictures. The winning team used DC motors with encoders, and a DC motor pump to make a pancake printer on top of a electric skillet.
Everything about this competition was great. Everyone involved, both volunteers and other participants, were very enthusiastic to see what everyone else was working on. The whole environment was awesome. I would definitely recommend other makers to participate in events like this.
I think our rover was a crowd favorite among the participants. Everyone who stopped by to talk with us or try it out had a constant grin on their face while talking with us or using the rover. It was hard not to while wearing the goggles and driving it around.
At the end of the event, Ryan took the rover home since he had purchased all the components for it. I will say that I am definitely jealous! This thing was crazy fun, and I may have to try to make one for myself!