README.md 5.94 KB
Newer Older
Arnaud Blanchard's avatar
Arnaud Blanchard committed
1
[![logo](logo_blaar_square.png)](http://blaar.org)
Arnaud Blanchard's avatar
Arnaud Blanchard committed
2

Arnaud Blanchard's avatar
Arnaud Blanchard committed
3
Basic Libraries And Applications for Robotics
Arnaud Blanchard's avatar
Arnaud Blanchard committed
4 5
=============================================

Arnaud Blanchard's avatar
Arnaud Blanchard committed
6 7 8
The goal of this light framework is to provide helpers and shortcuts with few abstractions letting you know what you are doing.
You are free to mix it with any low level code. The drawback is that you have to know what you are doing which is good in robotics.
The modules are minimalist in purpose. If you want more you are advised to use specialized libraries or tools but **blaar** should be helpful to make the integration. 
Arnaud Blanchard's avatar
Arnaud Blanchard committed
9

Arnaud Blanchard's avatar
Arnaud Blanchard committed
10 11
BLAAR is **open source** CeCILL v2.1 (compatible GPL v2).
**BLAAR** should work on **POSIX** systems. GNU/Linux (**Ubuntu/Raspbian**), Darwin (**Mac OSX**) and Bionic (**Android** not usable yet).
12
**BLAAR** is still under development, it is **not stable yet** but feel free to [ask improvement or notify issues](https://git.u-cergy.fr/blaar/blaar/issues).
Arnaud Blanchard's avatar
Arnaud Blanchard committed
13

Arnaud Blanchard's avatar
Arnaud Blanchard committed
14 15 16 17 18 19
Install
=======

* [Mac OSX](INSTALL_OSX.md)
* [Ubuntu/Raspbian](INSTALL_UBUNTU.md)

Arnaud Blanchard's avatar
Arnaud Blanchard committed
20
Modules 
Arnaud Blanchard's avatar
Arnaud Blanchard committed
21
=======
Arnaud Blanchard's avatar
Arnaud Blanchard committed
22

Arnaud Blanchard's avatar
Arnaud Blanchard committed
23
Most of these modules are installed by default (otherwise see below for installation)
Arnaud Blanchard's avatar
Arnaud Blanchard committed
24

25 26 27 28 29
- [bapps](https://git.u-cergy.fr/blaar/bapps.git): Basic Applications for C/C++ with no dependency to manipulate blc_channels (find max, generate oscillators, ...). (no requirement)
- [gnuplot](https://git.u-cergy.fr/blaar/gnuplot.git) Allows to make graphs from data of blc_channels (require gnuplot)
- [gtk](https://git.u-cergy.fr/blaar/gtk.git) Provides a graphical user interface. For now, it displays images. (require gtk)
- [png](https://git.u-cergy.fr/blaar/png.git) Saves and loads png images. (require libpng)
- [sndfile](https://git.u-cergy.fr/blaar/sndfile.git) Reads and writes sound files in with many sound formats (require libsndfile)
Arnaud Blanchard's avatar
Arnaud Blanchard committed
30

Arnaud Blanchard's avatar
Arnaud Blanchard committed
31 32
Specific Linux
--------------
Arnaud Blanchard's avatar
Arnaud Blanchard committed
33

34 35
- [asound](https://git.u-cergy.fr/blaar/asound.git) Acquire or produce sound using Advanced Linux Sound Architecture library (require libasounddev).
- [i_v4l2_camera](https://git.u-cergy.fr/blaar/i_v4l2_camera.git) Acquire images from a camera using Video 4 Linux library (require libv4l2dev).
Arnaud Blanchard's avatar
Arnaud Blanchard committed
36
 
Arnaud Blanchard's avatar
Arnaud Blanchard committed
37 38
Specific Mac OSX
----------------
Arnaud Blanchard's avatar
Arnaud Blanchard committed
39

40 41
- [coreaudio](https://git.u-cergy.fr/blaar/asound.git) Acquire or produce sound using Apple Core Audio Frameworks
- [i_AV_camera](https://git.u-cergy.fr/blaar/i_AV_camera.git)  Acquire images from cameras using Audio Video Foundation 
Arnaud Blanchard's avatar
Arnaud Blanchard committed
42

Arnaud Blanchard's avatar
Arnaud Blanchard committed
43
Specific raspberry pi
Arnaud Blanchard's avatar
Arnaud Blanchard committed
44
---------------------
Arnaud Blanchard's avatar
Arnaud Blanchard committed
45

Arnaud Blanchard's avatar
Arnaud Blanchard committed
46
The Linux of raspberry (raspbian) can be used like ubuntu but it has more functionalities to manage input outputs that why there is a specific package.
Arnaud Blanchard's avatar
Arnaud Blanchard committed
47

48 49
- [raspi](https://git.u-cergy.fr/blaar/raspi.git) 
- [raspinobo](https://git.u-cergy.fr/blaar/raspinobo.git) Specific for the robotic head
Arnaud Blanchard's avatar
Arnaud Blanchard committed
50
 
Arnaud Blanchard's avatar
Arnaud Blanchard committed
51 52 53
In development
--------------

Arnaud Blanchard's avatar
Arnaud Blanchard committed
54
- [blc_webserver](https://git.u-cergy.fr/blaar/blc_webserver.git) Create a web server to monitor **blc_channels** from an internet navogator
Arnaud Blanchard's avatar
Arnaud Blanchard committed
55
- [blpy_channel](https://git.u-cergy.fr/blaar/blibs/blpy_channel.git) Python module to interact with the blc_channel in python
Arnaud Blanchard's avatar
Arnaud Blanchard committed
56
- [reachy](https://git.u-cergy.fr/blaar/reachy)
Arnaud Blanchard's avatar
Arnaud Blanchard committed
57

Arnaud Blanchard's avatar
Arnaud Blanchard committed
58 59 60
Usage 
=====

Arnaud Blanchard's avatar
Arnaud Blanchard committed
61 62
Adding submodules
-----------------
Arnaud Blanchard's avatar
Arnaud Blanchard committed
63

Arnaud Blanchard's avatar
Arnaud Blanchard committed
64
You will only have basic framework. You may add submodules as needed. To add modules use : `git submodule add <module repository>`. Once you have added a module, install it with **`./install.sh <module>|all`** 
Arnaud Blanchard's avatar
Arnaud Blanchard committed
65
**all** install all your cloned modules at once.
Arnaud Blanchard's avatar
Arnaud Blanchard committed
66

Arnaud Blanchard's avatar
Arnaud Blanchard committed
67 68
Example, install 'fftw' package:

Arnaud Blanchard's avatar
Arnaud Blanchard committed
69
    git submodule add https://git.u-cergy.fr/blaar/fftw.git
Arnaud Blanchard's avatar
Arnaud Blanchard committed
70
    ./install.sh fftw
Arnaud Blanchard's avatar
Arnaud Blanchard committed
71

Arnaud Blanchard's avatar
Arnaud Blanchard committed
72 73
You need to have installed the required package. Usually indicated in the README.

Arnaud Blanchard's avatar
Arnaud Blanchard committed
74 75
Update the installation
-----------------------
Arnaud Blanchard's avatar
Arnaud Blanchard committed
76

Arnaud Blanchard's avatar
Arnaud Blanchard committed
77
**`./update_and_install_all.sh`**
Arnaud Blanchard's avatar
Arnaud Blanchard committed
78

Arnaud Blanchard's avatar
Arnaud Blanchard committed
79
This will download the new code and install it for blaar and each submodule
Arnaud Blanchard's avatar
Arnaud Blanchard committed
80

Arnaud Blanchard's avatar
Arnaud Blanchard committed
81 82
Execution of programs 
---------------------
Arnaud Blanchard's avatar
Arnaud Blanchard committed
83

Arnaud Blanchard's avatar
Arnaud Blanchard committed
84 85
**`<binary> [--help] [args ...]`**
The availble blaar binaries are in `bin/` directory. All the binaries accept the **`--help`** option which shows a description of the project and details of possible others options. You can also use scripts which run a combinaison of binaries and other scripts. They are in `scripts/` directory and accept the **`-h`** option which shows a description of the project and details of possible others options.
Arnaud Blanchard's avatar
Arnaud Blanchard committed
86 87 88 89 90 91 92 93 94 95 96

Scriptting

In `scripts/` you have bash scripts which combine applications to produce higher level functionalities. They may require you add optional modules.

Development
===========

blibs - Basic Libraries
-----------------------

Arnaud Blanchard's avatar
Arnaud Blanchard committed
97 98 99 100 101
These libraries are a set of basic tools simplifying programmation.
The programmer keeps full control on the program. You have shortcuts for classical functionalities and very little abstractions.
You can freely mix blibs and low level C/C++ functions.

### blc are basic libraries for C/C++ with no specific requirement
Arnaud Blanchard's avatar
Arnaud Blanchard committed
102

Arnaud Blanchard's avatar
Arnaud Blanchard committed
103 104 105 106
- [blc_core](https://git.u-cergy.fr/blaar/blibs/blc_core/blob/master/README.md) : Generic helpers in C or C++ used by all other blaar projects
- [blc_channel](https://git.u-cergy.fr/blaar/blibs/blc_channel/blob/master/README.md) : Tools to use shared memory in synchrone ( in test) and asynchrone mode 
- [blc_image](https://git.u-cergy.fr/blaar/blibs/blc_image/blob/master/README.md) : Manipulate blc_array as images. Can load and save them as png files  
- [blc_program](https://git.u-cergy.fr/blaar/blibs/blc_program/blob/master/README.md) : Parse arguments and interacts with user in commandline.
Arnaud Blanchard's avatar
Arnaud Blanchard committed
107

Arnaud Blanchard's avatar
Arnaud Blanchard committed
108
To get details about compilation and documentation of the functions, see [developement](DEVELOPMENT.md).
Arnaud Blanchard's avatar
Arnaud Blanchard committed
109

Arnaud Blanchard's avatar
Arnaud Blanchard committed
110
**SEE ALSO**  [sound examples](EXAMPLES.md) | [git FAQ](GIT.md) | [blaar FAQ](FAQ.md)
Arnaud Blanchard's avatar
Arnaud Blanchard committed
111

Arnaud Blanchard's avatar
Arnaud Blanchard committed
112 113 114
Projects
========

Arnaud Blanchard's avatar
Arnaud Blanchard committed
115
- [![logo pinobo](https://perso-etis.ensea.fr/neurocyber/blaar/images/pinobo_logo.png)PINOBO](https://blaar.org/pinobo.html) A robotic head
Arnaud Blanchard's avatar
Arnaud Blanchard committed
116

Arnaud Blanchard's avatar
Arnaud Blanchard committed
117 118 119
Other documentation
===================

Arnaud Blanchard's avatar
Arnaud Blanchard committed
120 121
How to cite
-----------
Arnaud Blanchard's avatar
Arnaud Blanchard committed
122

Arnaud Blanchard's avatar
Arnaud Blanchard committed
123
    @Misc{blaar,
Arnaud Blanchard's avatar
Arnaud Blanchard committed
124 125 126 127
       author =   {Arnaud Blanchard},
       title =    {{BLAAR} : {Basic Libraries And Applications for Robotics}},
       organization = {ETIS Laboratory, Cergy-Pontoise, 95000 FRANCE},
       howpublished = {url{http://blaar.org}},
Arnaud Blanchard's avatar
Arnaud Blanchard committed
128
       year = {2014--2018}
Arnaud Blanchard's avatar
Arnaud Blanchard committed
129 130
    }