<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://studio.cse.chalmers.se/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Studio+Director</id>
	<title>IxD Studio - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://studio.cse.chalmers.se/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Studio+Director"/>
	<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Special:Contributions/Studio_Director"/>
	<updated>2026-06-29T14:44:37Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_pulley&amp;diff=190</id>
		<title>Dynamixel XL330 pulley</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_pulley&amp;diff=190"/>
		<updated>2026-05-21T13:39:49Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Xl330-pulley-rev.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
Code for OpenSCAD: https://openscad.org&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$fn=32;&lt;br /&gt;
&lt;br /&gt;
w = 5.3; // pulley thickness &lt;br /&gt;
inner = 6; // fixed number (inner radius non-overlapping with the servo&#039;s screw)&lt;br /&gt;
outer = 10; // adjust this number to increase the outer radius&lt;br /&gt;
screw = 1;&lt;br /&gt;
&lt;br /&gt;
module mounts(screw, inner, outer){&lt;br /&gt;
    // module for screw mounts&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                translate([inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
                translate([-inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
            }&lt;br /&gt;
            translate([0,inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
        }&lt;br /&gt;
        translate([0,-inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
module disc(inner, outer){&lt;br /&gt;
    difference(){&lt;br /&gt;
        cylinder(w, outer, outer);&lt;br /&gt;
        cylinder(w, inner/2, inner/2);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
module pully(inner, outer, r, w){&lt;br /&gt;
    difference(){&lt;br /&gt;
        difference(){&lt;br /&gt;
            rotate_extrude(convexity = 10) &lt;br /&gt;
                translate([outer + 2, w/2, 0]) &lt;br /&gt;
                    circle(r);&lt;br /&gt;
            rotate_extrude(convexity = 10) &lt;br /&gt;
                translate([outer + (inner/2), w/2, 0]) &lt;br /&gt;
                    circle(r);&lt;br /&gt;
        }&lt;br /&gt;
        // string hanging point&lt;br /&gt;
        translate([outer+0.5, 0, 0]) cylinder(2*w, screw/2, screw/2); &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
difference(){&lt;br /&gt;
    union(){&lt;br /&gt;
        pully(inner, outer, w/2, w);&lt;br /&gt;
        disc(inner, outer);&lt;br /&gt;
    }&lt;br /&gt;
    mounts(screw, inner, outer);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pulley v2 ==&lt;br /&gt;
&lt;br /&gt;
[[File:Pulley v2.png|thumb]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$fn = 32;&lt;br /&gt;
&lt;br /&gt;
r = 25; // disc radius - outer&lt;br /&gt;
w = 5.3; // disc thickness for XL330 -- adjust for different servo types&lt;br /&gt;
d = 3;  // inner hole radius -- inner&lt;br /&gt;
t = 4;&lt;br /&gt;
h = 1.5; // boundary thickness&lt;br /&gt;
&lt;br /&gt;
rr = 0.8; // d=1.6mm pins on the XL330 servo hornet (inlet)&lt;br /&gt;
ll = 2.5; // l=2.5mm, how deep the inlet travel in the hornet -- 2.5mm&lt;br /&gt;
tt = 2; // t=2mm, global thickness&lt;br /&gt;
inner = 6;&lt;br /&gt;
&lt;br /&gt;
module pins(rr, ll, tt){&lt;br /&gt;
    /* r: radius, l: length, t: thickness */&lt;br /&gt;
    translate([inner,0,0]) cylinder(2*w, rr, rr);&lt;br /&gt;
    translate([-inner,0,0]) cylinder(2*w, rr, rr);&lt;br /&gt;
    translate([0,inner,0]) cylinder(2*w, rr, rr);&lt;br /&gt;
    translate([0,-inner,0]) cylinder(2*w, rr, rr);&lt;br /&gt;
}&lt;br /&gt;
    &lt;br /&gt;
module mounts(screw, inner, outer){&lt;br /&gt;
    // module for screw mounts&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                translate([3*inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
                translate([-3*inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
            }&lt;br /&gt;
            translate([0,3*inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
        }&lt;br /&gt;
        translate([0,-3*inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
module disc(r, w, d, h){&lt;br /&gt;
    difference(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                cylinder(w, r, r);&lt;br /&gt;
                translate([0, 0, w-h]) cylinder(h, r + t, r + t);&lt;br /&gt;
            }&lt;br /&gt;
            translate([0, 0, 0]) cylinder(h, r + t, r + t);&lt;br /&gt;
        }&lt;br /&gt;
        cylinder(w, 3, 3);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
//&lt;br /&gt;
//union(){&lt;br /&gt;
//    disc(r, w, d);&lt;br /&gt;
//    translate([0, 0, w - t]) cylinder(h, r + t, r + t);&lt;br /&gt;
//}&lt;br /&gt;
difference(){&lt;br /&gt;
    difference(){&lt;br /&gt;
        difference(){&lt;br /&gt;
            disc(r, w, d, h);&lt;br /&gt;
    //        mounts(h, d, r);&lt;br /&gt;
            pins(rr, ll, w);&lt;br /&gt;
        }&lt;br /&gt;
        translate([0,0,w/2]) rotate([90,0,0])  cylinder(2*r, 1, 1); // string attachment&lt;br /&gt;
    }&lt;br /&gt;
    translate([0,-1.5*w,w/2]) rotate([0,90,0]) cylinder(2*r, 1, 1); // string attachment&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Other servo accessories =&lt;br /&gt;
&lt;br /&gt;
https://studio.cse.chalmers.se/mediawiki/index.php?title=Servo_accessories&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_pulley&amp;diff=189</id>
		<title>Dynamixel XL330 pulley</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_pulley&amp;diff=189"/>
		<updated>2026-05-21T13:37:51Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Xl330-pulley-rev.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
Code for OpenSCAD: https://openscad.org&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$fn=32;&lt;br /&gt;
&lt;br /&gt;
w = 5.3; // pulley thickness &lt;br /&gt;
inner = 6; // fixed number (inner radius non-overlapping with the servo&#039;s screw)&lt;br /&gt;
outer = 10; // adjust this number to increase the outer radius&lt;br /&gt;
screw = 1;&lt;br /&gt;
&lt;br /&gt;
module mounts(screw, inner, outer){&lt;br /&gt;
    // module for screw mounts&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                translate([inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
                translate([-inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
            }&lt;br /&gt;
            translate([0,inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
        }&lt;br /&gt;
        translate([0,-inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
module disc(inner, outer){&lt;br /&gt;
    difference(){&lt;br /&gt;
        cylinder(w, outer, outer);&lt;br /&gt;
        cylinder(w, inner/2, inner/2);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
module pully(inner, outer, r, w){&lt;br /&gt;
    difference(){&lt;br /&gt;
        difference(){&lt;br /&gt;
            rotate_extrude(convexity = 10) &lt;br /&gt;
                translate([outer + 2, w/2, 0]) &lt;br /&gt;
                    circle(r);&lt;br /&gt;
            rotate_extrude(convexity = 10) &lt;br /&gt;
                translate([outer + (inner/2), w/2, 0]) &lt;br /&gt;
                    circle(r);&lt;br /&gt;
        }&lt;br /&gt;
        // string hanging point&lt;br /&gt;
        translate([outer+0.5, 0, 0]) cylinder(2*w, screw/2, screw/2); &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
difference(){&lt;br /&gt;
    union(){&lt;br /&gt;
        pully(inner, outer, w/2, w);&lt;br /&gt;
        disc(inner, outer);&lt;br /&gt;
    }&lt;br /&gt;
    mounts(screw, inner, outer);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pulley v2 ==&lt;br /&gt;
&lt;br /&gt;
[[File:Pulley v2.png|thumb]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$fn = 32;&lt;br /&gt;
&lt;br /&gt;
r = 25; // disc radius - outer&lt;br /&gt;
w = 8; // disc thickness &lt;br /&gt;
d = 3;  // inner hole radius -- inner&lt;br /&gt;
t = 4;&lt;br /&gt;
h = 2; // boundary thickness&lt;br /&gt;
&lt;br /&gt;
rr = 0.8; // d=1.6mm pins on the XL330 servo hornet (inlet)&lt;br /&gt;
ll = 2.5; // l=2.5mm, how deep the inlet travel in the hornet -- 2.5mm&lt;br /&gt;
tt = 2; // t=2mm, global thickness&lt;br /&gt;
inner = 6;&lt;br /&gt;
&lt;br /&gt;
module pins(rr, ll, tt){&lt;br /&gt;
    /* r: radius, l: length, t: thickness */&lt;br /&gt;
    translate([inner,0,0]) cylinder(2*w, rr, rr);&lt;br /&gt;
    translate([-inner,0,0]) cylinder(2*w, rr, rr);&lt;br /&gt;
    translate([0,inner,0]) cylinder(2*w, rr, rr);&lt;br /&gt;
    translate([0,-inner,0]) cylinder(2*w, rr, rr);&lt;br /&gt;
}&lt;br /&gt;
    &lt;br /&gt;
module mounts(screw, inner, outer){&lt;br /&gt;
    // module for screw mounts&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                translate([3*inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
                translate([-3*inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
            }&lt;br /&gt;
            translate([0,3*inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
        }&lt;br /&gt;
        translate([0,-3*inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
module disc(r, w, d, h){&lt;br /&gt;
    difference(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                cylinder(w, r, r);&lt;br /&gt;
                translate([0, 0, w-h]) cylinder(h, r + t, r + t);&lt;br /&gt;
            }&lt;br /&gt;
            translate([0, 0, 0]) cylinder(h, r + t, r + t);&lt;br /&gt;
        }&lt;br /&gt;
        cylinder(w, 3, 3);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
//&lt;br /&gt;
//union(){&lt;br /&gt;
//    disc(r, w, d);&lt;br /&gt;
//    translate([0, 0, w - t]) cylinder(h, r + t, r + t);&lt;br /&gt;
//}&lt;br /&gt;
difference(){&lt;br /&gt;
    difference(){&lt;br /&gt;
        difference(){&lt;br /&gt;
            disc(r, w, d, h);&lt;br /&gt;
    //        mounts(h, d, r);&lt;br /&gt;
            pins(rr, ll, w);&lt;br /&gt;
        }&lt;br /&gt;
        translate([0,0,w/2]) rotate([90,0,0])  cylinder(2*r, 1, 1); // string attachment&lt;br /&gt;
    }&lt;br /&gt;
    translate([0,-1.5*w,w/2]) rotate([0,90,0]) cylinder(2*r, 1, 1); // string attachment&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Other servo accessories =&lt;br /&gt;
&lt;br /&gt;
https://studio.cse.chalmers.se/mediawiki/index.php?title=Servo_accessories&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=File:Pulley_v2.png&amp;diff=188</id>
		<title>File:Pulley v2.png</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=File:Pulley_v2.png&amp;diff=188"/>
		<updated>2026-05-21T13:37:31Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pulley with string attachment points&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_pulley&amp;diff=187</id>
		<title>Dynamixel XL330 pulley</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_pulley&amp;diff=187"/>
		<updated>2026-05-21T13:36:16Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Xl330-pulley-rev.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
Code for OpenSCAD: https://openscad.org&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$fn=32;&lt;br /&gt;
&lt;br /&gt;
w = 5.3; // pulley thickness &lt;br /&gt;
inner = 6; // fixed number (inner radius non-overlapping with the servo&#039;s screw)&lt;br /&gt;
outer = 10; // adjust this number to increase the outer radius&lt;br /&gt;
screw = 1;&lt;br /&gt;
&lt;br /&gt;
module mounts(screw, inner, outer){&lt;br /&gt;
    // module for screw mounts&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                translate([inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
                translate([-inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
            }&lt;br /&gt;
            translate([0,inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
        }&lt;br /&gt;
        translate([0,-inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
module disc(inner, outer){&lt;br /&gt;
    difference(){&lt;br /&gt;
        cylinder(w, outer, outer);&lt;br /&gt;
        cylinder(w, inner/2, inner/2);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
module pully(inner, outer, r, w){&lt;br /&gt;
    difference(){&lt;br /&gt;
        difference(){&lt;br /&gt;
            rotate_extrude(convexity = 10) &lt;br /&gt;
                translate([outer + 2, w/2, 0]) &lt;br /&gt;
                    circle(r);&lt;br /&gt;
            rotate_extrude(convexity = 10) &lt;br /&gt;
                translate([outer + (inner/2), w/2, 0]) &lt;br /&gt;
                    circle(r);&lt;br /&gt;
        }&lt;br /&gt;
        // string hanging point&lt;br /&gt;
        translate([outer+0.5, 0, 0]) cylinder(2*w, screw/2, screw/2); &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
difference(){&lt;br /&gt;
    union(){&lt;br /&gt;
        pully(inner, outer, w/2, w);&lt;br /&gt;
        disc(inner, outer);&lt;br /&gt;
    }&lt;br /&gt;
    mounts(screw, inner, outer);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Pulley v2 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$fn = 32;&lt;br /&gt;
&lt;br /&gt;
r = 25; // disc radius - outer&lt;br /&gt;
w = 8; // disc thickness &lt;br /&gt;
d = 3;  // inner hole radius -- inner&lt;br /&gt;
t = 4;&lt;br /&gt;
h = 2; // boundary thickness&lt;br /&gt;
&lt;br /&gt;
rr = 0.8; // d=1.6mm pins on the XL330 servo hornet (inlet)&lt;br /&gt;
ll = 2.5; // l=2.5mm, how deep the inlet travel in the hornet -- 2.5mm&lt;br /&gt;
tt = 2; // t=2mm, global thickness&lt;br /&gt;
inner = 6;&lt;br /&gt;
&lt;br /&gt;
module pins(rr, ll, tt){&lt;br /&gt;
    /* r: radius, l: length, t: thickness */&lt;br /&gt;
    translate([inner,0,0]) cylinder(2*w, rr, rr);&lt;br /&gt;
    translate([-inner,0,0]) cylinder(2*w, rr, rr);&lt;br /&gt;
    translate([0,inner,0]) cylinder(2*w, rr, rr);&lt;br /&gt;
    translate([0,-inner,0]) cylinder(2*w, rr, rr);&lt;br /&gt;
}&lt;br /&gt;
    &lt;br /&gt;
module mounts(screw, inner, outer){&lt;br /&gt;
    // module for screw mounts&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                translate([3*inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
                translate([-3*inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
            }&lt;br /&gt;
            translate([0,3*inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
        }&lt;br /&gt;
        translate([0,-3*inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
module disc(r, w, d, h){&lt;br /&gt;
    difference(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                cylinder(w, r, r);&lt;br /&gt;
                translate([0, 0, w-h]) cylinder(h, r + t, r + t);&lt;br /&gt;
            }&lt;br /&gt;
            translate([0, 0, 0]) cylinder(h, r + t, r + t);&lt;br /&gt;
        }&lt;br /&gt;
        cylinder(w, 3, 3);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
//&lt;br /&gt;
//union(){&lt;br /&gt;
//    disc(r, w, d);&lt;br /&gt;
//    translate([0, 0, w - t]) cylinder(h, r + t, r + t);&lt;br /&gt;
//}&lt;br /&gt;
difference(){&lt;br /&gt;
    difference(){&lt;br /&gt;
        difference(){&lt;br /&gt;
            disc(r, w, d, h);&lt;br /&gt;
    //        mounts(h, d, r);&lt;br /&gt;
            pins(rr, ll, w);&lt;br /&gt;
        }&lt;br /&gt;
        translate([0,0,w/2]) rotate([90,0,0])  cylinder(2*r, 1, 1); // string attachment&lt;br /&gt;
    }&lt;br /&gt;
    translate([0,-1.5*w,w/2]) rotate([0,90,0]) cylinder(2*r, 1, 1); // string attachment&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Other servo accessories =&lt;br /&gt;
&lt;br /&gt;
https://studio.cse.chalmers.se/mediawiki/index.php?title=Servo_accessories&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Main_Page&amp;diff=186</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Main_Page&amp;diff=186"/>
		<updated>2026-05-14T09:04:44Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: /* Useful Documents */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== IxD Studio Equipment ==&lt;br /&gt;
&lt;br /&gt;
The wiki mostly serves as technical support and inquiry for available equipment related to:&lt;br /&gt;
&lt;br /&gt;
* [[3D printing]]&lt;br /&gt;
* [[Electronics]]&lt;br /&gt;
* [[Laser cutting]]&lt;br /&gt;
* [[Printers]]&lt;br /&gt;
&amp;lt;!-- [[Wood workshop]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Useful Documents ==&lt;br /&gt;
&lt;br /&gt;
* [[3D printing models]]&lt;br /&gt;
* [[Studio internal]]&lt;br /&gt;
&lt;br /&gt;
== Useful Software ==&lt;br /&gt;
&lt;br /&gt;
* [[CAD]]&lt;br /&gt;
* [[Programming]]&lt;br /&gt;
* [[Simulators]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_pulley&amp;diff=185</id>
		<title>Dynamixel XL330 pulley</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_pulley&amp;diff=185"/>
		<updated>2026-05-14T09:04:30Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Xl330-pulley-rev.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
Code for OpenSCAD: https://openscad.org&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$fn=32;&lt;br /&gt;
&lt;br /&gt;
w = 5.3; // pulley thickness &lt;br /&gt;
inner = 6; // fixed number (inner radius non-overlapping with the servo&#039;s screw)&lt;br /&gt;
outer = 10; // adjust this number to increase the outer radius&lt;br /&gt;
screw = 1;&lt;br /&gt;
&lt;br /&gt;
module mounts(screw, inner, outer){&lt;br /&gt;
    // module for screw mounts&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                translate([inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
                translate([-inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
            }&lt;br /&gt;
            translate([0,inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
        }&lt;br /&gt;
        translate([0,-inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
module disc(inner, outer){&lt;br /&gt;
    difference(){&lt;br /&gt;
        cylinder(w, outer, outer);&lt;br /&gt;
        cylinder(w, inner/2, inner/2);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
module pully(inner, outer, r, w){&lt;br /&gt;
    difference(){&lt;br /&gt;
        difference(){&lt;br /&gt;
            rotate_extrude(convexity = 10) &lt;br /&gt;
                translate([outer + 2, w/2, 0]) &lt;br /&gt;
                    circle(r);&lt;br /&gt;
            rotate_extrude(convexity = 10) &lt;br /&gt;
                translate([outer + (inner/2), w/2, 0]) &lt;br /&gt;
                    circle(r);&lt;br /&gt;
        }&lt;br /&gt;
        // string hanging point&lt;br /&gt;
        translate([outer+0.5, 0, 0]) cylinder(2*w, screw/2, screw/2); &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
difference(){&lt;br /&gt;
    union(){&lt;br /&gt;
        pully(inner, outer, w/2, w);&lt;br /&gt;
        disc(inner, outer);&lt;br /&gt;
    }&lt;br /&gt;
    mounts(screw, inner, outer);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Other servo accessories ==&lt;br /&gt;
&lt;br /&gt;
https://studio.cse.chalmers.se/mediawiki/index.php?title=Servo_accessories&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_pulley&amp;diff=184</id>
		<title>Dynamixel XL330 pulley</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_pulley&amp;diff=184"/>
		<updated>2026-05-14T09:02:51Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Xl330-pulley-rev.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$fn=32;&lt;br /&gt;
&lt;br /&gt;
w = 5.3; // pulley thickness &lt;br /&gt;
inner = 6; // fixed number (inner radius non-overlapping with the servo&#039;s screw)&lt;br /&gt;
outer = 10; // adjust this number to increase the outer radius&lt;br /&gt;
screw = 1;&lt;br /&gt;
&lt;br /&gt;
module mounts(screw, inner, outer){&lt;br /&gt;
    // module for screw mounts&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                translate([inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
                translate([-inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
            }&lt;br /&gt;
            translate([0,inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
        }&lt;br /&gt;
        translate([0,-inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
module disc(inner, outer){&lt;br /&gt;
    difference(){&lt;br /&gt;
        cylinder(w, outer, outer);&lt;br /&gt;
        cylinder(w, inner/2, inner/2);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
module pully(inner, outer, r, w){&lt;br /&gt;
    difference(){&lt;br /&gt;
        difference(){&lt;br /&gt;
            rotate_extrude(convexity = 10) &lt;br /&gt;
                translate([outer + 2, w/2, 0]) &lt;br /&gt;
                    circle(r);&lt;br /&gt;
            rotate_extrude(convexity = 10) &lt;br /&gt;
                translate([outer + (inner/2), w/2, 0]) &lt;br /&gt;
                    circle(r);&lt;br /&gt;
        }&lt;br /&gt;
        // string hanging point&lt;br /&gt;
        translate([outer+0.5, 0, 0]) cylinder(2*w, screw/2, screw/2); &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
difference(){&lt;br /&gt;
    union(){&lt;br /&gt;
        pully(inner, outer, w/2, w);&lt;br /&gt;
        disc(inner, outer);&lt;br /&gt;
    }&lt;br /&gt;
    mounts(screw, inner, outer);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Other servo accessories ==&lt;br /&gt;
&lt;br /&gt;
https://studio.cse.chalmers.se/mediawiki/index.php?title=Servo_accessories&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_pulley&amp;diff=183</id>
		<title>Dynamixel XL330 pulley</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_pulley&amp;diff=183"/>
		<updated>2026-05-13T11:31:30Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Xl330-pulley-rev.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$fn=32;&lt;br /&gt;
&lt;br /&gt;
w = 5.3; // pulley thickness &lt;br /&gt;
inner = 6; // fixed number (inner radius non-overlapping with the servo&#039;s screw)&lt;br /&gt;
outer = 10; // adjust this number to increase the outer radius&lt;br /&gt;
screw = 1;&lt;br /&gt;
&lt;br /&gt;
module mounts(screw, inner, outer){&lt;br /&gt;
    // module for screw mounts&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                translate([inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
                translate([-inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
            }&lt;br /&gt;
            translate([0,inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
        }&lt;br /&gt;
        translate([0,-inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
module disc(inner, outer){&lt;br /&gt;
    difference(){&lt;br /&gt;
        cylinder(w, outer, outer);&lt;br /&gt;
        cylinder(w, inner/2, inner/2);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
module pully(inner, outer, r, w){&lt;br /&gt;
    difference(){&lt;br /&gt;
        difference(){&lt;br /&gt;
            rotate_extrude(convexity = 10) &lt;br /&gt;
                translate([outer + 2, w/2, 0]) &lt;br /&gt;
                    circle(r);&lt;br /&gt;
            rotate_extrude(convexity = 10) &lt;br /&gt;
                translate([outer + (inner/2), w/2, 0]) &lt;br /&gt;
                    circle(r);&lt;br /&gt;
        }&lt;br /&gt;
        // string hanging point&lt;br /&gt;
        translate([outer+0.5, 0, 0]) cylinder(2*w, screw/2, screw/2); &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
difference(){&lt;br /&gt;
    union(){&lt;br /&gt;
        pully(inner, outer, w/2, w);&lt;br /&gt;
        disc(inner, outer);&lt;br /&gt;
    }&lt;br /&gt;
    mounts(screw, inner, outer);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=File:Xl330-pulley-rev.png&amp;diff=182</id>
		<title>File:Xl330-pulley-rev.png</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=File:Xl330-pulley-rev.png&amp;diff=182"/>
		<updated>2026-05-13T11:31:19Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XL330 pulley design&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_pulley&amp;diff=181</id>
		<title>Dynamixel XL330 pulley</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_pulley&amp;diff=181"/>
		<updated>2026-05-13T11:30:03Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Xl330-pulley.png|thumb]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$fn=32;&lt;br /&gt;
&lt;br /&gt;
w = 5.3; // pulley thickness &lt;br /&gt;
inner = 6; // fixed number (inner radius non-overlapping with the servo&#039;s screw)&lt;br /&gt;
outer = 10; // adjust this number to increase the outer radius&lt;br /&gt;
screw = 1;&lt;br /&gt;
&lt;br /&gt;
module mounts(screw, inner, outer){&lt;br /&gt;
    // module for screw mounts&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                translate([inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
                translate([-inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
            }&lt;br /&gt;
            translate([0,inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
        }&lt;br /&gt;
        translate([0,-inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
module disc(inner, outer){&lt;br /&gt;
    difference(){&lt;br /&gt;
        cylinder(w, outer, outer);&lt;br /&gt;
        cylinder(w, inner/2, inner/2);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
module pully(inner, outer, r, w){&lt;br /&gt;
    difference(){&lt;br /&gt;
        difference(){&lt;br /&gt;
            rotate_extrude(convexity = 10) &lt;br /&gt;
                translate([outer + 2, w/2, 0]) &lt;br /&gt;
                    circle(r);&lt;br /&gt;
            rotate_extrude(convexity = 10) &lt;br /&gt;
                translate([outer + (inner/2), w/2, 0]) &lt;br /&gt;
                    circle(r);&lt;br /&gt;
        }&lt;br /&gt;
        // string hanging point&lt;br /&gt;
        translate([outer+0.5, 0, 0]) cylinder(2*w, screw/2, screw/2); &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
difference(){&lt;br /&gt;
    union(){&lt;br /&gt;
        pully(inner, outer, w/2, w);&lt;br /&gt;
        disc(inner, outer);&lt;br /&gt;
    }&lt;br /&gt;
    mounts(screw, inner, outer);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_pulley&amp;diff=180</id>
		<title>Dynamixel XL330 pulley</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_pulley&amp;diff=180"/>
		<updated>2026-05-13T11:29:13Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Xl330-pulley.png|thumb]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$fn=32;&lt;br /&gt;
&lt;br /&gt;
w = 5.3; // pulley thickness &lt;br /&gt;
inner = 6; // fixed number (inner radius non-overlapping with the servo&#039;s screw)&lt;br /&gt;
outer = 10; // adjust this number to increase the outer radius&lt;br /&gt;
screw = 1;&lt;br /&gt;
&lt;br /&gt;
module mounts(screw, inner, outer){&lt;br /&gt;
    // module for screw mounts&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                translate([inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
                translate([-inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
            }&lt;br /&gt;
            translate([0,inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
        }&lt;br /&gt;
        translate([0,-inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
module disc(inner, outer){&lt;br /&gt;
    difference(){&lt;br /&gt;
        cylinder(w, outer, outer);&lt;br /&gt;
        cylinder(w, inner/2, inner/2);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
module pully(inner, outer, r, w){&lt;br /&gt;
    difference(){&lt;br /&gt;
        difference(){&lt;br /&gt;
            rotate_extrude(convexity = 10) &lt;br /&gt;
                translate([outer + 2, w/2, 0]) &lt;br /&gt;
                    circle(r);&lt;br /&gt;
            rotate_extrude(convexity = 10) &lt;br /&gt;
                translate([outer + (inner/2), w/2, 0]) &lt;br /&gt;
                    circle(r);&lt;br /&gt;
        }&lt;br /&gt;
        translate([outer+0.5, 0, 0]) cylinder(2*w, screw/2, screw/2); &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
difference(){&lt;br /&gt;
    union(){&lt;br /&gt;
        pully(inner, outer, w/2, w);&lt;br /&gt;
        disc(inner, outer);&lt;br /&gt;
    }&lt;br /&gt;
    mounts(screw, inner, outer);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_pulley&amp;diff=179</id>
		<title>Dynamixel XL330 pulley</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_pulley&amp;diff=179"/>
		<updated>2026-05-13T11:26:57Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Xl330-pulley.png|thumb]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$fn=32;&lt;br /&gt;
&lt;br /&gt;
w = 5.3; // cog thickness &lt;br /&gt;
inner = 6; // fixed number (inner radius non-overlapping with the servo&#039;s screw)&lt;br /&gt;
outer = 10; // adjust this number to increase the outer radius&lt;br /&gt;
screw = 1;&lt;br /&gt;
&lt;br /&gt;
module mounts(screw, inner, outer){&lt;br /&gt;
    // module for screw mounts&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                translate([inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
                translate([-inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
            }&lt;br /&gt;
            translate([0,inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
        }&lt;br /&gt;
        translate([0,-inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
module disc(inner, outer){&lt;br /&gt;
    // disc to &#039;cover&#039; the gear library holes in your design&lt;br /&gt;
    difference(){&lt;br /&gt;
        cylinder(w, outer, outer);&lt;br /&gt;
        cylinder(w, inner/2, inner/2);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
module pully(inner, outer, r, w){&lt;br /&gt;
    difference(){&lt;br /&gt;
        difference(){&lt;br /&gt;
            rotate_extrude(convexity = 10) &lt;br /&gt;
                translate([outer + 2, w/2, 0]) &lt;br /&gt;
                    circle(r);&lt;br /&gt;
            rotate_extrude(convexity = 10) &lt;br /&gt;
                translate([outer + (inner/2), w/2, 0]) &lt;br /&gt;
                    circle(r);&lt;br /&gt;
        }&lt;br /&gt;
        translate([outer+0.5, 0, 2]) cylinder(10, 0.5, 0.5); &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
difference(){&lt;br /&gt;
    union(){&lt;br /&gt;
        pully(inner, outer, w/2, w);&lt;br /&gt;
        disc(inner, outer);&lt;br /&gt;
    }&lt;br /&gt;
    mounts(screw, inner, outer);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_pulley&amp;diff=178</id>
		<title>Dynamixel XL330 pulley</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_pulley&amp;diff=178"/>
		<updated>2026-05-13T08:46:07Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Xl330-pulley.png|thumb]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$fn=32;&lt;br /&gt;
&lt;br /&gt;
w = 5.3; // cog thickness &lt;br /&gt;
inner = 6; // fixed number&lt;br /&gt;
outer = 10; // adjust this number to the edge of the teeth so that it &#039;hides&#039; the holes&lt;br /&gt;
screw = 1;&lt;br /&gt;
&lt;br /&gt;
module mounts(screw, inner, outer){&lt;br /&gt;
    // module for screw mounts&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                translate([inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
                translate([-inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
            }&lt;br /&gt;
            translate([0,inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
        }&lt;br /&gt;
        translate([0,-inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
module disc(inner, outer){&lt;br /&gt;
    // disc to &#039;cover&#039; the gear library holes in your design&lt;br /&gt;
    difference(){&lt;br /&gt;
        cylinder(w, outer, outer);&lt;br /&gt;
        cylinder(w, inner/2, inner/2);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
module pully(inner, outer, r, w){&lt;br /&gt;
    difference(){&lt;br /&gt;
        difference(){&lt;br /&gt;
            rotate_extrude(convexity = 10) &lt;br /&gt;
                translate([outer + 2, w/2, 0]) &lt;br /&gt;
                    circle(r);&lt;br /&gt;
            rotate_extrude(convexity = 10) &lt;br /&gt;
                translate([outer + (inner/2), w/2, 0]) &lt;br /&gt;
                    circle(r);&lt;br /&gt;
        }&lt;br /&gt;
        translate([outer+0.5, 0, 2]) cylinder(10, 0.5, 0.5); &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
difference(){&lt;br /&gt;
    union(){&lt;br /&gt;
        pully(inner, outer, w/2, w);&lt;br /&gt;
        disc(inner, outer);&lt;br /&gt;
    }&lt;br /&gt;
    mounts(screw, inner, outer);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_pulley&amp;diff=177</id>
		<title>Dynamixel XL330 pulley</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_pulley&amp;diff=177"/>
		<updated>2026-05-13T08:40:15Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: Created page with &amp;quot;thumb &amp;lt;pre&amp;gt; use &amp;lt;gears/gears.scad&amp;gt;; // or include --&amp;gt; include &amp;lt;gears/gears.scad&amp;gt;;  $fn=32; //spur_gear(modul=2, tooth_number=20, width=10, bore=10); w = 5.3; // cog thickness  teeth = 24; // adjust number of teeth based on design inner = 6; // fixed number outer = 10; // adjust this number to the edge of the teeth so that it &amp;#039;hides&amp;#039; the holes screw = 1;  module mounts(screw, inner, outer){     // module for screw mounts     union(){         unio...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Xl330-pulley.png|thumb]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use &amp;lt;gears/gears.scad&amp;gt;;&lt;br /&gt;
// or include --&amp;gt; include &amp;lt;gears/gears.scad&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
$fn=32;&lt;br /&gt;
//spur_gear(modul=2, tooth_number=20, width=10, bore=10);&lt;br /&gt;
w = 5.3; // cog thickness &lt;br /&gt;
teeth = 24; // adjust number of teeth based on design&lt;br /&gt;
inner = 6; // fixed number&lt;br /&gt;
outer = 10; // adjust this number to the edge of the teeth so that it &#039;hides&#039; the holes&lt;br /&gt;
screw = 1;&lt;br /&gt;
&lt;br /&gt;
module mounts(screw, inner, outer){&lt;br /&gt;
    // module for screw mounts&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                translate([inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
                translate([-inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
            }&lt;br /&gt;
            translate([0,inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
        }&lt;br /&gt;
        translate([0,-inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
module disc(inner, outer){&lt;br /&gt;
    // disc to &#039;cover&#039; the gear library holes in your design&lt;br /&gt;
    difference(){&lt;br /&gt;
        cylinder(w, outer, outer);&lt;br /&gt;
        cylinder(w, inner/2, inner/2);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
module pully(inner, outer, r, w){&lt;br /&gt;
    difference(){&lt;br /&gt;
        difference(){&lt;br /&gt;
            rotate_extrude(convexity = 10) &lt;br /&gt;
                translate([outer + 2, w/2, 0]) &lt;br /&gt;
                    circle(r);&lt;br /&gt;
            rotate_extrude(convexity = 10) &lt;br /&gt;
                translate([outer + (inner/2), w/2, 0]) &lt;br /&gt;
                    circle(r);&lt;br /&gt;
        }&lt;br /&gt;
        translate([outer+0.5, 0, 2]) cylinder(10, 0.5, 0.5); &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
difference(){&lt;br /&gt;
    union(){&lt;br /&gt;
        pully(inner, outer, w/2, w);&lt;br /&gt;
        disc(inner, outer);&lt;br /&gt;
    }&lt;br /&gt;
    mounts(screw, inner, outer);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=File:Xl330-pulley.png&amp;diff=176</id>
		<title>File:Xl330-pulley.png</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=File:Xl330-pulley.png&amp;diff=176"/>
		<updated>2026-05-13T08:40:03Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XL330 pulley&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Servo_accessories&amp;diff=175</id>
		<title>Servo accessories</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Servo_accessories&amp;diff=175"/>
		<updated>2026-05-13T08:38:41Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[Dynamixel XL330 horns]]&lt;br /&gt;
* [[Dynamixel XL330 mounts]]&lt;br /&gt;
* [[Dynamixel XL330 cogs]]&lt;br /&gt;
* [[Dynamixel XL330 pulley]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Simulators&amp;diff=174</id>
		<title>Simulators</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Simulators&amp;diff=174"/>
		<updated>2026-05-10T10:46:30Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Circuit Simulators ==&lt;br /&gt;
&lt;br /&gt;
* [[WOKWI]]&lt;br /&gt;
* https://www.falstad.com/circuit/&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Simulators&amp;diff=173</id>
		<title>Simulators</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Simulators&amp;diff=173"/>
		<updated>2026-05-10T10:46:05Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Circuit Simulators&lt;br /&gt;
&lt;br /&gt;
* [[WOKWI]]&lt;br /&gt;
* https://www.falstad.com/circuit/&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_cogs&amp;diff=172</id>
		<title>Dynamixel XL330 cogs</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_cogs&amp;diff=172"/>
		<updated>2026-05-07T12:26:09Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Download this OpenSCAD Library: https://github.com/chrisspen/gears&lt;br /&gt;
&lt;br /&gt;
- How to install Libraries in OpenSCAD: https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Libraries&lt;br /&gt;
&lt;br /&gt;
XL 330 manual: https://emanual.robotis.com/docs/en/dxl/x/xl330-m288/&lt;br /&gt;
&lt;br /&gt;
Example cog for XL330:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use &amp;lt;gears/gears.scad&amp;gt;;&lt;br /&gt;
// or include --&amp;gt; include &amp;lt;gears/gears.scad&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
$fn=32;&lt;br /&gt;
&lt;br /&gt;
w = 5.3; // cog thickness -- good size for the large screws included in the XL330&lt;br /&gt;
teeth = 24; // adjust number of teeth based on design&lt;br /&gt;
inner = 6; // fixed number&lt;br /&gt;
outer = 10; // adjust this number to the edge of the teeth so that it &#039;hides&#039; the holes&lt;br /&gt;
screw = 1;&lt;br /&gt;
&lt;br /&gt;
module mounts(screw, inner, outer){&lt;br /&gt;
    // module for screw mounts&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                translate([inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
                translate([-inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
            }&lt;br /&gt;
            translate([0,inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
        }&lt;br /&gt;
        translate([0,-inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
module disc(inner, outer){&lt;br /&gt;
    // disc to &#039;cover&#039; the gear library holes in your design&lt;br /&gt;
    difference(){&lt;br /&gt;
        cylinder(w, outer, outer);&lt;br /&gt;
        cylinder(w, inner/2, inner/2);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
difference(){&lt;br /&gt;
    union(){&lt;br /&gt;
        spur_gear(modul=1, tooth_number=teeth, width=w, bore=inner);&lt;br /&gt;
        disc(inner, outer);&lt;br /&gt;
    }&lt;br /&gt;
    mounts(screw, inner, outer);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:XL330-cog.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other XL330 servo accessories == &lt;br /&gt;
&lt;br /&gt;
https://studio.cse.chalmers.se/mediawiki/index.php?title=Servo_accessories&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_cogs&amp;diff=171</id>
		<title>Dynamixel XL330 cogs</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_cogs&amp;diff=171"/>
		<updated>2026-05-07T11:41:04Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Download this OpenSCAD Library: https://github.com/chrisspen/gears&lt;br /&gt;
&lt;br /&gt;
- How to install Libraries in OpenSCAD: https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Libraries&lt;br /&gt;
&lt;br /&gt;
Example cog for XL330:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use &amp;lt;gears/gears.scad&amp;gt;;&lt;br /&gt;
// or include --&amp;gt; include &amp;lt;gears/gears.scad&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
$fn=32;&lt;br /&gt;
&lt;br /&gt;
w = 5.3; // cog thickness -- good size for the large screws included in the XL330&lt;br /&gt;
teeth = 24; // adjust number of teeth based on design&lt;br /&gt;
inner = 6; // fixed number&lt;br /&gt;
outer = 10; // adjust this number to the edge of the teeth so that it &#039;hides&#039; the holes&lt;br /&gt;
screw = 1;&lt;br /&gt;
&lt;br /&gt;
module mounts(screw, inner, outer){&lt;br /&gt;
    // module for screw mounts&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                translate([inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
                translate([-inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
            }&lt;br /&gt;
            translate([0,inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
        }&lt;br /&gt;
        translate([0,-inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
module disc(inner, outer){&lt;br /&gt;
    // disc to &#039;cover&#039; the gear library holes in your design&lt;br /&gt;
    difference(){&lt;br /&gt;
        cylinder(w, outer, outer);&lt;br /&gt;
        cylinder(w, inner/2, inner/2);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
difference(){&lt;br /&gt;
    union(){&lt;br /&gt;
        spur_gear(modul=1, tooth_number=teeth, width=w, bore=inner);&lt;br /&gt;
        disc(inner, outer);&lt;br /&gt;
    }&lt;br /&gt;
    mounts(screw, inner, outer);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:XL330-cog.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other XL330 servo accessories == &lt;br /&gt;
&lt;br /&gt;
https://studio.cse.chalmers.se/mediawiki/index.php?title=Servo_accessories&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_cogs&amp;diff=170</id>
		<title>Dynamixel XL330 cogs</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_cogs&amp;diff=170"/>
		<updated>2026-05-07T11:40:26Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Download this OpenSCAD Library: https://github.com/chrisspen/gears&lt;br /&gt;
&lt;br /&gt;
- How to install Libraries in OpenSCAD: https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Libraries&lt;br /&gt;
&lt;br /&gt;
Example cog for XL330:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use &amp;lt;gears/gears.scad&amp;gt;;&lt;br /&gt;
// or include --&amp;gt; include &amp;lt;gears/gears.scad&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
$fn=32;&lt;br /&gt;
//spur_gear(modul=2, tooth_number=20, width=10, bore=10);&lt;br /&gt;
w = 5.3; // cog thickness &lt;br /&gt;
teeth = 24; // adjust number of teeth based on design&lt;br /&gt;
inner = 6; // fixed number&lt;br /&gt;
outer = 10; // adjust this number to the edge of the teeth so that it &#039;hides&#039; the holes&lt;br /&gt;
screw = 1;&lt;br /&gt;
&lt;br /&gt;
module mounts(screw, inner, outer){&lt;br /&gt;
    // module for screw mounts&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                translate([inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
                translate([-inner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
            }&lt;br /&gt;
            translate([0,inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
        }&lt;br /&gt;
        translate([0,-inner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
module disc(inner, outer){&lt;br /&gt;
    // disc to &#039;cover&#039; the gear library holes in your design&lt;br /&gt;
    difference(){&lt;br /&gt;
        cylinder(w, outer, outer);&lt;br /&gt;
        cylinder(w, inner/2, inner/2);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
difference(){&lt;br /&gt;
    union(){&lt;br /&gt;
        spur_gear(modul=1, tooth_number=teeth, width=w, bore=inner);&lt;br /&gt;
        disc(inner, outer);&lt;br /&gt;
    }&lt;br /&gt;
    mounts(screw, inner, outer);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:XL330-cog.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other XL330 servo accessories == &lt;br /&gt;
&lt;br /&gt;
https://studio.cse.chalmers.se/mediawiki/index.php?title=Servo_accessories&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_cogs&amp;diff=169</id>
		<title>Dynamixel XL330 cogs</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_cogs&amp;diff=169"/>
		<updated>2026-05-07T10:38:11Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Download this OpenSCAD Library: https://github.com/chrisspen/gears&lt;br /&gt;
&lt;br /&gt;
- How to install Libraries in OpenSCAD: https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Libraries&lt;br /&gt;
&lt;br /&gt;
Example cog for XL330:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use &amp;lt;gears/gears.scad&amp;gt;;&lt;br /&gt;
// or: include &amp;lt;gears/gears.scad&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$fn=32;&lt;br /&gt;
//spur_gear(modul=2, tooth_number=20, width=10, bore=10);&lt;br /&gt;
w = 5.3; // cog thickness &lt;br /&gt;
teeth = 24;&lt;br /&gt;
innner = 6;&lt;br /&gt;
outer = 10;&lt;br /&gt;
screw = 1;&lt;br /&gt;
&lt;br /&gt;
difference(){&lt;br /&gt;
    difference(){&lt;br /&gt;
        difference(){&lt;br /&gt;
            difference(){&lt;br /&gt;
                union(){&lt;br /&gt;
                    difference(){&lt;br /&gt;
                        cylinder(w, outer, outer);&lt;br /&gt;
                        cylinder(w, 3, 3);&lt;br /&gt;
                    }&lt;br /&gt;
                    spur_gear(modul=1, tooth_number=teeth, width=w, bore=innner);&lt;br /&gt;
                }&lt;br /&gt;
                translate([innner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
                }&lt;br /&gt;
            translate([-innner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
            }&lt;br /&gt;
        translate([0,innner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
        }&lt;br /&gt;
    translate([0,-innner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:XL330-cog.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other XL330 servo accessories == &lt;br /&gt;
&lt;br /&gt;
https://studio.cse.chalmers.se/mediawiki/index.php?title=Servo_accessories&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_cogs&amp;diff=168</id>
		<title>Dynamixel XL330 cogs</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_cogs&amp;diff=168"/>
		<updated>2026-05-07T09:34:48Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Download this OpenSCAD Library: https://github.com/chrisspen/gears&lt;br /&gt;
&lt;br /&gt;
- How to install Libraries in OpenSCAD: https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Libraries&lt;br /&gt;
&lt;br /&gt;
Example cog for XL330:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use &amp;lt;gears/gears.scad&amp;gt;;&lt;br /&gt;
// or: include &amp;lt;gears/gears.scad&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$fn=32;&lt;br /&gt;
//spur_gear(modul=2, tooth_number=20, width=10, bore=10);&lt;br /&gt;
w = 5.3; // cog thickness &lt;br /&gt;
teeth = 24;&lt;br /&gt;
innner = 6;&lt;br /&gt;
outer = 10;&lt;br /&gt;
screw = 1;&lt;br /&gt;
&lt;br /&gt;
difference(){&lt;br /&gt;
    difference(){&lt;br /&gt;
        difference(){&lt;br /&gt;
            difference(){&lt;br /&gt;
                union(){&lt;br /&gt;
                    difference(){&lt;br /&gt;
                        cylinder(w, outer, outer);&lt;br /&gt;
                        cylinder(w, 3, 3);&lt;br /&gt;
                    }&lt;br /&gt;
                    spur_gear(modul=1, tooth_number=teeth, width=w, bore=innner);&lt;br /&gt;
                }&lt;br /&gt;
                translate([innner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
                }&lt;br /&gt;
            translate([-innner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
            }&lt;br /&gt;
        translate([0,innner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
        }&lt;br /&gt;
    translate([0,-innner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:XL330-cog.png|thumb]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_cogs&amp;diff=167</id>
		<title>Dynamixel XL330 cogs</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_cogs&amp;diff=167"/>
		<updated>2026-05-07T09:34:41Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Download this OpenSCAD Library: https://github.com/chrisspen/gears&lt;br /&gt;
- How to install Libraries in OpenSCAD: https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Libraries&lt;br /&gt;
&lt;br /&gt;
Example cog for XL330:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use &amp;lt;gears/gears.scad&amp;gt;;&lt;br /&gt;
// or: include &amp;lt;gears/gears.scad&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$fn=32;&lt;br /&gt;
//spur_gear(modul=2, tooth_number=20, width=10, bore=10);&lt;br /&gt;
w = 5.3; // cog thickness &lt;br /&gt;
teeth = 24;&lt;br /&gt;
innner = 6;&lt;br /&gt;
outer = 10;&lt;br /&gt;
screw = 1;&lt;br /&gt;
&lt;br /&gt;
difference(){&lt;br /&gt;
    difference(){&lt;br /&gt;
        difference(){&lt;br /&gt;
            difference(){&lt;br /&gt;
                union(){&lt;br /&gt;
                    difference(){&lt;br /&gt;
                        cylinder(w, outer, outer);&lt;br /&gt;
                        cylinder(w, 3, 3);&lt;br /&gt;
                    }&lt;br /&gt;
                    spur_gear(modul=1, tooth_number=teeth, width=w, bore=innner);&lt;br /&gt;
                }&lt;br /&gt;
                translate([innner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
                }&lt;br /&gt;
            translate([-innner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
            }&lt;br /&gt;
        translate([0,innner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
        }&lt;br /&gt;
    translate([0,-innner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:XL330-cog.png|thumb]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_cogs&amp;diff=166</id>
		<title>Dynamixel XL330 cogs</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_cogs&amp;diff=166"/>
		<updated>2026-05-07T09:22:57Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: Created page with &amp;quot;Download this OpenSCAD Library: https://github.com/chrisspen/gears  Example cog for XL330: &amp;lt;pre&amp;gt; use &amp;lt;gears/gears.scad&amp;gt;; // or: include &amp;lt;gears/gears.scad&amp;gt;  $fn=32; //spur_gear(modul=2, tooth_number=20, width=10, bore=10); w = 5.3; // cog thickness  teeth = 24; innner = 6; outer = 10; screw = 1;  difference(){     difference(){         difference(){             difference(){                 union(){                     difference(){                         cylinder(w, out...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Download this OpenSCAD Library: https://github.com/chrisspen/gears&lt;br /&gt;
&lt;br /&gt;
Example cog for XL330:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
use &amp;lt;gears/gears.scad&amp;gt;;&lt;br /&gt;
// or: include &amp;lt;gears/gears.scad&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$fn=32;&lt;br /&gt;
//spur_gear(modul=2, tooth_number=20, width=10, bore=10);&lt;br /&gt;
w = 5.3; // cog thickness &lt;br /&gt;
teeth = 24;&lt;br /&gt;
innner = 6;&lt;br /&gt;
outer = 10;&lt;br /&gt;
screw = 1;&lt;br /&gt;
&lt;br /&gt;
difference(){&lt;br /&gt;
    difference(){&lt;br /&gt;
        difference(){&lt;br /&gt;
            difference(){&lt;br /&gt;
                union(){&lt;br /&gt;
                    difference(){&lt;br /&gt;
                        cylinder(w, outer, outer);&lt;br /&gt;
                        cylinder(w, 3, 3);&lt;br /&gt;
                    }&lt;br /&gt;
                    spur_gear(modul=1, tooth_number=teeth, width=w, bore=innner);&lt;br /&gt;
                }&lt;br /&gt;
                translate([innner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
                }&lt;br /&gt;
            translate([-innner,0,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
            }&lt;br /&gt;
        translate([0,innner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
        }&lt;br /&gt;
    translate([0,-innner,-2]) cylinder(outer, screw, screw);&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:XL330-cog.png|thumb]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=File:XL330-cog.png&amp;diff=165</id>
		<title>File:XL330-cog.png</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=File:XL330-cog.png&amp;diff=165"/>
		<updated>2026-05-07T09:22:42Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;servo cog&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Servo_accessories&amp;diff=164</id>
		<title>Servo accessories</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Servo_accessories&amp;diff=164"/>
		<updated>2026-05-07T09:20:28Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[Dynamixel XL330 horns]]&lt;br /&gt;
* [[Dynamixel XL330 mounts]]&lt;br /&gt;
* [[Dynamixel XL330 cogs]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=3D_printing&amp;diff=163</id>
		<title>3D printing</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=3D_printing&amp;diff=163"/>
		<updated>2026-05-06T12:49:56Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 3D printers ==&lt;br /&gt;
&lt;br /&gt;
We have three Prusa printers in the Studio, one MK4 and two [https://www.prusa3d.com/product/original-prusa-mk4s/ MK4S].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Install Prusa Software - PrusaSlicer ====&lt;br /&gt;
&lt;br /&gt;
Download and install the PrusaSlicer software -- the software translates your 3D model into machine readable instructions for the 3D printer.&lt;br /&gt;
* https://github.com/prusa3d/PrusaSlicer/releases&lt;br /&gt;
* https://www.prusa3d.com/page/prusaslicer_424/ &lt;br /&gt;
&lt;br /&gt;
A configuration wizard might open up when install is complete, if this happens click through all steps and make sure the correct Prusa is selected in step 4 (see image).&lt;br /&gt;
[[File:ConfigurationWizard.png|thumb|Correct setting for PrusaSlicer for MK4 and MK4S]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How to print&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Export your 3D model into .stl or .f3d file format&lt;br /&gt;
* Open 3D model with PrusaSlicer&lt;br /&gt;
* Check that all settings are correct, make sure to add support when needed&lt;br /&gt;
* Press button &amp;quot;Slice now&amp;quot; in the bottom right corner&lt;br /&gt;
* If everything looks ok, export the file by pressing &amp;quot;Export G-code&amp;quot; in the bottom right corner&lt;br /&gt;
* Now you have a .gcode file, put the file into a USB stick and plug it into the 3D printer&lt;br /&gt;
** After plugging the USB stick you should see your model on the Prusa screen&lt;br /&gt;
** If you don&#039;t see your model on the Prusa screen turn the knob on the screen panel to find your file&lt;br /&gt;
* Press the knob to start printing your model&lt;br /&gt;
* Stay and check that the print start correctly. If the print fails, something with the settings on the slice is wrong and you need to go back and change the settings&lt;br /&gt;
&lt;br /&gt;
[[File:MK4S-1.png|thumb|Prusa MK4S]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[File:MK4S-head-1.png|thumb|Prusa MK4S head]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== How the settings look like in the PrusaSlicer ====&lt;br /&gt;
&lt;br /&gt;
Settings for the &#039;&#039;&#039;Prusa MK4&#039;&#039;&#039; on the Prusaslicer (with enclosure):&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Print settings&#039;&#039;&#039;: 0.20mm SPEED&lt;br /&gt;
* &#039;&#039;&#039;Filament&#039;&#039;&#039;: Generic PLA&lt;br /&gt;
* &#039;&#039;&#039;Printer&#039;&#039;&#039;: Original Prusa MK4 Input Shaper 0.4 nozzle&lt;br /&gt;
* &#039;&#039;&#039;Supports&#039;&#039;&#039;: None (change to &amp;quot;Support on the build plate only&amp;quot; in case you get error messages after the slicing is done -- this setting depends on your geometry)&lt;br /&gt;
* &#039;&#039;&#039;Infill&#039;&#039;&#039;: 15% (recommended)&lt;br /&gt;
* &#039;&#039;&#039;Brim&#039;&#039;&#039;: [unticked] (Select to print a so-called brim in case is necessary for your geometry, typically when you have little touching surface with the build plate)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:prusa-slicer-settings.png|thumb|Prusaslicer settings for MK4]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Settings for the &#039;&#039;&#039;Prusa MK4S&#039;&#039;&#039; on the Prusaslicer (no enclosure):&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Print settings&#039;&#039;&#039;: 0.20mm SPEED&lt;br /&gt;
* &#039;&#039;&#039;Filament&#039;&#039;&#039;: Generic PLA&lt;br /&gt;
* &#039;&#039;&#039;Printer&#039;&#039;&#039;: Original Prusa MK4S 0.4 nozzle&lt;br /&gt;
* &#039;&#039;&#039;Supports&#039;&#039;&#039;: None (change to &amp;quot;Support on the build plate only&amp;quot; in case you get error messages after the slicing is done -- this setting depends on your geometry)&lt;br /&gt;
* &#039;&#039;&#039;Infill&#039;&#039;&#039;: 15% (recommended)&lt;br /&gt;
* &#039;&#039;&#039;Brim&#039;&#039;&#039;: [unticked] (Select to print a so-called brim in case is necessary for your geometry, typically when you have little touching surface with the build plate)&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=162</id>
		<title>Dynamixel XL330 horns</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=162"/>
		<updated>2026-05-05T13:13:28Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
$fn=32;&lt;br /&gt;
&lt;br /&gt;
inner = 6; // 6mm inner empty space for front hornet screw&lt;br /&gt;
outer = 8.25;  // 8.25mm outer radius of XL330 servo hornet&lt;br /&gt;
&lt;br /&gt;
r = 0.7; // d=1.6mm pins on the XL330 servo hornet (inlet)&lt;br /&gt;
l = 2.5; // l=2.5mm, how deep the inlet travel in the hornet -- 2.5mm&lt;br /&gt;
t = 2; // t=2mm, global thickness&lt;br /&gt;
d = 17; // d=16mm, front/back hand distance&lt;br /&gt;
h = 29; // h=30mm, upper hand distance&lt;br /&gt;
fac = 1.25;&lt;br /&gt;
&lt;br /&gt;
module pins(r, l, t){&lt;br /&gt;
    /* r: radius, l: length, t: thickness */&lt;br /&gt;
    translate([inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([-inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,inner,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,-inner,t]) cylinder(l, r, r);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module disc(thichness=t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        union(){&lt;br /&gt;
            cylinder(t, outer, outer);&lt;br /&gt;
            cylinder(t, t, t);&lt;br /&gt;
        }&lt;br /&gt;
        cylinder(t, inner/2, inner/2);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module frontArm(d, t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        translate([-outer/2, 0, 0]) cube([outer, d, t]);&lt;br /&gt;
        cube([2*inner,2*inner,2*t],true);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module upperArm(d, h, t){&lt;br /&gt;
    rotate([90,0,0]) translate([-outer/2, 0, -d]) cube([outer, h, t]);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module backArm(d, h, t){&lt;br /&gt;
    union(){&lt;br /&gt;
        translate([-outer/2, -(2*t), h]) cube([outer, d+(2*t), t]);&lt;br /&gt;
        translate([0, 0, h-(fac*t)]) cylinder(fac*t, inner/2, inner/2);&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
union(){&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                pins(r, l, t);&lt;br /&gt;
                disc(t);&lt;br /&gt;
                }&lt;br /&gt;
            frontArm(d, t);&lt;br /&gt;
            }&lt;br /&gt;
        upperArm(d, h, t);&lt;br /&gt;
    }&lt;br /&gt;
    backArm(d, h, t);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Xl330-rotating-horn-modular.png|thumb]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=161</id>
		<title>Dynamixel XL330 horns</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=161"/>
		<updated>2026-05-05T12:58:49Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
$fn=32;&lt;br /&gt;
&lt;br /&gt;
inner = 6; // 6mm inner empty space for front hornet screw&lt;br /&gt;
outer = 8.25;  // 8.25mm outer radius of XL330 servo hornet&lt;br /&gt;
&lt;br /&gt;
r = 0.7; // d=1.6mm pins on the XL330 servo hornet (inlet)&lt;br /&gt;
l = 2.5; // l=2.5mm, how deep the inlet travel in the hornet -- 2.5mm&lt;br /&gt;
t = 2; // t=2mm, global thickness&lt;br /&gt;
d = 17; // d=16mm, front/back hand distance&lt;br /&gt;
h = 29; // h=30mm, upper hand distance&lt;br /&gt;
fac = 1.5;&lt;br /&gt;
&lt;br /&gt;
module pins(r, l, t){&lt;br /&gt;
    /* r: radius, l: length, t: thickness */&lt;br /&gt;
    translate([inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([-inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,inner,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,-inner,t]) cylinder(l, r, r);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module disc(thichness=t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        union(){&lt;br /&gt;
            cylinder(t, outer, outer);&lt;br /&gt;
            cylinder(t, t, t);&lt;br /&gt;
        }&lt;br /&gt;
        cylinder(t, inner/2, inner/2);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module frontArm(d, t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        translate([-outer/2, 0, 0]) cube([outer, d, t]);&lt;br /&gt;
        cube([2*inner,2*inner,2*t],true);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module upperArm(d, h, t){&lt;br /&gt;
    rotate([90,0,0]) translate([-outer/2, 0, -d]) cube([outer, h, t]);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module backArm(d, h, t){&lt;br /&gt;
    union(){&lt;br /&gt;
        translate([-outer/2, -(2*t), h]) cube([outer, d+(2*t), t]);&lt;br /&gt;
        translate([0, 0, h-(fac*t)]) cylinder(fac*t, inner/2, inner/2);&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
union(){&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                pins(r, l, t);&lt;br /&gt;
                disc(t);&lt;br /&gt;
                }&lt;br /&gt;
            frontArm(d, t);&lt;br /&gt;
            }&lt;br /&gt;
        upperArm(d, h, t);&lt;br /&gt;
    }&lt;br /&gt;
    backArm(d, h, t);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Xl330-rotating-horn-modular.png|thumb]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=File:Xl330-rotating-horn-modular.png&amp;diff=160</id>
		<title>File:Xl330-rotating-horn-modular.png</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=File:Xl330-rotating-horn-modular.png&amp;diff=160"/>
		<updated>2026-05-05T12:58:35Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XL330 attachable horn, programmed in modules.&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=159</id>
		<title>Dynamixel XL330 horns</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=159"/>
		<updated>2026-05-05T12:57:09Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
$fn=32;&lt;br /&gt;
&lt;br /&gt;
inner = 6; // 6mm inner empty space for front hornet screw&lt;br /&gt;
outer = 8.25;  // 8.25mm outer radius of XL330 servo hornet&lt;br /&gt;
&lt;br /&gt;
r = 0.7; // d=1.6mm pins on the XL330 servo hornet (inlet)&lt;br /&gt;
l = 2.5; // l=2.5mm, how deep the inlet travel in the hornet -- 2.5mm&lt;br /&gt;
t = 2; // t=2mm, global thickness&lt;br /&gt;
d = 17; // d=16mm, front/back hand distance&lt;br /&gt;
h = 29; // h=30mm, upper hand distance&lt;br /&gt;
fac = 1.5;&lt;br /&gt;
&lt;br /&gt;
module pins(r, l, t){&lt;br /&gt;
    /* r: radius, l: length, t: thickness */&lt;br /&gt;
    translate([inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([-inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,inner,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,-inner,t]) cylinder(l, r, r);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module disc(thichness=t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        union(){&lt;br /&gt;
            cylinder(t, outer, outer);&lt;br /&gt;
            cylinder(t, t, t);&lt;br /&gt;
        }&lt;br /&gt;
        cylinder(t, inner/2, inner/2);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module frontArm(d, t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        translate([-outer/2, 0, 0]) cube([outer, d, t]);&lt;br /&gt;
        cube([2*inner,2*inner,2*t],true);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module upperArm(d, h, t){&lt;br /&gt;
    rotate([90,0,0]) translate([-outer/2, 0, -d]) cube([outer, h, t]);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module backArm(d, h, t){&lt;br /&gt;
    union(){&lt;br /&gt;
        translate([-outer/2, -(2*t), h]) cube([outer, d+(2*t), t]);&lt;br /&gt;
        translate([0, 0, h-(fac*t)]) cylinder(fac*t, inner/2, inner/2);&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
union(){&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                pins(r, l, t);&lt;br /&gt;
                disc(t);&lt;br /&gt;
                }&lt;br /&gt;
            frontArm(d, t);&lt;br /&gt;
            }&lt;br /&gt;
        upperArm(d, h, t);&lt;br /&gt;
    }&lt;br /&gt;
    backArm(d, h, t);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=158</id>
		<title>Dynamixel XL330 horns</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=158"/>
		<updated>2026-05-05T12:56:42Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: /* XL330 horns */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;$fn=32;&lt;br /&gt;
&lt;br /&gt;
inner = 6; // 6mm inner empty space for front hornet screw&lt;br /&gt;
outer = 8.25;  // 8.25mm outer radius of XL330 servo hornet&lt;br /&gt;
&lt;br /&gt;
r = 0.7; // d=1.6mm pins on the XL330 servo hornet (inlet)&lt;br /&gt;
l = 2.5; // l=2.5mm, how deep the inlet travel in the hornet -- 2.5mm&lt;br /&gt;
t = 2; // t=2mm, global thickness&lt;br /&gt;
d = 17; // d=16mm, front/back hand distance&lt;br /&gt;
h = 29; // h=30mm, upper hand distance&lt;br /&gt;
fac = 1.5;&lt;br /&gt;
&lt;br /&gt;
module pins(r, l, t){&lt;br /&gt;
    /* r: radius, l: length, t: thickness */&lt;br /&gt;
    translate([inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([-inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,inner,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,-inner,t]) cylinder(l, r, r);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module disc(thichness=t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        union(){&lt;br /&gt;
            cylinder(t, outer, outer);&lt;br /&gt;
            cylinder(t, t, t);&lt;br /&gt;
        }&lt;br /&gt;
        cylinder(t, inner/2, inner/2);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module frontArm(d, t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        translate([-outer/2, 0, 0]) cube([outer, d, t]);&lt;br /&gt;
        cube([2*inner,2*inner,2*t],true);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module upperArm(d, h, t){&lt;br /&gt;
    rotate([90,0,0]) translate([-outer/2, 0, -d]) cube([outer, h, t]);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module backArm(d, h, t){&lt;br /&gt;
    union(){&lt;br /&gt;
        translate([-outer/2, -(2*t), h]) cube([outer, d+(2*t), t]);&lt;br /&gt;
        translate([0, 0, h-(fac*t)]) cylinder(fac*t, inner/2, inner/2);&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
union(){&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                pins(r, l, t);&lt;br /&gt;
                disc(t);&lt;br /&gt;
                }&lt;br /&gt;
            frontArm(d, t);&lt;br /&gt;
            }&lt;br /&gt;
        upperArm(d, h, t);&lt;br /&gt;
    }&lt;br /&gt;
    backArm(d, h, t);&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=157</id>
		<title>Dynamixel XL330 horns</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=157"/>
		<updated>2026-05-02T04:23:23Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= XL330 horns =&lt;br /&gt;
&lt;br /&gt;
OpenSCAD code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$fn=32;&lt;br /&gt;
&lt;br /&gt;
inner = 6; // 6mm inner empty space for front hornet screw&lt;br /&gt;
outer = 8.25;  // 8.25mm outer radius of XL330 servo hornet&lt;br /&gt;
&lt;br /&gt;
r = 0.8; // d=1.6mm pins on the XL330 servo hornet (inlet)&lt;br /&gt;
l = 2.5; // l=2.5mm, how deep the inlet travel in the hornet -- 2.5mm&lt;br /&gt;
t = 2; // t=2mm, global thickness&lt;br /&gt;
d = 16; // d=16mm, front/back hand distance&lt;br /&gt;
h = 30; // h=30mm, upper hand distance&lt;br /&gt;
&lt;br /&gt;
module pins(r, l, t){&lt;br /&gt;
    /* r: radius, l: length, t: thickness */&lt;br /&gt;
    translate([inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([-inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,inner,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,-inner,t]) cylinder(l, r, r);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module disc(thichness=t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        union(){&lt;br /&gt;
            cylinder(t, outer, outer);&lt;br /&gt;
            cylinder(t, t, t);&lt;br /&gt;
        }&lt;br /&gt;
        cylinder(t, inner/2, inner/2);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module frontArm(d, t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        translate([-outer/2, 0, 0]) cube([outer, d, t]);&lt;br /&gt;
        cube([2*inner,2*inner,2*t],true);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module upperArm(d, h, t){&lt;br /&gt;
    rotate([90,0,0]) translate([-outer/2, 0, -d]) cube([outer, h, t]);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module backArm(d, h, t){&lt;br /&gt;
    union(){&lt;br /&gt;
        translate([-outer/2, -(2*t), h]) cube([outer, d+(2*t), t]);&lt;br /&gt;
        translate([0, 0, h-t]) cylinder(t, inner/2, inner/2);&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
union(){&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                pins(r, l, t);&lt;br /&gt;
                disc(t);&lt;br /&gt;
                }&lt;br /&gt;
            frontArm(d, t);&lt;br /&gt;
            }&lt;br /&gt;
        upperArm(d, h, t);&lt;br /&gt;
    }&lt;br /&gt;
    backArm(d, h, t);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Xl330-horn-modular.png|thumb]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=File:Xl330-horn-modular.png&amp;diff=156</id>
		<title>File:Xl330-horn-modular.png</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=File:Xl330-horn-modular.png&amp;diff=156"/>
		<updated>2026-05-02T04:23:03Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dynamixel XL330 servo horn.&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=155</id>
		<title>Dynamixel XL330 horns</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=155"/>
		<updated>2026-05-02T04:21:09Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= XL330 horns =&lt;br /&gt;
&lt;br /&gt;
OpenSCAD code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$fn=32;&lt;br /&gt;
&lt;br /&gt;
inner = 6; // 6mm inner empty space for front hornet screw&lt;br /&gt;
outer = 8.25;  // 8.25mm outer radius of XL330 servo hornet&lt;br /&gt;
&lt;br /&gt;
r = 0.8; // d=1.6mm pins on the XL330 servo hornet (inlet)&lt;br /&gt;
l = 2.5; // l=2.5mm, how deep the inlet travel in the hornet -- 2.5mm&lt;br /&gt;
t = 2; // t=2mm, global thickness&lt;br /&gt;
d = 16; // d=16mm, front/back hand distance&lt;br /&gt;
h = 30; // h=30mm, upper hand distance&lt;br /&gt;
&lt;br /&gt;
module pins(r, l, t){&lt;br /&gt;
    /* r: radius, l: length, t: thickness */&lt;br /&gt;
    translate([inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([-inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,inner,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,-inner,t]) cylinder(l, r, r);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module disc(thichness=t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        union(){&lt;br /&gt;
            cylinder(t, outer, outer);&lt;br /&gt;
            cylinder(t, t, t);&lt;br /&gt;
        }&lt;br /&gt;
        cylinder(t, inner/2, inner/2);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module frontArm(d, t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        translate([-outer/2, 0, 0]) cube([outer, d, t]);&lt;br /&gt;
        cube([2*inner,2*inner,2*t],true);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module upperArm(d, h, t){&lt;br /&gt;
    rotate([90,0,0]) translate([-outer/2, 0, -d]) cube([outer, h, t]);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module backArm(d, h, t){&lt;br /&gt;
    union(){&lt;br /&gt;
        translate([-outer/2, -(2*t), h]) cube([outer, d+(2*t), t]);&lt;br /&gt;
        translate([0, 0, h-t]) cylinder(t, inner/2, inner/2);&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
union(){&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                pins(r, l, t);&lt;br /&gt;
                disc(t);&lt;br /&gt;
                }&lt;br /&gt;
            frontArm(d, t);&lt;br /&gt;
            }&lt;br /&gt;
        upperArm(d, h, t);&lt;br /&gt;
    }&lt;br /&gt;
    backArm(d, h, t);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:xl330-rotating-horn-modular.png.png|thumb|Dynamixel XL330 horn]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=154</id>
		<title>Dynamixel XL330 horns</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=154"/>
		<updated>2026-05-02T04:20:51Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: /* XL330 horns */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= XL330 horns =&lt;br /&gt;
&lt;br /&gt;
OpenSCAD code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$fn=32;&lt;br /&gt;
&lt;br /&gt;
inner = 6; // 6mm inner empty space for front hornet screw&lt;br /&gt;
outer = 8.25;  // 8.25mm outer radius of XL330 servo hornet&lt;br /&gt;
&lt;br /&gt;
r = 0.8; // d=1.6mm pins on the XL330 servo hornet (inlet)&lt;br /&gt;
l = 2.5; // l=2.5mm, how deep the inlet travel in the hornet -- 2.5mm&lt;br /&gt;
t = 2; // t=2mm, global thickness&lt;br /&gt;
d = 16; // d=16mm, front/back hand distance&lt;br /&gt;
h = 30; // h=30mm, upper hand distance&lt;br /&gt;
&lt;br /&gt;
module pins(r, l, t){&lt;br /&gt;
    /* r: radius, l: length, t: thickness */&lt;br /&gt;
    translate([inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([-inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,inner,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,-inner,t]) cylinder(l, r, r);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module disc(thichness=t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        union(){&lt;br /&gt;
            cylinder(t, outer, outer);&lt;br /&gt;
            cylinder(t, t, t);&lt;br /&gt;
        }&lt;br /&gt;
        cylinder(t, inner/2, inner/2);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module frontArm(d, t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        translate([-outer/2, 0, 0]) cube([outer, d, t]);&lt;br /&gt;
        cube([2*inner,2*inner,2*t],true);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module upperArm(d, h, t){&lt;br /&gt;
    rotate([90,0,0]) translate([-outer/2, 0, -d]) cube([outer, h, t]);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module backArm(d, h, t){&lt;br /&gt;
    union(){&lt;br /&gt;
        translate([-outer/2, -(2*t), h]) cube([outer, d+(2*t), t]);&lt;br /&gt;
        translate([0, 0, h-t]) cylinder(t, inner/2, inner/2);&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
union(){&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                pins(r, l, t);&lt;br /&gt;
                disc(t);&lt;br /&gt;
                }&lt;br /&gt;
            frontArm(d, t);&lt;br /&gt;
            }&lt;br /&gt;
        upperArm(d, h, t);&lt;br /&gt;
    }&lt;br /&gt;
    backArm(d, h, t);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:xl330-rotating-horn-modular.png|thumb|Dynamixel XL330 horn]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=153</id>
		<title>Dynamixel XL330 horns</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=153"/>
		<updated>2026-05-02T04:20:33Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= XL330 horns =&lt;br /&gt;
&lt;br /&gt;
OpenSCAD code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$fn=32;&lt;br /&gt;
&lt;br /&gt;
inner = 6; // 6mm inner empty space for front hornet screw&lt;br /&gt;
outer = 8.25;  // 8.25mm outer radius of XL330 servo hornet&lt;br /&gt;
&lt;br /&gt;
r = 0.8; // d=1.6mm pins on the XL330 servo hornet (inlet)&lt;br /&gt;
l = 2.5; // l=2.5mm, how deep the inlet travel in the hornet -- 2.5mm&lt;br /&gt;
t = 2; // t=2mm, global thickness&lt;br /&gt;
d = 16; // d=16mm, front/back hand distance&lt;br /&gt;
h = 30; // h=30mm, upper hand distance&lt;br /&gt;
&lt;br /&gt;
module pins(r, l, t){&lt;br /&gt;
    /* r: radius, l: length, t: thickness */&lt;br /&gt;
    translate([inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([-inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,inner,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,-inner,t]) cylinder(l, r, r);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module disc(thichness=t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        union(){&lt;br /&gt;
            cylinder(t, outer, outer);&lt;br /&gt;
            cylinder(t, t, t);&lt;br /&gt;
        }&lt;br /&gt;
        cylinder(t, inner/2, inner/2);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module frontArm(d, t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        translate([-outer/2, 0, 0]) cube([outer, d, t]);&lt;br /&gt;
        cube([2*inner,2*inner,2*t],true);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module upperArm(d, h, t){&lt;br /&gt;
    rotate([90,0,0]) translate([-outer/2, 0, -d]) cube([outer, h, t]);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module backArm(d, h, t){&lt;br /&gt;
    union(){&lt;br /&gt;
        translate([-outer/2, -(2*t), h]) cube([outer, d+(2*t), t]);&lt;br /&gt;
        translate([0, 0, h-t]) cylinder(t, inner/2, inner/2);&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
union(){&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                pins(r, l, t);&lt;br /&gt;
                disc(t);&lt;br /&gt;
                }&lt;br /&gt;
            frontArm(d, t);&lt;br /&gt;
            }&lt;br /&gt;
        upperArm(d, h, t);&lt;br /&gt;
    }&lt;br /&gt;
    backArm(d, h, t);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:xl330-rotating-hornet-modular.png|thumb|Dynamixel XL330 horn]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=152</id>
		<title>Dynamixel XL330 horns</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=152"/>
		<updated>2026-05-02T04:20:05Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= XL330 horns =&lt;br /&gt;
&lt;br /&gt;
OpenSCAD code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$fn=32;&lt;br /&gt;
&lt;br /&gt;
inner = 6; // 6mm inner empty space for front hornet screw&lt;br /&gt;
outer = 8.25;  // 8.25mm outer radius of XL330 servo hornet&lt;br /&gt;
&lt;br /&gt;
r = 0.8; // d=1.6mm pins on the XL330 servo hornet (inlet)&lt;br /&gt;
l = 2.5; // l=2.5mm, how deep the inlet travel in the hornet -- 2.5mm&lt;br /&gt;
t = 2; // t=2mm, global thickness&lt;br /&gt;
d = 16; // d=16mm, front/back hand distance&lt;br /&gt;
h = 30; // h=30mm, upper hand distance&lt;br /&gt;
&lt;br /&gt;
module pins(r, l, t){&lt;br /&gt;
    /* r: radius, l: length, t: thickness */&lt;br /&gt;
    translate([inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([-inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,inner,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,-inner,t]) cylinder(l, r, r);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module disc(thichness=t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        union(){&lt;br /&gt;
            cylinder(t, outer, outer);&lt;br /&gt;
            cylinder(t, t, t);&lt;br /&gt;
        }&lt;br /&gt;
        cylinder(t, inner/2, inner/2);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module frontArm(d, t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        translate([-outer/2, 0, 0]) cube([outer, d, t]);&lt;br /&gt;
        cube([2*inner,2*inner,2*t],true);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module upperArm(d, h, t){&lt;br /&gt;
    rotate([90,0,0]) translate([-outer/2, 0, -d]) cube([outer, h, t]);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module backArm(d, h, t){&lt;br /&gt;
    union(){&lt;br /&gt;
        translate([-outer/2, -(2*t), h]) cube([outer, d+(2*t), t]);&lt;br /&gt;
        translate([0, 0, h-t]) cylinder(t, inner/2, inner/2);&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
union(){&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                pins(r, l, t);&lt;br /&gt;
                disc(t);&lt;br /&gt;
                }&lt;br /&gt;
            frontArm(d, t);&lt;br /&gt;
            }&lt;br /&gt;
        upperArm(d, h, t);&lt;br /&gt;
    }&lt;br /&gt;
    backArm(d, h, t);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:xl330-rotating-hornet-modular.png.png|thumb|Dynamixel XL330 horn]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=151</id>
		<title>Dynamixel XL330 horns</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330_horns&amp;diff=151"/>
		<updated>2026-05-02T04:18:41Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: Created page with &amp;quot;= XL330 horns =  OpenSCAD code  &amp;lt;pre&amp;gt; $fn=32;  inner = 6; // 6mm inner empty space for front hornet screw outer = 8.25;  // 8.25mm outer radius of XL330 servo hornet  r = 0.8; // d=1.6mm pins on the XL330 servo hornet (inlet) l = 2.5; // l=2.5mm, how deep the inlet travel in the hornet -- 2.5mm t = 2; // t=2mm, global thickness d = 16; // d=16mm, front/back hand distance h = 30; // h=30mm, upper hand distance  module pins(r, l, t){     /* r: radius, l: length, t: thickne...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= XL330 horns =&lt;br /&gt;
&lt;br /&gt;
OpenSCAD code&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$fn=32;&lt;br /&gt;
&lt;br /&gt;
inner = 6; // 6mm inner empty space for front hornet screw&lt;br /&gt;
outer = 8.25;  // 8.25mm outer radius of XL330 servo hornet&lt;br /&gt;
&lt;br /&gt;
r = 0.8; // d=1.6mm pins on the XL330 servo hornet (inlet)&lt;br /&gt;
l = 2.5; // l=2.5mm, how deep the inlet travel in the hornet -- 2.5mm&lt;br /&gt;
t = 2; // t=2mm, global thickness&lt;br /&gt;
d = 16; // d=16mm, front/back hand distance&lt;br /&gt;
h = 30; // h=30mm, upper hand distance&lt;br /&gt;
&lt;br /&gt;
module pins(r, l, t){&lt;br /&gt;
    /* r: radius, l: length, t: thickness */&lt;br /&gt;
    translate([inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([-inner,0,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,inner,t]) cylinder(l, r, r);&lt;br /&gt;
    translate([0,-inner,t]) cylinder(l, r, r);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module disc(thichness=t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        union(){&lt;br /&gt;
            cylinder(t, outer, outer);&lt;br /&gt;
            cylinder(t, t, t);&lt;br /&gt;
        }&lt;br /&gt;
        cylinder(t, inner/2, inner/2);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module frontArm(d, t){&lt;br /&gt;
    difference(){&lt;br /&gt;
        translate([-outer/2, 0, 0]) cube([outer, d, t]);&lt;br /&gt;
        cube([2*inner,2*inner,2*t],true);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module upperArm(d, h, t){&lt;br /&gt;
    rotate([90,0,0]) translate([-outer/2, 0, -d]) cube([outer, h, t]);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
module backArm(d, h, t){&lt;br /&gt;
    union(){&lt;br /&gt;
        translate([-outer/2, -(2*t), h]) cube([outer, d+(2*t), t]);&lt;br /&gt;
        translate([0, 0, h-t]) cylinder(t, inner/2, inner/2);&lt;br /&gt;
    }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
union(){&lt;br /&gt;
    union(){&lt;br /&gt;
        union(){&lt;br /&gt;
            union(){&lt;br /&gt;
                pins(r, l, t);&lt;br /&gt;
                disc(t);&lt;br /&gt;
                }&lt;br /&gt;
            frontArm(d, t);&lt;br /&gt;
            }&lt;br /&gt;
        upperArm(d, h, t);&lt;br /&gt;
    }&lt;br /&gt;
    backArm(d, h, t);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=File:Dynamixel-xl330-rotating-horn.png.png&amp;diff=150</id>
		<title>File:Dynamixel-xl330-rotating-horn.png.png</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=File:Dynamixel-xl330-rotating-horn.png.png&amp;diff=150"/>
		<updated>2026-05-02T04:18:18Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rotating horn for XL330&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Servo_accessories&amp;diff=149</id>
		<title>Servo accessories</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Servo_accessories&amp;diff=149"/>
		<updated>2026-04-30T12:43:13Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: Created page with &amp;quot;* Dynamixel XL330 horns * Dynamixel XL330 mounts&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[Dynamixel XL330 horns]]&lt;br /&gt;
* [[Dynamixel XL330 mounts]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=3D_printing_models&amp;diff=148</id>
		<title>3D printing models</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=3D_printing_models&amp;diff=148"/>
		<updated>2026-04-30T12:40:18Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: Created page with &amp;quot;* Servo accessories&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[Servo accessories]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Main_Page&amp;diff=147</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Main_Page&amp;diff=147"/>
		<updated>2026-04-30T12:33:39Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: /* Useful Documents */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== IxD Studio Equipment ==&lt;br /&gt;
&lt;br /&gt;
The wiki mostly serves as technical support and inquiry for available equipment related to:&lt;br /&gt;
&lt;br /&gt;
* [[3D printing]]&lt;br /&gt;
* [[Electronics]]&lt;br /&gt;
* [[Laser cutting]]&lt;br /&gt;
* [[Printers]]&lt;br /&gt;
&amp;lt;!-- [[Wood workshop]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Useful Documents ==&lt;br /&gt;
&lt;br /&gt;
* [[Studio internal]]&lt;br /&gt;
* [[3D printing models]]&lt;br /&gt;
&lt;br /&gt;
== Useful Software ==&lt;br /&gt;
&lt;br /&gt;
* [[CAD]]&lt;br /&gt;
* [[Programming]]&lt;br /&gt;
* [[Simulators]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330&amp;diff=146</id>
		<title>Dynamixel XL330</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330&amp;diff=146"/>
		<updated>2026-04-25T17:56:02Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= XL330-M288-T =&lt;br /&gt;
&lt;br /&gt;
Manual: https://emanual.robotis.com/docs/en/dxl/x/xl330-m288/&lt;br /&gt;
&lt;br /&gt;
== Dimensions == &lt;br /&gt;
See the mechanical diagram: https://www.robotis.com/service/download.php?no=1986&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330&amp;diff=145</id>
		<title>Dynamixel XL330</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330&amp;diff=145"/>
		<updated>2026-04-25T17:55:27Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: /* XL330-M288-T */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= XL330-M288-T =&lt;br /&gt;
&lt;br /&gt;
== Dimensions == &lt;br /&gt;
See the mechanical diagram: https://www.robotis.com/service/download.php?no=1986&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Programming_Dynamixel_servos&amp;diff=144</id>
		<title>Programming Dynamixel servos</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Programming_Dynamixel_servos&amp;diff=144"/>
		<updated>2026-04-25T17:37:21Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: /* OpenRB-150 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Dynamixel Wizard Software =&lt;br /&gt;
&lt;br /&gt;
Dynamixel servos have an assigned ID that ranges from 0-252. In order to control each servo individually when interconnected in a daisy-chain manner, each servo must have a unique ID.&lt;br /&gt;
&lt;br /&gt;
= OpenRB-150 =&lt;br /&gt;
&lt;br /&gt;
To assign unique ID to the servos we use the Dynamixel Wizard software and the OpenRB-150 board. After installation of the OpenRB-150 board using the Arduino board manager, we can find the example &amp;quot;usb_2_dynamixel&amp;quot;. We upload via the example to the board, then quit the Arduino IDE and open the Dynamixel Wizard software.&lt;br /&gt;
&lt;br /&gt;
Search the following videos on the ROBOTIS OpenSourceTeam Youtube channel:&lt;br /&gt;
  - DYNAMIXEL Quick Start Guide with Arduino &lt;br /&gt;
  - DYNAMIXEL Tips | Use ID Inspection to resolve duplicated ID collision&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Programming_Dynamixel_servos&amp;diff=143</id>
		<title>Programming Dynamixel servos</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Programming_Dynamixel_servos&amp;diff=143"/>
		<updated>2026-04-25T17:33:38Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: Created page with &amp;quot;= Dynamixel Wizard Software =  Dynamixel servos have an assigned ID that ranges from 0-252. In order to control each servo individually when interconnected in a daisy-chain manner, each servo must have a unique ID.  = OpenRB-150 =  To assign unique ID to the servos we use the Dynamixel Wizard software and the OpenRB-150 board. After installation of the OpenRB-150 board using the Arduino board manager, we can find the example &amp;quot;usb_2_dynamixel&amp;quot;. We upload via the example t...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Dynamixel Wizard Software =&lt;br /&gt;
&lt;br /&gt;
Dynamixel servos have an assigned ID that ranges from 0-252. In order to control each servo individually when interconnected in a daisy-chain manner, each servo must have a unique ID.&lt;br /&gt;
&lt;br /&gt;
= OpenRB-150 =&lt;br /&gt;
&lt;br /&gt;
To assign unique ID to the servos we use the Dynamixel Wizard software and the OpenRB-150 board. After installation of the OpenRB-150 board using the Arduino board manager, we can find the example &amp;quot;usb_2_dynamixel&amp;quot;. We upload via the example to the board, then quit the Arduino IDE and open the Dynamixel Wizard software.&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Digital_servos&amp;diff=142</id>
		<title>Digital servos</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Digital_servos&amp;diff=142"/>
		<updated>2026-04-25T17:28:18Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[Dynamixel XL320]]&lt;br /&gt;
* [[Dynamixel XL330]]&lt;br /&gt;
* [[Programming Dynamixel servos]]&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
	<entry>
		<id>https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330&amp;diff=141</id>
		<title>Dynamixel XL330</title>
		<link rel="alternate" type="text/html" href="https://studio.cse.chalmers.se/mediawiki/index.php?title=Dynamixel_XL330&amp;diff=141"/>
		<updated>2026-04-25T17:27:34Z</updated>

		<summary type="html">&lt;p&gt;Studio Director: Created page with &amp;quot;= XL330-M288-T =&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= XL330-M288-T =&lt;/div&gt;</summary>
		<author><name>Studio Director</name></author>
	</entry>
</feed>