Kuba Blog 1

 

Myself: Hey Everyone, so my name is Kuba, I'm 23 and I'm from Poland but have been living here for 19 years. I'm studying electronic engineering since I always found electronics and how they work fascinating, even when I was very young I would take apart any electronics I had just for fun. Regarding hobbies I like to game, read manga, and cook. I also love music, both listening and playing. I love travelling and photography so I have loads of pictures of different places, and I love learning about history. I also like skating and apparently also falling off the skateboard. Below are some pictures of my hobbies including cooking, travel, and a video of me falling off the skateboard.







Previous blogs I liked: I liked the "Team Bohemian Raspbian" blog in the Lampotics project. Firstly, the blog instantly caught my eye with the music reference title, as Bohemian Rhapsody is one of my favourite songs. Reading the blog was very interesting as it reminded me of my work placement, with multiple people from different backgrounds studying different things coming together to work toward one common goal in the project. All the aspects of their team's tasks seemed interesting, including the OpenCV task which included a Raspberry Pi running OpenCV to track a face, the Servo Controls task which takes the face tracking output and applies it to servo motors accordingly, the sound overlay task which outputs different sounds based on the movements of the motors, and the threads task, which takes all these individual elements and combines them into one big program. The threads task used a threads based approach with a message bus allowing for good scalability. This makes it easy to add on new functionality. I liked this aspect as it shows that sometimes the best approach is the simple and efficient one, and not the most complex approach. The sound overlay played different sounds for events like movements, power startup, power off, etc. This was implemented using python libraries. The servo control used PWM values to control the motors. A reference point was chosen for 0 degrees. The face tracking was achieved using OpenCV. The face tracking served as input for controlling the motors. Essentially I like this blog as I like the lampbotics project as a whole. It just seems like a fun and interesting project, and this blog showed an interesting team, where each member had very interesting tasks to do, that were very different but come together to make the project work. 

  
Binbot Ideas: Regarding the Binbot project I have an idea that I think would be cool. I'm not sure how feasible it is, but I'll say it anyway. The idea is that if someone manages to throw in trash like a ball of paper from a distance the Binbot recognises this and starts cheering. The AI generated picture below shows what it could look like.

State Machines:
State machines are models that describe a systems behaviour. They present the states a system is in, transitions between states, and actions or outputs based on inputs for each state. Below is a typical state machine diagram.



The concept of state machines and their diagrams started to develop in the mid 1900s. Claude Shannon and Warren Weaver wrote a book called "The Mathematical Theory of Communication", in which they used something similar to state machine diagrams, but not quite the ones we are familiar with today. This was followed by work done by Mealy and by Moore in the 50s and 60s. Their theoretical works is often regarded as the creation of FSMs. Mealy state machines decide their output based on the current state and the input, while Moore state machines determine their output based only on the current state of the machine. These initial state machine diagrams were simple graphs showing states and transitions. 

The early state machine diagrams while effective and efficient, were limited by their simplicity, and weren't ideal for describing extremely complex systems. In 1987 David Harel published "Statecharts: A visual Formalism for Complex Systems". This study expanded on state diagrams adding many innovations to add functionality.  Some of these innovations include: Hierarchical States (essentially states can contain sub-states), Orthogonal Regions (allowing for multiple, parallel state machines to run at the same time), and Broadcast Communication (allowing for events in one region to triggers transitions in another). These innovations allowed for the representation of more complex systems with the state machine concept. 

Once state machines became common they started to get standardized in the 90s. For example Rumbaugh incorporated Harel's statecharts into the Object Management Technique (OMT) and Booch incorporated them into his methodology to describe the lifecycle of objects. These statecharts were also later adopted into the Unified Modeling Language (UML), and with later versions of UML and also within the Systems Modeling Language (SysML) they continued to be evolved and iterated upon.

An example of a project that used state machines that really interested me was the Apollo 11 moon landing mission. State machines were used in this mission for multiple reasons, including guidance, navigation, and certain control systems. State machines were used in the Apollo Guidance Computer (AGC) for astronauts to initiate specific actions. The rocket's guidance software used state machines to proceed through programs for different mission phases. The lunar module is the top part of the rocket that detaches for landing on the moon. The lunar modules autopilot system used a complex state machine that handled reaction control jet firing for altitude control and movement. The lunar module also contained an emergency backup system called the AGS, which is a state machine based system to return to orbit in case of system failure.

The figure below shows a state machine diagram for a Formula 1 DRS system developed in class.




Comments

Popular posts from this blog

Blog 1 - Igor Kapusniak