diff --git a/doc/doxygen/html/creating-an-application.html b/doc/doxygen/html/creating-an-application.html index ec5c7a14bdc14241d2a9393df6d75cbd6995295b..a7e08b2b83b184e11369b1acbf10137fa6ee2f0d 100644 --- a/doc/doxygen/html/creating-an-application.html +++ b/doc/doxygen/html/creating-an-application.html @@ -104,10 +104,10 @@ $(document).ready(function(){initNavTree('creating-an-application.html','');}); <p>An application can be created for full-fledged or resource-limited devices.</p> <h1><a class="anchor" id="creating-an-application-full-fledge"></a> Creating an application for full-fledged devices</h1> -<p>We recommend to use the <a href="https://www.eclipse.org/">Eclipse IDE</a> for C/C++ Developers for creating own application. The simplest way to write your own application, is to put your *.c and *.h files under the <code>src</code> directory. Another way is to create a directory containing the multiple C file(s) with your source code. The header files can be imported in the Eclipse IDE by opening Project->Properties and selecting ''C/C++ General->Paths and Symbols->Languages->GNU C'' from the Selection Wizard. Click the ''Add..'' button to browse to the header-directory and the select the ''Apply'' and ''OK'' buttons. The users can be oriented to the main.c and the examples under the src-directory.</p> +<p>We recommend to use the <a href="https://www.eclipse.org/">Eclipse IDE</a> for C/C++ Developers for creating own application. The simplest way to write your own application, is to put your *.c and *.h files under the <code>src</code> directory. Another way is to create a directory containing the multiple C file(s) with your source code. The header files can be imported in the Eclipse IDE by opening Project->Properties and selecting ''C/C++ General->Paths and Symbols->Languages->GNU C'' from the Selection Wizard. Click the ''Add..'' button to browse to the header-directory and the select the ''Apply'' and ''OK'' buttons. The users can be oriented to the main.c and the examples in the <a href="https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/-/tree/master/">main-directory</a> of the RcdMathLib.</p> <h1><a class="anchor" id="creating-an-application-res-lim"></a> Creating an application for resource-limited devices</h1> -<p>To create your own application for a resource limited device you need to create a directory containing one or multiple C file(s) with your source code and a Makefile. An example Makefile is available in the <code>src</code> folder of the <a href="https://git.imp.fu-berlin.de/zkasmi/my_lib_full_fledged_devices/tree/master/RcdMathLib_app">RcdMathLib repository</a>.</p> +<p>To create your own application for a resource-limited device you need to create a directory containing one or multiple C file(s) with your source code and a Makefile. An example Makefile is available in the <code>src</code> folder of the <a href="https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/-/blob/master/eclipse_projects/RcdMathLib_resource_limited_devices.zip">Eclipse project for resource-limited devices</a>.</p> <h1><a class="anchor" id="the-main-function"></a> The main function</h1> <p>RIOT starts two threads the idle and main threads after the board is initialized. The idle thread has the lowest priority while the main thread has a priority that is in the middle between the lowest and the highest available priorities. The main thread is the first that runs and calls the <code>main()</code> function. This function needs to be defined in the source code of each application (typically located in the <code>main.c</code> file).</p> diff --git a/doc/doxygen/html/getting-started.html b/doc/doxygen/html/getting-started.html index 66fff6f4872de2966c0b6f740be3ea309a9afed7..30e3ba78c28db833e8b1dd41cea0478a8c01ae0e 100644 --- a/doc/doxygen/html/getting-started.html +++ b/doc/doxygen/html/getting-started.html @@ -104,14 +104,14 @@ $(document).ready(function(){initNavTree('getting-started.html','');}); <div class="textblock"><dl class="section author"><dt>Author</dt><dd>Zakaria Kasmi</dd></dl> <h1><a class="anchor" id="downloading-RcdMathLib-code"></a> Downloading RcdMathLib code</h1> -<p>You can obtain the latest RcdMathLib code from our <a href="https://github.com/RIOT-OS/">Github</a> repository either by <a href="https://github.com/RIOT-OS/RIOT/releases">downloading the latest tarball</a> or by cloning the <a href="https://github.com/RIOT-OS/RIOT">git repository</a>.</p> -<p>In order to clone the RIOT repository, you need the <a href="http://git-scm.com/">Git revision control system</a> and run the following command:</p> -<div class="fragment"><div class="line">git clone git://github.com/RIOT-OS/RIOT.git</div> +<p>You can obtain the latest RcdMathLib code from our <a href="https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/">GitLab</a> repository either by <a href="https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/-/blob/master/eclipse_projects/RcdMathLib_resource_limited_devices.zip">downloading the Eclipse project for resource-limited devices</a> zip file, the <a href="https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/-/blob/master/eclipse_projects/RcdMathLib_full_fledged_devices.zip">Eclipse project for full-fledged devices</a> zip file, or by cloning the <a href="https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/">git repository</a>.</p> +<p>In order to clone the RcdMathLib repository, you need the <a href="http://git-scm.com/">Git revision control system</a> and run the following command:</p> +<div class="fragment"><div class="line">git clone https://git.imp.fu-berlin.de/zkasmi/RcdMathLib.git</div> </div><!-- fragment --><h1><a class="anchor" id="compiling-RcdMathLib"></a> Compiling RcdMathLib</h1> <h2><a class="anchor" id="setting-up-a-toolchain-full-fledge"></a> Setting up a toolchain for full-fledged devices</h2> -<p>RcdMathLib can be run on full-fledged devices such as a Personal Computer (PC) or a server. It can also be executed on the embedded system Raspberry Pi running an Operating System (OS) such as the Raspbian or the Ubuntu Core. For platforms based on full-fledged OSs like the Linux or Windows, we recommend the GNU Compiler Collection (GCC). We also recommend the use of the Eclipse (IDE).</p> +<p>RcdMathLib can be run on full-fledged devices such as a Personal Computer (PC) or a server. It can also be executed on the embedded system Raspberry Pi running an Operating System (OS) such as the Raspbian or the Ubuntu Core. We recommend the GNU Compiler Collection (GCC) to compile the RcdMathLib on operating systems like the Linux or Windows. We also recommend the use of the <a href="https://www.eclipse.org/">Eclipse (IDE)</a>.</p> <p>The PATH environment variable should be set with bin-directory of the GCC compiler. On a typical shell like bash or zsh this can be done using export, e.g.</p> <blockquote class="doxtable"> <p>export PATH=${PATH}:/path/to/gcc/bin </p> @@ -122,7 +122,7 @@ Setting up a toolchain for full-fledged devices</h2> </blockquote> <h2><a class="anchor" id="setting-up-a-toolchain-res-lim"></a> Setting up a toolchain for resource-limited devices</h2> -<p>Depending on the hardware you want to use, you need to first install a corresponding toolchain. We recommend the use of the <a href="https://riot-os.org/">RIOT-OS</a>, since it supports 8-bit platforms (e.g. Arduino Mega 2560), 16-bit platforms (e.g. MSP430), and 32-bit platforms (e.g. ARM). The RIOT-OS is an open source IoT operating system developed at the ''Freie Universität Berlin''. In general, an OS allows the management and sharing of resources as well as the development of multi-tasking applications in a computer system. The Wiki on RIOT's Github page contains a lot of information that can help you with your platform:</p> +<p>Depending on the hardware you want to use, you need to first install a corresponding toolchain. We recommend the use of the <a href="https://riot-os.org/">RIOT-OS</a>, since it supports 8-bit platforms (e.g. Arduino Mega 2560), 16-bit platforms (e.g. MSP430), and 32-bit platforms (e.g. ARM). The <a href="https://riot-os.org/">RIOT-OS</a> is an open source IoT operating system developed at the ''Freie Universität Berlin''. In general, an OS allows the management and sharing of resources as well as the development of multi-tasking applications in a computer system. The <a href="https://github.com/RIOT-OS/RIOT/wiki">Wiki</a> on RIOT's Github page contains a lot of information that can help you with your platform:</p> <ul> <li><a href="https://github.com/RIOT-OS/RIOT/wiki/Family:-ARM">ARM-based platforms</a></li> <li><a href="https://github.com/RIOT-OS/RIOT/wiki/Family:-MSP430">TI MSP430</a></li> @@ -131,23 +131,23 @@ Setting up a toolchain for resource-limited devices</h2> </ul> <h2><a class="anchor" id="the-build-system-full-fledge"></a> The build system for full-fledged devices</h2> -<p>RcdMathLib can be built using the <a href="https://www.eclipse.org/">Eclipse IDE</a> for C/C++ Developers. The simplest way to compile and link an application with the RcdMathLib is: Firstly, to download <a href="https://git.imp.fu-berlin.de/zkasmi/test_my_lib/blob/master/RcdMathLib_eclipse_version.zip">RcdMathLib_eclipse_version.zip</a> file or to clone it:</p> -<div class="fragment"><div class="line">git clone git@git.imp.fu-berlin.de:zkasmi/test_my_lib.git</div> -</div><!-- fragment --><p>After cloning or downloading the RcdMathLib, the Eclipse version of the RcdMathLib can be used as follows:</p><ol type="1"> +<p>RcdMathLib can be built using the <a href="https://www.eclipse.org/">Eclipse IDE</a> for C/C++ Developers. The simplest way to compile and link an application with the RcdMathLib is: Firstly, download the <a href="https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/-/blob/master/eclipse_projects/RcdMathLib_full_fledged_devices.zip">RcdMathLib_full_fledged_devices.zip</a> file or clone it as follows:</p> +<div class="fragment"><div class="line">git clone https://git.imp.fu-berlin.de/zkasmi/RcdMathLib.git</div> +<div class="line">cd RcdMathLib/eclipse_projects/</div> +</div><!-- fragment --><p>After cloning or downloading the RcdMathLib, the Eclipse version of the RcdMathLib can be used as follows:</p><ul> <li>Create a workspace folder (e.g. rcd_math_lib_workspace).</li> +<li>Change the current directory to the ''rcd_math_lib_workspace'' directory and unzip the RcdMathLib_full_fledged_devices.zip file. <div class="fragment"><div class="line">cd rcd_math_lib_workspace</div> +<div class="line">unzip RcdMathLib_full_fledged_devices.zip </div> +</div><!-- fragment --></li> <li>Start the Eclipse IDE and browse to the created workspace folder.</li> -<li>Open File->Import->General.</li> -<li>Select ''Existing Project into Workspace'' from the Selection Wizard.</li> -<li>Select Next->''archive file''-->Browse.</li> -<li>After Browsing to the <a href="https://git.imp.fu-berlin.de/zkasmi/test_my_lib/blob/master/RcdMathLib_eclipse_version.zip">RcdMathLib_eclipse_version.zip</a> file, click on Finish.</li> <li>Compile the whole project.</li> -</ol> -<p>Another method to use the RcdMathLib in the Eclipse IDE is:</p><ol type="1"> -<li>Clone the whole RcdMathLib version for full-fledged devices: <div class="fragment"><div class="line">git clone git@git.imp.fu-berlin.de:zkasmi/my_lib_full_fledged_devices.git</div> +</ul> +<p>Another method to use the RcdMathLib in the Eclipse IDE is:</p><ul> +<li>Clone the whole: <div class="fragment"><div class="line">git clone https://git.imp.fu-berlin.de/zkasmi/RcdMathLib.git</div> </div><!-- fragment --></li> <li>Create a new C project by choosing the project type under Executable: <code>Hello World ANSI C Project</code>, as well as the <code>Cross GCC</code> Tool-chains.</li> <li>Try to compile and execute the <code>Hello World ANSI C Project</code>.</li> -<li>Copy the RcdMathLib- and the examples-directories, as well as the 'eclipse_path_includes_settings.xml' configuration file into the src-directory of your project.</li> +<li>Copy the RcdMathLib as well as the <a href="https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/-/blob/master/eclipse_projects/eclipse_path_includes_settings.xml">eclipse_path_includes_settings.xml</a> configuration file into the src-directory of your project.</li> <li><p class="startli">Import the 'eclipse_path_includes_settings.xml' file as follows:</p> <blockquote class="doxtable"> <ul> @@ -159,17 +159,10 @@ The build system for full-fledged devices</h2> </li> <li>Compile the whole project.</li> <li>Optional: replace the main()-function with the main.c file of the cloned RcdMathLib version for full-fledged devices.</li> -</ol> -<p>Third method (intern): Set up the <a href="https://www.eclipse.org/">Eclipse IDE</a> as follows:</p><ol type="1"> -<li>Create a new C project, choose the project type under Executable: <code>Hello World ANSI C Project</code>, as well as the <code>Cross GCC</code> Tool-chains.</li> -<li>Try to compile and execute the <code>Hello World ANSI C Project</code>.</li> -<li>Copy the RcdMathLib-directory into the src-directory.</li> -<li>Replace the file containing the main()-function with the main.c file of the RcdMathLib.</li> -<li>Setting the include-paths of the modules in the Eclipse IDE: Properties/Paths and Symbols/GNU C</li> -</ol> +</ul> <h2><a class="anchor" id="the-build-system-res-lim"></a> The build system for resource-limited devices</h2> -<p>RcdMathLib and RIOT use <a href="https://www.gnu.org/software/make/">GNU make</a> as build system. The simplest way to compile and link an application with RcdMathLib, is to set up a Makefile providing at least the following variables:</p> +<p>RcdMathLib and RIOT use <a href="https://www.gnu.org/software/make/">GNU make</a> as build system. The simplest way to compile and link an application with RcdMathLib, is to use the <a href="https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/-/blob/master/eclipse_projects/RcdMathLib_resource_limited_devices.zip">Eclipse project for resource-limited devices</a> and set up a Makefile providing at least the following variables:</p> <ul> <li><code>APPLICATION</code>: should contain the (unique) name of your application</li> <li><code>BOARD</code>: specifies the platform the application should be build for by default</li> @@ -199,7 +192,7 @@ The build system for resource-limited devices</h2> <p>Please visit the <a href="https://github.com/RIOT-OS/RIOT/wiki/The-Make-Build-System">Wiki</a> to learn more about the build system of the RIOT.</p> <h2><a class="anchor" id="building-and-executing-an-example-res-lim"></a> Building and executing an example for resource-limited devices</h2> -<p>RcdMathLib provides a number of examples in the <code>examples/</code> directory. Every example has a README that documents its usage and its purpose. Furthermore the examples are described in the doc-directory. You can build your own application or the examples by typing</p> +<p>RcdMathLib provides a number of examples in the <a href="https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/-/tree/master/examples">examples-directory</a>. Every example has a README that documents its usage and its purpose. Furthermore the examples are described in the <a href="https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/-/tree/master/doc/doxygen">doc-directory</a>. You can build your own application or the examples by typing:</p> <div class="fragment"><div class="line">make BOARD=stm32f4discovery</div> </div><!-- fragment --><p>or</p> <div class="fragment"><div class="line">make all BOARD=stm32f4discovery</div> diff --git a/doc/doxygen/html/index.html b/doc/doxygen/html/index.html index 253a7c382a0c0ecd57be232f26326c45571ffa8d..ba4e9970fa527546abcdcca462c5f97d0a5d0b21 100644 --- a/doc/doxygen/html/index.html +++ b/doc/doxygen/html/index.html @@ -92,7 +92,7 @@ $(document).ready(function(){initNavTree('index.html','');}); <div class="contents"> <div class="toc"><h3>Table of Contents</h3> <ul><li class="level1"><a href="#RcdMathLib-in-a-nutshell">RcdMathLib in a nutshell</a></li> -<li class="level1"><a href="#download-use-RcdMathLib">Download and use RcdMathLib</a></li> +<li class="level1"><a href="#download-use-RcdMathLib">Download and use the RcdMathLib</a></li> <li class="level1"><a href="#the-quickest-start">The quickest start</a></li> <li class="level1"><a href="#structure">Structure</a><ul><li class="level2"><a href="#autotoc_md0">Linear Algebra</a></li> <li class="level2"><a href="#autotoc_md1">Non-Linear Algebra</a></li> @@ -109,12 +109,15 @@ $(document).ready(function(){initNavTree('index.html','');}); RcdMathLib in a nutshell</h1> <p>RcdMathLib is an open-source library for numerical linear and non-linear algebra designed to match the requirements of resource-limited or embedded devices. RcdMathLib supports solving linear and non-linear equation systems. Furthermore, it provides general-purpose implemented methods that facilitate solving problems of regression smoothing and curve fitting. It also allows for calculating as well as optimizing a position on a mobile device.</p> <h1><a class="anchor" id="download-use-RcdMathLib"></a> -Download and use RcdMathLib</h1> -<p>The simplest way to use the RcdMathLib for resource-limited devices is to download the Elipse project (TODO). The following Eclipse project enables also the RcdMathLib for full-fledged platforms (TODO).</p> +Download and use the RcdMathLib</h1> +<p>The simplest way to use the RcdMathLib for resource-limited devices is to download the <a href="https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/-/blob/master/eclipse_projects/RcdMathLib_resource_limited_devices.zip">Eclipse project for resource-limited devices</a> zip file. Another <a href="https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/-/blob/master/eclipse_projects/RcdMathLib_full_fledged_devices.zip">Eclipse project for full-fledged devices</a> zip file enables also the use of the RcdMathLib for full-fledged platforms or single-board computers such as a <a href="https://www.elinux.org/RPi_Hub">Raspberry Pi</a>.</p> <h1><a class="anchor" id="the-quickest-start"></a> The quickest start</h1> -<p>You can run RcdMathLib on most resource-limited such as the STM32 Discovery board as well as on a PC. Try it right now in your terminal window:</p> -<div class="fragment"><div class="line">git clone git://github.com/RIOT-OS/RIOT.git # assumption: git is pre-installed </div> +<p>You can run the RcdMathLib on most resource-limited devices such as the <a href="https://www.st.com/en/evaluation-tools/stm32f4discovery.html">STM32F4 Discovery board</a> as well as on full-fledged computers like a PC, or single-board devices such as a <a href="https://www.elinux.org/RPi_Hub">Raspberry Pi</a>. Try it right now in your terminal window:</p> +<div class="fragment"><div class="line">mkdir RcdMathLib_resource_limited_devices </div> +<div class="line">cd RcdMathLib_resource_limited_devices</div> +<div class="line">git clone https://git.imp.fu-berlin.de/zkasmi/RcdMathLib.git # assumption: git is pre-installed</div> +<div class="line">unzip RcdMathLib_resource_limited_devices.zip </div> <div class="line">cd RcdMathLib/examples/linear_algebra/basic_operation/</div> <div class="line">make all</div> </div><!-- fragment --><p>The example above shows how to use the basic operations of the RcdMathLib such as the vector or the matrix operations.</p> @@ -131,8 +134,7 @@ Software Architecture</div></div> <li>Non-linear algebra</li> <li>Localization</li> </ul> -<p>In addition RcdMathLib includes various examples to familiarize the user with the software as well as an API to facilitate the use and the further development of the library.</p> -<p>The structural groups are projected onto the directory structure of RcdMathLib, where each of these groups resides in one or two directories in the main RcdMathLib directory.</p> +<p>In addition RcdMathLib includes various <a href="https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/-/tree/master/examples">examples</a> to familiarize the user with the software as well as an API to facilitate the use and the further development of the library. The structural groups are projected onto the <a href="https://git.imp.fu-berlin.de/zkasmi/RcdMathLib">directory structure</a> of RcdMathLib, where each of these groups resides in one or two directories in the <a href="https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/">main</a> RcdMathLib directory.</p> <p>The following list gives a more detailed description of each of RcdMathLib's top-level directories:</p> <h2><a class="anchor" id="autotoc_md0"></a> Linear Algebra</h2> @@ -143,7 +145,7 @@ Linear Algebra</h2> <li>Solve linear equations sub-module.</li> <li>Utilities sub-module.</li> </ul> -<p>See <a class="el" href="group__linear__algebra.html">LINEAR_ALGEBRA</a> module for further information and API documentations.</p> +<p>See the <a class="el" href="group__linear__algebra.html">LINEAR_ALGEBRA</a> module in the <a href="https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/">main</a> RcdMathLib directory as well as in the <a href="https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/-/tree/master/doc/doxygen">documentation</a> repository directory for further information and API documentations.</p> <h2><a class="anchor" id="autotoc_md1"></a> Non-Linear Algebra</h2> <p>The non-linear algebra module contains functions to solve multi-variant nonlinear equations as wells algorithms solving problems of regression smoothing and curve fitting. This module also enables enables the optimization of an approximate solution by using Non-linear Least Squares (NLS) methods such as modified Gauss–Newton (GN) or the Levenberg–Marquardt (LVM) algorithms. The non-linear algebra module is divided in the two following sub-modules:</p> diff --git a/doc/doxygen/html/navtreedata.js b/doc/doxygen/html/navtreedata.js index 0c6383053e9ea8d8683cf03dc4caf19f9e69ccbf..b73ec0b482db383c15120be0d5d8bf4e91697146 100644 --- a/doc/doxygen/html/navtreedata.js +++ b/doc/doxygen/html/navtreedata.js @@ -25,7 +25,7 @@ var NAVTREE = [ "RcdMathLib_doc", "index.html", [ [ "RcdMathLib Documentation", "index.html", [ [ "RcdMathLib in a nutshell", "index.html#RcdMathLib-in-a-nutshell", null ], - [ "Download and use RcdMathLib", "index.html#download-use-RcdMathLib", null ], + [ "Download and use the RcdMathLib", "index.html#download-use-RcdMathLib", null ], [ "The quickest start", "index.html#the-quickest-start", null ], [ "Structure", "index.html#structure", [ [ "Linear Algebra", "index.html#autotoc_md0", null ], diff --git a/doc/doxygen/src/getting-started.md b/doc/doxygen/src/getting-started.md index 8a106561d859eb2c1664fd36ff28c7be04eaff08..859f57990da7da48640cc841129f683860ae3075 100644 --- a/doc/doxygen/src/getting-started.md +++ b/doc/doxygen/src/getting-started.md @@ -7,18 +7,15 @@ # Downloading RcdMathLib code {#downloading-RcdMathLib-code} - You can obtain the latest RcdMathLib code from -our [Github](https://github.com/RIOT-OS/) repository either by -[downloading the latest tarball](https://github.com/RIOT-OS/RIOT/releases) or -by cloning the [git repository](https://github.com/RIOT-OS/RIOT). +our [GitLab](https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/) repository either by +[downloading the Eclipse project for resource-limited devices](https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/-/blob/master/eclipse_projects/RcdMathLib_resource_limited_devices.zip) zip file, the [Eclipse project for full-fledged devices](https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/-/blob/master/eclipse_projects/RcdMathLib_full_fledged_devices.zip) zip file, or by cloning the [git repository](https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/). -In order to clone the RIOT repository, you need the -[Git revision control system](http://git-scm.com/) and run the following -command: +In order to clone the RcdMathLib repository, you need the +[Git revision control system](http://git-scm.com/) and run the following command: ~~~~~~~~ {.sh} -git clone git://github.com/RIOT-OS/RIOT.git +git clone https://git.imp.fu-berlin.de/zkasmi/RcdMathLib.git ~~~~~~~~ # Compiling RcdMathLib {#compiling-RcdMathLib} @@ -28,9 +25,9 @@ git clone git://github.com/RIOT-OS/RIOT.git RcdMathLib can be run on full-fledged devices such as a Personal Computer (PC) or a server. It can also be executed on the embedded system Raspberry Pi -running an Operating System (OS) such as the Raspbian or the Ubuntu Core. For -platforms based on full-fledged OSs like the Linux or Windows, we recommend -the GNU Compiler Collection (GCC). We also recommend the use of the Eclipse (IDE). +running an Operating System (OS) such as the Raspbian or the Ubuntu Core. We recommend +the GNU Compiler Collection (GCC) to compile the RcdMathLib on operating systems like the +Linux or Windows. We also recommend the use of the [Eclipse (IDE)](https://www.eclipse.org/). The PATH environment variable should be set with bin-directory of the GCC compiler. On a typical shell like bash or zsh this can be done using export, e.g. @@ -49,12 +46,13 @@ Environment Variables, e.g. ## Setting up a toolchain for resource-limited devices {#setting-up-a-toolchain-res-lim} Depending on the hardware you want to use, you need to first install a -corresponding toolchain. We recommend the use of the [RIOT-OS] (https://riot-os.org/), since +corresponding toolchain. We recommend the use of the [RIOT-OS](https://riot-os.org/), since it supports 8-bit platforms (e.g. Arduino Mega 2560), 16-bit platforms (e.g. MSP430), and 32-bit -platforms (e.g. ARM). The RIOT-OS is an open source IoT operating system developed at the - ''Freie Universität Berlin''. In general, an OS allows the management and sharing of resources -as well as the development of multi-tasking applications in a computer system. The Wiki on RIOT's - Github page contains a lot of information that can help you with your platform: +platforms (e.g. ARM). The [RIOT-OS](https://riot-os.org/) is an open source IoT operating system +developed at the ''Freie Universität Berlin''. In general, an OS allows the management and sharing +of resources as well as the development of multi-tasking applications in a computer system. The +[Wiki](https://github.com/RIOT-OS/RIOT/wiki) on RIOT's Github page contains a lot of information +that can help you with your platform: * [ARM-based platforms](https://github.com/RIOT-OS/RIOT/wiki/Family:-ARM) * [TI MSP430](https://github.com/RIOT-OS/RIOT/wiki/Family:-MSP430) @@ -63,55 +61,48 @@ as well as the development of multi-tasking applications in a computer system. T ## The build system for full-fledged devices {#the-build-system-full-fledge} -RcdMathLib can be built using the [Eclipse IDE] (https://www.eclipse.org/) for C/C++ Developers. -The simplest way to compile and link an application with the RcdMathLib is: Firstly, to download [RcdMathLib_eclipse_version.zip](https://git.imp.fu-berlin.de/zkasmi/test_my_lib/blob/master/RcdMathLib_eclipse_version.zip) file or to clone it: +RcdMathLib can be built using the [Eclipse IDE](https://www.eclipse.org/) for C/C++ Developers. +The simplest way to compile and link an application with the RcdMathLib is: Firstly, download [RcdMathLib_eclipse_version.zip](https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/-/blob/master/eclipse_projects/RcdMathLib_full_fledged_devices.zip) file or clone it as follows: ~~~~~~~~ {.sh} -git clone git@git.imp.fu-berlin.de:zkasmi/test_my_lib.git +git clone https://git.imp.fu-berlin.de/zkasmi/RcdMathLib.git +cd RcdMathLib/eclipse_projects/ ~~~~~~~~ After cloning or downloading the RcdMathLib, the Eclipse version of the RcdMathLib can be used as follows: --# Create a workspace folder (e.g. rcd_math_lib_workspace). --# Start the Eclipse IDE and browse to the created workspace folder. --# Open File->Import->General. --# Select ''Existing Project into Workspace'' from the Selection Wizard. --# Select Next->''archive file''-->Browse. --# After Browsing to the [RcdMathLib_eclipse_version.zip] - (https://git.imp.fu-berlin.de/zkasmi/test_my_lib/blob/master/RcdMathLib_eclipse_version.zip) file, click on Finish. --# Compile the whole project. +* Create a workspace folder (e.g. rcd_math_lib_workspace). +* Change the current directory to the ''rcd_math_lib_workspace'' directory and unzip the + RcdMathLib_full_fledged_devices.zip file. + ~~~~~~~~ {.sh} + cd rcd_math_lib_workspace + unzip RcdMathLib_full_fledged_devices.zip + ~~~~~~~~ +* Start the Eclipse IDE and browse to the created workspace folder. +* Compile the whole project. Another method to use the RcdMathLib in the Eclipse IDE is: --# Clone the whole RcdMathLib version for full-fledged devices: +* Clone the whole: ~~~~~~~~ {.sh} git clone git@git.imp.fu-berlin.de:zkasmi/my_lib_full_fledged_devices.git ~~~~~~~~ --# Create a new C project by choosing the project type under Executable: `Hello World ANSI C Project`, +* Create a new C project by choosing the project type under Executable: `Hello World ANSI C Project`, as well as the `Cross GCC` Tool-chains. --# Try to compile and execute the `Hello World ANSI C Project`. --# Copy the RcdMathLib- and the examples-directories, as well as the 'eclipse_path_includes_settings.xml' - configuration file into the src-directory of your project. --# Import the 'eclipse_path_includes_settings.xml' file as follows: +* Try to compile and execute the `Hello World ANSI C Project`. +* Copy the RcdMathLib- and the examples-directories, as well as the + [eclipse_path_includes_settings.xml](https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/-/blob/master/eclipse_projects/eclipse_path_includes_settings.xml) configuration file into the src-directory of your project. +* Import the 'eclipse_path_includes_settings.xml' file as follows: <BLOCKQUOTE> * Open File -> Import -> C/C++ and Select ''C/C++ Project Settings'' from the Selection Wizard. * Click Next->''Select Settings file''-->Browse. * After Browsing to the xml-configuration file, click on Finish. </BLOCKQUOTE> --# Compile the whole project. --# Optional: replace the main()-function with the main.c file of the cloned RcdMathLib version for full-fledged devices. +* Compile the whole project. +* Optional: replace the main()-function with the main.c file of the cloned RcdMathLib version for full-fledged devices. -Third method (intern): -Set up the [Eclipse IDE] (https://www.eclipse.org/) as follows: --# Create a new C project, choose the project type under Executable: `Hello World ANSI C Project`, - as well as the `Cross GCC` Tool-chains. --# Try to compile and execute the `Hello World ANSI C Project`. --# Copy the RcdMathLib-directory into the src-directory. --# Replace the file containing the main()-function with the main.c file of the RcdMathLib. --# Setting the include-paths of the modules in the Eclipse IDE: Properties/Paths and Symbols/GNU C +## The build system for resource-limited devices {#the-build-system-res-lim} -The build system for resource-limited devices {#the-build-system-res-lim} ---------------------------------------------- RcdMathLib and RIOT use [GNU make](https://www.gnu.org/software/make/) as build system. The simplest way to compile and link an application with RcdMathLib, is to set up a Makefile providing at least the following variables: diff --git a/doc/doxygen/src/getting-started.md.bak b/doc/doxygen/src/getting-started.md.bak new file mode 100644 index 0000000000000000000000000000000000000000..5d40e4f1993d9ce3aa25b370a026529ab4fd65ef --- /dev/null +++ b/doc/doxygen/src/getting-started.md.bak @@ -0,0 +1,222 @@ +# Getting started {#getting-started} + + +\author Zakaria Kasmi + +[TOC] + +# Downloading RcdMathLib code {#downloading-RcdMathLib-code} + +You can obtain the latest RcdMathLib code from +our [GitLab](https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/) repository either by +[downloading the Eclipse project for resource-limited devices](https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/-/blob/master/eclipse_projects/RcdMathLib_resource_limited_devices.zip) zip file, the [Eclipse project for full-fledged devices](https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/-/blob/master/eclipse_projects/RcdMathLib_full_fledged_devices.zip) zip file, or by cloning the [git repository](https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/). + +In order to clone the RcdMathLib repository, you need the +[Git revision control system](http://git-scm.com/) and run the following command: + +~~~~~~~~ {.sh} +git clone https://git.imp.fu-berlin.de/zkasmi/RcdMathLib.git +~~~~~~~~ + +# Compiling RcdMathLib {#compiling-RcdMathLib} + + +## Setting up a toolchain for full-fledged devices {#setting-up-a-toolchain-full-fledge} + +RcdMathLib can be run on full-fledged devices such as a Personal Computer +(PC) or a server. It can also be executed on the embedded system Raspberry Pi +running an Operating System (OS) such as the Raspbian or the Ubuntu Core. We recommend +the GNU Compiler Collection (GCC) to compile the RcdMathLib on operating systems like the +Linux or Windows. We also recommend the use of the [Eclipse (IDE)](https://www.eclipse.org/). + +The PATH environment variable should be set with bin-directory of the GCC compiler. +On a typical shell like bash or zsh this can be done using export, e.g. + +<BLOCKQUOTE> +export PATH=${PATH}:/path/to/gcc/bin +</BLOCKQUOTE> + +For windows, add the bin-directory to your PATH under System Properties->Advanced-> +Environment Variables, e.g. + +<BLOCKQUOTE> +"C:\gcc\bin" +</BLOCKQUOTE> + +## Setting up a toolchain for resource-limited devices {#setting-up-a-toolchain-res-lim} + +Depending on the hardware you want to use, you need to first install a +corresponding toolchain. We recommend the use of the [RIOT-OS] (https://riot-os.org/), since +it supports 8-bit platforms (e.g. Arduino Mega 2560), 16-bit platforms (e.g. MSP430), and 32-bit +platforms (e.g. ARM). The RIOT-OS is an open source IoT operating system developed at the + ''Freie Universität Berlin''. In general, an OS allows the management and sharing of resources +as well as the development of multi-tasking applications in a computer system. The Wiki on RIOT's + Github page contains a lot of information that can help you with your platform: + +* [ARM-based platforms](https://github.com/RIOT-OS/RIOT/wiki/Family:-ARM) +* [TI MSP430](https://github.com/RIOT-OS/RIOT/wiki/Family:-MSP430) +* [Atmel ATmega](https://github.com/RIOT-OS/RIOT/wiki/Family%3A-ATmega) +* [native](https://github.com/RIOT-OS/RIOT/wiki/Family:-native) + +## The build system for full-fledged devices {#the-build-system-full-fledge} + +RcdMathLib can be built using the [Eclipse IDE] (https://www.eclipse.org/) for C/C++ Developers. +The simplest way to compile and link an application with the RcdMathLib is: Firstly, to download [RcdMathLib_eclipse_version.zip](https://git.imp.fu-berlin.de/zkasmi/test_my_lib/blob/master/RcdMathLib_eclipse_version.zip) file or to clone it: + +~~~~~~~~ {.sh} +git clone git@git.imp.fu-berlin.de:zkasmi/test_my_lib.git +~~~~~~~~ + +After cloning or downloading the RcdMathLib, the Eclipse version of the RcdMathLib can be used as follows: +-# Create a workspace folder (e.g. rcd_math_lib_workspace). +-# Start the Eclipse IDE and browse to the created workspace folder. +-# Open File->Import->General. +-# Select ''Existing Project into Workspace'' from the Selection Wizard. +-# Select Next->''archive file''-->Browse. +-# After Browsing to the [RcdMathLib_eclipse_version.zip] + (https://git.imp.fu-berlin.de/zkasmi/test_my_lib/blob/master/RcdMathLib_eclipse_version.zip) file, click on Finish. +-# Compile the whole project. + +Another method to use the RcdMathLib in the Eclipse IDE is: +-# Clone the whole RcdMathLib version for full-fledged devices: + ~~~~~~~~ {.sh} + git clone git@git.imp.fu-berlin.de:zkasmi/my_lib_full_fledged_devices.git + ~~~~~~~~ +-# Create a new C project by choosing the project type under Executable: `Hello World ANSI C Project`, + as well as the `Cross GCC` Tool-chains. +-# Try to compile and execute the `Hello World ANSI C Project`. +-# Copy the RcdMathLib- and the examples-directories, as well as the 'eclipse_path_includes_settings.xml' + configuration file into the src-directory of your project. +-# Import the 'eclipse_path_includes_settings.xml' file as follows: + + <BLOCKQUOTE> + * Open File -> Import -> C/C++ and Select ''C/C++ Project Settings'' from the Selection Wizard. + * Click Next->''Select Settings file''-->Browse. + * After Browsing to the xml-configuration file, click on Finish. + </BLOCKQUOTE> +-# Compile the whole project. +-# Optional: replace the main()-function with the main.c file of the cloned RcdMathLib version for full-fledged devices. + +Third method (intern): +Set up the [Eclipse IDE] (https://www.eclipse.org/) as follows: +-# Create a new C project, choose the project type under Executable: `Hello World ANSI C Project`, + as well as the `Cross GCC` Tool-chains. +-# Try to compile and execute the `Hello World ANSI C Project`. +-# Copy the RcdMathLib-directory into the src-directory. +-# Replace the file containing the main()-function with the main.c file of the RcdMathLib. +-# Setting the include-paths of the modules in the Eclipse IDE: Properties/Paths and Symbols/GNU C + + +The build system for resource-limited devices {#the-build-system-res-lim} +--------------------------------------------- +RcdMathLib and RIOT use [GNU make](https://www.gnu.org/software/make/) as build system. The +simplest way to compile and link an application with RcdMathLib, is to set up a +Makefile providing at least the following variables: + + * `APPLICATION`: should contain the (unique) name of your application + * `BOARD`: specifies the platform the application should be build for by + default + * `RIOTBASE`: specifies the path to the copy of the RIOT repository (note, + the `$(CURDIR)` macro can be used to give a relative path) + * `RCDMATHLIB`: specifies the path to the copy of the RcdMathLib repository (note, + the `$(CURDIR)` macro can be used to give a relative path) + * `USEMODULE`: specifies the module of the RcdMathLib that you may want to use + +Additionally it has to include the `Makefile.include`, located in RcdMathLib's as well as RIOT's +root directories. A minimal application Makefile looks like this: + +~~~~~~~~ {.mk} +# a minimal application Makefile +APPLICATION = mini-makefile +BOARD ?= native +RIOTBASE ?= $(CURDIR)/../RIOT +RCDMATHLIB ?= $(CURDIR)/../RcdMathLib +USEMODULE += basic_operations + +include $(RIOTBASE)/MicroPosMath-Lib/Makefile.include +include $(RIOTBASE)/Makefile.include +~~~~~~~~ + +The `?=` operator can be used in order to allow overwriting variables from the command line. +For example, the target platform can be specified from the command line as follows: + + +~~~~~~~~ {.sh} +make BOARD=stm32f4discovery +~~~~~~~~ + +In this case the STM32F4 discovery board is specified. Furthermore, the basic operations sub-module is +selected by the `USEMODULE` macro. + +Other sub-modules such as the matrix decompositions or utilities modules can be selected, e.g.: + +~~~~~~~~ {.mk} +USEMODULE += matrix_decompositions +USEMODULE += utilities +~~~~~~~~ +The dependency of the RcdMathLib modules and sub-modules to each other is automatically calculated +by special Makefiles located in the module directories. + +Besides typical targets like `clean`, `all`, or `doc`, RIOT provides the +special targets `flash` and `term` to invoke the configured flashing and +terminal tools for the specified platform. These targets use the variable +`PORT` for the serial communication to the device. Neither this variable nor +the targets `flash` and `term` are mandatory for the native port. + +Unless specified otherwise, make will create an elf-file as well as an Intel +hex file in the `bin` folder of your application directory. + +Please visit the [Wiki](https://github.com/RIOT-OS/RIOT/wiki/The-Make-Build-System) to learn more +about the build system of the RIOT. + + +## Building and executing an example for resource-limited devices {#building-and-executing-an-example-res-lim} + +RcdMathLib provides a number of examples in the `examples/` directory. Every example +has a README that documents its usage and its purpose. Furthermore the examples are described in the +doc-directory. You can build your own application or the examples by typing + +~~~~~~~~ {.sh} +make BOARD=stm32f4discovery +~~~~~~~~ + +or + +~~~~~~~~ {.sh} +make all BOARD=stm32f4discovery +~~~~~~~~ + +into your shell. + +To flash the application to a board just type + +~~~~~~~~ {.sh} +make flash BOARD=stm32f4discovery +~~~~~~~~ + +You can then access the board via the serial interface: + +~~~~~~~~ {.sh} +make term BOARD=stm32f4discovery +~~~~~~~~ + +If you are using multiple boards you can use the `PORT` macro to specify the +serial interface: + +~~~~~~~~ {.sh} +make term BOARD=stm32f4discovery PORT=/dev/ttyACM1 +~~~~~~~~ + +We use `pyterm` as the default terminal application. It is shipped with RIOT in +the `dist/tools/pyterm/` directory. If you choose to use another terminal +program you can set `TERMPROG` (and if need be the `TERMFLAGS`) macros: + +~~~~~~~~ {.sh} +make -C examples/gnrc_networking/ term \ + BOARD=samr21-xpro \ + TERMPROG=gtkterm \ + TERMFLAGS="-s 115200 -p /dev/ttyACM0 -e" +~~~~~~~~ + +Please visit the [Wiki](https://github.com/RIOT-OS/RIOT/wiki) to learn more +about flashing devices. \ No newline at end of file diff --git a/doc/doxygen/src/mainpage.md b/doc/doxygen/src/mainpage.md index 411175a574d357d9849c31d0f06f07b89f4b1ea9..85439981a559d89f28fb64e16843d104dad8f829 100644 --- a/doc/doxygen/src/mainpage.md +++ b/doc/doxygen/src/mainpage.md @@ -14,22 +14,23 @@ solving problems of regression smoothing and curve fitting. It also allows for calculating as well as optimizing a position on a mobile device. -# Download and use RcdMathLib {#download-use-RcdMathLib} +# Download and use the RcdMathLib {#download-use-RcdMathLib} The simplest way to use the RcdMathLib for resource-limited devices is to -download the Elipse project (TODO). The following Eclipse project enables -also the RcdMathLib for full-fledged platforms (TODO). +download the [Eclipse project for resource-limited devices](https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/-/blob/master/eclipse_projects/RcdMathLib_resource_limited_devices.zip) zip file. Another [Eclipse project for full-fledged devices](https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/-/blob/master/eclipse_projects/RcdMathLib_full_fledged_devices.zip) zip file enables also the use of the RcdMathLib for full-fledged platforms or single-board computers such as a [Raspberry Pi](https://www.elinux.org/RPi_Hub). # The quickest start {#the-quickest-start} -You can run RcdMathLib on most resource-limited such as the STM32 Discovery board as -well as on a PC. +You can run the RcdMathLib on most resource-limited devices such as the [STM32F4 Discovery board](https://www.st.com/en/evaluation-tools/stm32f4discovery.html) as well as on full-fledged computers like a PC, or single-board devices such as a [Raspberry Pi](https://www.elinux.org/RPi_Hub). Try it right now in your terminal window: ~~~~~~~{.sh} -git clone git://github.com/RIOT-OS/RIOT.git # assumption: git is pre-installed +mkdir RcdMathLib_resource_limited_devices +cd RcdMathLib_resource_limited_devices +git clone https://git.imp.fu-berlin.de/zkasmi/RcdMathLib.git # assumption: git is pre-installed +unzip RcdMathLib_resource_limited_devices.zip cd RcdMathLib/examples/linear_algebra/basic_operation/ make all ~~~~~~~ @@ -53,12 +54,10 @@ RcdMathLib's source code is composed into three groups: - Localization -In addition RcdMathLib includes various examples to familiarize the user with the software -as well as an API to facilitate the use and the further development of the library. - -The structural groups are projected onto the directory structure of RcdMathLib, where -each of these groups resides in one or two directories in the main RcdMathLib -directory. +In addition RcdMathLib includes various [examples](https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/-/tree/master/examples) +to familiarize the user with the software as well as an API to facilitate the use and the further development of the library. +The structural groups are projected onto the [directory structure](https://git.imp.fu-berlin.de/zkasmi/RcdMathLib) of +RcdMathLib, where each of these groups resides in one or two directories in the [main](https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/) RcdMathLib directory. The following list gives a more detailed description of each of RcdMathLib's top-level directories: @@ -78,7 +77,10 @@ divided in the following sub-modules: - Utilities sub-module. -See @ref linear_algebra module for further information and API documentations. +See the @ref linear_algebra module in the [main](https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/) +RcdMathLib directory as well as in the [documentation](https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/-/tree/master/doc/doxygen) +repository directory for further information and API documentations. + ## Non-Linear Algebra diff --git a/doc/doxygen/src/mainpage.md.bak b/doc/doxygen/src/mainpage.md.bak new file mode 100644 index 0000000000000000000000000000000000000000..1965066146d57f31463ecbd1c8f127af36e92cea --- /dev/null +++ b/doc/doxygen/src/mainpage.md.bak @@ -0,0 +1,141 @@ +# RcdMathLib Documentation {#mainpage} + +\author Zakaria Kasmi + +[TOC] + +# RcdMathLib in a nutshell {#RcdMathLib-in-a-nutshell} + +RcdMathLib is an open-source library for numerical linear and non-linear +algebra designed to match the requirements of resource-limited or embedded +devices. RcdMathLib supports solving linear and non-linear equation systems. +Furthermore, it provides general-purpose implemented methods that facilitate +solving problems of regression smoothing and curve fitting. It also allows for +calculating as well as optimizing a position on a mobile device. + + +# Download and use the RcdMathLib {#download-use-RcdMathLib} + + +The simplest way to use the RcdMathLib for resource-limited devices is to +download the [Eclipse project for resource-limited devices](https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/-/blob/master/eclipse_projects/RcdMathLib_resource_limited_devices.zip) zip file. Another [Eclipse project for full-fledged devices](https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/-/blob/master/eclipse_projects/RcdMathLib_full_fledged_devices.zip) zip file enables also the use of the RcdMathLib for full-fledged platforms or single-board computers such as a [Raspberry Pi](https://www.elinux.org/RPi_Hub). + + +# The quickest start {#the-quickest-start} + +You can run the RcdMathLib on most resource-limited devices such as the [STM32F4 Discovery board](https://www.st.com/en/evaluation-tools/stm32f4discovery.html) as well as on full-fledged computers like a PC, or single-board devices such as a [Raspberry Pi](https://www.elinux.org/RPi_Hub). +Try it right now in your terminal window: + +~~~~~~~{.sh} +mkdir RcdMathLib_resource_limited_devices +cd RcdMathLib_resource_limited_devices +git clone https://git.imp.fu-berlin.de/zkasmi/RcdMathLib.git # assumption: git is pre-installed +unzip RcdMathLib_resource_limited_devices.zip +cd RcdMathLib/examples/linear_algebra/basic_operation/ +make all +~~~~~~~ + +The example above shows how to use the basic operations of the RcdMathLib such as the vector or +the matrix operations. + +# Structure {#structure} + + +This section walks you through RcdMathLib's structure to easily find your way around in RcdMathLib's code base. + + + + + +RcdMathLib's source code is composed into three groups: + + - Linear algebra + - Non-linear algebra + - Localization + + +In addition RcdMathLib includes various [examples](https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/-/tree/master/examples) +to familiarize the user with the software as well as an API to facilitate the use and the further development of the library. +The structural groups are projected onto the [directory structure](https://git.imp.fu-berlin.de/zkasmi/RcdMathLib) of +RcdMathLib, where each of these groups resides in one or two directories in the [main](https://git.imp.fu-berlin.de/zkasmi/RcdMathLib/) RcdMathLib directory. + +The following list gives a more detailed description of each of RcdMathLib's +top-level directories: + +## Linear Algebra + +This directory contains functions that are specific to vector and matrix operations, and +other algebraic operations. It provides functions to perform basic matrix operations such +as matrix addition, multiplication, or transposition. It also provides algorithms for complex +operations like matrix decomposition algorithms, algorithms to calculate the pseudo-inverse +of a matrix, or methods to solve systems of linear equations. The linear algebra module is +divided in the following sub-modules: +- Basic operations sub-module. +- Matrix decompositions sub-module. +- Pseudo-Inverse sub-module. +- Solve linear equations sub-module. +- Utilities sub-module. + + +See @ref linear_algebra module for further information and API documentations. + +## Non-Linear Algebra + +The non-linear algebra module contains functions to solve multi-variant nonlinear +equations as wells algorithms solving problems of regression smoothing and curve +fitting. This module also enables enables the optimization of an approximate solution +by using Non-linear Least Squares (NLS) methods such as modified Gauss--Newton (GN) or +the Levenberg--Marquardt (LVM) algorithms. The non-linear algebra module is +divided in the two following sub-modules: + +- Solve non-linear equations sub-module. +- Optimization sub-module. + +See here @ref non_linear_algebra module for further information. + +## Localization + +The localization module contains functions to compute a position of a mobile device +using distance measurements or DC-pulsed, magnetic signals. This module also includes +optimization algorithms such as the Levenberg--Marquardt approach to optimize the +calculated position. The localization module also involves a method to recognize and +mitigate the multipath errors on the mobile station. + +In the `position_algos` sub-directory you can find the implementations of the +distance-based localization system (see the @ref distance_based module) as well as +the implementations of the DC-pulsed, magnetic position system (see the @ref magnetic_based +module). The `pos_algos_common` sub-directory contains common localization algorithms like +the trilateration method (see the @ref pos_algos_common module). The optimization algorithms are +localted in the `optimization` sub-directory providing the following optimization approaches: + +- Gauss--Newton (GN) algorithm. +- Levenberg--Marquardt (LVM) algorithm. +- Multipath Distance Detection and Mitigation (MDDM) algorithm. + +See the @ref localization module for more detailed information. + +## examples + +Here you find a number of example applications that demonstrate certain +features of RcdMathLib. The examples found in this directory is a good +starting point for anyone who is new to RcdMathLib. + +For more information best browse that directory and have a look at the +`README.md` files that ship with each example. + +To create your own application - here or anywhere else - see @ref creating-an-application + + +## doc + +The `doc` directory contains the doxygen configuration and also contains the compiled doxygen +output after running `make doc`. + + + +# Further information {#further-information} + + - @ref getting-started + - @ref creating-an-application + - @ref creating-modules +