Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add ci config #10

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open

add ci config #10

wants to merge 2 commits into from

Conversation

MrBearing
Copy link
Collaborator

No description provided.

@MrBearing MrBearing self-assigned this Aug 31, 2024
@MrBearing
Copy link
Collaborator Author

作業中です。

@MrBearing
Copy link
Collaborator Author

MrBearing commented Aug 31, 2024

Actionsの設定有効化しました。

@MrBearing
Copy link
Collaborator Author

MrBearing commented Sep 2, 2024

@takasehideki
本PRですが、一度GithubActionを有効化するために、mainにマージしても良いでしょうか?
(まだ作業途中ですが現段階でGithub Actionで実行できるか検証したく。)

@takasehideki
Copy link
Member

さほど差し支えはありませんが,ここを編集したら任意のブランチで実行できませんか?おそらく試行錯誤がありえるかと思いますので,別のブランチで十分に検証できてから main に適用がよいように思いました.
https://github.com/mROS-base/mros2-posix/pull/10/files#diff-3115ebcaaf2d8712a47490997ad972249736f61ea4c0092a930d23dbce656a5eR6

@MrBearing
Copy link
Collaborator Author

MrBearing commented Sep 2, 2024

このPRのブランチをpush配下に追加したらいけました。
取り急ぎは、この対応でCIの設定進められそうです。

mainにマージしてしまうとまずいので、直前に当該箇所を削除します。

@MrBearing
Copy link
Collaborator Author

MrBearing commented Sep 9, 2024

@takasehideki jinja2をaptで追加する必要があったので、READMEに追加した方が良いかもです。
とりあえず、ビルドまでは動作させることができました。

@MrBearing
Copy link
Collaborator Author

MrBearing commented Sep 9, 2024

  • IPのアドレスの取得方法 別途シェルスクリプト書いて、書き換える
  • テスト方法は検討の必要あり。
    • 対向のNative ROSは dockerで立てるCIスクリプト内でビルド
    • mROS2 - mROS2 のテストはテスト対象をcmake_build下をビルド後にリネーム

@MrBearing MrBearing added TESTING and removed TESTING labels Sep 10, 2024
@MrBearing
Copy link
Collaborator Author

MrBearing commented Sep 11, 2024

@takasehideki
テスト対象のプログラムやテストスートのご指定ありますか?

特になければ、workspace下に適当に作ってテスト書こうと思っています。

@takasehideki
Copy link
Member

@MrBearing 細かい指定はありません.

  • mros2/native ROS2 のそれぞれpub/subで計4セット(native/nativeはあまり意味はないがあっても良い)
  • primitive type (String) と custom type (Twistでよいか?メッセージ生成込み)

の計8セットがあると良いのかなぁ.

@MrBearing
Copy link
Collaborator Author

MrBearing commented Sep 12, 2024

@takasehideki
承知しました。

以下の理解で良いでしょうか。

テスト時の通信形態の組み合わせは以下の4セット

  • pub mros2 / sub mros2
  • pub mros2 / sub native ROS 2
  • pub native ROS 2 / sub mros2
  • (pub native ROS 2 / sub native ROS 2) あれば尚良し

テスト対象の型は以下の2セット

  • primitive type std_msgs::msg::String
  • custom type Twist

4セット(3セット) × 2 セットで合計8セット(6セット)

@takasehideki
Copy link
Member

いえすです 💯

@MrBearing
Copy link
Collaborator Author

MrBearing commented Sep 12, 2024

@takasehideki

2点、質問というか相談です。

1. テスト通過条件について

mros2 - native ROS 2間は通信を手元でテストしているのですが、最初の1~2メッセージくらいがパケロスするような挙動をします。ロストする数がちょっと不定でテストの冪等性に不安があります。

テストのが通過条件は、一旦、複数回pubして1回でも良いから到達すればOKとしても良いでしょうか。

2.mros2 - mros 2 間の通信

mros2 - mros 2間が上手く通信できてないです。。
後ほどログを共有しますので、お知恵をお借りできればと

@MrBearing
Copy link
Collaborator Author

MrBearing commented Sep 14, 2024

@takasehideki

テストプログラム書いてるのですが、ちょっとトラブっています。
プッシュ済みのworkspace/test_echoreply_stringを実行すると、
subscriberのコールバックが呼ばれない現象が発生しています。

ros2 topic echoros2 topic pub で/to_linuxのNativeROSとのpub/subは動作確認できていますが、

mROS 2間での通信は同一IPアドレスだと通信できない等の制限が有るのでしょうか。
同様の現象はworkspace/echoreply_stringなどでも確認できています。

以下動作ログです。

$ bash build.bash all test_echoreply_string
$ ./cmake_build/mros2-posix 
ipaddr=0xc4d317ac
mask=0x00feffff
LOG_NOTICE : 00000000.000 : osKernelStart
mros2-posix start!
app name: echoback_string
LOG_DEBUG : 00000000.000 : mROS 2 initialization is completed

LOG_DEBUG : 00000000.000 : [MROS2LIB] create_node
LOG_DEBUG : 00000000.000 : [MROS2LIB] start creating participant
LOG_DEBUG : 00000000.000 : [MROS2LIB] mros2_init task start
LOG_DEBUG : 00000000.000 : /home/takumi/mros2-posix/lwip-posix/src/core/udp.c udp_init() 28: enter
LOG_DEBUG : 00000000.000 : [MROS2LIB] Initilizing lwIP complete
LOG_DEBUG : 00000000.000 : /home/takumi/mros2-posix/lwip-posix/src/core/udp.c udp_new() 306: enter
LOG_DEBUG : 00000000.000 : /home/takumi/mros2-posix/lwip-posix/src/core/udp_multicast_manager.c udp_mc_info_alloc() 24: enter
LOG_DEBUG : 00000000.000 : /home/takumi/mros2-posix/lwip-posix/src/core/udp_multicast_manager.c udp_mc_info_alloc() 42: mcp=0x7fd74c000db0 exit
LOG_DEBUG : 00000000.000 : /home/takumi/mros2-posix/lwip-posix/src/core/udp.c udp_new() 326: exit
LOG_DEBUG : 00000000.000 : /home/takumi/mros2-posix/lwip-posix/src/core/udp.c udp_bind() 141: ipaddr=0x0 port=7401 enter
LOG_DEBUG : 00000000.000 : /home/takumi/mros2-posix/lwip-posix/src/core/udp.c udp_bind() 154: mcp exist 0x7fd74c000db0
LOG_DEBUG : 00000000.000 : /home/takumi/mros2-posix/lwip-posix/src/core/udp.c udp_bind() 224: exit
LOG_DEBUG : 00000000.000 : /home/takumi/mros2-posix/lwip-posix/src/core/udp.c udp_recv() 239: enter
LOG_DEBUG : 00000000.000 : /home/takumi/mros2-posix/lwip-posix/src/core/udp.c udp_recv() 250: exit
LOG_DEBUG : 00000000.000 : /home/takumi/mros2-posix/lwip-posix/src/core/udp.c udp_new() 306: enter
LOG_DEBUG : 00000000.000 : /home/takumi/mros2-posix/lwip-posix/src/core/udp_multicast_manager.c udp_mc_info_alloc() 24: enter
LOG_DEBUG : 00000000.000 : /home/takumi/mros2-posix/lwip-posix/src/core/udp_multicast_manager.c udp_mc_info_alloc() 42: mcp=0x7fd74c000dd0 exit
LOG_DEBUG : 00000000.000 : /home/takumi/mros2-posix/lwip-posix/src/core/udp.c udp_new() 326: exit
LOG_DEBUG : 00000000.000 : /home/takumi/mros2-posix/lwip-posix/src/core/udp.c udp_bind() 141: ipaddr=0x0 port=7400 enter
LOG_DEBUG : 00000000.000 : /home/takumi/mros2-posix/lwip-posix/src/core/udp.c udp_bind() 154: mcp exist 0x7fd74c000dd0
LOG_DEBUG : 00000000.000 : /home/takumi/mros2-posix/lwip-posix/src/core/udp.c udp_bind() 224: exit
LOG_DEBUG : 00000000.000 : /home/takumi/mros2-posix/lwip-posix/src/core/udp.c udp_recv() 239: enter
LOG_NOTICE : 00000000.000 : thread_udp_recv:UP: mcp=0x7fd74c000db0
LOG_DEBUG : 00000000.001 : /home/takumi/mros2-posix/lwip-posix/src/core/udp.c udp_recv() 250: exit
LOG_DEBUG : 00000000.001 : /home/takumi/mros2-posix/lwip-posix/src/core/udp_multicast_manager.c udp_mc_joingroup() 78: enter ifaddr=0xc4d317ac groupaddr=0x100ffef
LOG_NOTICE : 00000000.001 : udp_mc_joingroup(): mcp=0x7fd74c000db0 ifaddr=0xc4d317ac groupaddr=0x100ffef
LOG_NOTICE : 00000000.001 : udp_mc_joingroup(): mcp=0x7fd74c000dd0 ifaddr=0xc4d317ac groupaddr=0x100ffef
LOG_DEBUG : 00000000.001 : /home/takumi/mros2-posix/lwip-posix/src/core/udp_multicast_manager.c udp_mc_joingroup() 93: exit
LOG_NOTICE : 00000000.001 : thread_udp_recv:UP: mcp=0x7fd74c000dd0
LOG_DEBUG : 00000000.100 : /home/takumi/mros2-posix/lwip-posix/src/core/udp.c udp_new() 306: enter
LOG_DEBUG : 00000000.100 : /home/takumi/mros2-posix/lwip-posix/src/core/udp_multicast_manager.c udp_mc_info_alloc() 24: enter
LOG_DEBUG : 00000000.100 : /home/takumi/mros2-posix/lwip-posix/src/core/udp_multicast_manager.c udp_mc_info_alloc() 42: mcp=0x7fd74c000df0 exit
LOG_DEBUG : 00000000.100 : /home/takumi/mros2-posix/lwip-posix/src/core/udp.c udp_new() 326: exit
LOG_DEBUG : 00000000.100 : /home/takumi/mros2-posix/lwip-posix/src/core/udp.c udp_bind() 141: ipaddr=0x0 port=7411 enter
LOG_DEBUG : 00000000.100 : /home/takumi/mros2-posix/lwip-posix/src/core/udp.c udp_bind() 154: mcp exist 0x7fd74c000df0
LOG_DEBUG : 00000000.100 : /home/takumi/mros2-posix/lwip-posix/src/core/udp.c udp_bind() 224: exit
LOG_DEBUG : 00000000.100 : /home/takumi/mros2-posix/lwip-posix/src/core/udp.c udp_recv() 239: enter
LOG_DEBUG : 00000000.100 : /home/takumi/mros2-posix/lwip-posix/src/core/udp.c udp_recv() 250: exit
LOG_DEBUG : 00000000.100 : /home/takumi/mros2-posix/lwip-posix/src/core/udp.c udp_new() 306: enter
LOG_DEBUG : 00000000.100 : /home/takumi/mros2-posix/lwip-posix/src/core/udp_multicast_manager.c udp_mc_info_alloc() 24: enter
LOG_DEBUG : 00000000.100 : /home/takumi/mros2-posix/lwip-posix/src/core/udp_multicast_manager.c udp_mc_info_alloc() 42: mcp=0x7fd74c000e10 exit
LOG_DEBUG : 00000000.100 : /home/takumi/mros2-posix/lwip-posix/src/core/udp.c udp_new() 326: exit
LOG_DEBUG : 00000000.100 : /home/takumi/mros2-posix/lwip-posix/src/core/udp.c udp_bind() 141: ipaddr=0x0 port=7410 enter
LOG_DEBUG : 00000000.100 : /home/takumi/mros2-posix/lwip-posix/src/core/udp.c udp_bind() 154: mcp exist 0x7fd74c000e10
LOG_DEBUG : 00000000.100 : /home/takumi/mros2-posix/lwip-posix/src/core/udp.c udp_bind() 224: exit
LOG_DEBUG : 00000000.100 : /home/takumi/mros2-posix/lwip-posix/src/core/udp.c udp_recv() 239: enter
LOG_DEBUG : 00000000.100 : /home/takumi/mros2-posix/lwip-posix/src/core/udp.c udp_recv() 250: exit
LOG_NOTICE : 00000000.100 : thread_udp_recv:UP: mcp=0x7fd74c000df0
LOG_NOTICE : 00000000.100 : thread_udp_recv:UP: mcp=0x7fd74c000e10
LOG_DEBUG : 00000000.101 : [MROS2LIB] successfully created participant
LOG_DEBUG : 00000000.101 : [MROS2LIB] create_publisher complete.
LOG_DEBUG : 00000000.102 : [MROS2LIB] Initilizing Domain complete
LOG_DEBUG : 00000001.101 : [MROS2LIB] create_subscription complete.
LOG_NOTICE : 00000001.101 : ready to pub/sub message

publishing msg: 'TestMessage0'
publishing msg: 'TestMessage1'
publishing msg: 'TestMessage2'
(中略)
publishing msg: 'TestMessage14'
publishing msg: 'TestMessage15'

@MrBearing
Copy link
Collaborator Author

@takasehideki

取り急ぎ、Native ROSとmROSのテストを追加しましたが、テストが通りません。
手元では動作確認しているのですが、起動タイミング等によっては失敗するので、原因が把握できておりません。

以下のログ参照いただき、ご意見いただきたいです。
https://github.com/mROS-base/mros2-posix/actions/runs/10869981965/job/30161980310?pr=10#step:11:70

@s-hosoai
Copy link
Contributor

LOGでudp_bind() bind()でErrorが出てるように見えます。
err=98は”Address already in use”とのことですが、同じコンテナ内で取り合ってたり、解放し忘れてたりとかないですかね?

@MrBearing
Copy link
Collaborator Author

MrBearing commented Sep 24, 2024

@s-hosoai ( @takasehideki )
ありがとうございます。

どうやら、NativeROS起動ー>mros起動の順序で実行すると、件のupd_bind() bind() err=98 のエラーが発生する様です。
mros起動 -> NativeROS起動の順序で実行するとPub/Subできています。

https://github.com/mROS-base/mros2-posix/actions/runs/11006608360/job/30561156281

本来なら、こういうのもテストで検出できるようにすべきだとは思うのですが、
(READMEは mROS起動->NativeROS起動の順序になってますね)

一旦mros起動 -> NativeROS起動の順序で動作するようにCI構成していきます。

@MrBearing MrBearing force-pushed the feat/add_ci_config branch 5 times, most recently from c34a8b1 to a904a79 Compare September 24, 2024 08:02
@MrBearing
Copy link
Collaborator Author

@takasehideki
このファイルで、docker-composeでテスト環境をセットアップするアイディアを一応は試してみたのですが、上手くいきませんでした。
tcpレベルでの疎通も一応は確認できている様ですが、デバッグに時間が掛かりそうです。

一旦テストとしては以前上げた8セットを網羅できていますので、先日お話した通り、テストの通らない箇所についてはissueとして上げてさせて頂き、このPRはクローズさせていただきます。

@MrBearing MrBearing force-pushed the feat/add_ci_config branch 2 times, most recently from 2be52f6 to 09b7038 Compare September 27, 2024 17:06
@takasehideki
Copy link
Member

まずはたいへんおつかれさまでした.
クローズ is ready to review と思っています.ちょっとちゃんと見ます.
関係するIssueはタイトルだけ英語でお願いしたいです.本文は日本語で構いません.
コード中のコメントも英語推奨ですが,これは対応なしでも差し支えありません.

Copy link
Member

@takasehideki takasehideki left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

いったんコードレベルで気になるところにコメントを入れました

@takasehideki
Copy link
Member

@MrBearing ディレクトリ構造に違和感があります.今更感がありますし,これはすぐに難しければ対応ナシでも構いません.

  • workspace/test_*workspace/test/mros2/* に移動させたい
    • ただし build.bash がネックになると認識していて,たぶんこれがいちばんネックになると思っています.
    • これは変えたくないし hard copy で二重管理にしたくない.
  • docker-compose.ymlupdate_ip.shworkspace/test/mros2/* に置きたい
    • トップにあると,通常利用でもなんらか意味のあるものに見えてしまう.
  • なんらか README.md を書いて欲しい
    • 1点目がすぐに解消可能であれば workspace/test/README.md./mros2/ の意図を追記する
    • 解消が難しければ,トップの README.md で構わないので,どのファイルがテスト用であるか,どのようなテストが走っているかをセクション設けて書いて欲しい.メモレベルで構いません.

@MrBearing
Copy link
Collaborator Author

MrBearing commented Sep 29, 2024

@takasehideki

docker-compose.yml と update_ip.sh は workspace/test/mros2/* に置きたい
トップにあると,通常利用でもなんらか意味のあるものに見えてしまう.

docker-compose.yml の方は同意します。
updata_ipに関してはユーザーがユーティリティ的に使えるので、直下に置いても良いのかなと思うのですがいかがでしょうか。

@MrBearing
Copy link
Collaborator Author

MrBearing commented Sep 29, 2024

@takasehideki

workspace/test_* を workspace/test/mros2/* に移動させたい
ただし build.bash がネックになると認識していて,たぶんこれがいちばんネックになると思っています.
これは変えたくないし hard copy で二重管理にしたくない.

手元で試しにディレクトリ移動させて、以下の様にビルドができたので、後ほど反映します。

bash build.bash all test/mros2/test_echoback_string

(追記 このやり方でCIも通りました)

@takasehideki
Copy link
Member

updata_ipに関してはユーザーがユーティリティ的に使えるので、直下に置いても良いのかなと思うのですがいかがでしょうか。

なるほどそれはそうかもしれませんね.将来的には build.bash に組み込んでもいいかも(util/ を作るほどでもないか).
代わりに README.md に意図や使い方を記載してもらえるでしょうか.中身のソースを見ないとなにをするものなのか分からないは避けたいです.

@MrBearing MrBearing force-pushed the feat/add_ci_config branch 4 times, most recently from a1fc7a5 to 8eca2c7 Compare September 29, 2024 14:11
Copy link
Member

@takasehideki takasehideki left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

好みレベルですが suggestion しました

@MrBearing MrBearing force-pushed the feat/add_ci_config branch 2 times, most recently from 54f04e2 to e2eec14 Compare September 30, 2024 05:36
@MrBearing
Copy link
Collaborator Author

MrBearing commented Sep 30, 2024

@takasehideki
一応、現在頂いていたコメントに関してはすべて反映し終えたと認識しています。
追加で修正点なければPRのマージお願いいたします。

@MrBearing
Copy link
Collaborator Author

MrBearing commented Sep 30, 2024

あとREADMEに追加するか迷ったので、ここにstatus_badgeを貼っておきます。

Humble_build_and_test

@takasehideki
Copy link
Member

@MrBearing 改めましてありがとうございました!
とりあえず approved ではあります.でも最初から Failing なのは格好が付かないので,ちょっとこちらでもやってみて探ってみます.ということで merge はまだお待ちいただきたく,ご理解ください.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants