rosbag info bag_file02 无法读取

1.报错显示ascii codec can't decode byte ox8f in position 0:ordinal not in range(128)

疑问:序数词超过128,说明这个bagfile02文件能转换成ASCII码吗?

   
可能的原因:bagfile02是Unicode编码,而rosbag info 只能解读ASCII编码的文件
可能的解决办法:
①将bagfile02文件转换成ASCII编码 

任务 :将一个用Unicode编码的二进制文件转换为用ASCII编码的文件

找到一个在线转换工具

 

https://www.bejson.com/transfor/unicode2ascii/

不知道该怎么用

失败 

 又找到一个在线转换工具,还是不知道怎么用,好像只能转换一小段的Unicode数据,bagfile02太大了,有3.42G

不过比上一个好点,会报错,没有合法的Unicode编码

 

 

https://uni2ascii.supfree.net/

失败

第三个在线文本转换工具,一样的问题,无法直接上传数据

 

http://www.jsons.cn/unicode/

失败 三连跪了

②将默认的opt/ros/kinetic/lib/python2.7变成python3.5

③尝试更改bag.py,按照下面的教程

https://blog.csdn.net/su_zhen_hua/article/details/120853655

现在变成 'utf8' codec  can't decode byte 0x8f in position 0:invalid start byte

查看博文

Python——报错 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 52: invalid continuation byte问题解决

https://www.cnblogs.com/huangchenggener/p/10983812.html 

rosbag遍历数据出错:(unicode error) 'utf-8' codec can't decode byte 0xcd in position 31: invalid continuation byte

https://www.shuzhiduo.com/A/gVdnalLp5W/

针对ros系统记录的bag文件,可以使用python的rosbag包,按照不同起止时间和topic进行提取。

然而,有的topic可以使用rosbag读取,但是不能遍历,存在解码错误。原因应该是存在中文字符的注释, 这个可以在函数生成的temp.py中看到。

python提取bag文件时发生解码错误



UTF-8有BOM和无BOM的区别

https://blog.csdn.net/change_any_time/article/details/79572370 

这里我选择utf-8无BOM输出

原默认bagfile02

utf-8编码的bagfile0202

 

确实不一样了 



方法一:用百度网盘传文件,开了会员,传的还是很慢,5.5MB/S,传输速度到是挺稳定的

方法二:如果把bagfile02 3.42G转换成压缩包也需要6分钟

方法三:用U盘,直接无法传过了,报错文件过大,是我的U盘的问题嘛?

两台电脑之间怎么传文件最快-操作简单 

UC网盘 - 文件传输助手



失败 四连败

问题:什么样的二进制文件是bag文件,能被rosbag info 读取呢?



python 导入数据错误:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb5 in position 0: invalid start_python read_csv unicodedecodeerror: 'utf-8' codec _计算法的博客-CSDN博客



ros kinetic中的python版本

ROS不同版本采用的Python版本以及C++和Python的使用区别_ros python版本_ROS机器人学习与交流的博客-CSDN博客

ROS不同版本采用的Python版本以及C++和Python的使用区别

ros-kinetic树莓派从Python2更新到Python3报错及解决方案,成功运行_树莓派更新pip3_Dr_Zobot的博客-CSDN博客

ROS kinetic (Ubuntu 16.04)如何基于 python3 成功运行roscore

ROS kinetic (Ubuntu 16.04)如何基于 python3 成功运行roscore - 知乎

 



 

 

现在我默认的是python 2.7

 

当我把它转换成python3.5

 

出现了

 

然后 我把reload那两句删了

 

它变成了这样,报错没有rospkg

 当我首先安装了python3-pipi 显示已经有了

接下来,当我企图用pip3 安装rospkg,它报错不合法的语法

问题:所以是什么的版本不对?

 

 当我企图用pip来安装时,也出现了报错,现在的情况就是两边都不是人了

ubuntu16.04安装pip2和pip3以及解决SyntaxError: invalid syntax报错

ubuntu16.04安装pip2和pip3以及解决SyntaxError: invalid syntax报错_ubuntu安装pip2_安谦柔的博客-CSDN博客 



发现我的系统默认的是python3.7下的pip,并不是我刚才用update-alternatives设置的python3.5 

 

 好,我现在添加了python3.7

再次尝试,pip3不可以 pip可以安装,没有报错不合法的语法

 

 根据终端的命令,企图把pip从22.2.2更新到23.0.1,报错,那就暂时不管了



现在再一次尝试,依然报错,utf-8无法解码,不合法的起始字节,不过多了一行错误

failed to load python extension for LZ4 support

 

 找到一个教程

ros - Failed to load Python extension for LZ4 support. LZ4 compression will not be available - Stack Overflow

 

运行代码

 报错,到现在,好像是我的pip都出现问题了,重新安装pip

又回到最初的起点了

我现在觉得是整个系统的原因,我需要更高版本的ros

网上找到的教程都是对应于python3的

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
读取rosbag并保存到新的rosbag文件,你可以使用ROS提供的Python API来实现。首先,你需要导入rosbag库并加载要读取rosbag文件。你可以按照以下方式进行操作: ```python import rosbag input_bag_file = '/your/path/xxx.bag' output_bag_file = '/your/path/new_xxx.bag' input_bag = rosbag.Bag(input_bag_file, "r") output_bag = rosbag.Bag(output_bag_file, "w") for topic, msg, t in input_bag.read_messages(): # 在这里对消息进行处理或者筛选 # 然后将消息写入新的rosbag文件 output_bag.write(topic, msg, t) input_bag.close() output_bag.close() ``` 在上述代码中,我们首先导入rosbag库并指定输入和输出的rosbag文件路径。然后,我们使用`rosbag.Bag`函数分别打开输入和输出的rosbag文件。接下来,我们使用`read_messages`函数遍历输入的rosbag文件中的所有消息。你可以在循环中对消息进行处理或筛选,然后使用`write`函数将消息写入新的rosbag文件。最后,记得关闭输入和输出的rosbag文件。 请注意,上述代码只是一个示例,你可以根据自己的需求进行修改和扩展。同时,确保你已经安装了ROS和rosbag库,并且将路径替换为你自己的文件路径。 #### 引用[.reference_title] - *1* [【python/ros】python小程序实现rosbag数据包解析保存](https://blog.csdn.net/baidu_35692628/article/details/125126722)[target="_blank"] [.reference_item] - *2* [【python/ros】python小程序实现rosbag数据包解析保存](https://blog.csdn.net/baidu_35692628/article/details/125126722)[target="_blank"] [.reference_item] - *3* [【python/ros】python小程序实现rosbag数据包解析保存](https://blog.csdn.net/baidu_35692628/article/details/125126722)[target="_blank"] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值