背景
ROSとはロボットの制御に利用可能なミドルウェアです。それのtopicという概念の通信では型を利用した配信ができ、その型の1つにFloat32MultiArray型があります。
このFloat32MultiArray型はdataの他にlayoutという情報を持っていて、他のStringやInt16などのように「--」に値を渡すのでは配信できませんでした。
書き方を忘れた時に再度調べ直して試行錯誤する気がするので、備忘録を兼ねて把握した書き方を記事に残します。
動作環境
Ubuntu 20.04ROS Noetic
書き方
紹介する例ではtest_topicというトピックに長さ2の配列を配信します。layoutに空の情報を入れて配信
rostopic pub -1 /test_topic std_msgs/Float32MultiArray "layout:
dim: []
data_offset: 0
data: [40.0, 50.0]"
上記の情報を中括弧「{}」で括りカンマ「,」区切りで繋げれば1行で書けます。
rostopic pub -1 /test_topic std_msgs/Float32MultiArray "{layout: {dim: [], data_offset: 0}, data: [40.0, 50.0]}"
layoutは定義せずdataキーだけで配信
Float32MultiArrayの入力情報が間違っていると、下記のようなエラーが表示されます。ERROR: Not enough arguments:
* Given: [[40.0, 50.0]]
* Expected: ['layout', 'data']
Args are: [layout.dim layout.data_offset data]
しかしながら、dataキーのみの記述でもtopicを配信できました。
rostopic pub -1 /test_topic std_msgs/Float32MultiArray "data: [40.0, 50.0]"
0 件のコメント :
コメントを投稿