Title: Reflections 2
Hi there. This blog entry is about my reflections or opinions towards the lampbotics project during the entire Sprint 2 in terms of personal, technical, teamwork, and project management. Before going into further, I would like to give a brief introduction of my task in Sprint 2. Basically, I am working on Raspberry Pi2 7 inch Touch Display which uses an open source GUI frameworks named Kivy to provide a user interface for users to choose the desired modes such as Face Recognition, Color Detection, or Shape Detection.
It was truly a fruitful sprint for me. This is because i got to learn new stuff which is related to Graphical User Interface (GUI) and a new toy as well, which is the 7 inch Touch Display. Initially, I was planning to work with Filipe on the Mechanical side but was then switched to Embedded System Design side due to the excessive manpower at the Mechanical side. I was then assigned to provide a user interface so that there are interactions and feedback between users and lampbotics. We then decided to buy in the 7 inch Touch Display after team discussion. The Display itself is basically a replacement for a monitor, and is easy to be used, portable as well. It is like a programmable iPad, which is fun to play with. I've learnt a lot throughout the process of installation of hardware, GUI frameworks (software) and write/debug Kivy coding. This experiences had boosted up my Python coding skill, as well as my understanding and coding ability in GUI field, especially in Kivy,
In term of hardware installation, it was completely fine with the guides provided online as the 7inch Display is very easy to be assembled. The following step is to determine the GUI framework to be worked on. There is a wide variety of GUI frameworks avaialble out there. After a thorough research, I've categorized out 3 most commons used frameworks which are Tkinter, WxPython, and Kivy. By doing a comparison between 3 of them, Kivy was found to be the most suitable framework to be used as compared to the others due to its powerful handling from widgets to animation. Besides, it includes its own language for describing user interface and interactions which is useful to learn from. However, Kivy is a very heavy open source Python library which is slower to run as compared to Tkinter and WxPython. Then, this was then followed by the installation of Kivy library. Issues were met at this stage due to the wrong guides provided online. After trying different approaches, Kivy was successfully installed. Note that it could take up hours to install due to its large size. As a reference, the installation of Kivy was described at my last blog post. After that, a basic Kivy program was written to have a few buttons which could open up specified python files to be performed. It was modified from the following link:
After gaining some ideas and basic knowledge of programming Kivy, a further modification was made to enable a camera screen to be appeared onto the screen, to capture an image, and display it out. This is essential as each of the buttons are linked to different modes which requires a camera screen for feedback. This is the main goal of this sprint and for the next sprint, all the modes will be combined with Kivy Interface under Kamil's thread.
As mentioned before, we were split into ESD and Mechanical teams at the early stage. In ESD side, we are constantly communicating with each other as our codes somehow need to be linked together as one whole system at the very end. For instance, my Kivy GUI has to cooperate with Luke (Colour Detection), Philips (Face Recognition), and William (Shape Detection) systems. Therefore, communication is a must to enable understanding of each coding which will aids in combining all into one. Also, Kamil is there to help us out with threading problem. The threading workshop which was held by him was extremely useful in standardizing each of our own system. Besides, each of our team members are very helpful. Thanks to Luke and Kamil for helping me out in understanding the thread system and opencv stuff. Overall, I feel like our team is very cooperative and helpful.
Project Management Reflection
Despite of the holiday breaks and other project stuff ongoing, I personally thinks that our project flow and time management works fine. Within this limited time frame, we were still able to deliver working separate system. Now, the last sprint will be used to combine all the systems into one working lampbotics project. On Monday of every week, we will all gather up to talk about our own system flow, task undergoing, aims to be achieved and time frame to hit the goals.This is very helpful in term of project management as this enables each of us to understand others working progress. By that we can form a big picture, or a clearer vision of the whole system working progress. Besides, it helps us to set our own goal and time frame, in turns which help us to avoid wasting time.
Thoughts on the next sprint
One issue was met when connecting camera to the Raspberry Pi2 which is connected to the 7inch Touch Display. This is because the Display is located at the bottom, and since the Pi need to be connected to the Display, it will be situated at bottom as well. Hence, to connect a camera at the head, there is a need for a long ribbon wire for connection. After a brief discussion, it was decided to place the camera at the bottom instead of the head of the lamp. The disadvantage of doing this would be limiting the camera's vision as the base could not be rotated. I hope to successfully combine all the systems together with Kivy Interface on the next sprint.
Heng Zhen Jing