SpaceLS, a rocket company in the UK, has asked Beatty Robotics to team up with them to pursue a mission to put a rover on the moon. The first step in the process is for Beatty Robotics to design and construct a prototype for SpaceLS to use for testing, experimentation, and development. We’ve been working hard on the project, but we’ve been so busy we haven’t had time to take any pictures until now! Here are our first photos of the Lunar Rover’s rocker-bogie suspension system, counter rotating universal joint, steering servos, motors, and wheels. We designed the wheels to be large (6+” diameter) and wide for traveling through lunar ash. All the components of the robot will be machined out of aluminum, titanium, and carbon fiber. When it’s done, the robot will be solar powered and run on an Intel Edison. These are work-in-progress photos. The robot’s core/body, solar panels, video/sensor mast head, and other components are not shown.
We often add sound effects and even music to our robots. We’ve used a number of approaches, but our latest method is the SOMO-II MP3 Module. Here are some pictures (from a rover robot we’re working on) and the technical details of how we integrated the SOMO module. First, here is a top view showing the speaker on the left, the Arduino in the middle, a stack of relays, and the SOMO (orange and silver colored square) on the right.
A closer view of the SOMO mounted on female headers soldered to a black protoboard. You can see the microSD card sticking out, which will give you an idea of how small the SOMO is. You can also see the 1K Ohm resister, which is required to get it to work.
The underside of the prototype board. The SOMO is using the brown, orange, yellow, purple, black, and red wires. The other wires are unrelated.
We took a powered USB speaker apart, hacked into it, and screwed it to the main plate. We pulled out the speaker’s battery and wired the speaker into the robot’s main 5V battery. We also rewired the speaker’s buttons so that we could control its functionality using an Arduino-controlled relay to change its mode so that it will receive an incoming external audio signal.
Here are the steps to get the SOMO setup: First, put your mp3 sound files onto a microSD card. The files should be in a folder called “01”. And they should be numbered 001xxxxx.mp3, 002xxxxx.mp3, and so on, where xxxxx is any name you want to give them (or no name at all, just the number prefix). The main thing is that the files need to begin with the numeric sequence as shown. Next, wire the SOMO to your Arduino and a powered speaker like this. We used Arduino pin 38 and 40 on our Arduino Mega, but you can use whichever suitable digital pins you wish to (or Serial1, Serial2, or Serial3 on a Mega).
Important Note: The SOMO operates at 3V. If your Arduino operates at 5V (which most do), then solder a 1K ohm resistor on the SOMO’S RX Line. For the speaker, purchase a small, powered USB speaker and cut open the stereo audio cable. You’ll see three wires: white, yellow, and orange. Solder the white wire to the project’s ground. Solder the other two wires to DAC_L and DAC_R. These provide “line out” for a stereo headphone jack, external powered speaker, or amplifier. If you are using a small, non-powered speaker, then use SPK- and SPK+ instead.
The Arduino source code was the trickiest part. We couldn’t find any libraries or examples of using the SOMO with Arduino, so we wrote our own. Thank you to Curtis Whitley for helping us to figure out how to calculate checksums. At the bottom of this post, we’ve provided a sample program that shows how to play an mp3 track from the microSD card. It provides an example of exactly how to operate the SOMO-II from an Arduino.
We are in the process of mounting a GoPro camera onto our latest robot. In our previous post we showed how we hacked into the GoPro and wired it up so that we could control it from the robot’s Arduino microcontroller. The next task was to design and machine a case for it. As usual, the CAD design work took longer than the actual machining. It was a fun and challenging little machining project. The end result isn’t perfect, but I think it came out pretty nice, and it will definitely serve the purpose. Our case needed to have these characteristics:
- Protect the GoPro and make it look cool on the robot.
- Provide slots for running the remote control wires.
- Cover up all the GoPro’s buttons so that museum participants and technicians can’t play with the buttons (and mess up the settings in the camera). The camera will be entirely controlled by the robot.
- Provide specialized tapped mounting holes for specific placement on the turret of our robot.
- Provide a lens cover to protect the GoPro’s lens.
- Provide space and protection for the HD transmission cable and modified USB cable plugged into the side ports.
Sometimes there are situations where it’s useful to control a GoPro by wired remote control and/or to integrate a GoPro into a DIY electronic project. This seems like it should be straight forward, but it’s not. I searched for a third party cable or module to plug into one of the GoPro’s ports, but as far as I can tell, there is nothing readily suitable on the market. So, in this post I describe how we hacked into a GoPro Hero 4 Black in order to integrate it into a robot we’re building.
First, we tried communicating through the Hero Port (the large port on the back of the camera). This seemed very promising. You can do some neat things with this port. But unfortunately, controlling the GoPro’s shutter button isn’t readily feasible because GoPro didn’t set it up as a simple digital pin. Instead, they created a proprietary communication protocol that they purposely do not publish. They don’t want people to hack into their cameras. Next we tried using the USB port, to no avail. Then we tried hacking into the wireless remote control, which we were able to do pretty easily, and it sort of worked, but it did not provide the speed and reliability we needed. So, in the end we went old school. We tore the GoPro apart, hacked into the case, and soldered wires to the button rings. It isn’t pretty or elegant, but it works. Here are the details of what we did:
1. First, we needed to integrate the GoPro’s power into our robot. We didn’t want to have a separate battery. So we removed the battery completely, plugged a mini USB cable into the USB port on the side of the GoPro, and hacked the other end. The Hero 4 will run entirely off a USB cable with no battery in it. If you cut open a USB cable, you’ll see four or five wires. Normally the red is positive voltage and the black is ground. If you don’t see a red and black, then Google USB wire color codes for further clues. We connected the red wire to the robot’s 5v regulated power rail. So now, when the robot has power, the GoPro has power. When the robot goes off, the GoPro goes off. Another option is to use a Switronix Battery Eliminator, if you would prefer to use the GoPro’s Hero Port.
2. Second, we needed to turn on and control the GoPro from the robot, specifically from an Arduino micorcontroller. Note: A GoPro does not turn on just because it has electrical power. In order to operate the camera, you need to press the Power/Mode button (on the front) and the Shutter/Select Button (on the top). The following instructions voids your warranty, causes irreversible damage to certain parts, and has an extremely high potential of turning your $500 GoPro into a mess of useless bits of metal, plastic, and electronics. Welcome to DIY hacking!
A. Use your fingernail or a prying tool to remove the front facade. It’s stuck down with adhesive and two little plastic clips on each of the four sides. This takes time and patience. The front plate is thin aluminum. Unless you’re very careful, you’ll end up bending it. You will probably be wanting to put the plate back in place when you’re all done, so be careful.
B. Next, use a small electronics screw driver to unscrew four screws to loosen the electronics.
C. Separate the case from the electronics at the port end first, carefully prying and wiggling until you are able to pull out the electronics. Again, this will take time and patience. Be careful.
D. As the electronics come out, you’ll see there are two main sub-assemblies connected by a thin, delicate orange flat ribbon. Try to keep the sub-assemblies together. If you fail at this, you’ll pull out the ribbon connector. It’s a major pain and risk to put that tiny thing back into place. However, it is doable. It took twenty minutes of fussing, but we managed to do it.
E. Use big snippers and other tools to cut away the top part of the case to expose the Shutter/Select button on the top. I wish there was a better way, but we could not find one.
F. Use your fingernail to scrape off the little white touch area beneath the Shutter/Selection Button.. Solder a wire to the tiny central circle (be very careful not to connect the outer circle to the inner circle). Run the wire to a relay controlled by your Arduino. Use the relay to close the circuit to ground using a digitalWrite command.
G. Do the same thing on the Power/Mode Button, which is on the front of the camera.
H. Replace the case and physically integrate the camera into your project. In our situation, we have machined a special aluminum case that we designed specifically to meet the needs of our particular project. When it’s all done, the mangled plastic GoPro case will not be visible in any way.
After doing the steps above, we now have two wires coming out of our GoPro. We’ll attach each wire to a little relay module, which in turn we will control with two digital pins on our Arduino. We’ll then use simple digitalWrite commands to operate the two relays, giving us complete control of the GoPro.
In the next post, I’ll provide some photos and explanation of the new case we machined for our wired GoPro. In the post after that, I’ll describe how we are using the GoPro on the robot to wirelessly stream HD 1080p/60 video to a monitor and a HD Goggles.
Recently, we encountered a new type of sensor that we’re hoping will really help our robots sense the world around them. We are avid users of Maxbotix ultrasonic sensors to detect objects, but they point in a single direction and only provide a somewhat fuzzy understanding of possible obstacles. So, instead of using sonar technology, we have now been experimenting with using LIDAR, which technically stands for “Light Detection and Ranging,” but we think of it as a mash-up of LASER and RADAR. In the past, LIDAR systems have been used by the military and other large organizations for mapping, target range determination, object detection, and other uses. They once cost many thousands of dollars. But recently, someone came out with a mini LIDAR sensor for $134. The true advantages of LIDAR is that it’s accurate, repeatable, and super fast. You can literally spin this little sucker around in a circle and it will spew out a series of numbers that represent the number of centimeters to every wall or object in the room. It will literally make a map of the room. As soon as I read about it, and saw the animated gif below, I knew I wanted to start working with this little scanner. It came as a great disappointment to me that the LIDAR unit itself was for sale, but there wasn’t a turret for it. That was just an artist’s animation. So, we decided to make our own. We built this little spinning LIDAR turret using an awesome combination of Actobotics parts. We also discovered something else we didn’t know about called a Slip Ring, which allows a collection of wires to spin around 360 degrees and never lose conductivity. So, here is a quick test of our newly assembled LIDAR Scanner Turret. It’s not perfect yet. We have some ideas for improvement. But it’s a good start.
Here is the original animation that was the inspiration for our LIDAR Scanner Turret. It shows how the LIDAR will spew out a series of distances to all the objects in the room. In this cases, it’s displaying those distances graphically on a computer screen. We plan to use the LIDAR Scanner Turret to give our robots situational awareness of the room they are in and all the objects around them. It will also be possible to add to tilting component to the turret, which will allow us to capture a 3D image of the entire room (although we’d probably need an Edison, Yun, or other Linux-based microcontroller to handle all that data rather than a simple Arduino). The future is bright. 🙂
Here is a picture of the Slip Ring, which allows us to spin the turret 360 degrees continuously, but still run wires to the sensor. The Slip Ring is housed in the 0.50″ hollow tube in the center of the turret.
We’ve been working on the Rover Challenge robot for the New York Hall of Science. Its purpose is to give Science Center visitors a chance to drive a robot through an obstacle course, use ultrasonic and color sensors, record video, take snapshots, play music and sound effects, understand different types of steering, and learn about the various elements of a robot. Having completed the machining of the Main Plate, we are now assembling the various mechanical and electrical components onto it. The wiring isn’t done yet and some of the components are not yet installed. This is just a preliminary look at the direction we’re heading. The folks at NYSci asked us to make a compact six-wheeled robot that had a “homemade” or “science project” feel to it, so we’ve left all the electronic components exposed. This provides a good teaching platform with the various elements of the rover clearly visible, such as the Arduino, the motor controller, the servo controller, and so on. We will also be providing an optional clear acrylic top plate in case they wish to cover the components. This robot will have many features and options, including easily interchangeable wheels–either the knobby tires shown here or the gnarly metal wheels you might have seen in previous posts. Because each wheel is mounted on a servo, this rover will provide several different types of steering, including the rotational servo-steering we used on the Mars Rover and 90-degree strafing. It should be fun to see in action.