<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel rdf:about="https://community.wolfram.com">
    <title>Community RSS Feed</title>
    <link>https://community.wolfram.com</link>
    <description>RSS Feed for Wolfram Community showing any discussions tagged with Robotics sorted by most replies.</description>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/23261" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/863933" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/533151" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2763581" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1153218" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/491285" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2915661" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/824280" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/756017" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2137315" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1805445" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/615905" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/2111005" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1276016" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/551187" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/459303" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1273291" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1171718" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/533401" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/480096" />
      </rdf:Seq>
    </items>
  </channel>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/23261">
    <title>How do I connect Arduino to Mathematica kernel?</title>
    <link>https://community.wolfram.com/groups/-/m/t/23261</link>
    <description>I&amp;#039;ve recently started having fun with Arduino (see [b][url=http://www.arduino.cc/]www.arduino.com[/url][/b] for details).  The memory and processing speed is far below what is necessary to run the Mathematica kernel, but I wonder if an Arduino program might somehow make calls to a Mathematica kernel (running on a network-connected machine) and get results back.  Has anyone done this?</description>
    <dc:creator>David DeBrota</dc:creator>
    <dc:date>2012-10-19T12:17:10Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/863933">
    <title>Walking strandbeest dynamics</title>
    <link>https://community.wolfram.com/groups/-/m/t/863933</link>
    <description>Many of you have seen the strandbeest (from Dutch, meaning beach-beast). These PVC tube animals created by Theo Jansen walk along the beach and are wind powered:&#xD;
&#xD;
![enter image description here][1]&#xD;
&#xD;
Years ago (2009 to be more exact) I made a post on my blog about the movement of the legs, as evidenced by the still-nicely-working Mathematica notebook:&#xD;
&#xD;
![enter image description here][2]&#xD;
&#xD;
At the time the proportions of the legs were not known publicly so I meticulously studied frames of (low quality) YouTube videos. I made the following diagram in Illustrator of what I thought I saw:&#xD;
&#xD;
![enter image description here][3] ![enter image description here][4]&#xD;
&#xD;
On the left the length of the legs in red, and in blue the numbers of the joints. On the right the trajectory of the joints that I calculated at the time in Mathematica. It&amp;#039;s funny that my blog does not exist any more (for years actually), but these images live on, as I found out when I looked for strandbeest on Google Images:&#xD;
&#xD;
![enter image description here][5]&#xD;
&#xD;
My images! But not on my website! Nice to see people still use it. Now, in 2016, I saw these files on my laptop, and thought: is there finally more known about them? Well yes, there is! The exact proportions are now known and there is tons and tons of videos, lectures, 3D-printable strandbeest models, interviews with Theo Jansen and other stuff! So now we can find the exact dimensions readily on the internet:&#xD;
&#xD;
![enter image description here][6] &#xD;
&#xD;
Notice that I (wrongly) assumed that the legs had &amp;#039;feet&amp;#039;! oops! I was very happy to see that my lengths were not that wrong though! Let&amp;#039;s recreate the strandbeest. We do so by first creating a function that quickly finds the intersection of two circles:&#xD;
&#xD;
    Clear[FindPoint, FindLines]&#xD;
    FindPoint[p1 : {x1_, y1_}, p2 : {x2_, y2_}, R_, r_, side_] := Module[{d, x, y, vc1, vc2, p, sol, sol1, sol2, s1, s2, sr},&#xD;
      d = N@Sqrt[(x2 - x1)^2 + (y2 - y1)^2];&#xD;
      x = (d^2 - r^2 + R^2)/(2 d);&#xD;
      y = Sqrt[R^2 - x^2];&#xD;
      vc1 = Normalize[{x2 - x1, y2 - y1}];&#xD;
      vc2 = Cross[vc1];&#xD;
      p = {x1, y1} + x vc1;&#xD;
      {sol1, sol2} = {p + y vc2, p - y vc2};&#xD;
      s1 = Sign[Last[Cross[Append[(p2 - p1), 0], Append[(sol1 - p1), 0]]]];&#xD;
      s2 = Sign[Last[Cross[Append[(p2 - p1), 0], Append[(sol2 - p1), 0]]]];&#xD;
      sr = If[side === Left, 1, -1];&#xD;
      Switch[sr, s1,&#xD;
       sol1&#xD;
       ,&#xD;
       s2&#xD;
       ,&#xD;
       sol2&#xD;
       ]&#xD;
      ]&#xD;
&#xD;
This finds on the side &amp;#039;side&amp;#039; (Left/Right) the intersection point of two circles positioned at p1 and p2, with radii R and r, respectively. And now we can easily compute all the little vertices/joints of our beast:&#xD;
&#xD;
    FindLines[\[Theta]_] := Module[{p1, p2, p3, p4, p5, p6, p7, p8, p10, p11, p12, p13, p14, p15},&#xD;
      {p1, p2, p3, p4, p5, p6, p7, p8, p10, p11, p12, p13, p14, p15} = FindPoints[\[Theta]];&#xD;
      {{p1, p2}, {p2, p3}, {p3, p4}, {p1, p4}, {p2, p6}, {p4, p6}, {p3, p5}, {p4, p5}, {p5, p8}, {p6, p8}, {p6, p7}, {p7, p8}, {p1, &#xD;
        p11}, {p10, p11}, {p2, p10}, {p2, p13}, {p11, p13}, {p10, p12}, {p11, p12}, {p12, p14}, {p13, p14}, {p13, p15}, {p14, p15}}&#xD;
      ]&#xD;
    FindPoints[\[Theta]_] := Module[{p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16},&#xD;
      p1 = {0, 0};&#xD;
      p4 = {38, -7.8};&#xD;
      p11 = {-38, -7.8};&#xD;
      p2 = 15 {Cos[\[Theta]], Sin[\[Theta]]};&#xD;
      &#xD;
      p3 = FindPoint[p2, p4, 50, 41.5, Left];&#xD;
      p6 = FindPoint[p2, p4, 61.9, 39.3, Right];&#xD;
      p5 = FindPoint[p3, p4, 55.8, 41.5, Left];&#xD;
      p8 = FindPoint[p5, p6, 39.4, 36.7, Left];&#xD;
      p7 = FindPoint[p6, p8, 49, 65.7, Right];&#xD;
      &#xD;
      p10 = FindPoint[p2, p11, 50, 41.5, Right];&#xD;
      p13 = FindPoint[p2, p11, 61.9, 39.3, Left];&#xD;
      p12 = FindPoint[p10, p11, 55.8, 41.5, Right];&#xD;
      p14 = FindPoint[p12, p13, 39.4, 36.7, Right];&#xD;
      p15 = FindPoint[p13, p14, 49, 65.7, Left];&#xD;
      &#xD;
      {p1, p2, p3, p4, p5, p6, p7, p8, p10, p11, p12, p13, p14, p15}&#xD;
      ]&#xD;
&#xD;
Now we can plot it easily:&#xD;
&#xD;
    trajectoriesdata = (FindPoints /@ Subdivide[0, 2 Pi, 100])\[Transpose];&#xD;
    Manipulate[&#xD;
      Graphics[{Arrowheads[Large], Arrow /@ trajectoriesdata, Thick, Red, Line[FindLines[\[Theta]]]},&#xD;
       PlotRange -&amp;gt; {{-150, 150}, {-120, 70}}, &#xD;
       ImageSize -&amp;gt; 800&#xD;
      ]&#xD;
     ,&#xD;
     {\[Theta], 0, 2 \[Pi]}&#xD;
    ]&#xD;
&#xD;
![enter image description here][7]&#xD;
&#xD;
We can also make an entire bunch of legs at the same time and make a 3D beast!&#xD;
&#xD;
    Manipulate[&#xD;
     mp = 60;&#xD;
     n = 12;&#xD;
     \[CurlyPhi] = Table[Mod[5 \[Iota], n, 1], {\[Iota], 1, n}];&#xD;
     Graphics3D[{Darker@Yellow, Table[&#xD;
        Line[ &#xD;
         Map[Prepend[mp \[Iota]], &#xD;
          FindLines[\[Theta] + \[CurlyPhi][[\[Iota]]] (2 Pi/n)], {2}]],&#xD;
        {\[Iota], n}&#xD;
        ]&#xD;
       , Black, Line[{{mp 1, 0, 0}, {mp n, 0, 0}}]&#xD;
       }&#xD;
      ,&#xD;
      Lighting -&amp;gt; &amp;#034;Neutral&amp;#034;,&#xD;
      PlotRangePadding -&amp;gt; Scaled[.1],&#xD;
      PlotRange -&amp;gt; {{-mp, (n + 1) mp}, {-150, 150}, {-150, 150}},&#xD;
      Boxed -&amp;gt; False,&#xD;
      ImageSize -&amp;gt; 700&#xD;
      ]&#xD;
     ,&#xD;
     {\[Theta], 0, 2 \[Pi]}&#xD;
     ]&#xD;
&#xD;
![enter image description here][8]&#xD;
&#xD;
From the side we can look at how the legs of 4-pair-legged and 6-pair-legged versions of the beasts work:&#xD;
&#xD;
![enter image description here][9] ![enter image description here][10]&#xD;
&#xD;
Hope you enjoyed this! Perhaps someone else can make this thing actually walk over a (bumpy) surface?&#xD;
&#xD;
&#xD;
  [1]: http://community.wolfram.com//c/portal/getImageAttachment?filename=LVDKumerus2.jpg&amp;amp;userId=73716&#xD;
  [2]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2016-05-29at00.51.53.png&amp;amp;userId=73716&#xD;
  [3]: http://community.wolfram.com//c/portal/getImageAttachment?filename=strandbeest_sketch.png&amp;amp;userId=73716&#xD;
  [4]: http://community.wolfram.com//c/portal/getImageAttachment?filename=strandbeest_trajectories.png&amp;amp;userId=73716&#xD;
  [5]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2016-05-29at00.16.23.png&amp;amp;userId=73716&#xD;
  [6]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Strandbeest_Leg_Proportions-01.png&amp;amp;userId=73716&#xD;
  [7]: http://community.wolfram.com//c/portal/getImageAttachment?filename=3493strandwalk.gif&amp;amp;userId=73716&#xD;
  [8]: http://community.wolfram.com//c/portal/getImageAttachment?filename=3587strandwalk3D.gif&amp;amp;userId=73716&#xD;
  [9]: http://community.wolfram.com//c/portal/getImageAttachment?filename=4legged.gif&amp;amp;userId=73716&#xD;
  [10]: http://community.wolfram.com//c/portal/getImageAttachment?filename=6legged.gif&amp;amp;userId=73716</description>
    <dc:creator>Sander Huisman</dc:creator>
    <dc:date>2016-05-28T23:02:16Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/533151">
    <title>Need serious help with lists!</title>
    <link>https://community.wolfram.com/groups/-/m/t/533151</link>
    <description>Here is my code:&#xD;
&#xD;
(* Take inputs for ECEF *) x = Input[&amp;#034;What is the x coordinate?&amp;#034;]; y = Input[&amp;#034;What is the y coordinate?&amp;#034;]; z = Input[&amp;#034;What is the z coordinate?&amp;#034;];&#xD;
&#xD;
(* Put in Coordinate Form *) GeoPositionXYZ[{x, y, z}, &amp;#034;ITRF00&amp;#034;];&#xD;
&#xD;
(* Convert to LLA *) GeoPosition[%]&#xD;
&#xD;
(* Display Map *) GeoGraphics[GeoMarker[GeoPosition[%]],GeoRange -&amp;gt; &amp;#034;World&amp;#034;, GeoProjection -&amp;gt; &amp;#034;Robinson&amp;#034;]&#xD;
&#xD;
It lets me input coordinates for one point in ECEF, then converts it to latitude/longitude/height and shows it on a map.&#xD;
&#xD;
I want to keep showing the 2d map... but I also want to show a 3d globe that locates the coordinates on the 3d cartesian plane also.&#xD;
I need to be able to put in more than one coordinate. It needs to keep asking for more x&amp;#039;s, more y&amp;#039;s, more z&amp;#039;s... until I stop inputting them. Eventually it&amp;#039;s going to be modified to pull them out of a text file, but for now these two changes need to be made. Any ideas/hints/help/guidance is appreciated. Thanks.</description>
    <dc:creator>Nathan Lundholm</dc:creator>
    <dc:date>2015-07-20T07:16:28Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2763581">
    <title>Stephen Wolfram on ChatGPT, Wolfram|Alpha &amp;amp; Computational Knowledge</title>
    <link>https://community.wolfram.com/groups/-/m/t/2763581</link>
    <description>[![enter image description here][1]][2]&#xD;
&#xD;
Dear friends, Stephen Wolfram just [published a new article][2], which I am inviting you to read and discuss below in the comments:&#xD;
&#xD;
&amp;gt; *Wolfram|Alpha as the Way to Bring Computational Knowledge Superpowers to ChatGPT*&#xD;
&#xD;
&amp;gt; https://writings.stephenwolfram.com/2023/01/wolframalpha-as-the-way-to-bring-computational-knowledge-superpowers-to-chatgpt&#xD;
&#xD;
It already got volumes of feedback:&#xD;
&#xD;
- TWITTER: https://wolfr.am/1amUFFVvV&#xD;
- LINKEDIN: https://wolfr.am/1amUGV0Fq &#xD;
- FACEBOOK https://wolfr.am/1amUJSVf2&#xD;
&#xD;
&amp;gt; **If you have any related thoughts - please comment below!**&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=ChatGPT-hero-v4.png&amp;amp;userId=11733&#xD;
  [2]: https://writings.stephenwolfram.com/2023/01/wolframalpha-as-the-way-to-bring-computational-knowledge-superpowers-to-chatgpt</description>
    <dc:creator>Vitaliy Kaurov</dc:creator>
    <dc:date>2023-01-10T18:48:33Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1153218">
    <title>Controlling a Meccano G15 KS robot with the EZ-Robot system</title>
    <link>https://community.wolfram.com/groups/-/m/t/1153218</link>
    <description>![Controlling a Meccano G15 KS robot with the EZ-Robot system][1]&#xD;
&#xD;
Hi there, (Sharing an idea)&#xD;
&#xD;
I am a hobbyist user of Mathematica.  I am using it to control my three robot systems. Firstly there is Jeeves. It is a modified Meccano G15 KS. The Meccano control system has been removed and replaced with another control system (EZ-Robot). This new controller and its PC based control software is capable of starting an external program. In my case that external program is Mathematica. The sensors on the robot read in data and pass these data onto the PC based control software which then fires up Mathematica which in turn carries out some computation and passes a result back to the PC based control software. Data is stored in files. Using this set up means there can be latency. Sometimes quite a bit. For me this is not a problem as the robot is mainly used to test algorithms. Waiting a minute for a result is not an issue.&#xD;
![Modified Meccano G15 KS][2]&#xD;
&#xD;
&#xD;
This robot can read text from a sheet of paper or screen and then repeat what it has seen. It can also read text and evaluate it. For example given the question, &amp;#034;What is the capital of England&amp;#034; the robot will reply &amp;#034;London&amp;#034;.  It can recognise objects in an image(potentially thousands).  By reading in text similar to the following &amp;#034;AABBCCD&amp;#034;, it will play sounds relating to the musical notes.  All this is made possible because of Mathematica. As stated above I use this robot for algorithm testing.  In this case Mathematica is used indirectly.&#xD;
&#xD;
My second robot is a small 16 DOF humanoid robot. This robot is controlled by a 24 channel Pololu Maestro servo controller.  &#xD;
![Modified EZ-Robot][3]&#xD;
![Rear of modified EZ][4]&#xD;
&#xD;
Now this robot is controlled directly by Mathematica.  All code is contained in a notebook and uses all the features of connected devices contained within Mathematica.  Data can be read from and sent to the robot. Just by using the Manipulate function every servo in the robot can be controlled by Mathematica.  I have not done so at the moment but to create a robot animation system with Mathematica would only be a few dozen lines of code.  That is one of my first tasks. This robot is a modified EZ-Robot now totally under the control of Mathematica.&#xD;
&#xD;
My third robot is a robot workbench.  Built by me to test more complex algorithms.  This is controlled by a 24 channel Pololu Maestro servo controller.  In turn controlled completely by, you guessed Mathematica.&#xD;
&#xD;
![Robot Workbench 1][5]&#xD;
&#xD;
![Robot Workbench 2][6]&#xD;
&#xD;
![Robot Workbench 3][7]&#xD;
&#xD;
![Robot Workbench 4][8]&#xD;
&#xD;
![Robot Workbench 5][9]&#xD;
&#xD;
&#xD;
The robot workbench only has a servo control program written at the moment.  This control program makes use of the Manipulate function. I have some great plans for this workbench in the future. Under the control of Mathematica it will perform tasks using all the power of the neural networks and machine learning.  Image and text processing. To name but a few.&#xD;
&#xD;
My big goal is to create a Robot Operating System that will contain all the code required for the robots to carry out complex tasks. This would include features such as inverse and forward kinematics. I want to achieve this using only Mathematica.&#xD;
&#xD;
My reason for putting my robots on the forum is simply to see if anyone is doing anything similar. With only a few lines of Mathematica code I have been able to get the robots to read text and interpret it. I am sure that my Robot Operating System will be thousands of lines of code. I plan to write it in two parts. A front end to carry out general robot tasks, such as movement and manipulation, data processing from sensors and the solving of problems using neural nets and machine learning. A back end that can be made to match up to a specific controller or micro controller. That is my plan. Any code I produce will be made available to this forum.&#xD;
&#xD;
Well I had better get back to coding.&#xD;
&#xD;
&#xD;
----------&#xD;
&#xD;
&#xD;
# CODE&#xD;
&#xD;
&#xD;
----------&#xD;
&#xD;
&#xD;
The code for the G15 KS simply performs a task and returns a result to the control software of the robot. There is no direct control. The humanoid robot and the workbench code have direct control.&#xD;
&#xD;
The following is the code that allows the modified G15 KS to read text and repeat what it has seen.&#xD;
&#xD;
    str = TextRecognize[Import[&amp;#034;C:\\mathscripts\\images\\img3.jpg&amp;#034;],  Language -&amp;gt; &amp;#034;English&amp;#034;];&#xD;
    &#xD;
    str = StringReplace[str, Whitespace -&amp;gt; &amp;#034; &amp;#034;];&#xD;
    &#xD;
    str&#xD;
    &#xD;
    s = OpenWrite[File[&amp;#034;C:\\mathscripts\\jeeves\\output.txt&amp;#034;]]&#xD;
    &#xD;
    WriteLine[s, str];&#xD;
    &#xD;
    Close[s];&#xD;
&#xD;
Here the image taken by the robots camera is picked up by mathematica and the TextRecognize function gets the text from the image and stores it in a file ready to be used by the robots control system.  Pretty simple coding to get a robot to read text.&#xD;
&#xD;
The following code allows the G15 KS to read text, evaluate it.&#xD;
&#xD;
    str = TextRecognize[Import[&amp;#034;C:\\mathscripts\\images\\img3.jpg&amp;#034;], Language -&amp;gt; &amp;#034;English&amp;#034;];&#xD;
    &#xD;
    str = StringReplace[str, Whitespace -&amp;gt; &amp;#034; &amp;#034;];&#xD;
    &#xD;
    str&#xD;
    &#xD;
    s = OpenWrite[File[&amp;#034;C:\\mathscripts\\jeeves\\output2.txt&amp;#034;]]&#xD;
    &#xD;
    res = Interpreter[&amp;#034;SemanticExpression&amp;#034;][str];&#xD;
    &#xD;
    If[NumericQ[res], res = N[res], res]&#xD;
    &#xD;
    WriteLine[s, ToString[res]];&#xD;
    &#xD;
    Close[s];&#xD;
&#xD;
The following code allows the G15 KS to identify an object within an image. Actually thousands of objects&amp;#039;&#xD;
&#xD;
    txt = ImageIdentify[Import[&amp;#034;C:\\mathscripts\\images\\img3.jpg&amp;#034;]]&#xD;
    &#xD;
    s = OpenWrite[File[&amp;#034;C:\\mathscripts\\jeeves\\output3.txt&amp;#034;]]&#xD;
    &#xD;
    WriteLine[s, ToString[CommonName[txt]]];&#xD;
    &#xD;
    Close[s];&#xD;
&#xD;
The following code allows the G15 KS to read text relating to geographic location. This was used by the robot to read the text generated by a mobile phone app and speak the result.&#xD;
&#xD;
    str = TextRecognize[Import[&amp;#034;C:\\mathscripts\\images\\img3.jpg&amp;#034;], Language -&amp;gt; &amp;#034;English&amp;#034;];&#xD;
    str = StringReplace[str, Whitespace -&amp;gt; &amp;#034; &amp;#034;];&#xD;
    str = StringSplit[str];&#xD;
    If[NumberQ[ToExpression[str[[1]]]] &amp;amp;&amp;amp; NumberQ[ToExpression[str[[2]]]],&#xD;
      $GeoLocation = &#xD;
       GeoPosition[{ToExpression[str[[1]]], ToExpression[str[[2]]]}];&#xD;
      country = CountryData[$GeoLocationCountry, &amp;#034;Name&amp;#034;];&#xD;
      citytown = CityData[$GeoLocationCity, &amp;#034;Name&amp;#034;];&#xD;
      s = OpenWrite[File[&amp;#034;C:\\mathscripts\\jeeves\\output4.txt&amp;#034;]];&#xD;
      WriteLine[s, country &amp;lt;&amp;gt;  &amp;#034; is the country I am in and the nearest town or city is called &amp;#034; \&amp;lt;&amp;gt;  citytown];&#xD;
      Close[s];,&#xD;
      s = OpenWrite[File[&amp;#034;C:\\mathscripts\\jeeves\\output4.txt&amp;#034;]];&#xD;
      WriteLine[s, &amp;#034;Invalid input Please try again &amp;#034; ];&#xD;
      Close[s];];&#xD;
&#xD;
The following code allows the robot to play a tune.  The text the robot must read is as follows: AABBCCD&#xD;
&#xD;
    str = TextRecognize[Import[&amp;#034;C:\\mathscripts\\images\\img3.jpg&amp;#034;], Language -&amp;gt; &amp;#034;English&amp;#034;];&#xD;
    &#xD;
    str = StringReplace[str, Whitespace -&amp;gt; &amp;#034;&amp;#034;];&#xD;
    &#xD;
    str&#xD;
    &#xD;
    s = OpenWrite[File[&amp;#034;C:\\mathscripts\\jeeves\\output5.txt&amp;#034;]]&#xD;
    &#xD;
    WriteLine[s, str];&#xD;
    &#xD;
    Close[s];&#xD;
&#xD;
It can be seen from the code that most of the work is passing data in files.  The code to carry text and image analysis is simply one line of code.  It can not get better than that.&#xD;
&#xD;
The code that follows is the code the is used to control all of the humanoid and workbench servo.  Firstly the workbench.&#xD;
&#xD;
    Button[&amp;#034;Open connection to Maestro&amp;#034;, dev = DeviceOpen[&amp;#034;Serial&amp;#034;, &amp;#034;COM5&amp;#034;]]&#xD;
    &#xD;
    Manipulate[&#xD;
     DeviceWriteBuffer[&#xD;
      dev, {132, 1, BitAnd[a*4, 127], &#xD;
       BitAnd[BitShiftRight[(a*4), 7] , 127]}], {{a, 1224, &amp;#034;Right Base&amp;#034;}, &#xD;
      496, 2016, 1}]&#xD;
    &#xD;
    Manipulate[&#xD;
     DeviceWriteBuffer[&#xD;
      dev, {132, 0, BitAnd[a*4, 127], &#xD;
       BitAnd[BitShiftRight[(a*4), 7] , 127]}], {{a, 1224, &amp;#034;Left Base&amp;#034;}, &#xD;
      496, 2016, 1}]&#xD;
    &#xD;
    Manipulate[&#xD;
     DeviceWriteBuffer[&#xD;
      dev, {132, 3, BitAnd[a*4, 127], &#xD;
       BitAnd[BitShiftRight[(a*4), 7] , 127]}], {{a, 1216, &amp;#034;Right Pivot&amp;#034;},&#xD;
       1008, 2000, 1}]&#xD;
    &#xD;
    Manipulate[&#xD;
     DeviceWriteBuffer[&#xD;
      dev, {132, 2, BitAnd[a*4, 127], &#xD;
       BitAnd[BitShiftRight[(a*4), 7] , 127]}], {{a, 1216, &amp;#034;Left Pivot&amp;#034;}, &#xD;
      1008, 2000, 1}]&#xD;
    &#xD;
    Manipulate[&#xD;
     DeviceWriteBuffer[&#xD;
      dev, {132, 4, BitAnd[a*4, 127], &#xD;
       BitAnd[BitShiftRight[(a*4), 7] , 127]}], {{a, 1216, &amp;#034;Right Elbow&amp;#034;},&#xD;
       1024, 2144, 1}]&#xD;
    &#xD;
    Manipulate[&#xD;
     DeviceWriteBuffer[&#xD;
      dev, {132, 5, BitAnd[a*4, 127], &#xD;
       BitAnd[BitShiftRight[(a*4), 7] , 127]}], {{a, 1270, &amp;#034;Left Elbow&amp;#034;}, &#xD;
      1024, 2144, 1}]&#xD;
    &#xD;
    Manipulate[&#xD;
     DeviceWriteBuffer[&#xD;
      dev, {132, 14, BitAnd[a*4, 127], &#xD;
       BitAnd[BitShiftRight[(a*4), 7] , 127]}], {{a, 1240, &amp;#034;Right Wrist&amp;#034;},&#xD;
       496, 2000, 1}]&#xD;
    &#xD;
    Manipulate[&#xD;
     DeviceWriteBuffer[&#xD;
      dev, {132, 15, BitAnd[a*4, 127], &#xD;
       BitAnd[BitShiftRight[(a*4), 7] , 127]}], {{a, 1182, &amp;#034;Left Wrist&amp;#034;}, &#xD;
      496, 2000, 1}]&#xD;
    &#xD;
    Manipulate[&#xD;
     DeviceWriteBuffer[&#xD;
      dev, {132, 7, BitAnd[a*4, 127], &#xD;
       BitAnd[BitShiftRight[(a*4), 7] , 127]}], {{a, 1200, &#xD;
       &amp;#034;Right Gripper&amp;#034;}, 1024, 1296, 1}]&#xD;
    &#xD;
    Manipulate[&#xD;
     DeviceWriteBuffer[&#xD;
      dev, {132, 6, BitAnd[a*4, 127], &#xD;
       BitAnd[BitShiftRight[(a*4), 7] , 127]}], {{a, 1200, &#xD;
       &amp;#034;Left Gripper&amp;#034;}, 1024, 1296, 1}]&#xD;
    &#xD;
    Manipulate[&#xD;
     DeviceWriteBuffer[&#xD;
      dev, {132, 8, BitAnd[a*4, 127], &#xD;
       BitAnd[BitShiftRight[(a*4), 7] , 127]}], {{a, 1480, &amp;#034;Turn Table&amp;#034;}, &#xD;
      992, 2000, 1}]&#xD;
    &#xD;
    Manipulate[&#xD;
     DeviceWriteBuffer[&#xD;
      dev, {132, 10, BitAnd[a*4, 127], &#xD;
       BitAnd[BitShiftRight[(a*4), 7] , 127]}], {{a, 1240, &#xD;
       &amp;#034;Move Vertical&amp;#034;}, 496, 2000, 1}]&#xD;
    &#xD;
    Manipulate[&#xD;
     DeviceWriteBuffer[&#xD;
      dev, {132, 11, BitAnd[a*4, 127], &#xD;
       BitAnd[BitShiftRight[(a*4), 7] , 127]}], {{a, 1200, &#xD;
       &amp;#034;Move Horizontal&amp;#034;}, 800, 1600, 1}]&#xD;
    &#xD;
    CloseDevice[dev];&#xD;
&#xD;
Now the code to move the humanoid servos using Manipulate.&#xD;
&#xD;
    dev = DeviceOpen[&amp;#034;Serial&amp;#034;, &amp;#034;COM5&amp;#034;]&#xD;
    Manipulate[&#xD;
     DeviceWriteBuffer[&#xD;
      dev, {132, 0, BitAnd[a*4, 127], &#xD;
       BitAnd[BitShiftRight[(a*4), 7] , 127]}]; &#xD;
     DeviceWriteBuffer[&#xD;
      dev, {132, 1, BitAnd[b*4, 127], &#xD;
       BitAnd[BitShiftRight[(b*4), 7] , 127]}]; &#xD;
     DeviceWriteBuffer[&#xD;
      dev, {132, 2, BitAnd[c*4, 127], &#xD;
       BitAnd[BitShiftRight[(c*4), 7] , 127]}]; &#xD;
     DeviceWriteBuffer[&#xD;
      dev, {132, 3, BitAnd[d*4, 127], &#xD;
       BitAnd[BitShiftRight[(d*4), 7] , 127]}]; &#xD;
     DeviceWriteBuffer[&#xD;
      dev, {132, 5, BitAnd[e*4, 127], &#xD;
       BitAnd[BitShiftRight[(e*4), 7] , 127]}]; &#xD;
     DeviceWriteBuffer[&#xD;
      dev, {132, 4, BitAnd[f*4, 127], &#xD;
       BitAnd[BitShiftRight[(f*4), 7] , 127]}]; &#xD;
     DeviceWriteBuffer[&#xD;
      dev, {132, 6, BitAnd[g*4, 127], &#xD;
       BitAnd[BitShiftRight[(g*4), 7] , 127]}];&#xD;
     DeviceWriteBuffer[&#xD;
      dev, {132, 7, BitAnd[h*4, 127], &#xD;
       BitAnd[BitShiftRight[(h*4), 7] , 127]}];&#xD;
     DeviceWriteBuffer[&#xD;
      dev, {132, 15, BitAnd[l*4, 127], &#xD;
       BitAnd[BitShiftRight[(l*4), 7] , 127]}]; &#xD;
     DeviceWriteBuffer[&#xD;
      dev, {132, 14, BitAnd[k*4, 127], &#xD;
       BitAnd[BitShiftRight[(k*4), 7] , 127]}], {{a, 1224, &amp;#034;Left Base&amp;#034;}, &#xD;
      496, 2016, 1}, {{b, 1224, &amp;#034;Right Base&amp;#034;}, 496, 2016, &#xD;
      1}, {{c, 1216, &amp;#034;Left Pivot&amp;#034;}, 1008, 2000, &#xD;
      1}, {{d, 1216, &amp;#034;Right Pivot&amp;#034;}, 1008, 2000, &#xD;
      1}, {{e, 1270, &amp;#034;Left Elbow&amp;#034;}, 1024, 2144, &#xD;
      1}, {{f, 1270, &amp;#034;Right Elbow&amp;#034;}, 1024, 2144, &#xD;
      1}, {{k, 1024, &amp;#034;Right Wrist&amp;#034;}, 496, 2000, &#xD;
      1}, {{l, 1024, &amp;#034;Left Wrist&amp;#034;}, 496, 2000, &#xD;
      1}, {{g, 1200, &amp;#034;Left Gripper&amp;#034;}, 1024, 1296, &#xD;
      1}, {{h, 1200, &amp;#034;Right Gripper&amp;#034;}, 1024, 1296, 1}]&#xD;
&#xD;
That&amp;#039;s all for now at a later date there will be a lot more to come.  It can be seen from above that very little code is required to get a great deal of functionality.&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Main111120224.png&amp;amp;userId=20103&#xD;
  [2]: http://community.wolfram.com//c/portal/getImageAttachment?filename=20170722_204150%282%29.jpg&amp;amp;userId=1152078&#xD;
  [3]: http://community.wolfram.com//c/portal/getImageAttachment?filename=20170722_210215%282%29.jpg&amp;amp;userId=1152078&#xD;
  [4]: http://community.wolfram.com//c/portal/getImageAttachment?filename=20170722_210324%283%29.jpg&amp;amp;userId=1152078&#xD;
  [5]: http://community.wolfram.com//c/portal/getImageAttachment?filename=20170722_205616%282%29.jpg&amp;amp;userId=1152078&#xD;
  [6]: http://community.wolfram.com//c/portal/getImageAttachment?filename=20170722_205908%282%29.jpg&amp;amp;userId=1152078&#xD;
  [7]: http://community.wolfram.com//c/portal/getImageAttachment?filename=20170722_210128%283%29.jpg&amp;amp;userId=1152078&#xD;
  [8]: http://community.wolfram.com//c/portal/getImageAttachment?filename=20170722_204931%282%29.jpg&amp;amp;userId=1152078&#xD;
  [9]: http://community.wolfram.com//c/portal/getImageAttachment?filename=20170722_205445%282%29.jpg&amp;amp;userId=1152078</description>
    <dc:creator>Terence Smith</dc:creator>
    <dc:date>2017-07-26T17:11:41Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/491285">
    <title>How to get the result of a multiplication between a matrix and a vector?</title>
    <link>https://community.wolfram.com/groups/-/m/t/491285</link>
    <description>I want to get the result of a multiplication between a matrix and a vector, basically I want to do a change of reference frame of a vector, so I cannot perform this operation in mathematica.&#xD;
&#xD;
    A = {{2, 4}, {2, 1}} // MatrixForm&#xD;
    C2 = {{6}, {5}} // MatrixForm&#xD;
    A.C2 (*This does not work*)&#xD;
&#xD;
I want to get something like this:&#xD;
&#xD;
    {{2, 4}, {2, 1}}.{{6}, {5}} // MatrixForm&#xD;
&#xD;
Actually I have something more complex, but this is enough to show my problem.&#xD;
&#xD;
Do you have any suggestion?</description>
    <dc:creator>Alberto de la Torre</dc:creator>
    <dc:date>2015-05-04T18:17:40Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2915661">
    <title>How to use Wolfram Alpha to calculate location of three overlapping Circles</title>
    <link>https://community.wolfram.com/groups/-/m/t/2915661</link>
    <description>I have three sensors, and each sensor provides the distance to a person. The distance sensed provides a Radius for the person in a circle around the sensor. But the distances sensed are not exact, only approximate. It may be off by several feet. So the Radii of the three circles may not overlap, or they may intersect at one point, or the circles may overlap without intersecting exactly at one point. This may be corrected, if necessary, by increasing the radii proportionally until the three circles overlap each other. Once the circles overlap each other, the person&amp;#039;s approximate location can be found by calculating the center of the overlapped area.&#xD;
&#xD;
How can Wolfram Alpha give the person&amp;#039;s location from the distance reported by three sensors? What are the methods to do this?</description>
    <dc:creator>Don Baechtel</dc:creator>
    <dc:date>2023-05-06T16:41:29Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/824280">
    <title>Deep Learning Library for Mathematica</title>
    <link>https://community.wolfram.com/groups/-/m/t/824280</link>
    <description>Dear all,&#xD;
&#xD;
I have been working on an open source deep learning library in Mathematica which I would like to share.&#xD;
&#xD;
The code is hosted on github under an MIT license: [https://github.com/jfrancis71/Machine-Vision][1]&#xD;
&#xD;
I have succesfully used it to train a face recognition system, and also automatically drive my lego EV3 robot.&#xD;
&#xD;
Face Recognition: [https://www.youtube.com/watch?v=TdRtUnSppB0][2]&#xD;
&#xD;
EV3 Car: [https://www.youtube.com/watch?v=DCad82UdDFA][3]&#xD;
&#xD;
&#xD;
  [1]: https://github.com/jfrancis71/Machine-Vision&#xD;
  [2]: https://www.youtube.com/watch?v=TdRtUnSppB0&#xD;
  [3]: https://www.youtube.com/watch?v=DCad82UdDFA&#xD;
&#xD;
This has arisen from a homegrown project, so the code is probably a little scruffy (and not well documented) at the moment. Having said that it does work and I would welcome constructive feedback and help turning this into an active open source project.&#xD;
&#xD;
It&amp;#039;s not really aimed at someone who just wants a good face recogniser, the new built in Mathematica functions are probably more suitable for that. it&amp;#039;s more suitable for someone interested in the internals or developing their own neural nets.&#xD;
&#xD;
The distinction with the current Mathematica machine learning functionality, is this library is designed to support multiple layer networks including convolutional layers (much used in computer vision presently).&#xD;
&#xD;
There is more information available on the github site in the link above.&#xD;
&#xD;
Thanks,&#xD;
Julian Francis.</description>
    <dc:creator>Julian Francis</dc:creator>
    <dc:date>2016-03-16T16:19:18Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/756017">
    <title>Newbie Kinematics question</title>
    <link>https://community.wolfram.com/groups/-/m/t/756017</link>
    <description>Hi,&#xD;
I&amp;#039;m calculating motion data from list of poses&#xD;
&#xD;
     motionPlan = {&#xD;
           {0, 0, 0, 0, 0, 0, 0},&#xD;
           {3.4, 0, 0.08, 0, 0, 0, 0},&#xD;
           {3.5, 0, 0.077, 0, 0, 0, 0},&#xD;
           {4, 0, 0.08, 0, 0, 0, 0},&#xD;
           {4.1, 0, 0.077, 0, 0, 0, 0},&#xD;
           {4.2, 0, 0.08, 0, 0, 0, 0},&#xD;
           {4.3, 0, 0.083, 0, 0, 0, 0},&#xD;
           {4.4, 0, 0.08, 0, 0, 0, 0},&#xD;
           {5, 0, 0.1, 0, 0, 0, 0}   };&#xD;
&#xD;
Utility function for generating a sequence of steps between two poses:&#xD;
&#xD;
    PoseRange[{pose1_, pose2_}, steps_, time1_, time2_] := &#xD;
     Table[pose1 + t/(time2 - time1) (pose2 - pose1), {t, &#xD;
       Range[0, time2 - time1, 1/steps]}]&#xD;
&#xD;
This generates a list of numbers between two pose divided into the number of frames per second.&#xD;
I would like to smooth out the motion data and change  Acceleration.&#xD;
&#xD;
Please help&#xD;
Mario</description>
    <dc:creator>novio8</dc:creator>
    <dc:date>2015-12-11T07:53:30Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2137315">
    <title>Build a 3D Self-Driving Car Simulation</title>
    <link>https://community.wolfram.com/groups/-/m/t/2137315</link>
    <description>## Introduction&#xD;
&#xD;
In this article we will create a simple driving simulation to train a classifier to autonomously drive a virtual car. Our simulation will consist of a 3D scene composed of a windy road and a single car controller either by the user or the computer. The car will have a camera positioned in front of it to provide an image from its point of view (POV). This point of view image will be used as the input to our classifier to decide how to control the car. During each step of the simulation the car will be allowed to move forward or turn in place left or right.&#xD;
&#xD;
![enter image description here][1]&#xD;
&#xD;
## Building the Simulation&#xD;
&#xD;
### Simulation Graphics&#xD;
&#xD;
We will begin by creating the graphics functions to assemble and display the simulation. First lets create a texture for the ground. For simplicity we will rasterize a built-in curve containing both left and right turns for the road.&#xD;
&#xD;
    track = Rasterize[&#xD;
      With[{road = &#xD;
         HilbertCurve[2, DataRange -&amp;gt; {{0.25, 1.75}, {0.25, 1.75}}] /. &#xD;
          Line -&amp;gt; BSplineCurve},&#xD;
       Graphics[{&#xD;
         CapForm[&amp;#034;Round&amp;#034;],&#xD;
         Gray, AbsoluteThickness[36], road,&#xD;
         Yellow, Dashing[0.033], AbsoluteThickness[2], road&#xD;
         },&#xD;
        PlotRange -&amp;gt; {{0, 2}, {0, 2}},&#xD;
        Background -&amp;gt; RGBColor[&amp;#034;#e8e1ba&amp;#034;]&#xD;
        ]&#xD;
       ]&#xD;
      ]&#xD;
&#xD;
![enter image description here][2]&#xD;
&#xD;
Next we will define a function to assemble the 3D scene encompassing the ground and car. We will be rendering this scene with two different cameras to provide an overview of the car on the road as well as the car&amp;#039;s point of view image.&#xD;
&#xD;
    CarSimScene[sim_] := Module[{ground, car},&#xD;
      ground = {&#xD;
        Texture[track],&#xD;
        EdgeForm[None],&#xD;
        Polygon[&#xD;
         {{0, 0, 0}, {100, 0, 0}, {100, 100, 0}, {0, 100, 0}}, &#xD;
         VertexTextureCoordinates -&amp;gt; {{0, 0}, {1, 0}, {1, 1}, {0, 1}}&#xD;
         ]&#xD;
        };&#xD;
      &#xD;
      car =&#xD;
       With[{dimensions = {2, 1, 0}},&#xD;
        {Red,&#xD;
         Rotate[&#xD;
          Cuboid[sim[&amp;#034;Position&amp;#034;] - dimensions , &#xD;
           sim[&amp;#034;Position&amp;#034;] + dimensions + {0, 0, 1}], sim[&amp;#034;Rotation&amp;#034;],&#xD;
          {0, 0, 1},&#xD;
          sim[&amp;#034;Position&amp;#034;]&#xD;
          ]&#xD;
         }&#xD;
        ];&#xD;
      &#xD;
      {ground, car}&#xD;
      ]&#xD;
&#xD;
Lastly we need a function to position a camera in the 3D scene at the location of the car to record the point of view image. This image will only be used when classifying, so we rasterize at a relatively low resolution. After some experimentation I chose to use ImageResolution instead of RasterSize because it was over 2x faster to generate the final image. The ViewVector coordinates were determined experimentally to match the typical view from inside a car.&#xD;
&#xD;
    CarPOV[sim_] := Module[{&#xD;
       rotation = sim[&amp;#034;Rotation&amp;#034;],&#xD;
       pos = sim[&amp;#034;Position&amp;#034;]&#xD;
       },&#xD;
      Rasterize[&#xD;
       Graphics3D[&#xD;
        CarSimScene[sim],&#xD;
        ImageSize -&amp;gt; Small,&#xD;
        ViewVector -&amp;gt; {&#xD;
          sim[&amp;#034;Position&amp;#034;] + {2.1 Cos[sim[&amp;#034;Rotation&amp;#034;]], &#xD;
            2.1 Sin[sim[&amp;#034;Rotation&amp;#034;]], 1.5},&#xD;
          sim[&amp;#034;Position&amp;#034;] + {5 Cos[sim[&amp;#034;Rotation&amp;#034;]], &#xD;
            5 Sin[sim[&amp;#034;Rotation&amp;#034;]], -0.25}&#xD;
          },&#xD;
        ViewAngle -&amp;gt; 1.5,&#xD;
        Boxed -&amp;gt; False,&#xD;
        Background -&amp;gt; LightBlue,&#xD;
        ViewRange -&amp;gt; {0, 0.1}&#xD;
        ],&#xD;
       ImageResolution -&amp;gt; 8&#xD;
       ]&#xD;
      ]&#xD;
&#xD;
We can now put all of our graphics functions together into a single overarching function that displays the entire car simulation including the 3D scene and an inset from the car&amp;#039;s point of view.&#xD;
&#xD;
    DisplayCarSim[sim_] := Module[{},&#xD;
      Overlay[{&#xD;
        Graphics3D[&#xD;
         CarSimScene[sim],&#xD;
         PlotRange -&amp;gt; {{0, 100}, {0, 100}, Automatic},&#xD;
         ImageSize -&amp;gt; Large,&#xD;
         Background -&amp;gt; LightBlue,&#xD;
         Boxed -&amp;gt; False&#xD;
         ],&#xD;
        Labeled[&#xD;
         Framed[sim[&amp;#034;POV&amp;#034;], FrameMargins -&amp;gt; None, FrameStyle -&amp;gt; Gray, &#xD;
          ImageSize -&amp;gt; Small], &amp;#034;Car POV&amp;#034;, LabelStyle -&amp;gt; Gray]&#xD;
        }]&#xD;
      ]&#xD;
&#xD;
### Simulation Internals&#xD;
&#xD;
With our simulation graphics complete we will proceed to building the functions that step the simulation forward. Our simulation state will be contained in a single association containing properties for the car&amp;#039;s position, rotation, and current POV image, along with the history of all previous POV images and their associated actions.&#xD;
&#xD;
NewCarSim initializes our data model for a new simulation. We allow a parameter to define which direction on the track the car starts from. We will generate training data in the &amp;#034;Forward&amp;#034; direction and then test the trained self-driving car in the opposite direction.&#xD;
&#xD;
    NewCarSim[direction_] := Module[{sim},&#xD;
      sim = If[&#xD;
        SymbolName[direction] == &amp;#034;Forward&amp;#034;,&#xD;
        &amp;lt;|&amp;#034;Position&amp;#034; -&amp;gt; {10, 10, 0}, &amp;#034;Rotation&amp;#034; -&amp;gt; 0|&amp;gt;,&#xD;
        &amp;lt;|&amp;#034;Position&amp;#034; -&amp;gt; {90, 14, 0}, &amp;#034;Rotation&amp;#034; -&amp;gt; Pi|&amp;gt;&#xD;
        ];&#xD;
      sim[&amp;#034;History&amp;#034;] = {};&#xD;
      sim[&amp;#034;POV&amp;#034;] = CarPOV[sim];&#xD;
      sim&#xD;
      ]&#xD;
&#xD;
Advancing the simulation is easy, StepCarSim takes a simulation state and action, one of &amp;#034;Up&amp;#034;, &amp;#034;Left&amp;#034;, or &amp;#034;Right&amp;#034;, and moves the car accordingly. Every time the simulation is stepped forward the current car POV image is saved along with the provided action in our history list. At the end of a simulation step a new car POV image is generated.&#xD;
&#xD;
    StepCarSim[sim_, action_] := Module[{},&#xD;
       AppendTo[sim[&amp;#034;History&amp;#034;], sim[&amp;#034;POV&amp;#034;] -&amp;gt; action];&#xD;
       &#xD;
       Switch[&#xD;
        action,&#xD;
        &amp;#034;Left&amp;#034;, sim[&amp;#034;Rotation&amp;#034;] += 0.05,&#xD;
        &amp;#034;Right&amp;#034;, sim[&amp;#034;Rotation&amp;#034;] -= 0.05,&#xD;
        &amp;#034;Up&amp;#034;, &#xD;
        sim[&amp;#034;Position&amp;#034;] += {Cos[sim[&amp;#034;Rotation&amp;#034;]], Sin[sim[&amp;#034;Rotation&amp;#034;]], &#xD;
          0}&#xD;
        ];&#xD;
       &#xD;
       sim[&amp;#034;POV&amp;#034;] = CarPOV[sim];&#xD;
       &#xD;
       sim&#xD;
       ];&#xD;
    SetAttributes[StepCarSim, HoldFirst];&#xD;
&#xD;
Our simulation is nearly complete, now it is time to build the interactive interface which allows a person to drive the car and generate training data.&#xD;
&#xD;
## Generating Example Training Data&#xD;
&#xD;
    sim = NewCarSim[Forward];&#xD;
    EventHandler[&#xD;
     Style[Dynamic[DisplayCarSim[sim]], Selectable -&amp;gt; False],&#xD;
     {&#xD;
      &amp;#034;LeftArrowKeyDown&amp;#034; :&amp;gt; StepCarSim[sim, &amp;#034;Left&amp;#034;],&#xD;
      &amp;#034;RightArrowKeyDown&amp;#034; :&amp;gt; StepCarSim[sim, &amp;#034;Right&amp;#034;],&#xD;
      &amp;#034;UpArrowKeyDown&amp;#034; :&amp;gt; StepCarSim[sim, &amp;#034;Up&amp;#034;]&#xD;
      }&#xD;
     ]&#xD;
&#xD;
![enter image description here][3]&#xD;
&#xD;
When I manually drove the car down the length of the entire track, the simulation generated nearly 600 training examples. This data is available in the Supplemental Materials section below if you would prefer not to create your own. Lets take a look at a few of the training examples:&#xD;
&#xD;
    TableForm@RandomSample[sim[&amp;#034;History&amp;#034;], 3]&#xD;
&#xD;
![enter image description here][4]&#xD;
&#xD;
## Training the Self-Driving Car&#xD;
&#xD;
Having generated our example data, we are now ready to train a classifier to drive the car!&#xD;
&#xD;
    selfDrivingCar = &#xD;
     Classify[sim[&amp;#034;History&amp;#034;], Method -&amp;gt; &amp;#034;LogisticRegression&amp;#034;]&#xD;
&#xD;
![enter image description here][5]&#xD;
&#xD;
I chose to specify logistic regression because it provided the best accuracy for a relatively small evaluation time. We can show information about our classifier and see accuracy above 70%. By inspecting the learning curve and accuracy curve it looks like we are approaching a limit to our learning, but could probably still benefit from a few more training examples. Still, with our modest amount of example data, the autonomous car performs well.&#xD;
&#xD;
    Information[selfDrivingCar]&#xD;
&#xD;
![enter image description here][6]&#xD;
&#xD;
To preview our self-driving car we will step the simulation one hundred times using our new classifier to drive the car. This only gets us a little ways around the track, but shows the classifier is working.&#xD;
&#xD;
    DynamicModule[{selfDrivingSim = NewCarSim[Backward]},&#xD;
     Print[Dynamic[DisplayCarSim[selfDrivingSim]]];&#xD;
     Do[StepCarSim[selfDrivingSim, selfDrivingCar[selfDrivingSim[&amp;#034;POV&amp;#034;]]],&#xD;
       100];&#xD;
     ]&#xD;
&#xD;
![enter image description here][7]&#xD;
&#xD;
We could increase the number of steps to see the car drive to the end, but due to the relatively slow rendering performance I prefer to pre-render every 5th or 10th frame and assemble those in a Manipulate to easily pan back and forth through time:&#xD;
&#xD;
    selfDrivingSim = NewCarSim[Backward];&#xD;
    frames = Table[&#xD;
       With[{img = Rasterize[DisplayCarSim[selfDrivingSim]]},&#xD;
        Do[StepCarSim[selfDrivingSim, &#xD;
          selfDrivingCar[selfDrivingSim[&amp;#034;POV&amp;#034;]]], 5];&#xD;
        img&#xD;
        ],&#xD;
       120&#xD;
       ];&#xD;
    &#xD;
    Manipulate[frames[[t]], {t, 1, Length[frames] - 1, 1}]&#xD;
&#xD;
![enter image description here][8]&#xD;
&#xD;
So, how well does our self-driving car work? Quite well as a matter of fact. It can easily make it down the entire track, and stays on the right side of the road too! But what happens if we start the car on the wrong side of the road? Does it get confused? Let&amp;#039;s see:&#xD;
&#xD;
    DynamicModule[{selfDrivingSim = NewCarSim[Backward]},&#xD;
     selfDrivingSim[&amp;#034;Position&amp;#034;] -= {0, 4, 0};&#xD;
     Print[Dynamic[DisplayCarSim[selfDrivingSim]]];&#xD;
     Do[StepCarSim[selfDrivingSim, selfDrivingCar[selfDrivingSim[&amp;#034;POV&amp;#034;]]],&#xD;
       100];&#xD;
     ]&#xD;
&#xD;
![enter image description here][9]&#xD;
&#xD;
When starting on the wrong side of the road the self-driving car immediately corrects and steers back to the right side! Our car works wonderfully, especially considering the modest training set and limited manual optimization of Classify.&#xD;
&#xD;
## Conclusion&#xD;
&#xD;
In conclusion we can use Mathematica to create and render a 3D simulation while also interfacing with its machine learning tools to build a complete end to end experimental system. I hope this example provides some insight into the power of Mathematica&amp;#039;s machine learning and graphics capabilities.&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=ezgif-6-c4f303fe5f33.gif&amp;amp;userId=11733&#xD;
  [2]: https://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2020-12-13at2.19.25PM.png&amp;amp;userId=2137254&#xD;
  [3]: https://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2020-12-13at2.22.36PM.png&amp;amp;userId=2137254&#xD;
  [4]: https://community.wolfram.com//c/portal/getImageAttachment?filename=10103ScreenShot2020-12-13at2.23.23PM.png&amp;amp;userId=2137254&#xD;
  [5]: https://community.wolfram.com//c/portal/getImageAttachment?filename=9171ScreenShot2020-12-13at2.24.29PM.png&amp;amp;userId=2137254&#xD;
  [6]: https://community.wolfram.com//c/portal/getImageAttachment?filename=5376ScreenShot2020-12-13at2.25.22PM.png&amp;amp;userId=2137254&#xD;
  [7]: https://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2020-12-13at2.26.30PM.png&amp;amp;userId=2137254&#xD;
  [8]: https://community.wolfram.com//c/portal/getImageAttachment?filename=ScreenShot2020-12-13at2.27.13PM.png&amp;amp;userId=2137254&#xD;
  [9]: https://community.wolfram.com//c/portal/getImageAttachment?filename=2628correcting-self-driving-car.gif&amp;amp;userId=2137254</description>
    <dc:creator>Dan Bridges</dc:creator>
    <dc:date>2020-12-13T22:43:34Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1805445">
    <title>How to save matrices from each iteration of i.?</title>
    <link>https://community.wolfram.com/groups/-/m/t/1805445</link>
    <description>I am trying to get the transformation matrices from DH parameter table and would like to save each matrix (Ai) getting after each iteration of i. How can I do that?&#xD;
 &#xD;
&#xD;
&#xD;
    DH = {{0, T1, 0, 0}, {0, T2, L1, Pi/2}, {0, T3, L2, 0}, {0, 0, L3, 0}} &#xD;
    For[i = 1, i &amp;lt;= 4, i++, &#xD;
    A = {&#xD;
     {Cos[DH[[i, 2]]], -Sin[DH[[i, 2]]], 0, DH[[i, 3]]}, &#xD;
     {Sin[DH[[i, 2]]] Cos[DH[[i, 4]]], Cos[DH[[i, 2]]] Cos[DH[[i, 4]]], -Sin[&#xD;
      DH[[i, 4]]], -Sin[DH[[i, 4]]] DH[[i, 1]]}, &#xD;
     {Sin[DH[[i, 2]]] Sin[DH[[i, 4]]], Cos[DH[[i, 2]]] Sin[DH[[i, 4]]], Cos[DH[[i, 4]]], Cos[DH[[i, 4]]] DH[[i, 1]]}, &#xD;
     {0, 0, 0, 1}&#xD;
    }; &#xD;
    Print[&amp;#034;A = &amp;#034;, MatrixForm[A]];&#xD;
    ]</description>
    <dc:creator>Anshuman Singh</dc:creator>
    <dc:date>2019-10-11T18:02:13Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/615905">
    <title>Connecting ROS (and a Parrot ArDrone 2.0) to the Wolfram Language</title>
    <link>https://community.wolfram.com/groups/-/m/t/615905</link>
    <description>**Connecting ROS to the Wolfram Language**&#xD;
======================================&#xD;
*Or Controlling a Parrot ArDrone 2.0 from Mathematica*&#xD;
----------------------------------------------------&#xD;
&#xD;
![enter image description here][1]&#xD;
&#xD;
----------&#xD;
Foreword&#xD;
--------&#xD;
During this summer, between the end of my high school education and the beginning of my undergraduate studies, I had the opportunity to participate in the Wolfram Mentorship program where I worked on a project called &amp;#034;Connecting ROS to the Wolfram Language&amp;#034;. &#xD;
&#xD;
[ROS][2], which is an abbreviation for &amp;#034;Robot Operating System&amp;#034;, is a software available for Linux which acts as a &amp;#039;conductor&amp;#039; between different electronic components of one or more robots (such as the engine, the cameras...) such that the components and the controller (a computer for example) can communicate together. A good introduction to ROS can be found [here][3] and in depth tutorials are available [there][4].&#xD;
&#xD;
The aim of this project was to implement a connection to ROS from the Wolfram Language, i.e. to be able to collect and interpret data from the robots controlled by ROS in Mathematica as well as to control ROS and the robots from Mathematica and to test the results using a Parrot ArDrone 2.0. &#xD;
&#xD;
This post, which marks the end of the project, describes the different steps I went through to complete this project. It assumes prior knowledge of ROS (and the [ardrone autonomy package][5]) as well as basic Linux and Mathematica. It is divided into two parts:&#xD;
&#xD;
 1.  &amp;#039;collecting and interpreting data&amp;#039; in Mathematica&#xD;
 2. &amp;#039;controlling ROS and supported Robots&amp;#039; from Mathematica, &#xD;
&#xD;
These are independent and throughout the first part code developed is illustrated using turtlesim (a simulator of a turtle - used in ROS tutorials) and throughout the second part, the examples refer to the Parrot ArDrone 2.0.&#xD;
&#xD;
----------&#xD;
&#xD;
&#xD;
PART 1: COLLECTING &amp;amp; INTERPRETING DATA&#xD;
--------------------------------------&#xD;
Extracting and Understanding Data from ROS&#xD;
------------------------------------------&#xD;
After installing ROS and getting familiar with the environment, the first step is to figure out how to extract data from it, or to be more precise, how to log all the messages published over one or more topic in a file which can be retrieved by the user. &#xD;
&#xD;
Although, there is a tool called a rosbag which records the selected ROS topics and store them in a .bag file, it turns out that I only managed to open these files in ROS so a different procedure was used. It consists of echoing the messages published on selected topics (using the command rostopic echo) to a file of the chosen format (since messages are just simple text files the format used will be .txt). This can simply be done by executing the following command in the Linux terminal before sending messages over the topic(s) (once ROS is installed and started):&#xD;
&#xD;
    rostopic echo [topic] &amp;gt; [file].txt &#xD;
&#xD;
For example, if we were going to extract the velocity commands sent to the turtle to a file called rosdata.txt, the command would be: &#xD;
&#xD;
    rostopic echo /turtle/cmd_vel &amp;gt; rosdata.txt &#xD;
&#xD;
And opening the text file (once the ROS session is ended) would return a sequence of messages looking like the one below (the values of x,y,z might change):&#xD;
&#xD;
    linear&#xD;
    x: 1.0&#xD;
    y: 0.0&#xD;
    z: 0.0&#xD;
    angular&#xD;
    x: 0.0&#xD;
    y: 0.0&#xD;
    z: 1.0&#xD;
    _ _ _ &#xD;
&#xD;
Now, In order to &amp;#039;use&amp;#039; the data, it is  necessary to understand the structure of the text file. It can be represented by the &amp;#039;fomula&amp;#039; below :&#xD;
&#xD;
    Header_1					(some indication about variables displayed beneath)&#xD;
    	Variable_1: value1		(a variable name followed by its value)&#xD;
    	....					&#xD;
    	Varable_n: value n		(a variable name followed by its value)	&#xD;
    ....&#xD;
    Header_n					(some indication about variables displayed beneath)&#xD;
    	Variable_1: value1		(a variable name followed by its value)&#xD;
    	....						&#xD;
    	Varable_n: value n		(a variable name followed by its value)	 &#xD;
    _ _ _  						(end of message)&#xD;
&#xD;
So, going back to the turtlesim example:&#xD;
&#xD;
 - linear x represents the linear velocity of the turtle (in m/s),&#xD;
 - angular z represents the angular velocity of the turtle in rad/s (its bearing being the sum of the angular displacements). &#xD;
 - The other variables are always 0 as the turtle moves in a 2D plane.&#xD;
&#xD;
Note: the meaning of a variable in a message might not always be obvious at first sight (due to ambiguous variable name such as x,y,z for instance) however, by observing the values of the variables against the action of the robots (the trajectory it takes in our case), this meaning can be quite easily retrieved. &#xD;
&#xD;
&#xD;
Importing the Data into Mathematica&#xD;
-----------------------------------&#xD;
&#xD;
Now that is possible to retrieve and understand messages published over a ROS topic the next step is to import those messages in Mathematica. In order to do this, a function, taking the path of the text file containing the messages as an argument and returning the messages in a list created; as displayed below:  &#xD;
&#xD;
    MessageImport[filepath_]:=&#xD;
    Module[&#xD;
    {stream=OpenRead[filepath],character,rules= {}},&#xD;
    character=Read[stream,String];&#xD;
    Reap[&#xD;
    While[character=!=EndOfFile,&#xD;
    If[character=== &amp;#034;---&amp;#034;,&#xD;
    Sow[Flatten[rules]];rules= {},&#xD;
    AppendTo[rules,&#xD;
    StringCases[character,&#xD;
    {var:(WordCharacter..)~~&amp;#034;:&amp;#034;~~Whitespace~~value:NumberString:&amp;gt;(var-&amp;gt;ToExpression[value]),&#xD;
    var:(WordCharacter..)~~&amp;#034;:&amp;#034;~~Whitespace:&amp;gt;(&amp;#034;Head&amp;#034;-&amp;gt;var)}]]];&#xD;
    character=Read[stream,String]];&#xD;
    Close[stream];][[2,1]]];&#xD;
&#xD;
And, it is then possible to represent this in a dataset like so: &#xD;
&#xD;
    Dataset[&#xD;
    Association[#]&amp;amp;/@&#xD;
    Partition[&#xD;
    Flatten[&#xD;
    MessageImport[filepath_]],4]]&#xD;
&#xD;
Hence, returning to the turtlesim example, if rosdata.txt is the file where the velocity command messages are published, the code below:&#xD;
&#xD;
    Dataset[&#xD;
     Association[#] &amp;amp; /@&#xD;
      Partition[&#xD;
       Flatten[&#xD;
        MessageImport[&amp;#034;rosdata.txt&amp;#034;]], 4]]&#xD;
&#xD;
would return something of the form:&#xD;
&#xD;
  ![enter image description here][6]&#xD;
&#xD;
&#xD;
Interpreting the Data&#xD;
---------------------&#xD;
&#xD;
Having imported the Data into Mathematica it can now be interpreted using the Wolfram Language. For example, in the case of a topic where the messages published contain linear and angular velocities like the one described above, the path of the robot can be retrieved using the following code (using the function AnglePath):  &#xD;
&#xD;
    Graphics[Line[AnglePath[Values[MessageImport[filepath_][[All,{2,8}]]]]]]&#xD;
&#xD;
Therefore,considering the turtlesim example, if the path of the turtle was:&#xD;
&#xD;
![enter image description here][7]&#xD;
&#xD;
The following code:&#xD;
&#xD;
    Graphics[Line[AnglePath[Values[MessageImport[&amp;#034;rosdata.txt&amp;#034;][[All,{2,8}]]]]]]&#xD;
&#xD;
would return:&#xD;
&#xD;
![enter image description here][8]&#xD;
&#xD;
which is the same as the actual path taken by the turtle.&#xD;
&#xD;
----------&#xD;
&#xD;
PART 2: CONTROLING ROS AND SUPPORTED ROBOTS&#xD;
-------------------------------------------&#xD;
Sending Commands to ROS from Mathematica&#xD;
----------------------------------------&#xD;
&#xD;
Yet another thing to consider is how to send ROS commands from Mathematica in order to be able to directly operate ROS and record ROS data from a Mathematica notebook. &#xD;
&#xD;
One possible way to do so would be to use the Run command, however, it is necessary to source ROS commands before executing them and I did not manage to do so with the Run command. &#xD;
&#xD;
So, another method to execute ROS commands from Mathematica is to create an empty shell script (using the chmod command in the Linux terminal)  and then one can write the desired commands in the script and execute it from Mathematica, thanks to the function below (which takes the desired commands as an argument) :&#xD;
&#xD;
    RosCommand[Command_]:=&#xD;
    WaitNext[&#xD;
    ParallelSubmit/@&#xD;
    Unevaluated[{&#xD;
    {WriteString[&#xD;
    OpenWrite[&amp;#034;script&amp;#034;],&#xD;
    &amp;#034;bash -c \&amp;#034;source /opt/ros/indigo/setup.bash &amp;amp;&amp;amp; source ~/catkin_ws/devel/setup.bash &amp;amp;&amp;amp; &amp;#034;,Command,&amp;#034;\&amp;#034;&amp;#034;],Close[&amp;#034;script&amp;#034;],&#xD;
    SetDirectory[&amp;#034;/&amp;#034;],&#xD;
    SetEnvironment[&amp;#034;LD_LIBRARY_PATH&amp;#034;-&amp;gt;&amp;#034;&amp;#034;],&#xD;
    RunProcess[&amp;#034;script&amp;#034;,&amp;#034;StandardOutput&amp;#034;],&#xD;
    SetEnvironment[&amp;#034;LD_LIBRARY_PATH&amp;#034;-&amp;gt;FileNameJoin[{$InstallationDirectory,&amp;#034;SystemFiles&amp;#034;,&amp;#034;Libraries&amp;#034;,$SystemID}]],&#xD;
    SetDirectory[&amp;#034;your working directory&amp;#034;]},&#xD;
    Pause[5]}]];&#xD;
&#xD;
Note: a second kernel is used in that code in order to kill the process running in the first one as some commands executed by the ROS command function would evaluate indefinitely.&#xD;
&#xD;
Hence, to start the ROS master, the command would be : &#xD;
&#xD;
    RosCommand[rosstart]&#xD;
&#xD;
&#xD;
Publishing messages from Mathematica&#xD;
------------------------------------&#xD;
&#xD;
Finally, another thing to implement in order to be able to perform most of ROS&amp;#039;s basic features from Mathematica is to be able to publish messages on topics. In some cases this can be done by using the ROS command $rostopic publish through the RosCommand function described in the previous section. &#xD;
&#xD;
This method works fine however there is quite a considerable latency between the moment command is evaluated and the moment the command is actually published (about 1-2 seconds). Hence, this way only works for topics where messages have to be published at a rate lower than 0.5 Hz, for example the take off and land commands for the drone, as shown below:&#xD;
&#xD;
    Takeoff:&#xD;
    RosCommand[&amp;#034;rostopic pub ardrone/takeoff std_msgs/Empty&amp;#034;]&#xD;
    &#xD;
    Landing:&#xD;
    RosCommand[&amp;#034;rostopic pub ardrone/land std_msgs/Empty&amp;#034;]&#xD;
&#xD;
For topics where the rate for which the messages have to be published at a rate greater than 0.5 Hz, a publisher ROS node (a &amp;#039;Mathematica&amp;#039; node), intaking the arguments from Mathematica should be created. This can be written in C++ and the arguments from Mathematica can be transferred by simple file I/O code; i.e. this process would have the following structure:&#xD;
&#xD;
 - Mathematica Notebook:&#xD;
     - Some functions would assign a value to the desired message variables (controller part)&#xD;
     - Some code would save the variable values to a text file at a chosen rate&#xD;
 - C++ code:&#xD;
     - Some code declaring the Publisher Node&#xD;
     - Some code importing the variable values from the text file&#xD;
     - Some code publishing these values at the chosen rate&#xD;
&#xD;
Note: the instructions to build the node are available [here][9].&#xD;
&#xD;
Hence, to send velocity commands to the ArDrone from Mathematica, the Mathematica Notebook could be :&#xD;
&#xD;
    CONTROL PART:&#xD;
    &#xD;
    Turn right:&#xD;
    {p = {1, 0, 0}; Pause[1]; p = {0, 0, 0}}&#xD;
    &#xD;
    Move forwards:&#xD;
    {p = {0, 0.2, 0}, Pause[1], p = {0, 0, 0}}&#xD;
    &#xD;
    Move Up:&#xD;
    {p = {0, 0, 0.1}, Pause[1], p = {0, 0, 0}}&#xD;
    &#xD;
    Move Down:&#xD;
    {p = {0, 0, -0.1}, Pause[1], p = {0, 0, 0}}&#xD;
    &#xD;
    &#xD;
    VARIABLE OUTPUT PART: &#xD;
    &#xD;
    Dynamic[&#xD;
    Refresh[&#xD;
    StringJoin[&amp;#034;b  &amp;#034;,&#xD;
    Flatten[{&#xD;
    If[Round[p[[1]],0.1]&amp;gt;=0,&#xD;
    PadRight[Characters[ToString[Round[p[[1]],0.1]]],3,&amp;#034;0&amp;#034;],&#xD;
    PadRight[Characters[ToString[Round[p[[1]],0.1]]],4,&amp;#034;0&amp;#034;]],&#xD;
    &amp;#034;  &amp;#034;,&#xD;
    If[Round[p[[2]],0.1]&amp;gt;=0,&#xD;
    PadRight[Characters[ToString[Round[p[[2]],0.1]]],3,&amp;#034;0&amp;#034;],&#xD;
    PadRight[Characters[ToString[Round[p[[2]],0.1]]],4,&amp;#034;0&amp;#034;]],&amp;#034;  &amp;#034;,&#xD;
    If[Round[p[[3]],0.1]&amp;gt;=0,&#xD;
    PadRight[Characters[ToString[Round[p[[3]],0.1]]],3,&amp;#034;0&amp;#034;],&#xD;
    PadRight[Characters[ToString[Round[p[[3]],0.1]]],4,&amp;#034;0&amp;#034;]]&#xD;
    }],&amp;#034;  e&amp;#034;]&amp;gt;&amp;gt;&amp;#034;file.txt&amp;#034;&#xD;
    ,UpdateInterval-&amp;gt;1]]&#xD;
&#xD;
where p={angluar_z, linear_x, linear_z} and:&#xD;
&#xD;
 - angular_z represents the angular velocity of the drone in the xy plane (in rad/s) (its bearing being the sum of the angular displacements),&#xD;
 - linear_x represents the linear velocity of the drone in the xy plane (in m/s),&#xD;
 - linear_z represents the velocity of the drone along the z axis (in m/s).&#xD;
&#xD;
Moreover, the C++ code could look like:&#xD;
&#xD;
    #include &amp;#034;ros/ros.h&amp;#034;&#xD;
    #include &amp;#034;geometry_msgs/Twist.h&amp;#034;&#xD;
    &#xD;
    #include &amp;lt;boost/lexical_cast.hpp&amp;gt;&#xD;
    #include &amp;lt;iostream&amp;gt;&#xD;
    #include &amp;lt;string&amp;gt;&#xD;
    #include &amp;lt;fstream&amp;gt;&#xD;
    #include &amp;lt;stdlib.h&amp;gt;&#xD;
    &#xD;
    using namespace std;&#xD;
    &#xD;
    int main(int argc, char **argv)&#xD;
    {&#xD;
    	ros::init(argc, argv, &amp;#034;mathematica&amp;#034;);&#xD;
    	ros::NodeHandle n;&#xD;
    	&#xD;
    	ros::Publisher chatter_pub = n.advertise&amp;lt;geometry_msgs::Twist&amp;gt;(&amp;#034;/cmd_vel&amp;#034;, 1000);&#xD;
    &#xD;
    	ros::Rate loop_rate(1.0);&#xD;
    &#xD;
    	int count = 0;&#xD;
    &#xD;
    	while (ros::ok())&#xD;
    	{&#xD;
    		//start&#xD;
    		ifstream infile( &amp;#034;file.txt&amp;#034; );&#xD;
    		double nb; &#xD;
    		double nb2;&#xD;
    		double nb3;&#xD;
    		string b;&#xD;
    		string e;&#xD;
    		(infile &amp;gt;&amp;gt; b &amp;gt;&amp;gt; nb &amp;gt;&amp;gt; nb2 &amp;gt;&amp;gt; nb3 &amp;gt;&amp;gt; e);&#xD;
    		//end&#xD;
    		&#xD;
    		geometry_msgs::Twist vel_msg;&#xD;
    &#xD;
     		vel_msg.linear.x = nb2;&#xD;
    		vel_msg.linear.y =0.0;&#xD;
       		vel_msg.linear.z = nb3;&#xD;
    &#xD;
       		vel_msg.angular.x =0.0;&#xD;
       		vel_msg.angular.y =0.0;&#xD;
       		vel_msg.angular.z = nb;&#xD;
    &#xD;
    	    	ROS_INFO(&amp;#034;[Random Walk] linear.x = %.2f, angular.z=%.2f\n&amp;#034;, vel_msg.linear.x, vel_msg.angular.z);&#xD;
    &#xD;
    	    	chatter_pub.publish(vel_msg);&#xD;
    &#xD;
        		ros::spinOnce();&#xD;
    &#xD;
        		loop_rate.sleep();&#xD;
        		++count;&#xD;
    	}&#xD;
    &#xD;
    	return 0;&#xD;
    }&#xD;
&#xD;
----------&#xD;
&#xD;
Conclusion&#xD;
----------&#xD;
Throughout the Mentorship program, I developed functions enabling me to fully interact with ROS and the robot(s) it is controlling from a Mathematica notebook. Owning a Parrot ArDrone myself, which is a device supported by ROS, I tested this in real conditions and the result can be seen below:&#xD;
&#xD;
![enter image description here][10]&#xD;
&#xD;
This is only a GIF, the full video is available [here][11]. &#xD;
&#xD;
All, in all, I have thoroughly enjoyed working on this project and would love to hear your feedback. I see it as a starting point towards using the many abilities of the Wolfram Language in order to improve the capabilities of ROS supported robots: I can already imagine myself using Mathematica to create an autopilot for my drone !&#xD;
&#xD;
Finally, I would also like to thanks Todd Rowland, Alison Kimball and Wolfram Research for the help and support provided throughout the mentorship program.&#xD;
&#xD;
Loris Gliner &#xD;
&#xD;
&#xD;
  [1]: http://community.wolfram.com//c/portal/getImageAttachment?filename=fig0.png&amp;amp;userId=553216&#xD;
  [2]: http://www.ros.org/&#xD;
  [3]: http://robohub.org/ros-101-intro-to-the-robot-operating-system/&#xD;
  [4]: http://wiki.ros.org/&#xD;
  [5]: http://wiki.ros.org/ardrone_autonomy&#xD;
  [6]: http://community.wolfram.com//c/portal/getImageAttachment?filename=fig1.PNG&amp;amp;userId=553216&#xD;
  [7]: http://community.wolfram.com//c/portal/getImageAttachment?filename=fig2.JPG&amp;amp;userId=553216&#xD;
  [8]: http://community.wolfram.com//c/portal/getImageAttachment?filename=fig3.png&amp;amp;userId=553216&#xD;
  [9]: http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28c++%29&#xD;
  [10]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ardronegif.gif&amp;amp;userId=553216&#xD;
  [11]: https://www.youtube.com/watch?v=zD8yjOCWhJQ</description>
    <dc:creator>Loris Gliner</dc:creator>
    <dc:date>2015-11-17T17:57:08Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/2111005">
    <title>Collaboration needed: Program Human Bio Machine Interfaces</title>
    <link>https://community.wolfram.com/groups/-/m/t/2111005</link>
    <description>I believe I have a enough biological data to make accurate high-quality immune system compatible synthetic human body limbs and organs to help injured American Patriots.  I need a high-quality Mathematica coder to help me program the bio-mechanical drivers &amp;amp; interfaces software components needed. The work will be done in Northern Colorado.</description>
    <dc:creator>John Remillard</dc:creator>
    <dc:date>2020-11-09T05:57:28Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1276016">
    <title>[?] Manipulate a dynamicly generated expression?</title>
    <link>https://community.wolfram.com/groups/-/m/t/1276016</link>
    <description>Hello&#xD;
I wrote some code to calculate and demonstrate robotic like vectors. My functions allow to add vectors and links (changes from coordinate systems from elements) .&#xD;
So I can define the System with Rotation Matrices and vectors and creates a list of Vectors, dependend the los current angeles of the rotations. &#xD;
&#xD;
    data = {};&#xD;
    angles = {};&#xD;
    &#xD;
    Move[vec_] := Module[{},&#xD;
      (*Move existing vectors to new Position*)&#xD;
      move[dat_] := {dat[[1]] + vec, dat[[2]] + vec };&#xD;
       For[i = 1, i &amp;lt;= Length[data], i++, data[[i]] = move[data[[i]]] ];&#xD;
      (*Print[&amp;#034;moved: &amp;#034;,data//MatrixForm];*)&#xD;
      ]&#xD;
    &#xD;
    AddVector[vec_] := AppendTo[data, {{0, 0, 0}, vec}];&#xD;
    AddLink[vec_, rot_, angle_] := Module[{},&#xD;
       AddRot[rot, angle];&#xD;
       Move[vec]; &#xD;
       AddVector[vec];&#xD;
       ];&#xD;
    AddRot[rot_, angle_] := Module[{},&#xD;
       AppendTo[angles, angle];&#xD;
       (*Print[data//MatrixForm];*)&#xD;
       AddVector[{0.1, 0, 0}];&#xD;
       AddVector[{0, 0.1, 0}];&#xD;
       AddVector[{0, 0, 0.1}];&#xD;
       (*Print[data//MatrixForm];*)&#xD;
       &#xD;
       (*Alle vektoren im K-System rotieren*)&#xD;
       (*Print[&amp;#034;Rotating Vectors&amp;#034;];*)&#xD;
       conv[dat_] := {rot[angle].(dat[[1]]), rot[angle].(dat[[2]]) };&#xD;
        For[i = 1, i &amp;lt;= Length[data], i++, data[[i]] = conv[data[[i]]] ];&#xD;
       (*Print[&amp;#034;rotated: &amp;#034;,data//MatrixForm];*)&#xD;
       &#xD;
       ];&#xD;
    &#xD;
    ShowAll[] := Module[{},&#xD;
      arrows = Arrow[data];&#xD;
      region = &#xD;
       Point[{{0, 0, 2}, {0, 0, -2}, {0, 2, 0}, {2, 0, 0}, {0, -2, &#xD;
          0}, {-2, 0, 0}}];&#xD;
      Print[Graphics3D[{arrows, region}, Axes -&amp;gt; True, ViewPoint -&amp;gt; Front]]&#xD;
      ]&#xD;
    &#xD;
    &#xD;
    Ri1[q1_] := ( {&#xD;
        {Cos[q1], 0, -Sin[q1]},&#xD;
        {0, 1, 0},&#xD;
        {Sin[q1], 0, Cos[q1]}&#xD;
       } );&#xD;
    &#xD;
    AddVector[{1, 0, 0}];&#xD;
    &#xD;
    AddLink[{1, 1, 1}, Ri1, x];&#xD;
    data // MatrixForm&#xD;
    ShowAll[];&#xD;
    &#xD;
Output:&#xD;
&#xD;
  ![Output][1]&#xD;
&#xD;
When I set x to a value, y can display the result en this form: &#xD;
&#xD;
![system][2]&#xD;
&#xD;
My problem is, that i dont know how to put the system to the Manipulate function. I tried something like this, but the amount of variables is not defined:&#xD;
&#xD;
    arrows = Arrow[data]&#xD;
    region = Point[{{0, 0, 2}, {0, 0, -2}, {0, 2, 0}, {2, 0, 0}, {0, -2, &#xD;
        0}, {-2, 0, 0}}]&#xD;
    (*parameter  = {Graphics3D[{arrows,region}, Axes -&amp;gt; True,ViewPoint\&#xD;
    \[Rule]Front],Axes -&amp;gt; True,ViewPoint\[Rule]Front};&#xD;
    For[i= 1,i&amp;lt;=Length[angles],i++,AppendTo[parameter,{angles[[i]],0,Pi}];\&#xD;
    *)&#xD;
     y = Dynamic[&#xD;
      Graphics3D[{arrows, region}, Axes -&amp;gt; True, ViewPoint -&amp;gt; Front]]&#xD;
    Manipulate[y, {x, 0, Pi}]&#xD;
&#xD;
Any Ideas how to Manipulate this?&#xD;
&#xD;
&#xD;
  [1]: http://community.wolfram.com//c/portal/getImageAttachment?filename=1.JPG&amp;amp;userId=1275884&#xD;
  [2]: http://community.wolfram.com//c/portal/getImageAttachment?filename=2.JPG&amp;amp;userId=1275884</description>
    <dc:creator>zare bozas</dc:creator>
    <dc:date>2018-01-31T21:39:12Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/551187">
    <title>Analyzing Crop Yields by Drone</title>
    <link>https://community.wolfram.com/groups/-/m/t/551187</link>
    <description>Over the summer, I had the opportunity to work with a [Phantom 2 Vision+ drone from DJI][1]. After a few exciting trial flights, I decided to investigate a real world application: fly over one of the abundant Illinois farm fields and record bird&amp;#039;s eye images of the crops below. Then using this data, create a simple function to estimate the crop yield for that area.&#xD;
&#xD;
![enter image description here][2]&#xD;
&#xD;
Recently, I drove out to a farm with a fellow Wolfram employee who also happens to be an expert drone operator. We flew the drone over a stretch of soy fields and took pictures and shot video along the way. Here is a small sample video: &#xD;
&#xD;
[Drone flying over soy field (full video):][3] https://vimeo.com/136947441&#xD;
&#xD;
[![enter image description here][4]][3]&#xD;
&#xD;
As you can see in the video, most areas of this field is in really good shape (at least when judged from this altitude). But there are some areas near a drainage ditch where the soy is not growing very well. This can happen because the soil is too moist for too long causing the root system to lack oxygen. As a result the soy plants are much smaller near the drainage area or completely missing.&#xD;
&#xD;
Let&amp;#039;s look at one particular example of this situation. We import the data from the SD card that was used as storage on the drone:&#xD;
&#xD;
    crop = Import[&amp;#034;F:\\DCIM\\101MEDIA\\DJI01951.JPG&amp;#034;]&#xD;
&#xD;
![enter image description here][5]&#xD;
&#xD;
The first thing to notice is the large amount of barrel distortion in this image (note how the road looks highly curved). This is due to the drone camera having very wide angle lens. There is no built-in function in the Wolfram Language to simply correct for barrel distortion (yet), so I am going to focus on a center part of the image where the distortion is not too bad. The ideal situation here would be to fly very high with a very narrow lens.&#xD;
&#xD;
So first, to get a smaller center part of the image, let&amp;#039;s take a look at a subimage about 1/3 x 1/3 the size of the original, located a little bit right of the center:&#xD;
&#xD;
    {columns, rows} = ImageDimensions[crop];&#xD;
    {rowLow, rowHigh} = {Round[rows/3], Round[2 rows/3]};&#xD;
    {columnLow, columnHigh} = {Round[columns/2], Round[5 columns/6]};&#xD;
    HighlightImage[crop, Rectangle[{columnLow, rowLow}, {columnHigh, rowHigh}], Method -&amp;gt; &amp;#034;Brightness&amp;#034;]&#xD;
&#xD;
![enter image description here][6]&#xD;
&#xD;
Using this region we can now get a sample of the crop that contains both very healthy plants (on the left) and very small or missing plants (on the right):&#xD;
&#xD;
    cropSample = ImageTake[crop, {rowLow, rowHigh}, {columnLow, columnHigh}]&#xD;
&#xD;
![enter image description here][7]&#xD;
&#xD;
So now the question becomes: how do I measure what fraction of the harvest is lost in this sample? A simple approach is to just turn the image into a black and white image where a white color indicates a bright area (like the green plants) and a black color indicates the soil (dark in the original image):&#xD;
&#xD;
    binaryCrop1 = Binarize[cropSample]&#xD;
&#xD;
![enter image description here][8]&#xD;
&#xD;
That sort of works, but the original sample still had bright areas due to visible rocks and dead leaves, so let&amp;#039;s see if we can refine this approach just a little bit. Instead of using just a plain binarize we can look at the dominant color in this image, which we expect to be greens and blacks:&#xD;
&#xD;
    dominantColors = DominantColors[cropSample, 10]&#xD;
&#xD;
![enter image description here][9]&#xD;
&#xD;
The result here is more or less as we would expect, with some additional grays (perhaps from dead leaves and rocks).&#xD;
&#xD;
Now let&amp;#039;s take a look at the first dominant color, a good fit for a healthy soy plant in this image. Using this color we can now calculate the color distance for each pixel giving us an image where dark colors are close matches and white colors are poor matches:&#xD;
&#xD;
    ColorDistance[cropSample, First[dominantColors]]&#xD;
&#xD;
![enter image description here][10]&#xD;
&#xD;
Again we can binarize this image. In this case also need to negate the black/white colors to get white/black so the colors in the binarized image have the same meaning as before (white=soy, black=not soy):&#xD;
&#xD;
    binaryCrop2 = ColorDistance[cropSample, First[dominantColors]] // Binarize // ColorNegate&#xD;
&#xD;
![enter image description here][11]&#xD;
&#xD;
This result actually looks quite nice: Areas with no soy plants now have a black pixel values (0) and areas with soy plants have white pixel values (1). So let&amp;#039;s count the white pixels:&#xD;
&#xD;
    soyPixels = ImageMeasurements[binaryCrop2, &amp;#034;Total&amp;#034;]&#xD;
    (* Gives: 954,214.0 *)&#xD;
&#xD;
And also lets count the total number of pixels in the image:&#xD;
&#xD;
    totalPixels = Times @@ ImageMeasurements[binaryCrop2, &amp;#034;Dimensions&amp;#034;]&#xD;
    (* Gives: 1,603,814 *)&#xD;
&#xD;
And now we have our crude estimate for the amount of soy plants in this image, about 60%:&#xD;
&#xD;
    Quantity[100 soyPixels/totalPixels, &amp;#034;Percent&amp;#034;]&#xD;
    (* Gives: 59.4966% *)&#xD;
&#xD;
Of course this is a very crude estimation, but perhaps not too far off from the actual yield when this particular spot is harvested. I actually expect this to be a slight overestimation, since smaller plants will likely have no soy beans or less soy beans than a fully grown plant. But I am not a crop analyst, so we&amp;#039;ll have to go with 60% for now.&#xD;
&#xD;
Finally, an analysis like this can easily be done on the fly (or &amp;#034;on the drone&amp;#034; in this case), where an embedded system like a Raspberry Pi or similar device can process data as it comes in, and even direct the drone to the areas of highest interest (with the most stressed plants).&#xD;
&#xD;
&#xD;
  [1]: http://www.dji.com/product/phantom-2-vision/feature&#xD;
  [2]: /c/portal/getImageAttachment?filename=0_0.jpg&amp;amp;userId=11733&#xD;
  [3]: https://vimeo.com/136947441&#xD;
  [4]: /c/portal/getImageAttachment?filename=ezgif-3078374406.gif&amp;amp;userId=11733&#xD;
  [5]: /c/portal/getImageAttachment?filename=Untitled-8.png&amp;amp;userId=22112&#xD;
  [6]: /c/portal/getImageAttachment?filename=Untitled-9.png&amp;amp;userId=22112&#xD;
  [7]: /c/portal/getImageAttachment?filename=Untitled-10.png&amp;amp;userId=22112&#xD;
  [8]: /c/portal/getImageAttachment?filename=Untitled-11.png&amp;amp;userId=22112&#xD;
  [9]: /c/portal/getImageAttachment?filename=Untitled-12.png&amp;amp;userId=22112&#xD;
  [10]: /c/portal/getImageAttachment?filename=Untitled-13.png&amp;amp;userId=22112&#xD;
  [11]: /c/portal/getImageAttachment?filename=Untitled-14.png&amp;amp;userId=22112</description>
    <dc:creator>Arnoud Buzing</dc:creator>
    <dc:date>2015-08-21T19:28:02Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/459303">
    <title>Pi Day Challenge: write a novel like a monkey</title>
    <link>https://community.wolfram.com/groups/-/m/t/459303</link>
    <description>Can a monkey type Shakespeare&amp;#039;s works by only using words randomly appearing from the digits of `Pi`?  I think it&amp;#039;s a challenge...  &#xD;
&#xD;
But perhaps we can use `Pi` to define a restricted subset of the English Language....&#xD;
&#xD;
Here is a function (`MonkeyPiWords[nLetters, wordLength]`) that takes `Pi` and generates the random english words that can be conjured up from `Pi`&amp;#039;s digits. `nLetters` are generated from `Pi` in the sequence they are derived from the digits fo `Pi`, and then all english words of `wordLength` letters long from that sequence (in order, partitioned in sets `wordLength` letters long) are returned (taking into account tht the algorithm has an ambiguity of 3 positions for where to start).  &#xD;
&#xD;
 So the challenge is to take the vocabulary returned by this for a fixed number of input letters and write a significant story with only those words... &#xD;
&#xD;
Here is a function to define the problem: (Note: see bug fixed version later in this thread)&#xD;
&#xD;
&#xD;
    MonkeyPiWords[nLetters_Integer, wordLength_Integer] :=&#xD;
     &#xD;
     Module[{characteCodes, characteCodesRules, piDigitsAsCharacterCodes1,&#xD;
        piDigitsAsCharacterCodes2, piDigitsAsCharacterCodes3, &#xD;
       monkeyCharacters1, monkeyWords1, monkeyCharacters2, monkeyWords2, &#xD;
       monkeyCharacters3, monkeyWords3, monkeyWords},&#xD;
      &#xD;
      characteCodes = ToCharacterCode[&amp;#034;abcdefghijklmnopqrstuvwxyz&amp;#034;];&#xD;
      characteCodesRules = &#xD;
       Thread[Range[Length[characteCodes]] -&amp;gt; characteCodes];&#xD;
      &#xD;
      piDigitsAsCharacterCodes1 = &#xD;
       Mod[#, 26] &amp;amp; /@ &#xD;
         FromDigits /@ &#xD;
          Partition[First[RealDigits[N[\[Pi], 3 nLetters]]], 3] /. &#xD;
        characteCodesRules;&#xD;
      piDigitsAsCharacterCodes2 = &#xD;
       Mod[#, 26] &amp;amp; /@ &#xD;
         FromDigits /@ &#xD;
          Partition[Rest@First[RealDigits[N[\[Pi], 3 nLetters]]], 3] /. &#xD;
        characteCodesRules;&#xD;
      piDigitsAsCharacterCodes3 = &#xD;
       Mod[#, 26] &amp;amp; /@ &#xD;
         FromDigits /@ &#xD;
          Partition[Rest@Rest@First[RealDigits[N[\[Pi], 3 nLetters]]], &#xD;
           3] /. characteCodesRules;&#xD;
      &#xD;
      monkeyCharacters1 = FromCharacterCode /@ piDigitsAsCharacterCodes1;&#xD;
      monkeyWords1 = &#xD;
       StringJoin /@ Partition[monkeyCharacters1, wordLength];&#xD;
      &#xD;
      monkeyCharacters2 = FromCharacterCode /@ piDigitsAsCharacterCodes2;&#xD;
      monkeyWords2 = &#xD;
       StringJoin /@ Partition[monkeyCharacters2, wordLength];&#xD;
      &#xD;
      monkeyCharacters3 = FromCharacterCode /@ piDigitsAsCharacterCodes3;&#xD;
      monkeyWords3 = &#xD;
       StringJoin /@ Partition[monkeyCharacters3, wordLength];&#xD;
      &#xD;
      Union@Flatten[{DictionaryLookup[#, IgnoreCase -&amp;gt; True] &amp;amp; /@ &#xD;
          monkeyWords1, &#xD;
         DictionaryLookup[#, IgnoreCase -&amp;gt; True] &amp;amp; /@ monkeyWords2, &#xD;
         DictionaryLookup[#, IgnoreCase -&amp;gt; True] &amp;amp; /@ monkeyWords3}]&#xD;
      ]&#xD;
&#xD;
Here are the results for words of 4 letters or greater using 100000 letters in sequence derived from `Pi` using the above algorithm:&#xD;
(Assume you can use any 1, 2 or 3 letter words, but you can restrict yourself by doing those computations as well):&#xD;
&#xD;
&#xD;
4-Letter words&#xD;
&#xD;
    MonkeyPiWords[100000, 4]&#xD;
&#xD;
gives&#xD;
    &#xD;
      {&amp;#034;Abel&amp;#034;, &amp;#034;able&amp;#034;, &amp;#034;ably&amp;#034;, &amp;#034;achy&amp;#034;, &amp;#034;acid&amp;#034;, &amp;#034;acne&amp;#034;, &amp;#034;Adam&amp;#034;, &amp;#034;Afro&amp;#034;, \&#xD;
      &amp;#034;agar&amp;#034;, &amp;#034;AIDS&amp;#034;, &amp;#034;Ajax&amp;#034;, &amp;#034;Alar&amp;#034;, &amp;#034;Alex&amp;#034;, &amp;#034;Alpo&amp;#034;, &amp;#034;also&amp;#034;, &amp;#034;alum&amp;#034;, \&#xD;
      &amp;#034;Alva&amp;#034;, &amp;#034;ammo&amp;#034;, &amp;#034;arcs&amp;#034;, &amp;#034;arid&amp;#034;, &amp;#034;Arne&amp;#034;, &amp;#034;ates&amp;#034;, &amp;#034;Audi&amp;#034;, &amp;#034;Avon&amp;#034;, \&#xD;
      &amp;#034;ayes&amp;#034;, &amp;#034;Bach&amp;#034;, &amp;#034;back&amp;#034;, &amp;#034;bags&amp;#034;, &amp;#034;bait&amp;#034;, &amp;#034;bank&amp;#034;, &amp;#034;bans&amp;#034;, &amp;#034;bare&amp;#034;, \&#xD;
      &amp;#034;bark&amp;#034;, &amp;#034;bash&amp;#034;, &amp;#034;Bass&amp;#034;, &amp;#034;bath&amp;#034;, &amp;#034;bats&amp;#034;, &amp;#034;beam&amp;#034;, &amp;#034;Beck&amp;#034;, &amp;#034;Bede&amp;#034;, \&#xD;
      &amp;#034;belt&amp;#034;, &amp;#034;berm&amp;#034;, &amp;#034;bibs&amp;#034;, &amp;#034;bids&amp;#034;, &amp;#034;Biko&amp;#034;, &amp;#034;Biro&amp;#034;, &amp;#034;bits&amp;#034;, &amp;#034;bock&amp;#034;, \&#xD;
      &amp;#034;Boer&amp;#034;, &amp;#034;Bond&amp;#034;, &amp;#034;bone&amp;#034;, &amp;#034;boor&amp;#034;, &amp;#034;Boru&amp;#034;, &amp;#034;boss&amp;#034;, &amp;#034;bowl&amp;#034;, &amp;#034;brat&amp;#034;, \&#xD;
      &amp;#034;Bret&amp;#034;, &amp;#034;Buck&amp;#034;, &amp;#034;buds&amp;#034;, &amp;#034;buff&amp;#034;, &amp;#034;bump&amp;#034;, &amp;#034;burg&amp;#034;, &amp;#034;burk&amp;#034;, &amp;#034;burp&amp;#034;, \&#xD;
      &amp;#034;Burt&amp;#034;, &amp;#034;bury&amp;#034;, &amp;#034;Bush&amp;#034;, &amp;#034;buss&amp;#034;, &amp;#034;byes&amp;#034;, &amp;#034;cafe&amp;#034;, &amp;#034;camp&amp;#034;, &amp;#034;Caph&amp;#034;, \&#xD;
      &amp;#034;cask&amp;#034;, &amp;#034;cast&amp;#034;, &amp;#034;Cebu&amp;#034;, &amp;#034;ceca&amp;#034;, &amp;#034;cell&amp;#034;, &amp;#034;chat&amp;#034;, &amp;#034;chew&amp;#034;, &amp;#034;chip&amp;#034;, \&#xD;
      &amp;#034;chug&amp;#034;, &amp;#034;clad&amp;#034;, &amp;#034;Clay&amp;#034;, &amp;#034;clod&amp;#034;, &amp;#034;Cobb&amp;#034;, &amp;#034;coed&amp;#034;, &amp;#034;Colo&amp;#034;, &amp;#034;cony&amp;#034;, \&#xD;
      &amp;#034;cope&amp;#034;, &amp;#034;cord&amp;#034;, &amp;#034;Cork&amp;#034;, &amp;#034;Cote&amp;#034;, &amp;#034;craw&amp;#034;, &amp;#034;Cray&amp;#034;, &amp;#034;Cree&amp;#034;, &amp;#034;cubs&amp;#034;, \&#xD;
      &amp;#034;dads&amp;#034;, &amp;#034;damn&amp;#034;, &amp;#034;damp&amp;#034;, &amp;#034;dams&amp;#034;, &amp;#034;Dana&amp;#034;, &amp;#034;Dare&amp;#034;, &amp;#034;darn&amp;#034;, &amp;#034;Dave&amp;#034;, \&#xD;
      &amp;#034;days&amp;#034;, &amp;#034;Debs&amp;#034;, &amp;#034;dews&amp;#034;, &amp;#034;dewy&amp;#034;, &amp;#034;dibs&amp;#034;, &amp;#034;dice&amp;#034;, &amp;#034;Dick&amp;#034;, &amp;#034;dike&amp;#034;, \&#xD;
      &amp;#034;Dina&amp;#034;, &amp;#034;dine&amp;#034;, &amp;#034;dint&amp;#034;, &amp;#034;dire&amp;#034;, &amp;#034;docs&amp;#034;, &amp;#034;doll&amp;#034;, &amp;#034;dome&amp;#034;, &amp;#034;dots&amp;#034;, \&#xD;
      &amp;#034;Doug&amp;#034;, &amp;#034;dour&amp;#034;, &amp;#034;dram&amp;#034;, &amp;#034;duck&amp;#034;, &amp;#034;duel&amp;#034;, &amp;#034;dues&amp;#034;, &amp;#034;duff&amp;#034;, &amp;#034;duns&amp;#034;, \&#xD;
      &amp;#034;duos&amp;#034;, &amp;#034;duty&amp;#034;, &amp;#034;Dyer&amp;#034;, &amp;#034;dyes&amp;#034;, &amp;#034;earn&amp;#034;, &amp;#034;eats&amp;#034;, &amp;#034;eave&amp;#034;, &amp;#034;eBay&amp;#034;, \&#xD;
      &amp;#034;echo&amp;#034;, &amp;#034;eels&amp;#034;, &amp;#034;Elam&amp;#034;, &amp;#034;Elia&amp;#034;, &amp;#034;elks&amp;#034;, &amp;#034;emus&amp;#034;, &amp;#034;Enid&amp;#034;, &amp;#034;Enif&amp;#034;, \&#xD;
      &amp;#034;ergo&amp;#034;, &amp;#034;ergs&amp;#034;, &amp;#034;errs&amp;#034;, &amp;#034;etas&amp;#034;, &amp;#034;even&amp;#034;, &amp;#034;expo&amp;#034;, &amp;#034;fame&amp;#034;, &amp;#034;faro&amp;#034;, \&#xD;
      &amp;#034;fast&amp;#034;, &amp;#034;fate&amp;#034;, &amp;#034;fats&amp;#034;, &amp;#034;fave&amp;#034;, &amp;#034;file&amp;#034;, &amp;#034;fink&amp;#034;, &amp;#034;fish&amp;#034;, &amp;#034;flap&amp;#034;, \&#xD;
      &amp;#034;flay&amp;#034;, &amp;#034;flue&amp;#034;, &amp;#034;flux&amp;#034;, &amp;#034;Fons&amp;#034;, &amp;#034;form&amp;#034;, &amp;#034;foul&amp;#034;, &amp;#034;fret&amp;#034;, &amp;#034;Frye&amp;#034;, \&#xD;
      &amp;#034;gabs&amp;#034;, &amp;#034;garb&amp;#034;, &amp;#034;gash&amp;#034;, &amp;#034;geed&amp;#034;, &amp;#034;gels&amp;#034;, &amp;#034;Gish&amp;#034;, &amp;#034;give&amp;#034;, &amp;#034;glad&amp;#034;, \&#xD;
      &amp;#034;glam&amp;#034;, &amp;#034;glee&amp;#034;, &amp;#034;glut&amp;#034;, &amp;#034;gnat&amp;#034;, &amp;#034;goad&amp;#034;, &amp;#034;gone&amp;#034;, &amp;#034;Goth&amp;#034;, &amp;#034;gout&amp;#034;, \&#xD;
      &amp;#034;govs&amp;#034;, &amp;#034;grab&amp;#034;, &amp;#034;gram&amp;#034;, &amp;#034;grip&amp;#034;, &amp;#034;gust&amp;#034;, &amp;#034;guys&amp;#034;, &amp;#034;Haas&amp;#034;, &amp;#034;hags&amp;#034;, \&#xD;
      &amp;#034;hake&amp;#034;, &amp;#034;half&amp;#034;, &amp;#034;Hans&amp;#034;, &amp;#034;hard&amp;#034;, &amp;#034;harp&amp;#034;, &amp;#034;hasp&amp;#034;, &amp;#034;hast&amp;#034;, &amp;#034;heat&amp;#034;, \&#xD;
      &amp;#034;Herr&amp;#034;, &amp;#034;hick&amp;#034;, &amp;#034;high&amp;#034;, &amp;#034;hilt&amp;#034;, &amp;#034;hims&amp;#034;, &amp;#034;hips&amp;#034;, &amp;#034;hire&amp;#034;, &amp;#034;Hiss&amp;#034;, \&#xD;
      &amp;#034;honk&amp;#034;, &amp;#034;hove&amp;#034;, &amp;#034;howl&amp;#034;, &amp;#034;hows&amp;#034;, &amp;#034;HTTP&amp;#034;, &amp;#034;huge&amp;#034;, &amp;#034;Hugh&amp;#034;, &amp;#034;hugs&amp;#034;, \&#xD;
      &amp;#034;hump&amp;#034;, &amp;#034;hums&amp;#034;, &amp;#034;Hung&amp;#034;, &amp;#034;hurl&amp;#034;, &amp;#034;Hyde&amp;#034;, &amp;#034;hymn&amp;#034;, &amp;#034;Iago&amp;#034;, &amp;#034;icky&amp;#034;, \&#xD;
      &amp;#034;iffy&amp;#034;, &amp;#034;Igor&amp;#034;, &amp;#034;ills&amp;#034;, &amp;#034;imps&amp;#034;, &amp;#034;inky&amp;#034;, &amp;#034;Iraq&amp;#034;, &amp;#034;ires&amp;#034;, &amp;#034;isms&amp;#034;, \&#xD;
      &amp;#034;Iyar&amp;#034;, &amp;#034;Jack&amp;#034;, &amp;#034;jags&amp;#034;, &amp;#034;jamb&amp;#034;, &amp;#034;Jame&amp;#034;, &amp;#034;jaws&amp;#034;, &amp;#034;jerk&amp;#034;, &amp;#034;Jock&amp;#034;, \&#xD;
      &amp;#034;Jose&amp;#034;, &amp;#034;Karl&amp;#034;, &amp;#034;kart&amp;#034;, &amp;#034;kegs&amp;#034;, &amp;#034;Kent&amp;#034;, &amp;#034;Kern&amp;#034;, &amp;#034;Kerr&amp;#034;, &amp;#034;Kiel&amp;#034;, \&#xD;
      &amp;#034;kind&amp;#034;, &amp;#034;Klee&amp;#034;, &amp;#034;knob&amp;#034;, &amp;#034;know&amp;#034;, &amp;#034;kook&amp;#034;, &amp;#034;Kory&amp;#034;, &amp;#034;Kroc&amp;#034;, &amp;#034;lacs&amp;#034;, \&#xD;
      &amp;#034;lade&amp;#034;, &amp;#034;Lady&amp;#034;, &amp;#034;lair&amp;#034;, &amp;#034;lame&amp;#034;, &amp;#034;Lang&amp;#034;, &amp;#034;lank&amp;#034;, &amp;#034;Laud&amp;#034;, &amp;#034;Leda&amp;#034;, \&#xD;
      &amp;#034;Left&amp;#034;, &amp;#034;lest&amp;#034;, &amp;#034;lido&amp;#034;, &amp;#034;lids&amp;#034;, &amp;#034;lief&amp;#034;, &amp;#034;Lima&amp;#034;, &amp;#034;limo&amp;#034;, &amp;#034;Lind&amp;#034;, \&#xD;
      &amp;#034;lips&amp;#034;, &amp;#034;Lisa&amp;#034;, &amp;#034;lisp&amp;#034;, &amp;#034;live&amp;#034;, &amp;#034;loaf&amp;#034;, &amp;#034;loam&amp;#034;, &amp;#034;loch&amp;#034;, &amp;#034;lock&amp;#034;, \&#xD;
      &amp;#034;logo&amp;#034;, &amp;#034;Lois&amp;#034;, &amp;#034;Lola&amp;#034;, &amp;#034;loll&amp;#034;, &amp;#034;lone&amp;#034;, &amp;#034;loot&amp;#034;, &amp;#034;Lora&amp;#034;, &amp;#034;lose&amp;#034;, \&#xD;
      &amp;#034;Luce&amp;#034;, &amp;#034;luff&amp;#034;, &amp;#034;lugs&amp;#034;, &amp;#034;Lvov&amp;#034;, &amp;#034;Lyon&amp;#034;, &amp;#034;Mack&amp;#034;, &amp;#034;maim&amp;#034;, &amp;#034;malt&amp;#034;, \&#xD;
      &amp;#034;Mani&amp;#034;, &amp;#034;Mann&amp;#034;, &amp;#034;many&amp;#034;, &amp;#034;Mark&amp;#034;, &amp;#034;mask&amp;#034;, &amp;#034;mast&amp;#034;, &amp;#034;math&amp;#034;, &amp;#034;Matt&amp;#034;, \&#xD;
      &amp;#034;mean&amp;#034;, &amp;#034;meat&amp;#034;, &amp;#034;meed&amp;#034;, &amp;#034;menu&amp;#034;, &amp;#034;mine&amp;#034;, &amp;#034;mini&amp;#034;, &amp;#034;moat&amp;#034;, &amp;#034;Moll&amp;#034;, \&#xD;
      &amp;#034;mosh&amp;#034;, &amp;#034;moth&amp;#034;, &amp;#034;mows&amp;#034;, &amp;#034;Mses&amp;#034;, &amp;#034;muns&amp;#034;, &amp;#034;nabs&amp;#034;, &amp;#034;nags&amp;#034;, &amp;#034;naif&amp;#034;, \&#xD;
      &amp;#034;nail&amp;#034;, &amp;#034;Nell&amp;#034;, &amp;#034;neon&amp;#034;, &amp;#034;Nile&amp;#034;, &amp;#034;Nola&amp;#034;, &amp;#034;none&amp;#034;, &amp;#034;nuke&amp;#034;, &amp;#034;oaks&amp;#034;, \&#xD;
      &amp;#034;Obie&amp;#034;, &amp;#034;odor&amp;#034;, &amp;#034;oiks&amp;#034;, &amp;#034;oils&amp;#034;, &amp;#034;Olga&amp;#034;, &amp;#034;open&amp;#034;, &amp;#034;opts&amp;#034;, &amp;#034;oral&amp;#034;, \&#xD;
      &amp;#034;Oran&amp;#034;, &amp;#034;orgy&amp;#034;, &amp;#034;Otis&amp;#034;, &amp;#034;ouch&amp;#034;, &amp;#034;oven&amp;#034;, &amp;#034;Ovid&amp;#034;, &amp;#034;pacy&amp;#034;, &amp;#034;pals&amp;#034;, \&#xD;
      &amp;#034;pave&amp;#034;, &amp;#034;pear&amp;#034;, &amp;#034;peas&amp;#034;, &amp;#034;peek&amp;#034;, &amp;#034;pews&amp;#034;, &amp;#034;Pike&amp;#034;, &amp;#034;pink&amp;#034;, &amp;#034;pips&amp;#034;, \&#xD;
      &amp;#034;Pisa&amp;#034;, &amp;#034;pith&amp;#034;, &amp;#034;Pius&amp;#034;, &amp;#034;plan&amp;#034;, &amp;#034;ploy&amp;#034;, &amp;#034;plug&amp;#034;, &amp;#034;poem&amp;#034;, &amp;#034;pool&amp;#034;, \&#xD;
      &amp;#034;pore&amp;#034;, &amp;#034;poxy&amp;#034;, &amp;#034;prig&amp;#034;, &amp;#034;prod&amp;#034;, &amp;#034;punt&amp;#034;, &amp;#034;purl&amp;#034;, &amp;#034;purr&amp;#034;, &amp;#034;quid&amp;#034;, \&#xD;
      &amp;#034;race&amp;#034;, &amp;#034;rack&amp;#034;, &amp;#034;raid&amp;#034;, &amp;#034;rail&amp;#034;, &amp;#034;rang&amp;#034;, &amp;#034;rare&amp;#034;, &amp;#034;rash&amp;#034;, &amp;#034;rats&amp;#034;, \&#xD;
      &amp;#034;redo&amp;#034;, &amp;#034;regs&amp;#034;, &amp;#034;Reno&amp;#034;, &amp;#034;revs&amp;#034;, &amp;#034;rhos&amp;#034;, &amp;#034;rift&amp;#034;, &amp;#034;Riga&amp;#034;, &amp;#034;rile&amp;#034;, \&#xD;
      &amp;#034;rims&amp;#034;, &amp;#034;riot&amp;#034;, &amp;#034;robe&amp;#034;, &amp;#034;roil&amp;#034;, &amp;#034;role&amp;#034;, &amp;#034;Rolf&amp;#034;, &amp;#034;roof&amp;#034;, &amp;#034;rook&amp;#034;, \&#xD;
      &amp;#034;Rory&amp;#034;, &amp;#034;Roth&amp;#034;, &amp;#034;rove&amp;#034;, &amp;#034;rows&amp;#034;, &amp;#034;RSVP&amp;#034;, &amp;#034;Ruby&amp;#034;, &amp;#034;ruck&amp;#034;, &amp;#034;saga&amp;#034;, \&#xD;
      &amp;#034;sago&amp;#034;, &amp;#034;sags&amp;#034;, &amp;#034;Saks&amp;#034;, &amp;#034;Sang&amp;#034;, &amp;#034;sank&amp;#034;, &amp;#034;saps&amp;#034;, &amp;#034;sash&amp;#034;, &amp;#034;Sask&amp;#034;, \&#xD;
      &amp;#034;says&amp;#034;, &amp;#034;Sean&amp;#034;, &amp;#034;sear&amp;#034;, &amp;#034;seed&amp;#034;, &amp;#034;Sega&amp;#034;, &amp;#034;Serb&amp;#034;, &amp;#034;shad&amp;#034;, &amp;#034;shim&amp;#034;, \&#xD;
      &amp;#034;shiv&amp;#034;, &amp;#034;shop&amp;#034;, &amp;#034;shot&amp;#034;, &amp;#034;skid&amp;#034;, &amp;#034;slaw&amp;#034;, &amp;#034;slay&amp;#034;, &amp;#034;slum&amp;#034;, &amp;#034;Snow&amp;#034;, \&#xD;
      &amp;#034;sock&amp;#034;, &amp;#034;spot&amp;#034;, &amp;#034;spur&amp;#034;, &amp;#034;star&amp;#034;, &amp;#034;stun&amp;#034;, &amp;#034;suck&amp;#034;, &amp;#034;sued&amp;#034;, &amp;#034;suit&amp;#034;, \&#xD;
      &amp;#034;suns&amp;#034;, &amp;#034;sure&amp;#034;, &amp;#034;Suva&amp;#034;, &amp;#034;swab&amp;#034;, &amp;#034;swan&amp;#034;, &amp;#034;tabs&amp;#034;, &amp;#034;talc&amp;#034;, &amp;#034;tall&amp;#034;, \&#xD;
      &amp;#034;taps&amp;#034;, &amp;#034;teal&amp;#034;, &amp;#034;tear&amp;#034;, &amp;#034;teen&amp;#034;, &amp;#034;than&amp;#034;, &amp;#034;tics&amp;#034;, &amp;#034;tier&amp;#034;, &amp;#034;Tina&amp;#034;, \&#xD;
      &amp;#034;toed&amp;#034;, &amp;#034;toes&amp;#034;, &amp;#034;toms&amp;#034;, &amp;#034;tong&amp;#034;, &amp;#034;toot&amp;#034;, &amp;#034;tore&amp;#034;, &amp;#034;tori&amp;#034;, &amp;#034;toss&amp;#034;, \&#xD;
      &amp;#034;tots&amp;#034;, &amp;#034;Tran&amp;#034;, &amp;#034;trug&amp;#034;, &amp;#034;twas&amp;#034;, &amp;#034;twit&amp;#034;, &amp;#034;undo&amp;#034;, &amp;#034;unto&amp;#034;, &amp;#034;urns&amp;#034;, \&#xD;
      &amp;#034;Utes&amp;#034;, &amp;#034;vars&amp;#034;, &amp;#034;vats&amp;#034;, &amp;#034;veil&amp;#034;, &amp;#034;vise&amp;#034;, &amp;#034;Vlad&amp;#034;, &amp;#034;wait&amp;#034;, &amp;#034;wane&amp;#034;, \&#xD;
      &amp;#034;wart&amp;#034;, &amp;#034;ween&amp;#034;, &amp;#034;weir&amp;#034;, &amp;#034;when&amp;#034;, &amp;#034;whey&amp;#034;, &amp;#034;whit&amp;#034;, &amp;#034;whys&amp;#034;, &amp;#034;Will&amp;#034;, \&#xD;
      &amp;#034;wilt&amp;#034;, &amp;#034;wink&amp;#034;, &amp;#034;Wise&amp;#034;, &amp;#034;Witt&amp;#034;, &amp;#034;wive&amp;#034;, &amp;#034;wold&amp;#034;, &amp;#034;worm&amp;#034;, &amp;#034;yeas&amp;#034;, \&#xD;
      &amp;#034;yips&amp;#034;, &amp;#034;Yoko&amp;#034;, &amp;#034;Yugo&amp;#034;, &amp;#034;Yuma&amp;#034;}&#xD;
&#xD;
5-Letter Words&#xD;
&#xD;
    MonkeyPiWords[100000, 5]&#xD;
&#xD;
gives&#xD;
&#xD;
    {&amp;#034;build&amp;#034;, &amp;#034;carom&amp;#034;, &amp;#034;chaps&amp;#034;, &amp;#034;coons&amp;#034;, &amp;#034;Corby&amp;#034;, &amp;#034;crank&amp;#034;, &amp;#034;Derry&amp;#034;, \&#xD;
    &amp;#034;Dolby&amp;#034;, &amp;#034;dotes&amp;#034;, &amp;#034;drier&amp;#034;, &amp;#034;found&amp;#034;, &amp;#034;Golgi&amp;#034;, &amp;#034;honks&amp;#034;, &amp;#034;jacks&amp;#034;, \&#xD;
    &amp;#034;Josef&amp;#034;, &amp;#034;Kenny&amp;#034;, &amp;#034;Magoo&amp;#034;, &amp;#034;Major&amp;#034;, &amp;#034;Mavis&amp;#034;, &amp;#034;parka&amp;#034;, &amp;#034;pates&amp;#034;, \&#xD;
    &amp;#034;plebe&amp;#034;, &amp;#034;queue&amp;#034;, &amp;#034;Reese&amp;#034;, &amp;#034;ruing&amp;#034;, &amp;#034;scarp&amp;#034;, &amp;#034;smirk&amp;#034;, &amp;#034;smugs&amp;#034;, \&#xD;
    &amp;#034;souse&amp;#034;, &amp;#034;sward&amp;#034;, &amp;#034;teens&amp;#034;, &amp;#034;Tulsa&amp;#034;, &amp;#034;vivid&amp;#034;, &amp;#034;Willa&amp;#034;, &amp;#034;writs&amp;#034;}&#xD;
&#xD;
6-Letter words&#xD;
&#xD;
    MonkeyPiWords[100000, 6]&#xD;
&#xD;
gives&#xD;
&#xD;
       {&amp;#034;alkyds&amp;#034;, &amp;#034;churns&amp;#034;, &amp;#034;paring&amp;#034;, &amp;#034;toupee&amp;#034;}&#xD;
&#xD;
Beyond that there are no (up to 10 letter words) further words.</description>
    <dc:creator>David Reiss</dc:creator>
    <dc:date>2015-03-14T03:40:16Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1273291">
    <title>Mathematica single shot detector implementation (object detection)</title>
    <link>https://community.wolfram.com/groups/-/m/t/1273291</link>
    <description>Hi Folks,&#xD;
&#xD;
I have added an implementation of the Single Shot Detector Object detection system to my CognitoZoo project.&#xD;
&#xD;
![enter image description here][1]&#xD;
&#xD;
Please see the following link for details (it&amp;#039;s a GitHub project):&#xD;
&#xD;
[CognitoZoo Wiki link][2]&#xD;
&#xD;
It can recognise the 20 Pascal object categories. It&amp;#039;s really quite fun.&#xD;
&#xD;
I&amp;#039;ve also got an implementation of Yolo as well in that project. (The Tiny Yolo v2 version)&#xD;
&#xD;
From playing with both of them, in my experience the SSD VGG 300 detector seems to have better recognition performance than the tiny Yolo version.There are other versions of Yolo which I hope to implement later.&#xD;
&#xD;
I hope this is of interest.&#xD;
&#xD;
Thanks,&#xD;
Julian Francis.&#xD;
&#xD;
&#xD;
  [1]: http://community.wolfram.com//c/portal/getImageAttachment?filename=ssd.jpg&amp;amp;userId=778270&#xD;
  [2]: https://github.com/jfrancis71/CognitoZoo/wiki/SSDVGG300</description>
    <dc:creator>Julian Francis</dc:creator>
    <dc:date>2018-01-28T10:12:30Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/1171718">
    <title>Compile your code for standalone projects?</title>
    <link>https://community.wolfram.com/groups/-/m/t/1171718</link>
    <description>I&amp;#039;m doing the Mathematica trial right now, and I&amp;#039;m having trouble finding information about deployment of the algorithms I create.&#xD;
&#xD;
For example, say I create a new control algorithm for a power supply in Mathematica. How would I then &amp;#034;package up&amp;#034; my algorithm to work on a microcontroller in my actual product? I know that in MATLAB you can compile your code for deployment on other platforms, but it seems that compiling in Mathematica has a different meaning than that. I wouldn&amp;#039;t want to have to completely re-write my algorithms just to deploy on my target system.&#xD;
&#xD;
I found [this][1] tutorial that seems to be what I am looking for. Does the execution environment require the Mathematica kernel or is it entirely self contained?&#xD;
&#xD;
Thanks&#xD;
&#xD;
&#xD;
  [1]: http://reference.wolfram.com/language/CCodeGenerator/tutorial/Examples.html</description>
    <dc:creator>A S</dc:creator>
    <dc:date>2017-08-27T18:29:36Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/533401">
    <title>Need serious help with lists!</title>
    <link>https://community.wolfram.com/groups/-/m/t/533401</link>
    <description>Here is my code (pasted below).  How do I append values to the end of my lists?  Either append isn&amp;#039;t working or the debugging lines I wrote to confirm the values were appended isn&amp;#039;t working.  What am I doing wrong?&#xD;
&#xD;
I don&amp;#039;t honestly believe I have a future in this... it&amp;#039;s not something I am smart enough to learn... an IQ of 150 just isn&amp;#039;t high enough for Mathematica and physics I don&amp;#039;t think.&#xD;
&#xD;
(* Create empty lists *)&#xD;
xlist={};&#xD;
ylist={};&#xD;
zlist={};&#xD;
&#xD;
(* Take inputs for ECEF *)&#xD;
(Label[startinput];x = Input[&amp;#034;What is the x coordinate?&amp;#034;];&#xD;
y = Input[&amp;#034;What is the y coordinate?&amp;#034;];&#xD;
z = Input[&amp;#034;What is the z coordinate?&amp;#034;];&#xD;
Append [xlist, x]&#xD;
Append [ylist, y]&#xD;
Append [zlist, z]&#xD;
(Label[errorcontrol];&#xD;
again=InputString[&amp;#034;Enter more coords? Y for yes, N for no&amp;#034;];&#xD;
If [again==&amp;#034;Y&amp;#034;, Print[&amp;#034;Okay!&amp;#034;];Goto[startinput]];&#xD;
If [again!=&amp;#034;N&amp;#034;, Print[&amp;#034;Sorry, this is an invalid input here!&amp;#034;];Goto[errorcontrol]];&#xD;
If [again==&amp;#034;N&amp;#034;, Print[&amp;#034;Okay.&amp;#034;]]));&#xD;
&#xD;
(* Debugging *)&#xD;
Print[xlist]&#xD;
Print[ylist]&#xD;
Print[zlist]&#xD;
Print[x]&#xD;
Print[y]&#xD;
Print[z]&#xD;
&#xD;
(* Put in Coordinate Form *)&#xD;
GeoPositionXYZ[{x, y, z}, &amp;#034;ITRF00&amp;#034;];&#xD;
&#xD;
(* Convert to LLA *)&#xD;
GeoPosition[%]&#xD;
&#xD;
(* Display Map *)&#xD;
GeoGraphics[GeoMarker[GeoPosition[%]],GeoRange -&amp;gt; &amp;#034;World&amp;#034;, GeoProjection -&amp;gt; &amp;#034;Robinson&amp;#034;]&#xD;
&#xD;
(* Display 3D Plot *)&#xD;
ListPointPlot3D[{{x, y, z}}]</description>
    <dc:creator>Nathan Lundholm</dc:creator>
    <dc:date>2015-07-20T09:11:38Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/480096">
    <title>AIML + Wolfram Language + IoT + Machine Learning Algorythims</title>
    <link>https://community.wolfram.com/groups/-/m/t/480096</link>
    <description>First, does WL support AIML? I know you can run other types of code but is this one of them?&#xD;
&#xD;
If not, I think either WL should adopt some of the logic from AIML for developers to implement or create an AIML interpreter so all we have to do is upload our AIML libraries.&#xD;
&#xD;
Most AIML chatbots and virtual assistants use Wolfram Alpha on the back end anyway. Why not bring that use case in-house?&#xD;
&#xD;
There is a lot more to AIML and WL than chat bots though. When you combine them with WL classification algorithms you can easily deploy NLP models in low memory devices for IoT.&#xD;
&#xD;
Anyone else thinking along these lines?</description>
    <dc:creator>David Johnston</dc:creator>
    <dc:date>2015-04-16T07:11:15Z</dc:date>
  </item>
</rdf:RDF>

