1
Drivetrain for an Autonomous Vacuum Robot Carlin Reynolds, REU POWER Student, Northeastern University ’19 Taskin Padir, Associate Professor, Northeastern UniversityRobotics and Intelligent Vehicles Laboratory Abstract This work presents the development of an autonomous mobile robot designed to vacuum large surfaces, with the added capability of detecting and manipulating small objects in its path to clear more space for cleaning. Using an Arduino-based mechatronic system, the robot employs several interacting hardware components: time-of- flight sensors, DC motors, magnetic rotary encoders, and motor drivers with pulse width modulation (PWM) control. These were incorporated to meet the constraints of an existing chassis and mechanical design. Programming for autonomy in C++ and power requirements for the electronics, excluding the vacuuming operation itself, are also addressed. Limitations of this system fall largely into the category of accurately interpreting the robot’s surroundings, which calls for a much more advanced approach involving computer vision, and may be an avenue for future work. Acknowledgements The National Science Foundation (NSF), Grant #1757650 Brad Lehman, Principal Investigator Claire Duggan, Director, Center for STEM Education Camara Johnson, REU Coordinator Nicolas Fuchs, Program Coordinator Martin Caruso, Student, Mechanical Eng. Jess Bardio, Student, Electrical Eng. Arçelik A.Ş. Objectives The goal of this project is to build and program a vacuum cleaner robot that can: Detect objects in its path Pick up and manipulate an object Move the object elsewhere so that the area underneath it can be cleaned This device was initially designed for appliance firm Arçelik A.Ş. for use in domestic environments. Full System Overview Roam around, vacuuming Is there something in the way? Yes Move arms towards closed position Are they closed yet? No Yes Turn wheels to move robot out of current path* No Move arms towards open position Are they closed yet? No Yes Turn wheels to move away from object* BACK TO START START * These have their own internal loops for each stage of movement, using time-tracking instead of distance-tracking Hardware To prototype the electronics, an Arduino Mega 2560 microcontroller was chosen for its broad compatibility with other hobbyist parts. This board also has the greatest number of pins out of the entire Arduino family, making it a good choice for controlling many motors and sensors. The system looks for nearby objects using an optical sensor called the VL53L0X, which measures distance by calculating the time of flight for infrared light pulses. Motor drivers provide power to DC motors for both the wheels and the arms. In addition to direction, the drivers also offer speed control via pulse width modulation (PWM). To track how far the arms have moved, each arm motor has a rotary encoder, which uses tiny magnets on a disc to count steps as the motor turns. Conclusion Despite several challenges relating to faulty components and sparse part documentation, the robot prototype has autonomous capabilities that meet the identified objectives. Continued work on the project would focus on improving accuracy of motor control by adding encoders to the wheels, while replacing the arm motors with high torque servos to conserve output pins. Programming Writing code (C++) for this robot involved several different tools, including libraries for: Encoders Time-of-flight sensors USB serial communication for debugging The numerous components required strategies for multitasking; for instance, running a function for a certain duration must not prevent the system from doing something else while it waits. The program also features a custom object class to manage functions for the DC motors, which pass information about motor position between the encoders and their corresponding motors. Arduino Mega 2560 Wheel motor A Wheel motor B Arm motor 1 + encoder 1 Arm motor 2 + encoder 2 Time-of- flight sensor 9 V motor driver 5 V motor driver 9 V batteries

Drivetrain for an Autonomous Vacuum Robot · an autonomous mobile robot designed to vacuum large surfaces, with the added capability of detecting and manipulating small objects in

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Drivetrain for an Autonomous Vacuum Robot · an autonomous mobile robot designed to vacuum large surfaces, with the added capability of detecting and manipulating small objects in

Drivetrain for an Autonomous Vacuum RobotCarlin Reynolds, REU POWER Student, Northeastern University ’19

Taskin Padir, Associate Professor, Northeastern University▴ Robotics and Intelligent Vehicles Laboratory

AbstractThis work presents the development of

an autonomous mobile robot designed to vacuum large surfaces, with the added capability of detecting and manipulating small objects in its path to clear more space for cleaning.

Using an Arduino-based mechatronic system, the robot employs several interacting hardware components: time-of-flight sensors, DC motors, magnetic rotary encoders, and motor drivers with pulse width modulation (PWM) control. These were incorporated to meet the constraints of an existing chassis and mechanical design. Programming for autonomy in C++ and power requirements for the electronics, excluding the vacuuming operation itself, are also addressed.

Limitations of this system fall largely into the category of accurately interpreting the robot’s surroundings, which calls for a much more advanced approach involving computer vision, and may be an avenue for future work.

Acknowledgements▶ The National Science Foundation (NSF),

Grant #1757650▶ Brad Lehman, Principal Investigator▶ Claire Duggan, Director, Center for STEM

Education▶ Camara Johnson, REU Coordinator▶ Nicolas Fuchs, Program Coordinator▶ Martin Caruso, Student, Mechanical Eng.▶ Jess Bardio, Student, Electrical Eng.▶ Arçelik A.Ş.

ObjectivesThe goal of this project is to build and

program a vacuum cleaner robot that can:▶ Detect objects in its path▶ Pick up and manipulate an object▶ Move the object elsewhere so that the

area underneath it can be cleaned

This device was initially designed for appliance firm Arçelik A.Ş. for use in domestic environments.

Full System Overview

Roam around, vacuuming

Is there something in

the way?Yes

Move arms towards closed

position

Are they closed yet?

No

Yes

Turn wheels tomove robot

out of current path*

No

Move arms towards open

position

Are they closed yet?

No

YesTurn wheels

to move away from object*

BACK TO START

START* These have their own internal loops for each stage of movement, using time-tracking instead of distance-tracking

HardwareTo prototype the electronics, an Arduino Mega 2560 microcontroller was chosen for its broad

compatibility with other hobbyist parts. This board also has the greatest number of pins out of the entire Arduino family, making it a good choice for controlling many motors and sensors.

The system looks for nearby objects using an optical sensor called the VL53L0X, which measures distance by calculating the time of flight for infrared light pulses. Motor drivers providepower to DC motorsfor both the wheelsand the arms. In addition to direction, the drivers also offer speed control via pulse width modulation (PWM).

To track how far the arms have moved, each arm motor has a rotary encoder, which uses tiny magnets on a disc to count steps as the motor turns.

ConclusionDespite several challenges relating to

faulty components and sparse part documentation, the robot prototype has autonomous capabilities that meet the identified objectives. Continued work on the project would focus on improving accuracy of motor control by adding encoders to thewheels, while replacing the arm motors with high torque servos to conserve output pins.

ProgrammingWriting code (C++) for this robot

involved several different tools, including libraries for:▶ Encoders▶ Time-of-flight sensors▶ USB serial communication for debugging

The numerous components required strategies for multitasking; for instance, running a function for a certain duration must not prevent the system from doing something else while it waits.

The program also features a customobject class to manage functions for the DCmotors, which pass information about motor position between the encoders and their corresponding motors.

Arduino Mega 2560

Wheel motor A

Wheel motor B

Arm motor 1 + encoder 1

Arm motor 2 + encoder 2

Time-of-flight sensor

9 V motor driver

5 V motor driver

9 V batteries