s5460
1
ROS Japan Users Groupの皆様
ROSを始めて二か月程になる学生です.環境はUbuntu 16.04 LTS ,kinetic となります.
現在,mbed LPC1768 搭載のロボットと,ROSが動いているノートPCをUSBケーブルで接続し,rosserial_mbedを導入して通信させているのですが,ロボットの形状から無線化が必要になりました.そこで,xbeeを導入し無線化を行おうとしているのですが,rosserial_mbedのシリアルピンのデフォルトがUSBTX,USBRXに設定されているため,これをp13,p14に変更してxbeeと接続させたいと考えています.しかし,その方法が分からず困っております.
一通りネット上で調べたのですが,良い方法が見つかりませんでした.ご存知の方はご教授いただけると幸いです.
また,mbed+xbeeよりも簡単にマイコン・PC間の無線化をする方法があれば,そちらの方法も教えていただければと思います.一応,aruduinoは扱ったことがあります.
※raspberry pi 等のシングルボードコンピュータはサイズ的にロボットに載せられないので,恐縮ですが,これらを使った方法は除外ということでよろしくお願いします.
以上になります.質問事項が多岐に渡り,申し訳ありませんがよろしくお願いいたします。
ビルド等が手元で出来無いのでヒント程度ですが,mbed_rosserialのコードを見ると,
から,
となっているので,おそらく,
ros::NodeHandle nh(new MbedHardware(p13, p14, 57600));
とすれば良いのではないかと思います.
s5460
3
ご返信ありがとうございます。
早速,教えていただいた方法を試してみたのですが,No instance of constructor とエラーが出てしまいました.
確認のため,自分の環境でのMbedHardware.hを見てみましたがクラスの中身はご提示いただいたgithubのコードと全く同じものでした.
応急的な措置になりますが,github上の24行目のUSBTX,USBRXをp13,p14に書き換えてしまった方がいいのでしょうか?
以下にエラーメッセージの全文を載せておきます.
Error: No instance of constructor “ros::NodeHandle_<Hardware, MAX_SUBSCRIBERS, MAX_PUBLISHERS, INPUT_SIZE, OUTPUT_SIZE>::NodeHandle_ [with Hardware=MbedHardware, MAX_SUBSCRIBERS=25, MAX_PUBLISHERS=25, INPUT_SIZE=512, OUTPUT_SIZE=512]” matches the argument list in “main.cpp”, Line: 23, Col: 21
s5460
4
ちなみに自分はmbed公式のオンラインコンパイラを使用しています.
おっと,NodeHandle_のコンストラクタがHardware型を引数にとるわけじゃないからこれじゃダメでしたね.
もちろんコードを書き換えても動くとは思いますが,なんかやり方がある気がします.
どうするんだろう,ちょっとすぐに分からないです.
s5460
6
確かに,ヘッダー内を直接書き換えるよりもいい方法があるとは思うのですが...
もう少し時間をかけて方法を探っていきたいと思います.ビルド環境が無い中,お手伝いいただきありがとうございます.