<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>Robert,</p>
    <p>Thanks for the link.  I don't have a google login so I'll have to
      figure out how to download it.</p>
    <p>The gyro/IMU I've been using is the CH6 from CH robotics, but it
      has some temperature drift I haven't been able to compensate so
      I'm in the process of switching to the BNO055 which guys in the
      group have had good success with.  Basically the robot runs normal
      odometry using the wheel encoders but substitutes the IMU heading
      for the theta value in the sin() and cos() calculations.</p>
    <p>The jBot robot uses a pretty pricey 9DOF IMU but runs basically
      the same software.  Here's a link with some code snippets for that
      robot that describes the basic technique.   It's the same link
      Murray already posted.<br>
    </p>
    <p><a
        href="http://www.geology.smu.edu/%7Edpa-www/robo/Encoder/imu_odo/"
        rel="noreferrer" target="_blank">http://www.geology.smu.edu/~dpa-www/robo/Encoder/imu_odo/</a></p>
    <a
      href="http://www.geology.smu.edu/%7Edpa-www/robo/Encoder/imu_odo/"
      rel="noreferrer" target="_blank"><br>
    </a>I've never written up the perimeter following behavior but
    here's the technique in general.  The perimeter following for the
    outdoor jBot uses the outer two Polaroid sensors but on the smaller
    nBot balancer it uses Sharp IR distance sensors.  These are mounted
    on each side and angled forward about 45 degrees and down about 15
    degrees.  <br>
    <br>
    The technique is to use the robot's normal obstacle avoidance
    sensors and behaviors to push the robot away from the perimeter in
    conjunction with the angled distance sensors to follow the
    perimeter.  The angled sensors are divided into four ranges which
    are basically 1) too close, turn gently away from wall, 2) deadzone,
    so just go straight, 3) too far , turn gently toward wall, and 4)
    way too far (no detection) so turn sharply towards wall.   <br>
    <br>
    In addition, the normal obstacle avoidance behaviors (detect on left
    - turn right, detect on right - turn left, detect in center - keep
    turning whatever way already turning) are modified so that center
    detections always turn away from the wall.  The "bumper" behaviors
    on both bots, actually derived from the IMU and not physical
    bumpers, also turn away from the wall for center detects.<br>
    <br>
    The  normal obstacle avoidance behaviors are higher priority than
    the perimeter following and so subsume those behaviors, and the
    bumper behaviors are the highest priority.<br>
    <br>
    Here's a video of the jBot robot navigating towards a waypoint on
    the far side of a large building.  It gets trapped in a cul-de-sac
    and switches to perimeter following to follow the outline of the
    building, and switches back to waypoint navigation once clear of the
    building.<br>
    <br>
    <a class="moz-txt-link-freetext" href="http://www.geology.smu.edu/dpa-www/robo/jbot/jbot2/jbot_ti2_m1.mpg">http://www.geology.smu.edu/dpa-www/robo/jbot/jbot2/jbot_ti2_m1.mpg</a><br>
    <br>
    <br>
    Hope this is helpful,<br>
    dpa<br>
    <br>
    <br>
    <br>
    <br>
    <div class="moz-cite-prefix">On 05/01/2020 10:15 AM, Robert Zeiler
      wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CAEpDUR-mo-yE9-1ung0DNLjjeyaCQgnorpSJUpMzTqnqss8D1w@mail.gmail.com">
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <div dir="ltr">
        <div class="gmail_default" style="font-size:small">Looks very
          interesting. What sensors did you use to follow the wall and
          how does the gyro work?</div>
        <div class="gmail_default" style="font-size:small"><br>
        </div>
        <div class="gmail_default" style="font-size:small">Attached is a
          video showing Herberts arm and gripper in use. Herbert
          understands verbal instruction. The action shown in the video
          is the result of telling Herbert to "take this" and then
          "release".  </div>
        <div class="gmail_default" style="font-size:small">
          <div class="gmail_chip gmail_drive_chip"
style="width:396px;height:18px;max-height:18px;background-color:rgb(245,245,245);padding:5px;font-family:arial;font-weight:bold;font-size:13px;border:1px
            solid rgb(221,221,221);line-height:1"><a
href="https://drive.google.com/file/d/1u1sMsd262GLKUGZ_7DbKNtMeVt1UKFLJ/view?usp=drive_web"
              target="_blank"
style="display:inline-block;max-width:366px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-decoration-line:none;padding:1px
              0px;border:none" moz-do-not-send="true"><img
                style="vertical-align: bottom; border: none;"
src="https://ssl.gstatic.com/docs/doclist/images/icon_10_generic_list.png"
                moz-do-not-send="true"> <span dir="ltr"
                style="vertical-align:bottom;text-decoration:none">IMG_0212
                (1).MOV</span></a><img
              src="//ssl.gstatic.com/ui/v1/icons/common/x_8px.png"
              style="opacity: 0.55; cursor: pointer; float: right;
              position: relative; top: -1px; display: none;"
              moz-do-not-send="true"></div>
          <br>
        </div>
      </div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">On Thu, Apr 30, 2020 at 1:36
          PM David Anderson <<a href="mailto:davida@smu.edu"
            moz-do-not-send="true">davida@smu.edu</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 bgcolor="#FFFFFF">
            <p>Cool.  Especially the force sensing gripper.  Any pics or
              video?</p>
            <p>I played with Roborealm some (many) years ago but didn't
              pursue it seriously at the time.  A couple of the guys in
              the group use lidar for localization for some of the robot
              contest courses though I'm not sure they use it for more
              real-world environments.  Contest courses are easy :)<br>
            </p>
            <p>I've had pretty good success with a generalized version
              of wall following which I call perimeter following (i.e.,
              doesn't require a nice flat wall) to do room navigation.  
              The robot also runs location calculations at 20Hz using
              gyro corrected odometry while perimeter following so it
              knows where it is and can, for example, stop when it gets
              back to the starting point, as you suggest. <br>
            </p>
            <p>Here's a video of the two-wheel balancing robot nbot
              doing some perimeter following in the basement of the
              Heroy building at SMU where I work, which is a pretty
              challenging environment:<br>
            </p>
            <p> <a
href="http://www.geology.smu.edu/dpa-www/robo/nbot/20120614_nbot_05b.mpg"
                target="_blank" moz-do-not-send="true">http://www.geology.smu.edu/dpa-www/robo/nbot/20120614_nbot_05b.mpg</a><br>
            </p>
            <p>regards</p>
            <p>dpa</p>
            <p><br>
            </p>
            <br>
            <div>On 04/30/2020 12:58 PM, Robert Zeiler wrote:<br>
            </div>
            <blockquote type="cite">
              <div dir="ltr">
                <div class="gmail_default" style="font-size:small">Thanks
                  I've been thinking about the left or right wall rule.
                  Yes, Herbert started out as a LEAF robot. I've gone
                  further than the group though. The last addition to
                  Herbert was an arm with several DOF and a force
                  sensing gripper. Had to learn a lot about torque and
                  gear and chain drives. </div>
                <div class="gmail_default" style="font-size:small">Have
                  you had any success using LIDAR or programs like
                  Roborealm. (Herbert uses Roborealm for some things).  </div>
                <div class="gmail_default" style="font-size:small"><br>
                </div>
                <div class="gmail_default" style="font-size:small">Robert</div>
              </div>
              <br>
              <div class="gmail_quote">
                <div dir="ltr" class="gmail_attr">On Thu, Apr 30, 2020
                  at 10:16 AM David Anderson 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 bgcolor="#FFFFFF">
                    <p>Robert,</p>
                    <p>Sounds like what you are looking for is SLAM.  
                      Though from your description perimeter following
                      would probably work and be much more robust.  Is
                      Herbert one of the LEAF robots?  <br>
                    </p>
                    <p>regards</p>
                    <p>dpa</p>
                    <p><br>
                    </p>
                    <br>
                    <div>On 04/30/2020 11:50 AM, Robert Zeiler via
                      DPRGlist wrote:<br>
                    </div>
                    <blockquote type="cite">
                      <div dir="ltr">
                        <div class="gmail_default"
                          style="font-size:small">Hi all</div>
                        <div class="gmail_default"
                          style="font-size:small">Thanks for the reply. 
                          I have also done odometry on my robots as well
                          as ultrasound and IR.</div>
                        <div class="gmail_default"
                          style="font-size:small">But, for this
                          application, I was looking for experience with
                          either visual or lidar mapping techniques.
                          Basically the idea is for the robot to enter a
                          room, scan the environment for obstacles (will
                          also have onboard sonar for collision
                          avoidance), make a map from the readouts and
                          then enter the room using the info to
                          establish a path through the room.  I want to
                          hit all areas of the room. The robot will
                          return to the starting point and stop.</div>
                        <div class="gmail_default"
                          style="font-size:small"><br>
                        </div>
                        <div class="gmail_default"
                          style="font-size:small">Robert</div>
                      </div>
                      <br>
                      <div class="gmail_quote">
                        <div dir="ltr" class="gmail_attr">On Wed, Apr
                          29, 2020 at 5:22 PM Murray Altheim 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">Hi Robert,<br>
                          <br>
                          I'm also keen to understand how to perform
                          some of the tricks David has<br>
                          perfected, and it's worth mentioning that he
                          has a helpful page on<br>
                          odometry at:<br>
                          <br>
                             <a
                            href="http://www.geology.smu.edu/%7Edpa-www/robo/Encoder/imu_odo/"
                            rel="noreferrer" target="_blank"
                            moz-do-not-send="true">http://www.geology.smu.edu/~dpa-www/robo/Encoder/imu_odo/</a><br>
                          <br>
                          As my robots are all targeted at indoors GPS
                          is unavailable.<br>
                          <br>
                          I've put together the beginnings of a page on
                          the NZPRG wiki on the<br>
                          subject at:<br>
                          <br>
                             <a
                            href="https://service.robots.org.nz/wiki/Wiki.jsp?page=Odometry"
                            rel="noreferrer" target="_blank"
                            moz-do-not-send="true">https://service.robots.org.nz/wiki/Wiki.jsp?page=Odometry</a><br>
                          <br>
                          but it's not had much love (yet) as I'm still
                          getting my PID controller<br>
                          to the point of functionality (and not being
                          sidetracked by every other<br>
                          whim that comes my way, such as Firmata).<br>
                          <br>
                          I've also considered having my robot perform
                          repeated scans of the signal<br>
                          strength of all the WiFi signals it can see
                          (dozens, in a suburban<br>
                          neighborhood) from the four corners of my
                          house, storing that information,<br>
                          and using that info, along with compass
                          heading (from a BNO055) to get an<br>
                          idea where in my house the robot is. Since the
                          Raspberry Pi has WiFi built<br>
                          in, this is a free exercise (no additional
                          sensors required). There's a<br>
                          lot of noise, you'll need both a blacklist
                          (because cell phones move<br>
                          around) and a whitelist (to prioritise known
                          sources as if they were<br>
                          beacons, or actually use a few older Pis as
                          beacons), but I'm still<br>
                          thinking it might work...<br>
                          <br>
                          Cheers,<br>
                          <br>
                          Murray<br>
                          <br>
                          On 30/04/20 12:07 pm, David Anderson via
                          DPRGlist wrote:<br>
                          > Robert (and Herbert)<br>
                          > <br>
                          > I've been doing autonomous robot
                          navigation successfully for some years now
                          using location information gathered from wheel
                          encoders and gyros on a number of my robots. 
                          I'd be happy to answer any questions you might
                          have.  You might start <br>
                          > out by looking at the navigation writeups
                          associated with my outdoor jBot robot:<br>
                          > <br>
                          > <a
                            href="http://www.geology.smu.edu/dpa-www/robo/jbot"
                            rel="noreferrer" target="_blank"
                            moz-do-not-send="true">http://www.geology.smu.edu/dpa-www/robo/jbot</a><br>
                          > <br>
                          > Here's a video of that robot navigating
                          through the woods to a waypoint 500 feet away
                          and returning to within a few inches of the
                          starting point:<br>
                          > <br>
                          > <a
href="http://www.geology.smu.edu/%7Edpa-www/robo/jbot/jbot_hatrick2_2.mpg"
                            rel="noreferrer" target="_blank"
                            moz-do-not-send="true">http://www.geology.smu.edu/~dpa-www/robo/jbot/jbot_hatrick2_2.mpg</a><br>
                          > <br>
                          > The jBot robot has an onboard GPS but
                          that is not used or required for these
                          navigation tasks.<br>
                          > <br>
                          > best regards,<br>
                          > <br>
                          > dpa<br>
                          > <br>
                          > On 04/29/2020 06:37 PM, Robert Zeiler via
                          DPRGlist wrote:<br>
                          >> Has anybody had any success using any
                          kind of mapping system or device for robot
                          autonomous navigation?.<br>
                          >><br>
                          >> Robert and Herbert (the robot)<br>
...........................................................................<br>
                          Murray Altheim <murray18 at altheim dot
                          com>                       = =  ===<br>
                          <a href="http://www.altheim.com/murray/"
                            rel="noreferrer" target="_blank"
                            moz-do-not-send="true">http://www.altheim.com/murray/</a> 
                                                             ===  ===<br>
                                                                       
                                                = =  ===<br>
                               In the evening<br>
                               The rice leaves in the garden<br>
                               Rustle in the autumn wind<br>
                               That blows through my reed hut.<br>
                                      -- Minamoto no Tsunenobu<br>
                          <br>
_______________________________________________<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>
                      <br>
                      <fieldset></fieldset>
                      <br>
                      <pre>_______________________________________________
DPRGlist mailing list
<a href="mailto:DPRGlist@lists.dprg.org" target="_blank" moz-do-not-send="true">DPRGlist@lists.dprg.org</a>
<a href="http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org" target="_blank" moz-do-not-send="true">http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org</a>
</pre>
                    </blockquote>
                    <br>
                  </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>
            <br>
          </div>
        </blockquote>
      </div>
    </blockquote>
    <br>
  </body>
</html>