Giter Site home page Giter Site logo

ssl-roots / consai2r2 Goto Github PK

View Code? Open in Web Editor NEW
8.0 11.0 7.0 131 KB

https://github.com/SSL-Roots/consai_ros2 へ開発を移行しています。

License: MIT License

CMake 16.32% C++ 59.44% C 2.58% Python 21.66%
robocup-ssl ros2 ros-dashing robocup

consai2r2's People

Contributors

hansrobo avatar miraihattori avatar nabekuro0104 avatar shotaak avatar spiralray avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

consai2r2's Issues

Package Layoutのルールに従ってヘッダーファイルをinstallする

https://index.ros.org/doc/ros2/Contributing/Developer-Guide/#package-layout によると

src: contains all C and C++ code
    Also contains C/C++ headers which are not installed

include: contains all C and C++ headers which are installed
    <package name>: for all C and C++ installed headers they should be folder namespaced by the 
                                  package name

とある。

includeディレクトリにあるヘッダーファイルをinstallしてないものがいくつかあるので修正する。

参考:https://github.com/ros2/rosbag2/blob/master/rosbag2/CMakeLists.txt

やり方:

install(
  DIRECTORY include/
  DESTINATION include)

結果(例):
$ ls ~ros2_ws/install/hoge/include/hoge
huga.hpp

ラッパーの実装

Yo Yo Yo!!!

  • Vision wrapper
  • Referee wrapper

を移植したい Yo!

example扱いでどのpackageに実装すればいいか教えてほしい Yo!

追加設定なしでgrSimと通信できるようにする

consai2ではgrSimのvisionとconsai2_receiverの通信のため
consai2_description/param/game.yamlのvision_portを10006から10020に書き換える or grSimの10020を10006に書き換える必要がありました.
これがチュートリアルを兼ねているなら,通信を行うアプリケーションのipとportと通信方式を表した図を追加した方がよいと考えています.
そうでないなら,grSimに合わせてデフォルト設定を10020に変えておくのがいいと思うのですが,いかがでしょうか?

【急募】Boostを使わずにマルチプラットフォームでgrSimやVisionとUDP通信する方法

ROS 2 Developer Guide
より、C++でBoostは極力使うなと書かれている。

しかし、C++の通信関係は標準ライブラリにないことが多いので、困る。
実際にconsai2r2_senderのsim_sender
では、(sys/socket.h)を使用しており、Linuxでは動くが、Win, macOSでは動作しない。

下記のように、ROS2はBoostではなく標準ライブラリを使おうとしている。

https://github.com/ros2/ros2_documentation/blob/master/source/Contributing/Migration-Guide.rst#boost

ということで、Win, OS Xでも動作するように、マルチプラットフォーム対応のUDP通信ライブラリを探したい。

(もしかしたら、ROS2 のコアにあるかもしれない?)

consai2_guiの移植

consai2_guiをconsai2r2_guiとして移植する。

  • rqtを使う
  • C++、Pythonは問わない
    • ROS2界隈で推奨されてる方を使う
  • receiverとsenderの情報を描画できるとこまでつくる

提案:共通パッケージとそれ以外の分離

各チームで共通で使えるパッケージと、チームごとに独自実装すべきパッケージを分離したいです。

例えば、consai2で言う試合プログラム(game)や、状態予測(world_observer)パッケージを、別リポジトリとして作成する感じです。

何か懸念点に気づいたらここに追記していきます。

grSimのRobot Statusを受信したい

grSimにボールセンサの情報を吐き出す機能があり、こちらもCON-SAI上でサポートしていただきたいです。

以下のような構成になると思いますがいかがでしょうか❓

  1. 以下のようなロボットの状態を表すメッセージRobotStatus.msgを作成
uint8 robot_id
bool ball_sensor
  1. consai2r2_receiverにsim_status_receiverノードを追加

consai2r2_receiverのreuse_addressが適用されていない

receiverをctrl-cなどで止めてからすぐに立ち上げ直すとaddress already in useエラーが出ます。socketのコンストラクタで暗に呼ばれているsocket.connectは初期化子で呼ばず、set_option後に呼びたいです。

https://github.com/SSL-Roots/consai2r2/blob/master/consai2r2_receiver/include/consai2r2_receiver/multicast.hpp#L37

直せそうなコードは手元にあるのですが、あと数時間忙しいのでそのあとにPRを投げます。微小な変更になりそうなのでどなたか先にやっていただいても構わないです。

Arrayでのpublish

8vs8 時など、ロボットの台数が多いとpublish / subscribe時のCPUへの負担が非常に高いです。
arrayでもpublishするようにして、負担を減らすのが望ましいと考えていますが、いかがでしょうか。

receiverでロボットからの情報を受け取る

https://github.com/RoboCup-SSL/grSim/blob/5e4dc8828be05fe76dbcdb118e385a9eb254219f/src/sslworld.cpp#L542

grSimの30011/30012ポートから,ロボットがボールに触れている,
ロボットがボールをキックしているというような情報が伝わるようです.
実機の場合も,実機からフィードバックがあるとworldobserverカルマンフィルタに統合できうるなどのメリットもあるので,インターフェースがあると良さそうだと思っています.

Cannot import hoge_pb2.py from Python Packages

referee_wrapper実装しようとして思い出しました。

ROS2のpythonパッケージではcmakeは使用ないため、現状の.protoファイルを直接インストールする方法だと、protoから生成されたpythonスクリプトをimportする術が無くなってしまいます。

1つの解決策として以下のような方法があり、protobufのファイルを一括管理できるため現状のファイル構成よりも便利だと考えています。

  • .protoファイルを全てconsai2r2_protobufパッケージにまとめる。
  • 各パッケージはそこconsai2r2_protobufパッケージからinclude或いはimportする

consai2_teleopの移植

未移植の機能を追加する

操作

  • キック
  • ドリブル
  • キック、ドリブルパワー変更
  • ID変更
  • チームカラー変更
  • 終了

その他

  • configファイルによるキー変更

consai2_descriptionの移植

max_idなどを取得したい
consai2_descriptionについて移植issueがないのは何か理由があったりするのですか?)

ROS2 Foxy対応

基本的にはそのまま動くのですが、launchの記述方法が色々変わったので修正が必要です。

EloquentからXML記法でのlaunchファイルに対応したので、ROS1との互換性を考えるとXMLに切り替えても良いかもしれません。

Multicast Receiverのlifecycle対応

VisionReceiver及びRefereeReceiverのmulticast receive開始タイミングをROS2のlifecycleにおける"Activating"のタイミングにしなければいけません。

http://design.ros2.org/articles/node_lifecycle.html

launchでノードを起動する際の挙動として、全てのノードがcofigureされてからactivate (callback系が有効化)がされるらしく、UDP multicastのreceive処理が動作しない期間が発生します。

その結果、以下のような問題が発生します。

  • grSimからUDP送信エラーがレポートされる
  • UDP周りの受信エラーにより各ノードのcofigureの動作が遅くなり(Why?)、consai2r2_descriptionからのparameter取得動作がtimeoutする

consai2_examplesの移植

consai2_examples
をconsai2r2_examplesとして移植する。

まずはconsai2r2_teleopとconsai2r2_senderを起動するlaunchファイルを作成する。

その他のサンプルは、別issueを立てて作業する。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.