After tinkering with Arduinos and Raspberry Pis for a while, and having built a home weather station, a Back To The Future clock and a couple of projects for a radio telescope, I’ve been thinking about the next project and finally decided. I’m going to have a go at a robot.
In movies like Star Wars you see people giving robots instructions to go somewhere and deliver or retrieve something, and they just go and do it. But when you start thinking about how to actually achieve that in hardware and software, it soon becomes a challenging problem.
So the idea is to construct something that can navigate indoors without waypoints or lines on the floor etc (I don’t think anyone wants that in our house). It should be possible to tell the robot to go to a certain room, avoiding obstacles on the way. Obstacle avoidance shouldn’t be too much of a problem using ultrasonic or infra-red sensors and this has been done many times before. It’s the autonomous navigation that is the main challenge I reckon. This has also been done before and there are quite a few examples out there, mostly using quite expensive LIDAR devices. I like the idea of using LIDAR that can cover a full 360 degrees of azimuth continuously and use this for navigation and obstacle avoidance (some robot vacuum cleaners do this) but given the cost, I reckon I’ll try a slightly modified version.
The plan is to have the robot operate in two modes. The first one is a mapping mode where it will use a laser range-finder mounted on a pan/tilt platform to map a section of a room, then move to a new location, map from there etc until it has built up a map of the entire building. Then, when it has a map, it can operate in an autonomous mode to get from one location to another.
After quite a bit of thinking and looking at various hardware possibilities, I decided to go with a Raspberry Pi based system with servo and motor HATs and a tracked robot platform. It’ll have ultrasonic and infra-red laser range-finders (I’m curious to compare the results) and the pan/tilt system will let it make a 3D map of the rooms rather that just an eye-level map. It will also have a LCD display with some buttons so it can communicate and take commands. I’m going to put encoders on the motors so the distance traveled can be measured. The servos that control the pan/tilt system will have an analog feedback so the angles can be measured too.
I reckon I’ll start with some simple programming just to control the robot and pan/tilt but eventually use something like ROS once I’ve built up a bit of confidence :-)
So I’ve ordered the parts and some have already arrived. Next time I’ll post a list of the parts I’ve got and describe how I plan to put them together.