Before starting this project, I knew that the amount of work could become overwhelming if not properly scoped. I was warned by my supervisors to not end up with a half-finished project as it is better to finish something small than to have a big unfished project. Because of this, I made a prototype in the first week to analyze the scale and viability of this project. This was successful, I was able to refactor the original project in working microservice prototype. So, I decided to work in sprints with the goal to have by the half of the internship a working microservice TOS simulation with the same functionalities as the original project. Afterwards I will improve the architecture incrementally and add additional functionalities. Unfortunately, I am behind schedule. This week is week 7 out of 18. In two weeks, I should have a version of the system with the same functionalities as the original. With the current pace I will not manage to meet my goals in two weeks.
These changes improve the architecture but makes it more difficult to reuse the original logic in this project. Therefore, this week I decided to refactor the code to be closer to the original so that the original code could be more easily integrated. I changed the ids to be string based again and I changed the units to be fixed-point and in millimeters.
For know I will change my goals from implementing the functionality adhering to my target functionality to just implementing the functionality. I will keep the design choices I made such as the simulation / TOS separation and separating the vehicle hardware API from the controller code. However, I will not rewrite huge chunks of code to adhere to use my framework API. If the original code does not fit the architecture, I will just glue it on for now. With these changes I believe I can have all the original functionality in two or three weeks. Afterwards I will focus on cleaning up and refactoring the architecture.
At first, I tried to completely reimplement the container and stacking system. It was difficult and error prone. During this implementation I realized the issues with my process described in the previous paragraph.
I changed the units and ids to reflect the original code and started over. It became much easier. By not trying to completely redesign the logic I was able to implement the container and stacking logic in 2 days.
Next week I want to implement vehicles. I by the end of the week I have the Automatic stacking crane working and maybe started with the Quay Crane.