mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-26 16:30:07 +08:00
This commit was generated by cvs2svn to compensate for changes in r2,
which included commits to RCS files with non-trunk default branches.
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
Pascal Brisset <pascal_dot_brisset_at_free_dot_fr>
|
||||
Antoine Drouin <antoine_dot_drouin_at_free_dot_fr>
|
||||
@@ -0,0 +1,15 @@
|
||||
paparazzi.pl
|
||||
CpGui et CpSeesionManager n'ont pas les meme variables !!!
|
||||
|
||||
|
||||
|
||||
|
||||
receive
|
||||
ne cree pas son repertoire de log et meurt
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
visu3D
|
||||
ne trouve pas son fichier d'aide. a mettre dans conf ??
|
||||
@@ -0,0 +1,339 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
Appendix: How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) 19yy <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program 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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) 19yy name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
||||
@@ -0,0 +1,119 @@
|
||||
# Paparazzi main $Id$
|
||||
# Copyright (C) 2004 Pascal Brisset Antoine Drouin
|
||||
#
|
||||
# This file is part of paparazzi.
|
||||
#
|
||||
# paparazzi is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# paparazzi 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 General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with paparazzi; see the file COPYING. If not, write to
|
||||
# the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
# Boston, MA 02111-1307, USA.
|
||||
|
||||
include conf/Makefile.local
|
||||
|
||||
LIB=sw/lib
|
||||
AIRBORNE=sw/airborne
|
||||
CONFIGURATOR=sw/configurator
|
||||
FBW=$(AIRBORNE)/fly_by_wire
|
||||
AP=$(AIRBORNE)/autopilot
|
||||
COCKPIT=sw/ground_segment/cockpit
|
||||
TMTC=sw/ground_segment/tmtc
|
||||
WIND=sw/ground_segment/wind
|
||||
VISU3D=sw/ground_segment/visu3d
|
||||
LOGALIZER=sw/logalizer
|
||||
SIMULATOR=sw/simulator
|
||||
MAKE=make
|
||||
|
||||
static : lib tools configurator cockpit tmtc visu3d logalizer sim_static wind
|
||||
|
||||
configure : configurator
|
||||
PAPARAZZI_DIR=`pwd` $(CONFIGURATOR)/configurator
|
||||
|
||||
lib:
|
||||
cd $(LIB)/ocaml; $(MAKE)
|
||||
cd $(LIB)/perl; $(MAKE)
|
||||
|
||||
tools:
|
||||
cd $(TOOLS); make
|
||||
|
||||
logalizer: lib
|
||||
cd $(LOGALIZER); $(MAKE)
|
||||
|
||||
configurator: lib
|
||||
cd $(CONFIGURATOR); $(MAKE)
|
||||
|
||||
sim_static :
|
||||
cd $(SIMULATOR); $(MAKE)
|
||||
|
||||
sim_sitl :
|
||||
cd $(SIMULATOR); $(MAKE) sim_sitl
|
||||
|
||||
fbw fly_by_wire:
|
||||
cd $(FBW); $(MAKE) all
|
||||
|
||||
ap autopilot:
|
||||
cd $(AP); $(MAKE) all
|
||||
|
||||
upload_fbw: fbw
|
||||
cd $(FBW); $(MAKE) upload
|
||||
|
||||
upload_ap: ap
|
||||
cd $(AP); $(MAKE) upload
|
||||
|
||||
erase_fbw:
|
||||
cd $(FBW); $(MAKE) erase
|
||||
|
||||
erase_ap:
|
||||
cd $(AP); $(MAKE) erase
|
||||
|
||||
airborne: fbw ap
|
||||
|
||||
cockpit: lib
|
||||
cd $(COCKPIT); $(MAKE) all
|
||||
|
||||
tmtc: lib
|
||||
cd $(TMTC); $(MAKE) all
|
||||
|
||||
visu3d: lib
|
||||
cd $(VISU3D); $(MAKE)
|
||||
wind:
|
||||
cd $(WIND); $(MAKE)
|
||||
|
||||
receive: tmtc
|
||||
$(TMTC)/receive
|
||||
|
||||
static_h :
|
||||
make -f Makefile.gen
|
||||
|
||||
ac_h :
|
||||
$(TOOLS)/gen_aircraft.out $(AIRCRAFT)
|
||||
|
||||
ac: static_h ac_h ap fbw sim_sitl
|
||||
|
||||
clean_ac :
|
||||
rm -fr $(PAPARAZZI_HOME)/var/$(AIRCRAFT)
|
||||
|
||||
run_sitl :
|
||||
$(PAPARAZZI_HOME)/var/$(AIRCRAFT)/sim/simsitl.out
|
||||
|
||||
t1: ac
|
||||
|
||||
install : static t1
|
||||
./Makefile.pl -install -destdir $(DESTDIR)
|
||||
|
||||
uninstall :
|
||||
./Makefile.pl -uninstall -destdir $(DESTDIR)
|
||||
|
||||
clean:
|
||||
find . -name Makefile -mindepth 2 -exec sh -c '$(MAKE) -C `dirname {}` $@' \;
|
||||
find . -name '*~' -exec rm -f {} \;
|
||||
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
# Paparazzi main $Id$
|
||||
# Copyright (C) 2004 Pascal Brisset Antoine Drouin
|
||||
#
|
||||
# This file is part of paparazzi.
|
||||
#
|
||||
# paparazzi is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# paparazzi 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 General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with paparazzi; see the file COPYING. If not, write to
|
||||
# the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
# Boston, MA 02111-1307, USA.
|
||||
|
||||
# Preprocessing of XML configuration files
|
||||
|
||||
include conf/Makefile.local
|
||||
|
||||
CONF=$(PAPARAZZI_HOME)/conf
|
||||
CONF_XML=$(CONF)/conf.xml
|
||||
ACINCLUDE = $(PAPARAZZI_HOME)/var/$(AIRCRAFT)
|
||||
AIRFRAME_H=$(ACINCLUDE)/airframe.h
|
||||
RADIO_H=$(ACINCLUDE)/radio.h
|
||||
FLIGHT_PLAN_H=$(ACINCLUDE)/flight_plan.h
|
||||
INFLIGHT_CALIB_H=$(ACINCLUDE)/inflight_calib.h
|
||||
|
||||
all: $(AIRFRAME_H) $(RADIO_H) $(FLIGHT_PLAN_H) $(INFLIGHT_CALIB_H)
|
||||
echo $(AIRFRAME_H) $(CONF)/$(AIRFRAME)
|
||||
|
||||
$(AIRFRAME_H) : $(CONF)/$(AIRFRAME) $(CONF_XML)
|
||||
$(TOOLS)/gen_airframe.out $(AIRCRAFT) $< > /tmp/airframe.h
|
||||
mv /tmp/airframe.h $@
|
||||
|
||||
$(RADIO_H) : $(CONF)/$(RADIO) $(CONF_XML)
|
||||
$(TOOLS)/gen_radio.out $< > /tmp/radio.h
|
||||
mv /tmp/radio.h $@
|
||||
|
||||
$(FLIGHT_PLAN_H) : $(CONF)/$(FLIGHT_PLAN) $(CONF_XML)
|
||||
$(TOOLS)/gen_flight_plan.out $< > /tmp/fp.h
|
||||
mv /tmp/fp.h $@
|
||||
|
||||
$(INFLIGHT_CALIB_H) : $(CONF)/$(FLIGHT_PLAN) $(CONF_XML)
|
||||
$(TOOLS)/gen_calib.out $< > /tmp/c.h
|
||||
mv /tmp/c.h $@
|
||||
|
||||
clean :
|
||||
rm -f $(ACINCLUDE)/*.h
|
||||
@@ -0,0 +1,47 @@
|
||||
# Paparazzi main $Id$
|
||||
# Copyright (C) 2004 Pascal Brisset Antoine Drouin
|
||||
#
|
||||
# This file is part of paparazzi.
|
||||
#
|
||||
# paparazzi is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# paparazzi 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 General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with paparazzi; see the file COPYING. If not, write to
|
||||
# the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
# Boston, MA 02111-1307, USA.
|
||||
|
||||
# Preprocessing of XML configuration files
|
||||
|
||||
include conf/Makefile.local
|
||||
|
||||
CONF=conf
|
||||
XML_GET=sw/lib/ocaml/xml_get.out
|
||||
|
||||
|
||||
STATICINCLUDE =$(PAPARAZZI_HOME)/var/include
|
||||
MESSAGES_H=$(STATICINCLUDE)/messages.h
|
||||
UBX_PROTOCOL_H=$(STATICINCLUDE)/ubx_protocol.h
|
||||
MESSAGES_XML = $(CONF)/messages.xml
|
||||
UBX_XML = $(CONF)/ubx.xml
|
||||
|
||||
|
||||
static: $(MESSAGES_H) $(UBX_PROTOCOL_H)
|
||||
|
||||
$(MESSAGES_H) : $(MESSAGES_XML) $(CONF_XML)
|
||||
$(TOOLS)/gen_messages.out $< telemetry_ap > /tmp/messages.h
|
||||
mv /tmp/messages.h $@
|
||||
|
||||
$(UBX_PROTOCOL_H) : $(UBX_XML) $(CONF_XML)
|
||||
$(TOOLS)/gen_ubx.out $< > /tmp/ubx.h
|
||||
mv /tmp/ubx.h $@
|
||||
|
||||
clean :
|
||||
rm -f $(H_OF_XML)
|
||||
Executable
+72
@@ -0,0 +1,72 @@
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
use strict;
|
||||
use File::Basename;
|
||||
use Getopt::Long;
|
||||
use Data::Dumper;
|
||||
use XML::DOM;
|
||||
|
||||
my $destdir="/usr";
|
||||
my $install = undef;
|
||||
my $uninstall = undef;
|
||||
my @sections;
|
||||
|
||||
GetOptions("install" => \$install,
|
||||
"uninstall" => \$uninstall,
|
||||
"destdir=s" => \$destdir);
|
||||
|
||||
read_xml("./conf/install.xml");
|
||||
|
||||
foreach my $section (@sections) {
|
||||
my ($inst_dir, $files) = @{$section};
|
||||
do_install($inst_dir, $files) if ($install);
|
||||
do_uninstall($inst_dir, $files) if ($uninstall);
|
||||
}
|
||||
|
||||
sub do_install {
|
||||
my ($dest_dir, $files) = @_;
|
||||
`install -d $dest_dir`;# or warn "creation of directory $dest_dir failed";
|
||||
foreach my $file (@{$files}) {
|
||||
my ($path, $new_name) = @{$file};
|
||||
print "installing file $path in $dest_dir ".($new_name?"as $new_name":"")."\n";
|
||||
my $cmd = "install $path $dest_dir".($new_name?"/$new_name":"");
|
||||
`$cmd`;# or warn "intall of $path failed";
|
||||
}
|
||||
}
|
||||
|
||||
sub do_uninstall {
|
||||
my ($dest_dir, $files) = @_;
|
||||
foreach my $file (@{$files}) {
|
||||
my ($path, $new_name) = @{$file};
|
||||
my $to_be_removed = $dest_dir."/".($new_name?"$new_name":basename($path));
|
||||
print "removing $to_be_removed\n";
|
||||
`rm -f $to_be_removed`;
|
||||
}
|
||||
}
|
||||
|
||||
sub read_xml {
|
||||
my ($filename) = @_;
|
||||
my $parser = XML::DOM::Parser->new();
|
||||
my $doc = $parser->parsefile($filename);
|
||||
my $cp = $doc->getElementsByTagName("install")->[0];
|
||||
my $sections = $cp->getElementsByTagName("section");
|
||||
foreach my $section (@{$sections}) {
|
||||
my $section_name = $section->getAttribute('name');
|
||||
my $dest_loc = $destdir."/".$section->getAttribute('dest');
|
||||
my $files = $section->getElementsByTagName("file");
|
||||
my $file_a = [];
|
||||
foreach my $file (@{$files}) {
|
||||
push @{$file_a}, [$file->getAttribute('name'), $file->getAttribute('new_name')];
|
||||
}
|
||||
my $dirs = $section->getElementsByTagName("directory");
|
||||
foreach my $dir (@{$dirs}) {
|
||||
my $dirname=$dir->getAttribute('name');
|
||||
opendir(DIR,$dirname);
|
||||
my @dir_files = grep { -f "$dirname/$_" } readdir(DIR);
|
||||
map { s#^(.*)#$dirname/$1# } @dir_files;
|
||||
closedir(DIR);
|
||||
push @{$file_a}, @dir_files;
|
||||
}
|
||||
push @sections, [$dest_loc, $file_a];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,208 @@
|
||||
# Paparazzi $Id$
|
||||
# Copyright (C) 2003 Pascal Brisset Antoine Drouin
|
||||
#
|
||||
# This file is part of paparazzi.
|
||||
#
|
||||
# paparazzi is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# paparazzi 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 General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with paparazzi; see the file COPYING. If not, write to
|
||||
# the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
# Boston, MA 02111-1307, USA.
|
||||
#
|
||||
|
||||
Intro
|
||||
-----
|
||||
|
||||
Paparazzi is an attempt to develop a cheap fixed wing UAV (Unmanned Air
|
||||
Vehicle). As of today we have successfully flown autonomously several small
|
||||
electro powered fixed wing aircraft: the Twinstar and the Microjet of
|
||||
Multiplex.
|
||||
|
||||
Up to date informations are available from the website
|
||||
|
||||
www.nongnu.org/paparazzi
|
||||
|
||||
and from the mailing list.
|
||||
|
||||
Directories description:
|
||||
-----------------------
|
||||
|
||||
conf: the configuration directory (airframe, radio, ... descriptions). YOU HAVE
|
||||
TO EDIT THERE the Makefile.local file
|
||||
|
||||
data: where to put read-only data (e.g. maps and terrain files)
|
||||
|
||||
doc: the paparazzi documentation.
|
||||
|
||||
hw: hardware definitions (electronic schemas, PCBs, ...)
|
||||
|
||||
sw: software (onboard, ground station, simulation, ...)
|
||||
|
||||
|
||||
Required Software
|
||||
-----------------
|
||||
- AVR micro-controller development environnment (avr-gcc, uisp, avr-libc)
|
||||
- OCaml (ocaml.org), xml-light library (http://tech.motion-twin.com/xmllight)
|
||||
- gcc, GTK2, Glib2, libgnomecanvas, libxml2
|
||||
- ...
|
||||
|
||||
For Debian users: Required packages are available at
|
||||
http://www.rechercher.enac.fr/paparazzi/debian
|
||||
Installation of the meta-package "paparazzi" will install everything
|
||||
needed (if something is missing, please ask)
|
||||
|
||||
Compilation
|
||||
-----------
|
||||
|
||||
0) Configuration. Default PAPARAZZI_HOME is $(HOME)/PAPARAZZI. You
|
||||
can change it by setting an environment variable
|
||||
|
||||
1) "make" in the top directory
|
||||
|
||||
2) Set the PAPARAZZI_SRC environment variable to the top directory
|
||||
(default is /usr/share/paparazzi)
|
||||
|
||||
2) "make init" creates a directory $PAPARAZZI_HOME for your own files.
|
||||
Configure there the conf/conf.xml
|
||||
|
||||
3) "make ac AIRCRAFT=<name>" compiles everything for the specified
|
||||
aircraft (default is twinstar2 for which conf files are provided) and
|
||||
set the files in $PAPARAZZI_HOME/var/<name>
|
||||
|
||||
5) "make clean_ac AIRCRAFT=<name>" cleans files for the specified aircraft.
|
||||
|
||||
6) $PAPARAZZI_HOME/var/<name>/sim/simsitl.out runs the soft simulator.
|
||||
|
||||
Uploading of the embedded software
|
||||
----------------------------------
|
||||
|
||||
1) Power the flight controller board. Plug the pc-link to the board
|
||||
and to the host parallel port.
|
||||
|
||||
2) Upload with
|
||||
|
||||
make upload_fbw # Fly by wire
|
||||
make upload_ap # Autopilot
|
||||
|
||||
Important notes:
|
||||
- The pclink must be switched accordingly with the target
|
||||
- The "fly by wire" controller cannot be uploaded when the
|
||||
"autopilot" controller is running. They cannot independently be
|
||||
modified; then an upload of the fly by wire usually requires
|
||||
|
||||
make erase_ap
|
||||
make upload_fbw
|
||||
make upload_ap
|
||||
|
||||
|
||||
Running the ground segment monitoring
|
||||
-------------------------------------
|
||||
1) The transmitter must be plugged to the flight controller and both must
|
||||
be powered.
|
||||
|
||||
2) The ground modem must be powered and plugged to the antenna and
|
||||
to the host (trough a serial port)
|
||||
|
||||
3) Launch the supervision
|
||||
|
||||
sw/supervision/paparazzi.pl
|
||||
|
||||
4) Launch "receive", "cockpit", "map", ...
|
||||
|
||||
|
||||
Log replay
|
||||
----------
|
||||
1) Run the supervision
|
||||
|
||||
sw/supervision/paparazzi.pl
|
||||
|
||||
2) Launch "play", "cockpit", "map", ...
|
||||
|
||||
|
||||
Software in the loop simulator
|
||||
------------------------------
|
||||
This simulator allows to run the stabilization and navigation controllers
|
||||
and play with the ground control station.
|
||||
|
||||
0) Use the conf.xml and ground_segment.xml examples for the configuration.
|
||||
Recompile everything to be sure you run what you want ("make clean; make" in
|
||||
the top directory). The mission takes place in Braunschweig, Germany
|
||||
(flight competion of EMAV'04).
|
||||
|
||||
1) Run the "control panel" (sw/supervision/paparazzi.pl)
|
||||
This window helps to launch the different components.
|
||||
|
||||
2) Launch the "cockpit" to display flight parameters
|
||||
|
||||
3) Launch "sim" (aircraft simulator)
|
||||
You get two windows standing for
|
||||
- The aircraft
|
||||
- The radio-controller (RC, displayed as one slider for each channel,
|
||||
even if some of them are buttons on the real RC)
|
||||
|
||||
4) "Boot" the aircraft (button in the aircraft window)
|
||||
The cockpit now displays some parameters. You can check
|
||||
- The autopilot mode: "auto1" (stabilized manual mode)
|
||||
- The altitude (on the right of the horizon)
|
||||
- The speed: null (on the left of the horizon)
|
||||
|
||||
5) "Launch" the aircraft (button in the aircraft window)
|
||||
The speed is now 10m/s.
|
||||
The altitude is going down: push the THROTTLE to go up !
|
||||
Ok, you were probably too slow: the aircraft went too far from HOME
|
||||
and the autopilot mode is now "home" (cockpit window): it is going
|
||||
back home automatically and you do not control anything with the RC.
|
||||
|
||||
6) Launch "map" (from the control panel)
|
||||
In this window, you can zoom with mouse wheel and pan with the middle
|
||||
button.
|
||||
The aicraft is going around the "HOME" waypoint.
|
||||
Now, reset the autopilot mode with GAIN1 slider (push full left for
|
||||
one second, put it back around 0 when "auto1" is displayed in the
|
||||
cockpit window). The aircraft is going away: turn right or left with
|
||||
the "ROLL" slider which directly controls the "roll" angle (set it to 0
|
||||
to go straight)
|
||||
Look at the altitude. Control its variation with the "THROTTLE".
|
||||
|
||||
7) Launch "mission" (from the control panel)
|
||||
This window displays the flight plan the aircraft will follow in
|
||||
autonomous mode. If your current altitude is realistic, the second
|
||||
block should be active (if not, go up with more THROTTLE)
|
||||
|
||||
8) Switch to autonomous mode "auto2" with the "MODE" slider (push right)
|
||||
|
||||
The aircraft successively goes to waypoints 1 and 3 while trying to
|
||||
stay at a constant altitude of 200m. The trajectory is better if you
|
||||
active the automatic calibration of the attitude with the "LLS" slider
|
||||
(with a large positive value, you get "ON" on the Cockpit window)
|
||||
|
||||
9) Activate the next block of the flight plan with "GAIN1" slider (full left)
|
||||
The active block is now the "height". On the "map" window (type
|
||||
CRTL-C to clear the track), you can observe a red point (the "carrot")
|
||||
which moves in front of the aircraft: it is the guide of the aircraft
|
||||
(that you probably should consider as a donkey in this case), always
|
||||
5 second before the aircraft on the desired track.
|
||||
|
||||
10) Add some west wind (with the slider on the aircraft window)
|
||||
5m/s is an acceptable value for this approximative flight model. The
|
||||
aircraft no longer can follow the "height" trajectory.
|
||||
|
||||
11) Activate the next block of the mission ("GAIN1" slider, full left)
|
||||
In this "xyz" mode, you can control the carrot position with the
|
||||
"YAW" (west-east) and "PITCH" (south-north) sliders: the slider value is
|
||||
the speed of the carrot.
|
||||
|
||||
12) Activate the next block
|
||||
In this block, the aircraft follows a circle around the "HOME"
|
||||
waypoint at a fixed distance.
|
||||
|
||||
13) Close the control panel to quit
|
||||
@@ -0,0 +1,96 @@
|
||||
dans flybywire
|
||||
chop servo ne depends pas du servo
|
||||
|
||||
|
||||
pour les missions
|
||||
possibilité de "transformer" (rotation Z, translation XYZ) une mission
|
||||
|
||||
possibilitite de faire la meme chose pour une partie des waypoints (on en a une partie pour les evolutions et une partie pour le circuit d'atterissage. On deplace ceux du circuit d'atterissage pour qu'il colle a la piste. et on deplace ceux des evolution pour etre en face du jury :)
|
||||
|
||||
|
||||
On stocke la/les transformations et on peut avoir des missions communes muret/ricou
|
||||
|
||||
des declarations de points locales aux blocs et des transformations par blocs
|
||||
|
||||
|
||||
faire medit avec visu3d
|
||||
|
||||
proposer d'ajouter un waypoint en relatif par rapport a un autre - et en coordonnees polaires (dist, QDM)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
l'interface du captureur de video - c'est aussi visu3d . Il a une liste de textures (photos) et on peut les transformer. La description est sauvées dans un fichier xml et peut etre rechargée. les photos vont dans var/photos
|
||||
|
||||
|
||||
dans visu3d, il faudrait pouvoir pivoter en Z sur la position courante (en tenant compte du zoom )
|
||||
|
||||
|
||||
######################
|
||||
|
||||
logger les simus comme les vols - y penser en refaisant receive - code commun
|
||||
|
||||
Pour les simus a plusieurs avions, il doit y avoir partage d'un certain nombre d'informations entre les differentes instances des simu (par exemple le vent)
|
||||
|
||||
Dans un circle, il faut afficher le QDR - calcul au sol??
|
||||
|
||||
Pour les missions, il faudrait pouvoir dire . faire un cercle pendant 180° ou faire un cercle pendant n secondes. Il faudrait donc disposer du temps depuis le block et du de l'angle parcouru depuis le debut du cercle.
|
||||
C'est pour faire un palier en haut de la monté. Pour laisser le terme accumulateur se recaler avant la descente.
|
||||
|
||||
###########################################
|
||||
|
||||
Sujet : procedure automatique d'interuption de vol pour microdrone
|
||||
|
||||
-identifier des scenarios:
|
||||
|
||||
cause de l'interuption : autonomie, meteo, defaillance systeme
|
||||
|
||||
-modeliser la zone d'evolution et les autres contraintres (systemes defaillants, meteo)
|
||||
|
||||
(dans un meeting, on veut a tout prix eviter le public, les routes etc...)
|
||||
|
||||
- initialisation
|
||||
- iteratif ?
|
||||
|
||||
#######################################
|
||||
|
||||
integrer les gazs pour estimer l'autonomie restante
|
||||
|
||||
|
||||
###########################################
|
||||
|
||||
|
||||
Sujet Drone Thales
|
||||
|
||||
Les eleves (1A ou 2A) construisent un avion et apprennent a le faire voler d'ici juillet.
|
||||
|
||||
commande PCB
|
||||
commande composants radiospare/melexys/coronis/ublox
|
||||
labo pour assembler (labo micro onde ?)
|
||||
|
||||
commande garat (avion, moteur, servos, batteries, radiocommande etc....)
|
||||
achat de petit outillage (dremel, fer a souder etc...)
|
||||
assemblage au labo drone
|
||||
|
||||
cours de pilotages sur le twinstar
|
||||
|
||||
On leur donne les petits projets pendant l'année sur Paparazzi.
|
||||
|
||||
|
||||
|
||||
############################################
|
||||
|
||||
mettre les projets enac sur la page web enac
|
||||
|
||||
############################################
|
||||
|
||||
|
||||
Pourquoi on ne laisse pas message.xml modifiable, pour les taux de telemesure par exemple.
|
||||
|
||||
on split les Makefiles
|
||||
|
||||
|
||||
###########
|
||||
|
||||
manque gerbmerge dans les dependance??? ha non ca n'existe pas... a packager !
|
||||
@@ -0,0 +1,140 @@
|
||||
#
|
||||
# $Id$
|
||||
# Copyright (C) 2003 Pascal Brisset, Antoine Drouin
|
||||
#
|
||||
# This file is part of paparazzi.
|
||||
#
|
||||
# paparazzi is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# paparazzi 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 General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with paparazzi; see the file COPYING. If not, write to
|
||||
# the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
# Boston, MA 02111-1307, USA.
|
||||
#
|
||||
|
||||
|
||||
#
|
||||
# This is the common Makefile for the avr-target.
|
||||
# Edit the configuration part to suit your local install
|
||||
#
|
||||
|
||||
OBJDIR = $(PAPARAZZI_HOME)/var/$(AIRCRAFT)/$(TARGET)
|
||||
|
||||
CC = $(ATMELBIN)/avr-gcc -mmcu=$(ARCH)
|
||||
LD = $(CC) $(ATMEL_LIBPATH)
|
||||
SIZE = $(ATMELBIN)/avr-size
|
||||
OBJCOPY = $(ATMELBIN)/avr-objcopy
|
||||
|
||||
|
||||
SERIAL_FLAGS = \
|
||||
-dprog=avr910 \
|
||||
-dpart=auto \
|
||||
-dserial=/dev/ttyS0 \
|
||||
-dspeed=38400 \
|
||||
|
||||
ISP_FLAGS = \
|
||||
-dlpt=$(PROG_PORT) -dprog=stk200 -v=3 \
|
||||
|
||||
UISP = uisp
|
||||
UISP_FLAGS = $(ISP_FLAGS)
|
||||
#UISP_FLAGS = $(SERIAL_FLAGS)
|
||||
|
||||
|
||||
#
|
||||
# End of configuration part.
|
||||
#
|
||||
|
||||
|
||||
CFLAGS = \
|
||||
-W -Wall \
|
||||
$(ATMEL_INCLUDES) \
|
||||
$(INCLUDES) \
|
||||
-Wall \
|
||||
-Wstrict-prototypes \
|
||||
$(LOCAL_CFLAGS) \
|
||||
-O2 \
|
||||
|
||||
LDFLAGS = -lm \
|
||||
|
||||
#
|
||||
# General rules
|
||||
#
|
||||
|
||||
all compile: $(OBJDIR)/$(TARGET).elf
|
||||
|
||||
load upload: \
|
||||
$(TARGET).install
|
||||
|
||||
$(TARGET).objs = \
|
||||
$($(TARGET).srcs:%.c=$(OBJDIR)/%.o) \
|
||||
|
||||
#
|
||||
# Fuses
|
||||
#
|
||||
|
||||
rd_fuses: check_arch
|
||||
$(UISP) $(ISP_FLAGS) --rd_fuses
|
||||
|
||||
wr_fuses : check_arch
|
||||
$(UISP) $(ISP_FLAGS) --wr_fuse_h=$(HIGH_FUSE)
|
||||
$(UISP) $(ISP_FLAGS) --wr_fuse_l=$(LOW_FUSE)
|
||||
$(UISP) $(ISP_FLAGS) --wr_fuse_e=$(EXT_FUSE)
|
||||
$(UISP) $(ISP_FLAGS) --wr_lock=$(LOCK_FUSE)
|
||||
|
||||
|
||||
$(OBJDIR)/%.elf: $($(TARGET).objs)
|
||||
$(LD) \
|
||||
$(LOCAL_LDFLAGS) \
|
||||
$^ \
|
||||
-o $@ \
|
||||
$(LDFLAGS)
|
||||
$(SIZE) $@
|
||||
|
||||
|
||||
$(OBJDIR)/%.s: %.c
|
||||
$(CC) $(CFLAGS) -S -o $@ $<
|
||||
|
||||
$(OBJDIR)/%.o: %.c
|
||||
$(CC) $(CFLAGS) -c -o $@ $<
|
||||
|
||||
$(OBJDIR)/%.hex: $(OBJDIR)/%.elf
|
||||
$(OBJCOPY) -O ihex -R .eeprom $< $@
|
||||
|
||||
|
||||
%.install: $(OBJDIR)/%.hex check_arch
|
||||
# stk200 needs to be erased first
|
||||
$(UISP) $(UISP_FLAGS) --erase
|
||||
$(UISP) $(UISP_FLAGS) --upload if=$<
|
||||
|
||||
erase: check_arch
|
||||
$(UISP) $(ISP_FLAGS) --erase
|
||||
|
||||
check_arch :
|
||||
if ($(UISP) $(UISP_FLAGS) 2>&1 | tr '[:upper:]' '[:lower:]' | grep $(ARCH)); then : ; else echo "Wrong architecture (mcu0 vs mcu1 ?)"; exit 1; fi
|
||||
|
||||
avr_clean:
|
||||
cd $(OBJDIR); rm -f *.hex *.elf *.out core *.o *.a *~ *.s *.cm* .depend
|
||||
|
||||
|
||||
#
|
||||
# Dependencies
|
||||
#
|
||||
|
||||
$(OBJDIR)/.depend:
|
||||
$(CC) -M $(CFLAGS) $($(TARGET).srcs) > $@
|
||||
|
||||
ifneq ($(MAKECMDGOALS),clean)
|
||||
ifneq ($(MAKECMDGOALS),erase)
|
||||
-include $(OBJDIR)/.depend
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
DESTDIR=/usr
|
||||
|
||||
ifeq ($(PAPARAZZI_HOME),)
|
||||
PAPARAZZI_HOME=$(HOME)/paparazzi
|
||||
endif
|
||||
|
||||
ifeq ($(PAPARAZZI_SRC),)
|
||||
TOOLS=$(DESTDIR)/share/paparazzi/bin
|
||||
else
|
||||
TOOLS=$(PAPARAZZI_SRC)/sw/tools
|
||||
endif
|
||||
|
||||
AIRCRAFT=twinstar1
|
||||
|
||||
ATMELBIN = /usr/bin
|
||||
ATMEL_INCLUDES = -I /usr/avr/include
|
||||
ATMEL_LIBPATH = -B /usr/avr/lib/avr4 -B /usr/avr/lib/avr5
|
||||
PROG_PORT = /dev/parport0
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
<airframe name="Microjet one" ctl_board="V1_2" gps="SAM_LS">
|
||||
<section name="WAVECARD" prefix="WAVECARD">
|
||||
<define name="ADDR" value="00 01 18 04 c0 00 51">
|
||||
</section>
|
||||
<section name="ADC" prefix="ADC_CHANNEL_">
|
||||
<define name="IR1" value="1"/>
|
||||
<define name="IR2" value="0"/>
|
||||
<define name="AIRSPEED" value="2"/>
|
||||
<define name="CURRENT " value="3"/>
|
||||
<define name="BAT" value="4"/>
|
||||
</section>
|
||||
<servos min="1000" neutral="1500" max="2000">
|
||||
<servo name="GAZ" no="3" min="1000" neutral="1000" max="2000"/>
|
||||
<servo name="AILEVON_LEFT" no="0" min="1800" neutral="1492" max="1179"/>
|
||||
<servo name="AILEVON_RIGHT" no="2" min="1990" neutral="1662" max="1389"/>
|
||||
</servos>
|
||||
<command>
|
||||
<set servo="GAZ" value="2 * @THROTTLE"/>
|
||||
<let var="aileron" value="@ROLL * AILEVON_AILERON_RATE"/>
|
||||
<let var="elevator" value="@PITCH * AILEVON_ELEVATOR_RATE"/>
|
||||
<set servo="AILEVON_LEFT" value="$aileron + $elevator"/>
|
||||
<set servo="AILEVON_RIGHT" value="$aileron - $elevator"/>
|
||||
</command>
|
||||
<section name="MIXER">
|
||||
<define name="AILEVON_AILERON_RATE" value="0.55"/>
|
||||
<define name="AILEVON_ELEVATOR_RATE" value="0.75"/>
|
||||
</section>
|
||||
<section name="INFRARED" prefix="IR_">
|
||||
<define name="ROLL_NEUTRAL_DEFAULT" value="0"/>
|
||||
<define name="PITCH_NEUTRAL_DEFAULT" value="1040"/>
|
||||
<define name="DEFAULT_CONTRAST" value="400"/>
|
||||
<define name="RAD_OF_IR_CONTRAST" value="0.9"/>
|
||||
<linear name="RollOfIrs" arity="2" coeff1="1" coeff2="-1"/>
|
||||
<linear name="PitchOfIrs" arity="2" coeff1="1" coeff2="1"/>
|
||||
</section>
|
||||
<section name="PID">
|
||||
<define name="ROLL_PGAIN" value="7000."/>
|
||||
<define name="PITCH_OF_ROLL" value="0.2"/>
|
||||
<define name="PITCH_PGAIN" value="10000."/>
|
||||
<define name="MAX_ROLL" value="0.4"/>
|
||||
</section>
|
||||
<section name="ALT" prefix="CLIMB_">
|
||||
<define name="PGAIN" value="-0.025"/>
|
||||
<define name="IGAIN" value="0.01"/>
|
||||
<define name="MAX" value="1."/>
|
||||
<define name="LEVEL_GAZ" value="0.25"/>
|
||||
<define name="GAZ_MAX" value="2.5" unit="m/s"/>
|
||||
</section>
|
||||
<section name="NAV">
|
||||
<define name="COURSE_PGAIN" value="-0.3"/>
|
||||
<define name="ALTITUDE_PGAIN" value="-0.05"/>
|
||||
<define name="NAV_PITCH" value="0."/>
|
||||
</section>
|
||||
<section name="BAT">
|
||||
<define name="VOLTAGE_ADC_A" value="0.016768"/>
|
||||
<define name="VOLTAGE_ADC_B" value="0.089803"/>
|
||||
<define name="VoltageOfAdc(adc)" value="(VOLTAGE_ADC_A * adc + VOLTAGE_ADC_B)"/>
|
||||
<define name="LOW_BATTERY" value="90" unit="1e-1V"/>
|
||||
</section>
|
||||
<section name="MISC">
|
||||
<define name="NOMINAL_AIRSPEED" value="15."/>
|
||||
<define name="CARROT" value="5." unit="s"/>
|
||||
</section>
|
||||
</airframe>
|
||||
@@ -0,0 +1,63 @@
|
||||
<airframe name="Microjet two" ctl_board="V1_2_1" gps="SAM_LS">
|
||||
<section name="adc" prefix="ADC_CHANNEL_">
|
||||
<define name="IR1" value="1"/>
|
||||
<define name="IR2" value="0"/>
|
||||
</section>
|
||||
<servos min="1000" neutral="1500" max="2000">
|
||||
<servo name="GAZ" no="3" min="1000" neutral="1000" max="2000"/>
|
||||
<servo name="AILEVON_LEFT" no="0" min="1000" neutral="1520" max="2000"/>
|
||||
<servo name="AILEVON_RIGHT" no="2" min="1000" neutral="1523" max="2000"/>
|
||||
</servos>
|
||||
<command>
|
||||
<set servo="GAZ" value="2 * @THROTTLE"/>
|
||||
<let var="aileron" value="@ROLL * AILEVON_AILERON_RATE"/>
|
||||
<let var="elevator" value="@PITCH * AILEVON_ELEVATOR_RATE"/>
|
||||
<set servo="AILEVON_LEFT" value="$aileron + $elevator"/>
|
||||
<set servo="AILEVON_RIGHT" value="$aileron - $elevator"/>
|
||||
</command>
|
||||
<section name="MIXER">
|
||||
<define name="AILEVON_AILERON_RATE" value="0.55"/>
|
||||
<define name="AILEVON_ELEVATOR_RATE" value="0.75"/>
|
||||
</section>
|
||||
<section name="INFRARED" prefix="IR_">
|
||||
<define name="ROLL_NEUTRAL_DEFAULT" value="0"/>
|
||||
<define name="PITCH_NEUTRAL_DEFAULT" value="-1040"/>
|
||||
<define name="DEFAULT_CONTRAST" value="400"/>
|
||||
<define name="RAD_OF_IR_CONTRAST" value="0.9"/>
|
||||
<linear name="RollOfIrs" arity="2" coeff1="-1" coeff2="1"/>
|
||||
<linear name="PitchOfIrs" arity="2" coeff1="-1" coeff2="-1"/>
|
||||
</section>
|
||||
<section name="PID">
|
||||
<define name="ROLL_PGAIN" value="7000."/>
|
||||
<define name="PITCH_OF_ROLL" value="0.2"/>
|
||||
<define name="PITCH_PGAIN" value="10000."/>
|
||||
<define name="MAX_ROLL" value="0.4"/>
|
||||
</section>
|
||||
<section name="ALT" prefix="CLIMB_">
|
||||
<define name="PGAIN" value="-0.025"/>
|
||||
<define name="IGAIN" value="0.01"/>
|
||||
<define name="MAX" value="1."/>
|
||||
<define name="LEVEL_GAZ" value="0.25"/>
|
||||
<define name="GAZ_MAX" value="2.5" unit="m/s"/>
|
||||
</section>
|
||||
<section name="NAV">
|
||||
<define name="COURSE_PGAIN" value="-0.3"/>
|
||||
<define name="ALTITUDE_PGAIN" value="-0.05"/>
|
||||
<define name="NAV_PITCH" value="0."/>
|
||||
</section>
|
||||
<section name="BAT" channel="3">
|
||||
<define name="VOLTAGE_ADC_A" value="0.016892"/>
|
||||
<define name="VOLTAGE_ADC_B" value="0.083604"/>
|
||||
<define name="VoltageOfAdc(adc)" value="(VOLTAGE_ADC_A * adc + VOLTAGE_ADC_B)"/>
|
||||
<define name="LOW_BATTERY" value="90" unit="1e-1V"/>
|
||||
</section>
|
||||
<section name="SERVOS" channel="6">
|
||||
<define name="SERVOS_VOLTAGE_ADC_A" value="0.005661"/>
|
||||
<define name="SERVOS_VOLTAGE_ADC_B" value="0.014948"/>
|
||||
<define name="ServosVoltageOfAdc(adc)" value="(VOLTAGE_ADC_A * adc + VOLTAGE_ADC_B)"/>
|
||||
</section>
|
||||
<section name="MISC">
|
||||
<define name="NOMINAL_AIRSPEED" value="15."/>
|
||||
<define name="CARROT" value="5." unit="s"/>
|
||||
</section>
|
||||
</airframe>
|
||||
@@ -0,0 +1,61 @@
|
||||
<airframe name="Thon1" ctl_board="V1_2_1" gps="SAM_LS">
|
||||
<section name="adc" prefix="ADC_CHANNEL_">
|
||||
<define name="IR1" value="1"/>
|
||||
<define name="IR2" value="2"/>
|
||||
</section>
|
||||
<servos min="1000" neutral="1500" max="2000">
|
||||
<servo name="GAZ" no="9" min="1000" neutral="1000" max="2000"/>
|
||||
<servo name="AILERON_LEFT" no="2" min="1100" neutral="1492" max="2000"/>
|
||||
<servo name="AILERON_RIGHT" no="6" min="1000" neutral="1385" max="1833"/>
|
||||
<servo name="ELEVATOR" no="7" min="1816" neutral="1586" max="1220"/>
|
||||
<servo name="RUDDER" no="3" min="1270" neutral="1546" max="1850"/>
|
||||
</servos>
|
||||
<command>
|
||||
<set servo="GAZ" value="2 * @THROTTLE"/>
|
||||
<set servo="ELEVATOR" value="@PITCH"/>
|
||||
<let var="roll" value="@ROLL"/>
|
||||
<set servo="AILERON_LEFT" value="($roll > 0 ? 1 : AILERON_DIFF) * $roll"/>
|
||||
<set servo="AILERON_RIGHT" value="($roll > 0 ? AILERON_DIFF : 1) * $roll"/>
|
||||
<set servo="RUDDER" value="@YAW + @ROLL*COMBI_SWITCH"/>
|
||||
</command>
|
||||
<section name="MIXER">
|
||||
<define name="AILERON_DIFF" value="0.66"/>
|
||||
<define name="COMBI_SWITCH" value="1.0"/>
|
||||
</section>
|
||||
<section name="INFRARED" prefix="IR_">
|
||||
<define name="ROLL_NEUTRAL_DEFAULT" value="-1005"/>
|
||||
<define name="PITCH_NEUTRAL_DEFAULT" value="75"/>
|
||||
<define name="DEFAULT_CONTRAST" value="200"/>
|
||||
<define name="RAD_OF_IR_CONTRAST" value="0.75"/>
|
||||
<linear name="RollOfIrs" arity="2" coeff1="-1" coeff2="-1"/>
|
||||
<linear name="PitchOfIrs" arity="2" coeff1="-1" coeff2="1"/>
|
||||
</section>
|
||||
<section name="PID">
|
||||
<define name="ROLL_PGAIN" value="10000."/>
|
||||
<define name="PITCH_OF_ROLL" value="0.0"/>
|
||||
<define name="PITCH_PGAIN" value="15000."/>
|
||||
<define name="MAX_ROLL" value="0.35"/>
|
||||
</section>
|
||||
<section name="ALT" prefix="CLIMB_">
|
||||
<define name="PGAIN" value="-0.03"/>
|
||||
<define name="IGAIN" value="0.1"/>
|
||||
<define name="MAX" value="1."/>
|
||||
<define name="LEVEL_GAZ" value="0.45"/>
|
||||
<define name="GAZ_MAX" value="1.5" unit="m/s"/>
|
||||
</section>
|
||||
<section name="NAV">
|
||||
<define name="COURSE_PGAIN" value="-0.2"/>
|
||||
<define name="ALTITUDE_PGAIN" value="-0.025"/>
|
||||
<define name="NAV_PITCH" value="0."/>
|
||||
</section>
|
||||
<section name="BAT">
|
||||
<define name="VOLTAGE_ADC_A" value="0.0175"/>
|
||||
<define name="VOLTAGE_ADC_B" value="0.088"/>
|
||||
<define name="VoltageOfAdc(adc)" value="(VOLTAGE_ADC_A * adc + VOLTAGE_ADC_B)"/>
|
||||
<define name="LOW_BATTERY" value="93" unit="1e-1V"/>
|
||||
</section>
|
||||
<section name="MISC">
|
||||
<define name="NOMINAL_AIRSPEED" value="10." unit="m/s"/>
|
||||
<define name="CARROT" value="5." unit="s"/>
|
||||
</section>
|
||||
</airframe>
|
||||
@@ -0,0 +1,61 @@
|
||||
<airframe name="Thon2" ctl_board="V1_2_1" gps="SAM_LS">
|
||||
<section name="adc" prefix="ADC_CHANNEL_">
|
||||
<define name="IR1" value="1"/>
|
||||
<define name="IR2" value="2"/>
|
||||
</section>
|
||||
<servos min="1000" neutral="1500" max="2000">
|
||||
<servo name="GAZ" no="9" min="1000" neutral="1000" max="2000"/>
|
||||
<servo name="AILERON_LEFT" no="2" min="1100" neutral="1492" max="2000"/>
|
||||
<servo name="AILERON_RIGHT" no="6" min="1000" neutral="1385" max="1833"/>
|
||||
<servo name="ELEVATOR" no="7" min="1816" neutral="1586" max="1220"/>
|
||||
<servo name="RUDDER" no="3" min="1270" neutral="1546" max="1850"/>
|
||||
</servos>
|
||||
<command>
|
||||
<set servo="GAZ" value="2 * @THROTTLE"/>
|
||||
<set servo="ELEVATOR" value="@PITCH"/>
|
||||
<let var="roll" value="@ROLL"/>
|
||||
<set servo="AILERON_LEFT" value="($roll > 0 ? 1 : AILERON_DIFF) * $roll"/>
|
||||
<set servo="AILERON_RIGHT" value="($roll > 0 ? AILERON_DIFF : 1) * $roll"/>
|
||||
<set servo="RUDDER" value="@YAW + @ROLL*COMBI_SWITCH"/>
|
||||
</command>
|
||||
<section name="MIXER">
|
||||
<define name="AILERON_DIFF" value="0.66"/>
|
||||
<define name="COMBI_SWITCH" value="1.0"/>
|
||||
</section>
|
||||
<section name="INFRARED" prefix="IR_">
|
||||
<define name="ROLL_NEUTRAL_DEFAULT" value="-1005"/>
|
||||
<define name="PITCH_NEUTRAL_DEFAULT" value="75"/>
|
||||
<define name="DEFAULT_CONTRAST" value="200"/>
|
||||
<define name="RAD_OF_IR_CONTRAST" value="0.75"/>
|
||||
<linear name="RollOfIrs" arity="2" coeff1="-1" coeff2="-1"/>
|
||||
<linear name="PitchOfIrs" arity="2" coeff1="-1" coeff2="1"/>
|
||||
</section>
|
||||
<section name="PID">
|
||||
<define name="ROLL_PGAIN" value="10000."/>
|
||||
<define name="PITCH_OF_ROLL" value="0.0"/>
|
||||
<define name="PITCH_PGAIN" value="15000."/>
|
||||
<define name="MAX_ROLL" value="0.35"/>
|
||||
</section>
|
||||
<section name="ALT" prefix="CLIMB_">
|
||||
<define name="PGAIN" value="-0.03"/>
|
||||
<define name="IGAIN" value="0.1"/>
|
||||
<define name="MAX" value="1."/>
|
||||
<define name="LEVEL_GAZ" value="0.45"/>
|
||||
<define name="GAZ_MAX" value="1.5" unit="m/s"/>
|
||||
</section>
|
||||
<section name="NAV">
|
||||
<define name="COURSE_PGAIN" value="-0.2"/>
|
||||
<define name="ALTITUDE_PGAIN" value="-0.025"/>
|
||||
<define name="NAV_PITCH" value="0."/>
|
||||
</section>
|
||||
<section name="BAT">
|
||||
<define name="VOLTAGE_ADC_A" value="0.0175"/>
|
||||
<define name="VOLTAGE_ADC_B" value="0.088"/>
|
||||
<define name="VoltageOfAdc(adc)" value="(VOLTAGE_ADC_A * adc + VOLTAGE_ADC_B)"/>
|
||||
<define name="LOW_BATTERY" value="93" unit="1e-1V"/>
|
||||
</section>
|
||||
<section name="MISC">
|
||||
<define name="NOMINAL_AIRSPEED" value="10." unit="m/s"/>
|
||||
<define name="CARROT" value="5." unit="s"/>
|
||||
</section>
|
||||
</airframe>
|
||||
@@ -0,0 +1,42 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<conf>
|
||||
<aircraft
|
||||
name="Morue1"
|
||||
airframe="airframes/microjet1.xml"
|
||||
radio="radios/mc3030.xml"
|
||||
flight_plan="flight_plans/muret3.xml"
|
||||
/>
|
||||
|
||||
<aircraft
|
||||
name="Morue2"
|
||||
airframe="airframes/microjet2.xml"
|
||||
radio="radios/mc3030.xml"
|
||||
flight_plan="flight_plans/muret2.xml"
|
||||
/>
|
||||
|
||||
<aircraft
|
||||
name="Thon1"
|
||||
airframe="airframes/twinstar1.xml"
|
||||
radio="radios/mc3030.xml"
|
||||
flight_plan="flight_plans/muret1.xml"
|
||||
/>
|
||||
|
||||
<aircraft
|
||||
name="Thon2"
|
||||
airframe="airframes/twinstar2.xml"
|
||||
radio="radios/mc3030.xml"
|
||||
flight_plan="flight_plans/muret1.xml"
|
||||
/>
|
||||
|
||||
<map
|
||||
location="muret_UTM.xml"
|
||||
/>
|
||||
|
||||
<ground name="desktop" ivy_bus="127.255.255.255:2010">
|
||||
<link name="downlink" port="/dev/ttyS0" protocol="pprz/modem"/>
|
||||
<link name="datalink" port="/dev/ttyS1" protocol="pprz/coronis"/>
|
||||
<link name="ap" port="/dev/ttyS1" protocol="pprz"/>
|
||||
<link name="fbw" port="/dev/ttyS0" protocol="pprz"/>
|
||||
</ground>
|
||||
</conf>
|
||||
@@ -0,0 +1,105 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<control_panel name="paparazzi control panel">
|
||||
|
||||
<section name="hosts">
|
||||
<host name="localhost"/>
|
||||
<host name="dolis" ip="192.168.1.33"/>
|
||||
<host name="benito"/>
|
||||
</section>
|
||||
|
||||
<section name="variables">
|
||||
<!-- <variable name="paparazzi_home" value="/home/poine/work/paparazzi_enac/paparazzi/tmp_multi_ac"/> -->
|
||||
<variable name="render" value="1"/>
|
||||
<variable name="downlink_serial_port" value="/dev/ttyUSB0"/>
|
||||
<variable name="fbw_serial_port" value="/dev/ttyS1"/>
|
||||
<variable name="ap_serial_port" value="/dev/ttyS0"/>
|
||||
<variable name="ivy_bus" value="127.25.255.255:2009"/>
|
||||
<variable name="map" value="maps/muret_UTM.xml"/>
|
||||
<variable name="flight_plan" value="flight_plans/muret1.xml"/>
|
||||
</section>
|
||||
|
||||
<section name="programs">
|
||||
<program name="receive" command="sw/ground_segment/tmtc/receive.opt">
|
||||
<arg flag="-b" variable="ivy_bus"/>
|
||||
</program>
|
||||
<program name="cockpit" command="sw/ground_segment/cockpit/cockpit.pl">
|
||||
<arg flag="-b" variable="ivy_bus"/>
|
||||
<arg flag="-r" variable="render"/>
|
||||
</program>
|
||||
<program name="map 2d" command="sw/ground_segment/cockpit/map.pl">
|
||||
<arg flag="-b" variable="ivy_bus"/>
|
||||
<arg flag="-m" variable="map"/>
|
||||
<arg flag="-f" variable="flight_plan"/>
|
||||
<arg flag="-r" variable="render"/>
|
||||
</program>
|
||||
<program name="map 2d ml" command="sw/ground_segment/cockpit/map2d.out">
|
||||
<arg flag="-b" variable="ivy_bus"/>
|
||||
</program>
|
||||
<program name="map 3d" command="sw/ground_segment/visu3d/mapGL.opt">
|
||||
<arg flag="-b" variable="ivy_bus"/>
|
||||
<arg flag="-m" variable="map"/>
|
||||
<arg flag="-f" variable="flight_plan"/>
|
||||
</program>
|
||||
<program name="mission" command="sw/ground_segment/cockpit/mission.pl">
|
||||
<arg flag="-b" variable="ivy_bus"/>
|
||||
<arg flag="-m" variable="map"/>
|
||||
<arg flag="-f" variable="flight_plan"/>
|
||||
</program>
|
||||
<program name="messages" command="sw/ground_segment/tmtc/messages.opt">
|
||||
<arg flag="-b" variable="ivy_bus"/>
|
||||
</program>
|
||||
<program name="speech" command="sw/ground_segment/speech/paparazzi_speak.pl">
|
||||
<arg flag="-b" variable="ivy_bus"/>
|
||||
<!-- <arg flag="-t" variable="paparazzi_home"/> -->
|
||||
</program>
|
||||
<program name="wind" command ="sw/ground_segment/wind/wind.opt"><arg flag="-b" variable="ivy_bus"/></program>
|
||||
<program name="plot" command ="sw/logalizer/plot.pl"/>
|
||||
<program name="play" command="sw/logalizer/play.opt">
|
||||
<arg flag="-b" variable="ivy_bus"/>
|
||||
</program>
|
||||
<program name="sim" command="sw/simulator/simsitl.pl">
|
||||
<arg flag="-b" variable="ivy_bus"/>
|
||||
</program>
|
||||
<program name="hitl" command="sw/simulator/simhitl.out">
|
||||
<arg flag="-fbw" variable="fbw_serial_port"/>
|
||||
<arg flag="-ap" variable="ap_serial_port"/>
|
||||
</program>
|
||||
<program name="configurator" command="sw/configurator/configurator"/>
|
||||
<program name="medit" command="sw/configurator/medit.out"/>
|
||||
<program name="make aircraft" command="sw/configurator/configurator"/>
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
<section name="sessions">
|
||||
|
||||
<session name="soft sim 2">
|
||||
<variable name="ivy_bus" value="127.25.255.255:3333"/>
|
||||
<program name="receive"/>
|
||||
<program name="sim"><arg flag="-a" constant="Thon1"/></program>
|
||||
<program name="sim"><arg flag="-a" constant="Thon2"/></program>
|
||||
<program name="cockpit"/>
|
||||
<program name="map 2d"/>
|
||||
<program name="map 3d"/>
|
||||
</session>
|
||||
|
||||
<session name="soft sim 1">
|
||||
<variable name="ivy_bus" value="127.25.255.255:3333"/>
|
||||
<program name="receive"/>
|
||||
<program name="sim"><arg flag="-a" constant="Thon1"/></program>
|
||||
<program name="cockpit"/>
|
||||
<program name="map 2d"/>
|
||||
<program name="wind"/>
|
||||
</session>
|
||||
|
||||
<session name="flight">
|
||||
<program name="receive"/>
|
||||
<program name="cockpit"/>
|
||||
<program name="mission"/>
|
||||
<program name="map2d"/>
|
||||
</session>
|
||||
|
||||
</section>
|
||||
|
||||
</control_panel>
|
||||
@@ -0,0 +1,84 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<control_panel name="paparazzi control panel">
|
||||
|
||||
<section name="hosts">
|
||||
<host name="localhost" ip="127.0.0.1"/>
|
||||
</section>
|
||||
|
||||
<section name="variables">
|
||||
<variable name="downlink_serial_port" value="/dev/ttyUSB0"/>
|
||||
<variable name="fbw_serial_port" value="/dev/ttyS1"/>
|
||||
<variable name="ap_serial_port" value="/dev/ttyS0"/>
|
||||
<variable name="ivy_bus" value="127.25.255.255:2009"/>
|
||||
<variable name="map" value="maps/muret_UTM.xml"/>
|
||||
<variable name="flight_plan" value="flight_plans/muret1.xml"/>
|
||||
</section>
|
||||
|
||||
<section name="programs">
|
||||
<program name="receive" command="/usr/share/paparazzi/bin/receive.opt">
|
||||
<arg flag="-b " variable="ivy_bus"/>
|
||||
</program>
|
||||
<program name="cockpit" command="/usr/share/paparazzi/bin/cockpit.pl">
|
||||
<arg flag="-b " variable="ivy_bus"/>
|
||||
</program>
|
||||
<program name="map 2d" command="/usr/share/paparazzi/bin/map.pl">
|
||||
<arg flag="-b " variable="ivy_bus"/>
|
||||
<arg flag="-m " variable="map"/>
|
||||
<arg flag="-f " variable="flight_plan"/>
|
||||
</program>
|
||||
<program name="map 2d ml" command="/usr/share/paparazzi/bin/map2d.opt">
|
||||
<arg flag="-b " variable="ivy_bus"/>
|
||||
<!-- <arg flag="-m" variable="map"/> -->
|
||||
</program>
|
||||
<program name="map 3d" command="/usr/share/paparazzi/bin/mapGL.opt">
|
||||
<arg flag="-b " variable="ivy_bus"/>
|
||||
<arg flag="-m " variable="map"/>
|
||||
<arg flag="-f " variable="flight_plan"/>
|
||||
</program>
|
||||
<program name="messages" command="/usr/share/paparazzi/bi/messages.opt">
|
||||
<arg flag="-b " variable="ivy_bus"/>
|
||||
</program>
|
||||
<program name="speech" command="/usr/share/paparazzi/bin/paparazzi_speak.pl">
|
||||
<arg flag="-b " variable="ivy_bus"/>
|
||||
<arg flag="-t " variable="paparazzi_home"/>
|
||||
</program>
|
||||
<program name="wind" command ="/usr/share/paparazzi/bin/wind"/>
|
||||
<program name="plot" command ="/usr/share/paparazzi/bin/plot.pl"/>
|
||||
<program name="play" command="/usr/share/paparazzi/bin/play.opt">
|
||||
<arg flag="-b " variable="ivy_bus"/>
|
||||
</program>
|
||||
<program name="sim" command="/usr/share/paparazzi/bin/simsitl.pl">
|
||||
<arg flag="-b " variable="ivy_bus"/>
|
||||
<arg flag="-a " constant="Thon1"/>
|
||||
</program>
|
||||
<program name="hitl" command="/usr/share/paparazzi/bin/simhitl.out">
|
||||
<arg flag="-fbw " variable="fbw_serial_port"/>
|
||||
<arg flag="-ap " variable="ap_serial_port"/>
|
||||
</program>
|
||||
<program name="configurator" command="/usr/share/paparazzi/bin/configurator"/>
|
||||
<program name="medit" command="/usr/share/paparazzi/bin/medit.out"/>
|
||||
</section>
|
||||
|
||||
<section name="sessions">
|
||||
|
||||
<session name="soft sim 2">
|
||||
<variable name="ivy_bus" value="127.25.255.255:3333"/>
|
||||
<program name="receive"/>
|
||||
<program name="sim"><arg flag="-a" constant="Thon1"/></program>
|
||||
<program name="sim"><arg flag="-a" constant="Thon2"/></program>
|
||||
<program name="cockpit"/>
|
||||
<program name="map 2d"/>
|
||||
<program name="map 3d"/>
|
||||
</session>
|
||||
|
||||
<session name="flight">
|
||||
<program name="receive"/>
|
||||
<program name="cockpit"/>
|
||||
<program name="mission"/>
|
||||
<program name="map2d"/>
|
||||
</session>
|
||||
|
||||
</section>
|
||||
|
||||
</control_panel>
|
||||
@@ -0,0 +1,35 @@
|
||||
<!DOCTYPE procedure SYSTEM "procedure.dtd">
|
||||
|
||||
<procedure>
|
||||
<param name="rad" default_value="75"/>
|
||||
<param name="vz" default_value="1"/>
|
||||
<param name="top" default_value="GROUND_ALT+150"/>
|
||||
<param name="bottom"/>
|
||||
|
||||
<waypoints>
|
||||
<waypoint name="center" x="0" y="0" alt="0"/>
|
||||
</waypoints>
|
||||
|
||||
<blocks>
|
||||
<block NAME="climb">
|
||||
<exception COND="(RcEvent1())" DEROUTE="palier"/>
|
||||
<circle WP="center" RADIUS="rad" vmode="climb" climb="vz" until="estimator_z > top"/>
|
||||
</block>
|
||||
|
||||
<block NAME="palier">
|
||||
<exception COND="(RcEvent1())" DEROUTE="down"/>
|
||||
<circle WP="center" RADIUS="rad" alt="top" until="stage_time > 60"/>
|
||||
</block>
|
||||
|
||||
<block NAME="down">
|
||||
<exception COND="(RcEvent1())" DEROUTE="palier_bot"/>
|
||||
<circle WP="center" RADIUS="rad" vmode="climb" climb="-(vz)" until="GROUND_ALT+50 > estimator_z"/>
|
||||
</block>
|
||||
|
||||
<block NAME="palier_bot">
|
||||
<exception COND="(RcEvent1())" DEROUTE="event1"/>
|
||||
<circle WP="center" RADIUS="rad" alt="bottom"/>
|
||||
</block>
|
||||
|
||||
</blocks>
|
||||
</procedure>
|
||||
@@ -0,0 +1,116 @@
|
||||
<!-- Paparazzi flight plan DTD -->
|
||||
|
||||
<!ELEMENT flight_plan (rc_control,waypoints,include*,blocks)>
|
||||
|
||||
<!ELEMENT rc_control (mode*)>
|
||||
<!ELEMENT mode (setting*)>
|
||||
<!ELEMENT setting EMPTY>
|
||||
|
||||
<!ELEMENT waypoints (waypoint+)>
|
||||
<!ELEMENT waypoint EMPTY>
|
||||
|
||||
<!ELEMENT blocks (block+)>
|
||||
<!ELEMENT block (exception|while|heading|go|xyz|circle|deroute|stay)*>
|
||||
|
||||
<!ELEMENT include (arg|with)*>
|
||||
<!ELEMENT arg EMPTY>
|
||||
<!ELEMENT with EMPTY>
|
||||
|
||||
<!ELEMENT while (while|heading|go|xyz|circle|deroute|stay)*>
|
||||
<!ELEMENT exception EMPTY>
|
||||
<!ELEMENT heading EMPTY>
|
||||
<!ELEMENT go EMPTY>
|
||||
<!ELEMENT xyz EMPTY>
|
||||
<!ELEMENT circle EMPTY>
|
||||
<!ELEMENT deroute EMPTY>
|
||||
<!ELEMENT stay EMPTY>
|
||||
|
||||
<!ATTLIST flight_plan name CDATA #REQUIRED>
|
||||
<!ATTLIST flight_plan lat0 CDATA #REQUIRED>
|
||||
<!ATTLIST flight_plan lon0 CDATA #REQUIRED>
|
||||
<!ATTLIST flight_plan max_dist_from_home CDATA #REQUIRED>
|
||||
<!ATTLIST flight_plan qfu CDATA #REQUIRED>
|
||||
<!ATTLIST flight_plan ground_alt CDATA #REQUIRED>
|
||||
<!ATTLIST flight_plan security_height CDATA #REQUIRED>
|
||||
<!ATTLIST flight_plan alt CDATA #REQUIRED>
|
||||
|
||||
<!ATTLIST mode name CDATA #REQUIRED>
|
||||
|
||||
<!ATTLIST setting var CDATA #REQUIRED>
|
||||
<!ATTLIST setting type (int16|float) #REQUIRED>
|
||||
<!ATTLIST setting range CDATA #REQUIRED>
|
||||
<!ATTLIST setting rc (gain_1_up|gain_2_up|gain_1_down|gain_2_down) #REQUIRED>
|
||||
<!ATTLIST waypoints utm_x0 CDATA #REQUIRED>
|
||||
<!ATTLIST waypoints utm_y0 CDATA #REQUIRED>
|
||||
|
||||
<!ATTLIST waypoint
|
||||
name CDATA #REQUIRED
|
||||
x CDATA #REQUIRED
|
||||
y CDATA #REQUIRED
|
||||
lat CDATA #IMPLIED
|
||||
lon CDATA #IMPLIED
|
||||
alt CDATA #IMPLIED>
|
||||
|
||||
<!ATTLIST block name CDATA #REQUIRED>
|
||||
|
||||
<!ATTLIST while cond CDATA #IMPLIED>
|
||||
|
||||
<!ATTLIST exception
|
||||
cond CDATA #REQUIRED
|
||||
deroute CDATA #REQUIRED>
|
||||
|
||||
<!ATTLIST heading course CDATA #REQUIRED
|
||||
vmode CDATA #IMPLIED
|
||||
gaz CDATA #IMPLIED
|
||||
climb CDATA #IMPLIED
|
||||
pitch CDATA #IMPLIED
|
||||
until CDATA #IMPLIED>
|
||||
|
||||
<!ATTLIST go
|
||||
wp CDATA #REQUIRED
|
||||
wp_qdr CDATA #IMPLIED
|
||||
wp_dist CDATA #IMPLIED
|
||||
from CDATA #IMPLIED
|
||||
from_qdr CDATA #IMPLIED
|
||||
from_dist CDATA #IMPLIED
|
||||
hmode CDATA #IMPLIED
|
||||
vmode CDATA #IMPLIED
|
||||
pitch CDATA #IMPLIED
|
||||
alt CDATA #IMPLIED
|
||||
until CDATA #IMPLIED
|
||||
gaz CDATA #IMPLIED>
|
||||
|
||||
<!ATTLIST xyz radius CDATA #IMPLIED>
|
||||
|
||||
<!ATTLIST circle
|
||||
wp CDATA #REQUIRED
|
||||
radius CDATA #REQUIRED
|
||||
alt CDATA #IMPLIED
|
||||
vmode CDATA #IMPLIED
|
||||
climb CDATA #IMPLIED
|
||||
until CDATA #IMPLIED>
|
||||
|
||||
<!ATTLIST stay
|
||||
wp CDATA #REQUIRED
|
||||
vmode CDATA #IMPLIED
|
||||
gaz CDATA #IMPLIED>
|
||||
|
||||
<!ATTLIST deroute
|
||||
block CDATA #REQUIRED>
|
||||
|
||||
<!ATTLIST include
|
||||
name CDATA #REQUIRED
|
||||
procedure CDATA #REQUIRED
|
||||
x CDATA #IMPLIED
|
||||
y CDATA #IMPLIED
|
||||
rotate CDATA #IMPLIED>
|
||||
|
||||
<!ATTLIST arg
|
||||
name CDATA #REQUIRED
|
||||
value CDATA #REQUIRED>
|
||||
|
||||
<!ATTLIST with
|
||||
from CDATA #REQUIRED
|
||||
to CDATA #REQUIRED>
|
||||
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
<!DOCTYPE procedure SYSTEM "procedure.dtd">
|
||||
|
||||
<procedure>
|
||||
<param name="alt"/>
|
||||
<param name="radius" default_value="75"/>
|
||||
|
||||
<waypoints>
|
||||
<waypoint name="c1" x="0" y="0"/>
|
||||
<waypoint name="c2" x="300" y="0"/>
|
||||
</waypoints>
|
||||
|
||||
<blocks>
|
||||
<block name="loop">
|
||||
<exception cond="(RcEvent1())" deroute="event1"/>
|
||||
<while>
|
||||
<go hmode="route" alt="alt"
|
||||
from="c1" from_qdr="0" from_dist="radius"
|
||||
wp="c2" wp_qdr="0" wp_dist="radius"/>
|
||||
<circle wp="c2" radius="radius" until="Qdr(180)" alt="alt"/>
|
||||
<go hmode="route" alt="alt"
|
||||
from="c2" from_qdr="180" from_dist="radius"
|
||||
wp="c1" wp_qdr="180" wp_dist="radius"/>
|
||||
<circle wp="c1" radius="radius" until="Qdr(0)" alt="alt"/>
|
||||
</while>
|
||||
</block>
|
||||
</blocks>
|
||||
</procedure>
|
||||
@@ -0,0 +1,44 @@
|
||||
<flight_plan name="8 - ricou"
|
||||
lat0="43.237535" lon0="1.327747"
|
||||
ref_pos="ricou"
|
||||
qfu="225" ground_alt="390" security_height="25" alt = "490">
|
||||
|
||||
<rc_control>
|
||||
<mode name="AUTO1">
|
||||
<setting var="ir_pitch_neutral" rc="gain_1_up" type="int16" range="60."/>
|
||||
<setting var="pitch_pgain" rc="gain_1_down" type="float" range = "-1000."/>
|
||||
<setting var="ir_roll_neutral" rc="gain_2_up" type="int16" range="-60."/>
|
||||
<setting var="roll_pgain" rc="gain_2_down" type="float" range="-1000."/>
|
||||
</mode>
|
||||
<mode name="AUTO2">
|
||||
<setting var="course_pgain" rc="gain_1_up" type="float" range="0.1"/>
|
||||
<setting var="max_roll" rc="gain_1_down" type="float" range = ".2"/>
|
||||
<setting var="pitch_of_roll" rc="gain_2_up" type="float" range="-0.2"/>
|
||||
</mode>
|
||||
</rc_control>
|
||||
|
||||
<waypoints>
|
||||
<waypoint name="HOME" x="-30" y="-100" alt="492"/>
|
||||
<waypoint x="150" y="-100"/>
|
||||
<waypoint x="150" y="-150"/>
|
||||
<waypoint x="-150" y="-100"/>
|
||||
<waypoint x="-150" y="-150"/>
|
||||
</waypoints>
|
||||
|
||||
<blocks>
|
||||
<block name="init">
|
||||
<while cond="(estimator_flight_time)"></while>
|
||||
<heading course="QFU" vmode="climb" climb="2.0" until="(estimator_z > SECURITY_ALT)"/>
|
||||
</block>
|
||||
|
||||
<block name="balaye">
|
||||
<while>
|
||||
<go wp="1" hmode="route" vmode="alt" alt="465"/>
|
||||
<go wp="2" hmode="direct" vmode="alt" alt="465"/>
|
||||
<go wp="3" hmode="route" vmode="alt" alt="465"/>
|
||||
<go wp="4" hmode="direct" vmode="alt" alt="465"/>
|
||||
</while>
|
||||
</block>
|
||||
|
||||
</blocks>
|
||||
</flight_plan>
|
||||
@@ -0,0 +1,91 @@
|
||||
<!DOCTYPE flight_plan SYSTEM "flight_plan.dtd">
|
||||
|
||||
<flight_plan NAME="example - Muret1" LON0="1.27289" MAX_DIST_FROM_HOME="1000" GROUND_ALT="185" SECURITY_HEIGHT="25" QFU="270" ALT="250" LAT0="43.46223">
|
||||
<rc_control>
|
||||
<mode NAME="AUTO1">
|
||||
<setting VAR="ir_pitch_neutral" RANGE="60." RC="gain_1_up" TYPE="int16"/>
|
||||
<setting VAR="ir_roll_neutral" RANGE="-60." RC="gain_1_down" TYPE="int16"/>
|
||||
</mode>
|
||||
<mode NAME="AUTO2">
|
||||
<setting VAR="course_pgain" RANGE="0.1" RC="gain_1_up" TYPE="float"/>
|
||||
<setting VAR="pitch_of_roll" RANGE=".2" RC="gain_1_down" TYPE="float"/>
|
||||
</mode>
|
||||
</rc_control>
|
||||
<waypoints utm_x0="360284.8" utm_y0="4813595.5">
|
||||
<waypoint name="AF" x="267.5" y="35.0" lat="43.4625948985" lon="1.27618631405" alt="215."/>
|
||||
<waypoint name="3" x="25.0" y="285.0" lat="43.464799741" lon="1.27312587027" alt="250."/>
|
||||
<waypoint name="4" x="162.5" y="210.0" lat="43.4641503744" lon="1.27484411158" alt="250."/>
|
||||
<waypoint name="5" x="97.5" y="60.0" lat="43.4627882109" lon="1.27407935592" alt="250."/>
|
||||
<waypoint name="2" x="-130.0" y="217.5" lat="43.4641632754" lon="1.27122790867" alt="250."/>
|
||||
<waypoint name="1" x="-100.0" y="60.0" lat="43.4627513408" lon="1.2716390001" alt="250."/>
|
||||
<waypoint name="RWAY" x="0.0" y="30.0" lat="43.4625000078" lon="1.27288231142" alt="185."/>
|
||||
<waypoint name="HOME" x="0.0" y="30.0" lat="43.4625000078" lon="1.27288231142" alt="250."/>
|
||||
<waypoint name="IAF" x="267.5" y="200.0" alt="250."/>
|
||||
</waypoints>
|
||||
|
||||
<include name="slow" procedure="circles.xml" x="00" y="200" rotate="0">
|
||||
<arg name="vz" value="0.5"/>
|
||||
<arg name="top" value="GROUND_ALT+200"/>
|
||||
<arg name="bottom" value="GROUND_ALT+50"/>
|
||||
<with from="event1" to="fast.climb"/>
|
||||
</include>
|
||||
|
||||
<include name="fast" procedure="circles.xml" x="00" y="200" rotate="0">
|
||||
<arg name="rad" value="150"/>
|
||||
<arg name="bottom" value="GROUND_ALT+50"/>
|
||||
<with from="event1" to="xyz"/>
|
||||
</include>
|
||||
|
||||
<include name="hippo1" procedure="hippo.xml" x="-100" y="150" rotate="0">
|
||||
<arg name="alt" value="GROUND_ALT+100"/>
|
||||
<with from="event1" to="penta"/>
|
||||
</include>
|
||||
|
||||
<blocks>
|
||||
<block NAME="init">
|
||||
<while COND="(!launch)"/>
|
||||
<heading VMODE="gaz" GAZ="0.8" PITCH="0.15" COURSE="QFU" UNTIL="(estimator_flight_time > 8)"/>
|
||||
<heading CLIMB="3.0" VMODE="climb" PITCH="0.15" COURSE="QFU" UNTIL="(estimator_z > SECURITY_ALT)"/>
|
||||
</block>
|
||||
|
||||
<block NAME="deux">
|
||||
<exception COND="(RcEvent1())" DEROUTE="hippo1.loop"/>
|
||||
<circle WP="HOME" alt="GROUND_ALT+50" radius="75"/>
|
||||
</block>
|
||||
|
||||
<block NAME="penta">
|
||||
<exception COND="(RcEvent1())" DEROUTE="slow.climb"/>
|
||||
<while>
|
||||
<go hmode="route" from="1" wp="2"/>
|
||||
<go hmode="route" from="2" wp="3"/>
|
||||
<go hmode="route" from="3" wp="4"/>
|
||||
<go hmode="route" from="4" wp="1"/>
|
||||
</while>
|
||||
</block>
|
||||
<block NAME="xyz">
|
||||
<exception COND="(RcEvent1())" DEROUTE="land"/>
|
||||
<xyz/>
|
||||
</block>
|
||||
|
||||
<block NAME="land">
|
||||
<exception COND="(RcEvent1())" DEROUTE="rdg"/>
|
||||
<exception COND="(GROUND_ALT+10> estimator_z)" DEROUTE="rdg"/>
|
||||
<exception COND="(RcEvent2())" DEROUTE="stop"/>
|
||||
<circle WP="2" radius="50" ALT="215" UNTIL="And(225 > estimator_z, Qdr(0))"/>
|
||||
<go WP="IAF" ALT="215"/>
|
||||
<go WP="AF" ALT="215"/>
|
||||
<go WP="RWAY" HMODE="route" VMODE="glide"/>
|
||||
</block>
|
||||
|
||||
<block NAME="rdg">
|
||||
<exception COND="(RcEvent1())" DEROUTE="land"/>
|
||||
<heading CLIMB="2.0" VMODE="climb" PITCH="0.15" COURSE="QFU" UNTIL="(estimator_z > GROUND_ALT+25)"/>
|
||||
<deroute block="land"/>
|
||||
</block>
|
||||
<block name="stop">
|
||||
<exception COND="(RcEvent1())" DEROUTE="rdg"/>
|
||||
<stay wp="HOME" vmode="gaz" gaz="0"/>
|
||||
</block>
|
||||
</blocks>
|
||||
</flight_plan>
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
<!DOCTYPE flight_plan SYSTEM "flight_plan.dtd">
|
||||
|
||||
<flight_plan NAME="example t2 - Muret" LON0="1.27289" MAX_DIST_FROM_HOME="1000" GROUND_ALT="185" SECURITY_HEIGHT="25" QFU="270" ALT="250" LAT0="43.46223">
|
||||
<rc_control>
|
||||
<mode NAME="AUTO1">
|
||||
<setting VAR="ir_pitch_neutral" RANGE="60." RC="gain_1_up" TYPE="int16"/>
|
||||
<setting VAR="ir_roll_neutral" RANGE="-60." RC="gain_1_down" TYPE="int16"/>
|
||||
</mode>
|
||||
<mode NAME="AUTO2">
|
||||
<setting VAR="course_pgain" RANGE="0.1" RC="gain_1_up" TYPE="float"/>
|
||||
<setting VAR="pitch_of_roll" RANGE=".2" RC="gain_1_down" TYPE="float"/>
|
||||
</mode>
|
||||
</rc_control>
|
||||
<waypoints utm_x0="360284.8" utm_y0="4813595.5">
|
||||
<waypoint name="AF" x="267.5" y="35.0" lat="43.4625948985" lon="1.27618631405" alt="215."/>
|
||||
<waypoint name="3" x="25.0" y="285.0" lat="43.464799741" lon="1.27312587027" alt="250."/>
|
||||
<waypoint name="4" x="162.5" y="210.0" lat="43.4641503744" lon="1.27484411158" alt="250."/>
|
||||
<waypoint name="5" x="97.5" y="60.0" lat="43.4627882109" lon="1.27407935592" alt="250."/>
|
||||
<waypoint name="2" x="-130.0" y="217.5" lat="43.4641632754" lon="1.27122790867" alt="250."/>
|
||||
<waypoint name="1" x="-100.0" y="60.0" lat="43.4627513408" lon="1.2716390001" alt="250."/>
|
||||
<waypoint name="RWAY" x="0.0" y="30.0" lat="43.4625000078" lon="1.27288231142" alt="185."/>
|
||||
<waypoint name="HOME" x="0.0" y="30.0" lat="43.4625000078" lon="1.27288231142" alt="250."/>
|
||||
<waypoint name="IAF" x="267.5" y="200.0" alt="250."/>
|
||||
</waypoints>
|
||||
|
||||
<include name="slow" procedure="circles.xml" x="00" y="200" rotate="0">
|
||||
<arg name="vz" value="0.5"/>
|
||||
<arg name="top" value="GROUND_ALT+200"/>
|
||||
<arg name="bottom" value="GROUND_ALT+50"/>
|
||||
<with from="event1" to="fast.climb"/>
|
||||
</include>
|
||||
|
||||
<include name="fast" procedure="circles.xml" x="00" y="200" rotate="0">
|
||||
<arg name="rad" value="150"/>
|
||||
<arg name="bottom" value="GROUND_ALT+50"/>
|
||||
<with from="event1" to="xyz"/>
|
||||
</include>
|
||||
|
||||
<include name="hippo1" procedure="hippo.xml" x="-100" y="150" rotate="0">
|
||||
<arg name="alt" value="GROUND_ALT+100"/>
|
||||
<with from="event1" to="huit"/>
|
||||
</include>
|
||||
|
||||
<blocks>
|
||||
<block NAME="init">
|
||||
<while COND="(!launch)"/>
|
||||
<heading VMODE="gaz" GAZ="0.8" PITCH="0.15" COURSE="QFU" UNTIL="(estimator_flight_time > 8)"/>
|
||||
<heading CLIMB="3.0" VMODE="climb" PITCH="0.15" COURSE="QFU" UNTIL="(estimator_z > SECURITY_ALT)"/>
|
||||
</block>
|
||||
|
||||
<block NAME="deux">
|
||||
<exception COND="(RcEvent1())" DEROUTE="hippo1.loop"/>
|
||||
<circle WP="HOME" alt="GROUND_ALT+50" radius="75"/>
|
||||
</block>
|
||||
|
||||
<block NAME="huit">
|
||||
<exception COND="(RcEvent1())" DEROUTE="slow.climb"/>
|
||||
<while>
|
||||
<go from="5" WP="1" HMODE="route"/>
|
||||
<go WP="2" HMODE="route"/>
|
||||
<go WP="3" HMODE="route"/>
|
||||
<go WP="4" HMODE="route"/>
|
||||
<go WP="5" HMODE="route"/>
|
||||
</while>
|
||||
</block>
|
||||
<block NAME="xyz">
|
||||
<exception COND="(RcEvent1())" DEROUTE="land"/>
|
||||
<xyz/>
|
||||
</block>
|
||||
|
||||
<block NAME="land">
|
||||
<exception COND="(RcEvent1())" DEROUTE="rdg"/>
|
||||
<exception COND="(GROUND_ALT+10> estimator_z)" DEROUTE="rdg"/>
|
||||
<exception COND="(RcEvent2())" DEROUTE="stop"/>
|
||||
<circle WP="2" radius="50" ALT="215" UNTIL="And(225 > estimator_z, Qdr(0))"/>
|
||||
<go WP="IAF" ALT="215"/>
|
||||
<go WP="AF" ALT="215"/>
|
||||
<go WP="RWAY" HMODE="route" VMODE="glide"/>
|
||||
</block>
|
||||
|
||||
<block NAME="rdg">
|
||||
<exception COND="(RcEvent1())" DEROUTE="land"/>
|
||||
<heading CLIMB="2.0" VMODE="climb" PITCH="0.15" COURSE="QFU" UNTIL="(estimator_z > GROUND_ALT+25)"/>
|
||||
<deroute block="land"/>
|
||||
</block>
|
||||
<block name="stop">
|
||||
<exception COND="(RcEvent1())" DEROUTE="rdg"/>
|
||||
<stay wp="HOME" vmode="gaz" gaz="0"/>
|
||||
</block>
|
||||
</blocks>
|
||||
</flight_plan>
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
<!DOCTYPE flight_plan SYSTEM "flight_plan.dtd">
|
||||
|
||||
<flight_plan NAME="example t2 - Muret" LON0="1.27289" MAX_DIST_FROM_HOME="1000" GROUND_ALT="185" SECURITY_HEIGHT="25" QFU="270" ALT="250" LAT0="43.46223">
|
||||
<rc_control>
|
||||
<mode NAME="AUTO1">
|
||||
<setting VAR="ir_pitch_neutral" RANGE="60." RC="gain_1_up" TYPE="int16"/>
|
||||
<setting VAR="ir_roll_neutral" RANGE="-60." RC="gain_1_down" TYPE="int16"/>
|
||||
</mode>
|
||||
<mode NAME="AUTO2">
|
||||
<setting VAR="course_pgain" RANGE="0.1" RC="gain_1_up" TYPE="float"/>
|
||||
<setting VAR="pitch_of_roll" RANGE=".2" RC="gain_1_down" TYPE="float"/>
|
||||
</mode>
|
||||
</rc_control>
|
||||
<waypoints utm_x0="360284.8" utm_y0="4813595.5">
|
||||
<waypoint name="AF" x="267.5" y="35.0" lat="43.4625948985" lon="1.27618631405" alt="215."/>
|
||||
<waypoint name="3" x="25.0" y="285.0" lat="43.464799741" lon="1.27312587027" alt="250."/>
|
||||
<waypoint name="4" x="162.5" y="210.0" lat="43.4641503744" lon="1.27484411158" alt="250."/>
|
||||
<waypoint name="5" x="97.5" y="60.0" lat="43.4627882109" lon="1.27407935592" alt="250."/>
|
||||
<waypoint name="2" x="-130.0" y="217.5" lat="43.4641632754" lon="1.27122790867" alt="250."/>
|
||||
<waypoint name="1" x="-100.0" y="60.0" lat="43.4627513408" lon="1.2716390001" alt="250."/>
|
||||
<waypoint name="RWAY" x="0.0" y="30.0" lat="43.4625000078" lon="1.27288231142" alt="185."/>
|
||||
<waypoint name="HOME" x="0.0" y="30.0" lat="43.4625000078" lon="1.27288231142" alt="250."/>
|
||||
<waypoint name="IAF" x="267.5" y="200.0" alt="250."/>
|
||||
</waypoints>
|
||||
|
||||
<include name="slow" procedure="circles.xml" x="00" y="200" rotate="0">
|
||||
<arg name="vz" value="0.5"/>
|
||||
<arg name="top" value="GROUND_ALT+200"/>
|
||||
<arg name="bottom" value="GROUND_ALT+50"/>
|
||||
<with from="event1" to="fast.climb"/>
|
||||
</include>
|
||||
|
||||
<include name="fast" procedure="circles.xml" x="00" y="200" rotate="0">
|
||||
<arg name="rad" value="150"/>
|
||||
<arg name="bottom" value="GROUND_ALT+50"/>
|
||||
<with from="event1" to="xyz"/>
|
||||
</include>
|
||||
|
||||
<include name="hippo1" procedure="hippo.xml" x="-100" y="150" rotate="0">
|
||||
<arg name="alt" value="GROUND_ALT+100"/>
|
||||
<with from="event1" to="huit"/>
|
||||
</include>
|
||||
|
||||
<blocks>
|
||||
<block NAME="init">
|
||||
<while COND="(!launch)"/>
|
||||
<heading VMODE="gaz" GAZ="0.8" PITCH="0.15" COURSE="QFU" UNTIL="(estimator_flight_time > 8)"/>
|
||||
<heading CLIMB="3.0" VMODE="climb" PITCH="0.15" COURSE="QFU" UNTIL="(estimator_z > SECURITY_ALT)"/>
|
||||
</block>
|
||||
|
||||
<block NAME="deux">
|
||||
<exception COND="(RcEvent1())" DEROUTE="hippo1.loop"/>
|
||||
<circle WP="HOME" alt="GROUND_ALT+50" radius="75"/>
|
||||
</block>
|
||||
|
||||
<block NAME="huit">
|
||||
<exception COND="(RcEvent1())" DEROUTE="slow.climb"/>
|
||||
<while>
|
||||
<go from="5" WP="1" HMODE="route"/>
|
||||
<go WP="2" HMODE="route"/>
|
||||
<go WP="3" HMODE="route"/>
|
||||
<go WP="4" HMODE="route"/>
|
||||
<go WP="5" HMODE="route"/>
|
||||
</while>
|
||||
</block>
|
||||
<block NAME="xyz">
|
||||
<exception COND="(RcEvent1())" DEROUTE="land"/>
|
||||
<xyz/>
|
||||
</block>
|
||||
|
||||
<block NAME="land">
|
||||
<exception COND="(RcEvent1())" DEROUTE="rdg"/>
|
||||
<exception COND="(GROUND_ALT+10> estimator_z)" DEROUTE="rdg"/>
|
||||
<exception COND="(RcEvent2())" DEROUTE="stop"/>
|
||||
<circle WP="2" radius="50" ALT="215" UNTIL="And(225 > estimator_z, Qdr(0))"/>
|
||||
<go WP="IAF" ALT="215"/>
|
||||
<go WP="AF" ALT="215"/>
|
||||
<go WP="RWAY" HMODE="route" VMODE="glide"/>
|
||||
</block>
|
||||
|
||||
<block NAME="rdg">
|
||||
<exception COND="(RcEvent1())" DEROUTE="land"/>
|
||||
<heading CLIMB="2.0" VMODE="climb" PITCH="0.15" COURSE="QFU" UNTIL="(estimator_z > GROUND_ALT+25)"/>
|
||||
<deroute block="land"/>
|
||||
</block>
|
||||
<block name="stop">
|
||||
<exception COND="(RcEvent1())" DEROUTE="rdg"/>
|
||||
<stay wp="HOME" vmode="gaz" gaz="0"/>
|
||||
</block>
|
||||
</blocks>
|
||||
</flight_plan>
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
<!-- Paparazzi procedure DTD -->
|
||||
|
||||
<!ELEMENT procedure (param*,waypoints,blocks)>
|
||||
|
||||
<!ELEMENT param EMPTY>
|
||||
|
||||
<!ELEMENT waypoints (waypoint+)>
|
||||
<!ELEMENT waypoint EMPTY>
|
||||
|
||||
<!ELEMENT blocks (block+)>
|
||||
<!ELEMENT block (exception|while|heading|go|xyz|circle|deroute|stay)*>
|
||||
|
||||
<!ELEMENT while (while|heading|go|xyz|circle|deroute|stay)*>
|
||||
<!ELEMENT exception EMPTY>
|
||||
<!ELEMENT heading EMPTY>
|
||||
<!ELEMENT go EMPTY>
|
||||
<!ELEMENT xyz EMPTY>
|
||||
<!ELEMENT circle EMPTY>
|
||||
<!ELEMENT deroute EMPTY>
|
||||
<!ELEMENT stay EMPTY>
|
||||
|
||||
<!ATTLIST waypoint
|
||||
name CDATA #REQUIRED
|
||||
x CDATA #REQUIRED
|
||||
y CDATA #REQUIRED
|
||||
lat CDATA #IMPLIED
|
||||
lon CDATA #IMPLIED
|
||||
alt CDATA #IMPLIED>
|
||||
|
||||
<!ATTLIST block name CDATA #REQUIRED>
|
||||
|
||||
<!ATTLIST while cond CDATA #IMPLIED>
|
||||
|
||||
<!ATTLIST exception
|
||||
cond CDATA #REQUIRED
|
||||
deroute CDATA #REQUIRED>
|
||||
|
||||
<!ATTLIST heading
|
||||
course CDATA #REQUIRED
|
||||
vmode CDATA #IMPLIED
|
||||
gaz CDATA #IMPLIED
|
||||
climb CDATA #IMPLIED
|
||||
pitch CDATA #IMPLIED
|
||||
until CDATA #IMPLIED>
|
||||
|
||||
<!ATTLIST go
|
||||
wp CDATA #REQUIRED
|
||||
wp_qdr CDATA #IMPLIED
|
||||
wp_dist CDATA #IMPLIED
|
||||
from CDATA #IMPLIED
|
||||
from_qdr CDATA #IMPLIED
|
||||
from_dist CDATA #IMPLIED
|
||||
hmode CDATA #IMPLIED
|
||||
vmode CDATA #IMPLIED
|
||||
alt CDATA #IMPLIED
|
||||
until CDATA #IMPLIED
|
||||
gaz CDATA #IMPLIED>
|
||||
|
||||
<!ATTLIST xyz
|
||||
radius CDATA #IMPLIED>
|
||||
|
||||
<!ATTLIST circle
|
||||
wp CDATA #REQUIRED
|
||||
radius CDATA #REQUIRED
|
||||
alt CDATA #IMPLIED
|
||||
vmode CDATA #IMPLIED
|
||||
climb CDATA #IMPLIED
|
||||
until CDATA #IMPLIED>
|
||||
|
||||
<!ATTLIST stay
|
||||
wp CDATA #REQUIRED
|
||||
vmode CDATA #IMPLIED
|
||||
gaz CDATA #IMPLIED>
|
||||
|
||||
<!ATTLIST deroute
|
||||
block CDATA #REQUIRED>
|
||||
|
||||
<!ATTLIST param
|
||||
name CDATA #REQUIRED
|
||||
default_value CDATA #IMPLIED>
|
||||
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<section name="hosts">
|
||||
<host addr="00 01 18 04 c0 00 4f" name="ground_station">
|
||||
<host addr="00 01 18 04 c0 00 51" name="Morue1">
|
||||
<host addr="00 01 18 04 c0 00 52" name="Morue2">
|
||||
<host addr="00 01 18 04 c0 00 53" name="Thon1">
|
||||
<host addr="00 01 18 04 c0 00 54" name="Thon2">
|
||||
</section>
|
||||
@@ -0,0 +1,226 @@
|
||||
<install>
|
||||
|
||||
<section name="binaries" dest="bin" comment="main program">
|
||||
<file name="sw/supervision/paparazzi.pl"/>
|
||||
</section>
|
||||
|
||||
<section name="priv_binaries" dest="share/paparazzi/bin" comment="helpers program">
|
||||
<file name="sw/configurator/medit.out"/>
|
||||
<file name="sw/ground_segment/cockpit/cockpit.pl"/>
|
||||
<file name="sw/ground_segment/cockpit/map.pl"/>
|
||||
<file name="sw/ground_segment/cockpit/map2d.opt"/>
|
||||
<file name="sw/ground_segment/speech/paparazzi_speak.pl"/>
|
||||
<file name="sw/ground_segment/tmtc/messages.opt"/>
|
||||
<file name="sw/ground_segment/tmtc/receive.opt"/>
|
||||
<file name="sw/ground_segment/visu3d/mapGL.opt"/>
|
||||
<file name="sw/logalizer/play.opt"/>
|
||||
<file name="sw/simulator/gen_downlink.out"/>
|
||||
<file name="sw/simulator/simsitl.pl"/>
|
||||
<file name="sw/tools/gen_aircraft.out"/>
|
||||
<file name="sw/tools/gen_airframe.out"/>
|
||||
<file name="sw/tools/gen_calib.out"/>
|
||||
<file name="sw/tools/gen_flight_plan.out"/>
|
||||
<file name="sw/tools/gen_messages.out"/>
|
||||
<file name="sw/tools/gen_radio.out"/>
|
||||
<file name="sw/tools/gen_ubx.out"/>
|
||||
</section>
|
||||
|
||||
<section name="perl_lib" dest="lib/perl5/Paparazzi" comment="perl modules">
|
||||
<!--
|
||||
<directory name="sw/lib/perl/Paparazzi"/>
|
||||
<directory name="sw/ground_segment/cockpit/Paparazzi"/>
|
||||
-->
|
||||
<file name="sw/lib/perl/Paparazzi/CpPgmMgr.pm"/>
|
||||
<file name="sw/lib/perl/Paparazzi/CpSessionMgr.pm"/>
|
||||
<file name="sw/lib/perl/Paparazzi/CpGui.pm"/>
|
||||
<file name="sw/lib/perl/Paparazzi/Environment.pm"/>
|
||||
<file name="sw/lib/perl/Paparazzi/IvyProtocol.pm"/>
|
||||
<file name="sw/lib/perl/Paparazzi/Utils.pm"/>
|
||||
<file name="sw/ground_segment/cockpit/Paparazzi/EngineView.pm"/>
|
||||
<file name="sw/ground_segment/cockpit/Paparazzi/Horizon.pm"/>
|
||||
<file name="sw/ground_segment/cockpit/Paparazzi/LensScale.pm"/>
|
||||
<file name="sw/ground_segment/cockpit/Paparazzi/MapView.pm"/>
|
||||
<file name="sw/ground_segment/cockpit/Paparazzi/MissionD.pm"/>
|
||||
<file name="sw/ground_segment/cockpit/Paparazzi/PFD.pm"/>
|
||||
<file name="sw/ground_segment/cockpit/Paparazzi/PFD_Panel.pm"/>
|
||||
<file name="sw/ground_segment/cockpit/Paparazzi/RotaryGauge.pm"/>
|
||||
<file name="sw/ground_segment/cockpit/Paparazzi/SatSigView.pm"/>
|
||||
<file name="sw/ground_segment/cockpit/Paparazzi/SatView.pm"/>
|
||||
<file name="sw/ground_segment/cockpit/Paparazzi/Scale.pm"/>
|
||||
<file name="sw/ground_segment/cockpit/Paparazzi/Strip.pm"/>
|
||||
<file name="sw/ground_segment/cockpit/Paparazzi/StripPanel.pm"/>
|
||||
</section>
|
||||
|
||||
<section name="conf" dest="share/paparazzi/conf">
|
||||
<file name="conf/Makefile.avr"/>
|
||||
<file name="conf/Makefile.local"/>
|
||||
<file name="conf/ubx.xml"/>
|
||||
<file name="conf/ubx.dtd"/>
|
||||
<file name="conf/conf.xml"/>
|
||||
<file name="conf/control_panel.xml.sys" new_name="control_panel.xml"/>
|
||||
<file name="conf/ground_segment.xml"/>
|
||||
<file name="conf/hosts_wavecard.xml"/>
|
||||
<file name="conf/messages.xml"/>
|
||||
<file name="conf/wavecard.xml"/>
|
||||
</section>
|
||||
|
||||
<section name="conf_airframes" dest="share/paparazzi/conf/airframes">
|
||||
<file name="conf/airframes/twinstar1.xml"/>
|
||||
<file name="conf/airframes/twinstar2.xml"/>
|
||||
<file name="conf/airframes/microjet1.xml"/>
|
||||
<file name="conf/airframes/microjet2.xml"/>
|
||||
</section>
|
||||
|
||||
<section name="conf_flight_plans" dest="share/paparazzi/conf/flight_plans">
|
||||
<file name="conf/flight_plans/circles.xml"/>
|
||||
<file name="conf/flight_plans/flight_plan.dtd"/>
|
||||
<file name="conf/flight_plans/hippo.xml"/>
|
||||
<file name="conf/flight_plans/huit.xml"/>
|
||||
<file name="conf/flight_plans/muret1.xml"/>
|
||||
<file name="conf/flight_plans/muret2.xml"/>
|
||||
<file name="conf/flight_plans/muret3.xml"/>
|
||||
<file name="conf/flight_plans/procedure.dtd"/>
|
||||
</section>
|
||||
|
||||
<section name="conf_radios" dest="share/paparazzi/conf/radios">
|
||||
<file name="conf/radios/cockpitMM.xml"/>
|
||||
<file name="conf/radios/mc3030.xml"/>
|
||||
<file name="conf/radios/fc28.xml"/>
|
||||
</section>
|
||||
|
||||
<section name="data_SRTM" dest="share/paparazzi/data/SRTM">
|
||||
<file name="data/SRTM/N43E001.hgt"/>
|
||||
</section>
|
||||
|
||||
<section name="data_maps" dest="share/paparazzi/data/maps">
|
||||
<file name="data/maps/muret_UTM.xml"/>
|
||||
<file name="data/maps/muret_UTM.gif"/>
|
||||
<file name="data/maps/nasa_strasbourg.xml"/>
|
||||
<file name="data/maps/nasa_strasbourg.jpg"/>
|
||||
</section>
|
||||
|
||||
<section name="data_pictures" dest="share/paparazzi/data/pictures">
|
||||
<file name="data/pictures/penguin_logo.gif"/>
|
||||
<file name="data/pictures/fc28.gif"/>
|
||||
<file name="data/pictures/cockpitMM.gif"/>
|
||||
</section>
|
||||
|
||||
<section name="main_makefiles" dest="share/paparazzi/">
|
||||
<file name="Makefile"/>
|
||||
<file name="Makefile.gen"/>
|
||||
<file name="Makefile.ac"/>
|
||||
</section>
|
||||
|
||||
<section name="sw_lib_ocaml" dest="share/paparazzi/sw/lib/ocaml" comment="ocaml objects and libs needed during airborne code generation">
|
||||
<file name="sw/lib/ocaml/env.cmo"/>
|
||||
<file name="sw/lib/ocaml/env.cmi"/>
|
||||
<file name="sw/lib/ocaml/extXml.cmo"/>
|
||||
<file name="sw/lib/ocaml/extXml.cmi"/>
|
||||
<file name="sw/lib/ocaml/latlong.cmo"/>
|
||||
<file name="sw/lib/ocaml/latlong.cmi"/>
|
||||
<file name="sw/lib/ocaml/xml2h.cmo"/>
|
||||
<file name="sw/lib/ocaml/xml2h.cmi"/>
|
||||
<file name="sw/lib/ocaml/lib.cma"/>
|
||||
<file name="sw/lib/ocaml/liblib.a"/>
|
||||
</section>
|
||||
|
||||
<section name="sw_simulator" dest="share/paparazzi/sw/simulator" comment="ocaml objects and C hooks for airborne code simulation">
|
||||
<file name="sw/simulator/Makefile"/>
|
||||
<file name="sw/simulator/data.ml"/>
|
||||
<file name="sw/simulator/events.ml"/>
|
||||
<file name="sw/simulator/flightModel.ml"/>
|
||||
<file name="sw/simulator/flightModel.mli"/>
|
||||
<file name="sw/simulator/flightModelHeli.ml.sav"/>
|
||||
<file name="sw/simulator/gen_downlink.ml"/>
|
||||
<file name="sw/simulator/gps.ml"/>
|
||||
<file name="sw/simulator/gui.ml"/>
|
||||
<file name="sw/simulator/hitl.ml"/>
|
||||
<file name="sw/simulator/hitl.mli"/>
|
||||
<file name="sw/simulator/sim.ml"/>
|
||||
<file name="sw/simulator/sim.mli"/>
|
||||
<file name="sw/simulator/sim_ap.c"/>
|
||||
<file name="sw/simulator/sim_gps.c"/>
|
||||
<file name="sw/simulator/sim_ir.c"/>
|
||||
<file name="sw/simulator/simhitl.ml"/>
|
||||
<file name="sw/simulator/simsitl.ml"/>
|
||||
<file name="sw/simulator/simsitl.pl"/>
|
||||
<file name="sw/simulator/sirf.ml"/>
|
||||
<file name="sw/simulator/sitl.ml"/>
|
||||
<file name="sw/simulator/sitl.mli"/>
|
||||
<file name="sw/simulator/stdlib.ml"/>
|
||||
<file name="sw/simulator/timer.h"/>
|
||||
<file name="sw/simulator/types.ml"/>
|
||||
</section>
|
||||
|
||||
<section name="sw_include" dest="share/paparazzi/sw/include" comment="common headers for airborne code">
|
||||
<file name="sw/include/std.h"/>
|
||||
</section>
|
||||
|
||||
<section name="sw_fly_by_wire" dest="share/paparazzi/sw/airborne/fly_by_wire" comment="airborne code for the mega8 - aka flybywire MCU">
|
||||
<file name="sw/airborne/fly_by_wire/Makefile"/>
|
||||
<file name="sw/airborne/fly_by_wire/README"/>
|
||||
<file name="sw/airborne/fly_by_wire/adc_fbw.h" comment="analog to digital converter handling header"/>
|
||||
<file name="sw/airborne/fly_by_wire/adc_fbw.c" comment="analog to digital converter handling code"/>
|
||||
<file name="sw/airborne/fly_by_wire/link_autopilot.h" comment="protocol for spi link with autopilot MCU"/>
|
||||
<file name="sw/airborne/fly_by_wire/main.c" comment="initialisation and main loop"/>
|
||||
<file name="sw/airborne/fly_by_wire/ppm.h" comment="radio control decoder header"/>
|
||||
<file name="sw/airborne/fly_by_wire/ppm.c" comment="radio control decoder code"/>
|
||||
<file name="sw/airborne/fly_by_wire/servo.h" comment="servo pulse generation header"/>
|
||||
<file name="sw/airborne/fly_by_wire/servo.c" comment="servo pulse generation code"/>
|
||||
<file name="sw/airborne/fly_by_wire/spi.h" comment="serial peripheral interface handling header"/>
|
||||
<file name="sw/airborne/fly_by_wire/spi.c" comment="serial peripheral interface handling code"/>
|
||||
<file name="sw/airborne/fly_by_wire/timer.h" comment="timer handling code"/>
|
||||
<file name="sw/airborne/fly_by_wire/uart.h" comment="buffered asynchronous serial port handling header"/>
|
||||
<file name="sw/airborne/fly_by_wire/uart.c" comment="buffered asynchronous serial port handling code"/>
|
||||
</section>
|
||||
|
||||
<section name="sw_autopilot" dest="share/paparazzi/sw/airborne/autopilot" comment="airborne code for the mega128 - aka autopilot MCU">
|
||||
<file name="sw/airborne/autopilot/Makefile"/>
|
||||
<file name="sw/airborne/autopilot/README"/>
|
||||
<file name="sw/airborne/autopilot/adc.h" comment="analog to digital converter handling header"/>
|
||||
<file name="sw/airborne/autopilot/adc.c" comment="analog to digital converter handling code"/>
|
||||
<file name="sw/airborne/autopilot/autopilot.h"/>
|
||||
<file name="sw/airborne/autopilot/downlink.h"/>
|
||||
<file name="sw/airborne/autopilot/estimator.c"/>
|
||||
<file name="sw/airborne/autopilot/estimator.h"/>
|
||||
<file name="sw/airborne/autopilot/gps.h"/>
|
||||
<file name="sw/airborne/autopilot/gps_sirf.c"/>
|
||||
<file name="sw/airborne/autopilot/gps_ubx.c"/>
|
||||
<file name="sw/airborne/autopilot/if_calib.c"/>
|
||||
<file name="sw/airborne/autopilot/if_calib.h"/>
|
||||
<file name="sw/airborne/autopilot/infrared.c"/>
|
||||
<file name="sw/airborne/autopilot/infrared.h"/>
|
||||
<file name="sw/airborne/autopilot/link_fbw.c"/>
|
||||
<file name="sw/airborne/autopilot/link_fbw.h"/>
|
||||
<file name="sw/airborne/autopilot/lls.c"/>
|
||||
<file name="sw/airborne/autopilot/lls.h"/>
|
||||
<file name="sw/airborne/autopilot/main.c"/>
|
||||
<file name="sw/airborne/autopilot/mainloop.c"/>
|
||||
<file name="sw/airborne/autopilot/modem.c"/>
|
||||
<file name="sw/airborne/autopilot/modem.h"/>
|
||||
<file name="sw/airborne/autopilot/nav.c"/>
|
||||
<file name="sw/airborne/autopilot/nav.h"/>
|
||||
<file name="sw/airborne/autopilot/pid.c"/>
|
||||
<file name="sw/airborne/autopilot/pid.h"/>
|
||||
<file name="sw/airborne/autopilot/sirf.h"/>
|
||||
<file name="sw/airborne/autopilot/spi.c"/>
|
||||
<file name="sw/airborne/autopilot/spi.h"/>
|
||||
<file name="sw/airborne/autopilot/timer.h"/>
|
||||
<file name="sw/airborne/autopilot/uart.c"/>
|
||||
<file name="sw/airborne/autopilot/uart.h"/>
|
||||
<file name="sw/airborne/autopilot/ubx.h"/>
|
||||
</section>
|
||||
|
||||
<section name="var_log" dest="share/paparazzi/var/logs">
|
||||
<file name="var/logs/04_12_29__15_11_08.log"/>
|
||||
</section>
|
||||
|
||||
<section name="var_Thon1_sim" dest="share/paparazzi/var/Thon1/sim">
|
||||
<file name="var/Thon1/sim/simsitl.out"/>
|
||||
</section>
|
||||
|
||||
<section name="var_Thon2_sim" dest="share/paparazzi/var/Thon2/sim">
|
||||
<file name="var/Thon2/sim/simsitl.out"/>
|
||||
</section>
|
||||
|
||||
</install>
|
||||
@@ -0,0 +1,314 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<protocol>
|
||||
|
||||
<class name="telemetry_ap" ID="0x40">
|
||||
|
||||
<message name="BOOT" ID="0x01">
|
||||
<field name="version" type="uint16"></field>
|
||||
</message>
|
||||
|
||||
<message name="CALIB_START" ID="0x02">
|
||||
</message>
|
||||
|
||||
<message name="CALIB_CONTRAST" ID="0x03">
|
||||
<field name="adc" type="int16"></field>
|
||||
</message>
|
||||
|
||||
<message name="TAKEOFF" ID="0x04">
|
||||
<field name="cpu_time" type="uint16" unit="s"></field>
|
||||
</message>
|
||||
|
||||
<message name="RAD_OF_IR" ID="0x05">
|
||||
<field name="ir" type="float" format="%.0f"></field>
|
||||
<field name="rad" type="float" format="%.2f"></field>
|
||||
<field name="rad_of_ir" type="float" format="%.4f"></field>
|
||||
<field name="ir_roll_ntrl" type="int16"></field>
|
||||
<field name="ir_pitch_ntrl" type="int16"></field>
|
||||
</message>
|
||||
|
||||
<message name="ATTITUDE" ID="0x06" period="0.5" >
|
||||
<field name="phi" type="float" format="%.2f" unit="rad"></field>
|
||||
<field name="psi" type="float" format="%.2f" unit="rad"></field>
|
||||
<field name="theta" type="float" format="%.2f" unit="rad"></field>
|
||||
</message>
|
||||
|
||||
<message name="ADC" ID="0x07" period="0.5" >
|
||||
<field name="roll" type="int16"></field>
|
||||
<field name="pitch" type="int16"></field>
|
||||
</message>
|
||||
|
||||
<message name="GPS" ID="0x08">
|
||||
<field name="mode" type="uint8" unit="byte_mask"></field>
|
||||
<field name="east" type="int32" unit="cm"></field>
|
||||
<field name="north" type="int32" unit="cm"></field>
|
||||
<field name="course" type="float" unit="rad" format="%.2f"></field>
|
||||
<field name="alt" type="float" unit="m" format="%.1f"></field>
|
||||
<field name="speed" type="float" unit="m/s" format="%.1f"></field>
|
||||
<field name="climb" type="float" unit="m/s" format="%.1f"></field>
|
||||
<field name="tow" type="float" unit="s" format="%.1f"></field>
|
||||
</message>
|
||||
|
||||
<message name="NAVIGATION_REF" ID="0x09" period="10" >
|
||||
<field name="utm_east" type="int32" unit="m"></field>
|
||||
<field name="utm_north" type="int32" unit="m"></field>
|
||||
</message>
|
||||
|
||||
<message name="NAVIGATION" ID="0x0A">
|
||||
<field name="cur_block" type="uint8"></field>
|
||||
<field name="cur_stage" type="uint8"></field>
|
||||
<field name="pos_x" type="float" format="%.1f"></field>
|
||||
<field name="pos_y" type="float" format="%.1f"></field>
|
||||
<field name="desired_course" type="float" format="%.3f"></field>
|
||||
<field name="dist2_wp" type="float" format="%.1f"></field>
|
||||
<field name="course_pgain" type="float" format="%.3f"></field>
|
||||
<field name="dist2_home" type="float" format="%.1f"></field>
|
||||
</message>
|
||||
|
||||
<message name="PPRZ_MODE" ID="0x0B" period="5" >
|
||||
<field name="ap_mode" type="uint8" values="MANUAL|AUTO1|AUTO2|HOME"/>
|
||||
<field name="ap_altitude" type="uint8" values="MANUAL|AUTO_GAZ|AUTO_CLIMB|AUTO_ALT"/>
|
||||
<field name="if_calib_mode" type="uint8" values="NONE|DOWN|UP"/>
|
||||
<field name="mcu1_status" type="uint8" values="LOST|OK|REALLY_LOST"/>
|
||||
<field name="lls_calib" type="uint8" values="LLS_CALIB_MODE_OFF|LLS_CALIB_MODE_ON"/>
|
||||
</message>
|
||||
|
||||
<message name="BAT" ID="0x0C" period="2" >
|
||||
<field name="voltage" type="uint8" unit="1e-1V"></field>
|
||||
<field name="flight_time" type="uint16" unit="s"></field>
|
||||
<field name="status_battery" type="uint8" values="LOW|OK"></field>
|
||||
<field name="block_time" type="uint16" unit="s"></field>
|
||||
<field name="stage_time" type="uint16" unit="s"></field>
|
||||
</message>
|
||||
|
||||
<message name="DEBUG" ID="0x0D" period="5" >
|
||||
<field name="i2c_nb_err" type="uint8"></field>
|
||||
<field name="i2c_mcu1_nb_err" type="uint8"></field>
|
||||
<field name="modem_nb_err" type="uint8"></field>
|
||||
<field name="gps_nb_err" type="uint8"></field>
|
||||
<field name="ppm_rate" type="uint8"></field>
|
||||
</message>
|
||||
|
||||
<message name="CLIMB_PID" ID="0x0E" period="2" >
|
||||
<field name="gaz" type="int16" unit="pprz"></field>
|
||||
<field name="climb" type="float" format="%.1f"></field>
|
||||
<field name="sum_err" type="float" format="%.1f"></field>
|
||||
<field name="p_gain" type="float" format="%.3f"></field>
|
||||
</message>
|
||||
|
||||
<message name="SETTINGS" ID="0x0F" period="0.5" >
|
||||
<field name="mode" type="uint8" values="DOWN|NEUTRAL|UP"></field>
|
||||
<field name="slider_1_val" type="float"></field>
|
||||
<field name="slider_2_val" type="float"></field>
|
||||
</message>
|
||||
|
||||
<message name="DESIRED" ID="0x10" period="1">
|
||||
<field name="roll" type="float" format="%.2f"/>
|
||||
<field name="pitch" type="float" format="%.2f"/>
|
||||
<field name="desired_x" type="float" format="%.0f"/>
|
||||
<field name="desired_y" type="float" format="%.0f"/>
|
||||
<field name="desired_altitude" type="float" format="%.0f"/>
|
||||
</message>
|
||||
|
||||
<message name="IMU" ID="0x11">
|
||||
<field name="gyro_x" type="float"/>
|
||||
<field name="gyro_y" type="float"/>
|
||||
<field name="gyro_z" type="float"/>
|
||||
<field name="accel_x" type="float"/>
|
||||
<field name="accel_y" type="float"/>
|
||||
<field name="accel_z" type="float"/>
|
||||
</message>
|
||||
|
||||
<message name="RAW_IMU" ID="0x12">
|
||||
<field name="raw_gx" type="uint16"/>
|
||||
<field name="raw_gy" type="uint16"/>
|
||||
<field name="raw_gz" type="uint16"/>
|
||||
<field name="raw_ax" type="uint16"/>
|
||||
<field name="raw_ay" type="uint16"/>
|
||||
<field name="raw_az" type="uint16"/>
|
||||
</message>
|
||||
|
||||
<message name="KALMAN" ID="0x13">
|
||||
<field name="phi" type="float" format="%.3f"/>
|
||||
<field name="phi_dot" type="float" format="%.3f"/>
|
||||
<field name="phi_bias" type="float" format="%.3f"/>
|
||||
<field name="theta" type="float" format="%.3f"/>
|
||||
<field name="theta_dot" type="float" format="%.3f"/>
|
||||
<field name="theta_bias" type="float" format="%.3f"/>
|
||||
</message>
|
||||
|
||||
<message name="IDENT" ID="0x14" period="10">
|
||||
<field name="id" type="uint8" len="16" format="%s"/>
|
||||
</message>
|
||||
</class>
|
||||
|
||||
<class name="telemetry_fbw" ID="0X41">
|
||||
|
||||
<message name="RC" ID="0x01" period="1">
|
||||
<field name="nb_channels" type="uint8"/>
|
||||
<block times="nb_channels">
|
||||
<field name="ppm" type="uint16" unit="us"/>
|
||||
</block>
|
||||
</message>
|
||||
|
||||
<message name="SERVOS" ID="0x02" period="1">
|
||||
<field name="nb_channels" type="uint8"/>
|
||||
<block times="nb_channels">
|
||||
<field name="ppm" type="uint16" unit="us"/>
|
||||
</block>
|
||||
</message>
|
||||
|
||||
<message name="PPRZ" ID="0x03" period="1">
|
||||
<field name="nb_channels" type="uint8"/>
|
||||
<block times="nb_channels">
|
||||
<field name="pprz" type="int16" unit="pprz"/>
|
||||
</block>
|
||||
</message>
|
||||
|
||||
<message name="FBW_STATUS" ID="0x04" period="1">
|
||||
<field name="nb_spi_err" type="uint8"/>
|
||||
<field name="rc_status" type="uint8" values="OK|LOST|REALLY_LOST"/>
|
||||
<field name="mode" type="uint8" values="MANUAL|AUTO|FAILSAFE"/>
|
||||
</message>
|
||||
</class>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
ground AIRCRAFTS twinstar,microjet
|
||||
-->
|
||||
|
||||
<class name="ground" ID="0x42">
|
||||
|
||||
<!--
|
||||
<message name="WIND" ID="0x01">
|
||||
<field name="dir" type="float"/>
|
||||
<field name="speed" type="float"/>
|
||||
<field name="mean_as" type="float"/>
|
||||
<field name="nb_sample" type="uint16"/>
|
||||
<field name="stddev" type="float"/>
|
||||
</message>
|
||||
-->
|
||||
|
||||
<message name="DOWNLINK_STATUS" ID="0x02">
|
||||
<field name="run_time" type="uint32" unit="s"></field>
|
||||
<field name="rx_bytes" type="uint32"></field>
|
||||
<field name="rx_msgs" type="uint32"></field>
|
||||
<field name="rx_err" type="uint32"></field>
|
||||
<field name="rx_bytes_rate" type="float" format="%.1f"></field>
|
||||
<field name="rx_msgs_rate" type="float" format="%.1f"></field>
|
||||
</message>
|
||||
|
||||
<message name="MODEM_STATUS" ID="0x03">
|
||||
<field name="detected" type="uint8"></field>
|
||||
<field name="valim" type="float" format="%.1f"></field>
|
||||
<field name="cd" type="uint8"></field>
|
||||
<field name="nb_byte" type="uint32"></field>
|
||||
<field name="nb_msg" type="uint32"></field>
|
||||
<field name="nb_err" type="uint32"></field>
|
||||
</message>
|
||||
|
||||
<message name="AIRCRAFTS" ID="0x04">
|
||||
<field name="ac_list" type="string" unit="csv"/>
|
||||
</message>
|
||||
|
||||
<message name="SELECTED" ID="0x05">
|
||||
<field name="id" type="string"/>
|
||||
</message>
|
||||
|
||||
<message name="WIND_RES" ID="0x06">
|
||||
<field name="idreq" type="string"/>
|
||||
<field name="dir" type="float" unit="deg_wind"/>
|
||||
<field name="speed" type="float" unit="m/s"/>
|
||||
<field name="mean_aspeed" type="float" unit="m/s"/>
|
||||
<field name="stddev" type="float" unit="m/s"/>
|
||||
</message>
|
||||
|
||||
</class>
|
||||
|
||||
|
||||
<!--
|
||||
twinstar2 POSITION_UTM 10 10
|
||||
-->
|
||||
|
||||
<class name="aircraft_info">
|
||||
|
||||
<message name="FLIGHT_PARAM" ID="0x04">
|
||||
<field name="roll" type="float" unit="deg"/>
|
||||
<field name="pitch" type="float" unit="deg"/>
|
||||
<field name="east" type="float" unit="m"/>
|
||||
<field name="north" type="float" unit="m"/>
|
||||
<field name="speed" type="float" unit="m/s"/>
|
||||
<field name="heading" type="float" unit="deg"/>
|
||||
<field name="alt" type="float" unit="m"/>
|
||||
<field name="climb" type="float" unit="m/s"/>
|
||||
</message>
|
||||
|
||||
<message name="AP_STATUS" ID="0x05">
|
||||
<field name="mode" type="uint8" values="MANUAL|AUTO1|AUTO2|HOME"/>
|
||||
<field name="h_mode" type="uint8" values="NONE|ROLLDOT|ROLL|HEADING_DOT|HEADING|WP|ROUTE|CIRCLE"/>
|
||||
<field name="v_mode" type="uint8" values="NONE|CLIMB|ALT|GLIDE|PARABOLIC"/>
|
||||
<field name="target_climb" type="float" unit="m/s"/>
|
||||
<field name="target_alt" type="float" unit="m"/>
|
||||
<field name="target_heading" type="float" unit="m"/>
|
||||
</message>
|
||||
|
||||
<message name="NAV_STATUS" ID="0x06">
|
||||
<field name="cur_block" type="uint8"/>
|
||||
<field name="cur_stage" type="uint8"/>
|
||||
<field name="flight_time" type="uint32"/>
|
||||
<field name="block_time" type="uint32"/>
|
||||
<field name="stage_time" type="uint32"/>
|
||||
|
||||
</message>
|
||||
|
||||
<message name="ENGINE_STATUS" ID="0x07">
|
||||
<field name="throttle" type="float" unit="%"/>
|
||||
<field name="rpm" type="float" unit="rpm"/>
|
||||
<field name="temp" type="float" unit="celcius"/>
|
||||
<field name="bat" type="float" unit="V"/>
|
||||
<field name="amp" type="float" unit="A"/>
|
||||
<field name="energy" type="float" unit="Wh"/>
|
||||
</message>
|
||||
|
||||
<message name="SATS" ID="0x08">
|
||||
<field name="itow" type="uint32" unit="ms"/>
|
||||
<field name="nch" type="uint8"/>
|
||||
<field name="res1" type="uint8"/>
|
||||
<field name="res2" type="uint8"/>
|
||||
<block name="sats" times="nch">
|
||||
<field name="chn" type="uint8"/>
|
||||
<field name="svid" type="uint8"/>
|
||||
<field name="flags" type="uint8"/>
|
||||
<field name="qi" type="int8"/>
|
||||
<field name="cno" type="float" unit="dbHz"/>
|
||||
<field name="elev" type="float" unit="deg"/>
|
||||
<field name="azim" type="float" unit="deg"/>
|
||||
<field name="prres" type="float" unit="cm"/>
|
||||
</block>
|
||||
</message>
|
||||
|
||||
<message name="FIX_UTM" ID="0x09">
|
||||
<field name="itow" type="float" unit="ms"/>
|
||||
<field name="east" type="float" unit="m"/>
|
||||
<field name="north" type="float" unit="m"/>
|
||||
<field name="alt" type="float" unit="m"/>
|
||||
<field name="zone" type="int8"/>
|
||||
<field name="hem" type="int8" values="north|south"/>
|
||||
<field name="gpsfix" type="int8" values="none|dead_reck_only|2d|3d|gps_dead_reck"/>
|
||||
<field name="flags" type="int8" mask="fix_ok|dgps|wknset|towset"/>
|
||||
</message>
|
||||
|
||||
<message name="CONFIG" ID="0x0A">
|
||||
<field name="flight_plan" type="string" unit="url"/>
|
||||
<field name="airframe" type="string" unit="url"/>
|
||||
<field name="rc_tx" type="string" unit="url"/>
|
||||
</message>
|
||||
|
||||
|
||||
|
||||
</class>
|
||||
|
||||
</protocol>
|
||||
@@ -0,0 +1,18 @@
|
||||
<radio name="cockpitMM">
|
||||
<!--
|
||||
<photo filename="/home/poine/work/paparazzi_savannah/paparazzi2/sw/ground_segment/cockpit/images/cockpitMM.gif"/>
|
||||
<control name="left_stick" type="stick" x="88" y="95" size="40" v_axe="pitch" h_axe="yaw"/>
|
||||
<control name="right_stick" type="stick" x="267" y="95" size="40" v_axe="power" h_axe="roll"/>
|
||||
<control name="gain1" type="slider" x="179" y="114" size="40" axe="gain1" direction="vertical"/>
|
||||
<control name="mode" type="slider" x="285" y="53" size="30" axe="mode" direction="vertical"/>
|
||||
<control name="calib" type="slider" x="110" y="30" size="40" axe="calib" direction="horizontal"/>
|
||||
--!>
|
||||
|
||||
<channel ctl="D" function="ROLL" min="2000" neutral="1498" max="1000" average="0"/>
|
||||
<channel ctl="C" function="PITCH" min="2000" neutral="1498" max="1000" average="0"/>
|
||||
<channel ctl="B" function="YAW" min="2000" neutral="1498" max="1000" average="0"/>
|
||||
<channel ctl="A" function="THROTTLE" min="2000" neutral="1100" max="1100" average="0"/>
|
||||
<channel ctl="G" function="GAIN1" min="2000" neutral="1498" max="1000" average="10"/> <!-- center slider -->
|
||||
<channel ctl="E" function="MODE" min="2000" neutral="1500" max="1000" average="10"/> <!-- Top right switch -->
|
||||
<channel ctl="F" function="CALIB" min="2000" neutral="1500" max="1000" average="10"/> <!-- Top left rotary knob -->
|
||||
</radio>
|
||||
@@ -0,0 +1,22 @@
|
||||
<radio name="fc28">
|
||||
<photo filename="data/pictures/fc28.gif"/>
|
||||
<control name="left_stick" type="stick" x="92" y="175" size="50" v_axe="pitch" h_axe="yaw"/>
|
||||
<control name="right_stick" type="stick" x="386" y="175" size="50" v_axe="power" h_axe="roll"/>
|
||||
<control name="gain1" type="slider" x="239" y="229" size="50" axe="gain1" direction="vertical"/>
|
||||
<control name="gain2" type="slider" x="200" y="229" size="50" axe="gain2" direction="vertical"/>
|
||||
<control name="gain3" type="slider" x="277" y="229" size="50" axe="gain3" direction="vertical"/>
|
||||
<control name="lls" type="slider" x="150" y="98" size="50" axe="lls" direction="vertical"/>
|
||||
<control name="mode" type="slider" x="420" y="98" size="50" axe="mode" direction="vertical"/>
|
||||
<control name="calib" type="slider" x="80" y="75" size="50" axe="calib" direction="horizontal"/>
|
||||
|
||||
<channel ctl="D" function="THROTTLE" min="1000" neutral="1600" max="2200" average="0"/>
|
||||
<channel ctl="C" function="ROLL" min="1000" neutral="1600" max="2200" average="0"/>
|
||||
<channel ctl="B" function="PITCH" min="1000" neutral="1600" max="2200" average="0"/>
|
||||
<channel ctl="A" function="YAW" min="1000" neutral="1600" max="2200" average="0"/>
|
||||
<channel ctl="G" function="MODE" min="1000" neutral="1600" max="2200" average="10"/>
|
||||
<channel ctl="E" function="GAIN1" min="1000" neutral="1600" max="2200" average="10"/>
|
||||
<channel ctl="F" function="GAIN2" min="1000" neutral="1600" max="2200" average="10"/>
|
||||
<channel ctl="H" function="LLS" min="1000" neutral="1600" max="2200" average="10"/>
|
||||
<channel ctl="I" function="CALIB" min="1000" neutral="1600" max="2200" average="10"/>
|
||||
</radio>
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
<radio name="mc3030">
|
||||
<channel ctl="D" function="THROTTLE" min="1000" neutral="1600" max="2200" average="0"/>
|
||||
<channel ctl="C" function="ROLL" min="1000" neutral="1600" max="2200" average="0"/>
|
||||
<channel ctl="B" function="PITCH" min="1000" neutral="1600" max="2200" average="0"/>
|
||||
<channel ctl="A" function="YAW" min="1000" neutral="1600" max="2200" average="0"/>
|
||||
<channel ctl="G" function="MODE" min="1000" neutral="1600" max="2200" average="10"/>
|
||||
<channel ctl="E" function="GAIN1" min="1000" neutral="1600" max="2200" average="10"/>
|
||||
<channel ctl="F" function="GAIN2" min="1000" neutral="1600" max="2200" average="10"/>
|
||||
<channel ctl="H" function="LLS" min="1000" neutral="1600" max="2200" average="10"/>
|
||||
<channel ctl="I" function="CALIB" min="1000" neutral="1600" max="2200" average="10"/>
|
||||
</radio>
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
<!-- U-BLOX UBX protocol DTD -->
|
||||
|
||||
<!ELEMENT ubx (class+)>
|
||||
<!ELEMENT class (message+)>
|
||||
<!ELEMENT message (field|block)*>
|
||||
<!ELEMENT block (field*)>
|
||||
<!ELEMENT field EMPTY>
|
||||
|
||||
<!ATTLIST class
|
||||
name CDATA #REQUIRED
|
||||
ID CDATA #REQUIRED>
|
||||
|
||||
<!ATTLIST message
|
||||
name CDATA #REQUIRED
|
||||
ID CDATA #REQUIRED
|
||||
length CDATA #IMPLIED>
|
||||
|
||||
<!ATTLIST block
|
||||
times CDATA #IMPLIED
|
||||
length CDATA #REQUIRED>
|
||||
|
||||
<!ATTLIST field
|
||||
name CDATA #REQUIRED
|
||||
format CDATA #REQUIRED
|
||||
scaling CDATA #IMPLIED
|
||||
unit CDATA #IMPLIED>
|
||||
@@ -0,0 +1,68 @@
|
||||
<!-- $Id$ -->
|
||||
<!-- ublox UBX Binary Protocol description -->
|
||||
|
||||
<!DOCTYPE ubx SYSTEM "ubx.dtd">
|
||||
|
||||
<ubx>
|
||||
<class name="NAV" ID="0x01">
|
||||
<message name="POSLLH" ID="0x02" length="28">
|
||||
<field name="ITOW" format="U4" unit="ms"/>
|
||||
<field name="LON" format="I4" scaling="1e-7" unit="deg"/>
|
||||
<field name="LAT" format="I4" scaling="1e-7" unit="deg"/>
|
||||
<field name="HEIGHT" format="I4" unit="mm"/>
|
||||
<field name="HMSL" format="I4" unit="mm"/>
|
||||
<field name="Hacc" format="U4" unit="mm"/>
|
||||
<field name="Vacc" format="U4" unit="mm"/>
|
||||
</message>
|
||||
|
||||
<message name="POSUTM" ID="0x08" length="18">
|
||||
<field name="ITOW" format="U4" unit="ms"/>
|
||||
<field name="EAST" format="I4" unit="cm"/>
|
||||
<field name="NORTH" format="I4" unit="cm"/>
|
||||
<field name="ALT" format="I4" unit="cm"/>
|
||||
<field name="ZONE" format="I1"/>
|
||||
<field name="HEM" format="I1"/>
|
||||
</message>
|
||||
|
||||
<message name="STATUS" ID="0x03" length="16">
|
||||
<field name="ITOW" format="U4" unit="ms"/>
|
||||
<field name="GPSfix" format="U1"/>
|
||||
<field name="Flags" format="U1"/>
|
||||
<field name="DiffS" format="U1"/>
|
||||
<field name="res" format="U1"/>
|
||||
<field name="TTFF" format="U4"/>
|
||||
<field name="MSSS" format="U4"/>
|
||||
</message>
|
||||
|
||||
<message name="VELNED" ID="0x12" length="36">
|
||||
<field name="ITOW" format="U4" unit="ms"/>
|
||||
<field name="VEL_N" format="I4" unit="cm/s"/>
|
||||
<field name="VEL_E" format="I4" unit="cm/s"/>
|
||||
<field name="VEL_D" format="I4" unit="cm/s"/>
|
||||
<field name="Speed" format="U4" unit="cm/s"/>
|
||||
<field name="GSpeed" format="U4" unit="cm/s"/>
|
||||
<field name="Heading" format="I4" scaling="1e-5" unit="deg"/>
|
||||
<field name="SAcc" format="U4" unit="cm/s"/>
|
||||
<field name="CAcc" format="U4" unit="deg"/>
|
||||
</message>
|
||||
|
||||
<message name="SVINFO" ID="0x30">
|
||||
<field name="ITOW" format="U4" unit="ms"/>
|
||||
<field name="NCH" format="U1"/>
|
||||
<field name="RES1" format="U1"/>
|
||||
<field name="RES2" format="U1"/>
|
||||
<block times="NCH" length="12">
|
||||
<field name="chn" format="U1"/>
|
||||
<field name="SVID" format="U1"/>
|
||||
<field name="Flags" format="U1"/>
|
||||
<field name="QI" format="I1"/>
|
||||
<field name="CNO" format="U1" unit="dbHz"/>
|
||||
<field name="Elev" format="I1" unit="deg"/>
|
||||
<field name="Azim" format="I2" unit="deg"/>
|
||||
<field name="PRRes" format="I4" unit="cm"/>
|
||||
</block>
|
||||
</message>
|
||||
</class>
|
||||
|
||||
</ubx>
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
<!-- $Id$ -->
|
||||
<!-- coronis wavecard protocol description -->
|
||||
|
||||
<wavecard>
|
||||
|
||||
<constant name="sync" val="0xFF"/>
|
||||
<constant name="stx" val="0x02"/>
|
||||
<constant name="etx" val="0x03"/>
|
||||
|
||||
<class name="control">
|
||||
<message name="ACK" ID="0x06"/>
|
||||
<message name="NAK" ID="0x15"/>
|
||||
<message name="ERROR" ID="0x00">
|
||||
<field name="errno" format="U1">
|
||||
</message>
|
||||
</class>
|
||||
|
||||
<class name="applicative">
|
||||
<class name="request">
|
||||
0x40, "REQ_WRITE_RADIO_PARAM";
|
||||
0x41, "RES_WRITE_RADIO_PARAM";
|
||||
0x50, "REQ_READ_RADIO_PARAM";
|
||||
0x51, "RES_READ_RADIO_PARAM";
|
||||
0x60, "REQ_SELECT_CHANNEL";
|
||||
0x61, "RES_SELECT_CHANNEL";
|
||||
0x62, "REQ_READ_CHANNEL";
|
||||
0x63, "RES_READ_CHANNEL";
|
||||
0x64, "REQ_SELECT_PHYCONFIG";
|
||||
0x65, "RES_SELECT_PHYCONFIG";
|
||||
0x66, "REQ_READ_PHYCONFIG";
|
||||
0x67, "RES_READ_PHYCONFIG";
|
||||
0x68, "REQ_READ_REMOTE_RSSI";
|
||||
0x69, "RES_READ_REMOTE_RSSI";
|
||||
0x6A, "REQ_READ_LOCAL_RSSI";
|
||||
0x6B, "RES_READ_LOCAL_RSSI";
|
||||
0xA0, "REQ_FIRMWARE_VERSION";
|
||||
0xA1, "RES_ FIRMWARE_VERSION";
|
||||
</class>
|
||||
|
||||
<class name="response">
|
||||
</class>
|
||||
</class>
|
||||
|
||||
<class name="rf_dialog">
|
||||
|
||||
</class>
|
||||
|
||||
<class name="test">
|
||||
|
||||
</class>
|
||||
|
||||
|
||||
|
||||
</wavecard>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 76 KiB |
@@ -0,0 +1,5 @@
|
||||
<map file="muret_UTM.gif" projection="UTM" scale="2.5">
|
||||
<point x="0" y="800" utm_x="359000" utm_y="4813000"/>
|
||||
<point x="0" y="0" utm_x="359000" utm_y="4815000"/>
|
||||
<point x="800" y="800" utm_x="361000" utm_y="4813000"/>
|
||||
</map>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 91 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 157 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 37 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 203 KiB |
@@ -0,0 +1,102 @@
|
||||
\documentclass{article}
|
||||
|
||||
\usepackage{myfrench}
|
||||
\usepackage{a4wide}
|
||||
|
||||
\title{Check-List Paparazzi}
|
||||
\author{}
|
||||
\date{\today}
|
||||
\twocolumn
|
||||
|
||||
\begin{document}
|
||||
|
||||
\maketitle
|
||||
|
||||
|
||||
|
||||
\section{Vecteur}
|
||||
|
||||
\begin{enumerate}
|
||||
\item Cellule
|
||||
\item Batteries propulsion, émetteur
|
||||
\item Verrière
|
||||
\item Scotch
|
||||
\item Radio
|
||||
\end{enumerate}
|
||||
|
||||
\section{Segment sol}
|
||||
|
||||
\begin{enumerate}
|
||||
\item Portable
|
||||
\item Batterie
|
||||
\item Récepteur
|
||||
\item Moniteur
|
||||
\end{enumerate}
|
||||
|
||||
\section{Prévol}
|
||||
\begin{enumerate}
|
||||
\item Sol
|
||||
\begin{enumerate}
|
||||
\item Brancher récepteur
|
||||
\item Récepteur ON
|
||||
\item Console: \verb"rm log_test"
|
||||
\item Console: \verb"rm ./new_display"
|
||||
\end{enumerate}
|
||||
|
||||
\item Cellule
|
||||
\begin{enumerate}
|
||||
\item Brancher émetteur Paparazzi
|
||||
\item Radio-commande ON
|
||||
\item Radio-commande, tout OFF, mode AUTO1
|
||||
\item Brancher batterie propulsion
|
||||
\item Radio-commande, mode MANUAL
|
||||
\item Scotcher Verrière
|
||||
\item Chronomètre ON
|
||||
\end{enumerate}
|
||||
|
||||
\item Calibration
|
||||
\begin{enumerate}
|
||||
\item Avion sur le nez
|
||||
\item Radio-commande: commande aileron
|
||||
\end{enumerate}
|
||||
|
||||
\item Contrôle cellule
|
||||
\begin{enumerate}
|
||||
\item Armer variateur
|
||||
\item Mode MANUEL: gouvernes actives et dans le bon sens
|
||||
\item Mode AUTO1: gouvernes actives et dans le bon sens
|
||||
\end{enumerate}
|
||||
\end{enumerate}
|
||||
|
||||
\section{Décollage}
|
||||
\begin{enumerate}
|
||||
\item Console: GPS 4D OK
|
||||
\item Radio-commande: tout OFF
|
||||
\item Briefing avant décollage
|
||||
\item Plein gaz
|
||||
\end{enumerate}
|
||||
|
||||
\section{Procédure}
|
||||
\begin{enumerate}
|
||||
\item Montée en MANUEL
|
||||
\item Dès attitude de sécurité, AUTO1
|
||||
\item LLS ON
|
||||
\item AUTO2 ON
|
||||
\item Poser la radio
|
||||
\end{enumerate}
|
||||
|
||||
\section{Monitoring}
|
||||
\begin{enumerate}
|
||||
\item Altitude
|
||||
\item Vitesse
|
||||
\item Modes
|
||||
\item GPS
|
||||
\item Batterie
|
||||
\item Temps de vol
|
||||
\end{enumerate}
|
||||
|
||||
\section{Atterissage}
|
||||
\begin{enumerate}
|
||||
\item Radio-commande: tout OFF
|
||||
\end{enumerate}
|
||||
\end{document}
|
||||
@@ -0,0 +1,47 @@
|
||||
|
||||
#
|
||||
# $Id$
|
||||
# Copyright (C) 2003 Pascal Brisset, Antoine Drouin
|
||||
#
|
||||
# This file is part of paparazzi.
|
||||
#
|
||||
# paparazzi is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# paparazzi 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 General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with paparazzi; see the file COPYING. If not, write to
|
||||
# the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
# Boston, MA 02111-1307, USA.
|
||||
#
|
||||
|
||||
|
||||
|
||||
|
||||
all: fly_by_wire.png fly_by_wire.eps overall.png overall.eps
|
||||
latex paparazzi
|
||||
makeindex paparazzi
|
||||
latex paparazzi
|
||||
latex paparazzi
|
||||
pdflatex paparazzi
|
||||
|
||||
|
||||
paparazzi.dvi: paparazzi.tex
|
||||
latex $<
|
||||
|
||||
paparazzi.pdf: paparazzi.tex
|
||||
pdflatex $<
|
||||
|
||||
%.png:%.dia
|
||||
dia -e $@ -t png $<
|
||||
%.eps:%.dia
|
||||
dia -e $@ -t png $<
|
||||
|
||||
clean:
|
||||
rm -rf *~ paparazzi.dvi paparazzi.pdf fly_by_wire.png *.log *.aux *.info *.eps *.idx *.ilg *.ind *.out *.texi *.hind
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 38 KiB |
@@ -0,0 +1,472 @@
|
||||
%
|
||||
%
|
||||
%
|
||||
% $Id$
|
||||
% Copyright (C) 2003 Pascal Brisset, Antoine Drouin
|
||||
%
|
||||
% This file is part of paparazzi.
|
||||
%
|
||||
% paparazzi is free software; you can redistribute it and/or modify
|
||||
% it under the terms of the GNU General Public License as published by
|
||||
% the Free Software Foundation; either version 2, or (at your option)
|
||||
% any later version.
|
||||
%
|
||||
% paparazzi 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 General Public License for more details.
|
||||
%
|
||||
% You should have received a copy of the GNU General Public License
|
||||
% along with paparazzi; see the file COPYING. If not, write to
|
||||
% the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
% Boston, MA 02111-1307, USA.
|
||||
%
|
||||
|
||||
%
|
||||
%
|
||||
% This may become the paparazzi user manual.
|
||||
%
|
||||
%
|
||||
|
||||
|
||||
\documentclass{article}
|
||||
|
||||
\usepackage{a4wide}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{makeidx}
|
||||
\usepackage[pagebackref=true,hyperindex=true]{hyperref}
|
||||
|
||||
\title{Paparazzi User's Manual}
|
||||
\author{Pascal Brisset and Antoine Drouin}
|
||||
\date{\today}
|
||||
|
||||
\makeindex
|
||||
|
||||
\begin{document}
|
||||
|
||||
\maketitle
|
||||
|
||||
|
||||
|
||||
\begin{abstract}
|
||||
The system described in this document is an autopilot for model aircrafts.
|
||||
It consist of custom airborne hardware, a laptop as ground station and a
|
||||
retail radio control transmitter for uplink (manual/assisted control, reconfiguration, etc..).
|
||||
The sensor used are a GPS receiver and infrared thermopiles (melexys mlx90247)
|
||||
for horizon sensing. This system is able to fly autonomously a small electro
|
||||
powered aircraft. It transmits live video and telemetry data.
|
||||
The ground station permits decoding, logging, replay and analysis of these data.
|
||||
It also permits airborne code configuration, generation, simulation and flashing
|
||||
on target MCU.
|
||||
|
||||
\end{abstract}
|
||||
|
||||
\section{Description}
|
||||
|
||||
\subsection{Architecture : two 8 bits MCUs}
|
||||
|
||||
goals:
|
||||
- maximum availability (modes degrades, manual control)
|
||||
- ease of development
|
||||
|
||||
logical tasks of increasing conplexity and decreasing importance in separate devices.
|
||||
|
||||
\subsubsection{fly by wire}
|
||||
(avr mega8) responsible for radio control decoding, mixings, servos (c.f. figure ref{fbw}).
|
||||
|
||||
short code, well tested, features similar to a programmable radio control transmitter
|
||||
|
||||
allows manual control and programmed failsafe (radio link loss).
|
||||
|
||||
|
||||
health monitoring (battery voltage, drawn current etc...)
|
||||
|
||||
\
|
||||
\subsubsection{autopilot}
|
||||
(avr mega128) measures + control loops + telemetry + navigation
|
||||
|
||||
The model can be safely flown in manual mode with only the fly by wire MCU.
|
||||
|
||||
We want to keep and improve this simple system for cheap/small aircrafts.
|
||||
|
||||
We also want to expend it with a third 32 bit processor (like arm or xscale)
|
||||
to get network communications and processing power (FMS like).
|
||||
|
||||
\subsection{Technology : cheap and widely available parts}
|
||||
4800bps FSK Telemetry signal. Can be fed in most transmitter.
|
||||
We use the audio channel of a 50 mW 2.4GHz video transmitter.
|
||||
The video Channel is used for real time video. We reach 600m in line of sight.
|
||||
The rx antenna is a small patch mounted on top of a helm (cheap self pointing antenna).
|
||||
FIXME: ADD PIC
|
||||
|
||||
Modified retail RC receiver : solder a wire after the HF section.
|
||||
|
||||
controller board, sensor, GPS : custom PCBs, all(most) parts smd.
|
||||
home pcbs and home soldering for protos
|
||||
|
||||
Free software for tool (GNU/Linux, gcc, gtk, ocaml....)
|
||||
No Windows port known but should be faisible.
|
||||
|
||||
\section{Ground station}
|
||||
\subsection{hardware}
|
||||
Gnu/linux laptop
|
||||
|
||||
2.4GHz video receiver + CMX469 modem board or rtty
|
||||
==FIXME== add pic
|
||||
camcorder
|
||||
|
||||
\subsection{obtaining and installing}
|
||||
|
||||
The source code is available from the Project page ( http://savannah.nongnu.org/projects/paparazzi/ )
|
||||
|
||||
Use the anonymous CVS server to get the up to date source code and documentation:
|
||||
|
||||
{\em export CVS\_RSH="ssh"}
|
||||
{\em cvs -z3 -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/paparazzi co paparazzi2}
|
||||
|
||||
You can also download a tarball from this website ( http://www.recherche.enac.fr/paparazzi/paparazzi.tar.gz ).
|
||||
Debian sarge users can get the required extra packages from there ( http://www.recherche.enac.fr/paparazzi ).
|
||||
|
||||
***********************************************************************
|
||||
Set the PAPARAZZI\_HOME environment variable to the top directory
|
||||
of the distribution (this variable is used by some of the components).
|
||||
***********************************************************************
|
||||
{\em export PAPARAZZI\_HOME=/some/dir/paparazzi2 }
|
||||
Default configurations files (in conf/ directory) should allow to
|
||||
compile both embedded and ground software:
|
||||
\begin{itemize}
|
||||
\item 1) HAVE A LOOK at conf/Makefile.local
|
||||
|
||||
\item 2) Create conf/conf.xml and the related files for your convenience
|
||||
("make configure" runs a graphics interface which may help; however
|
||||
this gui is in a very early alpha stage). Some examples are provided.
|
||||
|
||||
\item 3) "make" in top directory should compile everything
|
||||
|
||||
\end{itemize}
|
||||
|
||||
\subsection{The ivy software bus}
|
||||
|
||||
|
||||
|
||||
\subsection{configuration interface}
|
||||
This windowed program allows to graphicaly edit the configuration of a Paparazzi.
|
||||
It also can also be used to program your controller board with various test and calibration
|
||||
programs.
|
||||
type {\em{make configure}} in the source top directory.
|
||||
|
||||
\subsection{telemetry interface : recording and display}
|
||||
\index{telemetry}
|
||||
receive : retrieve telemetry data, store them on disk and broadcast them over a network
|
||||
gui : display telemetry data. Can be feed live by the receive programm or by the replay programm
|
||||
|
||||
map calibration :
|
||||
uses 3 points. trivial projection but sufficient for short range.
|
||||
\subsection{replay interface}
|
||||
|
||||
\subsection{hitl simulator}
|
||||
Airborn programs runs on their target MCUs.
|
||||
Their inputs and outputs (GPS, infrared and servos) are bypassed to the laptop.
|
||||
A dumb flight model allows debugging and non regression testing. Also useful for
|
||||
tunnig navigation
|
||||
|
||||
\section{Airborne software}
|
||||
\subsection{Fly by wire}
|
||||
|
||||
|
||||
|
||||
only supports PPM - subject to jamming - filtering - would be better with a PCM encoding
|
||||
|
||||
\begin{figure}
|
||||
\includegraphics[width=15cm]{fly_by_wire}
|
||||
\caption{\label{fbw}Fly by wire data processing}
|
||||
\end{figure}
|
||||
|
||||
|
||||
\subsection{Autopilot}
|
||||
|
||||
\subsubsection{Low level control loop}
|
||||
20Hz . P controller for pitch and roll
|
||||
PI for throttle
|
||||
|
||||
mostly unfiltered attitude data from infrared sensor + GPS climb rate for throttle
|
||||
|
||||
|
||||
\subsubsection{Navigtion loop}
|
||||
1Hz P controllers on heading to waypoint and altitude
|
||||
GPS data
|
||||
|
||||
|
||||
\subsubsection{Infrared calibration}
|
||||
contrast
|
||||
LLS
|
||||
|
||||
|
||||
\subsubsection{FMS}
|
||||
modes (auto1 auto2)
|
||||
waypoints circling
|
||||
waypoint crossing
|
||||
mode home
|
||||
automatic take off
|
||||
|
||||
\section{Assembling boards}
|
||||
PCBS : homebuild eurocircuits
|
||||
|
||||
see part list
|
||||
|
||||
solder one(a group of) component at a time. test with voltmeter or scope
|
||||
use provided programms.
|
||||
|
||||
mcu fuses - used to define type of clock - factory supplied with 1MHz internal oscillator -
|
||||
must switch to {\em{ceramic resonator}} for ``fly by wire''. He will be generating clock for autopilot.
|
||||
``autopilot'' will have to be programmed to ``external clok''. If you mess up, you can make a zombie
|
||||
out of your MCU unless you can provide the awaited signal or crystal. You can read current fuses configuration by typing {\em{make read\_fuses}} in an avr source directory. The correct values are contained
|
||||
in the Makefile and can be programmed by typing {\em{make wr\_fuses}}.
|
||||
The graphical configurator also allows these operations.
|
||||
|
||||
|
||||
mcu flashing - The method (and corresponding wiring) we use for flashing and fuses programming is
|
||||
called serial (SPI) programming. It is possible to programm a resident bootloader who will take care
|
||||
of following programmations using serial RS232
|
||||
|
||||
\subsection{power supply}
|
||||
|
||||
\subsection{pc link}
|
||||
This board is a level converter. It converts between the TTL 5V of the controller board and respectively, the
|
||||
3.3V of the parallel port and the 10V of the rs232 port.
|
||||
The parallel port is used for SPI programming of MCUs. The rs232 port are used fo serial
|
||||
communications with MCUs, for example during simulations.
|
||||
This board is meant to stay on ground.
|
||||
|
||||
|
||||
\subsection{controller board}
|
||||
solder the fly by wire MCU (mega8), its crystal and the programmation socket
|
||||
Connect to a current limited power supply and check current.
|
||||
|
||||
build a wire harness to the pc link board
|
||||
plug the pc link in your parallel port
|
||||
try connecting to MCU in serial programming mode (SPI) (button on gui)
|
||||
FIXME: if it fails
|
||||
programm the fuses of the MCU (describe the crystal connected to the mcu) (button on gui)
|
||||
check crystal oscillating with scope if available.
|
||||
|
||||
try programming the uart test
|
||||
plug a straight serial cable in the serial1 connector of the pc link and the other end in one of your computer rs232 port. If your computer doesn't have any, use a usb to rsr232 converter.
|
||||
you should see a message comming from your board telling you the link is ok. Check the other direction, writing to the board.
|
||||
|
||||
solder servo driver and connector (maybe later...)
|
||||
run the test programm (servo calibration)
|
||||
|
||||
find ppm signal and supply in receiver. solder wire (computer cdrom wire)
|
||||
solder the other end to the controller board.
|
||||
run the test programm (radio calibration)
|
||||
|
||||
|
||||
solder the autopilot MCU
|
||||
try uart 1
|
||||
|
||||
try spi (write a test with SPI and UART)
|
||||
|
||||
solder the modem
|
||||
try modem (in line input - with rtty ?? )
|
||||
|
||||
|
||||
|
||||
\subsection{ground modem}
|
||||
same story with mega8 and crystal
|
||||
check connection, write fuse, program serial test
|
||||
solder modem
|
||||
connect to airborne modem
|
||||
watch telemetry
|
||||
|
||||
\subsection{infrared sensor}
|
||||
solder amp, resistor and capa and thermopiles.
|
||||
connect to autopilot MCU ADCs
|
||||
watch telemetrie values;
|
||||
|
||||
\section{Fitting system in the airframe}
|
||||
|
||||
All the processing available on programmable radio transmitters (travel adj, mixing etc..) are here
|
||||
done by the fly by wire MCU. This is cool because you don't need to change your transmitter programm
|
||||
when you change aircraft, but it also enables the autopilot to use these features.
|
||||
|
||||
\subsection{radio control transmitter calibration}
|
||||
tab in gui.
|
||||
use the default programm of your rc transmitter with travels set to 100\% and trim centered.
|
||||
programm the controller board (actually fly by wire MCU) with the test programm (button on gui).
|
||||
if everything goes well you will see values of the channels in the signal send by your transmitter.
|
||||
record min max neutral for each channel and setup control
|
||||
give it a name
|
||||
generate a configuration file.
|
||||
|
||||
|
||||
\subsection{servos travel and mixer setup}
|
||||
|
||||
Mount the board in the airframe and connect servos. programm the board with the servo setting programm (tab in gui)
|
||||
for each servo, define name of the control, travel neutral and direction.
|
||||
Try to use maximal travel and long control arms.
|
||||
|
||||
\subsection{infrared sensor}
|
||||
describe the way to mout it on the airframe and the needed configuration.
|
||||
|
||||
|
||||
\section{Simulation}
|
||||
Don't attempt to fly your aircraft until you've succesfully simulated with your configuration and learned how the system works. There are two type of simulation :
|
||||
|
||||
\subsection{``Software in loop'' simulation}
|
||||
needs no hardware but the laptop.
|
||||
It is great to learn while you are building the hardware.
|
||||
Thanx to our magnificient C compiler, we are able to compile the same code for the AVR mcu and for the i386 laptop.
|
||||
|
||||
\subsection{``Hardware in the loop'' simulation}
|
||||
|
||||
|
||||
|
||||
\section{Test Flight}
|
||||
|
||||
\subsection{checklist}
|
||||
|
||||
This checklist applies to our twinstar.
|
||||
|
||||
Switch ground station on - connect modem - launch receive and gui - check modem messages + check ground batterie
|
||||
|
||||
Switch rc transmitter on - check programm - all switches pushed - mode auto1 - throttle low
|
||||
|
||||
Switch airplane on - check model name and rc transmitter name
|
||||
|
||||
check "waiting calibration" on ground station - switch to mode manual
|
||||
|
||||
Put airplane on nose - push roll stick - check contrast on ground station
|
||||
|
||||
switch briefly to full throttle to trigger speed controllers
|
||||
|
||||
Check command direction and travel
|
||||
|
||||
Switch to auto1. Check corrections direction (if you put the plane nose down, the elevator should raise, if you bank to the right, the left aileron should raise).
|
||||
|
||||
Check GPS status on ground station.
|
||||
|
||||
Flight briefing - check mission on map
|
||||
|
||||
check autopilot mode
|
||||
|
||||
take off. For automatic take off (auto 2), full throttle will signal take off and trigger full throttle.
|
||||
|
||||
|
||||
\subsection{adjusting trim}
|
||||
|
||||
|
||||
This first flight is flown in manual mode. It is used to trim the airframe and get an estimation of infrared neutrals.
|
||||
It is very important that you trim your model perfectly. Choose a day without wind or turbulence. Fly long
|
||||
straight lines trying not to touch your sticks.
|
||||
|
||||
Watch your batterie voltage on the laptop (ask someone or use a vocal synthetiser).
|
||||
|
||||
After the flight
|
||||
offset servos to recenter your rc transmitter trims.
|
||||
get an estimation of contrast\_gain (ir\_gain = contrast\_gain/contrast) comparing your contrast measure and lls
|
||||
get an estimation of infrared neutrals (pitch and roll) (play the telemetry record during straight lines or maybe write a tool).
|
||||
get an estimation of throttle for level flight
|
||||
watch the record for anomalies (describe)
|
||||
plot parameters (like airspeed, climb rate, current consumption...). This is a great tool for tunning an airframe.
|
||||
|
||||
|
||||
|
||||
\subsection{adjusting low level loop (attitude loop)}
|
||||
In this flight you will adjust the infrared neutrals and low level loop gains.
|
||||
The number of parameter that you are able to tune in a single flight depends on how many switches and sliders are available on your rc transmitter. With the Multiplex MC3030 (9 channels) we have two spare sliders and one three positions
|
||||
switch. It allows us to tune 4 parameters at a time.
|
||||
|
||||
Update you airframe description. Use the values from the previous flight for infrared neutral and contrast\_gain. Use low values for the low level loop P gains. Reflash your airplane.
|
||||
|
||||
For this flight we will programm an autopilot mode in auto1 which will hold the plane in an attitude described by the
|
||||
roll and pitch sticks. If you leave your sticks centered, the plane will fly level. If you push your roll stick, the plane will bank to a given value (full travel -> 30°) and stay in this attitude.
|
||||
|
||||
|
||||
Take off in manual mode. Gain altitude .
|
||||
Check that the plane is flying level and that your tranmistter trims are centered.
|
||||
If this is not the case, redo the programm of the previous flight.
|
||||
|
||||
Engage auto1 mode. Be ready to switch back to manual if the plane doesn't react like you expect.
|
||||
Switch to neutral calibration and fine tune values so that the plane flies level.
|
||||
This stage is very important for the navigation to work.
|
||||
Raise the values of the low level loop P gains until the plane reacts quickly to an attitude change but
|
||||
without oscillating.
|
||||
|
||||
Now your plane should be capable of holding attitude. This is a very strange feeling for the pilote.
|
||||
|
||||
|
||||
After the flight:
|
||||
plot params
|
||||
fine tune your contrast gain with LLS measure
|
||||
update low level P gains and infrared neutrals in model description.
|
||||
|
||||
|
||||
\subsection{adjusting autopilot gains}
|
||||
|
||||
In this flight, we will programm a navigation mode in the auto2 bank which will navigate the airplane around waypoints.
|
||||
|
||||
describe a mission: home and waypoints
|
||||
You can click on a map (needs calibration) or walk with the plane GPS to find the position of your points.
|
||||
|
||||
For our twinstar, the typical missions are two waypoints distant from 300m and at 80m above ground level.
|
||||
|
||||
Flash your airplane. If you have a map, check that the mission that the airplane transmits on boot shows up on the map at the right place.
|
||||
|
||||
After the checklist, check that the position transmitted is near your home (relative position - NAV message) and that the coordinates go in the right direction (X->NORTH Y->EAST FIXME:check!!)
|
||||
|
||||
Take of in manual mode - check plane level and rc trim centered
|
||||
Switch to auto1 - check plane level
|
||||
Switch to auto2 - adjust nav P gain and max bank angle for smooth nav
|
||||
|
||||
|
||||
|
||||
Make more flights taking off in manual -
|
||||
When your are confident you can take off in auto1 or auto2. Specify desired climb rate and security altitude
|
||||
|
||||
|
||||
|
||||
\section{Part list and supplyers}
|
||||
|
||||
\subsection{power supply}
|
||||
|
||||
\subsection{controller board}
|
||||
|
||||
|
||||
\subsection{infrared sensor}
|
||||
\begin{tabular}{| l | l | l | l |}
|
||||
\hline
|
||||
4 & thermopiles MLX90247ESF-B & www.digikey.com (PN: MLX90247ESF-B-ND) & 16,5 euros each, 12.5 euros >= 10 \\
|
||||
\hline
|
||||
1 & op amp AD8552 TSSOP case & le fabriquant envoie des échantillons - formulaire sur leur site.& \\
|
||||
\hline
|
||||
1 & MOLEX 6 contacts connector 1.25mm pitch & radiospares (PN: 53047-0610) & by 10 - 2,34 euros \\
|
||||
\hline
|
||||
\end{tabular}
|
||||
|
||||
|
||||
résistances et condensateurs CMS
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\section{glossaire}
|
||||
\begin{description}
|
||||
\item[ADC] Analog to Digital Converter: A chip or MCU peripheral that converts an analog voltage to its binary representation.
|
||||
|
||||
\item[CPU] Control Processor Unit:
|
||||
|
||||
|
||||
\item[MCU] Micro Controller Unit: A chip containing a CPU and varous peripherals like memory, io ports, timer, ADCs etc..
|
||||
The paparazzi controller board uses two of these chip.
|
||||
|
||||
|
||||
\item[LLS] Linear Least Square:
|
||||
|
||||
\end{description}
|
||||
|
||||
\printindex
|
||||
|
||||
|
||||
\end{document}
|
||||
@@ -0,0 +1,25 @@
|
||||
#
|
||||
# $Id$
|
||||
# Copyright (C) 2003 Pascal Brisset Antoine Drouin
|
||||
#
|
||||
# This file is part of paparazzi.
|
||||
#
|
||||
# paparazzi is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# paparazzi 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 General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with paparazzi; see the file COPYING. If not, write to
|
||||
# the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
# Boston, MA 02111-1307, USA.
|
||||
#
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
#
|
||||
# $Id$
|
||||
# Copyright (C) 2003 Pascal Brisset, Antoine Drouin
|
||||
#
|
||||
# This file is part of paparazzi.
|
||||
#
|
||||
# paparazzi is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# paparazzi 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 General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with paparazzi; see the file COPYING. If not, write to
|
||||
# the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
# Boston, MA 02111-1307, USA.
|
||||
#
|
||||
|
||||
|
||||
FBW=../fly_by_wire
|
||||
|
||||
|
||||
LOCAL_CFLAGS= $(CTL_BRD_FLAGS) $(GPS_FLAGS) $(SIMUL_FLAGS)
|
||||
|
||||
VARINCLUDE=$(PAPARAZZI_HOME)/var/include
|
||||
ACINCLUDE = $(PAPARAZZI_HOME)/var/$(AIRCRAFT)
|
||||
|
||||
ARCH = atmega128
|
||||
TARGET = autopilot
|
||||
|
||||
LOW_FUSE = e0
|
||||
HIGH_FUSE = 99
|
||||
|
||||
ifeq ($(CTL_BRD_VERSION),V1_1)
|
||||
LOW_FUSE = ff
|
||||
HIGH_FUSE = 89
|
||||
CTL_BRD_FLAGS=-DCTL_BRD_V1_1
|
||||
endif
|
||||
|
||||
ifeq ($(SIMUL),1)
|
||||
SIMUL_FLAGS= -DSIMUL
|
||||
endif
|
||||
|
||||
EXT_FUSE = ff
|
||||
LOCK_FUSE = ff
|
||||
INCLUDES = -I $(FBW) -I ../../include -I $(VARINCLUDE) -I $(ACINCLUDE)
|
||||
|
||||
GPS = gps_ubx.c
|
||||
GPS_FLAGS=-DUBX
|
||||
|
||||
$(TARGET).srcs = \
|
||||
main.c \
|
||||
modem.c \
|
||||
link_fbw.c \
|
||||
spi.c \
|
||||
adc.c \
|
||||
$(GPS) \
|
||||
infrared.c \
|
||||
pid.c \
|
||||
nav.c \
|
||||
uart.c \
|
||||
estimator.c \
|
||||
if_calib.c \
|
||||
mainloop.c
|
||||
|
||||
include ../../../conf/Makefile.local
|
||||
include ../../../conf/Makefile.avr
|
||||
|
||||
autopilot.install : warn_conf
|
||||
|
||||
warn_conf :
|
||||
@echo
|
||||
@echo '###########################################################'
|
||||
@grep AIRFRAME_NAME $(ACINCLUDE)/airframe.h
|
||||
@grep RADIO_NAME $(ACINCLUDE)/radio.h
|
||||
@grep FLIGHT_PLAN_NAME $(ACINCLUDE)/flight_plan.h
|
||||
@echo '###########################################################'
|
||||
@echo
|
||||
|
||||
|
||||
.depend : $(VARINCLUDE)/messages.h $(ACINCLUDE)/flight_plan.h $(VARINCLUDE)/ubx_protocol.h $(ACINCLUDE)/inflight_calib.h $(ACINCLUDE)/airframe.h $(ACINCLUDE)/radio.h
|
||||
main.o : $(VARINCLUDE)/messages.h
|
||||
nav.o : $(ACINCLUDE)/flight_plan.h
|
||||
gps_ubx.o : $(VARINCLUDE)/ubx_protocol.h
|
||||
if_calib.o : $(ACINCLUDE)/inflight_calib.h
|
||||
|
||||
clean : avr_clean
|
||||
rm -f *.out *.cm* messages.h flight_plan.h ubx_protocol.h inflight_calib.h
|
||||
@@ -0,0 +1,24 @@
|
||||
# $Id$
|
||||
# Copyright (C) 2003 Pascal Brisset Antoine Drouin
|
||||
#
|
||||
# This file is part of paparazzi.
|
||||
#
|
||||
# paparazzi is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# paparazzi 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 General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with paparazzi; see the file COPYING. If not, write to
|
||||
# the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
# Boston, MA 02111-1307, USA.
|
||||
#
|
||||
|
||||
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user