Goliath Spring 2018 – Final Blog Post

By: Ernie Trujillo (Project Manager)

Approved By: Miguel Garcia (Quality Assurance)

Goliath Team:

Ernie Trujillo (Project Manager)

Ryan Nguyen (MST Engineer)

Tai Nguyen (E&C Software Engineer)

Milton Ramirez (E&C PCB Engineer)

Daniel Guerrero (M&D Engineer)

Table of Contents

Introduction

This document provides resources to all major tasks that were completed by the Goliath team in the Spring 2018 semester. It also provides a summary of the objectives placed by the customer and links to other documents on detailed topics.

Executive Summary

Mission Objective

The goal was to redesign the Goliath tank and follow a concept design from the Goliath 303 Tank while retaining the same goal as the Fall 2017 semester. The Goliath Tank needed to navigate through a 2-D maze made from cloth. The first time through the maze the robot is remote controlled through the Arxterra App  while recording every decision made in the maze and the second time it would play-back the unique path that was recorded. The final objective was to test the robot avoidance software of the robot and see how it overcomes having other robots in the way of its path through the maze.

Project Requirements

Work by Ryan Nguyen (MST Engineer)

Level 1 General Requirements

  1. The robot shall be completed by May 15.
  2. The robot that is to be designed shall be done in such a way that it is relatively inexpensive, less than $250, preferably a laser cut model or 3D printable design.
  3. Since robots are to be operating through the maze simultaneously, the design should ensure that collisions are to be avoided in all situations.
  4. When printing 3D models for the project, any prototype print shall obey the 2/2/2 rule and shall take no more than 6 hours in sum. Projects may request a waiver with justification.
  5. Robots shall utilize a version 6 3DoT boards powered by the 3.7V RCR123A battery. Projects may request a waiver with justification.
  6. The robot will be designed in such a way that there are no dangling or exposed wires. Connectors will be used between all electronic and electromechanical components. Jumper wires will not be used, ribbon cables are preferred; the gauge of wires should be consistent with the current.
  7. Good construction techniques: all moving and rotating parts shall use bushing or bearings, hinges shall be interlocking and include a latching mechanism. No gaps shall be greater than 1 millimeter, immediate access shall be provided to all external connectors (USB, switches).
  8. The robot shall record the user’s input and be able to repeat the previous route defined by the user. The software algorithm is defined in 400D E&C lab sequence.
  9. During teaching mode, ArxRobot app via mobile devices shall be used to teach the robot to navigate the maze.
  10. During the playback mode, the ArxRobot app shall transmit live video feed and telemetry to the Arxterra control panel, including battery level.
  11. The Robot disassembly time shall be 10 minutes. Projects may request a waiver with justification. All 3Dot boards will be clear of electronics, motors will be disconnected, all sensors will be disconnected.
  12. Reassembly time shall be 10 minutes. Projects may request a waiver with justification. All teams will be allowed to use a cable tree as well as an assembly diagram as necessary. All robots will be tested after reassembly to confirm its functionality.

Goliath Level 1 Requirements

Project:

L1 – 1 The Goliath will drive on flat surfaces, such as cloth, paper, linoleum.

L1 – 2 The Goliath shall be operational for 1-hour duration.

L1 – 3 The robot shall be a scale replica of a Goliath 302 Tank. The scale factor will be 1:11.5 with a mean

square error (MSD) over all three axis (x, y, z) of no greater than 10%.

L1 – 4 The total cost of the goliath shall be no greater than $200.

L1 – 5 The Goliath shall have easy access to charging and programming hookup.

L1 – 6 Goliath shall house a custom PCB and use control telemetry shall to navigate the maze.

Program:

L1 – 7 The Goliath should make tank noises.

L1 – 8 Goliath shall detect and avoid other robots in the maze.

Goliath Level 2 Requirements

System:

L2 – 1 The mass of the Goliath shall not exceed 400 grams. Goliath L1-3

L2 – 2 The Goliath shall be smaller than 5x4x3 inches. Goliath L1-3

L2 – 3 Goliath shall use IR range finder to detect objects. Goliath L1-7

L2 – 4 Goliath’s final version shall be printed with ABS plastic. General 3

L2 – 5 The Goliath shall be power by a single 3.7v RCR123A battery. General 6

Subsystem:

L2 – 6 Main PCB shall have two UV sensors, UV LED, Gyro, and connectors to range-finder. Goliath L1-6

L2 – 7 Arx-robot App will have different operating control modes and direction pad to control Goliath’s

movement. Goliath L1-6

L2 – 8 Goliath shall have 4 x 10 mm cut out on back of Goliath to provide access to charging and

programming hookup. Goliath L1-5

L2 – 9 The Goliath will not have any electrical parts mounted outside. General Level 1-7

L2 – 10 The Goliath should have a latched lid. Interlocking mechanism. General Level 1-8

L2 – 11 The Goliath shall detect objects 10 inches in front. Goliath L1-8

L2 – 12 Goliath will have all-terrain tracks. Goliath L1-1

L2 – 13 The Goliath shall have 10 gears. Goliath L1-1

L2 – 14 The Goliath shall have 2 motor(s), located in the back of the chassis. Goliath L1-1

System Design

Work by Ryan Nguyen (MST Engineer)

System Block Diagram

Figure 1 – System Block Diagram for the Goliath Tank.

The system block diagram illustrates how components of the Goliath communicate and connect with each other; from the control panel that uses Wi-Fi to talk with the mobile app to the wheels and treads. More detailed specific components such as the HM11 Bluetooth model is added, and various parts on the PCB parts are laid out; more items are expected when the E&C engineer completes trade off studies.

System Resource Reports

Figure 2 – Spreadsheet for expenditures for the Goliath Tank.

Figure 3 – Spreadsheet for the mass of the components.

Figure 4 – Spreadsheet for the power consumption of the components.

These tables represent the three resource reports (Cost,  Mass, and Power) that were made for the Goliath Tank.

 

Manufacturing Design

Work by Daniel Guerrero (M&D Engineer)

Initial Design

Figure 6 – Preliminary sketches for the Goliath Tank.

The initial designs of the Goliath Tank were modeled after the 302 Goliath Tank, however close to half way through the semester the customer suggested that we follow the design of the Goliath 303 Tank.

Rapid Prototyping

Throughout the semester the design of the Goliath Tank made drastic changes. The progression of the design for the Goliath Tank can be researched in the following link:

Final Design

The final design is not a perfect model. There were still modifications that the M&D Engineer could have made, if more time was allotted, to make the Goliath Tank better (such as a design that maintains the treads better). Provided are the STL files to the Goliath Tank that was used on the day of the Verification Testing (day of the final).

Goliath Tank STL Files

PCB Design

Work by Milton Ramirez (E&C PCB Engineer)

In order to make the interior of the Goliath Tank less cluttered a custom PCB was created for the sensors. The components that were designed within the PCB were the I2C expander, two UV Sensors, and the gyro. For further information proceed to the blog post on the system schematic and the custom shield layout:

Provided are also the Eagle files for the Custom Shield PCB:

Goliath Custom PCB

Software

Work by Tai Nguyen (E&C Engineer)

Line Following

Before the robot can navigate through the maze, the first objective that must be accomplished is having it follow a line. Even though UV sensors were used, the IR capabilities were being utilized to follow a black line. For further information on the software application to line following proceed to the following blog post:

Robot Detection

To avoid collisions, the Goliath used a ToF Range Finder that would detect any objects that were in front of its path. The following blog post goes into detail on how the Range Finder works and how collisions with obstacles are avoided:

Final Code

The final code is provided in a zipped folder with all the libraries required and code to navigate through the maze:

Goliath Code

Verification Test Plan

Work by Ryan Nguyen (MST Engineer)

The verification test plans were a was to evaluate how well the final project did in terms of mission and customer objectives. One of the main objectives of the MST Engineer is to create these plans. On the day of the final the tests plans were given to Professor Hill and he would evaluate whether the project passed or failed a given objective. Provided are the Verification Test Plan for Goliath:

Spring 2018 Verification Test Plan V2

 

Lessons Learned

For students that proceed to take this class the following is advice that is offered in order to ensure that the project is successful:

  1. Ask anyone who has taken this class and this will be one of the first things they say, make sure you do research prior to beginning the project. This website has years of knowledge that was done by other students. Utilize it and you will do yourself the favor of saving time. I’ll get into more detail about this point but time is your most valuable resource to this class.
  2. Make sure that prototyping the design begins immediately! The biggest issue that the Goliath team had was that the first fully built tank was not given for the rest of the team to work on until extremely late in the semester. As one would expect, the first design will have serious issues that need to be fixed (For our team it was that the treads were having trouble staying in place). If the first design was completed weeks in advanced then modifications could have been made to resolve the problem.
  3. In terms of 3D printing, make sure that you rely on multiple services to create your prints. Maker’s Society is a great place to start but also see if you can find anywhere else as it does take time to get prints done and the quicker you can receive them the faster the robot can be built.
  4. For the PCB, before sending it to be manufactured double check that every trace on the PCB is mapped correctly and that there isn’t any connection missing. We were unable to use our PCB due to small oversights in the circuit schematics, so make sure multiple people from the team look over the PCB Layout.
  5. Start working on the software early. There is a lot of trouble shooting that goes into writing the software and every time a new component is implemented there is a high possibility that things will not compile.
  6. If the E&C Engineer has not taken EE444 he/she will be at a slight disadvantage. Two students from my section had taken that course the semester prior and it was evident that both were very knowledgeable on how to implement the software and how to tackle the objectives that were placed in regards to navigating the maze. That does not mean it is impossible to be a successful E&C engineer, I believe all people in that position have to follow the same lab sequence that is offered in that class, but you will need to work much harder.
  7. When Professor Hill was talking about how designing the 3DoT board was going he brought up a point that resonates with me still as I write this. For any task, you will give it an expected time to accomplish. Once you have that time you want to double it, then you double it once more and that is close to the real amount of time that it will take to complete that certain task. My point is that this class is not as straightforward as you will map it out to be. Always be prepared for set backs and unforeseen obstacles. Time will go by quicker than you imagine and if you squander it the project may not turn out successful.

 

Project Video

Created by Ernie Trujillo (Project Manager)

More Info

If you are interested in researching further into our project check out the Preliminary Design Review done for the Goliath Tank:

Resources

www.arxterra.com/goliath-fall-2017-final-blog-post/

 

Goliath Spring 2018 – Line Following Code

By: Tai Nguyen (E&C Engineer)

Verified By: Ernie Trujillo (Project Manager)

Approved By: Miguel Garcia (Quality Assurance)

Introduction

The Goliath tank is using (2) IR sensors on (2) Adafruit SI1145 to line follow.  The SI1145 doesn’t have an IR LED on it, so an external 850nm IR LED bought from Everlight through Digikey is used to produce the infrared light.  The SI1145 is an I2C addressing device, therefore they share the same I2C address at 0x60.  To resolve this issue, the PCA9540B 2-channel I2C multiplexer is used to communicate to both devices.  For testing purposes, the TCA9548 multiplexer was used.

 

IR Sensing

Infrared sensors work by using an LED to emit infrared light and then having a sensor that measures the intensity of the reflected light. Lighter colors will tend to reflect more IR light while darker colors will tend to absorb IR light, thereby reducing the amount of light reflected.  Due to the UV sensor not having its own IR LED, we had to look at the wavelength graph on the SI1145 datasheet to determine the range of wavelengths the sensor can read.

Figure 1. Spectral Response on page 14 of the datasheet.

In the graph, at the peak of the IR Photodiode, we see that the range of optimal wavelength values is from 750-850 nm.  The 850nm was the most common IR LED and the cheapest, so it was chosen for the test.

Test Setup

I hooked up the LED to a digital pin on the SparkFun Pro Micro and showed it downward side by side to the IR sensor.  After adjustments, I found the optimal height above the surface you’re measuring to be ¾ inch.  This gives you a clear 100-200 LSBs between reading a black surface and a white surface.

Line Following Algorithm

Figure 2. Code in the main loop after setup and initialization code.

If you notice, we send the motor speed to the opposite PWM output.  This way, we can easily control the motors based on what the IR sensor is reading.  The way black line following works, we want the motor that is not seeing white, to speed up to return the sensor to the black line.  This solution was only implemented however because of the way the IR sensor was soldered to the protoboard.  IR1 was on the side of motor A and IR was on motor B.  If we swap these sensors, we wouldn’t have to swap the PWM outputs.

Example:

IR1 reads a value of 1000, and IR reads 300.  According to this, we know that IR on channel 0 is reading black while IR1 is reading white.  We’ll need to tell the motor on theIR1 side to speed up and return back to the line.  We also want IR0 to slow down to assist IR1 to return quickly in order to correct the robot before the next intersection.

Conclusion

Line following has been done by many colleges and projects, so there are plenty of resources to assist many beginners.  If robots use IR sensors to navigate through a maze, the maze would be required to have lines in the middle of pathways for robots to follow.  White surfaces reflect more IR light back into the photodiode and black surfaces will tend to absorb the light, reflecting less back, resulting in a lower LSB value.

References

  1. https://cdn-shop.adafruit.com/datasheets/Si1145-46-47.pdf
  2. https://circuitdigest.com/microcontroller-projects/line-follower-robot-using-arduino

Goliath Spring 2018 – Ultrasonic Sensor Testing

Written By: Milton Ramirez (Electronics & Control Engineer)

Verified By: Ernie Trujillo (Project Manager)

Approved By: Miguel Garcia (Quality Assurance)

Table of Contents

Introduction

The ultrasonic sensor works by one side sending an Ultrasonic sound and the other side recording the distance by how long it takes to listen to the echo. The sound that the sensor produces is so low that it cannot be heard by human ears.

Figure 1 – Fritzing diagram of the testing set up.

Parts

  • Arduino Uno R3
  • 4 alligator wires
  • 4 jumper wire t
  • Ultrasonic sensor

Testing

So, for my test, I connect an Ultrasonic sensor to an Arduino Uno microprocessor. Then upload a code that was found in a library called new ping that already had a code called newpinnexample that worked with the ultrasonic and then displayed the values in the serial monitor in Arduino. This code has the delay at 50 ms but I changed this to 300ms, so it can be a little easier to keep track of all the values that are being displayed in the serial monitor in the Arduino program. Another thing I needed to change was the max value since the code had it set to 200cm. I changed this to 500  since most product descriptions for this sensor say that the max distance is between 400cm-500cm.

Figure 2 – Code. Picture of the code used to test the Ultrasonic

Results

For the most part, most of the results I got were similar to what the product description said, the minimum value I was able to get was 2cm. Anything lower than that would result in 0 cm.

Figure 3 – Serial motor capture displaying what happen if you covered you hand over the Ultrasonic sensor.

 

Figure 4 – Serial monitor capture at a fixed point.

As you can see in Picture 3 there seem to be a +/- 1 margin of error in the reading in the Ultrasonic sensor.

Figure 5 – Serial Print of the max values

As you see, the max value that I was able to record was 403cm which is in between the max range in the sensor description, which is supposed to be between 400cm-500cm.

Conclusion

In conclusion, the Ultrasonic sensor seems to be a great option to use in the collision avoidance part of the class’s projects. The only problem with the sensor is that it needs 5V to operate and cannot be directly connected to any pins in the 3Dot board since the 3dot can only supply 3.3V. It might also be tedious to code since you might have to make a condition statement that can overcome the margin of error in the readings.

References

  1. https://www.mouser.com/ProductDetail/OSEPP-Electronics/HC-SR04?qs=wNBL%252bABd93PqZEhuhHkuOw%3D%3D&gclid=Cj0KCQjw0PTXBRCGARIsAKNYfG0ABolQAfXGFxkBtA86J-wariihJlxa73V3iyIKwpgaNUm7F2vtmasaAptuEALw_wcB

Goliath Spring 2018 – PCB Test

By: Milton Ramirez (E&C Engineer)

Verified By: Ernie Trujillo (Project Manager)

Approved By: Miguel Garcia (Quality Assurance)

Table of Contents

Introduction

This blog post will detail our testing procedures to determine whether the goliath PCB board works as intended.

Body

We first tested the PCB with a continuity test. We first checked if the SDA and SCL pins were connected to the multiplexer, gyro, and the rangefinder connectors. Then we checked the continuity of voltage and ground which worked fine. The problem occurred when we finally tried to run the code. We ran a gyro code to check if the gyro worked properly, but we didn’t get any readings.

Figure 1. The output that we got when we ran the code as it can be seen the gyro was giving back no readings.

Then looking back at the hookup of the Gyro sensor I overlooked that the Vlogic pin was suppose to be connected to the 3.3V pin . So to confirm that this was the problem, we connected a wire from the 22nF capacitor that went from the Vlogic pin to the 3.3V pin. We got the following figure.

Figure 2. Gyro output when we connected a jumper wire from the Vlogic capacitor to 3.3V.

Even though we were getting the pro micro to finally display values these values where not the ones that were desired. So we proceeded to test the UV sensors with the code as well . These were also not responding. Here we realized that it wasn’t the UV sensor that wasn’t working but the PCA9540BD Multiplexer was not responding. At this point, we had to cut our losses and just use the breakout boards that this PCB consisted of which were the  Si1145 UV sensor, ITG-3200 Gyro breakout, and the multiplexer.

 

Lessons Learned

It is crucial to check the hookup guides for some of these breakout board if provided and most of the companies that sell these breakout boards do provide this. Since most of these PCB boards will be designed to work for the 3DoT board, a lot of these breakout board specific pins will not be included.

 

Reference

  1. https://learn.sparkfun.com/tutorials/itg-3200-hookup-guide?_ga=2.107125259.843316059.1526443995-392003097.1517876398
  2. https://www.dreamstime.com/stock-images-pcb-testing-image91414

Goliath Spring 2018 – Rapid Prototyping

By: Daniel Guerrero (M&D Engineer)

Verified By: Ernie Trujillo (Project Manager)

Approved By: Miguel Garcia (Quality Assurance)

Table of Contents

1st Iteration: February 16th, 2018

Introduction:

This is the beginning of creating a scale model of the German 302 goliath tank. Since it is the beginning of the semester and my team wasn’t set on the location of all of our electrical components inside the tank I wanted to create an open design to be able to fit any of the pieces they needed.

Details:

For this design I wanted to follow our professor’s request in having both motors in the back/front of the tank. For that reason I created the platform, but at the same time I didn’t want it to take up the entire back part of center console so I left a gap underneath for wires and other pieces that might need to go underneath. The opening at the bottom of the center console was to allow the line following sensors to function internally. As for the top and side pieces I wanted to keep them open to have options in terms of our placement of all of our components. Lastly, the side pieces were made thick enough to be able to screw into and attach to the bottom part of the tank. The design is meant to be simple yet sturdy to accommodate for the weight of the components being put into the tank.

Figure 1. Shows an explosive view of the first design I made to focus more on the overall shape of the tank and start sizing components that we could be using.

Conclusion:

It is better to have contacted all of your printing resources beforehand, for some reason this print took a while to get to me and I had to move on to the next design the next day. Overall, this design is much larger than what we want to get to, but it would serve as a good foundation and a start to what we have coming.

2nd Iteration: March 2nd, 2018

Introduction:

Following the German 302 goliath tank I leaned towards the previous model for my inspiration. At the same time I also wanted focus my efforts on designing an efficient and realistic side piece, for that reason I wanted to test different methods for the design.

Details:

With this design I decided to try and get close to the older model from a previous year. In this design I wanted to skip forward in creating a housing space for the motors and making a permanent space for them. On the same piece I also introduced the opening on the front of the bottom piece for the range finder.

I also started to design the Hinges for the side portion. I wanted to deviate from the old model and crate a moving support hinge so my first thought was to create half of the hinge beginning from the bottom of the side pieces. And the small circular parts in between the hinges are meant for the other end of the spring to connect to from the “bottom wheel hinge” photo.

As for the top portion I wanted to keep the inside accessible while mimicking the lids in the original German goliath 302 model. I wasn’t sure how much room they needed inside the tank so I kept it open in case of overflow.

Figure 2. Is the image of the bottom hinge and its design. The total width of this piece is 5mmand should hold 2 wheels on the bottom edge

Figure 3. This is the side piece as a whole, the box is hollow and the four pairs of loops at the bottom resemble the placement of the hinges that will hold the wheels.

Conclusion:

After the print I realized there were some changes that needed to be made. One of which was the size and thickness of the wheels or the set up I had to hold them. I also noticed that the box is a little too big and too square so in the next coming days I’ll be thinking of a way to fix that. I haven’t been able to access the files of the previous models design through this class on the google drive so most, if not all, of the upcoming designs and modifications will be made from scratch.

3rd iteration: March 14th, 2018

Introduction:

Last week I got the bottom piece printed first through Ridwan and found a few mistakes only found through printing. While waiting for the other prints I decided to move onto the gear. I didn’t know how to make gears so I had to do a little research on my own and from that I created the design that’s shown in this folder.

Details:

In this iteration of my design there wasn’t that much to change but there were some key features that I needed to fix in the bottom portion of the center console. For example, the size of the opening for the range finder wasn’t exact so I wanted to fix that. The bars over the motors should be more secure over the motor compared to the last iteration. The last thing I did was adjust the length of the bottom I noticed that before it could only fit the 3dot board itself not considering any of the cables that could be running in front or behind. As you can see the gear resembles the ideal look of the one in the photo, but the tips of the gear ended up being too wide for the treads themselves.

Figure 4. Is the first leap into designing the bottom piece of the German 302 goliath tank.

Figure 5. At some point I knew I was going to have to create a gear that mimics the Tamiya so to start of easy, this is the first design of the gear I’ve created, based off the Youtube training video I found and the image of a tank that Ridwan showed me.

Conclusion:

While waiting for the electrical components I need to check the dimensions of the pieces themselves to make sure it all fits together. For this iteration specifically I know I’ll be needing to change the dimensions of the gear because the spikes are too think for the treads we have.

4th Iteration: March 20th, 2018

Introduction:

Things are starting to pick up in terms of design and trying to get a print available for my team. I managed to connect with maker’s society and access their 3D printing farm so my hope for the upcoming weeks and until the end of the semester is to have an appropriate turn out rate for the 3D prints of the iterations.

Details:

For this iteration, my goal was to have something for the group to work on before the break. I would like to start with the separate hinge pieces, I decided to try a different design, something new, because the previous design didn’t work as well as I thought, the wheels that I would have had to make for the previous design would have been too thin and too small in terms of diameter due to wheel bite. As for the rest of the side, I modified the “ee400d4thsidepart[s]” to look exactly like the previous semester but still implementing the hinge concept in terms of separate pieces and separating the wheel placements above the piece. The spacing in between the top and bottom wheel placements are different which is why I have two different wheel sizes

Figure 6. This is the second attempt at making a hinge that could work underneath the main side piece.

Figure 7. The spacing in between the top and bottom wheel placements are different which is why I have two different wheel sizes.

For the center console, I would like to first point out the hole in the “ee400dmiddleconnector” piece. The reason why I put that gap there was to help create space for the components that we put inside the tank, which is why there is also a hole in the center side pieces as well. For “ee400d4thbotpart” the only difference I made was the opening at the back of the tank for the micro-USB cable to run through. Lastly, for the top I was told there was a possibility of using a UV sensor in our tank so I created an opening for the sensor to go through and I also tried to mimic the placement of the panel openings on the German 302 goliath tank found online and previous models.

Conclusion:

I hoping this design will work out in terms of the hinges and the opening on the sides of the tank to fit all of the electrical components. At this point in time, my group is still in the coding phase and building the PCB so I’m still not sure on what they are implementing and integrating into this design. My goal for the break was to create at least the center console for the rest of my group to figure out how to place the rest of the components inside the vehicle so that way when I got back from break I would have something ready for them.

5th Iteration: April 5th, 2018

Introduction:

Over spring break, even though I was out of town, I was able to get my Solidworks program on my computer to work and came up with a model ready to print by the time I got back. For this new design, I was advised by both Professor Hill and Ridwan to follow the images of “Monkeyfab’s” Goliath tank model. After doing a little bit of research, I had to size it down and change a few components to accommodate for our size restriction and location of our electrical components but at the same time followed the new design.

Figure 8. The Goliath tank was following inspiration from the MonkeyFab design.

Details/ Modifications:

Before spring break, I practiced on how to make gears so I did a little research on my own and from that I created the design that’s shown in this folder. The reason why I chose to follow the design of Tamiya’s gear is because I wasn’t sure if I would have enough time to create and print all of the pieces for the treads so I stuck with the gear that resembles the look of the parts provided in the kit from Professor Hill.

Figure 9. A copy of the Tamiya gear design with the adjust length of the spikes so that it catches the tracks better.

Figure 10. From that I moved onto the top piece and again I tried to mimic what I saw in the monkey fab photo and was able to recreate the look. I didn’t have too much space but I resized it to fit on our tank and look like the part.

From that, I moved onto the top piece and again I tried to mimic what I saw in the photo and was able to recreate the look. I didn’t have too much space but I resized it to fit on our tank and look like the part. As for the hinges, again space was a concern and I wanted to have a strong hinge so I put those parts on top of the piece extending outward which would connect to the bottom piece which was modified to accommodate for the new hinge.

Lastly, the “5thiterside piece” has an opening towards the back of the piece which lines up with the motor placement. The holes along the lower perimeter of the piece were my idea of finding a way to attach the side pieces without getting in the way of the closing hatch. One of the things that I had to think about was how to efficiently keep the lid closed on the tank.

Figure 11. This is a side view of the side piece used on the center console. The wholes along the bottom edge represent the pin locations to keep it closed.

Conclusion:

One of the things I realized while researching this new design was that there were no “stl” or “solidworks” files for any of the parts shown in the monkey fab design. I was able to find multiple images which gave really good insights on what the pieces look like, but none of them gave concrete dimensions on the size of their tank. Also their gear system is a lot different than ours which is why I don’t have an additional piece on the side of the tank behind the green gear in the picture above. Overall, there was not much to go off of but I did end up scaling the image above and was able to produce a center console close to what the tank looks like now.

6th Iteration: April 12th – 16th, 2018

Introduction:

After my first attempt in trying to design parts of this new model, I tried putting it all together and noticed a couple things wrong with the prints. I also put my focus on all the pieces that were going to be implemented to make up each side of our tank.

Details/Modifications:

Since last week, I’ve made some pretty big changes to our model. Starting off with the bottom of the tank I added two tabs on each side of the bottom piece that has a 3mm diameter hole to screw the corresponding holes on the “sidepiece041718” to create the center console. This will allow the side walls of the center console to have a better connection to the bottom piece and create a sturdy tank. The other difference I would like to point out on the same piece is that I moved the hinge from being on top of the tank to becoming a part of the top and making the hinge flush.

Figure 12. Here is the 1st iteration of the bottom piece from the new model.

When designing the new model, there seemed to be a lot of parts in the image provided to create the side piece. First off I created the hinge holders in two separate pieces to resemble the design. One is the front and the other the back, designed to each hold two hinges. These two hinges would then be screwed underneath “centersidepiece” along the outside edge to resemble the look. The “bsidehingeholder” is meant to fit completely underneath the center side piece with only the lower half of “fsidehingeholder”. The angled portion of “fsidehingeholder” is mean to hold the “motified bottom hinge041618”. The new wheel holders are meant to hold two thin wheels created earlier this semester on either side at 5mm in diameter and 2mm in thickness and on the end with the small tab.

Figure 13. This is the front end of the side hinge holders that will be screwed under the center side piece along the outside edge.

Figure 14. This is the center side piece that makes up the majority of the side of our tank. The circular and rectangular indentations represent the design of the tank used in the 1940’s.

Figure 15. This is the back end of the side hinge holders that fits perfectly underneath the length of the center side piece along with the other hinge holder Figure 13.

As for the gear, I used what I learned from the first attempt to create this second-gen gear and try to follow the Tamiya design provided by Professor Hill. With this gear I also had to modify the size of each part. For example, the diameter for the motor to go through was a little more complex than just a circle so I created a shape that would catch onto the flat side of the motor bit and rotate as needed. The spikes were also altered in a way that would extend them out a little bit further to better catch onto the treads.

Figure 16. The circle in the center of the gear is not a perfect circle which is designed to catch the flat end on the motor pin.

Conclusion:

These new pieces should bring our team that much closer to completing the design. I hoping that when these pieces print that they all come out fine and work the way they should. One of the other things I have to think about in the upcoming week are the attachments/placements for the springs.

7th Iteration: April 18th, 2018

Introduction:

Last week I managed to create and print the majority of our parts for this design A few problems that I ran into this week was with the printing properties mainly the quality of the overall print. Even though the printer can print at 50 microns, there was one component in particular that I wasn’t aware of being too thin. Which lead to some changes that I made this week.

Details/ Modifications:

For this Iteration, there wasn’t that much of a difference from previous methods but the hinge on both the top and bottom pieces of the center console were too thin to maintain a solid hold on each other. After the print and while attempting to put it together the hinge started to break. Because of that, I designed the hinge to be thicker than the model before approximately 1mm all around compared to 0.5mm. I also wanted to point out that this was the first design in which I implemented a trade-off study, specifically the hatch closing feature which has two pieces that extend from the top and snaps closed on the corresponding grooves on the bottom piece.

Figure 17. The tradeoff study being implemented on the front of the bottom of the tank shown with the two rectangular triangles on either side of the range finder opening.

Figure 18. The same study being implemented on the front of the top of the tank, but looking at it from the back.

Thanks to Ridwan’s casing for his caliper, I thought of an alternate way to close the lid. His storage case for his caliper has two snapping pieces the keep the box close, which in turn lead to the closing features I added to my design. The reason why I made two tabs was because I didn’t want the lid to get in the way of the range finder. Lastly, there still wasn’t any notifications on the orientation or placement of the 3dot board which is why I don’t have a set or fixed location for the electrical components.

8th Iteration: April 19th, 2018

Introduction:

After making the modifications last week I found that there was still some more work to do. This week I focused on modifying the tank to some of the components we had just bought from McMaster-Carr and Sparkfun.

Details/ Modifications:

For today’s rendition of the bottom piece, I changed the size of the opening for the range finder in the front.  For the bottom hinge folder towards the back, I added two points for which the springs from McMaster will connect. For the other hinge, I did the same, but I also extended the length of it to accommodate for the minimum size provided by McMaster-Carr.

Figure 19. Identifying the small tabs along the length of the back side hinge holder two rectangles placed.

Figure 20. Due to the length of the springs from McMaster –Carr I needed to adjust the placement of the tabs on the front side hinge holder as well.

Figure 21. Changed the length of the gear spikes to a finer point and subtracted 0.5mm.

I noticed after the last print I made that the spikes on the gear held onto the treads too long while rotating. To fix this problem I changed the length of the spikes but tall enough to efficiently run the tank. I also changed the diameter of the placement for the motor pin. Previously, I took an exact measurement on the motor pin and matched that on my gear but I found that, due to melting properties I had to make the hole a little bit bigger.

Conclusion:

I’ve realized that when using multiple printers as your source of production, it is hard to determine the right size for every piece every print. Every printer has a different effect on the material we used to print.  I’ve noticed that so far I’ve used four different printers between Ridwan and the 3D printing farm at maker’s society.

9th Iteration: April 23rd to 25th, 2018

Introduction:

It’s getting towards the end of the semester, luckily, this week I got some details on the dimensions of the electrical components that we’ll be using inside of our tank. So my focus for this week after talking to Professor Hill is to get an idea of how I’m going to mount the electrical components to the chassis.

Details/ Modifications:

Figure 22. Top view of all of the electrical components. And the 43.18 represents the length of the proposed PCB.

Figure 23. This is the bottom side of all the proposed electrical components connected to each other.

Today on the 23rd I was told about the electrical components and their exact dimensions. The biggest piece of the electrical components resembles the 3dot board, provided by Chris H. at 3cm x 7cm. The next larger, thicker rectangle resembles the size of the battery that would be on the board. Next, are the two female pins that are holding the PCB over the 3dot board and the range finder that is connected to the PCB. Concept option suggested by Professor Hill.

 

Figure 24. The holes at the bottom of the center side piece serve as a guide to the placement of the screws to combine the hinge holders to the center side piece.

For the center side piece, I had to adjust the placement of the screws and hinges which then lead to re-printing the rest of the side pieces. Before the screw points were centered onto the piece, with this new layout I moved them more to the flat end, rather than the cut off end, to extend the length of the hinges and to allow more space for the moving parts as seen in the picture of the original design. I also changed the width of the material surrounding the holes on the previous design to 1mm as shown on “wheelholder9thiteration”.

Figure 25. Had to adjust the width of 3D printing material that surrounded the holes so that way it didn’t print weak and breakable hinges.

As for the center console, I added a screw point just to test and see where I could line up the 3dot board in reference to the top (a piece that will be removed/ modified later when I get the exact dimensions and the physical parts). Lastly, there was a small change on the side piece in which I added a 3mm diameter hole for the other tank wheels to go through.

Figure 26. Wanted to show the addition of an extra hole to serve as a guide to the rolling wheels opposite of the gears.

Conclusion:

As we move towards actually demoing and implementing our electrical components I noticed that there is about a 2cm gap between the placement of the electrical components and the bottom of the tank. Further iterations at this point depend on how the prints come out and whether or not the group and or instructors see any changes that could be made.

10th Iteration: April 26th –April 30th, 2018

Introduction:

As it’s getting close to the end of the semester, I’m looking to finely tune specific parts to get our tank looking like an actual model. Over the past week, I was able to create a secure position for the 3dot board and my hope is to have a physical 3dot board ready for the next print.

Details/ Modifications:

As our tank is getting closer to our final design, I had to play around with the length of the hinge holders to make sure I had space for everything. For example, the small tabs that lead to the springs on “10thiterbsidehingeholder0430” moved closer to the hinge to avoid being broken off. To make sure the width between the wheels matches the width of the guides on the tread I modified one of the older designs to change the thickness of the wheel to 2mm.

Figure 27. After the print I realized I had change the placement of everything a little bit by making more space for the springs.

One of the key new features that I added to my tank is the mounting points for the 3dot board on the “goliath10thtopwhinge” piece.

Figure 28. The electronic components file is the same as before but this time I added two points on the front end of the lid to screw the pieces on and the two groves in the back used as guide and placement of the back end of the electrical components and securing it to the lid.

In terms of the bottom piece, I had to change the placement of range finder viewpoint to work with the modification of the top piece and location of the electrical components. I also moved the location of the line following sensor opening closer to the front to line up with the electrical components on the lid.

Conclusion:

After the prints were made, the plain 3dot board used in previous semesters given to me to test and see if the board fit. Due to false information, the width of the board was actually larger than I was previously told. Along with other parts, I’ll be making some more modifications and prints in the next couple of days.

 

11th Iteration: May 3rd, 2018

Introduction:

After making a few modifications earlier this week I was able to quickly get the prints from Maker’s Society, but some of the parts I made didn’t really seem to fit the way I wanted it to be. For example, the dual hinge had a while biting problem so I played around with different lengths. The spacing of everything underneath the center side piece needed an adjustment as well.

Details/ Modifications:

Starting off with the dual hinge, had to adjust the overall length of the piece because it was too close to the hinge holder and gear. My solution was to extend the piece above the two-wheel pin locations by 5mm (12.5mm total) then realized that it was too long so I decided to take off 3mm and changed the length again to 9.5mm.

The next couple of parts I would like to talk about are the front and back side hinge holders. In all of the previous designs, I was concerned about the spacing for the hinges and screws. In this design, I feel like I have figured it out in the sense that I put three of the tabs for the springs on the “11thiterbsidehingeholder” moved the screws and adjusted the spacing on “fsidehingeholder11th”.

Figure 29. This is the back side hinge holder that extends past the length of the bottom edge of the center side piece.

Figure 30. This is the front side hinge holder which will be angling towards the gear.

For the center side pieces, I also realized based off my Solidworks knowledge capabilities that I can’t mirror sketches and the hole locations on an entire piece. For that reason, I created two center side pieces in order to solve that problem. On this same piece, I coordinated the new screw locations on the side hinge holders to the bottom of this piece.

Figure 31. The adjustment made to creating space for the 3dot board mounted to the top of the center console.

The “goliath11thtopwhinge” piece has only one small difference, I increased the gap of the 3dot board holder by 2mm to adjust to the actual dimensions of 3.5cm in width. It is now 33mm in width from the part’s base. The reason why I made the gap 2mm smaller than the actual size was that I wanted a tight fit and I had the width of the top piece as a size constraint if the parts were any smaller they could break off easily. I also adjusted the length of the top piece by 0.5 mm to make it easier to open the lid of the center console. I also created the rolling wheels that would be opposite of the gears on the tank. I also included the screw points of the center side piece to the “sidepiece11th”.

Figure 32. The four hole in the center off the side piece represent the locations of all the screws that will hold the center side piece up.

Figure 33. This is the 3D rendition of the wheels used on the opposite side of the gears.

Conclusion:

Although I have all the parts printed, I’m not too stoked that there are different colors in the design. If there is enough time, I’ll be looking to make everything the same color. Between the size constraint of the springs from McMaster-Carr and the size constraint of the tank, the center console sits a little too high above the ground compared to what I wanted. In this upcoming week after the remaining prints, I’ll be looking for any last minute modifications that need to be made.

12th Iteration May 10th, 2018

Introduction:

This is crunch time, it’s cutting it close but there some very important changes that needed to be made. For this last iteration of my design, I edited quite a few pieces. Pieces in which I’ll discuss in this blog post.

Details on Modifications:

First off, there were a couple of things that didn’t need changing, but a reprint. For example, the “11thiterbsidehingeholder” and “fsidehingeholder11th” is correct in terms of dimensions and design but for some reason, the piece was warped and wasn’t flushed with the outside edge of the center side pieces. Also, the gear and wheel holders were printed in a different color (pink) so I asked for a re-print to match the color scheme.

Figure 34. Top view of the 11th iteration of our tank.

Figure 35. Side view image of the tank, it’s kind of hard to notice, but the tank rides pretty high off the ground.

For the center side pieces, the orientation of the squares and circles on the outside face were backwards so I fixed that to match the model below. As for the dual hinge, the arm was still too long so I adjusted the length to allow the wheels to fall just below the “fsidehingeholder11th”

Figure 36. A photo of an actual German 303 goliath tank from WW2 in 1942. Also known as the “doddle bug” by the soldiers at that time.

Moving on to the center console. The orientation of the front of the tank and the gears is going to be a bit backward, but it should still work all the same. In the previous iteration I had the gear and the “rolling wheels” leveled with each other, but that doesn’t match the 303 goliath model it looks more like the 302. For that reason, I extended the face with the range finder port to about 27mm rather than 20mm and I made the tabs towards the front of the bottom piece a bit larger to accommodate for both the screws to go through above the hole for the bushings and bring the axle lower to get that 303 look. For the top piece, I followed Professor Hill’s request in making only one tab to snap the center console closed. The only reason why I had two before was to make sure the range finder can “see” between the two tabs.

Lastly, for the flat side pieces, I relocated the corresponding holes to the bottom piece of the tank and created a housing to cover the exposed motor piece on either side. I also adjust the lengths of all the edges to match the perimeter of the center console.

Conclusion:

For the number of iterations that I went through, this project really enhanced my solid works skills and my ability to adapt quickly to changes. For example, after making these last modifications I realized I received some poor quality prints but was able to redesign them fast enough to get a new printed model. For the next semester, my recommendation would be to try and find a good way to fit both the range finder and the motors on the same side. I’m hoping that with my submission my files can be accessibly viewed by others to take the next step forward.

References

  1. http://www.monkeyfab.com/goliat_sterowanie/
  2. Figure 36 was from a youtube video
  3. https://www.solidworks.com/

 

Goliath Spring 2018 – Turning Method

By: Tai Nguyen (E&C Engineer)

Verified By: Ernie Trujillo (Project Manager)

Approved By: Miguel Garcia (Quality Assurance)

Table of Contents

Introduction

The turning method of choice was turning using a gyro.  The gyro we chose was the SparkFun Triple-Axis Digital-Output Gyro Breakout – ITG-3200.  This specific breakout features an I2C serial interface, optional external clock, and digital outputs for X, Y, and Z axis angular rate sensors.  The VDD supply voltage ranges from 2.1-3.6V.  We ran tests using a 3.3V VDD from the SparkFun ProMicro 3.3V 8MHz.

How does a Gyro Work?

Before getting started, it is important to know how a gyro functions and how to use it.  A gyro measures angular velocity, the rate of change of the angular position over time, which is usually given in degrees per second on the datasheet.  If you want your robot to turn a certain amount of degrees, for example, a 90-degree angle, we would not need the angular velocity, but angular position.  From Calculus I, we know that the derivative of position is velocity.  To obtain a position from velocity, we will need to perform an integration.

An integration involves your variable multiplied by some delta time.  Most people know of integration as an “area under the curve” and to solve for more parabolic curves, techniques like left-side, right-side, midpoint, or trapezoidal integration come to mind, where it is a sum of multiple areas across a delta time.  In digital systems, it is very difficult to perform continuous integration, so the simpler solution is to take a sum of finite delta angles over delta t.

Figure 1: Trapezoid Integration

 

 

Initialization code

Figure 2: Initialization code

These are global variables created outside of void setup() and void loop().  The first variable is a float data type to achieve the best accuracy when it comes to integrating (the closer we can get to 90 degrees ex: 90.039 degrees, the better).  We also want a static variable qualifier to preserve the angle data as we slowly add each delta angle loop after loop.  The variable then is what is going to keep track of how much time has passed since call of the millis() function, which stores time passed in milliseconds.  tSpeed is a constant to determine our turn speed for our motors.  zRate is a SIGNED 16-bit variable that records the angular velocity.

Main Code

Figure 3: Error correction by use of if statements

A common issue with any gyro that must be fixed is drift.  When your gyro is sitting still, there is an offset or an error that occurs.  Try plugging in your gyro and reading the angular velocity while it is sitting still.  That is your error for that axis.  Over time, this angle offset will add up to multiple turns/rotations and that is what drift is.  There are 2 ways you can try and solve this issue.  One way is to first notice that your error tends to jump around, like for example, you’re reading the zRate and it’s displaying 5.25, 5.06, 5.78, 5.60, 5.80 and etc.  The error is not a constant.  So the method to get a singular constant error would be to run a 20 point average.  A running average takes N points of data and finds an average.  To do this, you would apply a for loop.

Figure 4: Example 20-point average code

Here is an example that sums up each point of data using a for loop.  After you find the sum, create a new variable and divide that sum by N amount of points that you recorded.

Figure 5: Calculation of average

After you get this term, when you record your zRate, subtract this offset value and you’ll achieve a near 0 value when you’re not moving.

The second way of calibrating your velocity offset is to apply a hysteresis (double threshold) with if statements.  Figure 2 shows if statements that say, if the speed is less than +2 and greater than -2, then the gyro is not moving and to set the angular velocity data = 0 degrees/second for that reading.

Figure 6: Integration code

Uncomment the Serial.println(currentAngle) to test and track how many degrees your gyro has rotated.

Below is the turning code for right turns and turning around:

Figure 7: Gyro code for Right turn

Figure 8: Gyro code for turning around

Conclusion

Gyros are great tools that have applications such as orientation measuring or turning.  A gyro outputs an angular velocity which we use to determine angular position through integration.  In almost every gyro, there is an error that accumulates over time called drift.  Drift occurs when the gyro rotates faster than you can sample and so your integration approximation is going to be incorrect.  Integration in digital systems are never 100% accurate so there will always be some small error in the end.

References

  1. https://www.sparkfun.com/products/11977
  2. http://tutorial.math.lamar.edu/Classes/CalcII/ApproximatingDefIntegrals_files/image002.gif

 

 

 

 

Goliath Spring 2018 – Arxterra Custom Telemetry

By: Ryan Nguyen (MST Engineer)

Verified By: Ernie Trujillo (Project Manager)

Approved By: Miguel Garcia (Quality Assurance)

Introduction

Arxterra controls were set up based on mission objectives and requirements. Four modes of control during remote mode are predetermined route mode, recorded route mode, playback route mode, and route with avoidance. The predetermined route mode commands the Goliath to drive through a path that was determined by the E&C engineer, this path is most likely the shortest path through the maze. The recorded route mode records the path that the user inputs. The playback mode takes the recorded path from memory; Goliath then repeats the same path that was memorized. Lastly, the route with avoidance calls the avoidance subroutine and allows Goliath to navigate the maze while avoiding obstacles. The option allows movement, which gives the user the ability to override the modes and stop the motors.

Figure 1. Capture of the screen showing custom controls from Arxterra App

Testing

Figure 2. Control panel on Arxterra website, showing successful connection and video live feed

MST engineer tested community mode on the Arxterra app by linking the app with the Arxterra control panel on a computer. After mounting the robot, or the app, the control panels were able to receive a live transmission from the phone; furthermore, all controls and custom controls are showing up and ready to go. Battery and telemetry also present, indicating successful test.

Figure 3. Solid LED light indicates a successful connection between phone and Bluetooth module.

Since the 3dot board version 6 was not ready yet, the HM 11 Bluetooth module was tested separately on a breadboard with the Arduino standard board as the microprocessor. The code from the 3dot library was uploaded to the Arduino and several attempts to connect the module to MST engineer’s mobile phone was successful, indicating that the HM 11 Bluetooth module on the 3dot board version 6 should work.

References

  1. https://www.mouser.com/ProductDetail/Seeed-Studio/317030001?qs=SElPoaY2y5J3Mitl7sc2TA%3D%3D&gclid=CjwKCAjw_tTXBRBsEiwArqXyMlGpqg3f_3dhQyxT-aLVRoob5-ngyfoA-mhiYWZeuJaPzaxFBMzknhoC8UsQAvD_BwE
  2. www.arxterra.com/goliath-fall-2017-app-directed-rc-record-and-playback/#3Dot_Custom_Command_Setup

 

Goliath Spring 2018 – Detection Code and Demonstration

By: Tai Nguyen (E&C Engineer)

Verified By: Ernie Trujillo (Project Manager)

Approved By: Miguel Garcia (Quality Assurance)

Table of Contents

Introduction

The range finder, upon hearing reviews about it from previous semesters that it was a good choice above the ultrasonic sensor, has an ambient light sensor, range sensor, and IR emitter.  Depending on the ambient light in the room, the reflectance from the IR could vary.  The range finder has precise and accurate range detection up to 100mm. The SparkFun ToF Range Finder Sensor – VL6180 has an I2C address at 0x29.

How to use the Sensor

It was fairly simple to get a simple test running.

Step 1: Go onto the SparkFun website and locate the part.

Step 2: Under the documents tab, there is a link to the GitHub of the official example code and libraries.

Step 3: Download it all and inside the example code folder, copy over the SparkFun-VL6180 library and .cpp file.

Step 4: Go inside the code and make sure it is setup for I2C use. (ex: include <Wire.h>, Wire.Begin as well as the include for the library).

Step 5: Connect sensor to the I2C pins on the Arduino or ProMicro (pin 2 = SDA, Pin 3= SCL) as well as the VCC and GND pins to corresponding pins.

Step 6: Upload and open the Serial Monitor Ctrl + Shift + M and you’re done!

Test #1

I placed the sensor horizontal and parallel to the table and used a piece of paper and a ruler to test the accuracy of the range detection.  In a regular classroom light setting, the sensor was able to accurately detect the paper distance within 1-2mm and constantly displaying the same reading without a 20 point average.  Beyond the 120-144mm mark, the accuracy is about 2-3 mm off but still provided a precise reading.  If nothing is in the max range of the sensor, the sensor just repeats 255mm.  I did think that the 255 was only because the sensor variable was unsigned 8 bits long, but the max is just 255mm.

Figure 1: Ruler scanned for distance measuring

Strategy for the Range Finder

The choice to use the range finder over the ultrasonic was not only based on accuracy, but also on space and size of the sensor.  An ultrasonic sensor would prove too big for the Goliath and would not fit the L1 requirement of looking like a scale model of the Goliath 302 tank.

The first thing I wanted to do was reduce the false positives, since the sensor would always display the max range even when nothing was there.  The dimensions of the Spring 2018 400D maze room was announced and confirmed to be 4 x 4 inches.  4 inches translates to 101.6 mm.  To solve this issue, I decided to booleanize the readings of the sensor.  Anything above 101.6 mm is a 0 and anything below it will be a 1.  The booleanizing will help me detect and determine if there is an object in front of the goliath as well and allowing the Goliath 302 tank to navigate the far corners of the maze without detecting the wall of the classroom.  4 inches also fits within the high accuracy range of the sensor and will allow the robot enough room and time to take action by being able to sense an object from a room away.

Figure 2 – Red is Goliath 302 tank and Blue is an obstacle or another robot.

The next task was to also marking the position of the obstacle so that the Goliath would be able to learn that the path that it’s currently on is no longer usable and will need to either wait till the obstacle is gone or turn around and take a different path.  Obviously, we will be marking the obstacle virtually.  Things we already know: the obstacle is directly in front of the robot and is at least 1 room away.  Things we need to know to create the function: direction of the robot, which room number we are in (16 room numbers), as well as row and column.  The reason we need to know the room number is because the actual maze has no REAL walls and if we are in a room like Figure 3, it would be unnecessary to abandon the path we are currently taking.

Figure 3: Case 2

Essentially, the robot will detect an object, and then depending on the direction will take the row/col +1 and change the room that it’s facing to a room number 16 which is a room with 4 walls 0b1111 and also will add a wall to the room that the robot is CURRENTLY in, in the direction it is currently facing as well.  This way, the robot will see virtually that there is a wall in front of it and will be forced to make a different decision.  However, this case solution will only work for obstacles that are stationary and not moving, as once the obstacle disappears, the path is now available to the robot.  The reason why we care about the different cases is because there is also a case where the object is just another robot passing by in front of the Goliath through a T intersection.  Depending on the orientation of the passing robot, the path the Goliath is taking may still be available to take.

Figure 4: Range finder test code.

Conclusion

Overall, the range finder was amazingly accurate and simple to use.  A 0-255mm range is well within what we were looking for and suited for our purpose of only needing to detect 4 inches in front of the Goliath.  Booleanizing the readings helps to discern when an object enters the range of the sensor and resolved the error of false positives.

 

References

  1. https://www.sparkfun.com/products/12785

 

 

 

Goliath Spring 2018 – Mock Up Motor Under Load

By: Ryan Nguyen (MST Engineer)

Verified By: Ernie Trujillo (Project Manager)

Approved By: Miguel Garcia (Quality Assurance)

Test Description

A mock-up motor under load test was performed to determine how much current the Goliath’s motors would draw while being put on mock loads, which were weights. Since the amp-meter has a large resistance, direct current measurement was not possible, as only a very small amount could flow through and the motors didn’t even turn. In place, a voltage measurement was taken over a 100-ohm resistor to determine the current of the motors. The motors would lift the weight, hung on a gear, and the highest voltage is recorded. Testing stopped when the weight reached 80 grams, any more than that the motors would not move. 80 grams per motor is quite good as the Goliath robot would probably weigh between 150 – 200 grams. The test also suggested that the maximum current pull from motors are about 35 mA each, which is useful for the power budget.

Figure 1 – Table displaying voltage and current values of both motors at varying loads.

Resources

 

Goliath Spring 2018 – Custom Shield Layout

By: Milton Ramirez (E&C Engineer)

Verified By: Ernie Trujillo (Project Manager)

Approved By: Miguel Garcia (Quality Assurance)

Table of Contents

Introduction

This blog post will go over all the different iterations for the PCB layout for Goliath.

Eagle Layouts

Figure 1. Layout for the Gyro PCB

This design was just a rework of the ITG-2200 breakout, to fit on top of the 3DoT board. All the capacitors and resistors are connected to ground and are paired together so that it could look nice. Same goes for all of the capacitors and resistors connected to voltage source 3.3V. This layout is also using an old set of pins that have SCL on the right side of the connectors and SDA on the left side. The top layer is connected to ground while the bottom layer is connected to 3.3V

Figure 2. UV Sensor board.

This board connects two UV sensors to a multiplexer, which connects to the SDA and SCL of the 3Dot board. The multiplexer is on the bottom layer of the board. This was done to make space on the top layer. All the resistors that were connected to their respective part were placed together. For example, resistors R1, R4, and capacitor C1 are placed next to U4. The six pins were placed on top so they can connect to the six pins on the bottom of the 3dot. This was an earlier design of the 3dot since the new 3dot has 8 pins now. Same as the gyro, which the top layer is connected to ground and bottom is connected to 3.3V.

Figure 3. The final board design for the Goliath PCB.

The final layout combines the previous two layouts. In this layout, the connectors on top are for the path-finder breakout board. The connectors on the side are the so that our PCB can be mounted on top of the 3dot board. The UV sensors are spaced at 1.7cm. The LEDs are both placed under the UV sensors so that the best possible readings from the UV sensors can be obtained. The capacitors C1, C2, and C5 are all coupling capacitors and are placed as close as possible to the voltage pins of the two UVs and Gyro. The I2C expander from the previous design was replaced with the 2 address I2C multiplexer PCA9540BDP. The pull-up resistors, the range-finder connectors, Gyro and I2C share were replaced with a resistor array to make more space on the top left side. This helped because the SDA and SCL pins are on the top left side and needed as much space as possible since the I2C, Gyro, and range-finder are all connected to those same pins. The top layer of the PCB is grounded while the bottom layer is connected to the voltage source 3.3V.

 

These next two figures are earlier designs of the final design since this is the version that went through many iterations.

Figure 4. The first iteration of the final PCB.

This circuit used an 8 address multiplexer and had a set of pull-up resistors for both the multiplexer and gyro. The coupling capacitors are also not where they’re supposed to be. Also, this design was still using the 8 address I2C. Since this chip was big, it was placed in the bottom layer to make space for the rest of the parts. The LED’s are also missing in this iteration.

Figure 5. Another iteration that was closer to the final design. One notable difference from this design is that I tried to use connectors for the LEDs. This iteration has the 2 address I2C and the resistor array added.

Parts Required

Figure 4. Final Parts list for the PCB

Conclusion

The PCB was approved April 21, 2018. Was ordered on April 26, 2018, and will arrive May 5, 2018.

References

  1. https://www.sparkfun.com/products/11977
  2. https://www.digikey.com/product-detail/en/nxp-usa-inc/PCA9540BD118/568-1844-1-ND/789976
  3. https://www.adafruit.com/product/1981
  4. https://www.adafruit.com/product/2717?gclid=CjwKCAjwlcXXBRBhEiwApfHGTd0vBvwKsP8KS7RMRyuV4j720AR6SxzWgmhaRgt9JazlS-hEpLF4HhoCSbQQAvD_BwE