<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Paul et al,</p>
<p>This is not correct. What I attempted to make "very clear" is
that the STEERING of the robot does not use a proportional
controller, but rather a linear controller with a deadzone. That
all happens above the level of the two PID controllers, which
obviously DO incorporate a proportional term, the "P" in "PID."
<br>
</p>
<p>I obviously need to think about my communication skills, as I
"very clearly" did not explain this well.</p>
<p>cheers!</p>
<p>dpa</p>
<p><br>
</p>
<div class="moz-cite-prefix">On 1/15/22 11:08 AM, Paul Bouchier via
DPRGlist wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CABfe6oSMOgVojq=Pt8Q5=XA=Xf0Lortkeu=Qx6bkC+DBfNMYJg@mail.gmail.com">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<p style="background-color: #f4eaa5;color: #000000
;margin:5px;padding: 2px;text-align: left !important;
align-content: center; display: block; border: 1px solid
#000000; font-size: large; font-family: sans-serif;"><strong><em
style="font-size: 11px;"> [EXTERNAL SENDER]</em></strong></p>
<div dir="ltr">
<div>Doug, Re your statement about David probably using a P
controller with Kp=1, he made it very clear at last RBNV that
he is not using a proportional controller; that he adds &
subtracts a speed offset from each wheel's setpoint that is a
constant, irregardless of the magnitude of angular error. i.e.
Kp=0. He mentioned the amount of offset as being around 10-15%
of full speed, though I imagine it's adjustable. The point is
it has constant magnitude, regardless of the magnitude of the
angular error.</div>
<div>Cheers</div>
<div>Paul<br>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Sat, Jan 15, 2022 at 9:22
AM Doug Paradis <<a href="mailto:paradug@gmail.com"
moz-do-not-send="true">paradug@gmail.com</a>> wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div dir="ltr">Paul,
<div> Regarding the method of reading encoders. I suggest
that you try pulse timing instead of pulse counting for
low encoder ticks per period. The following is a quote
from the article at <a
href="https://www.motioncontroltips.com/how-are-encoders-used-for-speed-measurement/"
target="_blank" moz-do-not-send="true">https://www.motioncontroltips.com/how-are-encoders-used-for-speed-measurement/</a>,
"<span
style="color:rgb(102,102,102);font-family:Raleway,sans-serif">With
the pulse timing method, a high-frequency clock signal </span><span
style="font-family:Raleway,sans-serif"><font
color="#000000">(like the system clock)</font></span><span
style="color:rgb(102,102,102);font-family:Raleway,sans-serif"> is
counted during one encoder period (the pitch, or
interval between two adjacent lines or windows). The
number of cycles of the clock signal (m), divided by the
clock frequency (f), gives the time for the encoder
period (the time for the encoder to rotate through one
pitch)."</span></div>
<div><font color="#000000"><br>
</font></div>
<div><font face="Raleway, sans-serif" color="#000000"> I
suspect that if you look into the details of David 's
code, he is actually using a P controller to correct the
heading error with a Kp of 1 (or a scaled value) but
doesn't call it a P controller. In other words, the
"rotation" is something like rotation = delta encoder
counts (i.e., rotation = Kp (delta encoder counts, where
Kp = 1).</font></div>
<div><font face="Raleway, sans-serif" color="#000000"><br>
</font></div>
<div><font face="Raleway, sans-serif" color="#000000">Regards,</font></div>
<div><font face="Raleway, sans-serif" color="#000000">Doug
P. </font></div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Sat, Jan 15, 2022 at
5:32 AM Paul Bouchier via DPRGlist <<a
href="mailto:dprglist@lists.dprg.org" target="_blank"
moz-do-not-send="true">dprglist@lists.dprg.org</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
<div dir="ltr">
<div>David - going back to your description of how you
manually turned the wheel a little bit when the speed
was supposed to be zero, and the integral of speed
error built up until it overpowered you and drove the
wheel back to where it started - I'm confused because
I don't understand how you must be calculating speed
for that to be true. A naive implementation of
speed-measurement would be to count the number of
encoder counts in each 40ms tick. So when you manually
moved the wheel, let's imagine there were a few ticks
when a few counts were detected, then no more counts
in any subsequent ticks. Speed should be zero after
motion stops, so where's the error to integrate and
cause corrective force to build up over time? Put
another way, there was a speed error a few seconds ago
but now there's no speed error; when does that error
"go away", and when does the PID loop stop remembering
it and trying to fight against it?</div>
<div><br>
</div>
<div>This is relevant to my current concerns with
Mowbot, since it was discovered at Tuesday's meeting
that the low rate of encoder ticks on Mowbot means
I'll only see 2 or 3 counts per tick (hard to
control), so I'm thinking about adopting Pat's
approach (which he gave up on) of measuring the period
between count incrementing. Pat - I'm also wondering
why you gave up on that approach and changed encoders
to one that has more counts - was there some basic
flaw in the approach?<br>
</div>
<div><br>
</div>
<div>Thanks</div>
<div><br>
</div>
<div>Paul<br>
</div>
</div>
_______________________________________________<br>
DPRGlist mailing list<br>
<a href="mailto:DPRGlist@lists.dprg.org" target="_blank"
moz-do-not-send="true">DPRGlist@lists.dprg.org</a><br>
<a
href="http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org"
rel="noreferrer" target="_blank" moz-do-not-send="true">http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org</a><br>
</blockquote>
</div>
</blockquote>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
DPRGlist mailing list
<a class="moz-txt-link-abbreviated" href="mailto:DPRGlist@lists.dprg.org">DPRGlist@lists.dprg.org</a>
<a class="moz-txt-link-freetext" href="http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org">http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org</a>
</pre>
</blockquote>
</body>
</html>