<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-gb">
<link rel="self" type="application/atom+xml" href="http://forum.robosavvy.com/feed.php?f=5&amp;t=3094" />

<title>RoboSavvy Forum</title>
<subtitle>Robosavvy Forum: The largest online community of Humanoid Robot Builders</subtitle>
<link href="http://forum.robosavvy.com/index.php" />
<updated>2008-11-27T10:29:20+01:00</updated>

<author><name><![CDATA[RoboSavvy Forum]]></name></author>
<id>http://forum.robosavvy.com/feed.php?f=5&amp;t=3094</id>
<entry>
<author><name><![CDATA[petej]]></name></author>
<updated>2008-11-27T10:29:20+01:00</updated>
<published>2008-11-27T10:29:20+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18449#p18449</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18449#p18449"/>
<title type="html"><![CDATA[Linear interpolation]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18449#p18449"><![CDATA[
Ah, of course... that makes sense.  I'm obviously a little slow on the uptake. <br /><br />In an attempt to reduce complexity, I've rearranged the arm to be all in the X/Y plane (as was previously suggested), which allowed me to reduced the number of servos from 5 to 3, and significantly shortened the throw.<br /><br />Running the original algorithm (calculate speeds for each servo based on target position, SYNC_WRITE speed and position once per pose) seems to work somewhat better with the reduced DOF.  It's still more inaccurate than I would like, but at least there are less variables to pay attention to. <img src="http://forum.robosavvy.com/images/smilies/icon_smile.gif" alt=":-)" title="Smile" /><br /><br />I'll try implementing your suggestion.  Thanks!<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=1056">petej</a> — Thu Nov 27, 2008 10:29 am</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[cosa]]></name></author>
<updated>2008-11-27T05:03:13+01:00</updated>
<published>2008-11-27T05:03:13+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18448#p18448</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18448#p18448"/>
<title type="html"><![CDATA[Linear interpolation]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18448#p18448"><![CDATA[
<blockquote class="uncited"><div><br />How would this work? You have to have different speeds on each servo in order to have all the servos reach the destination at the same time, and in order to ever implement an S-curve, you'd have to adjust the speed continually during the ramps, right?<br /></div></blockquote><br />You can control the average speed of the servo by sending position values to it. If you assume/set a pretty high acceleration/speed the servo will be able to reach every position within a few milliseconds. Then the average speed just depends on the position values you send in a specific time frame (f.e. the values 100 101 102 will be slower than 100 200 300). Of course, the problem is, that the ax-12 controller tries to reach every position with a fixed acceleration and max velocity which results in a jerky motion. But the higher your update frequency is the smaller the error of the resulting trajectory will be. Therefore you can limit the jerk by using small timesteps and a smooth precalculated trajectory (which should take the dynamics into account).<br /><br />For me, a timestep of ~10ms, a smooth trajectory (f.e. cubic spline or s-curve) and (optional) a simple pid controller for the torque value works okay, but I don't want to draw straight lines. <img src="http://forum.robosavvy.com/images/smilies/icon_wink.gif" alt=";)" title="Wink" /> I don't have up-to-date videos but you can find a few old ones <a href="http://bioloidcontrol.sourceforge.net/index.php?category=0#videos" class="postlink">here</a>.<br /><br />You'll get better results if you take the dynamics into account and calculate &quot;correct&quot; position, speed and torque values but it's not that easy (and you'd need information about how the ax-12 controller works). Using max torque and max velocity has the advantage that you can't underestimate the values <img src="http://forum.robosavvy.com/images/smilies/icon_wink.gif" alt=";)" title="Wink" /><p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=412">cosa</a> — Thu Nov 27, 2008 5:03 am</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[petej]]></name></author>
<updated>2008-11-22T23:28:26+01:00</updated>
<published>2008-11-22T23:28:26+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18377#p18377</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18377#p18377"/>
<title type="html"><![CDATA[Linear interpolation]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18377#p18377"><![CDATA[
<blockquote class="uncited"><div><br />Most of the controller code I have seen does not use the speed control ability of the servo. The servo runs at max speed.<br /><br />An interrupt timer is set to a few millisec, and on the interrupt the servo position only is set.<br /><br />I am thinking that setting the sped often, may mess with the servo internal code.<br /><br />Might I suggest a timer based position only program to start and then to experiment with adding the speed.<br /></div></blockquote><br /><br />You know, this matches what Bullit said in <a href="http://forums.tribotix.info/view_topic.php?id=76&amp;forum_id=1" class="postlink">this</a> thread:<br /><br /><blockquote class="uncited"><div><br />... the bioloid firmware sets the compliance slope to 0x20,0x20 whenever it plays a page.  Margin is left at 0.  Speed is set to 0, torque is set to 0x3ff.<br /></div></blockquote><br /><br />How would this work?  You have to have different speeds on each servo in order to have all the servos reach the destination at the same time, and in order to ever implement an S-curve, you'd have to adjust the speed continually during the ramps, right?<br /><br />Further, in the <a href="http://robosavvy.com/forum/viewtopic.php?p=12540" class="postlink">BLV012</a> code from the University of Plymouth, they send the goal speed with every packet, calculated in a similar way as my code (I derived mine from theirs).<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=1056">petej</a> — Sat Nov 22, 2008 11:28 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[billyzelsnack]]></name></author>
<updated>2008-11-22T19:07:17+01:00</updated>
<published>2008-11-22T19:07:17+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18368#p18368</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18368#p18368"/>
<title type="html"><![CDATA[Linear interpolation]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18368#p18368"><![CDATA[
<blockquote><div><cite>i-Bot wrote:</cite><br />I am thinking that setting the sped often, may mess with the servo internal code.<br /></div></blockquote><br /><br />I'm not sure if you were referring to my post above, but either way I should explain a bit more..<br /><br />By velocity I mean tracking velocity and position yourself. The way you set the servo can be by setting positions, just that you are setting the position not exact, but more based upon the direction where you want to go.<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=459">billyzelsnack</a> — Sat Nov 22, 2008 7:07 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[i-Bot]]></name></author>
<updated>2008-11-22T10:54:17+01:00</updated>
<published>2008-11-22T10:54:17+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18360#p18360</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18360#p18360"/>
<title type="html"><![CDATA[Linear interpolation]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18360#p18360"><![CDATA[
Most of the controller code I have seen does not use the speed control ability of the servo. The servo runs at max speed.<br /><br />An interrupt timer is set to a few millisec, and on the interrupt the servo position only is set. <br /><br />I am thinking that setting the sped often, may mess with the servo internal code.<br /><br />Might I suggest a timer based position only program to start and then to experiment with adding the speed.<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=159">i-Bot</a> — Sat Nov 22, 2008 10:54 am</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[billyzelsnack]]></name></author>
<updated>2008-11-22T00:23:40+01:00</updated>
<published>2008-11-22T00:23:40+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18354#p18354</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18354#p18354"/>
<title type="html"><![CDATA[Linear interpolation]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18354#p18354"><![CDATA[
I've not actually got to the point where I've solved the problem. I have some ideas though ( of course! haha. )<br /><br />If you switched over to controlling velocity instead of position ( treat the servo like a motor with position feedback ) you'd at least have something to tweak. Unfortunately this is like implementing a PID on top of the servo's PID which is less than ideal.<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=459">billyzelsnack</a> — Sat Nov 22, 2008 12:23 am</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[petej]]></name></author>
<updated>2008-11-23T19:40:32+01:00</updated>
<published>2008-11-21T23:09:43+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18352#p18352</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18352#p18352"/>
<title type="html"><![CDATA[Linear interpolation]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18352#p18352"><![CDATA[
<blockquote class="uncited"><div><br />When you send a position you are not only telling the servo to go to that position, but to also stop at that position. If you send lots of position updates then the servo is constantly going and stopping.<br /></div></blockquote><br /><br />Yeah, that's how I'd explain what's happening now.  My timing is wrong.<br /><br />My question is about what the factors are that I should consider when trying to determine the exact timing for sending the next position?  How have other people solved this problem?<br /><br />For example, the manual says at 10V, the max speed of the servo is 60 degrees in 0.196 seconds.  I haven't actually tested the voltage on the line (duh), but I'm guessing I'm running at about the battery voltage (9.6V?).  So does a speed setting of 1023 constitute a speed of 60 degrees in 0.196 seconds?  If the servo is not matching that spec'd output, then I guess I can't calculate anything reliably.<br /><br />Another thing to consider is how long the communication takes.  I guess I have to do the math and see how long it take to transmit that SYNC_WRITE packet at 1Mbps.  Assuming the servos start moving immediately after the last byte of the packet is received, I need to start sending the packet that much earlier than the frame start time.<br /><br />Am I over-complicating this?  I guess my case is sort of special, since most people seem to be acting on Motion512 data, which seems to have well-understood characteristics (from Bullit and others).  I sort of figured my poses must be effectively the same as the data created from the Motion Editor, as long as factors like pose speed, etc were not moved from defaults.<br /><br />I'm starting to feel like my Bioloid arm is judging me.  He just sits there, day after day, looking at me with that... look.<br /><br />Edit:  I tested Vdd when connected to the wall, and it reads about 12.1V, so that might add some amount of error in the calculation.<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=1056">petej</a> — Fri Nov 21, 2008 11:09 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[billyzelsnack]]></name></author>
<updated>2008-11-21T20:21:57+01:00</updated>
<published>2008-11-21T20:21:57+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18351#p18351</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18351#p18351"/>
<title type="html"><![CDATA[Linear interpolation]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18351#p18351"><![CDATA[
When you send a position you are not only telling the servo to go to that position, but to also stop at that position. If you send lots of position updates then the servo is constantly going and stopping.<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=459">billyzelsnack</a> — Fri Nov 21, 2008 8:21 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[petej]]></name></author>
<updated>2008-11-21T18:09:51+01:00</updated>
<published>2008-11-21T18:09:51+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18350#p18350</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18350#p18350"/>
<title type="html"><![CDATA[Linear interpolation]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18350#p18350"><![CDATA[
<blockquote class="uncited"><div><br />Have you already tried to interpolate the joint angles and create intermediate frames? You won't have to change much if you do it in joint space (add an outer loop t=0..1, store end-start and do target=start + t*(end-start)).<br /></div></blockquote><br /><br />I've started trying to do this, but I seem to be calculating the necessary time between moves incorrectly.  Instead of moving smoothly, it jerks between frames.  I know I'm not accounting for any communication times, but is there anything else I should be taking into account here?<br /><br /><dl class="codebox"><dt>Code: </dt><dd><code>static void move_to_pose&#40;uint16_t *pose&#41;<br />&#123;<br />    int i, j;<br />    int rc; <br />    uint16_t current&#91;NUM_SERVOS&#93;;<br />    int16_t deltas&#91;NUM_SERVOS&#93;;<br />    uint16_t speeds&#91;NUM_SERVOS&#93;;<br />    uint8_t fields&#91;NUM_SERVOS * 4&#93;; <br />    uint16_t max_delta = 0;<br />    float w;<br />    float x;<br />    float t;<br /><br />    // find the current positions<br />    for &#40;i=0; i&lt;NUM_SERVOS; i++&#41;<br />    &#123;   <br />        rc = dynamixel_get_position&#40;g_state.servo_ids&#91;i&#93;, &amp;current&#91;i&#93;&#41;;<br /><br />        deltas&#91;i&#93; = pose&#91;i&#93; - current&#91;i&#93;;<br />        if &#40;abs&#40;deltas&#91;i&#93;&#41; &gt; max_delta&#41;<br />            max_delta = abs&#40;deltas&#91;i&#93;&#41;;<br />    &#125;   <br /><br />    // our MAX_SPEED is 0x10 units/sec<br /><br />    // from ax-12 manual<br />    // wmax = 60 deg / 0.196 sec @ 10V<br />    // wmax = 306.1 deg/sec<br /><br />    // max range is 300 deg or 1024 units<br />    // 1 deg      x units<br />    // ------- =  ----------<br />    // 300 deg    1024 units<br />    // x = 1024/300<br />    // x = 3.41 units/deg<br /><br />    // wmax = 3.41 units/deg * 306.1 deg/sec<br />    // wmax = 1043.8 units/sec<br /><br />    // t = max_delta / w;<br /><br />    w = 306.1*MAX_SPEED / 1024.0;<br />    x = 1024/300.0;<br />    t = max_delta / &#40;x * w&#41;;<br /><br />    // calculate transit speeds<br />    for &#40;i=0; i&lt;NUM_SERVOS; i++&#41;<br />    &#123;<br />        speeds&#91;i&#93; = &#40;abs&#40;deltas&#91;i&#93;&#41; / &#40;float&#41; max_delta&#41; * MAX_SPEED;<br /><br />        // speed of 0 means largest possible<br />        if &#40;speeds&#91;i&#93; == 0&#41;<br />            speeds&#91;i&#93; = 1;<br />    &#125;<br /><br />    // cut it into frames<br />    for &#40;i=0; i&lt;NUM_FRAMES; i++&#41;<br />    &#123;<br />        for &#40;j=0; j&lt;NUM_SERVOS; j++&#41;<br />        &#123;<br />            int position_idx = j * 4;<br /><br />            int16_t segment = deltas&#91;j&#93; / &#40;float&#41; NUM_FRAMES;<br />            uint16_t position = current&#91;j&#93; + &#40;segment * i&#41; + segment;<br /><br />            fields&#91;position_idx + 0&#93; = position &amp; 0xff;<br />            fields&#91;position_idx + 1&#93; = &#40;position &gt;&gt; 8&#41; &amp; 0xff;<br />            fields&#91;position_idx + 2&#93; = speeds&#91;j&#93; &amp; 0xff;<br />            fields&#91;position_idx + 3&#93; = &#40;speeds&#91;j&#93; &gt;&gt; 8&#41; &amp; 0xff;<br />        &#125;<br /><br />         rc = dynamixel_tx_sync_write&#40;DYNAMIXEL_TABLE_GOAL_POSITION_L, NUM_SERVOS, g_state.servo_ids, 4, fields&#41;;<br /><br />        _delay_ms&#40;t * 1000 / NUM_FRAMES&#41;;<br />    &#125;<br />&#125;<br /></code></dd></dl><p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=1056">petej</a> — Fri Nov 21, 2008 6:09 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[cosa]]></name></author>
<updated>2008-11-19T19:46:59+01:00</updated>
<published>2008-11-19T19:46:59+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18322#p18322</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18322#p18322"/>
<title type="html"><![CDATA[Linear interpolation]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18322#p18322"><![CDATA[
You're right, sorry <img src="http://forum.robosavvy.com/images/smilies/icon_wink.gif" alt=";)" title="Wink" /><br /><br />Edit: Have you already tried to interpolate the joint angles and create intermediate frames? You won't have to change much if you do it in joint space (add an outer loop t=0..1, store end-start and do target=start + t*(end-start)).<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=412">cosa</a> — Wed Nov 19, 2008 7:46 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[petej]]></name></author>
<updated>2008-11-19T18:00:37+01:00</updated>
<published>2008-11-19T18:00:37+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18318#p18318</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18318#p18318"/>
<title type="html"><![CDATA[Linear interpolation]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18318#p18318"><![CDATA[
<blockquote class="uncited"><div><br />You have to use the maximum of all differences because you want all your servos to finish at the same time (which produces nicer arcs as you noticed).<br /></div></blockquote><br /><br />Really?  Using the max possible difference should produce the same result as the max of all differences, as far as arriving at the destination at the same time.  They would produce different results when it comes to how fast they move there, but they should all still arrive at the same time.  Or do I misunderstand?<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=1056">petej</a> — Wed Nov 19, 2008 6:00 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[cosa]]></name></author>
<updated>2008-11-19T13:20:44+01:00</updated>
<published>2008-11-19T13:20:44+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18311#p18311</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18311#p18311"/>
<title type="html"><![CDATA[Linear interpolation]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18311#p18311"><![CDATA[
Looks good to me <img src="http://forum.robosavvy.com/images/smilies/icon_smile.gif" alt=":)" title="Smile" /><br />Perhaps you'll get slightly better results if you tilt your arm by 90° so that all servos point into the same direction (then they don't have to compensate the gravitational forces). But the main problem will be the resolution of the ax-12.<br /><br />You have to use the maximum of all differences because you want all your servos to finish at the same time (which produces nicer arcs as you noticed).<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=412">cosa</a> — Wed Nov 19, 2008 1:20 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[petej]]></name></author>
<updated>2008-11-19T10:59:52+01:00</updated>
<published>2008-11-19T10:59:52+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18307#p18307</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18307#p18307"/>
<title type="html"><![CDATA[Linear interpolation]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18307#p18307"><![CDATA[
So I tried slowing it down, where the max speed it could achieve was 0x20 instead of 0x03ff.  At that speed I could also safely use the max of the current deltas to normalize, rather than a constant.  It seems to draw much better lines.<br /><br />I also tried a super-hacky method of sending multiple &quot;correction&quot; updates along the transit.  Basically, I just slept for a bit after sending the SYNC_WRITE, and then re-ran the whole query/write process if the last max delta was greater than some threshold.  It really didn't seem to improve anything.<br /><br />Here are the new lines:<br /><br /><img src="http://robosavvy.com/site/Builders/petej/new_lines_sm.JPG" alt="Image" /><br /><br />The closer lines are where I used the multiple SYNC_WRITEs per transit.  The further one is the same set of parameters, but just one SYNC_WRITE.  They look effectively the same to me... in fact, I'd almost claim that the latter looks better.<br /><br />In another test, I just slowed it down further to 0x10, and it's almost perfect.  I guess there's just a lot of inertia/momentum/forces at play, especially given how much leverage an arm that long has.<br /><br />Running short transits, you can't see the same error at higher speeds, which maybe explains why the humanoid motions don't suffer from this?<br /><br />I guess all of this further supports that failed dynamics class back in school. <img src="http://forum.robosavvy.com/images/smilies/icon_smile.gif" alt=":-)" title="Smile" /><p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=1056">petej</a> — Wed Nov 19, 2008 10:59 am</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[petej]]></name></author>
<updated>2008-11-19T07:23:06+01:00</updated>
<published>2008-11-19T07:23:06+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18301#p18301</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18301#p18301"/>
<title type="html"><![CDATA[Linear interpolation]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18301#p18301"><![CDATA[
Wow, thanks for your responses!<br /><br />The set of values used for this drawing are:<br /><br />servo IDs:<br />        { 3, 7, 11, 13, 15, }<br /><br />servo positions:<br />        { 0x0131, 0x02d3, 0x012d, 0x02d9, 0x0201 },<br />        { 0x00be, 0x0342, 0x00bc, 0x034c, 0x0202 },<br />        { 0x00ef, 0x0342, 0x00f0, 0x0343, 0x0298 },<br />        { 0x0176, 0x0290, 0x0179, 0x028f, 0x026c },<br /><br />The order of the IDs above is in ascending order.  The real order of the servos, from CM-5 out, is 15, 11, 3, 13, 7.  I didn't put them in order in this post (which would make entering them easier I'm sure) because I didn't want to risk adding copy/paste errors. <img src="http://forum.robosavvy.com/images/smilies/icon_smile.gif" alt=":-)" title="Smile" /><br /><br />MAX_DELTA is constant at 0x3ff, not the max of the current deltas.  The problem I figured with using the max of the current deltas is that when I scaled up the normalized values for speed, a small max delta could end up driving at full speed causing massive overshoot.  I'll give this a whirl anyway.<br /><br />bullit: Thanks for the link.  Those plotters were actually my &quot;inspiration&quot;, but I wanted to stick with C. <img src="http://forum.robosavvy.com/images/smilies/icon_smile.gif" alt=":-)" title="Smile" /><p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=1056">petej</a> — Wed Nov 19, 2008 7:23 am</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[billyzelsnack]]></name></author>
<updated>2008-11-19T04:38:55+01:00</updated>
<published>2008-11-19T04:38:55+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18300#p18300</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18300#p18300"/>
<title type="html"><![CDATA[Linear interpolation]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=3094&amp;p=18300#p18300"><![CDATA[
oh I see. Your start/end are in angles. What I meant was that the end point position being closer to the base. So it is meant to draw a sloped line wrt the base.<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=459">billyzelsnack</a> — Wed Nov 19, 2008 4:38 am</p><hr />
]]></content>
</entry>
</feed>