ROS Resources: Documentation | Support | Discussion Forum | Service Status | Q&A answers.ros.org

Rosserial_mbedのシリアルピンの変更方法について


#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 等のシングルボードコンピュータはサイズ的にロボットに載せられないので,恐縮ですが,これらを使った方法は除外ということでよろしくお願いします.

以上になります.質問事項が多岐に渡り,申し訳ありませんがよろしくお願いいたします。


#2

ビルド等が手元で出来無いのでヒント程度ですが,mbed_rosserialのコードを見ると,

から,

となっているので,おそらく,

ros::NodeHandle nh(new MbedHardware(p13, p14, 57600));

とすれば良いのではないかと思います.


#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


#4

ちなみに自分はmbed公式のオンラインコンパイラを使用しています.


#5

おっと,NodeHandle_のコンストラクタがHardware型を引数にとるわけじゃないからこれじゃダメでしたね.

もちろんコードを書き換えても動くとは思いますが,なんかやり方がある気がします.
どうするんだろう,ちょっとすぐに分からないです.


#6

確かに,ヘッダー内を直接書き換えるよりもいい方法があるとは思うのですが...
もう少し時間をかけて方法を探っていきたいと思います.ビルド環境が無い中,お手伝いいただきありがとうございます.