Monday, 22 May 2017

Final reflections (Anton)


Even I was hopping to spend most of the time with the C++ and in practice I ended up doing something what I wanted do only temporary before focusing on the code. I still found fulfillment in the task I was given. Learning Solidworks and knowing how to model parts is very interesting, learning about material properties or even other design/mechanical aspects such as ways to change gear ratios, change torque, or change from angular movement to linear motion. Sadly the lamp was not 100% finished, but there was some decent progress made, we managed to to have many "firsts" in the project, from degree of freedom (axis which were able to control), to color lcd as face and motion tracking. I had feeling it was the best lamp project yet. Especially I was very pleasantly surprised with motion tracking. I knew if OpenCV is done right can be impressive (fast response, capabilities to estimate distance from camera, track multiple faces or a object at high refresh rate), but I was worried it might not be achievable in that short time-frame. I was tempted to use simpler frameworks which would not gain such impressive results but would safer to achieve, so I was proven wrong. With the motion I'm still tempted to revisit the project and go with gears, but instead classical gears use planetary which would be aligned with the axis of the motion, compact size and solve many issues with previous ideas. And with a custom design (stronger gears) and with dedicated arduino driver would be perfect solution:

But to be honest with the motion team we did many iterations and redesigns of some axis that after reaching the "good enough" stage we decided to focus on other parts of the project. There is no point to dig deep down into rabbit hole and neglect other aspects of the project. With the face LCD I would recommend stay away from color digital LCD for the face itself. It is difficult to find cheap, fast and easy to interface, the work the face team did could be used in the future for some UI interface to interact with a user, but probably not for the face. This might be my personal preference and I like refresh rate much more than eye-candy and I would prefer black / white face to interact with me instantly over colorful face which lags behind for a second. Myself I was tempted to give a try to analogue TV LCDs, they are cheap, they are standardized and come in many sizes and formats. And because they use standard PAL / NTSC they can be driven by standardized drivers, this is advantage of common protocol, that the parts can be exchanged and they still will work and because they are well used there is better support it, people know how to troubleshoot it, while some custom LCD protocol will be one off and making software for it will never work with anything else. For example drones use MinimOSD boards to overlay text and graphics over video feed:

And they are lag free and guaranteed to work 12 and more FPS (max 30FPS) which is decent. Students could use television at home to test the module and if the lamp face has to be enlarged or shrunken it would easy to buy analogue LCD with different dimensions. Other variant would be to use 3 smaller OLED screens with SPI bus. Both OLED screens and analogue LCDs could be colorful but I would recommend to stick with monochrome because it's easier and cheaper to get working well. Overall I think the lamp could be much better overall, there was potential, but then when I think about it, we did a lot and it's good enough. I think everybody improved a lot in many aspects over the 12 weeks.

“You should take the approach that you’re wrong. Your goal is to be less wrong.” 
― Elon Musk


At beginning I was unhappy with my little involvement in the writing code and I had maybe too high demands on other members. Then I realized that I'm different course more focused on programming and it's unfair to other to rob them of their learning experience. Yes I think I would be able to write better firmware for the lamp in fraction of the time, but if I would have done that, nobody would learn as much. So I decided to get evolved with coding as little as possible. Found different field where I learned new skills (mechanical) and I was trying to work on soft skills, which are very important as well. So even I ended up doing something I didn't wanted to do for 12 weeks (I wanted to do it only temporary), I still found it very enjoyable (especially team members made it so pleasing).

Team and sub-teams

I think our motion team was the best subjectively, because I'm always protective of the inner circle. But objectively as well, we delivered what was agreed upon and had absolutely 0 (zero, nada, null, niente, nula) issues as team. We worked well together and everybody had excellent input, everybody was good at something and everybody done their parts very well, everybody was involved and pulling the weight together. Tracking team delivered what was expected but their team had some friction. While face team worked well as team, but their task required more time and it was not fully functional for the deadline. Really it was breeze to work in the motion team, technically it was not easy, because we had to solve good few mechanical problems and sometimes it took us 5 iterations to find the solution. I loved the brainstorming when everybody put their ideas what we could do and bounced back-forth. I liked the fact that brainstorming really worked and we came up with design which wouldn't happen if we would work on each own.What is good that with other teams we were able to sit and talk about issues even if we were disagreeing. I heard horror stories where teams fall apart, our teams held strongly together despite technical obstacles. I think for 99% the time the atmosphere was very relaxed and working on the project didn't felt as working at all.After reading others blog post I have to cheer for the team Awesome as well :D it was pleasure and fun.

Final conclusion

When I was signing on I knew in advance I would love RTOS and applied embedded parts of it. I was not sure if I will like the lecturer or if I will like the teamwork. To my surprise the lecturer and the team was my favorite part of the subject. I would not be able to wish for better team. And with Jason who really is excellent in teaching the trust and teamwork. He is the #1 fan of every single student, no matter what skill or year, supporting them and being happy for them with every small or big step they did. Which is excellent motivation factor and confidence builder. Only regret I have is that I had this module in my last year and not sooner. It was very enjoyable, see other posts for videos / photos. I think anybody in future who is hesitating choosing this elective will not regret taking it. Final verdict 10/10 would recommend everybody taking this course.

PS: I'm tempted to make us lamp shaped keychains as memento, email if ye would be interested receiving one. Too bad that idea didn't crossed my mind sooner.

No comments:

Post a Comment