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
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
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
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