Program UAV to be remotely controlled on mission critical systems and create a variety of AI models that run on the edge. Upgrade drone capabilities by creating hardware solutions and designing 3D prints.
The School of Computer Science at the University of Lincoln is home to the Lincoln Centre for Autonomous Systems (L-CAS), one of Europe's leading research groups in Robotics and Autonomous Systems (RAS), and a leading UK centre for research in robotics for agriculture and food production “from farm to fork”. The MSc Robotics and Autonomous Systems is designed to equip students with the advanced knowledge and skills needed to develop the innovative solutions required by the emerging global industry in Robotics and Autonomous Systems (RAS), and across many other sectors where RAS skills are applicable. These may include agri-food, automation, industry 4.0, healthcare, logistics, military, nuclear, security, and transport. The programme can also prepare students to continue their study in a research capacity, allowing them to further specialise and focus their interests. Course content is informed by research carried out at the University of Lincoln, especially in the Lincoln Centre for Autonomous Systems and associated entities, and in RAS and related areas. This aims to ensure that content remains consistently underpinned by the latest thinking.
HackRF one
The objective of this project is to transfer binary data from one HackRF One to another using a modulation for the transmitter and a demodulation on the receiver. To achieve this objective several projects had to be created like FM including RDS, WiFi snipper, Morce code, OFDM modulation and several other technologies.
An integrated system for robotic weed control: deployment, mapping and targeted spraying
The objective of the project is to have a simulated robot called Throvald to run across the field of crops and find the bad weeds so that it can spray them. With image processing extracts the middle point of the recognized weed and all of the points are published as a pointCloud. Another node gets these points and desides if it needs to spray and publishes all the collected points so that it will be visualized on Rviz. In order to collect the bad weeds from the images the background had to be removed and then find the weeds. The implementation works with color matching through HSV images, though I also tried with convolutional neural network (CNN). One option to locate the weeds is by training a model, but this was very time consuming because of the annotation that had to be done. I used this annotation tool though there are many more. For the training I used a tool called mrcnn and followed their tutorial about baloon training. The training took more than 35 hours. The final result wasn't as satisfying as it should and it takes more than 3 seconds to get a result for each picture, so it wasn't usable for a real time application like we wanted.
Neural Classification for Sign Language Recognition
Master's thesis for classifying American Sign Language using Convolutional Neural Network. Collected data from Secondary and Primary sources which were combined for better accuracy. This way a large dataset was created which was combined with augmentation to have more variety. This was meant to be tested on a Pepper Robot but the social distancing made it impossible.
Cat & Dog Classifciation (CNN)
In order to classify a set of objects, which in this case is cats and dogs, a model has to be created and to achieve that the classifier CNN (Convolutional Neural Network) was selected. The library tensorflow makes the tuning of most parameters an easy task and at the same time supports the usage of Cuda to interface with the supported GPU of the computers. By training the model, the input images go through a number of layers. In each of them a 3x3 kernel slides over the input image and multiplies all the values. An activation function is applied to make the model nonlinear so that it can better learn. The output is passed to max pooling which uses a 2x2 filter to slide across the output and finds the maximum value to address the issue of overfitting. Also a dropout is used to remove a random set of neurons in that layer which helps the new data to have better effect. The next step is to pass through the fully connected layer which applies weights to predict the correct label and gives the final probabilities for each label. These weights in the training step include the Forward Pass which assigns random values to the layer, the Loss Function which is trying to adjust the weights to minimize the loss, the Backward Pass which determines which weights contributed most to the loss and adjust them and finally the final weights are updated with a specific learning rate.
Machine translation English to German (RNN)
Uses a sequence2sequence model for creating a Machine translation from English to German using sentences which are given. The same type of model is used for multiple applications like translator, speech recognition, chatbots, video captioning and others. A sequence to sequence model can transform one sequence of words to another which might be a different size. The sequence2sequence model consists of the encoder and the decoder which use an RNN gate to fix the problem of short-term memory of word sequence. The encoder inputs every word into the gate and outputs a vector and a hidden state which is used for the next word. The decoder takes the encoder vector and outputs a sequence of words for the translation.
Created automated procedures focused on massive proactive actions leading to reduced customer complaints and improved customer experience. Developed python scripts and libraries that interconnect to multiple MySQL and Oracle databases, retrieving the appropriate customer and system data, analysing and taking decisions depending on different scenarios. Launch of new Vodafone TV Solution, consisting of Oracle Order & Service Management, Oracle Siebel 8.0, Kaltura Video Platform. Operated the corresponding IT service, enable the provisioning of the new users. Developed automated solutions confirming the successful end to end service provisioning.
I was responsible for the good health of the systems (Servers, TEL, DB). The department that I was working had to do with the SDBM app for Cosmote which controlled and configured the connected devices (AC units, Multimeters, ...). I created scripts and services for better monitoring and automation
As part of my mandatory military service I automated the soldiers services and leaves using Excel VBA. Also, I was part of the Communication Centre where I automated the distribution of the signals to the served units using Python and Excel VBA.
Pyrseia Insertion
A python script was running on an interval that checked for new millitary orders and it downloads them in a html file with the attachments to a folder based on the unit it was supposed to go. The outputs of the python app is read by a Excel document using VBA buttons. It can imported all the information that is needed, also it can print the attachments and the Excel sheet as needed.
Winner of the Battlehack Athens 2015 with Tekcit team and participated in the finals at PayPal Headquarters at Silicon Valley.
Tekcit Face Recognition
Created an application based on a personalized customer facing application, with AngularJS and Ruby on Rails technology, providing an interface for both mobile devices and the Internet, with support for multiple servers.
A Raspberry Pi computer hosted a NodeJS server, taking the place of a Point of Sales and managing the face recognition of digital photos by users through an OpenCV library. It was connected to the Ruby on Rails application by a Python backend system. Both the application itself and the Python backend were supported by the Heroku platform. Braintree v.zero SDK was used for payments, while SendGrid provided transaction confirmation emails.
Crocodile
Created a platform which is responsible for crowd control. Each person in a group is wearing a low power bluetooth beacon and the signal is captured from multiple android devices or raspberry pi devices which are installed on specific locations. Each beacon has to be registered with the platform and once it gets out of range of all capturing devices a notification is sent to the leaders of the group. This has applications on school trips, travel agencies, etc...
As part of the software developting team at NeuroPublic, I familiarized and developed applications based on GIS (Raster, Vectors) with data in a form of GeoJSON, Shapefiles, KML. These data were stored on multiple databases like PostgreSQL (PostGIS) or Oracle SQL. Additionally, I had to convert the projection of the geodata to multiple SRID. The representation of the geodata was based on open-source applications while I developed web interfaces using Oracle Maps or Leaflet. Also I dealt with analysis of satellite images where I created a Python RESTful service using OpenCV, GDAL, QGIS. Last but not least, in order to retrieve and process the appropriate data, I used Bash and R scripts.
Mapviewer
Using Oracle DB to get vector data and display them through the Leaflet API on a map. The Vector data can be removed and moved on top of the other layers by the user at any time.
Tree Canopy Extraction
The user inputs a satellite image, the application finds all the trees and shows it’s canopy as a layer on top of the satellite image.
LandCover Classification
Gets an image and finds all the crops, then it classifies what kind of crop it is.
Home Security System that can input sensors from GPIO, Hikvision LineCrossing and MQTT sensors. The MQTT sensors is used for the wireless sensors that I’ve build from ESP8266. Also sends notifications through MQTT, Mail, Voip and supports multiple accounts. It is designed for the Raspberry PI Zero, but can be installed on any linux device.
AlarmPI-Android
Android App for AlarmPI server.
snips-AlarmPI
Controlling the alarm state with voice commands through Snips Platform.
Using Home-Assistant with various devices that interact with it through MQTT or the device specific API. Most of the notifications and automations are working without a need of internet connection.
Notification Systems
Email
Pushbullet
TTS (Speaker, Google home)
Screen (chromecast, Kodi)
Devices
Wifi Relay with ESPHome firmware (Sonoff Dual R2, Sonoff Basic)
VoIP Analog FXO (Linksys SPA3102, Grandstream HT503)
UPS (APC Back-UPS 950VA, 18650 Battery Shield)
Router (Asus RT-AC56U)
NFC Tags
Temperature/Humidity sensors (DHT11 module)
How devices are controlled
Voice Commands through Snips or Google assistant
Sonsors/Switches from AlarmPI or Zigbee or Camera Image Processing
WebUI through Home-Assistant Lovelace interface
Automations based on events like time of the day
Automations Honorable Mentions
Easily activate/deactivate the alarm with the phone through NFC tags that are outside and inside the home. This way the security cannot be breached because the authentication is done on the phone side.
Create a switch for the living room which disables all automations there in case we need to watch a movie or sleep. This requires the use of the condition on each automation.
Using a Sonoff Dual the window cover can be controlled. It closes before the sun shines in the morning.
Turn on the AC when the door or window is closed and the room temperature is above 29°.
The lights are turned on when specific sensors are triggered and stay on until they close.
Scan the network for new devices and notify when they appear. Also checks for specific devices if they are online or not.
By pressing a specific button on my switch, I can turn on/off my PC, IR speakers, light, AC and window cover.
When the camera linecrossing is triggered, the image of the event is displayed on the TV.
Turns off the water heater after a specified time. It uses a Sonoff device with a high-current load contactor.
Scripts in the UI for checking the status of system services which can be disabled/enabled. Also there are scripts for updating specific services.
Security
Expose the least required services to the internet
Use of 2 Factor Authentication when possible
Use Fail2Ban to block connections with multiple wrong authentication requests
Block internet access to non trusted devices
Access internal network from the internet through VPN
This is a Linux companion app for integrating your system with an external application like Home Assistant using MQTT. It's very usefull for remote controling a linux PC, receiving notifications and monitoring it's stats.
Features
Sensors: Automatically discover sensors that monitor and control the system.
Home Assistant: Uses MQTT Autodiscovery to create entities and shows if update is required.
No sudo required: No need to be root user to install and use, unless used on server setup.
Easily expanded: Any new module is automatically imported and custom modules can be added.
This custom addon is used for monitoring the call status on the VoIP server Asterisk. The information is taken from the Asterisk Manager Interface (AMI) and publishes the call status to the MQTT server.
TPMS BLE
Integrates Bluetooth LE Tire Preasure Monitoring System to Home Assistant using passive connection to get infromation from the sensors.
MQTT Mediaplayer
A modified version of the original for the use of LNXlink that allows you to use MQTT topics to fill out the information needed for the Home Assistant Media Player Entity.
OralB BLE
Integrates OralB Bluetooth Toothbrushes into Home Assistant. It is not used because an official integration has been released.
This is web service that is used by prometheus to connect to remote machines and runs any method that is needed, like shell commands and soap requests. It only supports results that are integer and it will try to convert to that.
Calls internal phones and routes outbound phone calls based on the diled number. The inbound calls are filtered when they are on an unwanted list, the rest a caller identification is added and then a notification with the contact details is displayed on the TV.
Asterisk Assistant
Have a voice assistant on Asterisk PBX Server using Google for Speach recognition and for Text-to-Speech. It can integrate with Home Assistant by recognizing the intention of the speaker.
snips-asterisk_voip
A skill for the Snips voice platform that uses linphone to make voip calls.
Asterisk-limitcalls
Created a system that converts the PSTN line to VoIP with scripts that calculate the remaining free time and connect to an account to get the remaing money.
Annoy telemarketers
Record sentences of myself and automati Automatic answer a blocked number and prerecorded sentences are played to the caller. The next sentence is played after the caller stops talking. The conversation with the caller is then recorded.
Asterisk Call History
This application shows the call history of all incoming/outgoing calls from asterisk server (Master.csv).
Python library to detect user idle time or inactivity on Linux and Windows.
libHikvision
Python library to parse Hikvision datadirs that Hikvision IP cameras store videos and images. Has options to export videos from specific times and even extract the video thumbnail and even change the original resolution.
Bayesian Networks
Implementation for bayesian network with Enumeration, Rejection Sampling, Likelihood Weighting. This module is part of an assignment for the Artificial Intelligence module.
I created this smart lock for my door which is using 3D printed material to mount onto the door. The idea is that a key is permanently inserted into the door and the motor is attached to it.
Connection Diagram
ESP32s DC Worm Motor with Encoder (Rated Torque: >8kg.cm) L9110S Motor Driver Power supply