Home Security Rover (using DFRobot 4WD Rover RB-Dfr-67)

I recently purchased one of these little rover kits, and think it’s a nice small rover platform. I wanted something small that could potentially go under a lot of different things, because my other robots are to large for that. My idea is to turn this into a Security Rover that has a pan/tilt camera with software to detect motion and follow faces. I’ll use a Raspberry Pi with the motion package and OpenCV, as well as an Arduino based board for low level control (like the Romeo v1.1 controller I have). I’ve already located most of the code I need, and just have to wrap it into my own code after I understand things better.

It looks like I am going to need better encoders though. The ones that come with the kit are not quadrature encoders, so they don’t really provide enough information (like direction of rotation). I’m just starting to learn about encoders, so I could be wrong here. This is my first robot that isn’t based on Lynxmotion products. These encders were extremely difficult for me to install! Is anyone using better (quadrature) encoders with this kit and/or different motors?

Yes, I have assembly pictures, which will follow later. :slight_smile:

8-Dale

Here are my construction pictures for A.R.T.I.E.:



If you are going to add a servo for panning, do that before you mount the controller. If you do it aftwards, it’s really difficult because the two servo screws next to the controller will be very difficult to get in.

When mounting the encoders, it’s best to mount the encoder wheel to the motor before you mount the motor to the chassis. There isn’t much clearance on the underside of the chassis to get the bottom screw in. so be careful. I broke one encoder while doing this part, so it’s a good thing I bought two extra sets of encoders. I still have one full set.



Since there are only two motor terminals, you have to tie the grounds and the positive wires for the motors on each side together by twisting them. Do NOT solder these, or they won’t stay in the screw terminals. The terminals have to be able to grab into the wires.

There is a jack provided in the kit, but there is no clue what it should be used for or how it should be wired. It might have something to do with the battery holder, which I am not using. I am powering the controller using a 9V battery for the electronics and a 6V @ 1600 mAH NiMH battery for the motors. The motor battery is wired up using a Lynxmotion switch harness.


8-Dale

These are the finished pictures of A.R.T.I.E. I built the pan sensor mounting from a Lynxmotion ASB-25 Aluminum Interconnect bracket, and a MPSH-01 Multi-Purpose Sensor Housing.



After trying several times (unsucessfully) to get everything working with a Sharp GP2Y0A21YK0F IR distance sensor, I gave up and replaced that with a Parallax PING ultrasonic distance sensor. Now, everything works great. I never have really liked using the Sharp IR distance sensors, and probably won’t ever use them again. Now, all of the current capabilities of this platform and the Romeo v1.1 All In One controller are being used, and there are just a few pins left unused (the analog input pins). I’m using the encoders to detect motor stalls, which is working pretty good so far. A.R.T.I.E. can now get out of most stuck situations, without any assistance.

8-Dale

Hey 8-Dale,

Still looking at a way to assemble the encoders ? Look like you did it.
Nice set of pictures, will be helpful for others when assembling.

Yes, the encoder will only give you count so can’t really know if it’s going one way or the other.

Yes, I figured it out, but it was still difficult.

Thanks. I hope it will help others. :slight_smile:

All I really need is a count to tell if one of the rear wheels is stalled. That seems to be working fine when it gets stuck. Then the robot backs away.

8-Dale

We can’t know the direction of travel from the encoders, which is OK. Should I be decrementing the encoder counter if the rover is going to move in reverse? This would be a very easy change to make, since I already have a struct enum type that holds the rover status, which includes movement direction. This is set inside each movement routine. :slight_smile:

8-Dale

You may want to do it by side, as you may have them going in different directions when turning.

This is true, and it’s easy to add this.

8-Dale