ROS topicを読み取ってcsvに保存する
はじめに
Rosbagで取ったデータをぱぱっとExcelとかLibre Office Impressに入れてグラフ書きたいなと思って,ささっと書いたコードです.役に立ったら嬉しいです.
環境
Ubuntu 16.04
ROS kinetic
コード
topic2csv.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import rospy
from std_msgs.msg import Float32
import os
path = "my_message.csv"
count = 0
def callback(msg):
global count
global value
value = msg.data
rospy.loginfo("value: %f", value)
buf = str(count) + "," + str(value) + "\n"
with open(path, mode='a') as f:
f.write(buf)
count+=1
def listener():
rospy.init_node('getter', anonymous=False)
rospy.Subscriber("/my_message_topic", Float32, callback)
rospy.spin()
if __name__ == '__main__':
# csv fileが存在してなかったら作る
if not os.path.isfile(path):
f = open(path,'a')
f.close()
listener()
実行方法(2020/1/1追記)
topic2csv.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import rospy
from std_msgs.msg import Float32
import os
path = "my_message.csv"
count = 0
def callback(msg):
global count
global value
value = msg.data
rospy.loginfo("value: %f", value)
buf = str(count) + "," + str(value) + "\n"
with open(path, mode='a') as f:
f.write(buf)
count+=1
def listener():
rospy.init_node('getter', anonymous=False)
rospy.Subscriber("/my_message_topic", Float32, callback)
rospy.spin()
if __name__ == '__main__':
# csv fileが存在してなかったら作る
if not os.path.isfile(path):
f = open(path,'a')
f.close()
listener()
実行の時は,
$ python topic2csv.py
という感じで実行してください.rosrunで実行するとうまく結果のファイルが作成されません.
結果のcsvファイル
別のターミナルで
$ rostopic pub -r 10 /my_message_topic std_msgs/Float32 32.5
とやったのを記録した結果です.
0,32.5
1,32.5
2,32.5
3,32.5
4,32.5
5,32.5
6,32.5
7,32.5
8,32.5
9,32.5
10,32.5
11,32.5
12,32.5
13,32.5
14,32.5
15,32.5
16,32.5
17,32.5
18,32.5
19,32.5
20,32.5
21,32.5
22,32.5
23,32.5
24,32.5
25,32.5
26,32.5
27,32.5
28,32.5
29,32.5
30,32.5
31,32.5
32,32.5
33,32.5
34,32.5
こんな感じです.
Author And Source
この問題について(ROS topicを読み取ってcsvに保存する), 我々は、より多くの情報をここで見つけました https://qiita.com/shrimp-f/items/03d82166666f0f127aab著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .