UARTを使ったマイコン間通信(NavioとSTM32 ARMマイコン)

先日はご回答ありがとうございました.

スレッドの連投になってしまい申し訳ありません.

ご指摘の通り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通信を使った経験がある方はおられますか?

どうぞよろしくお願いします

Views: 243

Replies are closed for this discussion.

Replies to This Discussion

もう一度お聞きしますが、目的は何でしょうか?

1)apmの元プログラムを改変して外部マイコンと連携したい(例えば制御アルゴリズムに追加するとか)

2)apmはそのままで良い。mavlinkで通信して機体の状態を取得し、マイコンが何か処理をする。


AP_HALとかを触っているところを見ると1)をお望みでしょうか?
1)は研究者の方がよく要望する内容です。2)はドローンには勝手に飛んでもらって、上位のPCやマイコンが指令を出すという応用です。

Navioなので、どっちがやりたいのかよくわから無いんですよ〜。
要はPixhawkの中身を変えたいのか、Pixhawkにコマンドを送るだけで良いのか、です。

度々お世話になります.本当に有難うございます.

目的は1)です

・プロポのRCinputをnavioを仲介してマイコンに渡す

・プロポのRCinputに応じて姿勢制御を行う(マイコンが動かすアクチュエータがマルチコプターの飛行に影響を及ぼすため)

ちなみに2)についてですが,mavlinkはGCSとArdupilotとの通信だと理解していましたが,マイコンとの通信が可能なんですか?



hsgucci said:

もう一度お聞きしますが、目的は何でしょうか?

1)apmの元プログラムを改変して外部マイコンと連携したい(例えば制御アルゴリズムに追加するとか)

2)apmはそのままで良い。mavlinkで通信して機体の状態を取得し、マイコンが何か処理をする。


AP_HALとかを触っているところを見ると1)をお望みでしょうか?
1)は研究者の方がよく要望する内容です。2)はドローンには勝手に飛んでもらって、上位のPCやマイコンが指令を出すという応用です。

Navioなので、どっちがやりたいのかよくわから無いんですよ〜。
要はPixhawkの中身を変えたいのか、Pixhawkにコマンドを送るだけで良いのか、です。

何となくイメージしたのは、
「ロボットアーム付きのドローン」
「検査装置付きアームを外壁に押し付けるドローン」
みたいな感じですね?

例えばですが、

RCinput、おそらくはS.BUSかと思いますが、受信機からのSBUS信号を一旦マイコンで受信して、その上でNavioへ渡すというシステム構成ではどうでしょうか?

プロポのスティック状況をマイコンでモニタしながら、別のアクチュエータを制御することができるかと。

私のところではラジコン操作(手動)とロボット動作(自律)を切り替えるためによくこの構成を使っています。

S.BUSの解析で有名なここのページのライブラリでも、受信するけどそのままスルーして出力するモードと、受信データを改変して出力するモードが選べますね。

https://developer.mbed.org/users/Digixx/notebook/futaba-s-bus-contr...

どうしてもNavioにRCinputを吐き出させたい、となると上記の手段は使えませんが。

2)の場合は、
例えば私だったらこんな風にやると思います。
ちょうどNavio(ラズパイ)を使っているので、ラズパイのpythonプログラムでRCinputの値を取得します。

http://python.dronekit.io/examples/channel_overrides.html

その上でpythonプログラムがUARTやUDPでマイコンにデータを送ってあげれば良いですね。

ただ、この場合はdronekit(mavlinkのラッパー)を使ってRCinputを取得しているのでどうしてもタイムラグが生まれます。
前述のS.BUS信号横取り作戦のほうが即時性があります。

大学での研究のため具体的な説明は出来ないです.すみません.

hsgucci said:

何となくイメージしたのは、
「ロボットアーム付きのドローン」
「検査装置付きアームを外壁に押し付けるドローン」
みたいな感じですね?

mavlinkを使ってnavio→マイコンへRCinputを渡す方法はないのでしょうか?


hsgucci said:

例えばですが、

RCinput、おそらくはS.BUSかと思いますが、受信機からのSBUS信号を一旦マイコンで受信して、その上でNavioへ渡すというシステム構成ではどうでしょうか?

プロポのスティック状況をマイコンでモニタしながら、別のアクチュエータを制御することができるかと。

私のところではラジコン操作(手動)とロボット動作(自律)を切り替えるためによくこの構成を使っています。

S.BUSの解析で有名なここのページのライブラリでも、受信するけどそのままスルーして出力するモードと、受信データを改変して出力するモードが選べますね。

https://developer.mbed.org/users/Digixx/notebook/futaba-s-bus-contr...

どうしてもNavioにRCinputを吐き出させたい、となると上記の手段は使えませんが。

RSS

© 2017   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service