<div dir="ltr"><h1 style="color:rgb(0,0,0);font-weight:normal;margin:0px 0px 0.6em;overflow:hidden;padding-top:0.5em;padding-bottom:0.17em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(170,170,170);font-size:23.876px;font-family:sans-serif;line-height:19.05px;background-image:none;background-repeat:initial"><span class="" id="Ho_Ho_Ho.2C_Happy_Christmas_to_all">Ho Ho Ho, Happy Christmas to all</span></h1><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px">I&#39;m feeling Santa Claus spirit, so I will here to give your presents for Christmas.</p><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px">This year there is a lot of new features that will simplify developer life. let&#39;s start ;)</p><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"><br></p><h2 style="color:rgb(0,0,0);font-weight:normal;margin:0px 0px 0.6em;overflow:hidden;padding-top:0.5em;padding-bottom:0.17em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(170,170,170);font-size:19.05px;font-family:sans-serif;line-height:19.05px;background-image:none;background-repeat:initial"><span class="" id="I_present_you..._EasyIceConfig">I present you... <b>EasyIceConfig</b></span></h2><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"><i>Are you asking God why you need to run components from a specific directory or at least copy ice config files to current directory just to execute?</i></p><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px">EasyIce comes to rescue you!<br>It brings possibility to use a ice config file from another well-known path without put whole path.</p><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px">It hold more features. Would You Like to Know More?</p><ul style="line-height:19.05px;list-style-type:square;margin:0.3em 0px 0px 1.6em;padding:0px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"><li style="margin-bottom:0.1em"><a rel="nofollow" class="" href="https://jderobot.org/Varribas-tfm/contribution/libeasyiceconfig" style="text-decoration:none;color:rgb(51,102,187);padding-right:16px">https://jderobot.org/Varribas-tfm/contribution/libeasyiceconfig</a></li><li style="margin-bottom:0.1em"><a rel="nofollow" class="" href="https://github.com/jderobot-varribas/libeasyiceconfig/releases/tag/0.9.2" style="text-decoration:none;color:rgb(51,102,187);padding-right:16px">https://github.com/jderobot-varribas/libeasyiceconfig/releases/tag/0.9.2</a></li></ul><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"><br></p><h2 style="color:rgb(0,0,0);font-weight:normal;margin:0px 0px 0.6em;overflow:hidden;padding-top:0.5em;padding-bottom:0.17em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(170,170,170);font-size:19.05px;font-family:sans-serif;line-height:19.05px;background-image:none;background-repeat:initial"><span class="" id="I_present_you..._EasyProxy">I present you... <b>EasyProxy</b></span></h2><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"><i>Are you jaded to write again and again same lines just to raise up an Ice&#39;s Proxy?</i><br><i>create a vanilla proxy, do an explicit cast, and evolve all in a try catch..., and repeat it for each adapter...&quot;</i></p><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px">With EasyProxy create a Proxy is no more painful. No more try catch, no more complex initialization.<br>See the example <a rel="nofollow" class="" href="https://github.com/jderobot-varribas/JdeRobot/commit/a68ce921ccaf1f0fe5a4905d67b89cf63d632491?diff=split" style="text-decoration:none;color:rgb(51,102,187);padding-right:16px">here</a>!</p><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px">Related links:</p><ul style="line-height:19.05px;list-style-type:square;margin:0.3em 0px 0px 1.6em;padding:0px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"><li style="margin-bottom:0.1em"><a rel="nofollow" class="" href="https://github.com/RoboticsURJC/JdeRobot/pull/269" style="text-decoration:none;color:rgb(51,102,187);padding-right:16px">https://github.com/RoboticsURJC/JdeRobot/pull/269</a></li><li style="margin-bottom:0.1em"><a rel="nofollow" class="" href="https://github.com/jderobot-varribas/libeasyiceconfig/releases/tag/0.9.3.1" style="text-decoration:none;color:rgb(51,102,187);padding-right:16px">https://github.com/jderobot-varribas/libeasyiceconfig/releases/tag/0.9.3.1</a></li></ul><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"><br></p><h2 style="color:rgb(0,0,0);font-weight:normal;margin:0px 0px 0.6em;overflow:hidden;padding-top:0.5em;padding-bottom:0.17em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(170,170,170);font-size:19.05px;font-family:sans-serif;line-height:19.05px;background-image:none;background-repeat:initial"><span class="" id="I_present_you..._Single_Adapter_communication_scheme">I present you... <b>Single Adapter communication scheme</b></span></h2><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"><i>Are you tired to do exactly same again and again for each interface?</i></p><i style="color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px;line-height:19.05px"><ul style="line-height:1.5em;list-style-type:square;margin:0.3em 0px 0px 1.6em;padding:0px"><li style="margin-bottom:0.1em">put almost same Endpoint entry for each interface</li><li style="margin-bottom:0.1em">define a lot of naming convections that every user must to known.</li><li style="margin-bottom:0.1em">create an adapter for each interface</li><li style="margin-bottom:0.1em">be obey to use a lot of port and be stuck due one was a typo</li><li style="margin-bottom:0.1em">cry every time that you want to power up several instances of same component</li></ul></i><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"><i></i></p><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px">Today is your lucky day. All this overload is not required!<br>My present for you is &quot;Single Object Adapter approach&quot;, it is highly recommended by Ice; so if you want not obey me, just obey they ;)</p><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px">Related links:</p><ul style="line-height:19.05px;list-style-type:square;margin:0.3em 0px 0px 1.6em;padding:0px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"><li style="margin-bottom:0.1em"><a rel="nofollow" class="" href="https://github.com/RoboticsURJC/JdeRobot/issues/199" style="text-decoration:none;color:rgb(51,102,187);padding-right:16px">https://github.com/RoboticsURJC/JdeRobot/issues/199</a></li></ul><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"><br></p><h2 style="color:rgb(0,0,0);font-weight:normal;margin:0px 0px 0.6em;overflow:hidden;padding-top:0.5em;padding-bottom:0.17em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(170,170,170);font-size:19.05px;font-family:sans-serif;line-height:19.05px;background-image:none;background-repeat:initial"><span class="" id="I_present_you..._New_Gazebo.27s_plugin_develop_scheme">I present you... <b>New Gazebo&#39;s plugin develop scheme</b></span></h2><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"><i>Are you jaded to...</i></p><ul style="line-height:19.05px;list-style-type:square;margin:0.3em 0px 0px 1.6em;padding:0px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"><li style="margin-bottom:0.1em"><i>edit every model file when you want to add &quot;intelligence&quot;?</i></li><li style="margin-bottom:0.1em"><i>do a plugin for each sensor?</i></li><li style="margin-bottom:0.1em"><i>be stuck because code can not be reused and there is a hard dependency between model and code?</i></li></ul><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px">Here you are my new not-patented develop scheme!<br></p><ol style="line-height:19.05px;margin:0.3em 0px 0px 3.2em;padding:0px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"><li style="margin-bottom:0.1em">Do a single model plugin that just gather all<ul style="line-height:1.5em;list-style-type:square;margin:0.3em 0px 0px 1.6em;padding:0px"><li style="margin-bottom:0.1em">Gather links to allow part by part control.</li><li style="margin-bottom:0.1em">Gather every sensor through <i>SensorManager</i> and just connect to <i>Update</i> event</li></ul></li><li style="margin-bottom:0.1em">Evolve vanilla model with intelligence layer<ul style="line-height:1.5em;list-style-type:square;margin:0.3em 0px 0px 1.6em;padding:0px"><li style="margin-bottom:0.1em">Reuse already provided models</li><li style="margin-bottom:0.1em">Create as many variations as you wish reusing same vanilla model</li></ul></li></ol><blockquote style="color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px;line-height:19.05px">Do you think that I kidding you?, see a functional example of this new schema<pre style="font-family:monospace,Courier;padding:1em;border:1px dashed rgb(47,111,171);line-height:1.1em;background-color:rgb(249,249,249)">&lt;?xml version=&quot;1.0&quot; ?&gt;
&lt;sdf version=&quot;1.4&quot;&gt;
  &lt;model name=&quot;flyingKinect&quot;&gt;
    &lt;plugin filename=&quot;libgazebo_kinectplugin.so&quot; name=&quot;kinectplugin&quot;/&gt;
    &lt;static&gt;true&lt;/static&gt;
    &lt;include&gt;
        &lt;uri&gt;model://kinect&lt;/uri&gt;
    &lt;/include&gt;
  &lt;/model&gt;
&lt;/sdf&gt;
</pre></blockquote><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px">What it implies?</p><ul style="line-height:19.05px;list-style-type:square;margin:0.3em 0px 0px 1.6em;padding:0px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"><li style="margin-bottom:0.1em">No more manage nor clone model files (100-500 lines)</li><li style="margin-bottom:0.1em">No more almost empty SensorPlugin</li><li style="margin-bottom:0.1em">No more dedicated threads</li><li style="margin-bottom:0.1em">Nno more complex solutions to allow intercommunication.</li></ul><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px">Would you like to know more about architecture? See [[Varribas-tfm/review_quadrotor_plugin#Quadrotor_plugin_2.0|Quadrotor_plugin_2.0]]</p><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"><span style="font-size:12.7px;line-height:19.05px">Would you like to see a basic example? See</span><span style="font-size:12.7px;line-height:19.05px"> </span><a rel="nofollow" class="" href="https://github.com/RoboticsURJC/JdeRobot/pull/270" style="font-size:12.7px;line-height:19.05px;text-decoration:none;color:rgb(51,102,187);padding-right:16px">https://github.com/RoboticsURJC/JdeRobot/pull/270</a></p><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"><br></p><h2 style="color:rgb(0,0,0);font-weight:normal;margin:0px 0px 0.6em;overflow:hidden;padding-top:0.5em;padding-bottom:0.17em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(170,170,170);font-size:19.05px;font-family:sans-serif;line-height:19.05px;background-image:none;background-repeat:initial"><span class="" id="I_present_you..._Build_Aliases.2FGroups">I present you... <b>Build Aliases/Groups</b></span></h2><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"><i>Are you jaded to lost hours compiling entire framework? Have you ever tried component based build and eventually get jaded to write a infinite line of -Dbuild_whatever?</i></p><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px">I present you Build Aliases (or just build groups). This feature manages comes to rescue you, so now you can overcome it with a <b>single</b> -Dbuild_X.</p><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px">But wait! this present is forearmed.<br><i>What happens if I want to add my own groups. Is there any risk of mess git if I do not be careful?</i><br>No!, you can add all you private, dirty and incomplete job inside <b>buildpresets_userdefined.cmake</b>, this file is blacklisted and will not be pushed into repo.</p><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px">Related links:</p><ul style="line-height:19.05px;list-style-type:square;margin:0.3em 0px 0px 1.6em;padding:0px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"><li style="margin-bottom:0.1em"><a rel="nofollow" class="" href="https://github.com/RoboticsURJC/JdeRobot/issues/250" style="text-decoration:none;color:rgb(51,102,187);padding-right:16px">https://github.com/RoboticsURJC/JdeRobot/issues/250</a></li><li style="margin-bottom:0.1em"><a rel="nofollow" class="" href="https://github.com/RoboticsURJC/JdeRobot/pull/264" style="text-decoration:none;color:rgb(51,102,187);padding-right:16px">https://github.com/RoboticsURJC/JdeRobot/pull/264</a></li></ul><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"><br></p><h2 style="color:rgb(0,0,0);font-weight:normal;margin:0px 0px 0.6em;overflow:hidden;padding-top:0.5em;padding-bottom:0.17em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(170,170,170);font-size:19.05px;font-family:sans-serif;line-height:19.05px;background-image:none;background-repeat:initial"><span class="" id="I_present_you..._Out-of-Source_Build">I present you... <b>Out-of-Source Build</b></span></h2><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"><i>What did you say!? out-of-source build as a new feature? I couldn&#39;t use it before? Why!?</i></p><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px">Yes, you are right. This was a missed feature and some one must revive it.</p><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px">Related links:</p><ul style="line-height:19.05px;list-style-type:square;margin:0.3em 0px 0px 1.6em;padding:0px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"><li style="margin-bottom:0.1em"><a rel="nofollow" class="" href="https://github.com/RoboticsURJC/JdeRobot/issues/236" style="text-decoration:none;color:rgb(51,102,187);padding-right:16px">https://github.com/RoboticsURJC/JdeRobot/issues/236</a></li><li style="margin-bottom:0.1em"><a rel="nofollow" class="" href="https://github.com/RoboticsURJC/JdeRobot/pull/237" style="text-decoration:none;color:rgb(51,102,187);padding-right:16px">https://github.com/RoboticsURJC/JdeRobot/pull/237</a></li><li style="margin-bottom:0.1em">And even more effort scattered between commits</li></ul><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"><br></p><h2 style="color:rgb(0,0,0);font-weight:normal;margin:0px 0px 0.6em;overflow:hidden;padding-top:0.5em;padding-bottom:0.17em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(170,170,170);font-size:19.05px;font-family:sans-serif;line-height:19.05px;background-image:none;background-repeat:initial"><span class="" id="I_present_you..._Incremental_Releases">I present you... <b>Incremental Releases</b></span></h2><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"><i>Why when someone tell me that there is a new version at repository I must to uninstall current jderobot package and install it again? Why apt-get update do not notify me about this change?</i></p><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px">Because release system do no exists.<br>So.., I present you Incremental Releases, the self-managed system to overcome it.</p><ol style="line-height:19.05px;margin:0.3em 0px 0px 3.2em;padding:0px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"><li style="margin-bottom:0.1em">Creates a two-based versioning workflow:<ul style="line-height:1.5em;list-style-type:square;margin:0.3em 0px 0px 1.6em;padding:0px"><li style="margin-bottom:0.1em">Remove ugly &#39;-rc1&#39; from mainstream. Framework versioning is cleaner and simpler.</li><li style="margin-bottom:0.1em">Do not need to make dirty git. So framework versioning is untouched.</li></ul></li><li style="margin-bottom:0.1em">Remove maintainer to do a lot of extra effort.<ol style="line-height:1.5em;margin:0.3em 0px 0px 3.2em;padding:0px"><li style="margin-bottom:0.1em">remember what was last version at repository</li><li style="margin-bottom:0.1em">touch version number and revert it again because it was not planned to roll up</li></ol></li><li style="margin-bottom:0.1em">Do not lie user with a new package with exactly same version number.</li></ol><p style="margin:0.4em 0px 0.5em;line-height:19.05px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px">Related links:</p><ul style="line-height:19.05px;list-style-type:square;margin:0.3em 0px 0px 1.6em;padding:0px;color:rgb(0,0,0);font-family:sans-serif;font-size:12.7px"><li style="margin-bottom:0.1em"><a rel="nofollow" class="" href="https://github.com/RoboticsURJC/JdeRobot/pull/275" style="text-decoration:none;color:rgb(51,102,187);padding-right:16px">https://github.com/RoboticsURJC/JdeRobot/pull/275</a></li></ul></div>