先日はご回答ありがとうございました.
スレッドの連投になってしまい申し訳ありません.
ご指摘の通りUARTを使ったマイコン間通信を試みています
参考にしたページはこちらです
http://ardupilot.org/dev/docs/learning-ardupilot-uarts-and-the-cons...
libraries/AP_HAL/examples/UART_testのプログラムの通り,メーセージをNavioのUART端子から出力し,受信側でメーセージを受け取ることを試しています.
今回はARMマイコンではなく,USBシリアル変換ケーブルを使ってPCのTera Termというソフトで受信します.
しかし...うまく動きません
ボートレートをあわせたので恐らくuartの割当が間違っているかと思います.
デフォルトでは次のように割り当てられ,5つ全てにメーセージを出力するようになっています.
- uartA - the console (usually USB, runs MAVLink telemetry)
- uartB - the first GPS
- uartC - primary telemetry (telem1 on Pixhawk, 2nd radio on APM2)
- uartD - secondary telemetry (telem2 on Pixhawk)
- uartE - 2nd GPS
これをNavioに合わせて割当が必要だと思うのですがどなたかArducopterのuart通信を使った経験がある方はおられますか?
どうぞよろしくお願いします
Replies
mavlinkを使ってnavio→マイコンへRCinputを渡す方法はないのでしょうか?
hsgucci said:
大学での研究のため具体的な説明は出来ないです.すみません.
hsgucci said:
2)の場合は、
例えば私だったらこんな風にやると思います。
ちょうどNavio(ラズパイ)を使っているので、ラズパイのpythonプログラムでRCinputの値を取得します。
http://python.dronekit.io/examples/channel_overrides.html
その上でpythonプログラムがUARTやUDPでマイコンにデータを送ってあげれば良いですね。
ただ、この場合はdronekit(mavlinkのラッパー)を使ってRCinputを取得しているのでどうしてもタイムラグが生まれます。
前述のS.BUS信号横取り作戦のほうが即時性があります。
例えばですが、
RCinput、おそらくはS.BUSかと思いますが、受信機からのSBUS信号を一旦マイコンで受信して、その上でNavioへ渡すというシステム構成ではどうでしょうか?
プロポのスティック状況をマイコンでモニタしながら、別のアクチュエータを制御することができるかと。
私のところではラジコン操作(手動)とロボット動作(自律)を切り替えるためによくこの構成を使っています。
S.BUSの解析で有名なここのページのライブラリでも、受信するけどそのままスルーして出力するモードと、受信データを改変して出力するモードが選べますね。
https://developer.mbed.org/users/Digixx/notebook/futaba-s-bus-contr...
どうしてもNavioにRCinputを吐き出させたい、となると上記の手段は使えませんが。
何となくイメージしたのは、
「ロボットアーム付きのドローン」
「検査装置付きアームを外壁に押し付けるドローン」
みたいな感じですね?
度々お世話になります.本当に有難うございます.
目的は1)です
・プロポのRCinputをnavioを仲介してマイコンに渡す
・プロポのRCinputに応じて姿勢制御を行う(マイコンが動かすアクチュエータがマルチコプターの飛行に影響を及ぼすため)
ちなみに2)についてですが,mavlinkはGCSとArdupilotとの通信だと理解していましたが,マイコンとの通信が可能なんですか?
hsgucci said:
1)apmの元プログラムを改変して外部マイコンと連携したい(例えば制御アルゴリズムに追加するとか)
2)apmはそのままで良い。mavlinkで通信して機体の状態を取得し、マイコンが何か処理をする。
AP_HALとかを触っているところを見ると1)をお望みでしょうか?
1)は研究者の方がよく要望する内容です。2)はドローンには勝手に飛んでもらって、上位のPCやマイコンが指令を出すという応用です。
Navioなので、どっちがやりたいのかよくわから無いんですよ〜。
要はPixhawkの中身を変えたいのか、Pixhawkにコマンドを送るだけで良いのか、です。