Category: IloMilo

  • IloMilo

    IloMilo

    [av_one_full first min_height=” vertical_alignment=” space=” custom_margin=” margin=’0px’ padding=’0px’ border=” border_color=” radius=’0px’ background_color=” src=” background_position=’top left’ background_repeat=’no-repeat’ animation=”]

    [av_textblock size=’35’ font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    IloMilo
    Summary Blog Post

    [/av_textblock]

    [av_hr class=’default’ height=’50’ shadow=’no-shadow’ position=’center’ custom_border=’av-border-thin’ custom_width=’50px’ custom_border_color=” custom_margin_top=’30px’ custom_margin_bottom=’30px’ icon_select=’yes’ custom_icon_color=” icon=’ue808′ font=’entypo-fontello’ admin_preview_bg=”]

    [av_textblock size=” font_color=’custom’ color=’#bfbfbf’ av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    Author/s: Toby Johnson, Jessica Benitez, Farland Nguyen

    [/av_textblock]

    [av_hr class=’short’ height=’50’ shadow=’no-shadow’ position=’left’ custom_border=’av-border-thin’ custom_width=’50px’ custom_border_color=” custom_margin_top=’30px’ custom_margin_bottom=’30px’ icon_select=’yes’ custom_icon_color=” icon=’ue808′ font=’entypo-fontello’ admin_preview_bg=”]

    [av_textblock size=” font_color=” color=”]

    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’Executive Summary’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    “Awww, it’s so cute!” Is what people will say about the design and mission of IloMilo. Ilo has lost his friend, Milo, and needs to find him! There are many obstacles in his way, and they could look different every time, but Ilo is smart and will be able to get around them to find his friend! To accomplish this daunting task IloMilo will incorporate a metal detector, proximity sensing, and a very cute design, that will be fun for everyone!
    [/av_textblock]

    [av_heading tag=’h2′ padding=’10’ heading=’Program and Project Objectives’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”]
    Stuff we will put here woohoo…
    [/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    Program Objectives

    On Monday, May 11th, 2020, the city of Long Beach is holding a robotics toy festival to showcase creative and fun robotics ideas of engineering students in the area. Your team’s assignment is to make the 3D printed and/or laser-cut prototypes to be showcased at the convention, prior to production starting in the second quarter of 2020. The robots will feature our new ArxRobot smart phone application and the Arxterra internet applications allowing children to interact and play games around the world. In addition, the robots should be able operate autonomously in game mode. See game(s) (i.e, mission objectives) assigned to your robot by the Game Division. To decrease electronics cost, interoperability between all TRC robots will be maintained by incorporation of the 3DoT board, developed by our Electronics R&D Section. Modification of downloadable content is limited to software switch setting and robot unique graphics of the smart phone and Arxterra applications.  Modifications of electronics is limited to custom 3DoT shields as required by the unique project objectives of your robot.  The Marketing Division has set our target demographic as children between the ages of 7 and 13, with a median (target) age of 11. To decrease production costs, please keep robots as small as possible, consistent with our other objectives. As with all our products, all safety, environmental, and other applicable standards shall be met. Remember, all children, including the disabled are our most important stakeholders. Our Manufacturing Division has also asked me to remind you that Manufacturability and Repairability best practices must be followed.

    Project Objectives

    Make two animated robots to autonomously navigate around obstacles in a playing field and find each other, similar to the game IloMilo.

    A more detailed rundown of the rules of the video game can be found here: IloMilo Rules. The robots will play the game the same as the characters in the video game; however, they will move around the maze rather than manipulating the maze itself.
    [/av_textblock]

    [av_heading tag=’h2′ padding=’10’ heading=’Mission Profile’ color=” style=’blockquote modern-quote’ custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    The robots will navigate a 6’x6′ field of play using an LDC (Inductance to Digital Converter) sensor shield to sense an invisible copper grid beneath them. Blocks will be placed randomly on the field of play and the robots will have to autonomously navigate around them and find each other using proximity sensing. As the robots move through the field of play, the robots will appear to be sizing up the obstacles with the movement of their torso and eyes to distinguish between the blocks and the other robot. The robots will have to find each other within 15 minutes.
    [/av_textblock]

    [av_heading tag=’h2′ padding=’10’ heading=’Project Features’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    Robot Chassis
    Internal Joystick for head movement

    These are the key mechanical aspects/final chassis mock ups of the robot. All of the electrical systems for the robot’s function will be housed inside the chassis so that the aesthetic of a cute mushroom-shaped robot will be maintained.
    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’Requirements’ color=” style=’blockquote modern-quote’ custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    The requirements include the applicable higher organization design codes and regulations, as well as the requirements specific to our robot. The Level 1 requirements are of high order and are provided for the mission, basic operation, assembly and disassembly, and logistics of the whole project. Level 2 requirements branch from the Level 1 requirements and show in greater detail the requirements involved in each Level 1 requirement.
    [/av_textblock]

    [av_heading tag=’h2′ padding=’10’ heading=’Engineering Standards and Constraints ‘ color=” style=’blockquote modern-quote’ custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    The IloMilo Spring 2020 project team adheres to higher Engineering bodies that give standards, codes, and regulations when a toy is built. The applicable standards are listed below.

    Applicable Engineering Standards

    • Systems and Software Engineering — Life Cycle Processes –Requirements Engineering
    • IEEE SCC21 – IEEE Approved Standard for Fuel Cells, Photovoltaics, Dispersed Generation, and Energy Storage
    • NASA/SP-2007-6105 Rev1 – Systems Engineering Handbook
    • Bluetooth Special Interest Group (SIG) Standard (supersedes IEEE 802.15.1)
    • American Wire Gauge (AWG) Standard
    • C++ standard (ISO/IEC 14882:1998
    • NXP Semiconductor, UM10204, I2C-bus specification and user manual.
    • ATmega16U4/ATmega32U4, 8-bit Microcontroller with 16/32K bytes of ISP Flash and USB Controller datasheet section datasheet, Section 18, USART.
    • USB 2.0 Specification released on April 27, 2000, usb_20_20180904.zip
    • IEEE 29148-2018 – ISO/IEC/IEEE Approved Draft International Standard –
    • Arduino De facto Standard scripting language and/or using the GCC C++ programming language, which is implements the ISO C++ standard (ISO/IEC 14882:1998) published in 1998, and the 2011 and 2014 revisions.

    Environmental, Health, and Safety (EH&S) Standards

    • CSULB COE Lab Safety
    • CSULB Environmental Health & Safety
    • IEEE National Electrical Safety Code
    • NCEES Fundamental Handbook
    • ASTM F963-17, compliant for Toy Safety

    [/av_textblock]

    [av_heading tag=’h2′ padding=’10’ heading=’Program Level 1 Requirements’ color=” style=’blockquote modern-quote’ custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    Mission Requirements

    L1-1 Ilo shall

      use a paper bot drivetrain to move the robot forward and make right turns

     

     

    L1-2 Ilo’s design shall include a custom shield to follow a copper grid line on the field of play

     

    L1-3 Ilo shall stop at an intersection of the grid lines

     

    L1-4 Ilo shall use a Time of Flight sensor for object detection within 5 cm from the robot

     

    L1-5 Ilo’s head shall be able to move independently of the drivetrain when attached to the joystick, similar to Alonzo Martinez’s joystick design. Ilo’s looks down 40 degrees (+/- 5 degrees) and up 40  degrees (+/- 5 degrees)

     

     

     

    L1-6 Ilo shall make a 90 degree right turn (+/- 15%) when an obstacle is detected using the ToF sensor

     

    L1-7 Ilo shall recognize Milo by measuring his height and stopping

     

    L1-8 Ilo shall find Milo in less than 20 minutes

     

    Basic Operation Requirements

    L1-9 Ilo shall utilize an OLED programmed to display a blinking eye

     

    L1-10 Ilo will utilize the 3Dot board

     

    Assembly & Disassembly Requirements

    L1-11 Ilo shall be assembled and disassembled within 20 minutes with no dangling or exposed wires

     

    L1-12 Ilo’s chassis will easily fit over the paper bot and sit on the top of the paper bot shell

     

    L1-13 Ilo’s head, joystick, and chassis will be 3D printed using ABS

     

    Logistics Requirements

    L1-14 The whole project shall not exceed a total cost of $500

     

    L1-15 Ilo shall complete the mission by Monday, May 11th.

     

    [/av_textblock]

    [av_heading tag=’h2′ padding=’10’ heading=’System/Subsystem/Specifications Level 2 Requirements’ color=” style=’blockquote modern-quote’ custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    Mission Requirements

    L2-1 1 The Paper bot drive train will use plastic gear motors

     

    2 The Paper bot plastic gear motors will be connected to the Dual Motor Driver headers on the 3 dot
    L2-2 1 The custom shield shall be designed in Eagle CAD
    2 The custom shield shall be designed with SMD components
    3 The custom shield shall utilize the TI LDC0851 Inductance to Digital Converter Integrated Circuit
    4 The LDC shield will be connected to the 3 Dot by the Sensing Header J3
    L2-3 1 Grid lines will be laid out perpendicularly so that all angles are 90 degrees
    2 Grid lines will be made of copper tape that is at least 1” thick
    L2-4 1 The Time of Flight sensor will be the Spark Fun VL6180 ToF Sensor breakout board 
    2 The ToF sensor will be placed in the head of the robot where the sensor is able to read distance
    3 The ToF sensor will be programmed using 12C communication in Arduino IDE
    4 The ToF sensor will be connected to the 3 Dot board for 12C communication
    L2-5 1 The joystick shall utilize two servos, one to move front to back (“nodding”, Servo 1), and one to move side to side (Servo 2). Both directions will pivot on the joystick’s axis.

     

    2 Servo 1 will be connected to the Servo 1 header on the 3 Dot and Servo 2 will be connected to the Servo 2 header on the 3 Dot.
    3 The servos will be SG90’s
    4 The joystick servos will be programmed in Arduino IDE.
    L2-6 1 An obstacle will be distinguished by its height. If the height is not between 40 and 54 cm it is an obstacle.
    2 The LDC shield will keep the robot following the grid line when making the right turn if the robot over or under turns
    L2-7 1 Milo’s height will be programmed to be between 40 and 54 cm. 
    2 Milo will be a box with a height between 40 and 54 cm, simulating the other robot.

    Basic Operation Requirements

    L2-9 1 The OLED will use SPI communication
    2 The OLED will be the Crystalfontz CFAL4864A-071BW Small 48×64 .71inch OLED Display.
    3 The OLED will be connected to the 3 Dot board via the Crystalfontz CFA10054 breakout board 
    L2-10 1 All electrical components will be controlled by the pre programmed 3 Dot MCU
    2 All electrical components will run power from the 3 Dot board

    Assembly & Disassembly Requirements

    L2-11 1 The ToF sensor board will be placed in the robot’s “forehead” with the sensor itself reading through the small hole made for the sensor
    2 The OLEDs will be connected behind the eye holes in the robot’s head
    3 The chassis will be a separate part from the joystick and the head of the robot.
    4 The joystick will be connected to the chassis and the head will be connected to the joystick
    5 All wires will run down through the robot and paper bot’s chassis to be connected to the 3 Dot
    L2-12 1 The chassis will be stable on top of the paper bot chassis and contain the whole paper bot chassis
    2 The robot chassis will not fall off the paper bot chassis when the robot moves forward, turns, or measures objects.

    [/av_textblock]

    [av_heading tag=’h2′ padding=’10’ heading=’Allocated Requirements / System Resource Reports’ color=” style=’blockquote modern-quote’ custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_heading tag=’h3′ padding=’10’ heading=’Mass Shared Resource Report / Allocation’ color=” style=’blockquote modern-quote’ custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    Mass Report

    There was no real constraint for the mass of our robot because it will be performing its whole mission on the ground, autonomously. We chose to allocate 10 lbs (4535.92 g) because this would still be light enough for the average child to be able to lift it without too much. As shown by the table though, the total mass was much less than the allocated mass.
    [/av_textblock]

    [av_heading tag=’h3′ padding=’10’ heading=’Power Shared Resource Report / Allocation’ color=” style=’blockquote modern-quote’ custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    The power allocation breakdown details the allocated power by the Li-Ion battery for the robot to be powered for 30 minutes. Since our mission is required to be completed within 20 minutes this power time will be sufficient with a modest contingency.

    Power Report

    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’Project Report’ color=” style=’blockquote modern-quote’ custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    This section includes all of the over all logistics of the project including Work Breakdown Structure (WBS), Product Breakdown Structure (PBS), Cost breakdown, and Project schedule. This section should give the details of what work is to be done, when the work is to be done, what products are to be delivered and when they are to be delivered.
    [/av_textblock]

    [av_heading tag=’h2′ padding=’10’ heading=’Project WBS and PBS’ color=” style=’blockquote modern-quote’ custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    Work Breakdown Structure (WBS)

    The WBS breaks down the major work involved for each division of the project.

    Work Breakdown Structure

    Proximity Sensing (Jessica)

    Jessica will research the Time of Flight sensors and see to what extent they can be used to measure objects as well as their own distance from objects. Initially, Jessica will connect the robots to the Arxterra app and allow their movement to be user-controlled. She will then develop the software to program the time of flight sensors to measure the height and width of objects as well as their own distance from the object. From the software development, she will connect the sensors to the 3Dot board or another shield, depending on the most efficient implementation. Finally, she will get the sensors ready to be implemented into the final robot design so that it will autonomously navigate around obstacles and find the other robot.

    LDC (Toby)

    Toby will first read up on previous semesters’ work on the Inductance to Digital Converter (LDC). He will then research better implementations and designs as well as what is available on the market and decide on what is the best design for detecting a copper grid under the field of play. He will then develop the software and new LDC shield to detect the copper grid and then finally prepare it to be implemented in the final robot design.

    OLED (Toby & Jessica)

    Jessica will first research OLED displays, hardware, and software, that will best suit the robot. Jessica and Toby will both then research the software to make the OLED display a blinking eye. After researching this they will work on programming the display to look like a blinking eye until they arrive at a result that improves the overall animated aesthetics of the robot.

    Drive Train & Animatronics (Farland)

    Farland will design two major mechanical aspects for the IloMilo robots. 

    For the drive train, Farland will start by using the caster system of Paper Bot and research if this base will be the best design to mount the rest of the chassis of the robot on. If it is not, he will design a new drive train system, including motors and casters to better support the rest of the chassis.

    For the animatronics, Farland will research and design an inverted joystick/gimble to enable the head of the robot to move in virtually every direction. He will then research the best way to implement the TOF sensors into the head of the robots as well as the best servos to control the movement of the head. Finally, he will create the final design to incorporate all the mechanical and electrical components into the chassis of each robot.

    Product Breakdown Structure (PBS)

    The PBS breaks down the products to be delivered for the project as well as what version of the project they are to be delivered for.

    Product Breakdown Structure

    V1 Products:

    • Program/Project Objectives and Mission Profile
    • Program/Project and Mission requirements
    • WBS and PBS
    • TOF sensor sensing objects
    • Bluetooth controlled Paper Bot
    • Previous LDC shield
    • Initial research for new LDC 
    • Inverted joystick prototype w/ servos

    V2 Products:

    • Finalized schedule and requirements
    • TOF software and hardware to measure walls and sense distance
    • New LDC shield design
    • Design for best drive train system
    • Joystick w/ servos moving entire head of robot

    V3 Products:

    • Final blog post and report
    • Verify robots meet final requirements
    • Inverted joystick prototype w/ servos
    • TOF sensor implemented into robot navigates maze autonomously
    • LDC shield implemented into robot to keep it on the invisible copper grid
    • OLED programmed to look like blinking eye and implemented into robot’s head
    • Drive train printed and assembled in chassis
    • Chassis printed and assembled 
      • houses all components
      • can look around to sense the obstacles and other robot in the field field

    [/av_textblock]

    [av_heading tag=’h2′ padding=’10’ heading=’Cost’ color=” style=’blockquote modern-quote’ custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    Cost Breakdown

    Expenditure Report
    [/av_textblock]

    [av_heading tag=’h2′ padding=’10’ heading=’Schedule’ color=” style=’blockquote modern-quote’ custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    Project Schedule

    Project Schedule
    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’Concept and Preliminary Design’ color=” style=’blockquote modern-quote’ custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    This basic block diagram shows the systems of the robot as well as power, ground, and basic communication signal definitions. There are 5 electronic systems connected to the 3 Dot board that will be programmed by its MCU. These 5 systems will also have to be powered by the 3 Dot battery.

    Basic System Block Diagram

    [/av_textblock]

    [av_heading tag=’h2′ padding=’10’ heading=’Literature Review’ color=” style=’blockquote modern-quote’ custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    The majority of engineering work was done on the Time of Flight sensor, by Jessica, the LDC shield, by Toby, and the joystick design, by Farland. Each of these elements have much more thoroughly detailed blog posts that describe the theory and design process.

    1. Time of Flight Sensor Blog Post
    2. LDC Shield Blog Post
    3. Joystick Design Blog Post

    [/av_textblock]

    [av_heading tag=’h2′ padding=’10’ heading=’Design Innovation’ color=” style=’blockquote modern-quote’ custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    One of the crucial elements of the design process was choosing the right proximity sensor for our application. Jessica wrote a detailed blog post documenting our robot’s requirements for the mission and how the options for proximity sensors fulfilled them as well as the sensor we ultimately decided to implement.

    Proximity Sensor trade-off study Blog Post

    Another crucial element of the design process was the joystick that would enable the movement of the robot’s head. According to our requirements, our robot would have to be able to move its head independently of the drive train. The inspiration for this joystick came from Alonzo Martinez’s animated robots. Alonzo did not share his designs, however, so Farland moved to designing a joystick more suitable for our robot himself.

    Joystick Design Blog Post
    [/av_textblock]

    [av_heading tag=’h2′ padding=’10’ heading=’Conceptual Design / Proposed Solution’ color=” style=’blockquote modern-quote’ custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    The new innovative concepts utilizing the Time of Flight proximity sensor and designing the joystick, as shown by the previously linked blog posts, enable our robot to complete its mission. The time of flight allows for accurate height and distance measurements as required by our mission and the joystick enables the time of flight to move and measure objects, while maintaining the aesthetic of the robot, as the only system observable from the outside is the robot’s chassis.
    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’System Design / Final Design and Results’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    The final design incorporates all of the systems shown in the block diagram below and satisfies all of our requirements.

    Major Subsystems:

    1. Time of Flight Sensor

    The ToF sensor is able to measure distance accurately to distinguish which objects are obstacles and which is the other robot. It is also able to communicate through the 3 Dot MCU, the height data and then whether the robot should turn to continue its search or stop because it has found the other robot.

    1. Joystick

    The final joystick design is quite large in order to support and move the robot’s entire head, which is also large as to have enough space to house all the components. The joystick is moved by two SG90 servos that move according to the ToF sensor to measure the height of objects.

    1. LDC Forward Sensing Shield

    The final LDC shield PCB was a result of several iterations of the design. The main feature of the design is the use two of Texas Instrument’s LDC0851 integrated circuits as these chips were designed precisely for small distance, contactless metal detection. The use of these chips also simplifies the PCB design significantly as each chip only requires two capacitors for filtering.

    1. OLED

    The OLED simply adds to the fun animated aesthetic of the robot. When the OLED is programmed to look like a blinking eye, the robot comes to life and has personality to it.

    [/av_textblock]

    [av_heading tag=’h2′ padding=’10’ heading=’System Block Diagram’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    System Block Diagram

    As shown by the system block diagram, all of the systems of the robot are connected to the 3 Dot board. The specific connections are defined in the interface matrix. One of the key system interactions is between the Time of Flight sensor and the joystick. This is because the joystick has to move the head of the robot in order for the ToF to measure the objects’ heights. The ToF sensor will have to communicate with the joystick servos through the 3 Dot MCU to move the head up while measuring an object. The ToF will also then have to communicate with the Paper bot motors to turn when an object is recognized as an obstacle. Additionally, the LDC forward shield will have to communicate with the Paper bot motors in order to keep the robot following the copper grid. If the robot starts to move off the line to one direction or the other the LDC shield will detect the copper tape and cause the motors to correct the robot’s path. The LDC shield will also detect an intersection in the copper grid and cause the Paper bot motors to stop before continuing on its forward path.
    [/av_textblock]

    [av_heading tag=’h2′ padding=’10’ heading=’Interface Definition’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    Interface Matrix

    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’Modeling/Experimental Results’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    Electronic Systems Modeling

    1. Time of Flight sensor
    2. LDC Forward Sensing Shield

    Manufacturing Systems Modeling

    1. Joystick
    2. Robot chassis and head 

    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’Mission Command and Control’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    Because the robots will be completely autonomous, all of Mission Control is pre-programmed in software. The software flow diagram shows the process by which the robot completes the mission. The final code files will be provided in the reference section at the end of the post.

    Software Flow Diagram

    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’Electronic Design’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    This section details the custom shield design for the LDC PCB. The basic design was iterated upon from a previous metal detector forward sensing shield.
    [/av_textblock]

    [av_heading tag=’h2′ padding=’10’ heading=’PCB Design’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    According to the requirements, the custom shield was designed in Eagle CAD. Because of limited time and limits of the surface mount IC the PCB was designed off of the detailed documentation from Texas Instruments on the LDC0851 and its typical applications. The Eagle CAD files for the schematic and PCB are included at the end of the document and a detailed rundown of the design process is included in the LDC Blog Post.

    PCB Schematic
    PCB Board Layout

    [/av_textblock]

    [av_heading tag=’h2′ padding=’10’ heading=’Firmware’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    The final and total MCU software is included in the resources section at the end of the post.

    This section highlights some of the main software routines for the robot to complete the mission. The first chunk of code shows the routine for the interaction between the servo and the ToF sensor. The routine measures the difference between the initial distance and the final distance and calculates the height using trigonometry.
    [/av_textblock]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    int measState(){
        stopPlease(); 
        // MOVE the servo 
        for (pos = 90; pos <= 180; pos += 1) {
          delay(250); //orig 500
          current = sensor.getDistance();
          Serial.print("\nPrevious Distance (mm) = "); Serial.print(previous); Serial.print("     ");
          Serial.print("Current Distance (mm) = "); Serial.print(current); Serial.print("\n"); Serial.print(pos);
          //Serial.print("Distance measured (mm) = ");
          //Serial.println( sensor.getDistance() ); 
      
          if ((current - previous) < 100) {
            previous = current;
           }
          else {
            double angle = ((pos)-90); // Every 1 degree incrementation is actually 2 degrees on a servo
            int c = previous;
            double rad = (angle*M_PI)/180 ;
            int height = c* sin(rad);
            result = height;
            Serial.print("Angle: "); Serial.print(angle);
            Serial.print("\n c: "); Serial.print(c);
            Serial.print("\n rad: "); Serial.print(rad);
            Serial.print("\n height: "); Serial.print(height);
            Serial.print("\n Result Data (mm): "); 
            Serial.print(result); 
            //while(1);
            break;
           }
        myservo.write(pos); 
        
      }
    

    [/av_textblock]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    This loop shows the state order as shown in the software flow diagram from the Mission Command/Control section.
    [/av_textblock]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    void loop() 
    { 
      int state = nextState; 
      switch(state){ 
        case START: 
        nextState = startState(); 
        break; 
      case MEASURE: 
        nextState = measState(); 
        break; 
      case TURN: 
        nextState = turnState(); 
        break; 
      case STOP: 
        nextState = stopState(); 
        break; 
      default: 
        Serial.println("ERROR WITH STD"); 
        break; 
    }

    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’Mechanical/Hardware Design’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    Here are links to the mechanical design blog posts. These blog posts discuss the mechanical design process in great length.

    Joystick Design

    Chassis Design

    Farland also wrote another extremely thorough blog post for working with Solid Works that is very helpful for those beginning to learn the software.

    Solid Works Tutorial
    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’Verification & Validation Test Plan’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    The detailed Verification Test Plan document is included at the end of this post, but the requirements of the robot will be verified in 4 test cases:

    1. Mission Operation
    2. Basic Operation
    3. Assembly & Disassembly
    4. Logistics

    Mission Operation  includes all of the verification needed to satisfy the Mission Operation requirements. This will be performed largely by demoing the robot playing the game IloMilo, where the robot utilizes all the relevant systems to navigate around obstacles and find Milo.

    Basic Operation includes verification of systems that are not essential to the robot completing his mission, but are still systems that the robot operates. The main basic operation system to be verified is the OLED, as it is not needed for the robot to accomplish its mission, but is a part of the animated aesthetics.

    Assembly & Disassembly includes verification, primarily, of the required robot assembly and disassembly time of under 20 minutes. The test will time a group member assembly all the necessary components of the robot according to a step-by-step assembly guide, observing that the robot is assembled correctly, and then disassembling it in the reverse order.

    Logistics includes inspection that the project was completed in time and within the budget.
    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’Concluding Thoughts and Future Work’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    Although we were largely able to move through it, the Corona Virus did inhibit us slightly from a few further designs we would have liked to incorporate. We will leave these for hopeful future generations.

    1. Adding an external power supply: Although we could basically power all of our subsystems with the onboard Li-Ion battery, it did not last very long. To improve run time an external power supply should be added, especially for the elements that draw more current, such as the SG90 servos.
    2. OLED/ToF/Servo Top Shield: For our design we simply hardwired all of these components into the 3 Dot board, but this could be improved greatly by designing a top shield for the 3 Dot for all of the necessary connections to these systems. The OLED was programmed using SPI, but could be programmed with I2C to increase uniformity. Creating a top shield would help with this as well as it would share pins with the ToF. This is possible by using different I2C addresses for each system.
    3. Consolidating Size: The final size of the robot was quite large (almost 1′ tall), which meant the maze also had to be fairly large in order to supply an adequate field of play for the robot. The size could be consolidated largely by designing a custom drive train for the robot, rather than using the Paper bot drive train. This could also simplify the design as the drive train could be part of the chassis, further decreasing the number of necessary manufactured parts.
    4. Making a second robot: Our original plan was to make two basically identical robots to both navigate the maze and find each other. This would not be too complicated of a task as the second robot would basically be identical to the first, but it would increase the complexity and excitement of the mission.

    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’References/Resources’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    These are the starting resource files for the next generation of robots. All documentation shall be uploaded, linked to, and archived in to the Arxterra Google Drive. The “Resource” section includes links to the following material.

    1. Project Video 
    2. PDR 
    3. Project Libre 
    4. Verification Plan
    5. Link to Blog Post with Chassis Solid Works Files
    6. Link to Blog Post with Joystick Solid Works Files
    7. Link to blog post w/ PCB Schematic and Board Files
    8. Project Software Folder
    9. Expenditure Report
    10. Solid Works Tutorial Blog Post

    [/av_textblock]

    [/av_one_full]

  • IloMilo Spring 2020: Metal Detection using the TI LDC0851

    IloMilo Spring 2020: Metal Detection using the TI LDC0851

    [av_one_full first min_height=” vertical_alignment=” space=” custom_margin=” margin=’0px’ padding=’0px’ border=” border_color=” radius=’0px’ background_color=” src=” background_position=’top left’ background_repeat=’no-repeat’ animation=”]

    [av_textblock size=’35’ font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    IloMilo/Spring 2020
    [/av_textblock]

    [av_hr class=’default’ height=’50’ shadow=’no-shadow’ position=’center’ custom_border=’av-border-thin’ custom_width=’50px’ custom_border_color=” custom_margin_top=’30px’ custom_margin_bottom=’30px’ icon_select=’yes’ custom_icon_color=” icon=’ue808′ font=’entypo-fontello’ admin_preview_bg=”]

    [av_textblock size=’30’ font_color=’custom’ color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    Metal Detection using the TI LDC0851 

    [/av_textblock]

    [av_textblock size=” font_color=’custom’ color=’#bfbfbf’ av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    Author: Toby Johnson

    [/av_textblock]

    [av_hr class=’short’ height=’50’ shadow=’no-shadow’ position=’left’ custom_border=’av-border-thin’ custom_width=’50px’ custom_border_color=” custom_margin_top=’30px’ custom_margin_bottom=’30px’ icon_select=’yes’ custom_icon_color=” icon=’ue808′ font=’entypo-fontello’ admin_preview_bg=”]

    [av_heading tag=’h1′ padding=’10’ heading=’Introduction ‘ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    For our project, IloMilo, our robot will be autonomously navigating around obstacles to find another robot using a Time of Flight sensor. Though the obstacle avoidance will be done with this ToF, the robot still needs to stay on a straight path and make 90 degree turns. Because of this requirement some sort of line following device is needed to ensure that our robot can correctly navigate to obstacles and move around them . The line detection should also be contactless so as to reduce drag and strain on the robot’s motors. These requirements lead to choosing metal detection as it is ideal for sensing applications without contact.

    A previous metal detector was designed for a line following robot; however, it did not perform extremely well. The sensing range was rather small and the results were less than ideal. To improve on this design then, a new metal detecting shield was designed with the TI LDC0851 Chip, as this integrated circuit was designed precisely for small distance, contactless metal detection and was well documented with similar applications.
    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’Inductance to Digital Conversion (LDC) Background’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”]
    Stuff we will put here woohoo…
    [/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    A basic metal detector, like one might use to find valuable metals at the beach, senses metal via Eddy Currents. Eddy Currents are loops of current induced within conductors by changes in magnetic field1. A simple application of this is a coil inductor which stores up current and produces a magnetic field. When another conductive material is introduced to the magnetic field of the inductor (right hand rule) the magnetic field increases causing increased induction of the Eddy Current. This enables metal detection. The figure below shows how Eddy Current is induced when a conductive material is introduced to the magnetic field of two inductors.

    Figure 1: Eddy Current

    After the object is introduced to the coil field, the induced current must be read to show that there is conductive material in close proximity to the coils.
    [/av_textblock]

    [av_heading tag=’h2′ padding=’10’ heading=’Basic LDC Circuit Concept’ color=” style=’blockquote modern-quote’ custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    The figure below shows a basic concept of an LDC circuit.

    Figure 2: Basic LDC Circuit

    The induced voltage is read across the capacitor and should continue to step up, as shown in the diagram above, when a conductive material is introduced to the inductor, within the sensing range.

    The previous shield design for metal detection used this circuit with a PFET in enhancement mode after the input to increase input current. This design worked for a previous line follower, but with less than ideal results. This lead to looking for a better solution and ultimately to design a new shield using the TI LDC0851 integrated circuit.
    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’Texas Instruments LDC0851 Overview’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    The LDC0851 chip by TI is an inductive switch, ideally designed for close range, contactless metal detection4. “It utilizes a sensing coil and a reference coil to determine the relative inductance in a system. The push/pull output (OUT) switches low when the sense inductance drops below the reference and returns high when the reference inductance is higher than the sense inductance.”4 This makes it perfect for our robot these applications fit our design requirements exactly. Here is a block diagram from TI for our application of the LDC0851

    Figure 3: LDC0851 Sensing Application Block Diagram

    As seen in the diagram, the IC has a threshold adjust pin that a voltage divider can be applied to in order to adjust the max distance detected. For our application however, since the distance between the conductive material and the sense coil will be constant, the ADJ pin was tied to ground to allow the greatest sense distance possible.
    [/av_textblock]

    [av_heading tag=’h2′ padding=’10’ heading=’Designing Coils with the LDC0851′ color=” style=’blockquote modern-quote’ custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    The use of stacked coils was also ideal for our application as the coils would have to be relatively small in order to fit under our robot. With inductive coils, generally increasing the outer diameter of the coil is the greatest factor in increasing the inductance. Because of our design constraints, we could only make the coils so big and therefore needed to use stacked, 4 layer coils to increase our inductance.

    Below are the basic requirements for designing 4 layer PCB stacked inductance coils

    Figure 4: 4 Layer PCB coil basic design parameters

    For our shield design, the sense (LSENSE) and reference (LREF) coils were switched to have the sense coil on the bottom and the reference coil on top as we want to detect metal beneath the coils.

    Detailed design equations for the parameters of the coils can be found here; however TI has a webench tool for designing coils specifically for the LDC0851 chip: https://webench.ti.com/wb5/LDC/#/spirals. This tool generates a 4 layer PCB coil for an Eagle BRD file.

    Figure 5: TI Coil Designer Tool

    **Issues

    When I designed my PCB I was unable to add the BRD file generated by the webench tool into my shield design. I was also not able to add the script for the PCB board file into my shield design. Because of this I was forced to look elsewhere for the coil designs to use in my actual PCB design in Eagle. Although the design process I ended up going through was a bit more tedious than simply generating the design with the webench tool, it was still much simpler than drawing the coils by hand.
    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’Designing the PCB’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    Because of the issues with the webench tool for the coil design, I looked for a different solution and ended up using a ULP (User Language Program) in Eagle. Here is the ULP I used to create the coils for the PCB in Eagle: Coils ULP. This ULP allows user input for several coil parameters include trace thickness, space between traces, and number of turns. To design the coils for the desired inductance, I then input the data from the webench tool. I also made sure that the coils turned in the proper direction according to the TI LDC0851 datasheet.

    The final shield design schematic and board are shown below

    LDC Shield Schematic
    LDC Shield Board Layout

    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’Conclusion/Final Notes’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    Designing the metal detecting shield utilizing the TI LDC0851 made the design much simpler as it only required 2 capacitors in addition to each IC. TI’s thorough documentation on the chip and design parameters also simplified the design process drastically.

    One final note for designing the coils especially is the importance of width of the coil traces and the width between each coil trace. Before sending a PCB out for fabrication, always make sure you are using the proper design rules for the company you are having manufacture your board. You should also additionally check with the company directly to obtain more specific design rules. When I designed the coils, I originally did not have enough space between the coil traces, however, the design rules I was using did not see it as an issue. This unfortunately made the first fabrication bad (we ordered through OshPark) and I had to change this flaw. Luckily, I simply had to decrease the trace width of the coils by 1 mil to have enough clearance between each trace and this also increased the inductance of each stacked coil by about 25%.
    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’References/Resources’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    1. https://en.wikipedia.org/wiki/Eddy_current
    2. Figure 1:https://www.sciencedirect.com/topics/engineering/high-frequency-eddy-current
    3. Figure 2: https://www.instructables.com/id/Simple-Arduino-Metal-Detector/
    4. https://www.ti.com/lit/ds/symlink/ldc0851.pdf?&ts=1588962815574
    5. Figure 3: //www.ti.com/lit/ds/symlink/ldc0851.pdf?&ts=1588962815574
    6. Figure 4: //www.ti.com/lit/ds/symlink/ldc0851.pdf?&ts=1588962815574
    7. Figure 5: https://webench.ti.com/wb5/LDC/#/spirals

    Resources:

    1. LDC shield schematic
    2. LDC shield board file

    [/av_textblock]

    [/av_one_full]

  • Choosing the Right Proximity Sensing Device

    Choosing the Right Proximity Sensing Device

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    [/av_textblock]

    [av_one_full first min_height=” vertical_alignment=” space=” custom_margin=” margin=’0px’ padding=’0px’ border=” border_color=” radius=’0px’ background_color=” src=” background_position=’top left’ background_repeat=’no-repeat’ animation=” mobile_breaking=” mobile_display=”]

    [av_heading tag=’h2′ padding=’10’ heading=’Introduction’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    By Jessica Benitez

    Ilomilo is tasked with finding the perfect proximity sensing module to utilize for Ilo’s search of Milo. We researched four different types of sensors such as Infrared (IR)  like the Time of Flight (TOF) sensor and the Reflective Photoelectric sensor, Light Detection and Ranging (LiDAR), and Ultrasonic. The sensors are then scored out of 10 on their abilities to meet our requirements.
    [/av_textblock]

    [/av_one_full][av_one_full first min_height=” vertical_alignment=” space=” custom_margin=” margin=’0px’ padding=’0px’ border=” border_color=” radius=’0px’ background_color=” src=” background_position=’top left’ background_repeat=’no-repeat’ animation=” mobile_breaking=” mobile_display=”]
    [av_heading tag=’h2′ padding=’10’ heading=’Requirements’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    Requirements for choosing the right proximity sensor:

    1. Measurement Range: 0-10 cm
    2. Working Voltage: 3.3 V
    3. Power Consumption: < 5 mA
    4. Dimensions: 5.0 x 5.0 x 5.0 mm
    5. Weight: < 0.5 0z
    6. Price: $10- $20

    [/av_textblock]
    [/av_one_full]

    [av_one_full first min_height=” vertical_alignment=” space=” custom_margin=” margin=’0px’ padding=’0px’ border=” border_color=” radius=’0px’ background_color=” src=” background_position=’top left’ background_repeat=’no-repeat’ animation=” mobile_breaking=” mobile_display=”]
    [av_heading tag=’h2′ padding=’10’ heading=’Specifications’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    SparkFun Time of Flight VL6180 SparkFun Ultrasonic Distance Sensor HC-SR04 SparkFun TFMini-Micro LiDAR Module OSOYOO IR Infrared Sensor Reflective Photoelectric Light Intensity
    Measurement Range: (2 Points) 0 cm – 25 cm 2 cm – 400 cm 30 cm – 1200 cm 2 cm – 30 cm
    Working Voltage:

    (2 Points)

    3.6V DC (Absolute Max) 5V DC 4.5V – 6V DC 3V – 5V DC
    Power Consumption:

    (1 Point)

    1.7 mA 15 mA 0.12 W Varies from 23 mA – 43 mA
    Dimensions:

    (2 Points)

    4.8 x 2.8 x 1.0 mm 45 x 20 x 15 mm 42 x 15 x 16 mm 44.45 x 12.7 x 6.35 mm
    Weight:

    (2 Points)

    0.32 oz 0.8 oz 0.22 oz 0.16 oz
    Price:

    (1 Point)

    $25.95 $3.95 $44.95 $0.99
    Scoring System: (10 Max)  8  4  1  5

    [/av_textblock]
    [/av_one_full]

    [av_one_fifth first min_height=” vertical_alignment=” space=” custom_margin=” margin=’0px’ padding=’0px’ border=” border_color=” radius=’0px’ background_color=” src=” background_position=’top left’ background_repeat=’no-repeat’ animation=” mobile_breaking=” mobile_display=”][/av_one_fifth]

    [av_four_fifth min_height=” vertical_alignment=” space=” custom_margin=” margin=’0px’ padding=’0px’ border=” border_color=” radius=’0px’ background_color=” src=” background_position=’top left’ background_repeat=’no-repeat’ animation=” mobile_breaking=” mobile_display=”]
    [av_gallery ids=’160113,160111,160112,160110′ style=’thumbnails’ preview_size=’portfolio’ crop_big_preview_thumbnail=’avia-gallery-big-crop-thumb’ thumb_size=’portfolio’ columns=’5′ imagelink=’lightbox’ lazyload=’avia_lazyload’ admin_preview_bg=”]
    [/av_four_fifth]

    [av_one_full first min_height=” vertical_alignment=” space=” custom_margin=” margin=’0px’ padding=’0px’ border=” border_color=” radius=’0px’ background_color=” src=” background_position=’top left’ background_repeat=’no-repeat’ animation=” mobile_breaking=” mobile_display=”][/av_one_full]

    [av_one_full first min_height=” vertical_alignment=” space=” custom_margin=” margin=’0px’ padding=’0px’ border=” border_color=” radius=’0px’ background_color=” src=” background_position=’top left’ background_repeat=’no-repeat’ animation=” mobile_breaking=” mobile_display=”]
    [av_heading tag=’h2′ padding=’10’ heading=’Conclusion’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    Ultimately, we have decided that the best choice for our project is the SparkFun Time of Flight Sensor. We needed something light weight due to the robot being top heavy. It was not the lightest, which is why it lost a point on our grading scale. Because of our design, we needed the smallest sensor in order to minimize its exposure and limit the space it utilizes as we have other components in the head. Although it was not the cheapest, it closer to the range expected given its capabilities, which is why it lost another point on our grading scale. It met all other criteria including the two most important aspects, which are the measurement range and the working voltage. The SparkFun Time of Flight module has absolute range from 0 to 10 cm and has been tested to go above and beyond its range, up to 25 cm. It also has an operating voltage of 2.6 V to 3.0 V , but also includes a 2.8 V regulator which allows up to 3.6 V maximum. Luckily, the 3DoT board that we utilize outputs 3.3 V.
    [/av_textblock]
    [/av_one_full]

    [av_one_full first min_height=” vertical_alignment=” space=” custom_margin=” margin=’0px’ padding=’0px’ border=” border_color=” radius=’0px’ background_color=” src=” background_position=’top left’ background_repeat=’no-repeat’ animation=” mobile_breaking=” mobile_display=”]
    [av_heading tag=’h2′ padding=’10’ heading=’Resources’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    1. SparkFun Time of Flight
    2. SparkFun Ultrasonic Distance Sensor
    3. SparkFun Micro LiDAR Module
    4. OSOYOO IR Sensor

    [/av_textblock]
    [/av_one_full]

  • Object Detection and Differentiation using Time of Flight Sensor

    Object Detection and Differentiation using Time of Flight Sensor

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’Objective’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    By Jessica Benitez

    The objective of proximity sensing is to “detect the presence of objects within its vicinity without any physical contact” 1. In our case, Ilo uses a proximity sensing device to both detect an object and be able to distinguish them by using its height. The main purpose of utilizing the SparkFun VL6180 Time of Flight Sensor is to distinguish whether or not the object in front of it is Milo (the other robot) or an obstacle it must maneuver around to continue its search for Milo.
    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’Hardware Design Process’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_one_full first min_height=” vertical_alignment=” space=” custom_margin=” margin=’0px’ padding=’0px’ border=” border_color=” radius=’0px’ background_color=” src=” background_position=’top left’ background_repeat=’no-repeat’ animation=” mobile_breaking=” mobile_display=”]
    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    The components used for this implementation are an SG90 servo, a paper bot using the 3DoT board, and a SparkFun VL6180 Time of Flight Sensor. Some of the key features of the Time of Flight sensor are that it has an absolute range from 10 cm up to 25 cm.

    The following is a schematic of how to connect the SparkFun VL6180 Time of Flight Sensor:

    Figure 1. Hook-Up Guide for Time of Flight Sensor
    Figure 1. Hook-Up Guide for Time of Flight Sensor

    After wiring the Time of Flight sensor to the 3DoT board, it is attached to a servo which is situated to allow for vertical movement.
    [/av_textblock]

    [av_horizontal_gallery ids=’159351,159353,159352′ height=’50’ size=’large’ links=’active’ lightbox_text=” link_dest=” gap=’large’ active=’enlarge’ initial=” control_layout=’av-control-default’ id=”]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    The gallery above demonstrates a fully assembled Paper Bot with sensor and servo.
    [/av_textblock]

    [av_heading tag=’h2′ padding=’10’ heading=’Mathematical Concepts of Item Measurement’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    The robot is set automatically in the forward motion from the start, unless there is an object interrupting it. Once it approaches an object, it stops to take its measurement. Figure 2 represents an ideal situation where the object’s front side is parallel to the time of flight sensor.

    Figure 2. Diagram of Distance Measurement

    In order to find out the measurement of the item, the time of flight sensor will use the servo to scan the item in front of it. The servo will begin at 0° which will serve as the defined base of the object. Due to circumstances involving the placement of the servo, the servo in the following code is initialized at 90°. The base sits at a fixed offset of 70 mm above the ground. Each object tested is over 70 mm to accommodate for this offset. All of this is taking place in the Measuring State (measState). In order to determine the height of the object, trigonometry basics are used for its calculations.

    The measuring state begins by taking the first distance and placing it into variable named previous. The servo then begins to increment by 1 with a delay to allow for a proper reading. Each value taken is then stored in the variable named current. In order to ensure the time of flight is still reading the object, the difference between the current and previous is taken and should not exceed 100. As tested by SparkFun and I, the farthest the time of flight sensor can read is up to us 255 mm. Therefore, as soon as it reaches over the object, it reads 225 mm.

    The next step is the calculation of the height of the object. Due to each object having the offset of 70 mm, we disregard it and take the measurement of the rest of the object. In the Arduino library, the math.h header includes mathematical computation. One thing to note is that the trigonometric functions utilize radians and not degrees. Thus, a conversion from degrees to radians is implemented. Using the figure above, it is important to note that the time of flight and the  object create a 90° angle. This makes calculation simpler. The following equations were used to calculate the remaining height of the object.

    Each objects height is calculated as Offset + Height = True Height ± 10 mm of uncertainty. As mentioned above that the code below initializes the position of the servo at 90°, the code includes a formula that takes the angle of the last measurement and subtracts 90 to get the correct angle measurement.
    [/av_textblock]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    int measState(){
        stopPlease(); 
        // MOVE the servo 
        for (pos = 90; pos <= 180; pos += 1) {
          delay(250); //orig 500
          current = sensor.getDistance();
          Serial.print("\nPrevious Distance (mm) = "); Serial.print(previous); Serial.print("     ");
          Serial.print("Current Distance (mm) = "); Serial.print(current); Serial.print("\n"); Serial.print(pos);
          //Serial.print("Distance measured (mm) = ");
          //Serial.println( sensor.getDistance() ); 
      
          if ((current - previous) < 100) {
            previous = current;
           }
          else {
            double angle = ((pos)-90); // Every 1 degree incrementation is actually 2 degrees on a servo
            int c = previous;
            double rad = (angle*M_PI)/180 ;
            int height = c* sin(rad);
            result = height;
            Serial.print("Angle: "); Serial.print(angle);
            Serial.print("\n c: "); Serial.print(c);
            Serial.print("\n rad: "); Serial.print(rad);
            Serial.print("\n height: "); Serial.print(height);
            Serial.print("\n Result Data (mm): "); 
            Serial.print(result); 
            //while(1);
            break;
           }
        myservo.write(pos); 
        
      }
    

    [/av_textblock]
    [/av_one_full]

    [av_heading tag=’h1′ padding=’10’ heading=’Software Design Process’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    This diagram is a representation of the software implemented to navigate through the playing field using the time of flight, servo, and motors.

    Figure 3. Software Diagram for Time of Flight

    The software begins by setting the motors in the forward position and starting up the time of flight sensors. The sensor continuously takes values in order to detect objects in its path. As soon as it reads an object less than or equal to 30 mm, it stops the motor and begins to take a measurements. It increments one degree at a time until it has reached the top of the object.The last measurement taken before reaching above the object is used to calculate its height along with its corresponding angle. It compares the calculated height to the height of the object it is searching for then either turns right to continue its search if it does not match the value or stops the motors completely to indicate it has found the object it was looking for.

    For the implementation of software,  Switch Case Statements are utilized for its readability and structure and is easily modifiable. Each state is defined by an integer of a value between 0 to 3. The code begins with defining the states START, MEASURE, TURN and STOP and assigning them 0, 1, 2 and 3 respectively. The variable nextState is initialized as 0, therefore the robot always begins in the START state when it turns on. Each function then returns the nextState, which is another integer between 0 to 3. The switch case then cycles through the appropriate cases until it reaches the STOP state.

    The following code demonstrates the Switch Case Statements utilized in the code.
    [/av_textblock]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    void loop()
    {
      int state = nextState; 
    
      switch(state){
        case START:
          nextState = startState(); 
          break; 
        case MEASURE:
          nextState = measState();
          break; 
        case TURN: 
          nextState = turnState(); 
          break;
        case STOP:
          nextState = stopState(); 
          break;
        default:
          Serial.println("ERROR WITH STD"); 
          break;  
      }

    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’Problems Encountered’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    Two major problems I encountered are listed below with their causes and solutions:

    Problem #1: Robot turns right after start-up

    Cause(s): Sensor glitches during initialization and begins to take readings that would indicate it should turn right.

    Solution(s): Insert a delay during initializations to allow for the sensor to take a couple reading before the motors runs in the forward position.

    Problem #2: Couldn’t identify target object

    Cause(s): Robot takes bad turns, which would read the box at a skewed angle. The target object would not be identified and robot would turn right.

    Solution(s): Adjusted the timing on the turns to ensure it is a 90° turn and increased the target range after several readings of the target object.

    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’References’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    1. Proximity sensing – https://www.techopedia.com/definition/15003/proximity-sensor
    2. SparkFun Time of Flight Sensor – https://www.sparkfun.com/products/12785
    3. Arxterra 3DoT v7 Block Diagram – https://www.arxterra.com/classes/c-c-arduino-robots/reference-sheets/

    [/av_textblock]

  • IloMilo Outer Shell Design

    IloMilo Outer Shell Design

    [av_one_full first min_height=” vertical_alignment=” space=” custom_margin=” margin=’0px’ padding=’0px’ border=” border_color=” radius=’0px’ background_color=” src=” background_position=’top left’ background_repeat=’no-repeat’ animation=”]

    [av_textblock size=’35’ font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    IloMilo/Spring/2020
    [/av_textblock]

    [av_hr class=’default’ height=’50’ shadow=’no-shadow’ position=’center’ custom_border=’av-border-thin’ custom_width=’50px’ custom_border_color=” custom_margin_top=’30px’ custom_margin_bottom=’30px’ icon_select=’yes’ custom_icon_color=” icon=’ue808′ font=’entypo-fontello’ admin_preview_bg=”]

    [av_textblock size=’30’ font_color=’custom’ color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    Tripping on Shrooms – Outer Shell Design
    [/av_textblock]

    [av_textblock size=” font_color=’custom’ color=’#bfbfbf’ av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    Author: Farland Nguyen

    [/av_textblock]

    [av_hr class=’short’ height=’50’ shadow=’no-shadow’ position=’left’ custom_border=’av-border-thin’ custom_width=’50px’ custom_border_color=” custom_margin_top=’30px’ custom_margin_bottom=’30px’ icon_select=’yes’ custom_icon_color=” icon=’ue808′ font=’entypo-fontello’ admin_preview_bg=”]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’Introduction ‘ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    Aesthetics provide some semblance of order to engineering solutions. Creating a clean and neat appearance to any design not only appeals to the eye but it can also force systems to be designed in a more user-friendly manner. Instead of a mess of wires, a product can be designed with wire management in mind to create tidy wire routing that clearly shows the systems’ connections between each other. With IloMilo, our design aesthetics were more focused upon looking cute, with system management as a secondary desire. IloMilo’s design required the concealment of two major systems: a Paperbot and an internal joystick that both provides movement to the overall product. The final outer shell design agreed upon required a starting design point that morphed into a basic silhouette to achieve this task.
    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’Germination: Alonso Martinez’s Mira ‘ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”]
    Stuff we will put here woohoo…
    [/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    Figure 1. Alonso Martinez’s Animated Robot

    As the main inspiration for our internal systems, it would be thoughtless as to not attempt to use Alonso Martinez’s outer shell for his Mira robot. As seen in Figure 1, Martinez’s Mira shell consists of two half-spheres connected by a joystick, with the bottom sphere being flat. On the outset of our project, this outer shell design appeared to have everything going for it. Mira’s shell design was mature, obviously created through several iterations by Martinez, and had the space required to hold not only a joystick, but the OLEDs and ToF sensor within the head. Mira’s outer shell was also compact enough, seen in the vidoe, to house all of Martinez’s systems. The closeness of the two half-sphere would have definitively decreased the length of wires required in routing the OLEDs and ToF to the 3Dot board of the Paperbot we agreed as our drivetrain.

    Be that as it may, this is where Martinez’s Mira outer shell design began to show its limitations for our purposes. While efficient, the Mira shell was created around Martinez’s systems and not around the systems we planned to incorporate. Integrating the Paperbot into the Mira shell demanded an increase in the size of the lower half-sphere, in turn, required a larger upper  half-sphere. At this point, the servos required to move the joystick had been decided, adding in more space that needed to be accounted for. With the Paperbot and the servos, the Mira shell would have to be, at the very least, three times the size of the original Mira. At this stage, due to the height of the Paperbot, a massive Mira shell would have wasted a tremendous amount of space around the Paperbot. The 3Dot board is located inside the Paperbot in such a way that connections can only be made through the top of the Paperbot. Any attempts to rectify this issue and maximize the volume efficiently of the Mira shell called for extensive redesigns of the lower half-sphere or Paperbot or both which in turn required weeks, if not months, of CAD work. In the end, the Mira shell design did not offer what we needed in an outer shell within the time frame we had. .

    I had looked at imitating the characters from the game IloMilo, but was discouraged by their design. They were gumdrop shapes with front-facing area that represented their faces. This would require changing the joystick from a vertical arrangement to a horizontal one, as there were no other areas to create head movement, adding a level of complexity that provided no benefit. The faces moving would have also left holes where the internals could be more easily viewed. Thus, I turned to a custom design of my own to achieve our tasks.
    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’Fruitbody Selection: Final Mushroom Torso’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    Figure 2. IloMilo Final Torso Design (Side View)
    Figure 3. IloMilo Final Torso Design (Top View)

    The largest issue the Mira shell faced was maximizing the space taken up by the Paperbot. More specifically, the empty space created due to the height of the Paperbot inside of a half-sphere. To eliminate this, I decided to eliminate the half-sphere torso and replace it with a cylindrical torso. A cylinder created a more vertical appearance that would allow the tall Paperbot to seamlessly meld into the torso. The curvature of a cylinder would also provide additional space if required. If a rectangular prism torso was used, the Paperbot could have had a tighter fit with the torso. However, when fitting a rectangular object in the round ends of a cylinder, the cylinder must be slightly larger than the object to achieve this. Therefore, even with desire of a small IloMilo, there is still potential space for wire management or additional systems. The joystick and the servos associated with it would also have much more room to work with, freeing up some design constraints in this area.

    At this point, I recognized that this torso had taken the shape of a stem, seen in Figure 2. With the edges rounded off and the addition of a slight taper to the cylinder, this new torso created a stubby base that could appear cute but not become the focal point of the bot. The stem torso was also ambiguous enough to have any sort of head attached to it. A plant or animal head would have easily fit over the custom torso.
    [/av_textblock]

    [av_heading tag=’h2′ padding=’10’ heading=’Releasing Spores: Final Mushroom Head’ color=” style=’blockquote modern-quote’ custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    Figure 4. IloMilo Final Head Design

    With an ambiguous torso, I turned to designing the head. The head could arguably be considered the most important part of the custom outer shell. It would provide the movement to express the mood of the IloMilo bot. Not only that, the head would also have to be sturdy enough house two OLEDs and a ToF sensor as well as be light enough to be supported by the joystick. In the interest of lowering complexity, I turned back to the Mira shell design. By using a half-sphere, seen in Figure 4, and modifying it to be slightly wider at the base, I could create a mushroom head to be placed on top of the stubby stem.

    The mushroom head was chosen mainly due to the simplicity of the solution. It could be achieved by stretching the base of the half-sphere and adding two eye holes. External physical modifications with props, such as headbands, bow ties, or cat ears, added an extra level of customization to differentiate the bots from each other. The mushroom head creates a basic silhouette that can be altered either permanently or temporarily, simplifying any potential future designs. The mushroom head shape would also provide an enormous amount of space for the placement of the OLEDs and the ToF sensor, slightly subverting the desire for a small bot.
    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’Conclusion’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    Figure 5. Final IloMilo Outer Shell

    When assembled in Solidworks, the finalized outer shell is able to house the custom joystick without revealing its existence, seen in Figure 5. Once printed out, the Paperbot was able to fit within the recess at the bottom of the torso. The interior of the head was not only large enough to house the ToF and possibly the OLEDs, it had extra space to provide for extended cables for both systems to compensate for the degree of movement from the joystick. All in all, the final design was able to meet most if not all of the requirements created for it.

    However, there are a few characteristics that could be improved upon. To fit the joystick within the stem, the joystick had to be quite tall. Adding onto this, the head is around 400 grams, causing the center of gravity for the outer shell to be taller than expected. Since the outer shell is top heavy and is placed on top of the Paperbot, the entire bot has a higher chance of being tipped over. One potential solution would be to replace the Paperbot with a dedicated, fully-integrated drive train into the torso. This custom drive train, if designed correctly, could shorten the torso and bring the center of gravity down.
    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’References/Resources’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    1. https://youtu.be/0vfuOW1tsX0

    [/av_textblock]

    [/av_one_full]

  • IloMilo Joystick Design

    IloMilo Joystick Design

    [av_one_full first min_height=” vertical_alignment=” space=” custom_margin=” margin=’0px’ padding=’0px’ border=” border_color=” radius=’0px’ background_color=” src=” background_position=’top left’ background_repeat=’no-repeat’ animation=”]

    [av_textblock size=’35’ font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    IloMilo/Spring/2020
    [/av_textblock]

    [av_hr class=’default’ height=’50’ shadow=’no-shadow’ position=’center’ custom_border=’av-border-thin’ custom_width=’50px’ custom_border_color=” custom_margin_top=’30px’ custom_margin_bottom=’30px’ icon_select=’yes’ custom_icon_color=” icon=’ue808′ font=’entypo-fontello’ admin_preview_bg=”]

    [av_textblock size=’30’ font_color=’custom’ color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    Structural Integrity – Internal Joystick Design
    [/av_textblock]

    [av_textblock size=” font_color=’custom’ color=’#bfbfbf’ av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    Author: Farland Nguyen

    [/av_textblock]

    [av_hr class=’short’ height=’50’ shadow=’no-shadow’ position=’left’ custom_border=’av-border-thin’ custom_width=’50px’ custom_border_color=” custom_margin_top=’30px’ custom_margin_bottom=’30px’ icon_select=’yes’ custom_icon_color=” icon=’ue808′ font=’entypo-fontello’ admin_preview_bg=”]

    [av_textblock size=” font_color=’custom’ color=’#bfbfbf’ av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’Introduction ‘ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    Movement begets character. A simple shake of the head, the idle machinations of the hands can yield an infinite amount of expression. Our project strives to achieve some sort of movement to create personalities for our robots. Otherwise, this project would be visually boring as two bots navigating a grid with stiff exteriors doesn’t really catch the eye. Also, considering that to find each other in a grid of obstacles of varying height, the bots will need to vertically move a section that contains the time of flight sensor to allow the sensor to acquire height readings. To achieve these requirements, we were inspired by Alonso Martinez’s bots to use an internal joystick to create the movement for our bots since he used an internal joystick to achieve the same movements we needed. The joystick would be housed in the torso section of the chassis and would move the head section of the chassis. Fulfilling this task required several different design iterations that will be covered below.
    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’Baseplate: Thingiverse Joystick’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”]
    Stuff we will put here woohoo…
    [/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    Figure 1. Thingiverse Joystick

    Since our project was basically from scratch and no other previous project had tackled an internal joystick before, we required a fast prototype of a joystick as a proof of concept. It would be used to not only show how the joystick would be used but, if successful, actually implemented into the bots. The first joystick design I turned to was Alonso’s design, seen in Figure 2. However, seeing as he hadn’t posted any files online, I looked to more available, pre-built designs. Thingiverse is a website where users post files of designs that are 3D printer ready the instant they are downloaded. Figure 1 shows the joystick I found on Thingiverse. I chose this design mainly due to the designer advertising that the joystick could be printed in the configuration shown and not in separate pieces as well as how small the joystick was, allowing it to easily fit over the Paperbot drivetrain.

    However, once printed out, this joystick turned into a major hassle. By this time, we had also settled on using SG90 micro-servos, which this joystick had no concessions for and would have required drastic modifications. The central shaft was also minuscule to the point where weight testing would easily break it off the rest of the joystick. But, the main issue that ruined this joystick’s chances of being utilized was that the joystick was so small that the printer used didn’t have a high enough resolution, thus creating a solid block rather than a moving joystick. At this point, with this prototype down the drain, we became inclined to design our own custom joystick.
    [/av_textblock]

    [av_heading tag=’h2′ padding=’10’ heading=’Wire Frame: Alonso Martinez’s Joystick’ color=” style=’blockquote modern-quote’ custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    Figure 2. Alonso Martinez’ Joystick

    Despite not being readily available, Alonso’s joystick was a major contributor to the design of our custom joystick. Seen in Figure 2, his joystick was a custom design that employed servos to create the head movement of his bot. Considering that we were trying to achieve the same purpose, it would have been a shame to ignore all of his hard work when designing our own custom joystick. Essentially, his joystick design consisted of four things: a base, two joystick axes, and a central shaft. Utilizing the image, I reversed-engineered Alonso’s joystick to the best of my abilities and modified it to meet the dimensions required to fit onto of the Paperbot and inside the chassis torso.
    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’Load Bearing Columns: Custom Joystick Designs’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    Figure 3. Prototype Custom Joystick

    The results of my attempt at reverse engineering can be seen in Figure 3. I mainly simplified Alonso’s design while still trying to keep it small enough to stay on top of the Paperbot. This joystick would be separated into four different parts since I wasn’t willing to risk the same issues as the Thingiverse joystick. Since the design was simple, the assembly of the joystick wouldn’t be that difficult anyway. I would also bulk up the axes and the main shaft in a preemptive act to support more weight than the Thingiverse attempt.

    Once printed, this joystick would showcase a definitive improvement over the Thingiverse joystick. Weight testing showed that it could support the weight of the chassis head. Attaching the SG90s were a breeze with the use of superglue and the accompanying servo horns. Most importantly, this joystick wasn’t designed to be printed in place and would move rather easily once assembled. This joystick would achieve its purpose as a proof of concept as it was integrated with the servos to provide yaw and pitch dimensions. Yet, it would require some improvement as excessive and rapid servo movement would cause either the axes or the main shaft to pop out of their sockets. At this stage, we had agreed upon the vague silhouette of the chassis that rendered this design obsolete, requiring another iteration.

    Figure 4. Version 1 of Production Custom Joystick

    The chassis torso, which would hold the joystick, consisted of a tapered cylinder. Maximizing the amount of yaw and pitch required the joystick to have an extended base to reach a height outside of the cylinder. Seen in Figure 4, the base and main shaft were extended and the socket tolerances tightened to decrease slippage. In the interest of saving space, I would also turn to bevel gears. These gears would allow me to place the SG90 servos in a vertical configuration rather than the horizontal configuration I was using. Once printed, I would immediately test to see if this joystick could support the chassis’ head. Once this test was satisfied, I began to implement the servos with the bevel gears. I immediately ran into issues as my bevel gears couldn’t provide the torque required of them to move the joystick. These gears also couldn’t provide the level of accuracy in movement to allow for fine tuning of the joystick. I would move to address these complications in the final iteration.
    [/av_textblock]

    [av_heading tag=’h2′ padding=’10’ heading=’Roofing: Finalized Custom Joystick Design’ color=” style=’blockquote modern-quote’ custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    Figure 5. Version 2 of Production Custom Joystick

    With saving space as a major concern and my bevel gear attempt yielding nothing but problems, I rationalized that to save the joystick, I would make it larger. That meant that something would have to sacrificed; in this case, the chassis head would have some of its lower material removed. This removal opened up abundant real estate that I capitalized upon. Seen in Figure 5, the largest modification to the joystick was the replacement of the bevel gears with four horizontal platforms. I turned back to the original horizontal placement as it was simpler than the vertical placement and would provide a higher level of movement accuracy without any complicated mechanisms. The four platforms allowed the horizontal placement to occur and were designed to fit as close to the top of the chassis torso as possible. I would also add in two covers on top of the axes’ sockets to stop any potential pop outs from the axes. Once printed, this joystick performed up to expectations considering that it easily achieved the set requirements as well as resolving all of the issues from the previous design iterations.
    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’References/Resources’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    1. https://www.thingiverse.com/thing:2156713
    2. https://www.youtube.com/watch?v=0vfuOW1tsX0

    [/av_textblock]

    [/av_one_full]

  • IloMilo SolidWorks Tutorial

    IloMilo SolidWorks Tutorial

    [av_one_full first min_height=” vertical_alignment=” space=” custom_margin=” margin=’0px’ padding=’0px’ border=” border_color=” radius=’0px’ background_color=” src=” background_position=’top left’ background_repeat=’no-repeat’ animation=”]

    [av_textblock size=’35’ font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=’rgb(255, 255, 255)’]
    IloMilo / Spring 2020
    [/av_textblock]

    [av_hr class=’default’ height=’50’ shadow=’no-shadow’ position=’center’ custom_border=’av-border-thin’ custom_width=’50px’ custom_border_color=” custom_margin_top=’30px’ custom_margin_bottom=’30px’ icon_select=’yes’ custom_icon_color=” icon=’ue808′ font=’entypo-fontello’ admin_preview_bg=”]

    [av_textblock size=’30’ font_color=’custom’ color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    Flight to Orbit – Designing with SolidWorks (Tutorials and More)
    [/av_textblock]

    [av_textblock size=” font_color=’custom’ color=’#bfbfbf’ av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    Author: Farland Nguyen

    [/av_textblock]

    [av_hr class=’short’ height=’50’ shadow=’no-shadow’ position=’left’ custom_border=’av-border-thin’ custom_width=’50px’ custom_border_color=” custom_margin_top=’30px’ custom_margin_bottom=’30px’ icon_select=’yes’ custom_icon_color=” icon=’ue808′ font=’entypo-fontello’ admin_preview_bg=”]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’Introduction ‘ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    Even before the increasing accessibility to 3D printing causing the expediting of rapid prototyping, 3D solid modeling computer-aided design (CAD) programs have always been relevant to engineering. Designs that used to require multiple 2D sketches to express a 3D object could now be completely designed as a single 3D object that could be interacted with. Not only that, these CAD programs were also able to simulate testing and real-world conditions without the commitment of building the object first. SolidWorks is one of these 3D CAD programs and is, arguably, the most widely used within the industry. Therefore, SolidWorks is fundamental to any Design and Manufacturing position and, most importantly, free to CSULB students. This blog post will lay out helpful tutorials and resources used in the creation of the IloMilo joystick from view of a SolidWorks novice, as well as focus on the tools and design options that SolidWorks provides.
    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’Launch: Overarching Mindset’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    Solidworks is just a means to an end: the creation of an interactive, 3D model of a potential real-world object. Even though Solidworks drastically reduces the skill curve to physical designs, there is still a skill curve. Therefore, I highly recommend doing some prep work before actually tackling Solidworks. Doing some simple, rough sketches of the final object helps enormously. These will allow a user to obtain several different perspectives of the object and allow them to break down a complex design into several simpler ones. Therein lies a crucial, comprehensive aspect of Solidworks: complexity can always be simplified with the right perspective. Just because design appears complex as a 3D object doesn’t mean that putting it in a 2D perspective is as complex. A hollow sphere cut in half is appears as two circles, with one inside the other, that is revolved around a central axis line. By doing this, users can cut down on their load as they lean heavily upon the more straightforward tools of Solidworks rather than relying upon the complex functions that require a textbook to understand.
    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’Powered Ascent: Tools of SolidWorks’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”]
    Stuff we will put here woohoo…
    [/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=’rgb(241, 241, 241)’]
    SolidWorks has a multitude of tools and processes that create a three dimensional part as well as modify and fine tune parts to meet specific and changing requirements. Below is a link to a website created by Dassault Systemes, the owners of SolidWorks, that will be a helpful assistant to the following tutorials.

    Figure 1. SolidWorks Help Website

    The most important aspect of SolidWorks, and often overlooked, is how to navigate in a three dimensional space. There are three major methods:

    • Middle Mouse Button – To move the part around in the 3D space, click and hold the middle mouse button while the mouse is on the part. Moving the mouse with the middle mouse button held down will rotate the part on all three axes.
    • Mouse Wheel – Scrolling the mouse wheel will zoom in and out on the area where the mouse is pointed at.
    • Space Bar – Using the space bar will open the orientation menu that will move the part based on a pop-up orientation box superimposed over the part.

    Maneuvering the part will require some time to adjust to the 3D space. Once this can be reasonably achieved, we will shift gears to the tools of SolidWorks. These tools, listed below, allow the part to not only be formed in the 3D space, but also be altered.

    • Sketch – Opens a 2D plane where the actual drawing of the part occurs. Shapes and lines are offered as options for easier usage.
    • Smart Dimension – When a side is selected, smart dimension will give the width, length, radius, or circumference, based on the type of shape selected. Selecting two separate sides will measure the length between them.
    • Extrude Boss/Base – Select either a 2D sketch or certain aspects of multiple 2D sketches to protrude in any direction of the third dimension, creating a solid.
    • Extruded Cut – Selecting a 2D sketch on top of a surface will remove all material in the shape of the sketch, cutting the original solid.
    • Fillet/Chamfer – Creates either a rounded edge or cuts away the edge to create a slope
    • Revolved Boss/Base – Select either a 2D sketch or certain aspects of multiple 2D sketches to rotate around an axis of the third dimension, creating a solid.

    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’Staging: Designing a Part’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    The first step to creating a SolidWorks part doesn’t involve SolidWorks at all. Planning out the part, be it drawing out the part or even just visualizing the part, is crucial as SolidWorks is a blank canvas and not an area of inspiration. By doing this, you can more easily design, create, and modify a part in SolidWorks when given the knowledge of the tools and their possible constraints.

    When designing the IloMilo joystick, I started from scratch with both my joystick design and my SolidWorks knowledge. Any pre-build designs for joysticks online were not able to meet the requirements for our bots and, therefore, I designed a preliminary joystick design that opens up the door for me to iterate and enhance the design in later versions. Once I had a vague idea of how I wanted my joystick to look, taking elements from other joysticks because creating without inspiration is hard, I used several tutorials to kick off my journey into SolidWorks. I was able to use the following tutorial to create a base on which I would build my knowledge and experience.

    Figure 2. SolidWorks Parts Tutorial PDF

    Once I was able to complete the tasks from this tutorial, I looked further into other tutorials. There are several video tutorials I found, displayed below, that are considerably more helpful as the tools of SolidWorks are explained with more depth and one can easily follow along as every action is able to be viewed rather than be told.

    Figure 3. SolidWorks Parts Video Tutorial 1

    Figure 4. SolidWorks Parts Video Tutorial 2

    Figure 5. SolidWorks Parts Video Tutorial 3

    Figure 6. SolidWorks Parts Video Tutorial 4

    One thing that these tutorials doesn’t cover is why there is only one part per part file. While multiple parts can be created in a single part file, it is rather unwise to do this. When multiple parts are created in a part file, each part is locked into place on the original plane that it was drawn on and cannot be moved to either meet with other parts or flipped to different planes. This also makes it harder to shift the parts to correctly align them to maximize the efficiency of a 3D printer. If multiple parts are designed, an assembly file is where they can be put together to ensure that all the parts will actually fit as well as align them to best be 3D printed.
    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’Upper Stage Burn: Assemblies and Beyond’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    To manipulate and combine multiple parts together, an assembly file is required. An assembly file will allow all the parts to be placed into their positions to visualize the final outcome. This is also where all the parts can be moved onto a single plane to allow them to be more easily 3D printed. The following tutorials were of great help to understanding how assembly files differentiate themselves from parts files as well as how they work.

    Figure 7. SolidWorks Assembly Tutorial PDF

    Figure 8. SolidWorks Assembly Video Tutorial 1

    Figure 9. SolidWorks Assembly Video Tutorial 2
    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’Engine Cut-Off: Multiple Design Methods’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    While the previous tutorials are more than enough to cover what is required for basic design parts and assemblies, as well as some 3D printed applications, SolidWorks offers more than assembly and parts creation. If one has the time, here are several other resources that delve into the complexities of SolidWorks.

    Figure 10. SolidWorks Text Book 1 PDF
    Figure 11. SolidWorks Text Book 2 PDF

    Figure 12. SolidWorks Video Tutorial Playlist 1

    Figure 13. SolidWorks Video Tutorial Playlist 2

    As with most programs, SolidWorks allows the user to achieve their desired result with multiple solutions. These tutorials should give the baseline for one to create their parts and assemblies by using the tools in creative ways based upon the users’ discretion. An example of this is creating a cube with a hole through its center: a square sketch can be drawn, protruded, then a circle sketch can be drawn on one of the faces and extruded. Or, a sketch of a square with a circle in the center can be drawn and protruded to achieve the same result. Due to this freedom, it is pertinent to keep track of the sketches, tools, and processes used to create a part, just in case modification is required later on.
    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’In Orbit: Conclusion’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]
    These tutorials were some of the most useful in my understanding with Solidworks. There are a multitude of other tutorials that I would recommend to fit all types of learning styles. However, all of these tutorials are only here to create a baseline for this knowledge. Self-exploration of Solidworks will yield even greater results and understanding at the functions this program has.

    Even with this knowledge, be prepared and willing to toil over a single design for days or weeks only to throw all your work away. Designs can only be forced up to a certain point before they become obsolete. Remember, Solidworks is nothing more than a tool. A well-designed and modular tool, but a tool nonetheless. Solidworks will not create the design for the user or guide the user to a design; that is left up to the user’s discretion. Every choice made will be made by the user and, therefore, every mistake will be made by the user. There will be host of reason why a design will not work and they can pop up at any time during the use of Solidworks. The user must make the decision if the design can be salvaged or not.
    [/av_textblock]

    [av_heading tag=’h1′ padding=’10’ heading=’References/Resources’ color=” style=” custom_font=” size=” subheading_active=” subheading_size=’15’ custom_class=” admin_preview_bg=” av-desktop-hide=” av-medium-hide=” av-small-hide=” av-mini-hide=” av-medium-font-size-title=” av-small-font-size-title=” av-mini-font-size-title=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=”][/av_heading]

    [av_textblock size=” font_color=” color=” av-medium-font-size=” av-small-font-size=” av-mini-font-size=” admin_preview_bg=”]

    1. https://www.grc.nasa.gov/WWW/K-12/rocket/Images/rktrflght.gif
    2. http://help.solidworks.com/2011/English/SolidWorks/sldworks/LegacyHelp/Sldworks/Overview/StartPage.htm
    3. http://web.csulb.edu/~hill/ee400d/Division%20Documents/Manufacturing%20Division/3D%20Modeling/Solidworks%20Tutorial%20-%20Part%20I.pdf
    4. https://www.youtube.com/watch?v=HKSo99hGDd4
    5. https://www.youtube.com/watch?v=cy3ExIAcI2Y
    6. https://www.youtube.com/watch?v=ll_9D6J2yT0
    7. https://www.youtube.com/watch?v=PovLu7Mnhgc
    8. http://web.csulb.edu/~hill/ee400d/Division%20Documents/Manufacturing%20Division/3D%20Modeling/Solidworks%20Tutorial%20-%20Part%20II.pdf
    9. https://www.youtube.com/watch?v=yGvZ3Jly1mI
    10. https://www.youtube.com/watch?v=IR4YsN2d39w
    11. https://static.sdcpublications.com/pdfsample/978-1-63057-148-1-3.pdf
    12. https://files.solidworks.com/pdf/introsw.pdf
    13. https://www.youtube.com/playlist?list=PLBQySgtN0yKOhuW0yw3r_AspZkF-8yS8x
    14. https://www.youtube.com/playlist?list=PL4mNbJmXLK0dn7wdGYOncwFRAQoFIgXiA

    [/av_textblock]

    [/av_one_full]