ssl-roots / consai2r2 Goto Github PK
View Code? Open in Web Editor NEWhttps://github.com/SSL-Roots/consai_ros2 へ開発を移行しています。
License: MIT License
https://github.com/SSL-Roots/consai_ros2 へ開発を移行しています。
License: MIT License
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!!!
を移植したい Yo!
example扱いでどのpackageに実装すればいいか教えてほしい Yo!
https://github.com/ros/class_loader/blob/ros2/include/class_loader/visibility_control.hpp
公式のものが提供されているのでconsai2r2で保持するのではなくそちらを使うべき.
/opt/ros/dishing/include/class_loader/visibility_control.hpp
の存在は確認済み
consai2ではgrSimのvisionとconsai2_receiverの通信のため
consai2_description/param/game.yamlのvision_portを10006から10020に書き換える or grSimの10020を10006に書き換える必要がありました.
これがチュートリアルを兼ねているなら,通信を行うアプリケーションのipとportと通信方式を表した図を追加した方がよいと考えています.
そうでないなら,grSimに合わせてデフォルト設定を10020に変えておくのがいいと思うのですが,いかがでしょうか?
CIにlintを取り入れる予定です。
コード量が増える前に対策したい。
consai2_receiver(https://github.com/SSL-Roots/consai2/tree/master/consai2_receiver)
をconsai2r2_receiverとして移植する。
ROS 2 Eloquent Elusorがリリースされています。
#54 でEloquentの需要が生まれたので、consai2r2もEloquentに対応したいです。。
ひとまず、Projectsの1st stepはDashingで対応します。
2nd stepからEloquent化を検討します。
CON-SAIの開発をconsai_ros2に移行しました。
https://github.com/SSL-Roots/consai_ros2
本consai2r2リポジトリは開発を終了します。
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をconsai2r2_guiとして移植する。
各チームで共通で使えるパッケージと、チームごとに独自実装すべきパッケージを分離したいです。
例えば、consai2で言う試合プログラム(game)や、状態予測(world_observer)パッケージを、別リポジトリとして作成する感じです。
何か懸念点に気づいたらここに追記していきます。
grSimにボールセンサの情報を吐き出す機能があり、こちらもCON-SAI上でサポートしていただきたいです。
以下のような構成になると思いますがいかがでしょうか❓
uint8 robot_id
bool ball_sensor
receiverをctrl-cなどで止めてからすぐに立ち上げ直すとaddress already in useエラーが出ます。socketのコンストラクタで暗に呼ばれているsocket.connectは初期化子で呼ばず、set_option後に呼びたいです。
直せそうなコードは手元にあるのですが、あと数時間忙しいのでそのあとにPRを投げます。微小な変更になりそうなのでどなたか先にやっていただいても構わないです。
8vs8 時など、ロボットの台数が多いとpublish / subscribe時のCPUへの負担が非常に高いです。
arrayでもpublishするようにして、負担を減らすのが望ましいと考えていますが、いかがでしょうか。
grSimの30011/30012ポートから,ロボットがボールに触れている,
ロボットがボールをキックしているというような情報が伝わるようです.
実機の場合も,実機からフィードバックがあるとworldobserverカルマンフィルタに統合できうるなどのメリットもあるので,インターフェースがあると良さそうだと思っています.
referee_wrapper実装しようとして思い出しました。
ROS2のpythonパッケージではcmakeは使用ないため、現状の.protoファイルを直接インストールする方法だと、protoから生成されたpythonスクリプトをimportする術が無くなってしまいます。
1つの解決策として以下のような方法があり、protobufのファイルを一括管理できるため現状のファイル構成よりも便利だと考えています。
.proto
ファイルを全てconsai2r2_protobufパッケージにまとめる。ament_uncrustifyで失敗。
すぐに直す。
未移植の機能を追加する
max_idなどを取得したい
(consai2_description
について移植issueがないのは何か理由があったりするのですか?)
Deprecated as of Foxy and will potentially be removed in any following release.
つまり、Foxyの時点で廃止され、以降のリリースでは削除される可能性があります。
とのことです。
基本的にはそのまま動くのですが、launchの記述方法が色々変わったので修正が必要です。
EloquentからXML記法でのlaunchファイルに対応したので、ROS1との互換性を考えるとXMLに切り替えても良いかもしれません。
VisionReceiver及びRefereeReceiverのmulticast receive開始タイミングをROS2のlifecycleにおける"Activating"のタイミングにしなければいけません。
http://design.ros2.org/articles/node_lifecycle.html
launchでノードを起動する際の挙動として、全てのノードがcofigureされてからactivate (callback系が有効化)がされるらしく、UDP multicastのreceive処理が動作しない期間が発生します。
その結果、以下のような問題が発生します。
consai2r2/consai2r2_receiver/src/vision_receiver.cpp
Lines 90 to 99 in fa34044
consai2_examples
をconsai2r2_examplesとして移植する。
まずはconsai2r2_teleopとconsai2r2_senderを起動するlaunchファイルを作成する。
その他のサンプルは、別issueを立てて作業する。
内容
DescriptionやLicenseがデフォルトのままになってるので修正する。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.