ROS Toolbox では、トピックやサービスリクエストを受信した際に実行されるイベント駆動型のコールバックを実装することは可能でしょうか?
4 ビュー (過去 30 日間)
古いコメントを表示
MathWorks Support Team
2025 年 6 月 19 日
編集済み: MathWorks Support Team
2025 年 9 月 2 日
ROS Toolbox ドキュメントに従って、C++ コードを生成しました。生成したコードが、タイマー駆動の step() メソッド内において、isNew フラグが true の場合にのみトピックやサービスリクエストを受信するためのコールバック相当を処理するコードになっていました。
このように、トピックやサービス要求の受信に対するコールバック相当の処理が、タイマー駆動の step() メソッド内に実装されるのは、ROS Toolbox の仕様なのでしょうか?
それとも、同一ノード内で、タイマー駆動の step() メソッドとは別に、イベント駆動型のコールバックとしてトピックやサービス要求の受信処理を分離して実装(コード生成)することは可能でしょうか?
採用された回答
MathWorks Support Team
2025 年 9 月 2 日
編集済み: MathWorks Support Team
2025 年 9 月 2 日
現時点の ROS Toolbox で提供されているSimulinkブロックの仕様では、タイマー駆動の step() メソッドと、トピックやサービス要求の受信に対するコールバック処理を、同一ノード内で分離して実装することはできません。
生成されるコードでは、トピックやサービスの受信処理はすべて step() メソッド内に含まれ、isNew フラグなどの条件に基づいて処理が実行される構成となっています。これは、ROS Toolbox のコード生成機構が、イベント駆動型のコールバック関数を step() メソッドの外部に生成することをサポートしていないためです。
そのため、イベント駆動型のコールバックを step() メソッドとは別に実装することは、現時点ではサポートされていません。
0 件のコメント
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!