Robert Herrera

Projects

Lawn Mower Simulation: Grid Navigation and Obstacle Avoidance

  • Worked in a team of 5 to create a desktop application for simulating mowers cutting grass and avoiding obstacles. Collaborated using Git repo.

    • Application parses input file specifying lawn dimensions, starting location, charging stations, enemies (gophers which follow mower), and craters (to avoid).
    • Application displays state information such as total grass cut and turn count.
    • Application supports ability to stop simulation, step forward one turn, and fast-forward to end of simulation.
    • Helped implement heuristic algorithm for mowers to cut as much grass as possible in given scenario and share information via communication channel
  • Specified formal design using UML

  • Developed in virtual machine using Java and Java FX.

  • Completed for CS-6310 Software Architecture & Design

Full-Stack Auction Website

  • Worked in a team of 5 to create a full-stack auction website similar to eBay

    • Users are able to list items for sale, search using keywords and filtering criteria, purchase items at set price or place bids, rate and review items
    • Users are able to view statistics regarding completed sales and auctions.
  • Created EER, IFD, and relational mapping diagrams. Wrote acceptance criteria, task decomposition, and abstract code prior to writing application code.

  • Created application to match formal design document requirements

  • Designed database schema, wrote SQL queries and views, wrote SQL scripts to populate database, wrote back-end Python API/end-points, and wrote front-end Vue.js code.

  • Organized and attended team meetings. Collaborated using Git repo. Helped present final live demo to TAs.

  • Developed in Docker using PostgreSQL (Adminer), Python (FastAPI), and Vue.js

  • Login screen

Ladder Logic in OpenPLC

  • Used OpenPLC in Linux Mint (VirtualBox) VM to design several ladder-logic diagrams simulating industrial control systems such as:

    • A multiple intersection traffic light controller coordinating vehicle and pedestrian traffic
    • An industrial process mixing multiple ingredients with timing requirements
    • Robot movement towards a moving target including converting binary input to grid navigation
    • An elevator in a building with multiple sensors for door open, door in place, and buttons to request elevator on each floor.

  • Preview of PLC program to handle a parking lot

Cyber-Physical Systems Security

  • Used Factory I/O to simulate multiple industrial control systems using Function Block programming.

  • Designs included:
    • Tank filling/emptying process with logic implemented to reverse operation.
    • A conveyor-belt system which sorts boxes based on height using laser sensor, RFID tagging, and displays number of boxes sorted by type. Includes logic to reverse operation.
    • A production line which assembles items with multiple parts along converyor belts using a Pick & Place arm.
  • 3D scenes were provided with multiple sensors, actuators, and input buttons.

    Sample Factory I/O scene
  • Completed for CS-6263: Intro to Cyber-Physical Systems Security.

Unity: Video Game Algorithms

  • Used Unity 3D to implement algorithms and "agent" artifical intelligence techniques used in video games.

  • Grid Navigation
    • Wrote algorithm to discretize space, superimposing a grid onto game terrain. The grid enables simple collision detection for navigation and obstacle avoidance.
  • Navigation Mesh Generation
    • Wrote an algorithm which discretizes navigable space.
    • Forms triangles to cover entire space (around obstacles, if needed).
    • Merges triangles into larger ones for efficiency.
    • Implemented A* algorithm to work on the navmesh I created.
  • Fuzzy Logic Driven Vehicle
    • Implemented Fuzzy Logic to autonomously drive a vehicle on procedurally generated track.
    • The vehicle follows a set of fuzzy rules to determine when and how much to accelerate, brake, and steer based on road conditions.
    • Sample of Fuzzy Logic assignment. Not my video.
  • Finite State Machine for Dodgeball Game
    • Implemented FSM rules and logic for agents to play dodgeball game against AI in various scenarios
    • Sample of FSM assignment. Not my video.
  • Completed for CS-7632: Game Artificial Intelligence.

Software-Defined Networks

  • Projects included:
    • Used a software-defined network in Mininet to explore Border Gateway Protocol.

    • Implemented Spanning Tree Protocol host-discovery algorithm in Mininet.

    • Implemented a firewall with rules based on source/destination IP address, MAC address, and port number.

    • Used Wireshark to investigate TCP network behavior during high congestion
    • Writing sample from my report
  • Completed for CS-6250: Computer Networks.

ChiHackNight