Categories
Uncategorized

How I would Learn Programming from Scratch

I have been programming earnestly for about 8 years and professionally for 5 years. I have experience in front-end development, back-end development, and data science. My path is fairly traditional, considering I initially learned by myself and then continued my education as part of my undergraduate studies and during my placement year.

  1. Start with Python. Regardless of whether you plan on learning front-end, back-end, or data science, Python will help you grasp the fundamentals without getting bogged down in syntax, which is something I struggled with initially. While syntax is important, it can be a barrier for many people. I started with Java, which wasn’t a horrible idea, but I spent a lot of time learning higher-level concepts like OOP that were only useful much later on.
  2. Start creating things as soon as possible. There can be a temptation to watch YouTube videos, follow guides, and copy and paste the results, but this often gives a false sense of learning. When it came to tasks outside the domain of these guides, I struggled. Instead, look up how to do the specific subtasks needed but not the entire project. Learning a language is similar: knowing words and syntax is important, but knowing how they fit together leads to fluency. Example projects to start with include a diary application, a to-do list, and Hangman. All of these are CLI utilities, so you won’t get bogged down in display methods.
  3. Learn how to read documentation. It might sound trivial, but being able to read and fully understand documentation without examples is a key skill that will be invaluable in the future.
  4. Start reviewing other code and look at how projects are structured, particularly on GitHub.
  5. Experiment with other areas of programming. For example, if you are interested in making websites, try learning JavaScript or TypeScript. If you are interested in making applications, try using Tkinter. If you are into making games, consider looking at Godot.

It’s important to have fun while learning. If you don’t enjoy the learning process, you might find programming hard to enjoy. Learning new skills is a massive part of programming, and it’s a constant journey of learning from others.

Categories
Uncategorized

UAV Object recognition

Overview

Recently I have been working/designing a UAV system, to be able to detect people, then from that be able to relay this to a ground station. I like it call the this system UAVS (Unmanned aerial vehicle Sighting)

Reason

On large ships, when a person is overboard (MOB), there is very little that can be done, apart from release a Lifebuoy, however often in large waves, it is very easy to lose sight of the MOB. So using a UAS system it means that you can get an aerial view, hopefully allowing for the MOB to be found and rescued.

Technical Overview

I have planned to use a single Raspberry Pi to run both the servos, to allow for the 2 freedoms of movement, also allowing for the camera to seek and find objects on the ground/sea.

The Raspberry Pi is running a software called YOLO which is an object detection and recognition system so far has been very reliable about identifying objects. However since the Raspberry Pi CPU power is very limited it means that the there is a significant drop in frames during the recognition process which could be problematic. However the solution is simply to use a more powerful device. 

side view
Top side view
Data flow schema

Overview of Systems

  • Plane: Bixler 2
  • Camera Simple HD Usb camera (However Thermal optics, would be ideal for night time operations)
  • AI recognition system: Tensorflow
  • Video transmitter: Fat Shark 600mW 5.8 GHz A/V Transmitter
  • Control system: Futaba
  • Battery: 2x 1600 mAh 3s LiPo (1x for Motor Power and Another for the Raspberry Pi)

Possible problems

Though this solves the problem of sighting, it still needs to be autonomous, right now it needs a person to operate the UAS, and observe sightings in the video link. So would require training and special equipment which is not practical for many instances.

Another possible problem is that since the drone is very light in order to maximise flight time. It means that in high winds like during a storm it will be blown very quickly away from the ship. To combat this it could make since to use a Quadcopter in order to have more control during storms. However during light winds it makes since to use a light plane. Since it allows for a greater distance to be covered.

Future

I will try and update this Blog with all the progress from this project, so expect updates shortly.