June 27, 2017 at 05:53PM

Reddit scan:Howdy do folks! I've been working on a 3d printed robotic rover roughly patterned off of NASA's Mars rovers for a while now. For brevity I'll just focus on the drive system. I've been working on this in a vacuum for a long time, and I'd really appreciate if someone could help me look this over and tell me where I'm being dumb. I've tried to find a local makerspace or something where I can ask questions, but it seems that there aren't any near where I am (or I can't find them).Here's a CAD mockup of the current design. There's a lot that's still missing but I think the drive system hardware is finished (for round 1, anyway). Scale: the wheel base is roughly 500mm x 350mm.The goal of the drive system is to allow for low-speed, high-traversability travel. I'm targeting a top speed of 2mph (lazy walking speed), but the ability to navigate steep (45°) slopes and large obstacles like curbs and steps. I also want to be able to turn in place.Drive6 independently driven wheels (all wheels are powered)Each drive motor operates on its own PID (or otherwise) to match the target speed.Each drive motor has a four wire encoder (A, B, VCC, GND)Each drive motor driven by an IBT_2 moduleSteeringThe 4 wheels in the front and back (corners) have extra hardware to permit steeringSteered wheels are driven in opposing pairs such that the robot's path is always on a circular arc (at a given moment) (Diagram)A potentiometer is attached to each steering assembly to measure and correct the steering angle.Each steering motor operates on its own PID to match the target steering angle (position)To prevent from having to duplicate the math of calculating the steering angle, each side pair of steering motors should be driven together.Each side pair of steering motors driven by an L298N moduleMy experience with microcontrollers is completely limited to Arduino, so that's the plan here.For each drive motor I'll need:Encoder measurement: 1 hardware interrupt pin and another digital pin (reading the encoder at half resolution to save ISR pins)Speed and direction control: 1 pwm pin for speed control, 2 digital pins for direction control/enable (Can't figure out how to reduce this with the IBT_2)Subtotal: 1 ISR, 1 PWM, 3 other digitalFor each steering motor I'll need:Pot measurement: 1 ADC pinSpeed and direction control: 1 PWM and 2 digital pins for direction control/enableSubtotal: 1 ADC, 1 PWM, 2 other digitalGrand total:6 ISR pins10 PWM pins4 ADC pins26 other digital pinsThe Arduino Mega has all the pins I need to do this, do you think it will have enough processing power? I see 10 PID controllers + communication with the "main brain". I really have no idea how to estimate how complex these tasks are, or if the Mega can handle it.Alternatively, do you see any glaring flaws in my plan? http://ift.tt/2ti2ctm by Towson Makerspace

Comments