Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Jan Koniarik
schpin-robot
Commits
7b25a32f
Commit
7b25a32f
authored
May 03, 2019
by
Jan Koniarik
Browse files
wololo
parent
fbd36424
Changes
14
Hide whitespace changes
Inline
Side-by-side
schpin_koke/CMakeLists.txt
View file @
7b25a32f
...
...
@@ -29,7 +29,7 @@ catkin_package(
)
CABAL_BUILD
(
koke
)
#
CABAL_BUILD(
schpin-
koke )
###########
## Build ##
...
...
schpin_koke/Makefile
0 → 100644
View file @
7b25a32f
all
:
src/stl/body/body.stl src/stl/body/body_collision_a.stl src/stl/leg/rr/coxa/coxa.stl src/stl/leg/rr/coxa/coxa_collision.stl src/stl/leg/rr/femur/femur.stl src/stl/leg/rr/femur/femur_collision_a.stl src/stl/leg/rr/femur/femur_collision_b.stl src/stl/leg/rr/tibia/tibia.stl src/stl/leg/rr/tibia/tibia_collision.stl src/stl/leg/rl/coxa/coxa.stl src/stl/leg/rl/coxa/coxa_collision.stl src/stl/leg/rl/femur/femur.stl src/stl/leg/rl/femur/femur_collision_a.stl src/stl/leg/rl/femur/femur_collision_b.stl src/stl/leg/rl/tibia/tibia.stl src/stl/leg/rl/tibia/tibia_collision.stl src/stl/leg/fr/coxa/coxa.stl src/stl/leg/fr/coxa/coxa_collision.stl src/stl/leg/fr/femur/femur.stl src/stl/leg/fr/femur/femur_collision_a.stl src/stl/leg/fr/femur/femur_collision_b.stl src/stl/leg/fr/tibia/tibia.stl src/stl/leg/fr/tibia/tibia_collision.stl src/stl/leg/fl/coxa/coxa.stl src/stl/leg/fl/coxa/coxa_collision.stl src/stl/leg/fl/femur/femur.stl src/stl/leg/fl/femur/femur_collision_a.stl src/stl/leg/fl/femur/femur_collision_b.stl src/stl/leg/fl/tibia/tibia.stl src/stl/leg/fl/tibia/tibia_collision.stl
src/stl/body/body.stl
:
src/scad/gen/body/body.scad
mkdir
-p
`
dirname
src/stl/body/body.stl
`
openscad
-o
src/stl/body/body.stl src/scad/gen/body/body.scad
admesh
--write-binary-stl
=
src/stl/body/body.stl
--no-check
src/stl/body/body.stl
src/stl/body/body_collision_a.stl
:
src/scad/gen/body/body_collision_a.scad
mkdir
-p
`
dirname
src/stl/body/body_collision_a.stl
`
openscad
-o
src/stl/body/body_collision_a.stl src/scad/gen/body/body_collision_a.scad
admesh
--write-binary-stl
=
src/stl/body/body_collision_a.stl
--no-check
src/stl/body/body_collision_a.stl
src/stl/leg/rr/coxa/coxa.stl
:
src/scad/gen/leg/rr/coxa/coxa.scad
mkdir
-p
`
dirname
src/stl/leg/rr/coxa/coxa.stl
`
openscad
-o
src/stl/leg/rr/coxa/coxa.stl src/scad/gen/leg/rr/coxa/coxa.scad
admesh
--write-binary-stl
=
src/stl/leg/rr/coxa/coxa.stl
--no-check
src/stl/leg/rr/coxa/coxa.stl
src/stl/leg/rr/coxa/coxa_collision.stl
:
src/scad/gen/leg/rr/coxa/coxa_collision.scad
mkdir
-p
`
dirname
src/stl/leg/rr/coxa/coxa_collision.stl
`
openscad
-o
src/stl/leg/rr/coxa/coxa_collision.stl src/scad/gen/leg/rr/coxa/coxa_collision.scad
admesh
--write-binary-stl
=
src/stl/leg/rr/coxa/coxa_collision.stl
--no-check
src/stl/leg/rr/coxa/coxa_collision.stl
src/stl/leg/rr/femur/femur.stl
:
src/scad/gen/leg/rr/femur/femur.scad
mkdir
-p
`
dirname
src/stl/leg/rr/femur/femur.stl
`
openscad
-o
src/stl/leg/rr/femur/femur.stl src/scad/gen/leg/rr/femur/femur.scad
admesh
--write-binary-stl
=
src/stl/leg/rr/femur/femur.stl
--no-check
src/stl/leg/rr/femur/femur.stl
src/stl/leg/rr/femur/femur_collision_a.stl
:
src/scad/gen/leg/rr/femur/femur_collision_a.scad
mkdir
-p
`
dirname
src/stl/leg/rr/femur/femur_collision_a.stl
`
openscad
-o
src/stl/leg/rr/femur/femur_collision_a.stl src/scad/gen/leg/rr/femur/femur_collision_a.scad
admesh
--write-binary-stl
=
src/stl/leg/rr/femur/femur_collision_a.stl
--no-check
src/stl/leg/rr/femur/femur_collision_a.stl
src/stl/leg/rr/femur/femur_collision_b.stl
:
src/scad/gen/leg/rr/femur/femur_collision_b.scad
mkdir
-p
`
dirname
src/stl/leg/rr/femur/femur_collision_b.stl
`
openscad
-o
src/stl/leg/rr/femur/femur_collision_b.stl src/scad/gen/leg/rr/femur/femur_collision_b.scad
admesh
--write-binary-stl
=
src/stl/leg/rr/femur/femur_collision_b.stl
--no-check
src/stl/leg/rr/femur/femur_collision_b.stl
src/stl/leg/rr/tibia/tibia.stl
:
src/scad/gen/leg/rr/tibia/tibia.scad
mkdir
-p
`
dirname
src/stl/leg/rr/tibia/tibia.stl
`
openscad
-o
src/stl/leg/rr/tibia/tibia.stl src/scad/gen/leg/rr/tibia/tibia.scad
admesh
--write-binary-stl
=
src/stl/leg/rr/tibia/tibia.stl
--no-check
src/stl/leg/rr/tibia/tibia.stl
src/stl/leg/rr/tibia/tibia_collision.stl
:
src/scad/gen/leg/rr/tibia/tibia_collision.scad
mkdir
-p
`
dirname
src/stl/leg/rr/tibia/tibia_collision.stl
`
openscad
-o
src/stl/leg/rr/tibia/tibia_collision.stl src/scad/gen/leg/rr/tibia/tibia_collision.scad
admesh
--write-binary-stl
=
src/stl/leg/rr/tibia/tibia_collision.stl
--no-check
src/stl/leg/rr/tibia/tibia_collision.stl
src/stl/leg/rl/coxa/coxa.stl
:
src/scad/gen/leg/rl/coxa/coxa.scad
mkdir
-p
`
dirname
src/stl/leg/rl/coxa/coxa.stl
`
openscad
-o
src/stl/leg/rl/coxa/coxa.stl src/scad/gen/leg/rl/coxa/coxa.scad
admesh
--write-binary-stl
=
src/stl/leg/rl/coxa/coxa.stl
--no-check
src/stl/leg/rl/coxa/coxa.stl
src/stl/leg/rl/coxa/coxa_collision.stl
:
src/scad/gen/leg/rl/coxa/coxa_collision.scad
mkdir
-p
`
dirname
src/stl/leg/rl/coxa/coxa_collision.stl
`
openscad
-o
src/stl/leg/rl/coxa/coxa_collision.stl src/scad/gen/leg/rl/coxa/coxa_collision.scad
admesh
--write-binary-stl
=
src/stl/leg/rl/coxa/coxa_collision.stl
--no-check
src/stl/leg/rl/coxa/coxa_collision.stl
src/stl/leg/rl/femur/femur.stl
:
src/scad/gen/leg/rl/femur/femur.scad
mkdir
-p
`
dirname
src/stl/leg/rl/femur/femur.stl
`
openscad
-o
src/stl/leg/rl/femur/femur.stl src/scad/gen/leg/rl/femur/femur.scad
admesh
--write-binary-stl
=
src/stl/leg/rl/femur/femur.stl
--no-check
src/stl/leg/rl/femur/femur.stl
src/stl/leg/rl/femur/femur_collision_a.stl
:
src/scad/gen/leg/rl/femur/femur_collision_a.scad
mkdir
-p
`
dirname
src/stl/leg/rl/femur/femur_collision_a.stl
`
openscad
-o
src/stl/leg/rl/femur/femur_collision_a.stl src/scad/gen/leg/rl/femur/femur_collision_a.scad
admesh
--write-binary-stl
=
src/stl/leg/rl/femur/femur_collision_a.stl
--no-check
src/stl/leg/rl/femur/femur_collision_a.stl
src/stl/leg/rl/femur/femur_collision_b.stl
:
src/scad/gen/leg/rl/femur/femur_collision_b.scad
mkdir
-p
`
dirname
src/stl/leg/rl/femur/femur_collision_b.stl
`
openscad
-o
src/stl/leg/rl/femur/femur_collision_b.stl src/scad/gen/leg/rl/femur/femur_collision_b.scad
admesh
--write-binary-stl
=
src/stl/leg/rl/femur/femur_collision_b.stl
--no-check
src/stl/leg/rl/femur/femur_collision_b.stl
src/stl/leg/rl/tibia/tibia.stl
:
src/scad/gen/leg/rl/tibia/tibia.scad
mkdir
-p
`
dirname
src/stl/leg/rl/tibia/tibia.stl
`
openscad
-o
src/stl/leg/rl/tibia/tibia.stl src/scad/gen/leg/rl/tibia/tibia.scad
admesh
--write-binary-stl
=
src/stl/leg/rl/tibia/tibia.stl
--no-check
src/stl/leg/rl/tibia/tibia.stl
src/stl/leg/rl/tibia/tibia_collision.stl
:
src/scad/gen/leg/rl/tibia/tibia_collision.scad
mkdir
-p
`
dirname
src/stl/leg/rl/tibia/tibia_collision.stl
`
openscad
-o
src/stl/leg/rl/tibia/tibia_collision.stl src/scad/gen/leg/rl/tibia/tibia_collision.scad
admesh
--write-binary-stl
=
src/stl/leg/rl/tibia/tibia_collision.stl
--no-check
src/stl/leg/rl/tibia/tibia_collision.stl
src/stl/leg/fr/coxa/coxa.stl
:
src/scad/gen/leg/fr/coxa/coxa.scad
mkdir
-p
`
dirname
src/stl/leg/fr/coxa/coxa.stl
`
openscad
-o
src/stl/leg/fr/coxa/coxa.stl src/scad/gen/leg/fr/coxa/coxa.scad
admesh
--write-binary-stl
=
src/stl/leg/fr/coxa/coxa.stl
--no-check
src/stl/leg/fr/coxa/coxa.stl
src/stl/leg/fr/coxa/coxa_collision.stl
:
src/scad/gen/leg/fr/coxa/coxa_collision.scad
mkdir
-p
`
dirname
src/stl/leg/fr/coxa/coxa_collision.stl
`
openscad
-o
src/stl/leg/fr/coxa/coxa_collision.stl src/scad/gen/leg/fr/coxa/coxa_collision.scad
admesh
--write-binary-stl
=
src/stl/leg/fr/coxa/coxa_collision.stl
--no-check
src/stl/leg/fr/coxa/coxa_collision.stl
src/stl/leg/fr/femur/femur.stl
:
src/scad/gen/leg/fr/femur/femur.scad
mkdir
-p
`
dirname
src/stl/leg/fr/femur/femur.stl
`
openscad
-o
src/stl/leg/fr/femur/femur.stl src/scad/gen/leg/fr/femur/femur.scad
admesh
--write-binary-stl
=
src/stl/leg/fr/femur/femur.stl
--no-check
src/stl/leg/fr/femur/femur.stl
src/stl/leg/fr/femur/femur_collision_a.stl
:
src/scad/gen/leg/fr/femur/femur_collision_a.scad
mkdir
-p
`
dirname
src/stl/leg/fr/femur/femur_collision_a.stl
`
openscad
-o
src/stl/leg/fr/femur/femur_collision_a.stl src/scad/gen/leg/fr/femur/femur_collision_a.scad
admesh
--write-binary-stl
=
src/stl/leg/fr/femur/femur_collision_a.stl
--no-check
src/stl/leg/fr/femur/femur_collision_a.stl
src/stl/leg/fr/femur/femur_collision_b.stl
:
src/scad/gen/leg/fr/femur/femur_collision_b.scad
mkdir
-p
`
dirname
src/stl/leg/fr/femur/femur_collision_b.stl
`
openscad
-o
src/stl/leg/fr/femur/femur_collision_b.stl src/scad/gen/leg/fr/femur/femur_collision_b.scad
admesh
--write-binary-stl
=
src/stl/leg/fr/femur/femur_collision_b.stl
--no-check
src/stl/leg/fr/femur/femur_collision_b.stl
src/stl/leg/fr/tibia/tibia.stl
:
src/scad/gen/leg/fr/tibia/tibia.scad
mkdir
-p
`
dirname
src/stl/leg/fr/tibia/tibia.stl
`
openscad
-o
src/stl/leg/fr/tibia/tibia.stl src/scad/gen/leg/fr/tibia/tibia.scad
admesh
--write-binary-stl
=
src/stl/leg/fr/tibia/tibia.stl
--no-check
src/stl/leg/fr/tibia/tibia.stl
src/stl/leg/fr/tibia/tibia_collision.stl
:
src/scad/gen/leg/fr/tibia/tibia_collision.scad
mkdir
-p
`
dirname
src/stl/leg/fr/tibia/tibia_collision.stl
`
openscad
-o
src/stl/leg/fr/tibia/tibia_collision.stl src/scad/gen/leg/fr/tibia/tibia_collision.scad
admesh
--write-binary-stl
=
src/stl/leg/fr/tibia/tibia_collision.stl
--no-check
src/stl/leg/fr/tibia/tibia_collision.stl
src/stl/leg/fl/coxa/coxa.stl
:
src/scad/gen/leg/fl/coxa/coxa.scad
mkdir
-p
`
dirname
src/stl/leg/fl/coxa/coxa.stl
`
openscad
-o
src/stl/leg/fl/coxa/coxa.stl src/scad/gen/leg/fl/coxa/coxa.scad
admesh
--write-binary-stl
=
src/stl/leg/fl/coxa/coxa.stl
--no-check
src/stl/leg/fl/coxa/coxa.stl
src/stl/leg/fl/coxa/coxa_collision.stl
:
src/scad/gen/leg/fl/coxa/coxa_collision.scad
mkdir
-p
`
dirname
src/stl/leg/fl/coxa/coxa_collision.stl
`
openscad
-o
src/stl/leg/fl/coxa/coxa_collision.stl src/scad/gen/leg/fl/coxa/coxa_collision.scad
admesh
--write-binary-stl
=
src/stl/leg/fl/coxa/coxa_collision.stl
--no-check
src/stl/leg/fl/coxa/coxa_collision.stl
src/stl/leg/fl/femur/femur.stl
:
src/scad/gen/leg/fl/femur/femur.scad
mkdir
-p
`
dirname
src/stl/leg/fl/femur/femur.stl
`
openscad
-o
src/stl/leg/fl/femur/femur.stl src/scad/gen/leg/fl/femur/femur.scad
admesh
--write-binary-stl
=
src/stl/leg/fl/femur/femur.stl
--no-check
src/stl/leg/fl/femur/femur.stl
src/stl/leg/fl/femur/femur_collision_a.stl
:
src/scad/gen/leg/fl/femur/femur_collision_a.scad
mkdir
-p
`
dirname
src/stl/leg/fl/femur/femur_collision_a.stl
`
openscad
-o
src/stl/leg/fl/femur/femur_collision_a.stl src/scad/gen/leg/fl/femur/femur_collision_a.scad
admesh
--write-binary-stl
=
src/stl/leg/fl/femur/femur_collision_a.stl
--no-check
src/stl/leg/fl/femur/femur_collision_a.stl
src/stl/leg/fl/femur/femur_collision_b.stl
:
src/scad/gen/leg/fl/femur/femur_collision_b.scad
mkdir
-p
`
dirname
src/stl/leg/fl/femur/femur_collision_b.stl
`
openscad
-o
src/stl/leg/fl/femur/femur_collision_b.stl src/scad/gen/leg/fl/femur/femur_collision_b.scad
admesh
--write-binary-stl
=
src/stl/leg/fl/femur/femur_collision_b.stl
--no-check
src/stl/leg/fl/femur/femur_collision_b.stl
src/stl/leg/fl/tibia/tibia.stl
:
src/scad/gen/leg/fl/tibia/tibia.scad
mkdir
-p
`
dirname
src/stl/leg/fl/tibia/tibia.stl
`
openscad
-o
src/stl/leg/fl/tibia/tibia.stl src/scad/gen/leg/fl/tibia/tibia.scad
admesh
--write-binary-stl
=
src/stl/leg/fl/tibia/tibia.stl
--no-check
src/stl/leg/fl/tibia/tibia.stl
src/stl/leg/fl/tibia/tibia_collision.stl
:
src/scad/gen/leg/fl/tibia/tibia_collision.scad
mkdir
-p
`
dirname
src/stl/leg/fl/tibia/tibia_collision.stl
`
openscad
-o
src/stl/leg/fl/tibia/tibia_collision.stl src/scad/gen/leg/fl/tibia/tibia_collision.scad
admesh
--write-binary-stl
=
src/stl/leg/fl/tibia/tibia_collision.stl
--no-check
src/stl/leg/fl/tibia/tibia_collision.stl
schpin_koke/Setup.hs
View file @
7b25a32f
import
Distribution.Simple
import
Distribution.Simple
main
=
defaultMain
schpin_koke/cabal.sandbox.config
0 → 100644
View file @
7b25a32f
--
This
is
a
Cabal
package
environment
file
.
--
THIS
FILE
IS
AUTO
-
GENERATED
.
DO
NOT
EDIT
DIRECTLY
.
--
Please
create
a
'cabal.config'
file
in
the
same
directory
--
if
you
want
to
change
the
default
settings
for
this
sandbox
.
local
-
repo
: /
home
/
squirrel
/
data
/
Projects
/
Schpin
/
repos
/
schpin
-
robot
/
schpin_koke
/.
cabal
-
sandbox
/
packages
logs
-
dir
: /
home
/
squirrel
/
data
/
Projects
/
Schpin
/
repos
/
schpin
-
robot
/
schpin_koke
/.
cabal
-
sandbox
/
logs
world
-
file
: /
home
/
squirrel
/
data
/
Projects
/
Schpin
/
repos
/
schpin
-
robot
/
schpin_koke
/.
cabal
-
sandbox
/
world
user
-
install
:
False
package
-
db
: /
home
/
squirrel
/
data
/
Projects
/
Schpin
/
repos
/
schpin
-
robot
/
schpin_koke
/.
cabal
-
sandbox
/
x86_64
-
linux
-
ghc
-
8
.
6
.
4
-
packages
.
conf
.
d
build
-
summary
: /
home
/
squirrel
/
data
/
Projects
/
Schpin
/
repos
/
schpin
-
robot
/
schpin_koke
/.
cabal
-
sandbox
/
logs
/
build
.
log
install
-
dirs
prefix
: /
home
/
squirrel
/
data
/
Projects
/
Schpin
/
repos
/
schpin
-
robot
/
schpin_koke
/.
cabal
-
sandbox
bindir
: $
prefix
/
bin
libdir
: $
prefix
/
lib
libsubdir
: $
abi
/$
libname
dynlibdir
: $
libdir
/$
abi
libexecdir
: $
prefix
/
libexec
libexecsubdir
: $
abi
/$
pkgid
datadir
: $
prefix
/
share
datasubdir
: $
abi
/$
pkgid
docdir
: $
datadir
/
doc
/$
abi
/$
pkgid
htmldir
: $
docdir
/
html
haddockdir
: $
htmldir
sysconfdir
: $
prefix
/
etc
schpin_koke/launch/robot_description.launch
0 → 100644
View file @
7b25a32f
<launch>
<param name="robot_description" textfile="$(find schpin_koke)/src/urdf/koke.urdf"/>
<param name="robot_semantics" textfile="$(find schpin_koke)/src/srdf/koke.srdf"/>
</launch>
schpin_koke/schpin-koke.cabal
View file @
7b25a32f
...
...
@@ -57,7 +57,7 @@ executable schpin-koke
-- other-extensions:
-- Other library packages from which modules are imported.
build-depends: base >=4.11
&& <4.12
, linear, schpin-robot-lib
build-depends: base >=4.11, linear, schpin-robot-lib
, dimensional
-- Directories containing source files.
hs-source-dirs: src
...
...
schpin_koke/src/Main.hs
0 → 100755
View file @
7b25a32f
#!/
usr
/
bin
/
env
runhaskell
import
Data.SCAD
import
Data.Shared
import
Data.SRDF.Xml
(
writeSRDFXML
)
import
Data.URDF.Xml
(
writeXML
)
import
Data.Walker
import
Linear.Quaternion
import
Linear.V3
import
Numeric.Units.Dimensional.Prelude
((
*~
),
degree
,
radian
,
second
)
import
qualified
Numeric.Units.Dimensional.Prelude
as
D
data
LegPos
=
RL
|
RR
|
FR
|
FL
deriving
Eq
;
kokeTipPos
=
V3
(
90
*~
mm
)
(
0
*~
mm
)
(
0
*~
mm
)
femurOffset
::
Pose
femurOffset
=
Pose
(
V3
(
61.3
*~
mm
)
(
0
*~
mm
)
(
0
*~
mm
))
$
toQuat
zAxis
(
0
*~
degree
)
tibiaOffset
::
Pose
tibiaOffset
=
Pose
(
V3
(
86
*~
mm
)
(
0
*~
mm
)
(
0
*~
mm
))
$
toQuat
yAxis
(
90
*~
degree
)
legPose
::
LegPos
->
Pose
legPose
pos
=
Pose
(
V3
x
y
(
0
*~
mm
))
$
toQuat
zAxis
(
angle
*~
degree
)
where
x
=
case
pos
of
FR
->
36
*~
mm
RR
->
36
*~
mm
FL
->
(
-
36
)
*~
mm
RL
->
(
-
36
)
*~
mm
y
=
case
pos
of
FL
->
45
*~
mm
FR
->
45
*~
mm
RR
->
(
-
45
)
*~
mm
RL
->
(
-
45
)
*~
mm
angle
=
standingZAngles
pos
standingZAngles
::
LegPos
->
Double
standingZAngles
pos
=
case
pos
of
RL
->
-
90
-
45
RR
->
-
90
+
45
FL
->
90
+
45
FR
->
90
-
45
foldedZAngles
::
LegPos
->
Double
foldedZAngles
pos
=
case
pos
of
RL
->
-
90
RR
->
-
90
FL
->
90
FR
->
90
tibia
=
Part
{
model
=
scadModel
"tibia"
[
(
"tipOffset"
,
kokeTipPos
)
]
[
"tibia.scad"
],
collision_models
=
[
scadModel
"tibia_collision"
[(
"tipOffset"
,
kokeTipPos
)]
[
"tibia.scad"
]
],
part_weight
=
Nothing
,
center_of_mass
=
Nothing
}
femur
=
Part
{
model
=
scadModel
"femur"
[
(
"tibiaOffset"
,
pos
$
tibiaOffset
)]
[
"femur.scad"
],
collision_models
=
[
scadModel
"femur_collision_a"
[(
"tibiaOffset"
,
pos
$
tibiaOffset
)]
[
"femur.scad"
],
scadModel
"femur_collision_b"
[(
"tibiaOffset"
,
pos
$
tibiaOffset
)]
[
"femur.scad"
]
],
part_weight
=
Nothing
,
center_of_mass
=
Nothing
}
coxa
=
Part
{
model
=
scadModel
"coxa"
[
(
"femurOffset"
,
pos
$
femurOffset
)]
[
"coxa.scad"
],
collision_models
=
[
scadModel
"coxa_collision"
[
(
"femurOffset"
,
pos
$
femurOffset
)]
[
"coxa.scad"
]
],
part_weight
=
Nothing
,
center_of_mass
=
Nothing
}
kokeBody
legs
=
Body
$
Part
{
model
=
scadModel
"body"
[(
"positions"
,
map
leg_pose
legs
)]
[
"body.scad"
],
collision_models
=
[
scadModel
"body_collision_a"
[(
"positions"
,
map
leg_pose
legs
)]
[
"body.scad"
]
],
part_weight
=
Nothing
,
center_of_mass
=
Nothing
}
where
leg_pose
leg
=
pos
$
offset
$
head
$
chain
leg
leg
::
LegPos
->
Leg
leg
pos
=
Leg
{
leg_name
=
case
pos
of
RL
->
"rl"
RR
->
"rr"
FL
->
"fl"
FR
->
"fr"
,
chain
=
[
Link
{
link_name
=
"coxa"
,
offset
=
legPose
pos
,
part
=
coxa
,
axis
=
zAxis
,
joint_config
=
JointConfig
{
min_angle
=
(
-
3
*
pi
/
8
)
*~
radian
,
default_angle
=
0
*~
radian
,
max_angle
=
(
3
*
pi
/
8
)
*~
radian
,
vel_lim
=
50
*~
(
radian
D
./
second
),
effor_lim
=
100
,
g_steps
=
8
}},
Link
{
link_name
=
"femur"
,
offset
=
femurOffset
,
part
=
femur
,
axis
=
yAxis
,
joint_config
=
JointConfig
{
min_angle
=
(
-
3
*
pi
/
8
)
*~
radian
,
default_angle
=
(
-
pi
/
8
)
*~
radian
,
max_angle
=
(
3
*
pi
/
8
)
*~
radian
,
vel_lim
=
50
*~
(
radian
D
./
second
),
effor_lim
=
100
,
g_steps
=
8
}},
Link
{
link_name
=
"tibia"
,
offset
=
tibiaOffset
,
part
=
tibia
,
axis
=
yAxis
,
joint_config
=
JointConfig
{
min_angle
=
(
-
3
*
pi
/
8
)
*~
radian
,
default_angle
=
(
pi
/
8
)
*~
radian
,
max_angle
=
(
3
*
pi
/
8
)
*~
radian
,
vel_lim
=
50
*~
(
radian
D
./
second
),
effor_lim
=
100
,
g_steps
=
8
}
}
],
tip
=
Tip
{
point
=
kokeTipPos
},
pose
=
noOffset
-- is not considered during offset in schpin_ompl -> remove
}
koke
::
Walker
koke
=
Walker
walker_name
legs
(
kokeBody
legs
)
where
walker_name
=
"Tote"
legs
=
[
leg
RR
,
leg
RL
,
leg
FR
,
leg
FL
]
main
::
IO
()
main
=
do
mapM_
(
uncurry
renderSCAD
)
$
getSCAD
koke
writeXML
(
getURDF
koke
)
"src/urdf/koke.urdf"
writeSRDFXML
(
getSRDF
koke
)
"src/srdf/koke.srdf"
renderWalkerStl
koke
schpin_koke/src/scad/LX15D.scad
View file @
7b25a32f
include<tile.scad>;
LX15D_dim = [ 44.17, 22.95, 26 ];
LX15D_middle_t = 1.5; // height of the middle space
...
...
@@ -7,6 +8,7 @@ LX15D_horn_d = 20;
LX15D_horn_w = 38.6;
LX15D_screw_x = 41.2;
LX15D_screw_y = 18;
LX15D_horn_screw_d = 3;
LX15D_screw_clearance_d = 7;
LX15D_body_screw_d = 2;
LX15D_horn_clearance_d = 8;
...
...
@@ -21,14 +23,24 @@ module LX15D() color("gray") {
cube(dim + [ -LX15D_middle_a, -LX15D_middle_a, LX15D_middle_t * 2 ],
center = true);
for (i = [ -0.5, 0.5 ], j = [ -0.5, 0.5 ])
translate([ dim[0] * i, dim[1] * j, 0 ])
cylinder(
d = 13, h = 100, center = true);
translate([ dim[0] * i, dim[1] * j, 0 ])
cylinder(
d = 13, h = 100, center = true);
}
}
cylinder(d = LX15D_horn_d, h = LX15D_horn_w, center = true);
}
module LX15D_collision() {
dim = LX15D_dim;
translate([ dim[0] / 2 - LX15D_axis_offset, 0, 0 ]) {
cube(dim + [ 0, 0, LX15D_middle_t * 2 ], center = true);
}
cube([ LX15D_horn_d, LX15D_horn_d, LX15D_horn_w ], center = true);
}
module LX15D_clearance() {
cylinder(r = LX15D_clearance_r, h = LX15D_horn_w, center = true);
}
...
...
@@ -63,3 +75,65 @@ 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 =
[ LX15D_dim[0] - LX15D_axis_offset + LX15D_U_c + LX15D_U_h, 0, 0 ];
module LX15D_U() render() difference() {
a = 24;
t = 2;
union() {
translate([ LX15D_dim[0] - LX15D_axis_offset + LX15D_U_c, 0, 0 ])
difference() {
translate([ LX15D_U_h / 2, 0, 0 ])
cube([ LX15D_U_h, a, LX15D_dim[2] + t * 2 ], center = true);
translate([ LX15D_U_h, 0, 0 ]) rotate([ 0, -90, 0 ])
tile_neg(T24, LX15D_U_h);
}
for (m = [ 0, 1 ])
mirror([ 0, 0, m ]) LX15D_bottom_screw_pos()
hull() for (x = [ 0, LX15D_U_h / 2 ]) translate([ x, 0, 0 ])
cylinder(d = LX15D_screw_clearance_d, h = t);
}
LX15D_bottom_screw_pos()
cylinder(d = LX15D_body_screw_d, h = 100, center = true);
}
LX15D_BU_h = 6;
LX15D_BU_screw_d = 3;
LX15D_BU_screw_h = 6;
LX15D_BU_screw_a = 10;
LX15D_BU_x_off = -LX15D_clearance_r - LX15D_BU_h / 2;
module LX15D_BU_plate() difference() {
t = 3;
hull() translate([ 0, 0, LX15D_horn_w / 2 ]) {
LX15D_horn_screw_pos() cylinder(d = LX15D_horn_screw_d + t * 2, h = t);
for (i = [ -0.5, 0.5 ])
translate([ LX15D_BU_x_off, i * LX15D_BU_screw_a, 0 ])
cylinder(d = LX15D_BU_screw_d + t * 2, h = t);
}
LX15D_horn_screw_pos()
cylinder(d = LX15D_horn_screw_d, h = 100, center = true);
for (i = [ -0.5, 0.5 ])
translate([ LX15D_BU_x_off, i * LX15D_BU_screw_a, 0 ])
cylinder(d = LX15D_BU_screw_d, h = 100, center = true);
}
module LX15D_BU_body() difference() {
dim = [ LX15D_BU_h, LX15D_dim[1], LX15D_horn_w ];
x_off = LX15D_BU_x_off;
union() {
translate([ x_off, 0, 0 ]) difference() {
cube(dim, center = true);
rotate([ 0, 90, 0 ]) tile_neg(T24, LX15D_BU_h, center = true);
}
}
for (z = [ -dim[2] / 2, dim[2] / 2 ], i = [ -0.5, 0.5 ])
translate([ x_off, i * LX15D_BU_screw_a, z ]) cylinder(
d = LX15D_BU_screw_d, h = LX15D_BU_screw_h * 2, center = true);
}
module LX15D_BU() {
LX15D_BU_body();
for (m = [ 0, 1 ]) mirror([ 0, 0, m ]) LX15D_BU_plate();
}
schpin_koke/src/scad/body.scad
View file @
7b25a32f
include<tile.scad>;
include<LX15D.scad>;
screw_d
=
3
;
tile_a
=
24
;
t = 3;
t
ub
e_
d
=
4
;
local_ti
le_t =
5
;
coxa_z_space =
4
0;
t
il
e_
t
=
5
;
midd
le_t =
10
;
coxa_z_space =
1
0;
module body_collision_a(positions) {
hull() for (pos = positions) {
...
...
@@ -14,34 +14,21 @@ module body_collision_a(positions) {
}
}
module top_tiles() {
translate([ 0, 0, (coxa_z_space + t) / 2 ]) {
for (j = [-2:2])
translate([ 0, j * tile_a, 0 ]) tile_base(local_tile_t, 0);
for (i = [ -1, 0, 1 ])
translate([ i * tile_a, 0, 0 ]) tile_base(local_tile_t, 0);
}
}
module bot_tiles() {
translate([ 0, 0, -(coxa_z_space + t) / 2 ]) {
for (j = [-2:2])
translate([ 0, j * tile_a, 0 ]) tile_base(local_tile_t, 0);
for (i = [ -1, 0, 1 ])
translate([ i * tile_a, 0, 0 ]) tile_base(local_tile_t, 0);
}
}
module body(positions) {
$fn = 32;
for (pos = positions) translate(pos) {
if (pos[1] > 0) {
rotate([ 0, 0, -90 ]) LX15D();
} else {
rotate([ 0, 0, 90 ]) LX15D();
}
for (pos = positions)
translate(pos) rotate([ 0, 0, pos[1] > 0 ? -90 : 90 ]) {
LX15D();
LX15D_U();
}
top_tiles();
bot_tiles();
rotate([ 90, 0, 0 ]) for (i = [-1.5:1.5]) translate([ i * tile_a, 0, 0 ]) {
tile(T24, middle_t, center = true);
}
}
body(positions = [
[ 36.0, -45.0, 0.0 ], [ -36.0, -45.0, 0.0 ], [ 36.0, 45.0, 0.0 ],
[ -36.0, 45.0, 0.0 ]
]);
schpin_koke/src/scad/coxa.scad
View file @
7b25a32f
include<LX15D.scad>;
screw_d = 3;
t = 2;
z_screw_offset = 36;
main_screw_offset = LX15D_clearance_r + t;
module main_screw_pos() {
for (z = [ -0.5, 0.5 ])
translate([ main_screw_offset, 0, z * z_screw_offset ])
rotate([ -90, 0, 0 ]) children();
}
module side_screw_pos(femurOffset) {
translate(femurOffset) rotate([ 90, 0, 180 ]) {
LX15D_bottom_screw_pos() children();
}
rotate([ -90, 0, 0 ]) LX15D_screw_plane() {
rotate([ 90, 0, 0 ]) main_screw_pos() children();
}
}
module M3_screw(l, center = false) { cylinder(d = 3, h = l, center = center); }
module side_plate(femurOffset) {
relative_screw_offset = [ femurOffset[0] - main_screw_offset, 0, 0 ];
translate(femurOffset) rotate([ 90, 0, 180 ]) LX15D_side_plate(
screw_d,
[
relative_screw_offset + [ 0, z_screw_offset / 2, 0 ],
relative_screw_offset - [ 0, z_screw_offset / 2, 0 ]
],
t);
}
cable_clearance_radius = 2;
cable_clearance_d = 3;
cable_clearance_h = LX15D_screw_y;
cable_clearance_w = cable_clearance_d / 2 + t;
cable_clearance_x = 10;
module cable_side_plate() difference() {
union() {
rotate([ 90, 0, 180 ]) hull()
LX15D_bottom_screw_pos() for (x = [ 0, -1.5 ])
translate([ x, 0, t ]) {
cylinder(d = LX15D_screw_clearance_d,
h = cable_clearance_w - t + LX15D_middle_t);
}
translate([ LX15D_axis_offset - LX15D_dim[0], LX15D_dim[2] / 2, 0 ])
translate([ cable_clearance_x, LX15D_middle_t, 0 ]) difference() {
union() {
cube(
[
cable_clearance_d + t * 3, cable_clearance_w * 2,
cable_clearance_h
],
center = true);
}
translate([ 0, -50, 0 ]) cube(100, center = true);
difference() {
cube(
[
cable_clearance_d + cable_clearance_radius * 2,
cable_clearance_d + cable_clearance_radius * 2, 30
],
center = true);
rotate_extrude(convexity = 10) hull() for (i = [ -0.5, 0.5 ])
translate([
cable_clearance_radius + cable_clearance_d,
i * (cable_clearance_h - cable_clearance_radius * 2), 0
]) circle(r = cable_clearance_radius);
}
}
}
rotate([ 90, 0, 180 ]) LX15D_bottom_screw_pos()
cylinder(d = LX15D_body_screw_d, h = 100, center = true);
}
module holder() difference() {
a = screw_d + t * 2;
hull() {
LX15D_horn_screw_pos() translate([ 0, 0, LX15D_horn_w / 2 ])
cylinder(d = a, h = t);
translate([ main_screw_offset, 0, z_screw_offset / 2 ])
rotate([ 90, 0, 0 ])
cylinder(d = a, h = LX15D_dim[2], center = true);
}
LX15D_clearance();
LX15D_horn_screw_pos() translate([ 0, 0, LX15D_horn_w / 2 ])
cylinder(d = screw_d, h = 100, center = true);
cylinder(d = LX15D_horn_clearance_d, h = 100, center = true);
translate([ main_screw_offset, 0, z_screw_offset / 2 ]) rotate([ 90, 0, 0 ])
cylinder(d = screw_d, h = 100, center = true);
}
module coxa_holder(femurOffset) {
for (m = [ 0, 1 ]) mirror([ 0, 0, m ]) holder();
for (m = [ 0, 1 ]) mirror([ 0, m, 0 ]) side_plate(femurOffset);
translate(femurOffset) cable_side_plate();
}
module coxa_collision(femurOffset) {
width = LX15D_dim[2] + t * 2;
translate([ femurOffset[0] / 2, 0, 0 ]) cube(
[ femurOffset[0] + width, width, LX15D_horn_w + t * 2 ], center = true);
}