Skip to content
GitLab
Projects
Groups
Topics
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Jan Koniarik
schpin-robot
Commits
5b2e315f
Commit
5b2e315f
authored
Nov 19, 2019
by
Jan Koniarik
Browse files
burn burn burn
parent
c93c84ba
Changes
104
Hide whitespace changes
Inline
Side-by-side
schpin_koke/src/Main.hs
View file @
5b2e315f
...
...
@@ -19,7 +19,7 @@ kokeTipPos = V3 (100 *~ mm) (0 *~ mm) (0 *~ mm)
femurOffset
::
ConfType
->
Pose
femurOffset
conf_type
=
Pose
(
V3
(
if
conf_type
==
Expanded
then
100
*~
mm
else
6
0
*~
mm
)
(
V3
(
if
conf_type
==
Expanded
then
100
*~
mm
else
6
5
*~
mm
)
(
0
*~
mm
)
(
0
*~
mm
)
)
...
...
@@ -91,9 +91,13 @@ leg leg_pos conf_type = Leg
FL
->
45
*~
degree
RR
->
45
*~
degree
RL
->
(
-
45
)
*~
degree
else
0
*~
radian
else
case
leg_pos
of
FR
->
0
*~
radian
FL
->
0
*~
radian
RR
->
0
*~
radian
RL
->
0
*~
radian
,
max_angle
=
(
3
*
pi
/
8
)
*~
radian
,
vel_lim
=
5
0
*~
(
radian
D
./
second
)
,
vel_lim
=
0
.5
*~
(
radian
D
./
second
)
,
effor_lim
=
100
,
g_steps
=
8
}
...
...
@@ -129,7 +133,7 @@ leg leg_pos conf_type = Leg
then
(
pi
*
0.95
)
*~
radian
else
(
-
pi
/
12
)
*~
radian
,
max_angle
=
(
3
*
pi
/
8
)
*~
radian
,
vel_lim
=
5
0
*~
(
radian
D
./
second
)
,
vel_lim
=
0
.5
*~
(
radian
D
./
second
)
,
effor_lim
=
100
,
g_steps
=
8
}
...
...
@@ -161,7 +165,7 @@ leg leg_pos conf_type = Leg
then
(
-
pi
*
1.45
)
*~
radian
else
(
-
pi
/
12
)
*~
radian
,
max_angle
=
(
3
*
pi
/
8
)
*~
radian
,
vel_lim
=
5
0
*~
(
radian
D
./
second
)
,
vel_lim
=
0
.5
*~
(
radian
D
./
second
)
,
effor_lim
=
100
,
g_steps
=
8
}
...
...
schpin_koke/src/scad/LX15D.scad
View file @
5b2e315f
...
...
@@ -40,9 +40,10 @@ module LX15D() finalize("gray") difference() {
LX15D_horn_screw_pos() translate([ 0, 0, i * LX15D_horn_w / 2 ])
cylinder(d = LX15D_horn_screw_d, h = 10, center = true);
}
for (m = [ 0, 1 ])
mirror([ 0, 0, m ]) LX15D_bottom_screw_pos()
cylinder(d = LX15D_body_screw_d, h = 4, center = true);
for (m = [ 0, 1 ]) mirror([ 0, 0, m ]) for (i = [ -1, 1 ], j = [ -1, 1 ]) {
LX15D_body_screw_pos(i, j)
cylinder(d = LX15D_body_screw_d, h = 4, center = true);
}
}
module LX15D_collision() {
...
...
@@ -61,13 +62,16 @@ module LX15D_clearance() {
module LX15D_screw_plane() { translate([ 0, 0, LX15D_dim[2] / 2 ]) children(); }
module LX15D_bo
ttom
_screw_pos()
module LX15D_bo
dy
_screw_pos(
i, j
)
translate([ LX15D_dim[0] / 2 - LX15D_axis_offset, 0, 0 ]) {
for (y = [ -0.5, 0.5 ])
translate([
LX15D_screw_x / 2,
y
* LX15D_screw_y, LX15D_dim[2] / 2 ])
children();
translate(
[ i *
LX15D_screw_x / 2,
j
* LX15D_screw_y
/ 2
, LX15D_dim[2] / 2 ])
children();
}
module LX15D_bottom_screw_pos() for (j = [ -1, 1 ]) LX15D_body_screw_pos(1, j)
children();
module LX15D_horn_screw_pos() {
for (a = [0:90:360])
rotate([ 0, 0, a ]) translate([ 14 / 2, 0, 0 ]) children();
...
...
@@ -89,145 +93,3 @@ module LX15D_side_plate(screw_d, holes, t) difference() {
LX15D_bottom_screw_pos()
cylinder(d = LX15D_body_screw_d, h = 100, center = true);
}
LX15D_U_h = 6;
LX15D_U_c = 0.2;
LX15D_U_offset = [ 40, 0, 0 ];
LX15D_U_screw_y = 16;
module LX15D_U_body(class) difference() {
t = 2;
translate([ -LX15D_U_h / 2, 0, 0 ])
cube([ LX15D_U_h, Ta(T24), LX15D_dim[2] ], center = true);
rotate([ 0, -90, 0 ]) tile_neg(T24, LX15D_U_h, centered_hole = true);
rotate([ 0, 90, 0 ])
cylinder(d = Ta(T24) / 2, h = 100, center = true, $fn = 8);
for (i = [ -0.5, 0.5 ], m = [ 0, 1 ])
mirror([ 0, 0, m ]) translate(
[ -LX15D_U_h / 2, i * LX15D_U_screw_y, -LX15D_dim[2] / 2 - t ]) {
Mscrew_hole(M2L8C);
translate([ 0, 0, 2 * t ]) Mnut_sidehole(M2N, l = 10);
}
}
module LX15D_U_plate(class) difference() {
t = 2;
union() {
translate(LX15D_U_offset -
[ LX15D_U_h / 2, 0, LX15D_dim[2] / 2 + t / 2 ])
cube([ LX15D_U_h, Ta(T24), t ], center = true);
mirror([ 0, 0, 1 ]) LX15D_bottom_screw_pos()
hull() for (x = [ 0, LX15D_U_h / 2 ]) translate([ x, 0, 0 ])
cylinder(d = LX15D_screw_clearance_d, h = t);
}
translate(LX15D_U_offset - [ LX15D_U_h / 2, 0, LX15D_dim[2] / 2 + t ]) {
for (i = [ -0.5, 0.5 ])
translate([ 0, i * LX15D_U_screw_y, 0 ]) Mscrew_hole(M2L8C);
}
LX15D_bottom_screw_pos()
cylinder(d = LX15D_body_screw_d, h = 100, center = true);
}
module LX15D_U(class, expand = 0) union() {
t = 2;
translate(LX15D_U_offset) finalize("blue") LX15D_U_body(class);
for (m = [ 0, 1 ]) mirror([ 0, 0, m ]) {
translate([ 0, 0, -expand ]) finalize("yellow")
LX15D_U_plate(class);
translate(LX15D_U_offset) for (i = [ -0.5, 0.5 ]) translate([
-LX15D_U_h / 2, i * LX15D_U_screw_y, -LX15D_dim[2] / 2 - t - 2 *
expand
]) Mscrew(M2L8C);
LX15D_bottom_screw_pos() translate([ 0, 0, 3 * expand + t ])
rotate([ 180, 0, 0 ]) Mscrew(M2L8C);
for (i = [ -0.5, 0.5 ])
translate(LX15D_U_offset + [
expand - LX15D_U_h / 2, i * LX15D_U_screw_y,
-LX15D_dim[2] / 2 +
t
]) Mnut(M2N);
}
}
LX15D_BU_h = 6;
LX15D_BU_t = 3;
LX15D_BU_screw_a = 10;
LX15D_BU_offset = [ -25, 0, 0 ];
module LX15D_BU_plate() difference() {
t = LX15D_BU_t;
h = 5;
horn_a = LX15D_horn_screw_d + t;
bu_screw_a = Md(M2L8C) + t;
translate([ 0, 0, h / 2 ]) hull() {
LX15D_horn_screw_pos() cube([ horn_a, horn_a, h ], center = true);
for (i = [ -0.5, 0.5 ])
translate(LX15D_BU_offset +
[ LX15D_BU_h / 2, i * LX15D_BU_screw_a, 0 ])
cube([ bu_screw_a, bu_screw_a, h ], center = true);
}
cylinder(d = LX15D_horn_clearance_d, h = 100, center = true, $fn = 8);
LX15D_horn_screw_pos() Mscrew_hole(M3L8C);
for (i = [ -0.5, 0.5 ])
translate(LX15D_BU_offset + [ LX15D_BU_h / 2, i * LX15D_BU_screw_a, t ])
rotate([ 180, 0, 0 ]) Mscrew_hole(M2L8C);
}
module LX15D_BU_body() translate(LX15D_BU_offset + [ LX15D_BU_h / 2, 0, 0 ])
difference() {
t = LX15D_BU_t;
dim = [ LX15D_BU_h, LX15D_BU_screw_a + t * 2, LX15D_horn_w ];
union() {
rotate([ 0, 90, 0 ]) tile_pos(T24, LX15D_BU_h, center = true);
cube(dim, center = true);
}
rotate([ 0, 90, 0 ])
tile_neg(T24, LX15D_BU_h, center = true);
for (j = [ -1, 1 ], i = [ -0.5, 0.5 ])
translate([ 0, i * LX15D_BU_screw_a, j * dim[2] / 2 ])
rotate([ j * 90 + 90, 0, 0 ]) {
Mscrew_hole(M2L8C);
translate([ 0, 0, t ]) Mnut_sidehole(M2N, l = 10);
}
}
module LX15D_BU(expand = 0) {
t = 3;
plate_h = 5;
finalize("yellow") LX15D_BU_body();
for (m = [ 0, 1 ])
mirror([ 0, 0, m ]) translate([ 0, 0, LX15D_horn_w / 2 + expand ]) {
finalize("blue") LX15D_BU_plate();
for (i = [ -0.5, 0.5 ])
translate(LX15D_BU_offset +
[ LX15D_BU_h / 2, i * LX15D_BU_screw_a, t + expand ])
rotate([ 180, 0, 0 ]) Mscrew(M2L8C);
LX15D_horn_screw_pos() translate([ 0, 0, plate_h + expand ])
rotate([ 180, 0, 0 ]) Mscrew(M3L8C);
}
for (j = [ -1, 1 ], i = [ -0.5, 0.5 ])
translate(LX15D_BU_offset + [
LX15D_BU_h / 2 + expand, i * LX15D_BU_screw_a, j * LX15D_horn_w / 2
]) rotate([ j * 90 + 90, 0, 0 ]) {
translate([ 0, 0, t ]) Mnut(M2N, l = 10);
}
}
render_part = "nothing";
if (render_part == "LX15D_BU_plate") {
$fn = 128;
LX15D_BU_plate();
} else if (render_part == "LX15D_BU_body") {
$fn = 128;
LX15D_BU_body();
} else if (render_part == "LX15D_U_plate") {
$fn = 128;
LX15D_U_plate();
} else if (render_part == "LX15D_U_body") {
$fn = 128;
LX15D_U_body();
}
schpin_koke/src/scad/LX15D/cables.scad
0 → 100644
View file @
5b2e315f
include<../LX15D.scad>;
module cable_harness(w, s, r, l) render() difference() {
y = w / 2 - s / 2 - r;
hull() for (i = [ -1, 1 ]) translate([ 0, i * y, 0 ]) rotate([ 0, 90, 0 ])
cylinder(d = s + r * 2, h = l + 2, center = true);
minkowski() {
difference() {
hull() for (i = [ -1, 1 ]) translate([ 0, i * y, 0 ])
rotate([ 0, 90, 0 ])
cylinder(d = s + r * 2 + 0.1, h = l - r * 2, center = true);
hull() for (i = [ -1, 1 ]) translate([ 0, i * y, 0 ])
rotate([ 0, 90, 0 ])
cylinder(d = s + r * 2, h = l + 1, center = true);
}
sphere(r = r);
}
}
module LX15D_cable_holder_B(z_offset, expand) {
w = LX15D_dim[1];
t = 2;
h = 8;
off = [ 30, 0, LX15D_dim[2] / 2 + z_offset ];
screw_off = off + [ -2, 0, 0 ];
screw_d = Md(M2L8C);
screw_y_offset = w / 2 - screw_d / 2 - t;
LX15D_cable_holder_B_screw_pos(screw_off, y_offset = screw_y_offset) {
translate([ 0, 0, h - Mhead_h(M2L8C) ]) rotate([ 180, 0, 0 ])
Mscrew_hole(M2L8C);
translate([ 0, 0, -0.01 ]) Mnut(M2N);
}
finalize("deeppink") LX15D_cable_holder_B_body(
part_i = 0, z_offset = z_offset, h = h, w = w, t = t, off = off,
screw_off = screw_off, screw_d = screw_d,
screw_y_offset = screw_y_offset);
finalize("cyan") LX15D_cable_holder_B_body(
part_i = 1, z_offset = z_offset, h = h, w = w, t = t, off = off,
screw_off = screw_off, screw_d = screw_d,
screw_y_offset = screw_y_offset);
}
module LX15D_cable_holder_B_screw_pos(off, y_offset) {
for (i = [ -1, 1 ]) translate(off + [ 0, i * y_offset, 0 ]) children();
}
module LX15D_cable_holder_B_body(part_i, z_offset, h, w, t, off, screw_off,
screw_d, screw_y_offset) difference() {
s = 3;
r = 2;
l = 10;
harness_h = s + r * 2;
translate(off + [ 0, 0, h / 2 ]) cube([ l, w, h ], center = true);
for (i = [ -1, 1 ])
LX15D_body_screw_pos(1, i) translate([ 0, 0, z_offset + t ])
rotate([ 180, 0, 0 ]) Mscrew_hole(M2L8C, hole_offset = 100);
LX15D_cable_holder_B_screw_pos(screw_off, y_offset = screw_y_offset) {
translate([ 0, 0, h - Mhead_h(M2L8C) ]) rotate([ 180, 0, 0 ])
Mscrew_hole(M2L8C);
translate([ 0, 0, -0.01 ]) Mnut(M2N);
}
if (part_i == 0) {
translate(off + [ 0, 0, 50 + harness_h / 2 ]) cube(100, center = true);
}
if (part_i == 1) {
translate(off - [ 0, 0, 50 - harness_h / 2 ]) cube(100, center = true);
}
for (z = [ harness_h / 2, h ])
translate(off + [ 0, 0, z ])
cable_harness(w - screw_d - t * 2, s, r, l);
}
module LX15D_cable_holder_A_screw_pos(off, screw_z) for (i = [ -1, 1 ])
translate(off + [ 2, 0, i* screw_z ]) children();
module LX15D_cable_holder_A(expand) {
l = 10;
t = 2;
h = 7;
w = LX15D_dim[2] + t * 2;
off = [ -LX15D_axis_offset + l / 2, LX15D_dim[1] / 2, 0 ];
screw_z = w / 2 - t - Md(M2L8C) / 2;
LX15D_cable_holder_A_screw_pos(off, screw_z) {
translate([ 0, h + 3 * expand, 0 ]) rotate([ 90, 0, 0 ]) Mscrew(M2L8C);
translate([ 0, h, 0 ]) rotate([ 90, 0, 0 ]) Mnut(M2N);
}
translate([ 0, expand, 0 ]) finalize("cyan") LX15D_cable_holder_A_body(
part_i = 0, l = l, w = w, t = t, h = h, off = off, screw_z = screw_z);
translate([ 0, 2 * expand, 0 ]) finalize("deeppink")
LX15D_cable_holder_A_body(part_i = 1, l = l, t = t, w = w, h = h,
off = off, screw_z = screw_z);
for (m = [ 0, 1 ])
mirror([ 0, 0, m ]) LX15D_body_screw_pos(-1, 1)
translate([ 0, 0, t + expand ]) rotate([ 180, 0, 0 ]) Mscrew(M2L8C);
}
module LX15D_cable_holder_A_body(part_i, l, t, w, h, off, screw_z)
difference() {
s = 3;
r = 2;
k = 0.1;
union() {
translate(off + [ 0, h / 2, 0 ]) cube([ l, h, w ], center = true);
for (m = [ 0, 1 ])
mirror([ 0, 0, m ]) LX15D_body_screw_pos(-1, 1)
cylinder(d = LX15D_screw_clearance_d, h = t);
}
if (part_i == 0) {
translate(off + [ 0, 50 + h / 2, 0 ]) cube(100, center = true);
}
if (part_i == 1) {
translate(off - [ 0, 50 - h / 2, 0 ]) cube(100, center = true);
}
LX15D_body_screw_pos(-1, 1)
cylinder(d = LX15D_body_screw_d, h = 100, center = true);
LX15D_cable_holder_A_screw_pos(off, screw_z) {
translate([ 0, h, 0 ]) rotate([ 90, 0, 0 ]) Mscrew_hole(M2L8C);
translate([ 0, -0.1, 0 ]) rotate([ -90, 0, 0 ]) Mnut(M2N);
}
translate(off + [ 0, s / 2 + r, 0 ]) rotate([ 90, 0, 0 ])
cable_harness(w - Md(M2L8C) * 2 - t * 2, s, r, l);
}
module LX15D_cable_holder_C(expand) {
t = 2;
s = 2;
w = LX15D_dim[2] + t * 2;
harness_w = w - t * 2 - Md(M2L8C);
finalize("deeppink")
LX15D_cable_holder_C_lock(t = t, s = s, w = w, harness_w = harness_w);
finalize("cyan")
LX15D_cable_holder_C_body(t = t, s = s, w = w, harness_w = harness_w);
}
module LX15D_cable_holder_C_screw_pos(t) {
for (i = [ -1, 1 ], j = [ -1, 1 ])
translate([
-LX15D_axis_offset, //
i * (LX15D_dim[1] - t * 2 - Md(M2L8C)) / 2,
j * (LX15D_dim[2] - t * 2 - Md(M2L8C)) / 2
]) rotate([ 0, 90, 0 ]) children();
}
module LX15D_cable_holder_C_lock(t, s, w, harness_w) difference() {
h = s + t * 2;
l = Md(M2L8C) + t * 2;
translate([ -LX15D_axis_offset, LX15D_dim[1] / 2 - t - Md(M2L8C) / 2, 0 ])
difference() {
translate([ -h / 2 - s / 2 - t, 0, 0 ])
cube([ h, l, w ], center = true);
for (x = [ 0, -s - t * 2 ])
translate([ x - s / 2 - t, 0, 0 ]) rotate([ 90, 0, 90 ])
cable_harness(w = harness_w - t * 2, s = s, r = t, l = l);
}
LX15D_cable_holder_C_screw_pos(t = t) translate([ 0, 0, -Ml(M2L8C) ])
Mscrew_hole(M2L8C);
}
module LX15D_cable_holder_C_body(t, s, w, harness_w) difference() {
l = LX15D_dim[1];
h = s / 2 + t;
union() {
translate([ -h / 2 - LX15D_axis_offset, 0, 0 ])
cube([ h, l, w ], center = true);
for (m = [ 0, 1 ], i = [ -1, 1 ])
mirror([ 0, 0, m ]) LX15D_body_screw_pos(-1, i)
cylinder(d = LX15D_screw_clearance_d, h = t);
}
LX15D_cable_holder_C_screw_pos(t = t) {
translate([ 0, 0, -Ml(M2L8C) ]) Mscrew_hole(M2L8C);
translate([0, 0, 0.001])
rotate([ 0, 180, 0 ]) Mnut(M2N);
}
translate([ -LX15D_axis_offset - s / 2 - t, 0, 0 ]) rotate([ 90, 0, 90 ])
cable_harness(w = harness_w - t * 2, s = s, r = t, l = l);
for (m = [ 0, 1 ], i = [ -1, 1 ])
mirror([ 0, 0, m ]) LX15D_body_screw_pos(-1, i)
cylinder(d = LX15D_body_screw_d, h = 100, center = true);
}
schpin_koke/src/scad/LX15D/tiles.scad
0 → 100644
View file @
5b2e315f
include<../LX15D.scad>;
LX15D_U_h = 6;
LX15D_U_c = 0.2;
LX15D_U_offset = [ 40, 0, 0 ];
LX15D_U_screw_y = 16;
module LX15D_U_body(class) difference() {
t = 2;
translate([ -LX15D_U_h / 2, 0, 0 ])
cube([ LX15D_U_h, Ta(T24), LX15D_dim[2] ], center = true);
rotate([ 0, -90, 0 ]) tile_neg(T24, LX15D_U_h, centered_hole = true);
rotate([ 0, 90, 0 ])
cylinder(d = Ta(T24) / 2, h = 100, center = true, $fn = 8);
for (i = [ -0.5, 0.5 ], m = [ 0, 1 ])
mirror([ 0, 0, m ]) translate(
[ -LX15D_U_h / 2, i * LX15D_U_screw_y, -LX15D_dim[2] / 2 - t ]) {
Mscrew_hole(M2L8C);
translate([ 0, 0, 2 * t ]) Mnut_sidehole(M2N, l = 10);
}
}
module LX15D_U_plate(class, t = 2) difference() {
union() {
translate(LX15D_U_offset -
[ LX15D_U_h / 2, 0, LX15D_dim[2] / 2 + t / 2 ])
cube([ LX15D_U_h, Ta(T24), t ], center = true);
mirror([ 0, 0, 1 ]) LX15D_bottom_screw_pos()
hull() for (x = [ 0, LX15D_U_h / 2 ]) translate([ x, 0, 0 ])
cylinder(d = LX15D_screw_clearance_d, h = t);
}
translate(LX15D_U_offset - [ LX15D_U_h / 2, 0, LX15D_dim[2] / 2 + t ]) {
for (i = [ -0.5, 0.5 ])
translate([ 0, i * LX15D_U_screw_y, 0 ]) Mscrew_hole(M2L8C);
}
LX15D_bottom_screw_pos()
cylinder(d = LX15D_body_screw_d, h = 100, center = true);
}
module LX15D_U_plate_cable(class, t, s) difference() {
LX15D_U_plate(class, t = t + s / 2);
translate(LX15D_U_offset -
[ LX15D_U_h / 2, 0, LX15D_dim[2] / 2 + t + s / 2 ])
cable_harness(w = LX15D_U_screw_y, s = s, r = t, l = LX15D_U_h);
}
module LX15D_U_plate_cable_lock(class, t, s) difference() {
hull() translate(LX15D_U_offset -
[ LX15D_U_h / 2, 0, LX15D_dim[2] / 2 + t + s/2 ]) {
for (i = [ -0.5, 0.5 ])
translate([ 0, i * LX15D_U_screw_y, 0 ]) rotate([180, 0, 0])
cylinder(d = LX15D_U_h, h = t + s);
}
translate(LX15D_U_offset -
[ LX15D_U_h / 2, 0, LX15D_dim[2] / 2 + 2 * t + s ]) {
for (i = [ -0.5, 0.5 ])
translate([ 0, i * LX15D_U_screw_y, 0 ]) Mscrew_hole(M2L8C);
}
for (z = [ 0, s + 2 * t ])
translate(LX15D_U_offset -
[ LX15D_U_h / 2, 0, LX15D_dim[2] / 2 + t + s / 2 + z ])
cable_harness(w = LX15D_U_screw_y, s = s, r = t, l = LX15D_U_h);
}
// this is meh, refactor
module LX15D_U(class, expand = 0) union() {
t = 2;
cable_s = 2;
translate(LX15D_U_offset) finalize("blue") LX15D_U_body(class);
translate([ 0, 0, expand ]) mirror([ 0, 0, 1 ]) finalize("yellow")
LX15D_U_plate(class, t = t);
translate([ 0, 0, -expand ]) finalize("yellow")
LX15D_U_plate_cable(class, t = t, s = cable_s);
translate([ 0, 0, -2 * expand ]) finalize("blue")
LX15D_U_plate_cable_lock(class, t = t, s = cable_s);
translate(LX15D_U_offset) for (i = [ -0.5, 0.5 ]) translate([
-LX15D_U_h / 2, i * LX15D_U_screw_y,
-LX15D_dim[2] / 2 - 2 * t - cable_s - 2 *
expand
]) Mscrew(M2L12C);
translate(LX15D_U_offset) for (i = [ -0.5, 0.5 ]) translate([
-LX15D_U_h / 2, i * LX15D_U_screw_y, LX15D_dim[2] / 2 + t + 2 * expand
]) rotate([ 180, 0, 0 ]) Mscrew(M2L8C);
for (m = [ 0, 1 ]) mirror([ 0, 0, m ]) {
LX15D_bottom_screw_pos() translate([ 0, 0, 3 * expand + t ])
rotate([ 180, 0, 0 ]) Mscrew(M2L8C);
for (i = [ -0.5, 0.5 ])
translate(LX15D_U_offset + [
expand - LX15D_U_h / 2, i * LX15D_U_screw_y,
-LX15D_dim[2] / 2 +
t
]) Mnut(M2N);
}
}
LX15D_BU_h = 6;
LX15D_BU_t = 3;
LX15D_BU_screw_a = 10;
LX15D_BU_offset = [ -25, 0, 0 ];
module LX15D_BU_plate() difference() {
t = LX15D_BU_t;
h = 5;
horn_a = LX15D_horn_screw_d + t;
bu_screw_a = Md(M2L8C) + t;
translate([ 0, 0, h / 2 ]) hull() {
LX15D_horn_screw_pos() cube([ horn_a, horn_a, h ], center = true);
for (i = [ -0.5, 0.5 ])
translate(LX15D_BU_offset +
[ LX15D_BU_h / 2, i * LX15D_BU_screw_a, 0 ])
cube([ bu_screw_a, bu_screw_a, h ], center = true);
}
cylinder(d = LX15D_horn_clearance_d, h = 100, center = true, $fn = 8);
LX15D_horn_screw_pos() translate([ 0, 0, t ]) rotate([ 180, 0, 0 ])
Mscrew_hole(M3L5C);
for (i = [ -0.5, 0.5 ])
translate(LX15D_BU_offset + [ LX15D_BU_h / 2, i * LX15D_BU_screw_a, t ])
rotate([ 180, 0, 0 ]) Mscrew_hole(M2L8C);
}
module LX15D_BU_body() translate(LX15D_BU_offset + [ LX15D_BU_h / 2, 0, 0 ])
difference() {
t = LX15D_BU_t;
dim = [ LX15D_BU_h, LX15D_BU_screw_a + t * 2, LX15D_horn_w ];
union() {
rotate([ 0, 90, 0 ]) tile_pos(T24, LX15D_BU_h, center = true);
cube(dim, center = true);
}
rotate([ 0, 90, 0 ]) tile_neg(T24, LX15D_BU_h, center = true);
for (j = [ -1, 1 ], i = [ -0.5, 0.5 ])
translate([ 0, i * LX15D_BU_screw_a, j * dim[2] / 2 ])
rotate([ j * 90 + 90, 0, 0 ]) {
Mscrew_hole(M2L8C);
translate([ 0, 0, t ]) Mnut_sidehole(M2N, l = 10);
}
}
module LX15D_BU(expand = 0) {
t = LX15D_BU_t;
plate_h = 5;
finalize("yellow") LX15D_BU_body();
for (m = [ 0, 1 ])
mirror([ 0, 0, m ]) translate([ 0, 0, LX15D_horn_w / 2 + expand ]) {
finalize("blue") LX15D_BU_plate();
for (i = [ -0.5, 0.5 ])
translate(LX15D_BU_offset +
[ LX15D_BU_h / 2, i * LX15D_BU_screw_a, t + expand ])
rotate([ 180, 0, 0 ]) Mscrew(M2L8C);
LX15D_horn_screw_pos() translate([ 0, 0, plate_h + expand - t ])
rotate([ 180, 0, 0 ]) Mscrew(M3L5C);
}
for (j = [ -1, 1 ], i = [ -0.5, 0.5 ])
translate(LX15D_BU_offset + [
LX15D_BU_h / 2 + expand, i * LX15D_BU_screw_a, j * LX15D_horn_w / 2
]) rotate([ j * 90 + 90, 0, 0 ]) {
translate([ 0, 0, t ]) Mnut(M2N);
}
}
schpin_koke/src/scad/bat.scad
View file @
5b2e315f
...
...
@@ -81,4 +81,4 @@ module bat_set() union() {
bat(center = true);
}
//
bat_set();
bat_set();
schpin_koke/src/scad/body.scad
View file @
5b2e315f
include<LX15D/tiles.scad>;
include<LX15D/cables.scad>;
include<camera.scad>;
include<metric.scad>;
include<util.scad>;
...
...
@@ -80,13 +82,14 @@ module bottom_xplate() {
}
module body(positions, expand = 0) {
$fn = 32;
for (m = [ 0, 1 ])
mirror([ m, 0, 0 ]) translate([ Ta(T24) * 2, 0, 0 ]) rotate([ 0, 0, 0 ])
bat_set();
for (pos = positions)
translate(pos) rotate([ 0, 0, pos[0] > 0 ? 180 : 0 ]) {
rotate([ 180, 0, 0 ])
LX15D_cable_holder_B(z_offset = 2, expand = expand);
translate([ -4 * expand, 0, 0 ]) LX15D();
translate([ -2 * expand, 0, 0 ]) LX15D_U(expand = expand);
}
...
...
@@ -100,17 +103,6 @@ module body(positions, expand = 0) {
-2.5 * Ta(T24), 0, xplate_h + xplate_tile_h + D415_dim[2] / 2 + 30
]) {
D415();
D415_fov();
//
D415_fov();
}
}
// top_xplate();
$fs=0.5;
$fa=0.5;
bottom_xplate();
//body(positions =
// [
// [ 45.0, -36.0, 0.0 ], [ -45.0, -36.0, 0.0 ], [ 45.0, 36.0, 0.0 ],
// [ -45.0, 36.0, 0.0 ]
// ],
// expand = 0);
schpin_koke/src/scad/coxa.scad
View file @
5b2e315f
include<LX15D/tiles.scad>;
include<LX15D/cables.scad>;
include<LX15D.scad>;
module coxa_collision(femurOffset) {
translate([ 5, 0, 0 ]) cube([ 40, 30, 50 ], center = true);
...
...
@@ -7,7 +10,6 @@ module coxa_collision(femurOffset) {
}
module coxa(femurOffset, expand = 0) {
// color("red") coxa_holder(femurOffset);
translate(femurOffset) rotate([ 90, 0, 180 ]) {