mavlink-soloのREADME.mdを訳してみた

原文: https://github.com/3drobotics/mavlink-solo/blob/22ab243c8a1b24596ecc2714869333502331b869/README.md

- 3DR solo用のライブラリかな？と思って読んでみたんだけどどうもそういうことじゃないっぽい
- mavlinkはXMLでメッセージを定義して、それを各プログラミング言語ごとのライブラリにコンバートするという方式をとっているようだが、このレポジトリ自体は基本的にはmavlink自体のforkで、3DR solo向けにdialect（メッセージを定義したXMLファイルのことを指すらしい）を追加したものの模様
- もう何年もメンテされていない
- [kevinmehallさんによると](https://github.com/3drobotics/mavlink-solo/issues/31#issuecomment-463686904)、コミュニティによってメンテされているバージョンは [https://github.com/OpenSolo/mavlink-solo](https://github.com/OpenSolo/mavlink-solo) を見よ、とのこと

## MAVLink ##

*   Official Website: http://mavlink.org
*   Source: [Mavlink Generator](https://github.com/mavlink/mavlink)
*   Binaries (always up-to-date from master):
  * [C/C++ header-only library](https://github.com/mavlink/c_library)
*   Mailing list: [Google Groups](http://groups.google.com/group/mavlink)

MAVLink -- Micro Air Vehicle Message Marshalling Library.

> This is a library for lightweight communication between Micro Air Vehicles (swarm) and/or ground control stations. It allows for defining messages within XML files, which then are converted into appropriate source code for different languages. These XML files are called dialects, most of which build on the *common* dialect provided in `common.xml`.

これは、マイクロエアビークル（群）や地上管制ステーションとの間の軽量通信用ライブラリです。 XMLファイル内でメッセージを定義し、それをさまざまな言語の適切なソースコードに変換できます。 これらのXMLファイルは方言と呼ばれ、そのほとんどは `common.xml`で提供されている* common *方言に基づいています。


> The MAVLink protocol performs byte-level serialization and so is appropriate for use with any type of radio modem.

MAVLinkプロトコルはバイトレベルのシリアル化を実行するため、あらゆるタイプの無線モデムでの使用に適しています。

> This repository is largely Python scripts that convert XML files into language-specific libraries. There are additional Python scripts providing examples and utilities for working with MAVLink data. These scripts, as well as the generated Python code for MAVLink dialects, require Python 2.7 or greater.

このリポジトリは、主にXMLファイルを言語固有のライブラリに変換するPythonスクリプトです。 MAVLinkデータを扱うための例とユーティリティを提供する追加のPythonスクリプトがあります。 これらのスクリプトは、MAVLink方言用に生成されたPythonコードと同様に、Python 2.7以上を必要とします。

> Note that there are two incompatible versions of the MAVLink protocol: v0.9 and v1.0. Most programs, including [QGroundControl](https://github.com/mavlink/qgroundcontrol), have switched over to v1.0. The v0.9 protocol is **DEPRECATED** and should only be used to maintain backwards compatibility where necessary.

MAVLinkプロトコルには、v0.9とv1.0の2つの非互換バージョンがあります。[QGroundControl](https://github.com/mavlink/qgroundcontrol)を含むほとんどのプログラムは、v1.0に切り替えました。 v0.9プロトコルは**非推奨**であり、必要な場合にのみ後方互換性を維持するために使用されるべきです。

> ### Requirements ###
>   * Python 2.7+
>     * Tkinter (if GUI functionality is desired)

> ### Installation ###
>   1. Clone into a user-writable directory.
>   2. Add the repository directory to your `PYTHONPATH`
>   3. Generate MAVLink parser files following the instructions in the next section *AND/OR* run > included helper scripts described in the Scripts/Examples secion.

1. ユーザが書込み可能なディレクトリにcloneします
2. `PYTHONPATH`にレポジトリのディレクトリを追加します
3. 次のセクションの指示に従ってMAVLinkパーサーファイルを生成します。または（あるいはそれに加えて）、スクリプト/例の節で説明されている付属のヘルパースクリプトを実行します。

### Generating Language-specific Source Files ###

> Language-specific files can be generated via a Python script from the command line or using a GUI. If a dialect XML file has a dependency on another XML file, they must be located in the same directory. Since most MAVLink dialects depend on the **common** messageset, it is recommend that you place your dialect with the others in `/message_definitions/v1.0/`.

言語固有のファイルは、コマンドラインからのPythonスクリプトまたはGUIを使用して生成できます。 方言XMLファイルが別のXMLファイルに依存している場合、それらは同じディレクトリに配置する必要があります。 ほとんどのMAVLink方言は**common**メッセージセットに依存しているので、他の人と一緒に方言を `/message_definitions/v1.0/`に置くことをお勧めします。

> Available languages are:

利用可能な言語は以下の通りです:

  * C
  * C#
  * Java
  * JavaScript
  * Lua
  * Python, version 2.7+

#### From a GUI (recommended) ####

> mavgenerate.py is a header generation tool GUI written in Python. It requires Tkinter, which is only included with Python on Windows, so it will need to be installed separately on non-Windows platforms. It can be run from anywhere using Python's -m argument:

mavgenerate.pyはPythonで書かれたヘッダ生成ツールのGUIです。 これはTkinterを必要とします。これはWindows上のPythonにのみ含まれているので、Windows以外のプラットフォーム上では別にインストールする必要があります。 Pythonの-m引数を使ってどこからでも実行できます:

    $ python -m mavgenerate

#### From the command line ####

> mavgen.py is a command-line interface for generating a language-specific MAVLink library. This is actually the backend used by `mavgenerate.py`. After the `mavlink` directory has been added to the Python path, it can be run by executing from the command line:

mavgen.pyは、言語固有のMAVLinkライブラリを生成するためのコマンドラインインターフェイスです。 これは実際には `mavgenerate.py`によって使用されるバックエンドです。`mavlink`ディレクトリをPythonパスに追加してあれば、それはコマンドラインから実行することで実行できます:

    $ python -m pymavlink.tools.mavgen

### Usage ###

> Using the generated MAVLink dialect libraries varies depending on the language, with language-specific details below:

生成されたMAVLink方言ライブラリーの使用方法は言語によって異なります。言語固有の詳細は以下のとおりです:

#### C ####

> To use MAVLink, include the *mavlink.h* header file in your project:

    #include <mavlink.h>

> Do not include the individual message files. In some cases you will have to add the main folder to the include search path as well. To be safe, we recommend these flags:

    $ gcc -I mavlink/include -I mavlink/include/<your message set, e.g. common>

> The C MAVLink library utilizes a channels metaphor to allow for simultaneous processing of multiple MAVLink streams in the same program. It is therefore important to use the correct channel for each operation as all receiving and transmitting functions provided by MAVLink require a channel. If only one MAVLink stream exists, channel 0 should be used by using the `MAVLINK_COMM_0` constant.

##### Receiving ######
> MAVLink reception is then done using `mavlink_helpers.h:mavlink_parse_char()`.

##### Transmitting #####
> Transmitting can be done by using the `mavlink_msg_*_pack()` function, where one is defined for every message. The packed message can then be serialized with `mavlink_helpers.h:mavlink_msg_to_send_buffer()` and then writing the resultant byte array out over the appropriate serial interface.

> It is possible to simplify the above by writing wrappers around the transmitting/receiving code. A multi-byte writing macro can be defined, `MAVLINK_SEND_UART_BYTES()`, or a single-byte function can be defined, `comm_send_ch()`, that wrap the low-level driver for transmitting the data. If this is done, `MAVLINK_USE_CONVENIENCE_FUNCTIONS` must be defined.

### Scripts/Examples ###

> This MAVLink library also comes with supporting libraries and scripts for using, manipulating, and parsing MAVLink streams within the pymavlink, pymavlink/tools, and pymavlink/examples directories.

このMAVLinkライブラリには、pymavlink、pymavlink/tools、およびpymavlink/examplesディレクトリ内のMAVLinkストリームを使用、操作、および解析するためのサポートライブラリとスクリプトも付属しています。

> The scripts have the following requirements:
>  * Python 2.7+
>  * mavlink repository folder in `PYTHONPATH`
>  * Write access to the entire `mavlink` folder.
>  * Your dialect's XML file is in `message_definitions/*/`

スクリプトには以下の要件があります:
- Python 2.7 以上
- mavlinkレポジトリフォルダが`PYTHONPATH`に存在すること
- `mavlink`フォルダ全体に対する書き込みアクセス
- あなたの方言のXMLファイルが`message_definitions/*/`に存在すること

> Running these scripts can be done by running Python with the '-m' switch, which indicates that the given script exists on the PYTHONPATH. This is the proper way to run Python scripts that are part of a library as per PEP-328 (and the rejected PEP-3122). The following code runs `mavlogdump.py` in `/pymavlink/tools/` on the recorded MAVLink stream `test_run.mavlink` (other scripts in `/tools` and `/scripts` can be run in a similar fashion)]:

これらのスクリプトを実行するには、Pythonに '-m'スイッチを付けて実行します。これは、指定したスクリプトがPYTHONPATHに存在することを示します。 これは、PEP-328（およびリジェクトされたPEP-3122）に従って、ライブラリの一部であるPythonスクリプトを実行するための適切な方法です。次のコードは、記録されたMAVLinkストリーム`test_run.mavlink`に対して`/pymavlink/tools/`にある`mavlogdump.py`を実行します（`/tools`や`/scripts`の他のスクリプトも同様に実行できます）。

    $ python -m pymavlink.tools.mavlogdump test_run.mavlink

### License ###

> MAVLink is licensed under the terms of the Lesser General Public License (version 3) of the Free Software Foundation (LGPLv3). The C-language version of MAVLink is a header-only library, and as such compiling an application with it is considered "using the library", not a derived work. MAVLink can therefore be used without limits in any closed-source application without publishing the source code of the closed-source application.

> See the *COPYING* file for more info.

### Credits ###

> &copy; 2009-2014 [Lorenz Meier](mailto:mail@qgroundcontrol.org)