Hello guys.
I am trying to build a autonomous room mapping robot. (actually I have to because that is my BEng Thesis).
So basically robot has to drive aroud the room, and create a map of it.
So far I've managed to create a robot that follows the walls (with the use of PID controller).
But now I have to transfer his path to a map.
I've figured that I can do a simple C# app that will transfer Data recived from a robot, to a graph of some sort (map).
Components that I use:
2x HC-SR04 sensors (one looks to the front, one looks at the wall)
2x DC motors
MotorShield
MicroSD Card Adapter (to collect data to txt file, that will be transfered to a map)
Remote controll (I use it when robot gets stuck to a wall, so it can fall back and get back to following a wall propperly)
I also have third SR04 sensor which I don't use to my project, and a wireless wifi module nrf24l01 which also isn't used.
I tried to use timers and just measure the time of each function but I cant figure out how to do it.
Is there any way, to get the path of my robot with using the things that I have?
Do you have any advice what data can I transfer to a map?
An optical-flow sensor like that used in a mouse can be put on the bottom of the robot to watch the carpet under the robot. This is much more accurate than counting the turns on your drive axle.
You already have ultrasonic sensors. What about finding a corner and then measuring the distance from there to the other walls?
Sparkfun sells a nice scanning LIDAR which will do the same thing in greater resolution. But making an Arduino do the correlation will be challenging. Can you send the LIDAR data to a PC or Rasberry Pi for processing?
MorganS:
An optical-flow sensor like that used in a mouse can be put on the bottom of the robot to watch the carpet under the robot. This is much more accurate than counting the turns on your drive axle.
You already have ultrasonic sensors. What about finding a corner and then measuring the distance from there to the other walls?
Sparkfun sells a nice scanning LIDAR which will do the same thing in greater resolution. But making an Arduino do the correlation will be challenging. Can you send the LIDAR data to a PC or Rasberry Pi for processing?
I guess you are talking about ADNS-9800 Laser Mouse Sensor. I've considered this already but the problem is that it has to touch the floor to work properly.
Now I realized I missed something obevious, HMC5883L magnetometer!!!!
what do you think about adding this to make my robot a mapping one?
And what do you think about getting direction from motor speeds?
for example, I know that when both motors moves with 128 speed the robot drives in straight line, when motor left moves with 80 and right with 176 robot drives a little left.
Do you think I can do something with that numbers?
It is a skid-steer robot? Only two drive wheels and steering by differential power to the wheels? Then you may have unpredictable wheel slip. You don't know exactly how far you have moved during a turn.
I'd still like to have some "odometer" dragging on the carpet. Ideally optical but it could be another un-driven wheel.
If what you are trying does not work out consider dragging and optical mouse under the robot.
I found the older PS/2 wired mice in an electronic/ computer recycling center before they broke them down into component parts. See the link below. Within a day I had it doing the basic x y tracking on the work bench. The issue I'm having is I do not want to drag the mouse on the floor surface. I want it above the floor and need to change the lens focal point.
I've found plenty of attempts, yet to find anyone that actually published their results. Including the below links creator. I am also looking for anyone that actually succeeded with this and also changed the focal length.