Isaac Sim sensor插件报UnicodeDecodeError错误

部署运行你感兴趣的模型镜像

在使用isaac sim或isaac lab时,如果涉及传感器插件,omni.isaac.sensor,可能会遇到如下编码错误,导致传感器无法正常使用。这个错误在isaac sim历代版本里一直都存在。

2024-10-22 08:42:59 [4,085ms] [Error] [carb.scripting-python.plugin] UnicodeDecodeError: 'gbk' codec can't decode byte 0xa0 in position 1096: illegal multibyte sequence

At:
  D:\anaconda3\envs\my_lab\lib\json\__init__.py(293): load
  d:/omniverse/pkg/isaac_lab/my_lab/_isaac_sim/exts/omni.isaac.sensor/omni/isaac/sensor/scripts/menu.py(232): __init__
  d:/omniverse/pkg/isaac_lab/my_lab/_isaac_sim/exts/omni.isaac.sensor/omni/isaac/sensor/scripts/extension.py(37): on_startup
  D:\OMNIVERSE\pkg\isaac_lab\my_lab\_isaac_sim/kit/kernel/py\omni\ext\_impl\_internal.py(164): _startup_ext
  D:\OMNIVERSE\pkg\isaac_lab\my_lab\_isaac_sim/kit/kernel/py\omni\ext\_impl\_internal.py(224): startup
  D:\OMNIVERSE\pkg\isaac_lab\my_lab\_isaac_sim/kit/kernel/py\omni\ext\_impl\_internal.py(328): startup_extension
  PythonExtension.cpp::startup()(2): <module>
  D:\OMNIVERSE\pkg\isaac_lab\my_lab\_isaac_sim/exts/omni.isaac.kit\omni\isaac\kit\simulation_app.py(411): _start_app
  D:\OMNIVERSE\pkg\isaac_lab\my_lab\_isaac_sim/exts/omni.isaac.kit\omni\isaac\kit\simulation_app.py(200): __init__
  D:\OMNIVERSE\pkg\isaac_lab\my_lab\source\extensions\omni.isaac.lab\omni\isaac\lab\app\app_launcher.py(588): _create_app
  D:\OMNIVERSE\pkg\isaac_lab\my_lab\source\extensions\omni.isaac.lab\omni\isaac\lab\app\app_launcher.py(113): __init__
  D:\OMNIVERSE\pkg\isaac_lab\my_lab\source\standalone\workflows\rsl_rl\play.py(36): <module>

2024-10-22 08:42:59 [4,086ms] [Error] [omni.ext.plugin] [ext: omni.isaac.sensor-12.9.1] Failed to startup python extension.

这个错误信息表明在使用 Python 读取文件时遇到了编码问题。错误 UnicodeDecodeError: 'gbk' codec can't decode byte 0xa0 in position 1096: illegal multibyte sequence 指出使用 GBK 编码在尝试解码文件的某个字节序列时失败了。这通常发生在尝试用错误的编码方式读取文件时。

在 Python 中,当你打开文件读取时,如果没有指定编码方式,它可能会默认使用系统的编码方式(在某些 Windows 系统上可能是 GBK)。如果文件实际上是以其他编码(如 UTF-8)保存的,就会遇到解码错误。

修复建议是:

打开isaac sim目录,找到该python文件,路径在:

exts\omni.isaac.sensor\omni\isaac\sensor\scripts\menu.py

 定位到 json.load 代码,不同版本的 omni.isaac.sensor 这一块写法有所差距

如isaac sim 4.2.0 版本里为:

data = json.load(open(os.path.join(d, file)))

将该行代码改为如下写法即可:

with open(os.path.join(d, file), encoding='utf-8') as f:
    data = json.load(f)

 原理是,使用 Python 的 open 函数时,可以通过 encoding 参数指定编码方式。

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值