Politecnico di Torino (logo)

Design of an autonomous system able to follow a moving person

Nicola Sestu

Design of an autonomous system able to follow a moving person.

Rel. Marco Vacca. Politecnico di Torino, Corso di laurea magistrale in Mechatronic Engineering (Ingegneria Meccatronica), 2021

PDF (Tesi_di_laurea) - Tesi
Licenza: Creative Commons Attribution Non-commercial No Derivatives.

Download (17MB) | Preview

In this thesis the idea is to create a cart that automatically follows a specific human, this idea can be applied for example inside super markets. To do this I have tried some techniques and technologies that can be used to build a robot able to automatically follow a human. The initial goal was to build a subsystem that does not move but that was capable to identify and follow a person using a camera able to move. The first version of this subsystem included a raspberry pi 2b with a raspberry pi camera module V1, moved by a 2DOF hat controlled by the raspberry, using Tensorflow lite and OpenCV for computer vision and image recognition I obtained performances of 1fps, after upgrading the system with the NCS2 that is an accelerator for neural networks from intel I obtained a speed of 4fps using Openvino. It was necessary to change the hardware, the second version of the subsystem lead us to use a raspberry pi 4b with the NCS2 and a raspberry pi camera module V2, gaining results around 20fps, so an application that was 20 times more powerful than the first idea. Since the image recognition algorithm was working I have decided to build the moving platform of the robot. The moving frame of the robot is a four motor platform controlled by the raspberry pi through a motor driver, connected to a battery pack with a USB output able to deliver 5V-2A with 20100mha capacity. Since the battery had a USB interface a Buck-Boost converter with the same input was needed in order to regulate the voltage and current drained by the driver of the motors. The system built until this point was able to follow a moving person but it was difficult to keep track of the target, so I tried to calibrate the code in order to recognize the color of the clothes of the user in order to keep track of it even if other people were in the scene. This method was impossible to apply because even a small change in the light conditions lead to completely lose track of the user, so I moved to infrared signals to identify the user. The implementation was done connecting an IR receiver to the raspberry and a powerful IR Led to an arduino uno in order to send the signals, the idea worked but was discarded because in noisy environment the infrared signals were unusable. The next solution was based on a bluetooth low energy (BLE) technology, used to triangulate the position in space using the RSSI of the target mobile phone. During the tests the precision was realistic until the device was too far, but also in this case people or walls could interfere with the tracking system, resulting in wrong measurements. The final solution used a raspberry pi as the core of the system, combined with the stm32f401re microcontroller and its IKS01A3 shield with mounted on board an accelerom??eter, a gyroscope and a magnetometer, this allowed us to estimate pose and position of the user and of the robot in space with the aim to keep a fixed relative distance between the two, but the drift due to the double integration of the acceleration was too much in order to have a reliable system. In conclusion the solution works and it is very promising but to get reliable results more complex sensors fusion technologies like a GPS or sensors to measure the speed of the robot’s wheels are needed.

Relators: Marco Vacca
Academic year: 2021/22
Publication type: Electronic
Number of Pages: 151
Corso di laurea: Corso di laurea magistrale in Mechatronic Engineering (Ingegneria Meccatronica)
Classe di laurea: New organization > Master science > LM-25 - AUTOMATION ENGINEERING
Aziende collaboratrici: Politecnico di Torino
URI: http://webthesis.biblio.polito.it/id/eprint/21113
Modify record (reserved for operators) Modify record (reserved for operators)