topic_tools/transform

transform是一個ROS節點,它訂閱一個topic或topic field,並在應用給定的Python表達式後將傳入的數據發佈到另一個topic。它主要用於簡單的消息轉換,例如計算向量或四元數的範數,甚至將四元數轉換爲歐拉角。它可以處理任何消息類型。
transform是topic_tools的一部分。

transform <input> <output_topic> <output_type> [<expression>] [--import <module> [<module> ...]]

使用Python轉換topic(或topic field)中的消息,並將它們發佈到<output_topic>topic(屬於<output_type>類型)。

  1. input:要訂閱的傳入topic(或topic field)。
  2. output_topic:要發佈的輸出topic。
  3. expression:轉換輸入消息的Python表達式,在變量m中給出。默認表達式是m,它將輸入(可以是topic field)轉發到output_topic。
  4. import :要在表達式中導入和使用的Python模塊的列表。默認導入numpy模塊。

例子:計算IMU給出的方向四元數的範數:

rosrun topic_tools transform /imu/orientation /norm std_msgs/Float64 'numpy.linalg.norm([m.x, m.y, m.z, m.w])'

例子:將方向四元數轉換爲Euler角度:

rosrun topic_tools transform /imu/orientation /euler geometry_msgs/Vector3 'tf.transformations.euler_from_quaternion([m.x, m.y, m.z, m.w])' --import tf

例子:更改標量消息的符號(注意,由於-sign,我們需要用–)來轉義參數:

rosrun topic_tools transform /signal_level /positive_signal_level std_msgs/Float64 -- '-m.data'

例子:更改PoseStamp消息的frame_id:

rosrun topic_tools transform /in_topic /out_topic geometry_msgs/PoseStamped 'geometry_msgs.msg.PoseStamped(header=std_msgs.msg.Header(seq=m.header.seq,stamp=m.header.stamp,frame_id="my_new_frame"),pose=m.pose)' --import geometry_msgs std_msgs
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章