μROSの使用方法@その3
前回の続きから・・・と言いたかったのですが、諸事情でずいぶん更新していませんでした。
ros-yukkysaito.hatenablog.com
結論から言うと、uROSは動作しました。
uROSをつかってvelodyne driverノードを動かすところまでは成功しています。
bitbucket.org
上記のBitbucketに成果物があるのでご自由に。
この成果物では、velodyne driverとvelodyneのパケット再生シミュレータが入っています。
git clone https://yukkysaito@bitbucket.org/yukkysaito/urosnode_velodyne_driver.git:title=git@github.com:openrobots-dev/uROSnode.git
でcloneできます。
"urosnode_velodyne_driver/velodyne_packet_create/"ディレクトリがシミュレータになります。
make run
すれば、192.168.218.255にvelodyneのパケットがブロードキャストされます。
送信アドレスを変更したければアドレスをMakefileの9行目を変更してください。
肝心のvelodyne driverですが、
"urosnode_velodyne_driver/uROSnode/demos/velodyne_posix /"ディレクトリになります。
あとは
μROSの使用方法@その1 - ROS blog
を参考に、buildして実行で行けるはずです。一応その2で解決できていなかった問題も修正してあるのですんなりいくと思います。
μROSの使用方法@その2 - ROS blog
もし、uROSを使う人がいたら、私の
https://yukkysaito@bitbucket.org/yukkysaito/urosnode_velodyne_driver.git
をベースにしたほうがいいと思います。一応、コア部分のバグはつぶして動作するはずなので・・・。
※どこを修正したかは記憶がありません
μROSの使用方法@その2
前回ros-yukkysaito.hatenablog.com
μROSのサンプルであるturtlesimを実行するところまではたどり着いた。
turtlesimに/turtle1/command_velocityトピックを配信して動作を確認してみる(疑似トピック)。
turtlesimは90Hz弱でトピックを配信しているが、トピック内容に変化はない。
turtlesimの端末では何かしらエラーが出ている。
=> uROS Node Test <= Error at ../../src/lld/posix/uros_lld_conn.c:541 function: uros_lld_conn_recv reason: nb == 0 message: Socket closed by remote before receiving at most 4 bytes from 127.0.1.1:55335 Error at ../../src/urosTcpRos.c:607 function: urosTcpRosRecv reason: tcpstp->err != UROS_OK && tcpstp->err != UROS_ERR_TIMEOUT message: Error UROS_ERR_EOF while receiving 4 bytes after [] Error at ../../src/urosTcpRos.c:281 function: uros_tcpcli_topicsubscription reason: err != UROS_OK message: Topic [/turtle1/command_velocity] client handler returned UROS_ERR_EOF
rosmasterとのXMLRPCによる宣言はうまくいっているようだが、その後のXMLRPCかソケットの確立がうまくいってなさそう・・・。(そして、もう一つ疑問。90Hz弱でトピックを配信しているということは、データ受信していなくても配信動作を行っている?これは問題あり。μROSの仕様なのかturtlesimに限った話かは調査する必要がある。)
次回へ
μROSの使用方法@その1
前回ros-yukkysaito.hatenablog.com
μROSを実際に使用する。
μROSを利用した開発フローは以下の図のようになっています。
引用 http://roscon.ros.org/2013/wp-content/uploads/2013/06/urosnode.pdf
とりあえず、
git clone git@github.com:openrobots-dev/uROSnode.git
してみる。すると/uROSnode/demos/turtlesim-posixがある。いったんサンプルコードをmakeする。
cd ./uROSnode/demos/turtlesim-posix make
エラー発生・・・。
以下、エラー内容
gcc -c -O0 -ggdb -ansi -pedantic -fstack-usage -fdump-final-insns -Wall -Wextra -Wstrict-prototypes -MD -MP -MF .dep/MAKE_ALL_RULE_HOOK.d -I../../include -I./include -I. main.c -o main.o === CPPC command example === g++ -c -O0 -ggdb -fno-rtti -fstack-usage -fdump-final-insns -Wall -Wextra -MD -MP -MF .dep/MAKE_ALL_RULE_HOOK.d -I../../include -I./include -I. main.cpp -o main.o Compiling ./src/urosUser.c In file included from ../../include/urosBase.h:45:0, from ../../include/urosUser.h:45, from ./src/urosUser.c:42: ./src/urosUser.c: In function ‘urosUserParamUpdate’: ./src/urosUser.c:473:21: error: ‘UrosRpcParam’ has no member named ‘class’ urosError(paramp->class != UROS_RPCP_INT, return UROS_ERR_BADPARAM, ^ ./include/urosconf.h:392:9: note: in definition of macro ‘urosError’ { if (when) { \ ^ ./src/urosUser.c:475:46: error: ‘UrosRpcParam’ has no member named ‘class’ UROS_STRARG(keyp), (int)paramp->class, (int)UROS_RPCP_INT)); ^ ./include/urosconf.h:398:14: note: in definition of macro ‘urosError’ printf msgargs ; \ ^ ./src/urosUser.c:488:21: error: ‘UrosRpcParam’ has no member named ‘class’ urosError(paramp->class != UROS_RPCP_INT, return UROS_ERR_BADPARAM, ^ ./include/urosconf.h:392:9: note: in definition of macro ‘urosError’ { if (when) { \ ^ ./src/urosUser.c:490:46: error: ‘UrosRpcParam’ has no member named ‘class’ UROS_STRARG(keyp), (int)paramp->class, (int)UROS_RPCP_INT)); ^ ./include/urosconf.h:398:14: note: in definition of macro ‘urosError’ printf msgargs ; \ ^ ./src/urosUser.c:503:21: error: ‘UrosRpcParam’ has no member named ‘class’ urosError(paramp->class != UROS_RPCP_INT, return UROS_ERR_BADPARAM, ^ ./include/urosconf.h:392:9: note: in definition of macro ‘urosError’ { if (when) { \ ^ ./src/urosUser.c:505:46: error: ‘UrosRpcParam’ has no member named ‘class’ UROS_STRARG(keyp), (int)paramp->class, (int)UROS_RPCP_INT)); ^ ./include/urosconf.h:398:14: note: in definition of macro ‘urosError’ printf msgargs ; \ ^ make: *** [build/obj/urosUser.o] Error 1
α版ということもありそう簡単にはいかない。
一応バグ修正を行った。
fix demos's bug · yukkysaito/uROSnode@ff9b37e · GitHub
make cd build ./turtlesim #一回目は実行失敗とともに設定ファイルが作られる(rosmasterのIPアドレスとかが記述される模様?) ./turtlesim #エラー発生
makeして実行すると、エラーが出る。以下、エラー内容
=> uROS Node Test <= Error at ../../src/lld/posix/uros_lld_conn.c:490 function: uros_lld_conn_connect reason: err != 0 message: Error at ../../src/lld/posix/uros_lld_conn.c:490 function: uros_lld_conn_connect reason: err != 0 message: Socket error [Connection refused] while connecting to 192.168.1.103:11311 Socket error [Connection refused] while connecting to 192.168.1.103:11311 Error at ../../src/urosNode.c:658 function: urosNodePublishTopicByDesc reason: err != UROS_OK message: Error UROS_ERR_NOCONN while registering as publisher of topic [/turtle1/pose] Error at ./src/app.c:418 function: turtle_spawn reason: err != UROS_OK message: Error UROS_ERR_NOCONN while publishing topic [/turtle1/pose] Error at ../../src/lld/posix/uros_lld_conn.c:490 function: uros_lld_conn_connect reason: err != 0 message: Socket error [Connection refused] while connecting to 192.168.1.103:11311
どうやらrosmasterのIPアドレスが間違っているようだ。
/uROSnode/demos/turtlesim-posix/include/urosconf.h内にIPアドレスの記述があるらしい。
ここを適切なIPアドレスに書き換える必要がある。
その後、以下のコマンドを実行。
cd .. rm -rf ./build make ./turtlesim ./turtlesim
再びエラー発生。以下、エラー内容。
=> uROS Node Test <= turtlesim: ../../src/urosNode.c:594: urosNodePublishTopicSZ: Assertion `namep[0] != 0' failed. Aborted (core dumped)
再びバグ修正
fix demos's bug · yukkysaito/uROSnode@30fdc7a · GitHub
動くようになった
修正版はここにあげときます。ご自由に使ってくださいgithub.com
次はもう少し詳しく見ていきます
μROSについて
μROSはROSのEmbedded部門で検討されている組込み向けROSです。(roscというのもある)
参考資料
・http://www.osrfoundation.org/wordpress2/wp-content/uploads/2015/04/ros_and_embedded_systems.pdf
現状では、Github上でイタリアのAndrea Zoppiさんが一人で手掛けている模様。
更新は2年前にとまっており、現在は活動していない?
非常に資料が少ないので、調べて公開していこうと思う。
参考資料
・http://roscon.ros.org/2013/wp-content/uploads/2013/06/urosnode.pdf - ROS conference 2013での発表資料
・https://vimeo.com/66970254 - ROS conference 2013での発表動画
公になっている参考資料はこれくらいだと思う。
とりあえず、μROSをかまってみる。
次回はμROSの使用方法について