Autonomous and Teleoperations Rover

May 22, 2024

In the BEng EE program at BCIT we have two 4-week summer terms. One of them is taken right after the first year and the second one can be taken after the completion of the second or third year. I recently completed that second 4-week term, and one of the courses I took was ELEX 4699 – Electronics System Design Project. The goal was to create a robot rover that navigates an arena, and shoots targets while minimizing completion time. The arena, functioning as a server, sends data to connected client robots. Clients use a Raspberry Pi as the host controller, and a PiCam with OpenCV for image recognition.

My teammate for this project was Faniel Yemane, so a big shoutout to him for collaborating on and contributing to this project. Teams were marked based on the time taken to complete the autonomous and teleoperations run (40% each) and two early milestones completed during the first two weeks (10% each). One of the requirements of the project was to design and use a PCB that connects to the Pi GPIO pins (a Pi Hat) and allows other hardware and sensors to connect easily. This was an optional requirement, but teams with a PCB got a time bonus. 

I used two MG995 servos for the left and right motors and an SG90 servo for the shooter. I modified these servos to spin 360° by following the instructions here. The ultrasonic sensor is HC-SR04 which works with a 5V logic level, to make it work with the Pi we need to install a voltage divider as described here. I used Fusion 360 to design all the parts and they were 3D printed with PLA. 

The robot operates in two modes:

  1. Manual mode: The car is driven by a human driver via a TCP/IP connection.
  2. Autonomous mode: The robot functions independently without human intervention.
The final form, we reverted back to a 2WD design as it was more stable and predictable while turning.

I enjoyed working on this project and it was a great learning experience. One thing I would do differently if I had to redo this project would be to use DC motors and a motor driver board instead of servos for driving. The servos need a PWM signal to control their speed, balancing the left and right servos to spin at a similar speed was time-consuming. And as the battery voltage changes, the calibration wears off and has to be redone. These motors are also quite slow.

That being said, I am proud of the robot rover we built in 4 weeks.

Posted in UncategorizedTags:
Related Posts

If you have been following my posts, you would know I am an Electrical Engineering student at BCIT. In my last post, I talked about my course ELEX 4618 (Object Oriented Program Design), and some of the weekly labs I worked on. One of…

During my second year of EE at BCIT, I took the course ELEX 3305 (Microcontroller Systems), where we learned to program a Texas Instruments TM4C123G microcontroller in C++. We also purchased a (TI) Education Boosterpack, which is an add-on board with various analog and…

I learned Schematic and PCB design using Altium Designer at BCIT. My plan was to do some more practice over the Summer. To my surprise, a few weeks after the end of the course our accounts were disabled even though I thought we had…

Write a comment