ArduCopterの上昇下降について

以下の内容は先日「Add a Discussion」ではなく「Send Message to Group」に誤って投稿してしまいました。
もしかしたら一部の方にメールで届いてるかもしれません。。。
ご迷惑をおかけしてすみません。

はじめまして
ただいまNAVIO2+Rasberry pi3とArduCopterを使ってクワッドローターを製作中です。

現在、Win用のWifiコントローラーアプリケーションを作成しておりUDPでRaspberry Piに上昇や下降の命令を送信したいのですが、
ArduCopter側でそういったUDPのデータを受信して処理を行う機能はありますでしょうか。

なければArduCopterにUDPの送受信用のプログラムを追加しようと考えています。
その際にですが、受けとった電文から上昇、下降などを行いたいのですが、
上昇、下降などの処理を行っているソースはArduCopterのどのファイルに記載されていますでしょうか。

もしご存知の方がいらっしゃいましたらご教示お願いします。

You need to be a member of diydrones to add comments!

Join diydrones

Email me when people reply –

Replies

  • 返事が遅くなってしまい申し訳ございません。

    すみませんでした。--masterを指定しておりませんでした。

    改めて--masterを指定しましたが、実行できませんでした。

    pi@navio:~ $ mavproxy.py  --master=Win環境のIP:14550

    Failed to connect to Win環境のIP:14550 : [Errno 99] Cannot assign requested address

    ネットワークの接続ができていないと思い、Raspberry側とWindows側でpingの確認を行いましたが、

    問題なくつながっておりました。



    murata,katsutoshi said:

    ちょっと確認です。

    > pi@navio:~ $ mavproxy.py Win側のIPアドレス:14550

    で、下記URLにかかれております、「--master=」をつけておられるか不明でしたので。

    つけておられるとは思いますが。確認させていただきました。

    例:
    mavproxy.py --master=192.168.1.1:14550

    http://ardupilot.github.io/MAVProxy/html/getting_started/quickstart...

    Simone said:

    初歩的な間違いでした・・・mavproxyをインストールしていませんでした。

    mavproxyをインストールし、実行してみましたが、以下のエラーが発生してしまいました。

    シリアル通信モジュールが接続できていないのでしょうか?

    Navio2にはXbeeモジュールをつけてはいますが・・・

    pi@navio:~ $ mavproxy.py Win側のIPアドレス:14550
    Auto-detected serial ports are:
    /dev/ttyS0
    Connecting to /dev/ttyS0
    Connect /dev/ttyS0 source_system=255
    Failed to connect to /dev/ttyS0 : Could not configure port: (5, 'Input/output error')
    Traceback (most recent call last):
      File "/usr/local/bin/mavproxy.py", line 1042, in <module>
        load_module(m, quiet=True)
      File "/usr/local/bin/mavproxy.py", line 272, in load_module
        module = m.init(mpstate)
      File "/usr/local/lib/python2.7/dist-packages/MAVProxy/modules/mavproxy_mode.py", line 83, in init
        return ModeModule(mpstate)
      File "/usr/local/lib/python2.7/dist-packages/MAVProxy/modules/mavproxy_mode.py", line 12, in __init__
        self.add_command('mode', self.cmd_mode, "mode change", self.available_modes())
      File "/usr/local/lib/python2.7/dist-packages/MAVProxy/modules/mavproxy_mode.py", line 35, in available_modes
        mode_mapping = self.master.mode_mapping()
    AttributeError: 'NoneType' object has no attribute 'mode_mapping'

  • ちょっと確認です。

    > pi@navio:~ $ mavproxy.py Win側のIPアドレス:14550

    で、下記URLにかかれております、「--master=」をつけておられるか不明でしたので。

    つけておられるとは思いますが。確認させていただきました。

    例:
    mavproxy.py --master=192.168.1.1:14550

    http://ardupilot.github.io/MAVProxy/html/getting_started/quickstart...

    Simone said:

    初歩的な間違いでした・・・mavproxyをインストールしていませんでした。

    mavproxyをインストールし、実行してみましたが、以下のエラーが発生してしまいました。

    シリアル通信モジュールが接続できていないのでしょうか?

    Navio2にはXbeeモジュールをつけてはいますが・・・

    pi@navio:~ $ mavproxy.py Win側のIPアドレス:14550
    Auto-detected serial ports are:
    /dev/ttyS0
    Connecting to /dev/ttyS0
    Connect /dev/ttyS0 source_system=255
    Failed to connect to /dev/ttyS0 : Could not configure port: (5, 'Input/output error')
    Traceback (most recent call last):
      File "/usr/local/bin/mavproxy.py", line 1042, in <module>
        load_module(m, quiet=True)
      File "/usr/local/bin/mavproxy.py", line 272, in load_module
        module = m.init(mpstate)
      File "/usr/local/lib/python2.7/dist-packages/MAVProxy/modules/mavproxy_mode.py", line 83, in init
        return ModeModule(mpstate)
      File "/usr/local/lib/python2.7/dist-packages/MAVProxy/modules/mavproxy_mode.py", line 12, in __init__
        self.add_command('mode', self.cmd_mode, "mode change", self.available_modes())
      File "/usr/local/lib/python2.7/dist-packages/MAVProxy/modules/mavproxy_mode.py", line 35, in available_modes
        mode_mapping = self.master.mode_mapping()
    AttributeError: 'NoneType' object has no attribute 'mode_mapping'

  • 初歩的な間違いでした・・・mavproxyをインストールしていませんでした。

    mavproxyをインストールし、実行してみましたが、以下のエラーが発生してしまいました。

    シリアル通信モジュールが接続できていないのでしょうか?

    Navio2にはXbeeモジュールをつけてはいますが・・・

    pi@navio:~ $ mavproxy.py Win側のIPアドレス:14550
    Auto-detected serial ports are:
    /dev/ttyS0
    Connecting to /dev/ttyS0
    Connect /dev/ttyS0 source_system=255
    Failed to connect to /dev/ttyS0 : Could not configure port: (5, 'Input/output error')
    Traceback (most recent call last):
      File "/usr/local/bin/mavproxy.py", line 1042, in <module>
        load_module(m, quiet=True)
      File "/usr/local/bin/mavproxy.py", line 272, in load_module
        module = m.init(mpstate)
      File "/usr/local/lib/python2.7/dist-packages/MAVProxy/modules/mavproxy_mode.py", line 83, in init
        return ModeModule(mpstate)
      File "/usr/local/lib/python2.7/dist-packages/MAVProxy/modules/mavproxy_mode.py", line 12, in __init__
        self.add_command('mode', self.cmd_mode, "mode change", self.available_modes())
      File "/usr/local/lib/python2.7/dist-packages/MAVProxy/modules/mavproxy_mode.py", line 35, in available_modes
        mode_mapping = self.master.mode_mapping()
    AttributeError: 'NoneType' object has no attribute 'mode_mapping'

  • エラーメッセージから推測するとアドレスの指定がおかしくて、接続できていないみたいですね。
    書き方は合っていると思うのです。
    でもWindowsだと引数の書き方が違うのでしょうか。。。

    あるいはmavproxyがちゃんと動いていないとか?
  • vehicle_state.pyを実行してみましたが、ダメでした・・・

    pingは双方向で通るのですが、何でですかね…

    C:\dronekit-python-master\examples\vehicle_state>python vehicle_state.py --connect 192.168.24.57:14550

    Connecting to vehicle on: 192.168.24.57:14550
    Traceback (most recent call last):
      File "vehicle_state.py", line 37, in <module>
        vehicle = connect(connection_string, wait_ready=True)
      File "build\bdist.win-amd64\egg\dronekit\__init__.py", line 2808, in connect
      File "build\bdist.win-amd64\egg\dronekit\mavlink.py", line 128, in __init__
      File "C:\WinPython-64bit-2.7.12.2Zero\python-2.7.12.amd64\lib\site-packages\pymavlink-2.0.6-py2.7.egg\pymavlink\mavutil.py", line 1210, in mavlink_connection
        return mavudp(device, source_system=source_system, input=input, use_native=use_native)
      File "C:\WinPython-64bit-2.7.12.2Zero\python-2.7.12.amd64\lib\site-packages\pymavlink-2.0.6-py2.7.egg\pymavlink\mavutil.py", line 850, in __init__
        self.port.bind((a[0], int(a[1])))
      File "C:\WinPython-64bit-2.7.12.2Zero\python-2.7.12.amd64\lib\socket.py", line 228, in meth
        return getattr(self._sock,name)(*args)
    socket.error: [Errno 10049] 要求したアドレスのコンテキストが無効です。

  • dronekit pythonでの指令ですね。ウチの学生も今その辺りを取り組んでいます。
    まずvehicle_state.pyで値は取れていますか?
    SITLから実機に切り替える時は結構手間取りますね〜
  • あれから検証を行いましたが、以下の点で現在躓いております。

    1)simple_gotoを実行してもドローンと接続できない

    公式リファレンスを参考にしてWin環境にてサンプルプログラムのsimple_goto.pyを実行してもエラーがかえって来ます。

    ●Win側

    C:\dronekit-python-master\examples\simple_goto>python simple_goto.py --connect ドローン側のIPアドレス:14550
    Connecting to vehicle on: ドローン側のIPアドレス:14550
    UDP ports must be specified as host:port

    ●Raspberry Pi側

    pi@navio:~ $ sudo ArduCopter-quad -A udp:WindowsのIPアドレス:14550
    Raspberry Pi 2 with BCM2709!

    2)公式サポート対象のWinPythonおよびActivePythonが起動しない。

    WinPythonとActivePythonをWindows10環境で起動しようとしましたが、起動しません。

    これらのIDEはWindows10で動作しないのでしょうか。

  • お二人ともありがとうございました。

    まずはMissionPlannerの機能で試して検証してみたいと思います

  • UDP云々は分かりませんが、PCにジョイスティック(ゲームパッド等)を接続してMissionPlannerから操作するという機能があったはず。

    また、MissionPlannerのPythonスクリプトでも操作が可能です。(Script.SendRC(int Channel, int PWM, bool SendNow)で送受信機の実物が無くてもRC信号の処理が可能)

    ArduCopter側での処理はどちらも同じかもしれません。プログラムの方は見てないのでわかりませんが・・・

    また、高度を数値で設定したいのであれば[GCS_Mavlink.cpp]のhandle_change_alt_request等が役に立つかもしれません。MissionPlannerのFlightData内のタブのActionからChangeAltで操作可能な、高度指定の関数だったかなと思います。実際に使ったことがないのでどういう動きになるかは想像しかできませんが。

  • はじめまして。
    どこにあげてよいのかわからなかったので、とりあえず、私が立ち上げたディスカッションに一例を挙げました。

    下記がその内容です。

    参考になれば幸いです。

    ====

    その他:「ArduCopterの上昇下降について」オール配信へのコメント
    通信プロトコルとしては、「MAVproxy」を使用して行うとよいでしょう。
    例えば、下記のような構築になるかと。
    http://air.pawana.jp/2015/07/raspberry-pi-navio-setup/
    WINに、Dronekit環境を構築して、Pythonにて開発。
    http://python.dronekit.io/contributing/developer_setup_windows.html
    参考例は、exampleフォルダのsImple_goto.pyをみていただければ、takeoff、移動、ランディングの処理が書かれています。
    http://python.dronekit.io/examples/simple_goto.html
    Raspberry pi + Navio+ コントローラー セットアップ
This reply was deleted.