rosbag中提取topics并转换成.csv或.txt

    技术2022-07-27  78

    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')

    Processed: 0.009, SQL: 9