<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wikidot="http://www.wikidot.com/rss-namespace">

	<channel>
		<title>Curves instead of straight lines</title>
		<link>http://aseba.wikidot.com/forum/t-754962/curves-instead-of-straight-lines</link>
		<description>Posts in the discussion thread &quot;Curves instead of straight lines&quot; - wheels&#039; speed not synchronized</description>
				<copyright></copyright>
		<lastBuildDate>Tue, 18 Aug 2026 03:00:27 +0000</lastBuildDate>
		
					<item>
				<guid>http://aseba.wikidot.com/forum/t-754962#post-2161932</guid>
				<title>Re: Curves instead of straight lines</title>
				<link>http://aseba.wikidot.com/forum/t-754962/curves-instead-of-straight-lines#post-2161932</link>
				<description></description>
				<pubDate>Thu, 20 Nov 2014 09:53:31 +0000</pubDate>
				<wikidot:authorName>Michael Bonani</wikidot:authorName>				<wikidot:authorUserId>861355</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>From firmware V.8 you can calibrate your motor to make Thymio go straight.<br /> <a href="http://aseba.wikidot.com/en:thymiomotorcalibration">How to calibrate Thymio's motors</a></p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://aseba.wikidot.com/forum/t-754962#post-1929998</guid>
				<title>Re: Curves instead of straight lines</title>
				<link>http://aseba.wikidot.com/forum/t-754962/curves-instead-of-straight-lines#post-1929998</link>
				<description></description>
				<pubDate>Tue, 07 Jan 2014 08:59:59 +0000</pubDate>
				<wikidot:authorName>riedo</wikidot:authorName>				<wikidot:authorUserId>875981</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Hello,</p> <p>As of now the only solution if you want to go straight in an open loop, is to program both motors with different speeds that you find by trying.<br /> I can add your idea of entering a bias in VPL to the wishlist and we will discuss it with the main developer; however I would like to add something.</p> <p>As said above, no robots go straight, but indeed some can be more precise than others with expensive motors and calibration etc. In the case of Thymio II, as it is a low cost robot we can see more variation in the wheel speeds. This in our opinion is really a minor problem for learning robotics. Robots are not automatons that operate in open loop (i.e. without perceiving anything about the world); they have sensors, they can react.</p> <p>This <strong>sensory-motor loop</strong> is a key concept in robotics, and in many devices and systems that we use everyday. An &quot;intelligent&quot; robot reacts to the world surrounding it. Our goal when teaching robotics is to teach exactly this: how a machine can use information about the world surrounding it to solve the task we want.<br /> We think it's the wrong approach to make a very precise robot that can not adapt or acts blindly, thus we don't think the first step of learning robotics is to program behaviours like &quot;go straight for 4 seconds, then turn left 90°, then go straight 2 seconds&quot; to reach a target, and only then move on to sensors as if they were complicated. This is an <strong>automatons</strong>'s behaviour.</p> <p>Our philosophy is to have a <strong>reactive</strong> robot; to program things like &quot;move, turn right if there is something on the left, turn left if there is something on the right, stop when the target is detected&quot; to have an adaptive, robust behaviour even with low-price, not-so-precise hardware. The first step towards learning robotics could be, for example: &quot;move forward until an obstacle is detected&quot;.<br /> Everything in Thymio II and Aseba is designed with this philosophy in mind: many sensors, low-cost hardware, event-based programming, event-action pairs in VPL, robust robots that can handle shocks and falls without getting broken.</p> <p>I hope that now you understand better our philosophy, and why we do not consider making the robot go perfectly straight a priority.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://aseba.wikidot.com/forum/t-754962#post-1929571</guid>
				<title>Re: Curves instead of straight lines</title>
				<link>http://aseba.wikidot.com/forum/t-754962/curves-instead-of-straight-lines#post-1929571</link>
				<description></description>
				<pubDate>Mon, 06 Jan 2014 20:17:18 +0000</pubDate>
				<wikidot:authorName>dccc</wikidot:authorName>				<wikidot:authorUserId>1800150</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>I do not expect it to go perfectly straight (my Roomba does not do it either), but more straight that it does now, which should not be that hard.</p> <p>Assume that I know that my robot needs 2.54 (on average) less speed on a wheel than on an other</p> <p>I could of course program something like [schematically, I did not look up the precise function name]</p> <p>set.wheel.speed.right.calibrated(x,bias=0){<br /> set.wheel.speed.right(x+bias)<br /> }</p> <p>set.wheels.speed.left.calibrated(0,bias=-2.54){<br /> set.wheel.speed.left(x+bias)<br /> }</p> <p>and I do understand the pedagogical value of the experience, but aren't real-life robot calibrated? I mean to say, wouldn't it be possible to store the real-life bias somewhere in the firmware or by overloading e.g. the set.wheel.speed.left functions?</p> <p>BTW it is too early to introduce my child to these real-life complications. He enjoys very much the feedback from the proximity sensors to his actions, (that was a brilliant idea) and basic programming with the visual interface.</p> <p>The point is that the visual interface does not allow easily (for a child) a fine setting of the motor speed values. This is why I would suggest that one could enter the average bias somewhere in the settings of the visual programming interface and that the real values sent to the robot would be corrected. This would keep the kids happier while leaving the full complexity of the robot experience to the more grown-ups.</p> <p>Thanks for the time to take to enlighten me.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://aseba.wikidot.com/forum/t-754962#post-1929315</guid>
				<title>Re: Curves instead of straight lines</title>
				<link>http://aseba.wikidot.com/forum/t-754962/curves-instead-of-straight-lines#post-1929315</link>
				<description></description>
				<pubDate>Mon, 06 Jan 2014 13:54:53 +0000</pubDate>
				<wikidot:authorName>retp2401</wikidot:authorName>				<wikidot:authorUserId>890170</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>I think here we have a fundamental problem about how robots works. So let me tell you a basic property of robots:</p> <p>- Robots *NEVER* go straight.</p> <p>You can have the &quot;perfect&quot; calibration procedure and the most expensive motor, it won't go straight. You have to live with it. Robotic is hard.</p> <p>BTW, did you try once to walk with your eyes closed ? Did you go straight ?<br /> Think about it. BTW, it's the same with a car (although I don't recommend to do it &#8230;)</p> <p>So when you say &quot;(&#8230;) but I would really like to be able to leave my child programming without these complications.&quot; I disagree. This is not a complication, it's the real world.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://aseba.wikidot.com/forum/t-754962#post-1929274</guid>
				<title>Re: Curves instead of straight lines</title>
				<link>http://aseba.wikidot.com/forum/t-754962/curves-instead-of-straight-lines#post-1929274</link>
				<description></description>
				<pubDate>Mon, 06 Jan 2014 13:09:56 +0000</pubDate>
				<wikidot:authorName>dccc</wikidot:authorName>				<wikidot:authorUserId>1800150</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Many thanks for your answer. This however does not explain why the reported speed of the other motor is 0, without fluctuations</p> <p>Now the practical question is how to adjust the bias correction, since I wish to make my robot go straight. Since the remaining bias seems pretty constant, there should be a way to determine it, for instance by taking temporal averages.</p> <p>Of course one can correct it in a program, but I would really like to be able to leave my child programming without these complications.</p> <p>Thanks again for your help.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://aseba.wikidot.com/forum/t-754962#post-1929194</guid>
				<title>Re: Curves instead of straight lines</title>
				<link>http://aseba.wikidot.com/forum/t-754962/curves-instead-of-straight-lines#post-1929194</link>
				<description></description>
				<pubDate>Mon, 06 Jan 2014 10:49:40 +0000</pubDate>
				<wikidot:authorName>retp2401</wikidot:authorName>				<wikidot:authorUserId>890170</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>What you see is perfectly normal and not a problem of your robot.</p> <p>The wheel speed sensing is based on the <a href="http://en.wikipedia.org/wiki/Counter-electromotive_force">back-EMF</a> of the motor, and when the motor is not moving, the back EMF is strictly equal to 0 both in theory and in the real world. What you see with a speed fluctuating between 8 and -8 is in fact the power supply noise.</p> <p>If you look at the thymio electronic, the only way to sense the back emf is to connect one terminal of the motor winding to iteratively GND (0V) and then VBat (between 3.4-5.1V).<br /> You can have a look at the code doing this <a href="https://github.com/aseba-community/aseba-target-thymio2/blob/master/motor.c">here</a>.<br /> So depending of the motor rotation direction, we do:<br /> 1) Measure BackEMF either from GND or Vbat, depending of the motor rotation direction: STATE_VIND1<br /> 2) Measure the other one, because the motor can have changed it's direction since last measurement: STATE_VIND2<br /> 3) mesure Vbat (since it can change between 3.4 -&gt; 5.1): STATE_VBAT</p> <p>At step 3 we correct the motor's Vbat-connected backEMF with Vbat measured at step (3) so we can cancel the Vbat offset of the measurement.</p> <p>What you see is a little voltage fluctuation between step (1) or (2) and step (3) on Vbat. Thus the offset is not strictly canceled.</p> <p>FYI: a value of &quot;5&quot; mean 16mV, which is quite low since when the robot is connected to the computer VBAT is in fact connected to the USB power supply, thus what you see is the noise generated by your computer.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://aseba.wikidot.com/forum/t-754962#post-1928595</guid>
				<title>Re: Curves instead of straight lines</title>
				<link>http://aseba.wikidot.com/forum/t-754962/curves-instead-of-straight-lines#post-1928595</link>
				<description></description>
				<pubDate>Sun, 05 Jan 2014 14:00:13 +0000</pubDate>
				<wikidot:authorName>dccc</wikidot:authorName>				<wikidot:authorUserId>1800150</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Thanks for your answer</p> <p>I have checked that indeed at idel the var motor.left.speed is always fluctuating between -3 and 0. This means of course that Thymio believes that the left wheel does not rotates fast enough and compensates for it, which therefore makes it turn right. This is either a hardward defect (in which case we would love to hear about how to get it fixed), or a firmware issue. Could someone familiar with either of the two tell us a bit more about this point?</p> <p>Thanks in advance !</p> <p>Dccc</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://aseba.wikidot.com/forum/t-754962#post-1924476</guid>
				<title>Re: Curves instead of straight lines</title>
				<link>http://aseba.wikidot.com/forum/t-754962/curves-instead-of-straight-lines#post-1924476</link>
				<description></description>
				<pubDate>Sun, 29 Dec 2013 20:33:51 +0000</pubDate>
				<wikidot:authorName>mkany</wikidot:authorName>				<wikidot:authorUserId>1783279</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Hi,</p> <p>yes my thymio acts like your, but you can give motor.left.traget or motor.right.target other values, I have tested values (200, 205), the result was ok for me. thymio unfortunately no ordometer and the wheels can slip on surfaces. A calibration procedure is difficult. At a slower speed, it works better.</p> <p>Michael Kany</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://aseba.wikidot.com/forum/t-754962#post-1924386</guid>
				<title>Re: Curves instead of straight lines</title>
				<link>http://aseba.wikidot.com/forum/t-754962/curves-instead-of-straight-lines#post-1924386</link>
				<description></description>
				<pubDate>Sun, 29 Dec 2013 16:51:44 +0000</pubDate>
				<wikidot:authorName>Dwayne82</wikidot:authorName>				<wikidot:authorUserId>1799657</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Hi dccc, hello Community,</p> <p>same here! my brand-new Thymio acts like dccc described it.</p> <p>However, while the robot is resting (no wheel movement at all), i can see in aseba studio, that the variable &quot;motor.left.speed&quot; jumps between &quot;-1&quot; and &quot;-5&quot;, while &quot;motor.right.speed&quot; stays at &quot;0&quot; all the time.</p> <p>Is there a calibration procedure that one can execute?</p> <p>Thank you for support</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://aseba.wikidot.com/forum/t-754962#post-1923837</guid>
				<title>Curves instead of straight lines</title>
				<link>http://aseba.wikidot.com/forum/t-754962/curves-instead-of-straight-lines#post-1923837</link>
				<description></description>
				<pubDate>Sat, 28 Dec 2013 10:15:49 +0000</pubDate>
				<wikidot:authorName>dccc</wikidot:authorName>				<wikidot:authorUserId>1800150</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Hi All,</p> <p>Is there a way to tune the wheels speed so that the robot is able to move in a straight line instead of constantly turning (gyration radius is about 3 meters)? This happens when using all in-built programs.</p> <p>Thanks for your help</p> <p>Dcccccccccccccccccccccccc</p> 
				 	]]>
				</content:encoded>							</item>
				</channel>
</rss>