// https://gitorious.org/ozzloy/challenge-bot
// https://github.com/waynegramlich/challenge-bot
+wheel_depth = 6;
+wheel_radius = 68/2;
+
module encoder_shaft(){
- motor_shaft_big = 3.7;
- motor_shaft_small = 4.8;
- motor_shaft_length = 7.65 / 2;
+ // measured with calipers, checked against the motor shaft
+ motor_shaft_big = 3.7; // radius, gets doubled in cylinder
+ motor_shaft_small = 4.8; // total length of box
+ motor_shaft_length = wheel_depth * 3 / 4;
intersection(){
cylinder(h = motor_shaft_length,
r = motor_shaft_big,
center = true,
- $fn=100);
+ $fn = 30);
+ // x direction is multiplied by 2 because the radius of the cylinder
+ // goes in both directions. the extra .1 is for overlap
cube([motor_shaft_big * 2.1, motor_shaft_small, motor_shaft_length],
center = true);}}
+module mounting_screw(){
+ cylinder(h = wheel_depth * 1.1, r = 1, $fn = 30, center = true);}
+
module wheel(){
- depth = 7.65;
- radius = 68/2;
- difference(){
- cylinder(h = depth, r = radius, center = true, $fn=100);
- translate([0, 0, 7.65/4])
- scale([1, 1, 1.1])
- encoder_shaft();
- cylinder(h = depth * 1.1, r = 1, $fn = 100, center = true);}}
-
-translate([0, 0, 7.65/2]) wheel();
+ translate([0, 0, wheel_depth / 2]){
+ difference(){
+ cylinder(h = wheel_depth, r = wheel_radius, center = true, $fn = 30);
+ translate([0, 0, wheel_depth / 4]){
+ scale([1, 1, 1.1]){
+ encoder_shaft();}}
+ mounting_screw();
+ for(i = [1 : 5]){
+ rotate(i * 360/5, [0, 0, 1]){
+ translate([0, 0, -0.6 * wheel_depth])
+ between_spokes();}}
+ translate([0, 0, wheel_depth / 4]){
+ difference(){
+ cylinder(h = wheel_depth / 1.2,
+ r = 0.85 * wheel_radius,
+ center = true);
+ cylinder(h = wheel_depth / 1.2,
+ r = 0.23 * wheel_radius,
+ center = true);}}}}}
+
+module wheel_block(){
+ cube([wheel_radius, wheel_radius, wheel_depth]);}
+
+module pie_slice(){
+ intersection(){
+ translate([0, 0, wheel_depth / 2]){
+ cylinder(h = wheel_depth,
+ r = 0.85 * wheel_radius,
+ center = true);}
+ translate([0, wheel_radius * 0.3, 0]){
+ rotate([0, 0, (360 / 5) / 2]){
+ intersection(){
+ wheel_block();
+ rotate([0, 0, 90 - 360 / 5])
+ wheel_block();}}}}}
+
+module between_spokes(){
+ minkowski(){
+ pie_slice();
+ cylinder(h = wheel_depth / 2, r = 1, $fn = 30);}}
+
+wheel();