Revision 6d4ba740

View differences:

README.md
1
About & License
2
===============
3

  
4
AMiRo-Apps is a collection of applications and configurations for the Autonomous
5
Mini Robot (AMiRo) [1]. It is tightly coupled to the AMiRo-OS and uRtWare
6
projects, which provide a sophisticated operating system (based on ChibiOS) amd
7
a real-time middleware for embedded devices.
8

  
9
Copyright (C) 2018..2020  Thomas Schöpping et al.
10
(a complete list of all authors is given below)
11

  
12
This program is free software: you can redistribute it and/or modify
13
it under the terms of the GNU General Public License as published by
14
the Free Software Foundation, either version 3 of the License, or (at
15
your option) any later version.
16

  
17
This program is distributed in the hope that it will be useful, but
18
WITHOUT ANY WARRANTY; without even the implied warranty of
19
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20
General Public License for more details.
21

  
22
You should have received a copy of the GNU General Public License
23
along with this program.  If not, see <http://www.gnu.org/licenses/>.
24

  
25
This research/work was supported by the Cluster of Excellence
26
Cognitive Interaction Technology 'CITEC' (EXC 277) at Bielefeld
27
University, which is funded by the German Research Foundation (DFG).
28

  
29
Authors:
30

  
31
-   Thomas Schöpping          <tschoepp[at]cit-ec.uni-bielefeld.de>
32

  
33
References:
34

  
35
[1] S. Herbrechtsmeier, T. Korthals, T. Schopping and U. Rückert, "AMiRo: A
36
    modular & customizable open-source mini robot platform," 2016 20th
37
    International Conference on System Theory, Control and Computing (ICSTCC),
38
    Sinaia, 2016, pp. 687-692.
39

  
40
--------------------------------------------------------------------------------
41

  
42
Contents
43
========
44

  
45
1.  Required Software
46
2.  Folder Structure
47

  
48
--------------------------------------------------------------------------------
49

  
50
1 Required Software
51
===================
52

  
53
Since AMiRo-Apps depends on the AMiRo-OS and µRtWare projects, both are included
54
as Git submodules. Use the provided ./setup.sh script to initialize those. When
55
AMiRo-OS is fully configured, there is no additional software required by
56
AMiRo-Apps. For further details about the initialization follow the instructions
57
in the script and refer to the README.md file of AMiRo-OS and µRtWare
58
respectively.
59

  
60

  
61
2 Folder Structure
62
==================
63

  
64
At its root, the AMiRo-Apps project has seven folders to distiquish between the
65
most fundamental parts:
66

  
67
2.1 `apps/`
68
-----------
69

  
70
This folder includes individual applications, which can used by
71
configigurations (see `configurations/`). Apps will usually be implemented
72
as nodes for the middleware and provide according interfaces via some message
73
type(s) (see `messagetypes/`).
74

  
75
2.2 `configurations/`
76
---------------------
77

  
78
Each configuration combines multiple apps and distributes them among any
79
supported modules. Furthermore, configurations may modify parameters for each
80
module individually. Finally, each configuration should come with a Makefile, so
81
a user can just use this to build and flash the whole setup.
82
For better understanding, have a look at this example:
83

  
84
-   module A: using apps 1, 2 and 3 with parameters X and Y.
85
-   module B: using apps 1 and 4 with parameter X.
86
-   module C: using apps 1, 5, 6 and 7 with parameters X and Z.
87
-   Makefile: setup and build everything.
88

  
89
Note that each configuration needs to explicitely support a module and that
90
there can never be an implicit default configuration.
91

  
92
2.3 `doc/`
93
----------
94

  
95
Any documentation related files are located in this directory.
96

  
97
2.4 `messagetypes/`
98
-------------------
99

  
100
Apps shoud take advantage of the middleware and thus implement nodes, which
101
communicate via messages and/or requests. Such messages/requests may have
102
payloads of arbitrary types, which can be defined in this folder.
103

  
104
2.5 `middleware/`
105
-----------------
106

  
107
This folder contains the µRtWare submodule and interface files.
108

  
109
2.6 `os/`
110
---------
111

  
112
This folder contains the AMiRo-OS submodule and interface files.
113

  
114
2.7 `tools/`
115
------------
116

  
117
Helpful tools can be found in this dirctory.
118

  
README.txt
1
AMiRo-Apps is a collection of applications and configurations for the Autonomous
2
Mini Robot (AMiRo) [1]. It is tightly coupled to the AMiRo-OS and uRtWare
3
projects, which provide a sophisticated operating system (based on ChibiOS) amd
4
a real-time middleware for embedded devices.
5

  
6
Copyright (C) 2018..2019  Thomas Schöpping et al.
7
(a complete list of all authors is given below)
8

  
9
This program is free software: you can redistribute it and/or modify
10
it under the terms of the GNU General Public License as published by
11
the Free Software Foundation, either version 3 of the License, or (at
12
your option) any later version.
13

  
14
This program is distributed in the hope that it will be useful, but
15
WITHOUT ANY WARRANTY; without even the implied warranty of
16
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
General Public License for more details.
18

  
19
You should have received a copy of the GNU General Public License
20
along with this program.  If not, see <http://www.gnu.org/licenses/>.
21

  
22
This research/work was supported by the Cluster of Excellence
23
Cognitive Interaction Technology 'CITEC' (EXC 277) at Bielefeld
24
University, which is funded by the German Research Foundation (DFG).
25

  
26
Authors:
27
 - Thomas Schöpping          <tschoepp[at]cit-ec.uni-bielefeld.de>
28
 - Marc Rothmann
29

  
30
References:
31
 [1] S. Herbrechtsmeier, T. Korthals, T. Schopping and U. Rückert, "AMiRo: A
32
     modular & customizable open-source mini robot platform," 2016 20th
33
     International Conference on System Theory, Control and Computing (ICSTCC),
34
     Sinaia, 2016, pp. 687-692.
35

  
36

  
37

  
38
################################################################################
39
#                                                                              #
40
#        RRRRRRRR   EEEEEEEE     AAA     DDDDDDDD   MM     MM  EEEEEEEE        #
41
#        RR     RR  EE          AA AA    DD     DD  MMM   MMM  EE              #
42
#        RR     RR  EE         AA   AA   DD     DD  MMMM MMMM  EE              #
43
#        RRRRRRRR   EEEEEE    AA     AA  DD     DD  MM MMM MM  EEEEEE          #
44
#        RR   RR    EE        AAAAAAAAA  DD     DD  MM     MM  EE              #
45
#        RR    RR   EE        AA     AA  DD     DD  MM     MM  EE              #
46
#        RR     RR  EEEEEEEE  AA     AA  DDDDDDDD   MM     MM  EEEEEEEE        #
47
#                                                                              #
48
################################################################################
49

  
50
This file will help you to setup all required software on your system, compile
51
the source code, and flash it to the AMiRo modules.
52

  
53
================================================================================
54

  
55
CONTENTS:
56

  
57
  1  Required software
58
  2  Folder structure
59

  
60
================================================================================
61

  
62

  
63

  
64
1 - REQUIRED SOFTWARE
65
---------------------
66

  
67
Since AMiRo-Apps depends on the AMiRo-OS and uRtWare projects, both are included
68
as Git submodules. Use the provided ./setup.sh script to initialize those. When
69
AMiRo-OS is fully configured, there is no additional software required by
70
AMiRo-Apps. For further details about the initialization follow the instructions
71
in the script and refer to the README.txt file of AMiRo-OS and uRtWare
72
respectively.
73

  
74

  
75

  
76
2 - FOLDER STRUCTURE
77
--------------------
78

  
79
At its root, the AMiRo-Apps projects has six folders to distiquish between the
80
most fundamental parts:
81
.
82
├── apps
83
│     This folder includes individual applications, which can used by
84
│     configigurations. Apps will usually be implemented as nodes for the
85
│     middleware and provide acording interfaces via some message type(s).
86
├── configurations
87
│     Each configuration combines multiple apps and distributes them among any
88
│     supported modules. Furthermore, configurations may modify parameters for
89
│     each module individually. Finally, each configuration should come with a
90
│     makefile, so a user can just use this to build and flash the whole setup.
91
│     For better understanding, have a look at this example:
92
│       - module A: using apps 1, 2 and 3 with parameters X and Y.
93
│       - module B: using apps 1 and 4 with parameter X.
94
│       - module C: using apps 1, 5, 6 and 7 with parameters X and Z.
95
│       - Makefile: set and build everything.
96
│     Note that each configuration needs to explicitely support a module and
97
│     that there can never be an implicit default configuration.
98
├── messagetypes
99
│     Apps shoud take advantage of the middleware and thus implement nodes,
100
│     which communicate via messages. Such messages may have payloads of
101
│     arbitrary types, which can be defined in this folder.
102
├── middleware
103
│     This folder contains the µRtWare submodule and interface files.
104
├── os
105
│     This folder contains the AMiRo-OS submodule and interface files.
106
└── tools
107
      Usable tools can be found in this dirctory.
108

  
109
================================================================================
110

  
apps/HelloWorld/HelloWorld.mk
1 1
################################################################################
2 2
# AMiRo-Apps is a collection of applications for the Autonomous Mini Robot     #
3 3
# (AMiRo) platform.                                                            #
4
# Copyright (C) 2018..2019  Thomas Schöpping et al.                            #
4
# Copyright (C) 2018..2020  Thomas Schöpping et al.                            #
5 5
#                                                                              #
6 6
# This program is free software: you can redistribute it and/or modify         #
7 7
# it under the terms of the GNU General Public License as published by         #
......
26 26
# absolue path to this directory
27 27
HelloWorldAPP_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))
28 28

  
29
# middleware selection
30
ifeq ($(CONFIG_MIDDLEWARE),)
31
  CONFIG_MIDDLEWARE := "µRtWare"
32
else ifneq ($(CONFIG_MIDDLEWARE),"µRtWare")
33
  $(error incompatible middleware selected: $(CONFIG_MIDDLEWARE))
34
endif
35

  
29 36
# include path
30 37
HelloWorldAPP_INC = $(HelloWorldAPP_DIR)
31 38

  
apps/HelloWorld/helloworld.c
1 1
/*
2 2
AMiRo-Apps is a collection of applications for the Autonomous Mini Robot (AMiRo) platform.
3
Copyright (C) 2018..2019  Thomas Schöpping et al.
3
Copyright (C) 2018..2020  Thomas Schöpping et al.
4 4

  
5 5
This program is free software: you can redistribute it and/or modify
6 6
it under the terms of the GNU General Public License as published by
......
17 17
*/
18 18

  
19 19
#include <helloworld.h>
20

  
21
#pragma message "Hello World! (.c)"
apps/HelloWorld/helloworld.h
1 1
/*
2 2
AMiRo-Apps is a collection of applications for the Autonomous Mini Robot (AMiRo) platform.
3
Copyright (C) 2018..2019  Thomas Schöpping et al.
3
Copyright (C) 2018..2020  Thomas Schöpping et al.
4 4

  
5 5
This program is free software: you can redistribute it and/or modify
6 6
it under the terms of the GNU General Public License as published by
......
16 16
along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 17
*/
18 18

  
19
#ifndef _HELLOWORLD_H_
20
#define _HELLOWORLD_H_
19
#ifndef HELLOWORLD_H
20
#define HELLOWORLD_H
21 21

  
22
#endif /* _HELLOWORLD_H_ */
22
#pragma message "Hello World! (.h)"
23

  
24
#endif /* HELLOWORLD_H */
configurations/HelloWorld/Makefile
1 1
################################################################################
2 2
# AMiRo-Apps is a collection of applications for the Autonomous Mini Robot     #
3 3
# (AMiRo) platform.                                                            #
4
# Copyright (C) 2018..2019  Thomas Schöpping et al.                            #
4
# Copyright (C) 2018..2020  Thomas Schöpping et al.                            #
5 5
#                                                                              #
6 6
# This program is free software: you can redistribute it and/or modify         #
7 7
# it under the terms of the GNU General Public License as published by         #
......
26 26
# absolue path to this directory
27 27
HelloWorldCONF_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))
28 28

  
29
# list of available modules
30
HelloWorldCONF_MODULES = $(patsubst $(HelloWorldCONF_DIR)/modules/%/,%,$(sort $(dir $(wildcard $(HelloWorldCONF_DIR)/modules/*/*))))
29
# list of available/supported modules
30
HelloWorldCONF_MODULES_DIR = $(HelloWorldCONF_DIR)/modules/
31
HelloWorldCONF_MODULES = $(patsubst $(HelloWorldCONF_MODULES_DIR)%/,%,$(sort $(dir $(wildcard $(HelloWorldCONF_MODULES_DIR)*/*))))
31 32

  
32
CLEANTRGS = $(HelloWorldCONF_MODULES:%=clean_%)
33
FLASHTRGS = $(HelloWorldCONF_MODULES:%=flash_%)
33
HelloWorldCONF_CLEANTRGS = $(HelloWorldCONF_MODULES:%=clean_%)
34
HelloWorldCONF_FLASHTRGS = $(HelloWorldCONF_MODULES:%=flash_%)
34 35

  
35
.PHONY: all $(MODULES) $(FLASHTRGS) clean $(CLEANTRGS)
36
.PHONY: all $(HelloWorldCONF_MODULES) $(HelloWorldCONF_FLASHTRGS) clean $(HelloWorldCONF_CLEANTRGS)
36 37

  
37 38
all: $(HelloWorldCONF_MODULES)
39

  
38 40
$(HelloWorldCONF_MODULES):
39
	$(MAKE) -C $(HelloWorldCONF_DIR)/modules/$@
41
	$(MAKE) -C $(HelloWorldCONF_MODULES_DIR)/$@
40 42

  
41
$(FLASHTRGS):
42
	$(MAKE) -C $(HelloWorldCONF_DIR)/modules/$(@:flash_%=%) flash
43
$(HelloWorldCONF_FLASHTRGS):
44
	$(MAKE) -C $(HelloWorldCONF_MODULES_DIR)/$(@:flash_%=%) flash
43 45

  
44
clean: $(CLEANTRGS)
45
$(CLEANTRGS):
46
	$(MAKE) -C $(HelloWorldCONF_DIR)/modules/$(@:clean_%=%) clean
46
clean: $(HelloWorldCONF_CLEANTRGS)
47
$(HelloWorldCONF_CLEANTRGS):
48
	$(MAKE) -C $(HelloWorldCONF_MODULES_DIR)/$(@:clean_%=%) clean
configurations/HelloWorld/modules/DiWheelDrive_1-1/Makefile
1
################################################################################
2
# AMiRo-Apps is a collection of applications for the Autonomous Mini Robot     #
3
# (AMiRo) platform.                                                            #
4
# Copyright (C) 2018..2019  Thomas Schöpping et al.                            #
5
#                                                                              #
6
# This program is free software: you can redistribute it and/or modify         #
7
# it under the terms of the GNU General Public License as published by         #
8
# the Free Software Foundation, either version 3 of the License, or            #
9
# (at your option) any later version.                                          #
10
#                                                                              #
11
# This program is distributed in the hope that it will be useful,              #
12
# but WITHOUT ANY WARRANTY; without even the implied warranty of               #
13
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                #
14
# GNU General Public License for more details.                                 #
15
#                                                                              #
16
# You should have received a copy of the GNU General Public License            #
17
# along with this program.  If not, see <http://www.gnu.org/licenses/>.        #
18
#                                                                              #
19
# This research/work was supported by the Cluster of Excellence Cognitive      #
20
# Interaction Technology 'CITEC' (EXC 277) at Bielefeld University, which is   #
21
# funded by the German Research Foundation (DFG).                              #
22
################################################################################
23

  
24

  
25

  
26
# absolue path to this directory
27
APPCONFIG_MODULE_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))
28

  
29
# environment setup
30
include $(APPCONFIG_MODULE_DIR)/../modules.mk
31

  
32
# include apps
33
include $(APPS_DIR)/HelloWorld/HelloWorld.mk
34

  
35
# include directories for configurations
36
APPSINC += $(APPCONFIG_MODULE_DIR) \
37
           $(HelloWorldAPP_INC)
38

  
39
# C sources
40
APPSCSRC += $(HelloWorldAPP_CSRC)
41

  
42
# C++ sources
43
APPSCPPSRC += $(HelloWorldAPP_CPPSRC)
44

  
45
# call DiWHeelDrive Makefile module from OS
46
all:
47
	$(MAKE) -C $(OS_DIR)/AMiRo-OS/modules/DiWheelDrive_1-1/
48

  
49
clean:
50
	$(MAKE) -C $(OS_DIR)/AMiRo-OS/modules/DiWheelDrive_1-1/ clean
51

  
52
flash:
53
	$(MAKE) -C $(OS_DIR)/AMiRo-OS/modules/DiWheelDrive_1-1/ flash
54

  
configurations/HelloWorld/modules/DiWheelDrive_1-1/mainincludes.hpp
1
/*
2
AMiRo-Apps is a collection of applications for the Autonomous Mini Robot (AMiRo) platform.
3
Copyright (C) 2018..2019  Thomas Schöpping et al.
4

  
5
This program is free software: you can redistribute it and/or modify
6
it under the terms of the GNU General Public License as published by
7
the Free Software Foundation, either version 3 of the License, or
8
(at your option) any later version.
9

  
10
This program is distributed in the hope that it will be useful,
11
but WITHOUT ANY WARRANTY; without even the implied warranty of
12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
GNU General Public License for more details.
14

  
15
You should have received a copy of the GNU General Public License
16
along with this program.  If not, see <http://www.gnu.org/licenses/>.
17
*/
18

  
19
#ifndef _MAININCLUDES_HPP_
20
#define _MAININCLUDES_HPP_
21

  
22
#include <urtware.h>
23

  
24
#endif /* _MAININCLUDES_HPP_ */
configurations/HelloWorld/modules/DiWheelDrive_1-1/osconf.h
1
/*
2
AMiRo-Apps is a collection of applications for the Autonomous Mini Robot (AMiRo) platform.
3
Copyright (C) 2018..2019  Thomas Schöpping et al.
4

  
5
This program is free software: you can redistribute it and/or modify
6
it under the terms of the GNU General Public License as published by
7
the Free Software Foundation, either version 3 of the License, or
8
(at your option) any later version.
9

  
10
This program is distributed in the hope that it will be useful,
11
but WITHOUT ANY WARRANTY; without even the implied warranty of
12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
GNU General Public License for more details.
14

  
15
You should have received a copy of the GNU General Public License
16
along with this program.  If not, see <http://www.gnu.org/licenses/>.
17
*/
18

  
19
#ifndef _OSCONF_H_
20
#define _OSCONF_H_
21

  
22
#include <HelloWorld_osconf.h>
23

  
24
#endif /* _OSCONF_H_ */
configurations/HelloWorld/modules/DiWheelDrive_1-1/urtwareconf.h
1
/*
2
AMiRo-Apps is a collection of applications for the Autonomous Mini Robot (AMiRo) platform.
3
Copyright (C) 2018..2019  Thomas Schöpping et al.
4

  
5
This program is free software: you can redistribute it and/or modify
6
it under the terms of the GNU General Public License as published by
7
the Free Software Foundation, either version 3 of the License, or
8
(at your option) any later version.
9

  
10
This program is distributed in the hope that it will be useful,
11
but WITHOUT ANY WARRANTY; without even the implied warranty of
12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
GNU General Public License for more details.
14