<?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=22&amp;t=8048" />

<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>2012-07-11T13:12:42+01:00</updated>

<author><name><![CDATA[RoboSavvy Forum]]></name></author>
<id>http://forum.robosavvy.com/feed.php?f=22&amp;t=8048</id>
<entry>
<author><name><![CDATA[MarcoP]]></name></author>
<updated>2012-07-11T13:12:42+01:00</updated>
<published>2012-07-11T13:12:42+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=8048&amp;p=34787#p34787</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=8048&amp;p=34787#p34787"/>
<title type="html"><![CDATA[Wild Thumper speed control with encoders]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=8048&amp;p=34787#p34787"><![CDATA[
Hi<br /><br />Actually i would think the 1:34 would be worse. Given there is less torque in the wheels, friction should play a even greater role.<br /><br />But the only way to find out would be to test it.<br /><br />And yes, the new motors are similar to those.<br /><br />Regards<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=3133">MarcoP</a> — Wed Jul 11, 2012 1:12 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SK]]></name></author>
<updated>2012-07-10T23:42:10+01:00</updated>
<published>2012-07-10T23:42:10+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=8048&amp;p=34779#p34779</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=8048&amp;p=34779#p34779"/>
<title type="html"><![CDATA[Wild Thumper speed control with encoders]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=8048&amp;p=34779#p34779"><![CDATA[
Yes, it's pretty clear that it doesn't matter which motor version is used. My question was more aimed at the potential difference in response curves of the 1:34 and 1:75 motor sets. Haven't tested it yet, but my hope would be that the 1:34 set might have a more linear curve compared to the 1:75 one. From looking at the curve you provide, I'd say it looks similar to the 1:75 I have used.<br /><br />I'm aware of a very expensive and complicated controller with encoder support available at Conrad germany, but never saw anyone use that:<br /><!-- m --><a class="postlink" href="http://www.conrad.de/ce/de/product/191607/Arexx-Ansteuerungsmodul-WTR-CK1/?ref=detview">http://www.conrad.de/ce/de/product/1916 ... ef=detview</a><!-- m --><br /><br />Also, Pololu has motors with encoders:<br /><!-- m --><a class="postlink" href="http://www.pololu.com/catalog/product/2275">http://www.pololu.com/catalog/product/2275</a><!-- m --><br />Are those what you're looking into?<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=212">SK</a> — Tue Jul 10, 2012 11:42 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MarcoP]]></name></author>
<updated>2012-07-10T21:02:29+01:00</updated>
<published>2012-07-10T21:02:29+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=8048&amp;p=34778#p34778</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=8048&amp;p=34778#p34778"/>
<title type="html"><![CDATA[Wild Thumper speed control with encoders]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=8048&amp;p=34778#p34778"><![CDATA[
Hi<br /><br />Since this encoder reads the output shaft it can work with either gear ratio.<br /><br />But actually this a bit of an improvised solution.<br />We will be launching soon motors with proper quadrature encoders that sit inside the housing so they will be sturdier.<br /><br />I am working with these encoders so that we can release encoder version of the Wild Thumper code soon after we get them.<br /><br />Regards<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=3133">MarcoP</a> — Tue Jul 10, 2012 9:02 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SK]]></name></author>
<updated>2012-07-10T20:08:24+01:00</updated>
<published>2012-07-10T20:08:24+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=8048&amp;p=34777#p34777</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=8048&amp;p=34777#p34777"/>
<title type="html"><![CDATA[Wild Thumper speed control with encoders]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=8048&amp;p=34777#p34777"><![CDATA[
Very nice modification. Is this for the 1:75 or 1:34 gear set? Are the parts available somewhere?<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=212">SK</a> — Tue Jul 10, 2012 8:08 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MarcoP]]></name></author>
<updated>2012-07-05T17:43:59+01:00</updated>
<published>2012-07-05T17:43:59+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=8048&amp;p=34736#p34736</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=8048&amp;p=34736#p34736"/>
<title type="html"><![CDATA[Wild Thumper speed control with encoders]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=8048&amp;p=34736#p34736"><![CDATA[
Did two videos showing how wild thumper behaves with encoders.<br /><br /><div class='bbmedia' data-url='http://www.youtube.com/watch?v=Sb4cvczdNH4?version=3&amp;amp;hl=en_US' style='margin: 1px; display: inline-block; vertical-align: bottom;'><div style='width: 200px; height: 40px; border: 1px solid #999; display: table-cell; text-align: center; vertical-align: middle; font: 10px/10px Verdana; color: #555; opacity: 0.5;'><a style='color: #105289; text-decoration: none;' href='http://phpbbex.com/' target='_blank'>phpBB</a> &#91;media&#93;</div><script>if (typeof bbmedia == 'undefined') { bbmedia = true; var e = document.createElement('script'); e.async = true; e.src = 'js/bbmedia.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(e, s); }</script></div><br /><br />Here you can see how the use of encoders enables precise trajectories. A circle in this example.<br /><br /><div class='bbmedia' data-url='http://www.youtube.com/watch?v=DREt2mEiLDI?version=3&amp;amp;hl=en_US' style='margin: 1px; display: inline-block; vertical-align: bottom;'><div style='width: 200px; height: 40px; border: 1px solid #999; display: table-cell; text-align: center; vertical-align: middle; font: 10px/10px Verdana; color: #555; opacity: 0.5;'><a style='color: #105289; text-decoration: none;' href='http://phpbbex.com/' target='_blank'>phpBB</a> &#91;media&#93;</div><script>if (typeof bbmedia == 'undefined') { bbmedia = true; var e = document.createElement('script'); e.async = true; e.src = 'js/bbmedia.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(e, s); }</script></div><br /><br />And here it enables constant speed despite increased load. (still needs some tweaking in the PID values)<br /><br />Regards<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=3133">MarcoP</a> — Thu Jul 05, 2012 5:43 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MarcoP]]></name></author>
<updated>2012-07-03T17:47:31+01:00</updated>
<published>2012-07-03T17:47:31+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=8048&amp;p=34717#p34717</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=8048&amp;p=34717#p34717"/>
<title type="html"><![CDATA[Wild Thumper speed control with encoders]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=8048&amp;p=34717#p34717"><![CDATA[
Hi <br /> <br />Seems the manufacturer has explained the difference between the left and right motors.<br /><br />It seems that the brushes in most brushed dc motors do not have an symmetrical arrangement. Because of that they will turn slightly faster in one direction than the other.<br /><br />Since motors on opposite sides of the Thumper rotate in different directions when it is moving forward this should explain the observed difference.<br /><br />Regards<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=3133">MarcoP</a> — Tue Jul 03, 2012 5:47 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MarcoP]]></name></author>
<updated>2012-06-29T16:06:17+01:00</updated>
<published>2012-06-29T16:06:17+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=8048&amp;p=34699#p34699</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=8048&amp;p=34699#p34699"/>
<title type="html"><![CDATA[Wild Thumper speed control with encoders]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=8048&amp;p=34699#p34699"><![CDATA[
What i did them was to create graphs to visualize how speed and acceleration of each motor evolve with throttle.<br /><a href="http://www.flickr.com/photos/robosavvy/7466763956/" class="postlink"><img src="http://farm9.staticflickr.com/8157/7466763956_7fd8036eee.jpg" alt="Image" /></a><br /><br />There you can conclude a few things:<br />The left motor has more acceleration and more top speed than the right one.<br />Since there is almost no drag (wheels are free spinning), as soon as initial drag is overcomed, speed reaches maximum value very quickly.<br />The acceleration instead, has a much more linear behaviour. Once initial drag is overcommed it can almost be said that the behaviour is linear in regards to throttle. This makes sense since throttle causes a current, and the torque of a motor is proportional to the current it consumes.<br /><br />So what is the point of all of this?<br /><br />You can do a PID controlled without this information, but if you use this information, you can generate a table where you have an approximation of the throttle required to set a specific speed or acceleration in a given motor. And this will greatly reduce overshooting and improve accuracy on the PID controller, since you are now working with real world data.<br /><br />Will follow up on that.<br /><br />Regards<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=3133">MarcoP</a> — Fri Jun 29, 2012 4:06 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MarcoP]]></name></author>
<updated>2012-06-29T16:08:34+01:00</updated>
<published>2012-06-29T15:59:32+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=8048&amp;p=34698#p34698</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=8048&amp;p=34698#p34698"/>
<title type="html"><![CDATA[Wild Thumper speed control with encoders]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=8048&amp;p=34698#p34698"><![CDATA[
Hi<br /><br />The main limitation we have had regarding the Wild Thumper was the ability to do speed control, due to the lack of encoders.<br /><br />So we have taken care of that:<br /><br />We got encoders for the wheels.<br /><a href="http://www.flickr.com/photos/robosavvy/7466770886/" class="postlink"><img src="http://farm9.staticflickr.com/8015/7466770886_e5d6876222.jpg" alt="Image" /></a><br /><br /><a href="http://www.flickr.com/photos/robosavvy/7466766200/" class="postlink"><img src="http://farm9.staticflickr.com/8156/7466766200_2c6f9a8437.jpg" alt="Image" /></a><br /><br /><br />This encoder consists of a stainless steel disk with 60 slots, that rotates between an infra-red emitter and receiver. This gives us a digital signal that changes 60 times per wheel rotation.<br /><br /><a href="http://www.flickr.com/photos/robosavvy/7466763676/" class="postlink"><img src="http://farm8.staticflickr.com/7109/7466763676_85f5351183.jpg" alt="Image" /></a><br /><br />The disk goes onto the shaft and the wheel goes on top.<br />We designed a small 3d printed part that secures the encoder pcb.<br /><br />The only modification needed is to replace the normal shaft screw with set screws so that they do not collide with the encoder pcb.<br /><br />We only added the encoder on one wheel on each side, since most of the time all wheels are in contact with the ground, meaning the wheels from either side will rotate in sync.<br /><br />The objective now is to do accurate speed control.<br /><br />But given we have now precise feedback on wheel speed we wanted to know something: How does the actual speed of the motors vary with pwm?<br /><br />We created then a small program for the arduino that cycles trough all possible throttles (0 to 255) and measures speed and acceleration. <br /><br /><br /><br /><dl class="codebox"><dt>Code: </dt><dd><code><br />#define LmotorA             3  // Left  motor H bridge, input A<br />#define LmotorB            11  // Left  motor H bridge, input B<br />#define RmotorA             5  // Right motor H bridge, input A<br />#define RmotorB             6  // Right motor H bridge, input B<br /><br />int lencoderPin = 2;<br />int rencoderPin = 4;<br /><br /><br />int throttle;<br /><br />int rticks = 0,lticks = 0;<br />int rSpeed = 0,lSpeed = 0;<br />int rAccel = 0,lAccel = 0;<br /><br />boolean rstate,lstate;<br /><br /><br />unsigned int temp;<br /><br />void setup&#40;&#41;<br />&#123;<br />  pinMode&#40;lencoderPin, INPUT&#41;;<br />  pinMode&#40;rencoderPin, INPUT&#41;;<br /><br />  Serial.begin&#40;115200&#41;;      // open the serial port at 9600 bps:<br /><br />&#125;<br /><br />void loop&#40;&#41;<br />&#123;<br /><br />    Serial.println&#40;&quot;Throttle;rAccel;lAccel;rSpeed;lSpeed &quot;&#41;;<br />    lstate!=digitalRead&#40;lencoderPin&#41;;<br />    rstate!=digitalRead&#40;rencoderPin&#41;;<br />  <br />    for &#40;throttle=0;throttle&lt;256;throttle++&#41;&#123;<br /><br />   analogWrite&#40;LmotorA, 0&#41;;<br />   analogWrite&#40;LmotorB, throttle&#41;;<br />   analogWrite&#40;RmotorA, 0&#41;;<br />   analogWrite&#40;RmotorB, throttle&#41;;<br /><br />   delay&#40;50&#41;;      //give 50ms second to gain some speed<br /><br />   unsigned long StartTime = millis&#40;&#41;;<br />  <br />   rticks=0;<br />   lticks=0;<br /><br />   do&#123;<br />  <br />          if&#40;lstate!=digitalRead&#40;lencoderPin&#41;&#41;&#123;<br />            lticks++;<br />            lstate=!lstate;<br />          &#125;<br />          <br />          if&#40;rstate!=digitalRead&#40;rencoderPin&#41;&#41;&#123;<br />            rticks++;<br />            rstate=!rstate;<br />          &#125;<br /> <br />   &#125;while&#40;&#40;millis&#40;&#41;-StartTime&#41;&lt;100&#41;;            //measure ticks during 100 ms<br />  <br />   rAccel=rticks*10;<br />   lAccel=lticks*10;<br /><br />        delay&#40;1000&#41;;                               //give it 1 second to stabilize speed<br /><br />        rticks=0;<br />   lticks=0;<br /><br />   StartTime = millis&#40;&#41;;<br /><br />   do&#123;<br />  <br />          if&#40;lstate!=digitalRead&#40;lencoderPin&#41;&#41;&#123;<br />            lticks++;<br />            lstate=!lstate;<br />          &#125;<br />          <br />          if&#40;rstate!=digitalRead&#40;rencoderPin&#41;&#41;&#123;<br />            rticks++;<br />            rstate=!rstate;<br />          &#125;<br /> <br />   &#125;while&#40;&#40;millis&#40;&#41;-StartTime&#41;&lt;100&#41;;            //measure ticks during 100 ms<br />  <br />   rSpeed=rticks*10;<br />   lSpeed=lticks*10;<br />  <br />   Serial.print&#40;throttle&#41;;<br />   Serial.print&#40;&quot;;&quot;&#41;;<br />   Serial.print&#40;rAccel&#41;;<br />   Serial.print&#40;&quot;;&quot;&#41;;<br />   Serial.print&#40;lAccel&#41;;<br />   Serial.print&#40;&quot;;&quot;&#41;;<br />   Serial.print&#40;rSpeed&#41;;<br />   Serial.print&#40;&quot;;&quot;&#41;;<br />   Serial.println&#40;lSpeed&#41;;<br /><br /><br />       analogWrite&#40;LmotorA, 0&#41;;    //stop the motor&#40;no active breaking&#41;<br />       analogWrite&#40;LmotorB, 0&#41;;<br />       analogWrite&#40;RmotorA, 0&#41;;<br />       analogWrite&#40;RmotorB, 0&#41;;<br />       delay&#40;1000&#41;; //give it time to stop<br />    <br />   &#125;  <br />   throttle=0;<br />   analogWrite&#40;LmotorA, 0&#41;;<br />   analogWrite&#40;LmotorB, throttle&#41;;<br />   analogWrite&#40;RmotorA, 0&#41;;<br />   analogWrite&#40;RmotorB, throttle&#41;;<br />   <br />   while&#40;1&#41;;<br />&#125;<br /></code></dd></dl><br /><br />If you start serial monitor the program will output values for speed and acceleration for each throttle value.<br /><br />The values will be output in this format:<br /><br /> <ul>Throttle;rAccel;lAccel;rSpeed;lSpeed <br />0;10;10;0;0<br />1;0;0;0;0<br />2;0;0;0;0<br />3;0;0;0;0<br />4;0;0;0;0<br />5;0;0;0;0<br />6;0;0;0;0<br />7;0;0;0;0<br />8;0;0;0;0<br />9;0;0;0;0<br />10;0;0;0;0<br />11;0;0;0;0<br />12;0;0;0;0<br />13;0;0;0;0</ul><br /><br />To those who do not recognize it, this in the CSV (Comma Separated Values) file format. Meaning when the program ends, just select all of the text, paste it in Notepad and save as filename.csv.<br /><br />You can now open it in Excel, where it will be nicely organized in rows and columns.<br /><br />To be continued in the next post<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=3133">MarcoP</a> — Fri Jun 29, 2012 3:59 pm</p><hr />
]]></content>
</entry>
</feed>