1.bag提取topics并重定向
ahren@ahren:~/script$ rostopic list
ahren@ahren:~/script$ rostopic echo -b ~/bag/_2020-07-01-17-57-14_83.bag -p /odom > odom.txt
2.踩坑ros中Python编码报错
ahren@ahren:~/script$ rostopic echo -b ~/bag/_2020-07-01-17-57-14_83.bag -p /robot_state > state.csv
Traceback (most recent call last):
File "/opt/ros/kinetic/bin/rostopic", line 35, in <module>
rostopic.rostopicmain()
File "/opt/ros/kinetic/lib/python2.7/dist-packages/rostopic/__init__.py", line 2093, in rostopicmain
_rostopic_cmd_echo(argv)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/rostopic/__init__.py", line 1392, in _rostopic_cmd_echo
_rostopic_echo(topic, callback_echo, bag_file=options.bag)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/rostopic/__init__.py", line 1013, in _rostopic_echo
_rostopic_echo_bag(callback_echo, bag_file)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/rostopic/__init__.py", line 991, in _rostopic_echo_bag
for t, msg, timestamp in b.read_messages():
File "/opt/ros/kinetic/lib/python2.7/dist-packages/rosbag/bag.py", line 2337, in read_messages
yield self.seek_and_read_message_data_record((entry.chunk_pos, entry.offset), raw)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/rosbag/bag.py", line 2475, in seek_and_read_message_data_record
msg_type = _get_message_type(connection_info)
File "/opt/ros/kinetic/lib/python2.7/dist-packages/rosbag/bag.py", line 1571, in _get_message_type
message_type = genpy.dynamic.generate_dynamic(info.datatype, info.msg_def)[info.datatype]
File "/opt/ros/kinetic/lib/python2.7/dist-packages/genpy/dynamic.py", line 168, in generate_dynamic
tmp_file.file.write(full_text.encode())
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 475: ordinal not in range(128)
3.解决方法:执行转换时报错,在ros中Python文件加入(我这里是:File "/opt/ros/kinetic/lib/python2.7/dist-packages/genpy/dynamic.py")
import sys
reload(sys)
sys.setdefaultencoding('utf8')