Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Hardware design en
The main idea behind our hardware design is to leverage the capabilities of the BeagleBoard as much as possible. It mainly includes available IO channels to talk to sensors and actuators. Typical solution would be to use micro-controller for these purposes. We decide not to do it because BeagleBoard has enough IO channels to to control rather sophisticated robot.
Based on our experiments, BeagleBoard's CPU is powerful enough to run hardware control algorithms in real-time in parallel to other tasks (such as communicating over the network, etc.). We believe, that such design will reduce the amount of initial efforts required to assemble everything together. In addition, in contrast to micro-controller based design, we have the homogeneous programming environment where all software components are running on BeagleBoard. It simplifies software design and development as well.
The following sections provide step-by-step instructions how to build the robot.
We were experimenting with different chassis ranging from self made cut of the wood to the hacked RC cars. Currently, we decide to stick with popular Pololu RP5 tracked platform. Unfortunately, at the moment of writing this article, we found out that this platform is discontinued so most probably we will move to the similar platform.
DC motor controllers
Tracked platform(s) mentioned above are sold without motor controllers, so the first thing we need to decide how to control motor speed. Mainly for the sake of simplicity, we decide to buy standard RC motor speed controllers. The only restriction was the size. For this purposes, we found Modelcraft V12 XR DC motor controllers which nicely fit to the empty space at the left and right side. The following picture shows how it looks like.
On the picture: 1 - DC motor power supply connectors; 2 - DC motor speed controllers; 3 - PWM inputs for motor controllers.
These controllers are controlled with standard RC PWM signals. However, it is kind of strange that it is extremely hard (impossible) to find any documentation about this particular model in the Internet. That is why we would not recommend it in the long run. We are currently working on different solution to control DC motors.
Creating good power supply was (and to some extent still) one of our main problems. There are three types of power consumers on the robot:
- DC motors to rotate tracks. Officially supporting maximum 7.2V.
- Servo motors and camera which require 5V.
- Electronic such as BeagleBoard which require regulated 5V.
Our main problem was to make sure that no noise from motors can interfere with 5V electronic. In addition, we decide to implement battery charger on board to make it more convenient for users (no need for additional charger device).
The tracked platform is being sold with own set of batteries. We decide not to use them and replace with more compact LiPo batteries. Each LiPo battery supply 3.7V so we connect them in series which gives 7.4V. From this, we decide to provide raw 7.4V directly to the DC track motors. Than, to separate noisy servos from the rest of electronic, we decide to use two Pololu D15V70F5S3 Step-Down Voltage Regulators. They are switching regulators (also called switched-mode power supplies (SMPS) or DC-to-DC converters) and have a typical (when the output current is several amps) efficiency of approximately 90%, which is much more efficient than linear voltage regulators, especially when the difference between the input and output voltage is large. The output from the first voltage regulator goes to the servo and camera. The output from the second one is used to power up BeagleBoard and provide required power for the rest of the electronic. In particular, we use it to power up compass, sonar and GPS sensors as well as I2C bus used to talk to sensors.
This solution is probably not the optimal one, but after experimenting a lot with different filtering capacitors and some other connection schemes, we finally find this variant which works stable and decide to stick with it for now. Probably we will revisit this solution as soon as we get better idea and time to implement it :-) .
In addition, we add two LiPo Chargers for each LiPo battery separately. This solution has a big advantage for the users because otherwise, rather expensive external LiPo compatible charger and balancer will be necessary. In contrast, now it is just enough to connect 5V wall power supply to simultaneously run the BeagleBoard and charge batteries at the same time. Very useful during development phase.
The following picture represents the connection schematic.
PICTURE1 FROM MAX GOES HERE.
After soldering everything together, it looks like this:
On the picture: 1 - LiPo chargers; 2 - LiPo batteries; 3 - power switch; 4 - connector to power the BeagleBoard; 5 - two voltage regulators.
The next step is to pack everything in the chassis. The following two pictures illustrate this process.
Housing for the rest of electronic
After packing DC motor controllers, voltage regulators, LiPo batteries and theirs chargers into chassis, there is absolutely no space left there. So the rest of the electronic need to be packed on top of it. We decide to use just a standard plastic box for these purposes.
After planning, we start with drilling holes and mounting SRF08 ultrasonic range finder.
The next step is to drill the holes to fix the BeagleBoard. We decide to place BeagleBoard tight to the edge of the box to make serial port, power connector and miniSD card accessible from outside. Serial port is absolutely necessary for debugging purposes when experimenting with Linux distribution. Obviously it should be possible to pull out miniSD card to write new image on it from PC. The following picture illustrates the bottom half of the plastic box with mounting place for BeagleBoard and corresponding holes for connectors.
Interfacing BeagleBoard to the sensors and motor controllers.
Expansion connector available on BeagleBoard provides I2C bus, hardware PWM generators and a set of GPIOs. Unfortunately, they all output 1.8V instead of typical 5V. That is why, voltage level converter (shifter) is required. After trying several different options, we decide to use TI's TXS0108E voltage-level translator which is nice small chip offering 8 channels. The only problem is that we were only able to find this chip in SSOP form factor. We were trying to avoid doing our own PCB and that is why decide to use SSOP to DIP adapter which allows us to solder very simple circuit easily (well, soldering SSOP chip to the adapter was a little bit challenging but definitely doable if you did not drink too much beer the day before :-) ). This small circuit essentially gets required signals from BeagleBoard's expansion connector and converts them to 5V. In addition, we solder connectors which make it easier to connect and disconnect different devices. So what we make available at this simple board are:
- three four-pin connectors for I2C bus (+5V, ground, SDA and SCL). They will be used to connect compass, sonar and for the future, we are planning to connect I2C ADC to read data from analog IMU (gyros and accelerometers).
- four three-pin connectors for PWMs. Two of them are the output of the Beagle's hardware PWM generators and other two are connected to GPIO pins where we are generating PWMs "manually" with our on-board software.
- two two-pin connectors to supply power for the camera. We are currently also experimenting with stereo vision, so the power connector for the second camera is also necessary.
The following picture represents the connection schematics.
PICTURE2 FROM MAX GOES HERE.
Soldering everything together leads to the following (top and bottom side):
On the left picture: 1 - power connector; 2 - I2C bus connector for sonar; 3 - SSOP voltage-level translator; 4 - SSOP to DIP adapter; 5 - 4-pin I2C connectors; 6 - 3-pin PWM connectors; 7 - 2-pin +5V power connectors.
On the right picture: 1 - +5V power for BeagleBoard soldered directly to the board; 2 - 14-wire cable to get signals from BeagleBoard to level shifting board; 3 - 90-degree connectors plugged directly to the expansion connector.
There are some capacitors visible on the pictures. Strictly speaking they are not necessary now. They are from our previous attempts to filter out noise from servo motors. But since we are currently using separated power supplies, capacitors are not necessary. We just did not bother to remove them.
Now it is possible to mount BeagleBoard with our level conversion board into the plastic box.
The upper part of the plastic box is also usable to mount some electronic. In particular, we mount servo motor with camera on it as well as CMPS03 magnetic compass module
On the picture: 1 - compass module; 2 - I2C buss connection; 3 - power cable for the camera (mounted on the opposite side); 4 - servo to rotate camera; 5 - analog video connector from camera to the frame grabber.
So now we are almost ready to put everything together. The only things are missing are those connected to the USB ports:
- LogiLink video grabber to grab analog video signal from camera. We were also experimenting with standard USB web-cameras. In particular with Logitech 9000Pro. It has great optic, but is more expensive then analog one we are using. In addition we think that there are more different analog camera models which might be useful in the project so for now we decide to stick with analog cameras and USB frame grabber.
- TP-Link TL-WN821N USB WLan stick
- NaviLock USB GPS mouse. This is temporary solution just to test our software parts working with GPS. We are currently integrating NaviLock's ublox6-based NL-651EUSB GPS module
Here how it looks like right before we close the housing box
That is basically it. The following pictures represent how the final assembled version looks like.
Complete bill of materials
All prices are approximate since we were buying most parts separately, not in one batch, from different vendors and in different points of time. Since we are currently in Germany, we were trying to provide links to the Germany or EU based suppliers. Provided prices are what mentioned on the vendor sites at the time of writing. They also do not include shipping and possible custom fees.
- RP5 tracked platform but it is discontinued. We are planning to move to the similar platform ~ €44
- Plastic box ~ €7
- SRF08 ultrasonic range finder ~ €53
- CMPS03 Magnetic Compass Module ~ €49
- BeagleBoard xM ~ €142
- TI's TXS0108E voltage-level translator ~ €2
- SSOP to DIP adapter ~ €2
- 2 x Pololu D15V70F5S3 Step-Down Voltage Regulator ~ 2 * €22 = €44
- LogiLink Audio and Video Grabber USB 2.0 ~ €10
- TP-Link TL-WN821N USB WLan stick ~ €12
- NaviLock's ublox6-based NL-651EUSB GPS module ~ €31
- Navilock 5 wire connection cable ~ €4
- CMOS mini camera module ~ €30
- 2 x Kokam LiPo Akku 3.7 V / 1250 mAh ~ 2 * €13 = €26
- 2 x LiPo Charger ~ 2 * €7 = €14
- Switch ~ €5
- 2 x Modelcraft V12 XR DC motor controllers ~ 2 * €10 = €20
- Servo motor ~ €5
Total: ~ €500.
Actual price would be slightly higher because we do not include shipping and possible custom fees. Also, we did not include things like wires, isolation band, soldering staff, screws, and some other small parts.
|Content on this site is licensed under a Creative Commons Attribution 3.0 License .|