Team Status Update 3/21/20

  • Finalized new design to be simulated completely on software
    • Revised each member’s tasks/responsibilities
    • Discussed new goals and priorities
  • Completed Statement of Work
  • Conducted 3 meetings to devise a plan, split up responsibilities, and get some work started
  • Started designing graphics for simulation
    • Established car and track graphics
    • Modularized code to be compatible with previous path planning scripts
  • TO DO next week:
    • Finish basic simulation graphics (i.e. turn right, stop)
    • Test non-cooperative path planning algorithms on simulation

Serris Status Update 3/21/20

  • Discussed with team, TA and faculty member about change in design
    • Project will be purely software-based
    • Focus remains the same: showing the effect between cooperative vs non-cooperative autonomous driving
  • Worked on Statement of Work to go over parts of the project that are changing, being deleted or being added
  • Created simulation of figure-8 track with cars moving along the circle
    • Below shows example of progress
    • Yellow triangle denotes direction of car moving
    • Modularized code to make it more dynamic
  • NEED TO DO NEXT:
    • simulate cars turning right
    • change speed based on path planning algorithms for non-cooperative case first
    • possibly different scenarios (i.e. different tracks, different car interactions)
  • Progress is as expected, will continue to advance simulation

Team Status Update 3/7/20

  • Design Report
    • Finalized design report by clarifying design specifications such as tradeoffs, alternatives, metrics, etc.
    • Organized what has been done and what still needs implementing/testing
  • Accomplishments
    • Finalized path planning models/algorithms for cars (i.e. Intelligent Driver Model)
    • From the construction of the car, figured out steering mechanism and movement control of vehicles
    • Successfully constructed vehicle to move without glitches or power issues
    • Tested communication latency between server to client (NodeMCU)
    • Able to control one vehicle’s motors through Python server
  • TODO
    • After parts come in, construct other vehicles and test communication across multiple vehicles
    • Test latency between interaction with multiple clients
    • Test path planning algorithms on cars for movement and speed
    • Test camera detection on multiple vehicles running with tags
    • Implement digital simulation of cars

Serris Status Update 3/7/20

  • Revised/finalized design report
  • Did more research on power issue and came up with a solution for the scope of our project
    • After testing power on each part, decided to have different power supplies for NodeMCU and L298N driver so enough current would be available for the Wifi connection
    • ordered more parts to test interacting with multiple vehicles
  • Was able to control vehicle’s motors through a Python server
    • Connected NodeMCU to same WiFi network and controlled motion by byte commands
    • Was able to do so without glitches or power issues
    • Able to get an upper bound communication latency time
  • Progress is as expected
    • After spring break when the parts come, will begin testing motion with multiple connections and multiple vehicles

Serris’ Status Update 2/29/20

  • figured out motor inconsistency was due to power issue
    • need to figure out how much power (v & i) the nodemcu needs to power the logic board and also be able to supply power for the motors
  • started testing wifi connection with python server
    • was able to send one message from python server to nodemcu’s builtin led light
    • tested latency and experimented on how to improve it
    • able to send multiple bytes in less than 1s to nodemcu (previous tests used strings and took ~6s to send)
  • experimented with simple socket server system with one server and 2 clients
    • designed communication structure and decided to send messages to clients separately as opposed to broadcasting to reduce amount of data being sent at a time
    • was able to send different messages to different clients
  • worked on design report
  • progress is on track
    • will continue to work on power issue and test cars
    • will soon test sending messages through socket server to cars to move motors

Team Status Update for 2/22/20

  • Design Changes:
    • Decided on a Figure-8 track for our demo
      • Simplified path planning – in this case, each set of vehicles are in their own track and only need to worry about starting or stopping
    • Added a L298N motor controller board for each vehicle in order to safely power the motors and NodeMCU chip
      • Adds a little extra cost to each vehicle but still under budget
  •  Challenges:
    • NodeMCU ESP8266 chip posed major connectivity issues whenever we tried to upload code.
      • Everyone helped debug with different software tools, using different cables, different drivers, version of Arduino IDE and of esptool, etc.
      • Researched on alternative Wifi modules for project
      • Finally, ordered new NodeMCUs from another manufacturer and it worked
    • Programming the motors through the NodeMCU and motor controller board
      • Early tests have shown an unpredictability in controlling the vehicles. Some behaviors are unexpected or not exactly as programmed.
      • Still able to get metrics such as speed and stopping distance though
    • ArUco takes longer computation time when the tags are smaller
      • We determined the max size of our tags to be 5 in. x 5 in. Therefore, in order to meet the latency requirements of 200ms and to also keep the entire track within the field of view of the camera, the height placement of the camera is extremely important
      • A proposed workaround is having the camera placed at an angle instead of directly overhead the track. This would allow the tags to appear larger in the frames
        • We would need to perform some image warping, however, to get an accurate estimation at the vehicles’ positions.
    • Video frames of moving tags might be much lower resolution than pictures
      • ArUco marker detection is performing very well so far in preliminary tests of images of printed tags, but still unclear how its performance may change when using the video camera
  • Accomplishments:
    • Finalized implementation plan by defining metrics
      • Chose track size
      • Determined height of the camera above the track
      • Collected rough estimates of computation time of object detection algorithms
      • Figured out the accuracy of object detection framework for our problem setting

Serris’ Status Update for 2/22/20

  • Debugging to get connection with NodeMCU
    • Server was not recognizing the board as an ESP8266 and couldn’t connect to the board to flash the firmware
    • Tried in Arduino IDE with the ESP8266 community board manager (also tried different versions)
    • Tried with other applications to flash firmware  (i.e. PyFlasher, Micropython) but was still timing out
    • Not working with motor controller so I tried uploading just basic code to the ESP8266 board
  • Thought it was a toolchain issue and started testing with different software tools
    • CP210x USB to UART bridge: tested the serial port with different versions to ensure tools were compatible
    • Since the board is made from Espressif System, tried their built-in toolchain (ESP8266_RTOS_SDK) but wasn’t working
  • New NodeMCU parts came and tested on those
    • Realized it was a chip issue and uploading code works fine now
    • Able to get code uploaded
    • Working on controlling motor direction and speed but running into inconsistencies
  • TODOs:
    • Finalize schematic between motors, ESP8266, L298N motor controller, battery
    • Control direction and speed
    • Connect and control through WiFi

Serris’ Status Update for 2/15/20

  • The parts we ordered last week came so I was able to start building our robot cars. We got 2 different frames (one with a chassis kit and one with individual parts); we wanted to compare the motors and movement of both builds. I built one car, connecting the NodeMCU and L293D IC motor controller.
  • Started coding in the Arduino IDE but my OS version was not compatible so I used the Beta version but it kepy crashing
  • I was able to get some motor functions but it was not consistent
  • Decided to look directly controlling the motors through MicroPython to skip the intermediate step
  • Installed the device drivers for the microcontrollers to be recognized
  • Running into issues connecting  to the correct serial port of my NodeMCU using MicroPython
  • Progress is as expected