Follow Me Robot
The project aims to create an advanced follow-me robot that can autonomously track and follow a person, providing uninterrupted assistance. It utilizes sophisticated sensors to detect and adapt to the person's movements without constant manual control. Additionally, the robot is designed to carry objects, making it useful for various tasks in professional and personal settings. It operates wirelessly with a long-lasting battery, offering maximum flexibility and mobility in different environments.
Introduction
The emergence of follower robots equipped with sensors has revolutionized various industries. These intelligent robots are capable of detecting and tracking individuals or objects, making them valuable in surveillance, logistics, inspection, and assisting people with limited mobility. However, there is an exciting opportunity to take these capabilities a step further by designing a robot that not only tracks a person in real-time but also assists in carrying heavy objects like boxes.
Creating such a robot requires a combination of state-of-the-art sensors, advanced algorithms, powerful motors, efficient acceleration mechanisms, and sophisticated software. These components work together to interpret sensor data and control the robot's movements accurately and efficiently.
By undertaking this project with meticulous planning and utilizing the right tools, the development of a person-following, box-carrying robot can bring significant rewards and hold immense potential for practical applications. It can enhance productivity, reduce manual labor, and provide valuable support in various industries and everyday tasks.
Objectives
The main goal of our project is to create an advanced follower robot that can autonomously track and follow a person, providing seamless assistance and support.
But also there are specific objectives of this assignment:
- Design and build a robot that can follow a person autonomously.
- Integrate sensors to allow the robot to detect and follow a person.
- Develop a control system to allow the robot to follow a person smoothly and smoothly.
- Add additional functionality to the robot, such as the ability to carry objects.
- Wireless robot using a battery.
Development of the Project
Once we discussed the project objectives and what we were willing to achieve, we began searching for possible solutions and subsequently creating initial sketches and diagrams. Below is a detailed explanation of all the solutions obtained and descriptions of the designs: the mechanical design, the electrical design, and all software control. Finally, we present the tests performed until achieving proper functioning.
Analysis of the Problem
Description of the Design
One of the key factors for the successful development of this robot has been the utilization of 3D printing as the primary manufacturing method. 3D printing is a technology that allows the creation of three-dimensional objects by layering materials, providing great versatility in terms of design and production. Thanks to this groundbreaking technique, we have been able to develop a robot with specific features and functionalities tailored for the transportation of small to medium-sized loads.
3D printing has also proven to be a highly efficient method in terms of costs and production times. By avoiding traditional manufacturing processes and associated expenses, we have been able to significantly accelerate the development of our robot, enabling rapid iterations in design and bringing the product to market more efficiently.
Firstly, taking into account the initial specifications, which include two drive wheels, two caster wheels, a platform for weight transportation, and the necessary capacity to accommodate all electronic components, we created the following preliminary layout.
Once the shape and aesthetics of the robot were determined, we decided to transfer it to the computer to begin deciding on the overall dimensions of the robot.
Therefore, we used the SketchUp program to create the first 3D schematic of our robot. Some changes were made to the second drawing, such as reducing the platform for weight loading since the LIDAR took up a significant portion of the upper platform of the robot. Additionally, we added a groove at the front of the robot.
Final Design
Finally, once we have determined the electronic components which motors go, the battery, the drivers, or the diameters of the wheels, we have been able to adapt the design based on the items purchased.
Some of the features that we have implemented in this latest design are supports for the lidar sensor, supports for the connection plate, joints between platforms, or holes to connect the battery externally.
To make the final result in 3D we have used the PTC Creo program since it is easy to use, versatile and all the members of the group can use it without accessibility problems. On the other hand, the final 2D plans have also been made with the same program, which has meant speed when generating them.
Below we show the final renders implemented with the PTC Creo program.
Mechanical Design
In order to determine the mechanical specifications of the motors we studied all the factors included on the equation of making a follow-me robot run.
- Angular Velocity Calculation:
To determine the required angular velocity (ω) at which the motor shaft should rotate, we used the formula:
v = ω * R
where v is the desired linear velocity of the wheels and R is the radius of the wheels. Assuming the chosen wheels have a radius of approximately 35 mm, we can substitute this value into the formula to calculate the angular velocity.
- RPM Calculation:
To determine the minimum and maximum RPM (revolutions per minute) of the wheels, we need to convert the angular velocity from rad/s to RPM. The conversion formula is:
RPM = (ω * 60) / (2π)
By substituting the calculated angular velocity into this formula, we can find the RPM of the wheels. This information is useful for determining the specifications of the motors required.
- Motor Torque Calculation:
Motor torque is influenced by various factors, including the weight of the robot, the number of contact points touching the ground, and the friction of the surface. To calculate the total torque needed to start moving the robot from standstill for each wheel, we used the following formula:
Torque = (0.105 Nm * 4 wheels) / (2 driven)
This formula assumes that each wheel requires the same torque, and only two wheels are driven. By using this formula, we can determine the minimum torque that each motor should have.
- Power Calculation:
The power required by each wheel can be calculated using the following formula:
Power = (1.5 W * 4 wheels) / (2 driven)
This formula distributes the total power equally between the two driven wheels. By applying this formula, we can determine the minimum power rating that each motor should possess.
In summary, the motor calculations involve determining the angular velocity based on the wheel radius, calculating the RPM of the wheels, estimating the required torque based on the robot's weight, contact points, and friction, and finally, determining the minimum power rating for the motors. These calculations provide essential information for selecting the motors that are suitable for the given specifications and requirements of the robot.
Electrical Design
Below is the complete electrical schematic including the final PCB. It showcases all the research done for each component to ensure its proper functioning.
Our project includes an ESP32, two drivers to control the stepper motors, a LIDAR, a buck converter, and a battery supply involves several components and considerations.
The ESP32 is a popular microcontroller that can handle multiple tasks simultaneously and supports Wi-Fi and Bluetooth connectivity, It can be programmed using the Arduino IDE or other programming languages. In our project, to control the microcontroller we program it with Python.
The motor drivers are essential components for controlling the motors of the robot. They are responsible for providing the necessary power and control to the motors. There are various types of motor drivers available, such as H-bridge and L298N motor drivers. We use the DRV8825 driver.
LIDAR (Light Detection and Ranging) is a remote sensing technology that uses laser pulses to measure distance and create 3D maps of the environment. It can be used for obstacle avoidance and mapping of the surrounding area.
We also implement a buck converter, and it’s a DC-DC converter that steps down the voltage from the battery supply to a lower voltage that is suitable for the microcontroller and other components. It is essential for providing a stable and regulated voltage to the microcontroller and other components.
The battery supply is another essential component for powering the robot. It is important to choose the right type of battery that can provide enough power for the motors and other components and has sufficient capacity for the desired operating time.
When designing the electrical system, it is important to carefully consider the power requirements of each component and choose appropriate voltage regulators and other components to ensure that each component receives the correct voltage and current. Proper wiring and component selection are also crucial to prevent shorts or other electrical problems; That is why for the components that need 12V, we used a bigger wire.
In summary, after researching and understanding the datasheets of all the components, we carefully made the pcb with the proper wires and the proper components.
Control and Software
The purpose of this section is to provide a comprehensive overview of the control and software aspects of a robotics project aimed at developing a robot that follows a user using a LiDAR sensor. The LiDAR data is decoded using Python, while the movement of the robot is controlled by two stepper motors, which are controlled via an Arduino microcontroller with an ESP32. This document will outline the system architecture, software components, and their functionalities.
System Architecture
The control and software system for the LiDAR-based robot comprises the following components:
LiDAR Sensor
Type: Triangulation lidar LD14P
The LiDAR sensor scans the environment and generates distance measurements, the raw data is sent to the Python program for decoding.
Python Program
The program reads the raw byte stream from the LiDAR sensor and it decodes the byte stream according to the sensor's communication protocol and establishes a serial communication link with the Arduino microcontroller using the appropriate port.
It formats the decoded data and sends it as a serialized message via the serial connection. The decoded data represents distance measurements and angle to define a certain position from the LiDAR sensor.
Taking advantage of the possibilities offered by Python libraries, we utilize the decryption process to also display what the sensor sees.
Dependencies: pyserial, scipy, numpy, matplotlib
Arduino with ESP32
The Arduino microcontroller, equipped with an ESP32 module, receives the serialized message from the Python program via the serial port and determines the appropriate movement commands based on the received data.
The program adjusts the motor movements to follow the nearest detected object.
Stepper Motors
The stepper motors drive the movement of the robot, allowing it to follow the nearest detected object.
Cost of the Project
Calculations of the costs of the project:
Below is a graph of the hours spent on the project based on the work sector. And the detail of the sections is:
- Mechanical: design, calculations, drawings, 3D printer, assembly, manufacturing processes, list of mechanical materials.
- Electrical: electronic design, electrical schematics, electronic components test, assembly, list of electronic materials.
- Programming: code, control system, software tests.
- Management: meetings, plannings, milestones, presentations, final documentation, video, GitHub, website.
On the other hand, the hours spent by each member of the group are difficult to define, even so we have distributed the work equally, therefore it is approximately 150 hours for each one.
Finally, to calculate the total budget of the project we have taken into account all the materials from the shopping list and the man-hours price given a standard engineer hour price.