by PedroR » Mon Dec 19, 2011 1:41 pm
by PedroR
Mon Dec 19, 2011 1:41 pm
Hi ozzfiddler
Your project looks REALLY nice.
We are in the process of preparing a "Linuxified" version of the Rover 5 as well but using the cheaper Omnima to simply stream images to the PC over WiFi and send/receive commands to the PC over the Serial port (VCP over WiFi).
It's a similar solution to what we've done here
http://robosavvy.com/store/product_info ... ts_id/1928 but with Rover 5.
In your case it's even nicer because you're using a LOT more horsepower with the eBox.
In any case, back to your question, in the process of developing this, we (actually Marco) developed a solution to control the motors that may be of interest to you:
- The Rover 5
includes Motor Encoders which are essential if you want to have decent control over the speed of the motors (we know this by experience with the Wild Thumper that does NOT have it).
- We've used this board
http://robosavvy.com/store/product_info ... ts_id/1573 which includes a
4 channel DC motor controller and includes circuitry to mix the encoder channels
(it's not obvious at first how cool this functionality is abut once we implement control using the encoders you'll really love it).
- We've combined it with an Arduino MEGA (this one
http://robosavvy.com/store/product_info ... ts_id/1574 in the case, which is fairly inexpensive)
- Finally, Marco has written
Arduino code (including a PI filter) to precisely control the speed of the Motors using the Encoders.
It uses a Serial protocol to receive commands about the speed and direction of the motors.
It uses a protocol with this format "
HB[RIGHT DIR][RIGHT SPEED][LEFT DIR][LEFT SPEED]"
You just need to send this through the Serial port and the motors will move.
The code he's written - making use of the encoders and filter - really let the rover move very precisely (it can move really slowly which is something that is very hard to do just by PWM'ing the Motors).
I've uploaded the code here
http://robosavvy.com/RoboSavvyPages/Dag ... ontrol.ino
I can't say it's 100% bug free but it works very well from what I have seen.
As i-Bot mentioned, in this scenario you would be using Arduino connected over USB which creates a Serial port where you can just send command sin the format I mentioned to make it move forward, backward, left and right (or stop).
With regards to the solution you mentioned from VEX, I would honestly not recommend it. We have those here at the office and although they should theoretically work, they offer less flexibility than using an Arduino with a DC Motor shield (and in any case, the VEX solution still needs an Arduino or other additional board to generate the PWM pulses to control it).
If you want to start small/simple and and don't want to use the Motor encoders for the moment (and none of the solutions I explained above), then I'd recommend the Romeo controller which includes DC motor controllers.
http://robosavvy.com/store/product_info ... cts_id/988
Please note that Romeo only works with 2 motors (ie Rover 5 2WD; if you Rover is 4WD I would then strongly encourage you to go with the solution I proposed above using the Arduino mega and 4 Channel DC motor controller board).
Regards
Pedro
Hi ozzfiddler
Your project looks REALLY nice.
We are in the process of preparing a "Linuxified" version of the Rover 5 as well but using the cheaper Omnima to simply stream images to the PC over WiFi and send/receive commands to the PC over the Serial port (VCP over WiFi).
It's a similar solution to what we've done here
http://robosavvy.com/store/product_info ... ts_id/1928 but with Rover 5.
In your case it's even nicer because you're using a LOT more horsepower with the eBox.
In any case, back to your question, in the process of developing this, we (actually Marco) developed a solution to control the motors that may be of interest to you:
- The Rover 5
includes Motor Encoders which are essential if you want to have decent control over the speed of the motors (we know this by experience with the Wild Thumper that does NOT have it).
- We've used this board
http://robosavvy.com/store/product_info ... ts_id/1573 which includes a
4 channel DC motor controller and includes circuitry to mix the encoder channels
(it's not obvious at first how cool this functionality is abut once we implement control using the encoders you'll really love it).
- We've combined it with an Arduino MEGA (this one
http://robosavvy.com/store/product_info ... ts_id/1574 in the case, which is fairly inexpensive)
- Finally, Marco has written
Arduino code (including a PI filter) to precisely control the speed of the Motors using the Encoders.
It uses a Serial protocol to receive commands about the speed and direction of the motors.
It uses a protocol with this format "
HB[RIGHT DIR][RIGHT SPEED][LEFT DIR][LEFT SPEED]"
You just need to send this through the Serial port and the motors will move.
The code he's written - making use of the encoders and filter - really let the rover move very precisely (it can move really slowly which is something that is very hard to do just by PWM'ing the Motors).
I've uploaded the code here
http://robosavvy.com/RoboSavvyPages/Dag ... ontrol.ino
I can't say it's 100% bug free but it works very well from what I have seen.
As i-Bot mentioned, in this scenario you would be using Arduino connected over USB which creates a Serial port where you can just send command sin the format I mentioned to make it move forward, backward, left and right (or stop).
With regards to the solution you mentioned from VEX, I would honestly not recommend it. We have those here at the office and although they should theoretically work, they offer less flexibility than using an Arduino with a DC Motor shield (and in any case, the VEX solution still needs an Arduino or other additional board to generate the PWM pulses to control it).
If you want to start small/simple and and don't want to use the Motor encoders for the moment (and none of the solutions I explained above), then I'd recommend the Romeo controller which includes DC motor controllers.
http://robosavvy.com/store/product_info ... cts_id/988
Please note that Romeo only works with 2 motors (ie Rover 5 2WD; if you Rover is 4WD I would then strongly encourage you to go with the solution I proposed above using the Arduino mega and 4 Channel DC motor controller board).
Regards
Pedro