-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREADME
197 lines (148 loc) · 8.52 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
// librdc - A ROBOTICS SOFTWARE STANDARDS LIBRARY
// HER MAJESTYTHE QUEEN IN RIGHT OF CANADA AS REPRESENTED BY THE MINISTER
// OF NATIONAL DEFENCE, CANADA, 2007
// Developed by: Erickson, D. (DRDC Suffield)
// This library is free software;. You can redistribute it and/or modify
// it under the terms and conditions of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// Version 2.1 of the License, or (at your option) any later version.
// This library is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA
// Licence is located in license.txt in libdrdc source root
/*
* Description : libdrdc - README
* Author : Tie Peng
* Purpose : to introduce the software library
* Revision : $Id: README,v 1.6 2008/10/20 14:38:01 cvsuser Exp $
*/
0. INTRODUCTION
1. DOCUMENTATION
2. RATIONALE
3. SOFTWARE DEPENDENCIES
4. COMPILE INSTRUCTIONS
0. INTRODUCTION
Welcome to libdrdc interoperable software standards library!
Welcome to the beginning of the libdrdc library. There was positive feedback
at the IROS 2008 Nice presentation. I hope you find this library useful.
If it does not have all you want, consider simply adding that functionality
to our code base. We are quite happy to add your name to the list of
contributors and it would be more beneficial than writing your own from
scratch and the legacy of that code ends up like so many theses.
The idea here is to make a library, a single data standard library, that
contains all <I hope> the needed transformations for vector and matrix data
like pose, position and orientation, and useful units of measure conversions
so that scientists and engineers need never make a simple conversion error
with dire consequences again. This library is open source so people can
make sure it works and hopefully one day companies making data source products
like sensors will use the standard conventions as default for their work,
thereby making system integration easier for everyone. It must remain apart from
middleware and commercial software so it can stand the test of time. It is a lofty goal.
If you are a professor, and want your students to contribute to a real
project that operates on real robotic machines, then I encourage you to
consider working on this code base. There are lots of functions that need
error checking, individual test cases, and there are ideas for expansion
that were way beyond the original scope. It is a realistic project with real world
results. So long as what is written can be stripped down to a simple and fast C function
then it makes sense to consider adding it.
This library contains the functionality and data representation
conventions for global/local pose, position, orientation,
manipulator link parameters, global time, homogeneous transforms
using BLAS, unified time standard and epoch conversions,
fixed-point mathematics, and exception handling compartmentalized
into a single library and development project. The libdrdc
library is a configurable C / C++ / Object Oriented C
library providing a native set of data representations
for units of measure and local and global coordinate reference
frames. The application binary interface (ABI) is C++-wrapped C
functions designed for speed and size across implementation
scales. The library uses the automatically-tuned linear algebra
suite (ATLAS) [Whaley01Automated] for performance. The library
has been tested on Windows, Unix, GNU/Linux, and RTEMS operating
systems using the PowerPC, Intel x86 series, and ARM processors
in 16-, 32-, and 64-bit CPU architectures. The library goal is
to free researchers to focus on data outcomes rather than on
data collection handling. Source code and documentation are
available from the Defence Research & Development (DRDC)
Suffield AISS website.
http://www.aiss.drdc-rddc.gc.ca/libdrdc/
1. DOCUMENTATION
Documentation is auto-generated by the compile process using the
make dox
command. This generates the HTML and LATEX files in the doc/ folder. Follow the
directions under COMPILE INSTRUCTIONS to configure the documentation. You can view
the current documentation in a .pdf file (refman.pdf) or as a web page (html/index.html).
2. RATIONALE
This software outlines the libdrdc standards for nomenclature, definitions, units of
measure, and representations for use between systems, subsystems, devices, nodes, and
processes. The aim of this document is to reduce ambiguity by establishing common
rules for the interpretation of information. The adoption of these standards within the
work by DRDC and from contractors who assist the program will increase the
efficiency of implementation and increase the interoperability of projects and
components. It is recommended that Autonomous Intelligent Systems (AIS) adopt
these standards for all future work.
The importance of the recommended standards was reinforced during the Autonomous
Land Systems (ALS) program development. Independent software development
employed various standards for units of measure, representations, and definition lead to
difficiulties. Some software components adopted unique representations, or used
Imperial units of measure. This lead to data confusion in a number of cases between
data sources and data sinks, making the entire effort much more difficult than would
have been the case had a priori standards been in place.
The reasons for the selection of the standards reported in this publication are manifold:
some are due to common convention, some are chosen in order to be compliant with
Joint Architecture for Unmanned Systems (JAUS) representations, and a few are
arbitrary. However, whatever their origin, it is important to point out that the adoption
of comprehensive set of standards is vital in order to reap the benefit of common
representations. Data exchange without common semantics leads to confusion and
inefficiency, and is unacceptable in a research program that relies on a considerable
amount of systems integration and interoperability. All of the conventions outlined are
important to provide context to the data that is received from other systems,
subsystems, devices, nodes, and processes.
The standards outlined are intended for use at the level of interface between systems,
subsystems, devices, nodes, and processes. It is obvious that some devices by their
design do not inherently adopt these conventions (e.g. a GPS that represents angle as
degrees as opposed to radians ) and so the absolute adoption of these standards is not
practical. Any system, subsystem, device, node, or process may use its own internal
representation. When that system, subsystem, device, node, or process attempts to
communicate outside its internal representation, then it is the responsibility of the
developer to convert the representation to the proposed standards. As long as all
systems, subsystems, devices, nodes, and processes hold to this standard at the
interface, then interoperability will be achieved.
3. SOFTWARE DEPENDENCIES
The following software is required to use all the functionality:
1. Graphviz - http://www.graphviz.org/Download.php for doxygen graph making.
2. ATLAS - http://math-atlas.sourceforge.net/ for matrix and vector linear algebra. ATLAS can be substituted by adding F2_CBLAS to the library.
3. Doxygen - 1.5.6 for code documentation
4. Autoconf
5. Automake
6. libtool
7. GCC
8. libm, libc
FOR RTEMS
9. RTEMS, supercore and build tools from http://www.rtems.org/
4. COMPILE INSTRUCTIONS
Please follow the instructions below to configure and compile
the software for the chosen target.
0. Run command in shell (BASH)
source bootstrap
1. Set up environment variables
(optional) export TARGET_OS=gnu|rtems - default will be gnu for unix systems
(optional) export DRDC_PREFIX=specify a library installation directory - default will be /usr/local/ for unix systems
for RTEMS: export RTEMS_MAKEFILE_PATH
e.g. export RTEMS_MAKEFILE_PATH=/usr/local/rtems/rtems4.7.1/powerpc-rtems4.7.1/ss555
2. Configure the compile script
Linux:
./configure --enable-tests
RTEMS:
./configure --enable-tests --target=powerpc-rtems4.7
3. Compile
make
4. make check
make check - all tests should pass AND
./tests/wrapper/wrapper_tests
5. make install