Basic Robot Mobility Project Design
Before I start to think about applications and more complicated functionality I want to focus on creating a robot that can move around autonomously and avoid objects.
So, I’ll create a prototype so I can get the basic movement structure and functions down. So far I’ve spent about $900 on a POC but have spent a few hundred dollars more trying different parts and approaches.
At a high level there are two different robot types that I ultimately want to create.
- In house personal robot – 24 x 24 in (width x length)
- Outside carries items with possibly large tools mounted on it – larger 24 x 48 in (width x length)
Material Base Options:
- Metal
- Aluminum
- Wood
- Cedar
- Plywood
- Plastic
I could get a flat aluminum chassis but my concern is cutting metal.
Hypothetical Metal fabrication sourcing steps:
- I’d have to research the options that are available
- Next I need to compare cost determine how long it would take them to build something I would need to create a design
- Then I’d have to give them a call to setup an appointment
- Give them the design
- They would have to build it
- I have to come back and get it
- May have to come back for revisions or do it again if I provided incorrect design
Therefore, this all seems like a lot of work and cost for just a proof of concept.
Plastic would be good to use but that would require a 3d printer to form the parts I’d need. It will take a fair amount of money and time for me to make that work. Therefore, it seems like a good long term idea but not for the short term.
Therefore, wood seems like the better option.
Sourcing Parts
For parts in general I could either purchase the parts from a vendor or I could build them myself.
Building parts by myself would be nice but I don’t have the expertise yet. Eventually I want to build parts with plastic with a 3D Printer.
For sourcing parts in general if I want to focus on
- Item cost
- Shipping cost
- Delivery time
- Size
- Supplier
- Supplier link to item
- Scalability – how easy is it to switch out the motor
- Order Scalability
- Evaluate if the manufacturer limits order size if order size is limited i may need to select a different vendor if I want to quickly scale the robot fleet
- Qualitative features
- How easy is it to fit the motor mount to the base and surrounding wall
- What is the cost for each material option?
- How much flexibility do I have to iterate over the design?
- Build versus buy
- Build myself versus hire someone to build for me
Motor Mounts
There are a few options for mount Options:
- Super Droid Motor Tube
- Motor Mount Plate
- 90 degree aluminum channel bracket
- Aluminum channel
- 18 in
- 15 in
- 9 in
- 6 in
- 3.75 in
Unfortunately I found that the Aluminum Channels and 90 Degree aluminum channel bracket don’t fit with my IG42 122 RPM Motor. So, I ended up going with Super Droid Motor Mounting plate. The Super Droid Motor Tube would have been preferable but it is out of stock at the moment (3/1/2022)
- Mechanical Build Steps (In Progress)
- Base
- Get 24 x 24 base of <wood, aluminum, plastic?>
- For 2 parallel wood chassis side
- Measure 2 inches from corner
- Measure 10 inches from the corner and draw a perpendicular line from measured line from previous step
- Draw outline from
- Screw motor hub to wooden chassis base
- Screw motor to motor hub
- Unscrew nuts holding frame to tire
- Deflate tire
- Screw wheel to shaft
- Slide traction lug to shaft
- Connect motor to shaft
- Screw traction lug to shaft to connect motor
- Link two 12v batteries together
- Connect 2 motor to motor controller (2x)
- Connect motor controller to arduino
- Program arduino microcontroller
- Middle
- Connect drawer track to base
- Create drawer with four sides and a base
- There should be two drawers
- Bottom drawer should slide above the motors.
- Drawer should allow for wires to be sectioned into them
- One For for arduino and other electronics on bottom
- One for raspberry pi and other associated electronic components above.
- Create a second layer above Arduino
- Secure Raspberry Pi to second layer
- Top
- Connect range finders sensors to each side of the top so that I can sense nearby objects.
- Base
Additional Notes:
Consider making the base easier to maneuver.
Should have a drawer that pulls out the back so it is easier to manage motor and electronic components.
Would be nice to extend the robot size for lager use cases or shrink the robot side for indoor use cases instead of two robots.
Next I must determine the controllers and sensors
MicroProcessor vs MicroController
Microcontroller is better for managing a motor while a raspberry pi microprocessor is better for more complicated logic and interpreting sensor data.
I plan to use an Arduino microcontroller for managing the motors and a raspberry pi to process sensor data and send commands to the arduino microcontroller to move the robot.
Arduino Programming Steps
- Set each relevant GPIO pin to a variable
- Syntax: int ledPin = 13;
- Use the DigitlWrite function to set the rotational motor direction through either the parameter HIGH or LOW
- Syntax: digitalWrite(pin, value)
- Help Document:https://www.arduino.cc/en/Reference.digitalWrite
- Define motor’s speed as using analogWrite function and pass a parameter as integer value between 0 to 255.
- Syntax:
- Help Document: https://www.arduino.cc/reference/en/language/functions/analog-io/analogwrite/
- I infer the integer represents a percentage of the motor speed
- Define duration wheel will rotate with delay() function
- Syntax: delay()
- Help Document: https://www.arduino.cc/reference/en/language/functions/time/delay/
Raspberry Pi Functional Design
If I want the robot to travel x vector then a sensor must determine the distance between the robot’s current point and the desired end point.
Then, calculate the seconds to travel that distance at a constant RPM.
Then pass three parameters into Arduino function:
- String value of either high or low (i.e. forward or backwards)
- integer value between 0 and 255 (percentage of rpm)
- Integer value in seconds for delay (i.e. duration in seconds from current point to desired end point as calculated at a constant RPM)
To summarize, the raspberry pi calculates the distance between current location and desired end location. The python application in Raspberry Pi calculates the seconds to destination at a fixed RPM. Finally, it calls the function to turn the wheels and delays next step for a variable time.
If the robot travels to the destination my concern is that it will hit the wall. So, experiment iteratively by subtracting time and assess where the robot stops.
The robot also needs to determine the direction.
It must analyze the environment.
How could the robot determine the optimal direction distance and how could the robot rotate so that it picks the best and point?
Route planning is my next task.
I hypothesize that route planning requires multiple data points.
Consider using a camera.
The camera can generally tell me what obstacles are in the way
Additionally, a sonar sensor can send a signal out and receive it back to calculate the distance.
A Python application in Raspberry Pi can calculate the distance and then pass the parameters to the function in the Arduino to move the motors.
Perhaps I manually set a fixed end point and then the robot optimizes the best route there.
I think I need to create a floor plan for a particular area and then the robot simulates the route. Then somehow translate that simulation to real life.
Sensors
I’ll start with a SunFounder Ultrasonic Module HC-SR04 Distance Sensor to get the distance between objects and perhaps I can use a floor plan for route planning.
Specific Parts, Pricing, and Vendors
Part Summary | Item Cost | Qty | Total Cost | Vendor | Vendor Links |
1/2 inch thick 2×2 Plywood HP | $17.99 | 1 | $17.99 | Ace Hardware | |
Caster SWVL PNEU 220 | $49.99 | 1 | $49.99 | Ace Hardware | |
Raspberry Pi 4 Model B 2019 Quad Core 64 Bit WiFi Bluetooth (4GB) | $139.50 | 1 | $139.50 | Amazon | https://www.amazon.com/gp/product/B07TC2BK1X/ref=ppx_yo_dt_b_asin_title_o06_s00?ie=UTF8&psc=1 |
2WD Electric Power Hookup Kit | $29.95 | 1 | $29.95 | Super Droid Robots | https://www.superdroidrobots.com/electrical-parts/Wire-Cable-Hook-Up-Kits/Electrical-Hook-Up-Kits/product=1081 |
Motor Mount Plate – IG42 | $1.99 | 2 | $3.98 | Super Droid Robots | https://www.superdroidrobots.com/mechanical-parts/Motor-Mounts/product=2115 |
Interstate 12 Volt 12 Ah Sealed Lead Acid Battery (SLA) – 0.250 Faston | $36.00 | 2 | $72.00 | Super Droid Robots | https://www.superdroidrobots.com/electrical-parts/batteries/SLA-Lead-Acid-Battery/product=1507 |
Robot Claw Dual Encoder Hookup Kit | $24.49 | 1 | $24.49 | Super Droid Robots | https://www.superdroidrobots.com/electrical-parts/Wire-Cable-Hook-Up-Kits/Electrical-Hook-Up-Kits/product=3121 |
RoboClaw 2x15A Motor Controller | $99.95 | 1 | $99.95 | Super Droid Robots | https://www.superdroidrobots.com/electrical-parts/Motor-Controllers/Brushed-Motor-Controllers/product=2627 |
IG32 and IG42 Motor Plate Hardware Kit | $3.95 | 1 | $3.95 | Super Droid Robots | https://www.superdroidrobots.com/mechanical-parts/Hardware/product=2014 |
Robot Drive Wheel – Traction Lug 10 x 3.50-4 Tiller Tire | $18.90 | 2 | $37.80 | Super Droid Robots | https://www.superdroidrobots.com/mechanical-parts/Wheels-Shafts/All-Terrain-Wheel-Shafts/product=1996 |
ATR Shaft 8mm Bore for 10 inch Tire | $21.90 | 2 | $43.80 | Super Droid Robots | https://www.superdroidrobots.com/mechanical-parts/Wheels-Shafts/All-Terrain-Wheel-Shafts/product=2076 |
Parts Shipping | $48.45 | 1 | $48.45 | Super Droid Robots | |
IG42 24VDC 122 RPM Gear Motor with Encoder | $61.95 | 2 | $123.90 | Super Droid Robots | https://www.superdroidrobots.com/electrical-parts/Encoders-Accessories/Encoder-Motors/product=849 |
PWM to PIC Hookup Kit | $6.20 | 1 | $6.20 | Super Droid Robots | https://www.superdroidrobots.com/electrical-parts/Wire-Cable-Hook-Up-Kits/Electrical-Hook-Up-Kits/product=606 |
15 Amp Connector Set | $3.98 | 1 | $3.98 | Super Droid Robots | https://www.superdroidrobots.com/electrical-parts/Wire-Cable-Hook-Up-Kits/Electrical-Hook-Up-Kits/product=394 |
Smart Fast Charger for 12V Lead Acid Battery, 10A | $57.90 | 1 | $57.90 | Super Droid Robots | https://www.superdroidrobots.com/electrical-parts/Chargers-Transformers/SLA-Lead-Acid-Charger/product=930 |