メッセージ内の値を指定した抽出について

543 views
Skip to first unread message

Kenta Yonekura

unread,
Apr 11, 2017, 5:55:01 AM4/11/17
to ros-jap...@googlegroups.com
皆さま

お久しぶりです。まだなんとかロボットエンジニアできています。米倉です。
そういえば最近、秋葉原にマシニングセンタとかPCB加工機とか自前でそろえて、
DMM.makeみたいなのの自社版を作りました。ご興味のある方いらっしゃいましたら、
「弊社への就職/転職の検討をしている」とさえ言っていただければ、ご案内できるかと思います。

閑話休題。
タイトルにあるとおり、Twistの中のlinearの中のangularの中のzの値だけ、他のノードに
渡したいというニーズは非常に多くあると思うのですが、受け側のノードがFloat64しか
受け付けてない場合など、どのように処理するのが適切でしょうか?
こういう場合に、便利な方法やパッケージなどありそうなのですが、不勉強でしてどなたかに
教えていただければ幸いです。

よろしくお願い致します。

p.s.
今年もROS勉強会楽しみにしてます!

/**
*@author Kenta Yonekura
*@mail mill...@gmail.com
*@see http://blog.livedoor.jp/k_yon/
*/

Moirai

unread,
Apr 12, 2017, 10:37:20 AM4/12/17
to ROS JAPAN Users Group
こんな感じでどうでしょうか.
rosrun topic_tools transform /hoge /fuga 'std_msgs/Float6.angular.z'



ご参考になりましたら幸いです.

Ryosuke Tajima

unread,
Apr 12, 2017, 7:58:29 PM4/12/17
to ROS JAPAN Users Group
私も偶然、関連するところを考えてたので、この情報は助かりました。便利ですね。
ちょっと消えちゃってますが、より正確には

$ rosrun topic_tools transform /hoge /fuga std_msgs/Float64 'm.angular.z'

かな? <型> <python expression>で、python expressionの中でメッセージの変数として'm'が使えると。

2017年4月12日(水) 23:37 Moirai <yumemi...@gmail.com>:
--
このメールは Google グループのグループ「ROS JAPAN Users Group」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには ros-japan-use...@googlegroups.com にメールを送信してください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。

Kenta Yonekura

unread,
Apr 13, 2017, 4:56:20 AM4/13/17
to ros-jap...@googlegroups.com
Moiraiさん

>> こんな感じでどうでしょうか.
>> rosrun topic_tools transform /hoge /fuga 'std_msgs/Float6.angular.z'

おぉぉ!やはりできるんですね♪
ありがとうございます!!勉強になりました~

--
yoneken

Nakayama Yuichiro

unread,
Nov 5, 2017, 12:00:38 PM11/5/17
to ROS Japan Users Group
ROSを勉強中の学生です。

私もほぼ同じようにtwist_cmdの中のlinearの中のangularの中のzの値だけ、他のノードに渡したい
と考えていたためとても気になる投稿でした。

参考にして実行してみたのですが

$ rosrun topic_tools transform /twist_cmd /newtopic std_msgs/Float64 'm.angular.z'
としたところ

[ERROR] [WallTime: 1509900685.801058] [1509591889.735295] bad callback: <bound method TopicOp.callback of <__main__.TopicOp instance at 0x7ff64c15d488>>
Traceback (most recent call last):
  File "/opt/ros/indigo/lib/python2.7/dist-packages/rospy/topics.py", line 720, in _invoke_callback
    cb(msg)
  File "/opt/ros/indigo/lib/topic_tools/transform", line 94, in callback
    res = eval("{}".format(self.expression), self.modules, {'m': m})
  File "<string>", line 1, in <module>
AttributeError: 'TwistStamped' object has no attribute 'angular'
となりうまく実行できませんでした。

どなたか解決方法について教えていただければ幸いです。

よろしくお願いします。

Ryosuke Tajima

unread,
Nov 5, 2017, 9:18:06 PM11/5/17
to ros-jap...@googlegroups.com
TwistStampedだと m.angular.z ではなくて m.twist.angular.z ですね.

2017年11月6日(月) 2:00 Nakayama Yuichiro <bq1...@shibaura-it.ac.jp>:
--
このメールは Google グループのグループ「ROS Japan Users Group」に登録しているユーザーに送られています。

mf1...@shibaura-it.ac.jp

unread,
Nov 8, 2017, 12:28:32 AM11/8/17
to ROS Japan Users Group
longjie0723

ご返事有難うございます。

回答のとおりに実行したところ無事にメッセージtypeを変えて
送信することができ実際にモータを動かすことができました。

本当に助かりました。有難うございます。
Reply all
Reply to author
Forward
0 new messages