s5460
December 7 |
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 等のシングルボードコンピュータはサイズ的にロボットに載せられないので,恐縮ですが,これらを使った方法は除外ということでよろしくお願いします.
以上になります.質問事項が多岐に渡り,申し訳ありませんがよろしくお願いいたします。
Visit Topic or reply to this email to respond.
You are receiving this because you enabled mailing list mode.
To unsubscribe from these emails, click here.
longjie
December 7 |
ビルド等が手元で出来無いのでヒント程度ですが,mbed_rosserialのコードを見ると,
- */
-
- #ifndef _ROS_H_
- #define _ROS_H_
-
- #include "ros/node_handle.h"
- #include "MbedHardware.h"
-
- namespace ros
- {
- typedef NodeHandle_<MbedHardware> NodeHandle;
- }
-
- #endif
から,
-
- #ifndef ROS_MBED_HARDWARE_H_
- #define ROS_MBED_HARDWARE_H_
-
- #include "mbed.h"
-
- #include "BufferedSerial.h"
-
- class MbedHardware {
- public:
- MbedHardware(PinName tx, PinName rx, long baud = 57600)
- :iostream(tx, rx){
- baud_ = baud;
- t.start();
- }
-
- MbedHardware()
- :iostream(USBTX, USBRX) {
- baud_ = 57600;
- t.start();
- }
となっているので,おそらく,
ros::NodeHandle nh(new MbedHardware(p13, p14, 57600));
とすれば良いのではないかと思います.
Visit Topic or reply to this email to respond.
s5460
December 7 |
ご返信ありがとうございます。
早速,教えていただいた方法を試してみたのですが,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
Visit Topic or reply to this email to respond.
s5460
December 7 |
s5460
December 7 |
ちなみに自分はmbed公式のオンラインコンパイラを使用しています.
longjie
December 7 |
おっと,NodeHandle_のコンストラクタがHardware型を引数にとるわけじゃないからこれじゃダメでしたね.
- uint8_t message_in[INPUT_SIZE];
- uint8_t message_out[OUTPUT_SIZE];
-
- Publisher * publishers[MAX_PUBLISHERS];
- Subscriber_ * subscribers[MAX_SUBSCRIBERS];
-
- /*
- * Setup Functions
- */
- public:
- NodeHandle_() : configured_(false)
- {
-
- for (unsigned int i = 0; i < MAX_PUBLISHERS; i++)
- publishers[i] = 0;
-
- for (unsigned int i = 0; i < MAX_SUBSCRIBERS; i++)
- subscribers[i] = 0;
-
- for (unsigned int i = 0; i < INPUT_SIZE; i++)
- message_in[i] = 0;
もちろんコードを書き換えても動くとは思いますが,なんかやり方がある気がします.
どうするんだろう,ちょっとすぐに分からないです.
s5460
December 7 |
ちなみに自分はmbed公式のオンラインコンパイラを使用しています.
s5460
December 8 |
確かに,ヘッダー内を直接書き換えるよりもいい方法があるとは思うのですが...
もう少し時間をかけて方法を探っていきたいと思います.ビルド環境が無い中,お手伝いいただきありがとうございます.