<?xml version="1.0" encoding="ISO-8859-1" ?><rss version="2.0">
<channel>
    <title>RoboRealm Forum</title>
    <link>http://www.RoboRealm.com/</link>
    <description>The newest forum threads.</description>
    <lastBuildDate>Tue, 30 Nov 1999 00:11:00 EST</lastBuildDate>
    <language>en-us</language>
    <copyright>Copyright: (C) RoboRealm, http://www.RoboRealm.com/</copyright>
    <docs>http://www.RoboRealm.com/</docs>

    <item>
        <title>No Title</title>
        <description>
        Hello Patrick,&lt;br&gt;&amp;nbsp;&amp;nbsp;Can you send the C# program to me?(yurikoyoki@gmail.com ) I&apos;m very interested in your program but&amp;nbsp;&amp;nbsp;I&apos;m a beginner in VS.&lt;br&gt;&amp;nbsp;&amp;nbsp;Thanks!&lt;br&gt;&lt;br&gt;regards,&lt;br&gt;Yuriko        </description>
        <link>http://www.roborealm.com/forum/index.php?thread_id=3067</link>
        <guid>http://www.roborealm.com/forum/index.php?thread_id=3067</guid>
        <pubDate>Tue, 30 Nov 1999 00:11:00 EST</pubDate>
    </item>
    <item>
        <title>No Title</title>
        <description>
        Hi Carmelo,&lt;br&gt;&lt;br&gt;I managed to keep my Rovio connected to RoboRealm long enough to test your .robo file and I did not experience the start/stop movement you reported.&amp;nbsp;&amp;nbsp;Instead I get smooth motion forward until the red blob is too big, then smooth motion backward until it is too small etc.&lt;br&gt;&lt;br&gt;--patrick        </description>
        <link>http://www.roborealm.com/forum/index.php?thread_id=3067</link>
        <guid>http://www.roborealm.com/forum/index.php?thread_id=3067</guid>
        <pubDate>Tue, 30 Nov 1999 00:11:00 EST</pubDate>
    </item>
    <item>
        <title>No Title</title>
        <description>
        No, I am refering to Short moves between any distance. Instead of going from x to y it stops and goes many times in between.        </description>
        <link>http://www.roborealm.com/forum/index.php?thread_id=3067</link>
        <guid>http://www.roborealm.com/forum/index.php?thread_id=3067</guid>
        <pubDate>Tue, 30 Nov 1999 00:11:00 EST</pubDate>
    </item>
    <item>
        <title>No Title</title>
        <description>
        Hey Carmelo,&lt;br&gt;&lt;br&gt;Do you mean that your Rovio moves forward too close to the red object, then backward too far away, then forward too close, and so on?&amp;nbsp;&amp;nbsp;If so, one possible cause is a lag in the video.&amp;nbsp;&amp;nbsp;I have noticed that when using the default settings of 320x240, Medium quality and 30 frames per second, there is a very noticeable lag between the movement of the robot and the updating of the video.&amp;nbsp;&amp;nbsp;The best response I&apos;ve been able to get is by setting the quality to Low and the Framerate to 6.&lt;br&gt;&lt;br&gt;--patrick&lt;br&gt;        </description>
        <link>http://www.roborealm.com/forum/index.php?thread_id=3067</link>
        <guid>http://www.roborealm.com/forum/index.php?thread_id=3067</guid>
        <pubDate>Tue, 30 Nov 1999 00:11:00 EST</pubDate>
    </item>
    <item>
        <title>No Title</title>
        <description>
        HI Patrick, I am getting it know. I was able to do a short program but I have one problem. Maybe you can help me. My Rovio responds to my statements. However, the movement of my rovio is not a constant one. Is lagging, like if momvement variable was switch on and off constantlly.&lt;br&gt;&lt;br&gt;Any Ideas?        </description>
        <link>http://www.roborealm.com/forum/index.php?thread_id=3067</link>
        <guid>http://www.roborealm.com/forum/index.php?thread_id=3067</guid>
        <pubDate>Tue, 30 Nov 1999 00:11:00 EST</pubDate>
    </item>
    <item>
        <title>No Title</title>
        <description>
        Problem Solved !!! Registering the DLL as specified on the forum.        </description>
        <link>http://www.roborealm.com/forum/index.php?thread_id=3067</link>
        <guid>http://www.roborealm.com/forum/index.php?thread_id=3067</guid>
        <pubDate>Tue, 30 Nov 1999 00:11:00 EST</pubDate>
    </item>
    <item>
        <title>No Title</title>
        <description>
        I keep getting the error ScriptSite.dll! Plase palce on the c:\\winnt...&lt;br&gt;&lt;br&gt;I did copy this file from the Folder to the Windows\\system32 directory and I still get the message. Is there an install for this application? or is it only the stand alone version I downloaded?        </description>
        <link>http://www.roborealm.com/forum/index.php?thread_id=3067</link>
        <guid>http://www.roborealm.com/forum/index.php?thread_id=3067</guid>
        <pubDate>Tue, 30 Nov 1999 00:11:00 EST</pubDate>
    </item>
    <item>
        <title>No Title</title>
        <description>
        Hi,&lt;br&gt;&lt;br&gt;I did look at the tutorials, but they are more of examples of applications. I was thinking more on a what if I dont know the product at all. introduction, how to use variables, programming structure, etc etc. I do know C, C++ and Basic. Bus havnt figure out how to aply it here.        </description>
        <link>http://www.roborealm.com/forum/index.php?thread_id=3067</link>
        <guid>http://www.roborealm.com/forum/index.php?thread_id=3067</guid>
        <pubDate>Tue, 30 Nov 1999 00:11:00 EST</pubDate>
    </item>
    <item>
        <title>No Title</title>
        <description>
        Hey Carmelo,&lt;br&gt;&lt;br&gt;If you already have your Rovio set up and you can get to its web interface using a regular browser, then the IP address you use to do that is the same IP address you use in the sample code I posted above.&lt;br&gt;&lt;br&gt;However, I should point out just in case you didn&apos;t already know, that RoboRealm now has a complete Rovio Module so you don&apos;t need to do the HttpRequest stuff I did in my sample code.&amp;nbsp;&amp;nbsp;The Rovio Module in RoboRealm is under the Control-&amp;gt;Robots category.&amp;nbsp;&amp;nbsp;There is also a help page for it in the Documentation page on this site.&lt;br&gt;&lt;br&gt;As for tutorials, have you looked at the Tutorial section on this site?&amp;nbsp;&amp;nbsp;It is really helpful to actually do the tutorials with your robot or camera.&lt;br&gt;&lt;br&gt;--patrick&lt;br&gt;        </description>
        <link>http://www.roborealm.com/forum/index.php?thread_id=3067</link>
        <guid>http://www.roborealm.com/forum/index.php?thread_id=3067</guid>
        <pubDate>Tue, 30 Nov 1999 00:11:00 EST</pubDate>
    </item>
    <item>
        <title>No Title</title>
        <description>
        Is there a Book, or Real Roborealm tutotial available?        </description>
        <link>http://www.roborealm.com/forum/index.php?thread_id=3067</link>
        <guid>http://www.roborealm.com/forum/index.php?thread_id=3067</guid>
        <pubDate>Tue, 30 Nov 1999 00:11:00 EST</pubDate>
    </item>
    <item>
        <title>No Title</title>
        <description>
        How do I do this step?&lt;br&gt;3) The constant &quot;RovioBaseUri&quot; in the declarations needs to be set to &lt;br&gt;&amp;nbsp;&amp;nbsp; your Rovio&apos;s IP address.&amp;nbsp;&amp;nbsp;Also, I have Rovio&apos;s user authentication &lt;br&gt;&amp;nbsp;&amp;nbsp; turned off to keep life simple.&amp;nbsp;&amp;nbsp;(My Rovio is behind a firewall.) &lt;br&gt;&lt;br&gt;        </description>
        <link>http://www.roborealm.com/forum/index.php?thread_id=3067</link>
        <guid>http://www.roborealm.com/forum/index.php?thread_id=3067</guid>
        <pubDate>Tue, 30 Nov 1999 00:11:00 EST</pubDate>
    </item>
    <item>
        <title>No Title</title>
        <description>
        To keep the post size manageable, here are just the essential pieces&lt;br&gt;of my code.&amp;nbsp;&amp;nbsp;It would great if others could post back any improvements&lt;br&gt;or variations.&lt;br&gt;&lt;br&gt;Have fun!&lt;br&gt;&lt;br&gt;--patrick&lt;br&gt;&lt;br&gt;Notes:&lt;br&gt;&lt;br&gt;1) The Rovio camera needs to be in the down position so it can see the&lt;br&gt;&amp;nbsp;&amp;nbsp; carpet immediately in front of it.&amp;nbsp;&amp;nbsp;I also set it for 320x240&lt;br&gt;&amp;nbsp;&amp;nbsp; resolution, High quality and 25 fps.&lt;br&gt;&lt;br&gt;2) The code assumes that RoboRealm is already up and running with the&lt;br&gt;&amp;nbsp;&amp;nbsp; attached .robo file loaded.&lt;br&gt;&lt;br&gt;3) The constant &quot;RovioBaseUri&quot; in the declarations needs to be set to&lt;br&gt;&amp;nbsp;&amp;nbsp; your Rovio&apos;s IP address.&amp;nbsp;&amp;nbsp;Also, I have Rovio&apos;s user authentication&lt;br&gt;&amp;nbsp;&amp;nbsp; turned off to keep life simple.&amp;nbsp;&amp;nbsp;(My Rovio is behind a firewall.)&lt;br&gt;&lt;br&gt;4) My main form has a timer control called RovioTimer, with the&lt;br&gt;&amp;nbsp;&amp;nbsp; interval set to 100ms.&amp;nbsp;&amp;nbsp;(You can play with this value of&lt;br&gt;&amp;nbsp;&amp;nbsp; course.)&amp;nbsp;&amp;nbsp;As you will see below, it fires the &quot;Explore&quot; method on&lt;br&gt;&amp;nbsp;&amp;nbsp; every tick.&amp;nbsp;&amp;nbsp;The Rovio API doesn&apos;t seem to have a motor control&lt;br&gt;&amp;nbsp;&amp;nbsp; mode of cruising until stopped, so you have to continually tell it&lt;br&gt;&amp;nbsp;&amp;nbsp; drive with each timer tick--even if you just want to go straight&lt;br&gt;&amp;nbsp;&amp;nbsp; for awhile.&lt;br&gt;&lt;br&gt;5) The one situation where Rovio is most likely to get into trouble&lt;br&gt;&amp;nbsp;&amp;nbsp; when using the following &quot;Explore&quot; algorithm is getting a front&lt;br&gt;&amp;nbsp;&amp;nbsp; wheel caught on an object (e.g. door frame) that was outside its&lt;br&gt;&amp;nbsp;&amp;nbsp; field of view when approaching.&amp;nbsp;&amp;nbsp;Unfortunately the Rovio&apos;s camera&lt;br&gt;&amp;nbsp;&amp;nbsp; has a fairly narrow field of view...&lt;br&gt;&lt;br&gt;Assembly/DLL References:&lt;br&gt;&lt;br&gt;RR_COM_API.dll (Found in your RoboRealm Program folder.)&lt;br&gt;System.Web&lt;br&gt;&lt;br&gt;// Key Name Spaces&lt;br&gt;&lt;br&gt;using System.Net;&lt;br&gt;using System.Web;&lt;br&gt;using System.Threading;&lt;br&gt;using System.IO;&lt;br&gt;&lt;br&gt;// Global Declarations&lt;br&gt;&lt;br&gt;public static RR_COM_APILib.API_Wrapper RoboRealm;&lt;br&gt;public static HttpWebRequest RovioRequest = null;&lt;br&gt;public static HttpWebResponse RovioResponse = null;&lt;br&gt;public const string RovioBaseUri = &quot;http://192.168.1.2/&quot;;&lt;br&gt;public int RR_Highest_x, RR_Highest_y, RR_Mid_x, RR_Blob_COG_x RR_Blob_COG_y;&lt;br&gt;public int RR_COG_x, RR_COG_y, RR_Target_area, RR_Max_radius, RR_Blob_area;&lt;br&gt;public static int RovioSpeed = 5;&lt;br&gt;public static int RovioDriveCode = 1;&lt;br&gt;public static int RovioDriveSleep = 100;&lt;br&gt;public bool isMoving = false;&lt;br&gt;public static bool IRobstacleDetected = false;&lt;br&gt;public static string lastMessage = &quot;&quot;;&lt;br&gt;public string lastAction = &quot;&quot;;&lt;br&gt;public string lastMove = &quot;&quot;;&lt;br&gt;public int lastDirection = 0;&lt;br&gt;public ArrayList SensorFlags = new ArrayList();&lt;br&gt;&lt;br&gt;// Key Methods&lt;br&gt;&lt;br&gt;private void Rovio_Load(object sender, EventArgs e)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;RoboRealm = new RR_COM_APILib.API_Wrapper();&lt;br&gt;&amp;nbsp;&amp;nbsp;RoboRealm.Connect(&quot;localhost&quot;);&lt;br&gt;}&lt;br&gt;&lt;br&gt;private void RovioDrive(int navCode, int speed)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;RovioRequest = (HttpWebRequest)WebRequest.Create(RovioBaseUri + &quot;/rev.cgi?Cmd=nav&amp;action=18&amp;drive=&quot; + navCode.ToString() + &quot;&amp;speed=&quot; + speed.ToString());&lt;br&gt;&amp;nbsp;&amp;nbsp;RovioResponse = (HttpWebResponse)RovioRequest.GetResponse();&lt;br&gt;&amp;nbsp;&amp;nbsp;String ver = RovioResponse.ProtocolVersion.ToString();&lt;br&gt;&amp;nbsp;&amp;nbsp;StreamReader reader = new StreamReader(RovioResponse.GetResponseStream());&lt;br&gt;&amp;nbsp;&amp;nbsp;string str = reader.ReadLine();&lt;br&gt;&amp;nbsp;&amp;nbsp;while (str != null)&lt;br&gt;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;str = reader.ReadLine();&lt;br&gt;&amp;nbsp;&amp;nbsp;}&lt;br&gt;}&lt;br&gt;&lt;br&gt;public static bool RovioObstacleDetected()&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;string status = getRovioNavStatus();&lt;br&gt;&amp;nbsp;&amp;nbsp;if (status.Substring(status.Length - 1, 1) == &quot;6&quot;) return true;&lt;br&gt;&amp;nbsp;&amp;nbsp;else return false;&lt;br&gt;}&lt;br&gt;&lt;br&gt;public static void RRsetVariable(string variable, string value)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;if (value != &quot;&quot; &amp;&amp; value != lastMessage)&lt;br&gt;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lastMessage = value;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RoboRealm.SetVariable(variable, value);&lt;br&gt;&amp;nbsp;&amp;nbsp;}&lt;br&gt;}&lt;br&gt;&lt;br&gt;private void RovioTimer_Tick(object sender, EventArgs e)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;Explore();&lt;br&gt;}&lt;br&gt;&lt;br&gt;private void Explore()&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;int leftThreshold = 25;&lt;br&gt;&amp;nbsp;&amp;nbsp;int rightThreshold = 25;&lt;br&gt;&amp;nbsp;&amp;nbsp;int leftRightThreshold = 30;&lt;br&gt;&amp;nbsp;&amp;nbsp;int leftCheck;&lt;br&gt;&amp;nbsp;&amp;nbsp;int rightCheck;&lt;br&gt;&amp;nbsp;&amp;nbsp;int forwardThreshold = 40;&lt;br&gt;&amp;nbsp;&amp;nbsp;int reverseThreshold = 25;&lt;br&gt;&amp;nbsp;&amp;nbsp;int turnThreshold = 40;&lt;br&gt;&amp;nbsp;&amp;nbsp;int displaceThreshold = 40;&lt;br&gt;&amp;nbsp;&amp;nbsp;int widthThreshold = 80;&lt;br&gt;&amp;nbsp;&amp;nbsp;int pathAreaThreshold = 10000;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;RovioSpeed = 5;&lt;br&gt;&amp;nbsp;&amp;nbsp;int RovioTurnSpeed = Math.Max(RovioSpeed, 5);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;RR_Blob_COG_x = Convert.ToInt16(RoboRealm.GetVariable(&quot;COG_X&quot;));&lt;br&gt;&amp;nbsp;&amp;nbsp;RR_Blob_COG_y = Convert.ToInt16(RoboRealm.GetVariable(&quot;COG_Y&quot;));&lt;br&gt;&amp;nbsp;&amp;nbsp;RR_Highest_x = Convert.ToInt16(RoboRealm.GetVariable(&quot;HIGHEST_MIDDLE_X&quot;));&lt;br&gt;&amp;nbsp;&amp;nbsp;RR_Highest_y = Convert.ToInt16(RoboRealm.GetVariable(&quot;HIGHEST_MIDDLE_Y&quot;));&lt;br&gt;&amp;nbsp;&amp;nbsp;RR_Mid_x = Convert.ToInt16(RoboRealm.GetVariable(&quot;IMAGE_WIDTH&quot;)) / 2;&lt;br&gt;&amp;nbsp;&amp;nbsp;RR_Max_radius = Convert.ToInt16(RoboRealm.GetVariable(&quot;MAX_RADIUS&quot;));&lt;br&gt;&amp;nbsp;&amp;nbsp;RR_Blob_area = Convert.ToInt32(RoboRealm.GetVariable(&quot;AREA&quot;));&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;// Set up our sensor flags.&lt;br&gt;&amp;nbsp;&amp;nbsp;SensorFlags.Clear();&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;// Does the Rovio IR detect an obstacle?&lt;br&gt;&amp;nbsp;&amp;nbsp;if (RovioObstacleDetected()) SensorFlags.Add(&quot;IR obstacle&quot;);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;// Is the path corridor too narrow?&lt;br&gt;&amp;nbsp;&amp;nbsp;if (RR_Max_radius &amp;lt; widthThreshold) SensorFlags.Add(&quot;too narrow&quot;);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;// Have we run out of carpet ahead?&lt;br&gt;&amp;nbsp;&amp;nbsp;if (RR_Highest_y &amp;lt; reverseThreshold || RR_Blob_area &amp;lt; pathAreaThreshold) SensorFlags.Add(&quot;dead end&quot;);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;// Are we almost out of carpet ahead?&lt;br&gt;&amp;nbsp;&amp;nbsp;if (RR_Highest_y &amp;lt; forwardThreshold) SensorFlags.Add(&quot;road ends ahead&quot;);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;// Is the current path corridor displaced left or right? (This&lt;br&gt;&amp;nbsp;&amp;nbsp;// indicates an obstacle nearby to one side.)&lt;br&gt;&amp;nbsp;&amp;nbsp;if (Math.Abs(RR_Blob_COG_x - RR_Mid_x) &amp;gt; displaceThreshold) SensorFlags.Add(&quot;crooked path&quot;);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;// What&apos;s our best escape direction.&lt;br&gt;&amp;nbsp;&amp;nbsp;leftCheck = RR_Mid_x - leftThreshold;&lt;br&gt;&amp;nbsp;&amp;nbsp;rightCheck = RR_Mid_x + rightThreshold;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;if (RR_Highest_x &amp;lt;= leftCheck) SensorFlags.Add(&quot;escape left&quot;);&lt;br&gt;&amp;nbsp;&amp;nbsp;else SensorFlags.Add(&quot;escape right&quot;);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;// Is there a preferred path to the left or right?&lt;br&gt;&amp;nbsp;&amp;nbsp;if (RR_Highest_y - RR_Blob_COG_y &amp;gt; turnThreshold &amp;&amp; RR_Blob_COG_y &amp;lt; leftRightThreshold)&lt;br&gt;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (RR_Highest_x &amp;lt;= leftCheck)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SensorFlags.Add(&quot;turn left&quot;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else if (RR_Highest_x &amp;gt;= rightCheck)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SensorFlags.Add(&quot;turn right&quot;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;// Now act accordingly.&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;// Make sure we don&apos;t get trapped in a left-right oscillation.&lt;br&gt;&amp;nbsp;&amp;nbsp;if (SensorFlags.Contains(&quot;escape right&quot;) &amp;&amp; lastAction == &quot;left&quot;)&lt;br&gt;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SensorFlags.Remove(&quot;escape right&quot;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SensorFlags.Add(&quot;escape left&quot;);&lt;br&gt;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;else if (SensorFlags.Contains(&quot;escape left&quot;) &amp;&amp; lastAction == &quot;right&quot;)&lt;br&gt;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SensorFlags.Remove(&quot;escape left&quot;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SensorFlags.Add(&quot;escape right&quot;);&lt;br&gt;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;// First, avoid any IR obstacles or dead ends.&lt;br&gt;&amp;nbsp;&amp;nbsp;if (SensorFlags.Contains(&quot;IR obstacle&quot;))&lt;br&gt;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (SensorFlags.Contains(&quot;escape right&quot;))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RovioDrive(4, RovioTurnSpeed);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RovioDrive(6, RovioTurnSpeed);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastAction = &quot;right&quot;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RovioDrive(3, RovioTurnSpeed);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RovioDrive(5, RovioTurnSpeed);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastAction = &quot;left&quot;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&quot;Avoid obstacle&quot;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RRsetVariable(&quot;ACTION&quot;, &quot;IR Obstacle Detected&quot;);&lt;br&gt;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;// Now the dead ends.&lt;br&gt;&amp;nbsp;&amp;nbsp;else if (SensorFlags.Contains(&quot;dead end&quot;))&lt;br&gt;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (SensorFlags.Contains(&quot;escape right&quot;))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RovioDrive(6, RovioTurnSpeed);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastAction = &quot;right&quot;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RovioDrive(5, RovioTurnSpeed);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastAction = &quot;left&quot;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&quot;Dead end.&quot;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RRsetVariable(&quot;ACTION&quot;, &quot;Dead End Detected&quot;);&lt;br&gt;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;// Is the path ahead too narrow?&lt;br&gt;&amp;nbsp;&amp;nbsp;else if (SensorFlags.Contains(&quot;too narrow&quot;))&lt;br&gt;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (SensorFlags.Contains(&quot;escape right&quot;))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RovioDrive(6, RovioTurnSpeed);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastAction = &quot;right&quot;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RovioDrive(5, RovioTurnSpeed);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastAction = &quot;left&quot;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&quot;Too narrow&quot;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RRsetVariable(&quot;ACTION&quot;, &quot;Too Narrow&quot;);&lt;br&gt;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;// Are we running out of carpet ahead?&lt;br&gt;&amp;nbsp;&amp;nbsp;else if (SensorFlags.Contains(&quot;road ends ahead&quot;))&lt;br&gt;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (SensorFlags.Contains(&quot;escape right&quot;))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RovioDrive(6, RovioTurnSpeed);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastAction = &quot;right&quot;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RovioDrive(5, RovioTurnSpeed);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastAction = &quot;left&quot;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&quot;Running out of carpet&quot;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RRsetVariable(&quot;ACTION&quot;, &quot;Not Enough Room&quot;);&lt;br&gt;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;// Is the current path corridor displaced left or right?&lt;br&gt;&amp;nbsp;&amp;nbsp;else if (SensorFlags.Contains(&quot;crooked path&quot;))&lt;br&gt;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (RR_Blob_COG_x - RR_Mid_x &amp;lt; 0)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RovioDrive(7, RovioSpeed);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&quot;Skew left&quot;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RRsetVariable(&quot;ACTION&quot;, &quot;Skew Left&quot;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastAction = &quot;skew left&quot;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RovioDrive(8, RovioSpeed);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&quot;Skew right&quot;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RRsetVariable(&quot;ACTION&quot;, &quot;Skew Right&quot;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastAction = &quot;skew right&quot;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;// All clear ahead so check to see if we should go left, right or straight.&lt;br&gt;&amp;nbsp;&amp;nbsp;else if (SensorFlags.Contains(&quot;turn left&quot;))&lt;br&gt;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RovioDrive(7, RovioSpeed);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&quot;Skew left&quot;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RRsetVariable(&quot;ACTION&quot;, &quot;Skew Left&quot;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastAction = &quot;skew left&quot;;&lt;br&gt;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;else if (SensorFlags.Contains(&quot;turn right&quot;))&lt;br&gt;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RovioDrive(8, RovioSpeed);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&quot;Skew right&quot;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RRsetVariable(&quot;ACTION&quot;, &quot;Skew Right&quot;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastAction = &quot;skew right&quot;;&lt;br&gt;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;else&lt;br&gt;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RovioDrive(1, RovioSpeed);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&quot;Go straight&quot;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RRsetVariable(&quot;ACTION&quot;, &quot;Go Straight&quot;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastAction = &quot;straight&quot;;&lt;br&gt;&amp;nbsp;&amp;nbsp;}&lt;br&gt;}&lt;br&gt;&lt;br&gt;        </description>
        <link>http://www.roborealm.com/forum/index.php?thread_id=3067</link>
        <guid>http://www.roborealm.com/forum/index.php?thread_id=3067</guid>
        <pubDate>Tue, 30 Nov 1999 00:11:00 EST</pubDate>
    </item>
    <item>
        <title>No Title</title>
        <description>
        How about posting the example C# code?&amp;nbsp;&amp;nbsp;I&apos;d love to see it.&lt;br&gt;&lt;br&gt;John        </description>
        <link>http://www.roborealm.com/forum/index.php?thread_id=3067</link>
        <guid>http://www.roborealm.com/forum/index.php?thread_id=3067</guid>
        <pubDate>Tue, 30 Nov 1999 00:11:00 EST</pubDate>
    </item>
    <item>
        <title>RoboRealm + Rovio</title>
        <description>
        Hello,&lt;br&gt;&lt;br&gt;Just in case some of you got a Rovio from Santa, I thought you might&lt;br&gt;find it interesting to see how easy it is to get it running with&lt;br&gt;RoboRealm.&amp;nbsp;&amp;nbsp;WowWee has made the Rovio API available at:&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://www.wowweesupport.com/pdf/Rovio_API_Specifications_v1.2.pdf&quot; target=&quot;_blank&quot;&gt;http://www.wowweesupport.com/&lt;wbr&gt;pdf/&lt;wbr&gt;Rovio_&lt;wbr&gt;API_&lt;wbr&gt;Specifications_&lt;wbr&gt;v1.2.pdf&lt;/a&gt;&lt;br&gt;&lt;br&gt;As you can see from the document, the API is simply a series of&lt;br&gt;parameterized HTTP commands which makes it easy to control the Rovio&lt;br&gt;from any language that can send HTTP requests.&amp;nbsp;&amp;nbsp;(You can test them out&lt;br&gt;by simply entering one of the commands in your web browser&apos;s location&lt;br&gt;box.)&lt;br&gt;&lt;br&gt;Once you set up your Rovio and can access it from a web browser, you&lt;br&gt;can proceed below.&amp;nbsp;&amp;nbsp;To keep things simple, I turned off Rovio&apos;s user&lt;br&gt;authentication by way of the &quot;Settings-&amp;gt;Security&quot; tab.&amp;nbsp;&amp;nbsp;Next, fire up&lt;br&gt;RoboRealm and use the camera selector to choose &quot;Wowwee Ltd. Rovio&quot;&lt;br&gt;for your video source--I guess the Rovio installation sets up a vitual&lt;br&gt;camera by this name.&lt;br&gt;&lt;br&gt;Inspired by the RoboRealm Obstacle Avoidance tutorial, I used the&lt;br&gt;attached .robo file to determine the best path for Rovio to follow in&lt;br&gt;a cluttered enviroment.&amp;nbsp;&amp;nbsp;I also use the Rovio&apos;s forward facing IR&lt;br&gt;detector to warn of objects straight ahead.&amp;nbsp;&amp;nbsp;I then wrote a simple C#&lt;br&gt;program together with the RoboRealm API to use a number of variables&lt;br&gt;from the .robo file to steer the robot.&amp;nbsp;&amp;nbsp;You can see several test&lt;br&gt;videos I made at the following links.&amp;nbsp;&amp;nbsp;The videos use a split screen&lt;br&gt;with the view from Rovio&apos;s camera on the left.&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=_Zl7yCYxSsg&quot; target=&quot;_blank&quot;&gt;http://www.youtube.com/&lt;wbr&gt;watch?v=_&lt;wbr&gt;Zl7yCYxSsg&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=qn_UwVjAbCo&quot; target=&quot;_blank&quot;&gt;http://www.youtube.com/&lt;wbr&gt;watch?v=qn_&lt;wbr&gt;UwVjAbCo&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=SaPIvQGkS6I&quot; target=&quot;_blank&quot;&gt;http://www.youtube.com/&lt;wbr&gt;watch?v=SaPIvQGkS6I&lt;/a&gt;&lt;br&gt;&lt;br&gt;--patrick&lt;br&gt;        </description>
        <link>http://www.roborealm.com/forum/index.php?thread_id=3067</link>
        <guid>http://www.roborealm.com/forum/index.php?thread_id=3067</guid>
        <pubDate>Tue, 30 Nov 1999 00:11:00 EST</pubDate>
    </item>
</channel>
</rss>
