一般我们会直接复制models里面的内容,同步会把其他人的 .engine文件及 .onnx文件同步复制,但.engine文件不可能完全适配,在跑
ros2 run trfficlight trfficlight
报错:
[07/17/2024-15:04:17] [E] [TRT] 1: [stdArchiveReader.cpp::StdArchiveReader::40] Error Code 1: Serialization (Serialization assertion stdVersionRead == serializationVersion failed.Version tag does not match. Note: Current Version: 213, Serialized Engine Version: 232)
[07/17/2024-15:04:17] [E] [TRT] 4: [runtime.cpp::deserializeCudaEngine::50] Error Code 4: Internal Error (Engine deserialization failed.)
解决:根据错误来看,怀疑自己tensorRT版本对应不上,但事实解决是:删除原有models中的.engine文件(不是原有的,是其他电脑适配的,但环境不可能跟你的一模一样),保留原有文件.onnx文件,根据.onnx文件重新生成属于自己系统路径的.engine文件:
trtexec --onnx=<file> --saveEngine= <file>
# file 路径最好是在models模块文件下进行生成,就不用再输入绝对路径了
eg:trtexec --onnx=batch1_sim.onnx --saveEngine==batch1_sim.engine
以上,解决问题