如何在汽车中创建新的演示?

时间:2018-06-01 19:34:49

标签: drake

我试图从drake/automotive/automotive_demo.cc中分离出一些代码。作为第一步,我尝试将automotive_demo.ccautomotive_demo.py复制到不同名称的文件(test.cctest.py)中,然后运行bazel run automotive:test -- --num_simple_cars=1。我修改了automotive/BUILD.bazeltest.py以考虑新的依赖关系。

问题是在我bazel run之后,模拟器窗口打开但没有汽车被渲染。最终它只是崩溃了以下错误:

[lcm-spy] ClassDiscoverer: java.lang.NoClassDefFoundError: apple/laf/AquaPopupMenuUI
[lcm-spy]                  jar: ../com_jidesoft_jide_oss/jide-oss-2.9.7.jar
[lcm-spy]                  class: com/jidesoft/plaf/aqua/AquaJidePopupMenuUI.class
...
[drake_visualizer] Qt WebEngine seems to be initialized from a plugin. Please set Qt::AA_ShareOpenGLContexts using QCoreApplication::setAttribute before constructing QGuiApplication.
...
[lcm-spy] LCM: Disabling IPV6 support
[lcm-spy] LCM: TTL set to zero, traffic will not leave localhost.
[lcm-spy] java.net.SocketException: Can't assign requested address

这是一个(未解决的)Github issue,指出问题是test是一个"自定义插件"。但是,如果automotive_demo能够正常运作,那么肯定有一种方法可以为test重现这种行为吗?我还尝试了grep ping QGuiApplication并且只发现了一系列二进制文件,因此我不知道如何遵循错误消息的建议。

1 个答案:

答案 0 :(得分:0)

在Mac上尝试您的步骤时,我很遗憾无法重现您的具体错误。我不认为将bazel run automotive:demo -- --num_simple_car=1作为目标名称会导致问题(至少我没有遇到问题)。

请你确定:

  1. 您可以运行automotive_demo.*
  2. test.*重命名为BAZEL.build后,在test.pydemo个文件中,以下内容已正确映射:test - > automotive_demotest_cc - > Character.forDigit()(或您选择的任何唯一名称)?