运行pose.ipynb触发ImportError:无法导入LoadModelDirectivesFromString
解决ImportError: cannot import name 'LoadModelDirectivesFromString'问题
问题分析
这个错误源于manipulation库版本与当前安装的Drake版本不兼容——Drake的API发生了变更,LoadModelDirectivesFromString函数已被移除或重命名,但manipulation库的代码仍在尝试导入该函数。
解决方案
1. 匹配版本分支
确保manipulation库的分支与Drake版本对应:
- 若使用Drake nightly版本,需切换到
manipulation的master分支 - 若使用Drake稳定发行版,需切换到
manipulation对应的release分支
2. 手动修复导入逻辑
如果重新安装对应版本后问题仍存在,可直接修改manipulation/scenarios.py文件:
- 打开
~/manipulation-master/manipulation/scenarios.py,找到第15行的导入语句,移除LoadModelDirectivesFromString - 在文件顶部添加
io模块导入:import io - 找到代码中调用
LoadModelDirectivesFromString的位置,替换为以下实现:LoadModelDirectives(io.StringIO(directives_str))
3. 验证修复效果
修改完成后,重新运行pose.ipynb的第一个单元格,确认错误是否消除。
内容的提问来源于stack exchange,提问作者Obito Uchiha
相关产品推荐
相关产品推荐

