<?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 active.</description>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3644173" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3605564" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3581351" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3577845" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3569623" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3551641" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3548805" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3503134" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3498845" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3502989" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3472654" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3447615" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3444021" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3413942" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3393069" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3359568" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3348245" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/1153218" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/3314481" />
        <rdf:li rdf:resource="https://community.wolfram.com/groups/-/m/t/802967" />
      </rdf:Seq>
    </items>
  </channel>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3644173">
    <title>Implementing FABRIK with Wolfram: forward and backward reaching inverse kinematics</title>
    <link>https://community.wolfram.com/groups/-/m/t/3644173</link>
    <description>&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/6e0cb7f3-cc9f-4e79-9230-94a87f73bbf3</description>
    <dc:creator>Eric Rimbey</dc:creator>
    <dc:date>2026-02-24T02:12:16Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3605564">
    <title>Formal differential geometry in the UD calculus: part 1</title>
    <link>https://community.wolfram.com/groups/-/m/t/3605564</link>
    <description>&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/abf54d95-0b7f-4050-b5e3-18301a1e57b3</description>
    <dc:creator>Brian Beckman</dc:creator>
    <dc:date>2026-01-13T03:13:21Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3581351">
    <title>Land a rocket or balance a robot: linear quadratic regulator control of sliding-base inverted rod</title>
    <link>https://community.wolfram.com/groups/-/m/t/3581351</link>
    <description>&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/1b1a4488-6963-46a9-9f94-dc1f22a28585</description>
    <dc:creator>Brian Beckman</dc:creator>
    <dc:date>2025-11-24T17:21:27Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3577845">
    <title>Stabilizing the spherical pendulum from scratch</title>
    <link>https://community.wolfram.com/groups/-/m/t/3577845</link>
    <description>&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/24b014dc-93da-4cf9-b385-bc03d637fc61</description>
    <dc:creator>Brian Beckman</dc:creator>
    <dc:date>2025-11-19T01:24:27Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3569623">
    <title>Stabilizing the spherical pendulum: request for advice</title>
    <link>https://community.wolfram.com/groups/-/m/t/3569623</link>
    <description>&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/b9eccdca-8b2d-4b79-8372-d7ce68b860ab</description>
    <dc:creator>Brian Beckman</dc:creator>
    <dc:date>2025-11-02T21:07:34Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3551641">
    <title>Derivating things: construction of the generalized functions and computing their derivatives</title>
    <link>https://community.wolfram.com/groups/-/m/t/3551641</link>
    <description>&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/33a41820-c999-4515-81be-555ebda62982</description>
    <dc:creator>Dara Shayda</dc:creator>
    <dc:date>2025-09-26T13:19:06Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3548805">
    <title>Proportional-integral-derivative control of a simple harmonic oscillator</title>
    <link>https://community.wolfram.com/groups/-/m/t/3548805</link>
    <description>&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/adc1f9e9-b039-4083-bd81-7bc33581bc6b</description>
    <dc:creator>Matthew Kafker</dc:creator>
    <dc:date>2025-09-22T04:33:32Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3503134">
    <title>[WSRP25] Helping hand to Africa:prosthetic hand&amp;#039;s kinetic movement &amp;amp; force-closure grasping analysis</title>
    <link>https://community.wolfram.com/groups/-/m/t/3503134</link>
    <description>![Helping hand to Africa:prosthetic hand&amp;#039;s kinetic movement &amp;amp; force-closure grasping analysis][1]&#xD;
&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][2]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2025-07-10at4.09.36%E2%80%AFPM.png&amp;amp;userId=3501263&#xD;
  [2]: https://www.wolframcloud.com/obj/b1e5f73f-31a2-405b-96fa-122564a24619</description>
    <dc:creator>Eunchan Hwang</dc:creator>
    <dc:date>2025-07-10T22:07:54Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3498845">
    <title>[WSRP25] Tour optimization for robotic bee pollination</title>
    <link>https://community.wolfram.com/groups/-/m/t/3498845</link>
    <description>![Optimal tour for a bee pollinating flowers][1]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][2]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=beee.png&amp;amp;userId=3498455&#xD;
  [2]: https://www.wolframcloud.com/obj/b0e6e4c3-7a0a-4253-b9e1-06b0cb221831</description>
    <dc:creator>Grace Anghelescu</dc:creator>
    <dc:date>2025-07-10T15:49:06Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3502989">
    <title>[WSRP25] PolyLimb: Modelling Static Multi-Legged Gait Cycles</title>
    <link>https://community.wolfram.com/groups/-/m/t/3502989</link>
    <description>![Walker Gait Model][1]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][2]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2025-07-10164031.png&amp;amp;userId=3502580&#xD;
  [2]: https://www.wolframcloud.com/obj/b48d8790-740b-4ddb-8888-ef02f3bdb9cd</description>
    <dc:creator>Diya Venkataragavan</dc:creator>
    <dc:date>2025-07-10T22:03:20Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3472654">
    <title>A conserved quantity for the damped harmonic oscillator: analytical versus discrete dynamics</title>
    <link>https://community.wolfram.com/groups/-/m/t/3472654</link>
    <description>&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/93099d2d-34bf-4706-a07e-3bc6d54d6eff</description>
    <dc:creator>Brian Beckman</dc:creator>
    <dc:date>2025-06-02T02:23:17Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3447615">
    <title>Energy perspectives on the discrete damped harmonic oscillator</title>
    <link>https://community.wolfram.com/groups/-/m/t/3447615</link>
    <description>&amp;amp;[Wolfram Notebook][1]&#xD;
&#xD;
&#xD;
  [1]: https://www.wolframcloud.com/obj/41fcf522-d436-4829-89b7-6bd208abd553</description>
    <dc:creator>Brian Beckman</dc:creator>
    <dc:date>2025-04-20T00:11:01Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3444021">
    <title>Perspectives on energy conservation: discrete variational spherical pendulum</title>
    <link>https://community.wolfram.com/groups/-/m/t/3444021</link>
    <description>![Perspectives on energy conservation: discrete variational spherical pendulum][1]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][2]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=PerspectivesonEnergyConservation.gif&amp;amp;userId=20103&#xD;
  [2]: https://www.wolframcloud.com/obj/a1245628-d03a-4bb5-b833-c1145b5f3167</description>
    <dc:creator>Brian Beckman</dc:creator>
    <dc:date>2025-04-14T02:35:59Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3413942">
    <title>Geometry and mechanics of non-Euclidean curved-crease origami</title>
    <link>https://community.wolfram.com/groups/-/m/t/3413942</link>
    <description>![Geometry and mechanics of non-Euclidean curved-crease origami. Nontrivial Gaussian curvature, Euler&amp;#039;s buckling behavior.][1]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][2]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Main10032025.png&amp;amp;userId=20103&#xD;
  [2]: https://www.wolframcloud.com/obj/0a28694f-4a5f-4b8a-b1e9-37b9e74706de</description>
    <dc:creator>Fan Feng</dc:creator>
    <dc:date>2025-03-10T15:04:39Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3393069">
    <title>Optimisation of linkage design in Wolfram SystemModeler?</title>
    <link>https://community.wolfram.com/groups/-/m/t/3393069</link>
    <description>Hello :)  I am a beginner in the Wolfram system. &#xD;
&#xD;
I have produced a basic model of a 6-bar linkage leg mechanism in wolfram system modeler. &#xD;
&#xD;
![enter image description here][1]&#xD;
&#xD;
Using the model here: &#xD;
&#xD;
![enter image description here][2]&#xD;
&#xD;
I am using the BaseBlocks as a way to position the rotational points of the 2 link arms. I currently have placeholder values for the linkage lengths to allow the simulation to be generated. My objective is to simulate different linkage lengths (and positioning of the base links), to determine the optimal design for forward linear motion (walking forward). &#xD;
&#xD;
I would be immensely grateful for any feedback on how I should best proceed with running simulations and optimising the design, what sensor/metric I should use to measure design success, and whether i should do this through Wolfram Mathematica or SystemModeler (i have seen videos of SystemModeler designs being imported into Mathematica)?&#xD;
&#xD;
My sincere thanks in advance!&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Screenshot2025-02-13122230.png&amp;amp;userId=3393039&#xD;
  [2]: https://community.wolfram.com//c/portal/getImageAttachment?filename=3309Screenshot2025-02-12124602.png&amp;amp;userId=3393039</description>
    <dc:creator>Zane Kelly</dc:creator>
    <dc:date>2025-02-13T02:45:10Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3359568">
    <title>Discrete variational spherical pendulum: free motion</title>
    <link>https://community.wolfram.com/groups/-/m/t/3359568</link>
    <description>![Discrete variational spherical pendulum: free motion][1]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][2]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=2-600.gif&amp;amp;userId=20103&#xD;
  [2]: https://www.wolframcloud.com/obj/4c3b0a5b-27dc-4221-a3e2-480cc47d73d1</description>
    <dc:creator>Brian Beckman</dc:creator>
    <dc:date>2025-01-18T22:42:53Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/3348245">
    <title>Discrete variational symmetrical top: an archetype for rigid-body dynamics</title>
    <link>https://community.wolfram.com/groups/-/m/t/3348245</link>
    <description>![Discrete variational symmetrical top: an archetype for rigid-body dynamics][1]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][2]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Main302012025.png&amp;amp;userId=20103&#xD;
  [2]: https://www.wolframcloud.com/obj/b11407a4-e90e-4b35-934f-1e516311d09c</description>
    <dc:creator>Brian Beckman</dc:creator>
    <dc:date>2024-12-31T21:35:47Z</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/3314481">
    <title>Interactive NAO V5 robot programming: movement, problem solving &amp;amp; AI</title>
    <link>https://community.wolfram.com/groups/-/m/t/3314481</link>
    <description>![Interactive NAO V5 robot programming: movement, problem solving &amp;amp; AI][1]&#xD;
&#xD;
&amp;amp;[Wolfram Notebook][2]&#xD;
&#xD;
&#xD;
  [1]: https://community.wolfram.com//c/portal/getImageAttachment?filename=Main05112024.png&amp;amp;userId=20103&#xD;
  [2]: https://www.wolframcloud.com/obj/243dab72-d8b6-4da4-9813-1b4b384e6599</description>
    <dc:creator>Terence Smith</dc:creator>
    <dc:date>2024-11-04T21:02:22Z</dc:date>
  </item>
  <item rdf:about="https://community.wolfram.com/groups/-/m/t/802967">
    <title>HackUPC: BarcelonaTech&amp;#039;s Hackathon</title>
    <link>https://community.wolfram.com/groups/-/m/t/802967</link>
    <description>Awesome. That&amp;#039;s my one-word summary of [HackUPC][1] this past weekend. Seeing 400 international students take the initiative to turn dreams into reality was an inspiring experience for me and my twin brother [@Jofre Espigule][at0].&#xD;
&#xD;
![enter image description here][2]&#xD;
&#xD;
**Friday&amp;#039;s night opening ceremony at the Sports Pavilion of *Universitat Politècnica de Catalunya*.**&#xD;
&#xD;
![Opening Talk][3]&#xD;
&#xD;
Hack UPC took place in UPC&amp;#039;s North Campus in sunny Barcelona. And it was made possible thanks to [Miquel Llobet][4] (founder of Hack UPC), the [Major League Hacking][5], the sponsors (Wolfram, Skyscanner, Everis,...), and an amazing team of volunteers. Here are the [TravelDirections][6] to Hack UPC:&#xD;
&#xD;
![HackUPC venue][7]&#xD;
&#xD;
Jofre and I got some cool Wolfram swag to give away. We also demoed a bunch of code examples to people interested in the the [Wolfram Language][8]. And we helped several teams that came to us with great ideas. Below is one of the hacks I demoed there, a &amp;#034;Weather Station in a Snap&amp;#034; similar to [@Arnoud Buzing][at1] Arduino Yún [weather station][9] but using the new [Sense HAT][10] for the [Raspberry Pi][11].&#xD;
&#xD;
    hat = DeviceOpen[&amp;#034;SenseHAT&amp;#034;];&#xD;
    bin = CreateDatabin[];&#xD;
    RunScheduledTask[DatabinAdd[bin,&amp;lt;|&amp;#034;temp&amp;#034; -&amp;gt; DeviceRead[hat, &amp;#034;Temperature&amp;#034;], &amp;#034;hum&amp;#034; -&amp;gt; DeviceRead[hat, &amp;#034;Humidity&amp;#034;], &amp;#034;pres&amp;#034; -&amp;gt; DeviceRead[hat, &amp;#034;Pressure&amp;#034;]|&amp;gt;], 120]&#xD;
&#xD;
![Weather Station][12]&#xD;
&#xD;
Temperature, humidity and pressure measurements were being added in a regular basis at this databin: https://wolfr.am/aDkxtY91.&#xD;
&#xD;
Now let&amp;#039;s take a look at some great Wolfram projects done by students at Hack UPC. The first project that I want to share with you was about cryptography. And it was carried out by two students, Xavier Perranau and Arnau Bordas. Right after signing in to [WOLFRAM DEVELOPMENT PLATFORM][13] they got familiarized with functions covered in the WLanguage Guide about [Cryptographic Number Theory][14]. Their next step consisted in developing a cloud service to allow users send encrypted messages. And after some trial and errors, they ended up adapting the example [Hide Secret Messages in Images][15] from the [WL Code Gallery][16]. They called their project [Steganography a la Wolfram][17] which allows users to drag and drop an image in two cloud-deployed [FormFunction][18] to wether hide a text message on it or decipher a message previously inserted in the image.&#xD;
&#xD;
Here is how it works. A function called **InsertSecretMessage** is defined to insert a string into a photo:&#xD;
&#xD;
    InsertSecretMessage[carrierImage_Image, mesg_] := &#xD;
      Block[{carrierBytes, pixelChannels, secretBits, secretBytes}, &#xD;
       carrierBytes = BitAnd[ImageData[carrierImage, &amp;#034;Byte&amp;#034;], 254];secretBits = Flatten[IntegerDigits[ToCharacterCode[ToString[mesg, InputForm, CharacterEncoding -&amp;gt; &amp;#034;ASCII&amp;#034;]], 2, 8]]; &#xD;
        secretBytes = Fold[Partition, PadRight[Join[IntegerDigits[Length[secretBits], 2, 48], secretBits], Times @@ Dimensions[carrierBytes]], &#xD;
          Reverse[Rest[Dimensions[carrierBytes]]]]; Image[carrierBytes + secretBytes, &amp;#034;Byte&amp;#034;]]&#xD;
&#xD;
Then, an [advanced FormFunction][19] with four fields named &amp;#034;Message&amp;#034;,&amp;#034;Image&amp;#034;,&amp;#034;ByEmail&amp;#034; and &amp;#034;SendTo&amp;#034; is cloud-deployed with the **InsertSecretMessage** function added inside a conditional to see if the user wants to send the image by email with [SendMail][20] or just generate it on the Wolfram Cloud:&#xD;
&#xD;
     CloudDeploy[FormFunction[{&amp;#034;Message&amp;#034;-&amp;gt;&amp;#034;String&amp;#034;,&amp;#034;Image&amp;#034;-&amp;gt;&amp;#034;Image&amp;#034;,&amp;#034;ByEmail&amp;#034;-&amp;gt;{True,False}, &#xD;
    &amp;#034;SendTo&amp;#034;-&amp;gt;&amp;lt;|&amp;#034;Interpreter&amp;#034;-&amp;gt;&amp;#034;EmailAddress&amp;#034;,&amp;#034;Input&amp;#034;-&amp;gt;&amp;#034;nomail@exemple.com&amp;#034;|&amp;gt;},&#xD;
    If[#ByEmail==True,SendMail[#SendTo,{&amp;#034;Email from Wolfram&amp;#034;,InsertSecretMessage[#Image,#Message]}],InsertSecretMessage[#Image,#Message]]&amp;amp;,&#xD;
    AppearanceRules-&amp;gt;&amp;lt;|&amp;#034;Title&amp;#034;-&amp;gt;&amp;#034;Wolfram Steganography Insertion&amp;#034;,&amp;#034;Description&amp;#034;-&amp;gt;&amp;#034;Insert your plaintext message here and we will add it to the image of your choice.&amp;#034;|&amp;gt;,&#xD;
    FormTheme-&amp;gt;&amp;#034;Black&amp;#034;],&amp;#034;insert&amp;#034;,Permissions-&amp;gt;&amp;#034;Public&amp;#034;]&#xD;
&#xD;
https://www.wolframcloud.com/objects/user-bb7ad2a9-a624-45e5-a867-8da9c0832887/insert&#xD;
&#xD;
![insert][21]&#xD;
&#xD;
To get back the previously given string, an **ExtractSecretMessage** function is declared and inserted in the following simple [FormFunction][22].&#xD;
&#xD;
    ExtractSecretMessage[img_Image] :=Block[{secretData, messageLength},&#xD;
      secretData = Flatten[BitAnd[ImageData[img, &amp;#034;Byte&amp;#034;], 1]];&#xD;
      messageLength = FromDigits[Take[secretData, 48], 2];&#xD;
      secretData = Partition[Drop[secretData, 48], 8];&#xD;
      ToExpression[ FromCharacterCode[FromDigits[#, 2] &amp;amp; /@ Take[secretData, messageLength]]] ]&#xD;
&#xD;
    CloudDeploy[FormFunction[&amp;#034;Image&amp;#034;-&amp;gt;&amp;#034;Image&amp;#034;,ExtractSecretMessage[#Image]&amp;amp;,&#xD;
    AppearanceRules-&amp;gt;&amp;lt;|&amp;#034;Title&amp;#034;-&amp;gt;&amp;#034;Wolfram Steganography Extraction&amp;#034;,&amp;#034;Description&amp;#034;-&amp;gt;&amp;#034;Insert your image here and you will get the Text&amp;#034;|&amp;gt;, &#xD;
    FormTheme-&amp;gt;&amp;#034;Black&amp;#034;],&amp;#034;extract&amp;#034;,Permissions-&amp;gt;&amp;#034;Public&amp;#034; ]&#xD;
&#xD;
https://www.wolframcloud.com/objects/user-bb7ad2a9-a624-45e5-a867-8da9c0832887/extract&#xD;
&#xD;
![extract][23]&#xD;
&#xD;
The project awarded with the **Skyscanner Prize** was [GrooveScanner][24]: *quality events on a budget because planning just got easy*. A project developed by a group of polish students that consisted in building a service that searches for cheapest most convenient flight and nearest accommodation to the venue requested. What makes it unique is the combination of Skyscanner API and [Wolfram Alpha API for Transportation][25]. &#xD;
&#xD;
![GrooveScanner][26]&#xD;
![WA airports][27]&#xD;
&#xD;
**Finally, the project that won the Best Use of Wolfram Tech Award was** .... [DriveFlyTeleport][28]! *Sightseeing: The Smart Way*. Given three main constrains which are: time, money and the topics a person is interested in, the system determines which places in the area (museums, monuments, places of interest in general) are the best fit. It uses a [Wolfram Cloud API][29] and a twitter handle of any given user to get the text content from his timeline and analyze it to see which of the travel options may fit him best: https://github.com/adamszewe/HackUPC-Wolfram&#xD;
&#xD;
![DriveFlyTeleport][30]&#xD;
&#xD;
 Congratulations to all HackUPC participants for coming up with such amazing projects! &#xD;
&#xD;
http://hackupc2016.devpost.com/submissions&#xD;
&#xD;
 [at0]: http://community.wolfram.com/web/jofreep&#xD;
&#xD;
&#xD;
 [at1]: http://community.wolfram.com/web/arnoudb&#xD;
&#xD;
&#xD;
 [at2]: http://community.wolfram.com/web/sherlock&#xD;
&#xD;
&#xD;
  [1]: http://hackupc2016.devpost.com/&#xD;
  [2]: http://community.wolfram.com//c/portal/getImageAttachment?filename=CbmzybPWwAAN8rk.jpg&amp;amp;userId=56204&#xD;
  [3]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Opening.jpg&amp;amp;userId=56204&#xD;
  [4]: https://twitter.com/mllobet&#xD;
  [5]: https://mlh.io/&#xD;
  [6]: https://reference.wolfram.com/language/ref/TravelDirections.html&#xD;
  [7]: http://community.wolfram.com//c/portal/getImageAttachment?filename=CbleDr1VIAEiXw7.png&amp;amp;userId=56204&#xD;
  [8]: http://www.wolfram.com/language/&#xD;
  [9]: http://blog.wolfram.com/2015/03/17/build-your-own-weather-station-in-a-snap-with-the-wolfram-cloud/&#xD;
  [10]: http://reference.wolfram.com/language/ref/device/SenseHAT.html&#xD;
  [11]: http://www.wolfram.com/raspberry-pi/&#xD;
  [12]: http://community.wolfram.com//c/portal/getImageAttachment?filename=Weather.png&amp;amp;userId=56204&#xD;
  [13]: https://www.wolfram.com/development-platform/&#xD;
  [14]: http://reference.wolfram.com/language/guide/CryptographicNumberTheory.html&#xD;
  [15]: https://www.wolfram.com/language/gallery/hide-secret-messages-in-images/&#xD;
  [16]: https://www.wolfram.com/language/gallery/&#xD;
  [17]: http://devpost.com/software/steganography-a-la-wolfram&#xD;
  [18]: http://reference.wolfram.com/language/ref/FormFunction.html&#xD;
  [19]: http://reference.wolfram.com/language/tutorial/AdvancedWebFormCreation.html&#xD;
  [20]: https://reference.wolfram.com/language/ref/SendMail.html&#xD;
  [21]: http://community.wolfram.com//c/portal/getImageAttachment?filename=insert.png&amp;amp;userId=56204&#xD;
  [22]: http://reference.wolfram.com/language/ref/FormFunction.html&#xD;
  [23]: http://community.wolfram.com//c/portal/getImageAttachment?filename=extract.png&amp;amp;userId=56204&#xD;
  [24]: http://devpost.com/software/groovescanner&#xD;
  [25]: https://www.wolframalpha.com/examples/Transportation.html&#xD;
  [26]: http://community.wolfram.com//c/portal/getImageAttachment?filename=1939grooveScanner.jpg&amp;amp;userId=56204&#xD;
  [27]: http://community.wolfram.com//c/portal/getImageAttachment?filename=WA_airport_info.jpg&amp;amp;userId=56204&#xD;
  [28]: http://devpost.com/software/driveflyteleport&#xD;
  [29]: https://reference.wolfram.com/language/guide/CreatingAnInstantAPI.html&#xD;
  [30]: http://community.wolfram.com//c/portal/getImageAttachment?filename=DriveFlyTeleport.jpg&amp;amp;userId=56204</description>
    <dc:creator>Bernat Espigulé</dc:creator>
    <dc:date>2016-02-25T18:07:31Z</dc:date>
  </item>
</rdf:RDF>

