问题标签 [drake]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
537 浏览

c++ - 当调用刚体树中的函数(如 doKinematics、CreateKinematicCache)时,如何修复 cpp 中的“未定义引用”错误

我是德雷克的初学者。我使用 urdf 解析器将我的机器人模型提取到 RigidBodyTree。然后我使用 doKinematics 函数创建运动学缓存。但是,构建器给了我下面的错误。
这是一种情况,在某些情况下,我无法使用文件rigid_body_tree.cc 中的其他功能,并且错误几乎相同。

  • 操作系统:Ubuntu 16.04
  • 语言:C++ -GCC 5.4.0 -Clang 6.0.0 -Python 2.7.12
  • 从源代码构建
    • 巴泽尔 0.28.1
    • Bazel C++ 编译器 +capture_cc_env=external/drake/tools/cc_toolchain/capture_cc.env +source external/drake/tools/cc_toolchain/capture_cc.env ++BAZEL_CC=/usr/bin/gcc ++BAZEL_CC_FLAGS= +/usr/bin/ gcc --version gcc (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609
    • Git 修订版:800d961
    • 使用 drake 文档首页“安装与快速入门”的方法搭建 drake
0 投票
1 回答
42 浏览

drake - 可视化多个机器人的运动

我正在尝试添加多个机器人实例并可视化它们的动作。我尝试了几种方法来做到这一点,但我遇到了错误/问题。它们如下:

创建系统后,我尝试添加另一个模型实例。

正如预期的那样,在可视化器中有两个机器人可见,系统中有 26 个输出端口。但我无法想象四旋翼所需的运动。它似乎遵循作为罗盘步态输出端口输入的 x、y、z 和滚动俯仰和偏航导数。这是预期的行为吗?当我添加 2 个指南针步态模型并尝试使它们遵循相同的路径时,我遇到了类似的事情。即使我给端口 14-27 提供与我给 0-13 相同的输入。第二个机器人卡在原点附近,而第一个机器人按预期正常移动,没有任何问题。

我需要一些帮助或一些示例,以便更好地了解如何可视化多个机器人的运动。

0 投票
1 回答
43 浏览

drake - 在运行时跟踪 time_step 并记录几何逻辑错误

在我的模拟中,我不断遇到仅在运行时发生的错误,例如

我希望能够记录这些问题发生的时间,以追踪导致这些错误的特定状态。我还希望能够记录不同的状态参数,例如我的不同身体的力和位置,我知道该怎么做。

在不同时间检查身体位置和状态的功能已记录在案,例如EvalPoseInWorld(). 我正在寻找的是用于输出此数据的某种故障触发器。我还希望能够real_time_factor在德雷克模拟器中记录可见,但不知道如何访问它。

作为参考,我正在运行我在这个 fork 中制作的一个示例:https ://github.com/joaqgira/drake

drake/您可以在with中运行示例bazel run examples/springboard:shape_collision

0 投票
2 回答
150 浏览

python - Python中的类实现

我正在尝试在 Python 中创建一个类并遇到一些问题。

首先,我尝试继承 VectorSystem 来进行轨迹优化,但我得到了关于它没有“AutoDiff”的错误

RuntimeError:名为 [] 的类型为 drake::pydrake::(anonymous)::Impl::PyVectorSystem 的对象不支持 ToAutoDiffXd

代码:

其次,我尝试从 LeafSystem 继承并由于模板而遇到问题。我无法使用 plant.CreateDefaultContext() 创建上下文。我得到错误:

TypeError:必须使用 ex1_[float] 实例作为第一个参数调用未绑定的方法 CreateDefaultContext()(什么都没有)

如果我使用 plant().CreateDefaultContext() 之后会出现奇怪的错误,例如错误的 context.num_output_ports() 或无法调用 plant.ToSymbolic() (TypeError: unbound method ToSymbolic() 必须使用 ex1_[float ] 实例作为第一个参数(一无所获))等...代码:

将不胜感激任何帮助解决这些问题之一。

(在 Ubuntu 16.04 上运行)

0 投票
2 回答
76 浏览

drake - 使用 >= 进行约束会引发 RuntimeError(请使用 pydrake.common.containers.EqualToDict)

我正在尝试使用直接转录来解决涉及一些三角函数的轨迹优化问题。

我有以下变量类型

我正在尝试创建一个约束如下

但我收到以下错误

0 投票
1 回答
86 浏览

python - 使用 sympy 方程进行直接转录时内存使用率高

我曾经sympy通过拉格朗日推导我的 3 连杆机器人的运动方程。以 ( ) 形式得到的运动方程theta_dot_dot = f(theta, theta_dot)结果非常复杂,有很多cossin。然后我lambdified使用 with 的函数drake,将所有的sympy.sinandsympy.cos替换为drake.sin, drake.cos

最终函数可以在毫秒范围内有效地进行数值计算(即给定theta, theta_dot、查找)。theta_dot_dot

然后我尝试使用直接转录来进行轨迹优化。注意我没有使用该DirectTranscription库,而是手动添加了必要的约束。

约束添加大致如下:

我现在面临的问题是,在添加约束的每次迭代中,我观察到我的内存使用量增加了大约 70-100MB。这意味着在程序由于内存不足而崩溃之前,我的时间步数不能超过 50 左右。

我想知道我可以做些什么来为我的机器人进行轨迹优化。显然,我可以尝试(通过手工或其他方式)简化运动方程......但是还有什么我可以尝试的吗?约束占用这么多内存是否正常?我在这里做错了什么吗?

0 投票
1 回答
129 浏览

drake - Drake - 帧可视化属性错误

运行该示例/examples/kuka_iiwa_arm/kuka_simulation会给我以下错误:

Blockquote Traceback(最近一次调用最后):文件“/home/felix/.cache/bazel/_bazel_felix/6a5b9f62883c4665b1f398a636821629/external/drake_visualizer/lib/python2.7/site-packages/director/lcmUtils.py”,第 117 行,在handleMessage 回调(msg,channel=channel)文件“/home/felix/git/drake/bazel-bin/tools/drake_visualizer.runfiles/drake/tools/workspace/drake_visualizer/plugin/show_frame.py”,第 93 行,在 _handle_message frame_channel.handle_message(msg)文件“/home/felix/git/drake/bazel-bin/tools/drake_visualizer.runfiles/drake/tools/workspace/drake_visualizer/plugin/show_frame.py”,第36行,在handle_message vis.updateFrame中(转换,名称,父级=文件夹,比例=0.1)文件“/home/felix/.cache/bazel/_bazel_felix/6a5b9f62883c4665b1f398a636821629/external/drake_visualizer/lib/python2.7/site-packages/director/visualization.py”,第 879 行,在 updateFrame obj.copyFrame(frame) AttributeError: 'ContainerItem' object has no attribute 'copyFrame'

示例开始于:
bazel-bin/tools/drake_visualizer &
./bazel-bin/examples/kuka_iiwa_arm/kuka_simulation

bazel-bin/lcmtypes/drake-lcm-spy表示通道DRAKE_DRAW_FRAMES已启动,并且正在传输消息。

关于我的系统的信息:
操作系统:Ubuntu 18.04
gcc: gcc (Ubuntu 7.4.0-9ubuntu1~18.04.york0) 7.4.0
python: Python 2.7.15+ // 这是默认的 python 版本
bazel run @drake//common:print_host_settings: gcc (Ubuntu 7.4.09ubuntu1 〜18.04.york0)7.4.0
cmake:3.15.4

drake 是使用 bazel 0.29.0 从源代码构建的

如果我跑
bazel-bin/tools/drake_visualizer &
./bazel-bin/manipulation/util/geometry_inspector ./manipulation/models/iiwa_description/sdf/iiwa14_no_collision.sdf

Kuka 手臂显示在可视化器中,我可以使用滑块来控制手臂的配置。

编辑:我的问题是,当我运行时/examples/kuka_iiwa_arm/kuka_simulation,可视化器中没有显示任何帧。

0 投票
1 回答
46 浏览

drake - 刚体工厂 - 状态与运动学和加速度

假设我的刚体植物是从一个 URDF 文件生成的,并且代表一个机械手,例如示例中的 Kuka 手臂。我有两个问题:

1.) 广义位置和速度是否与我可以从可以从中获得的对象获得的位置state_output_port()和速度state_derivative_output_port()相同?KinematicsResultkinematics_results_output_port()

2.) 从刚体植物/树木获得关节加速度的推荐方法是什么?

0 投票
1 回答
137 浏览

drake - 纯重力补偿

我目前正在尝试使用 Drake 在 kuka iiwa 7 上实现纯重力补偿控制。我已经将自己的代码实现到 2 个文件中:模拟和控制器。我的模拟包含我的可视化器,它接收命令并发送状态'。我的控制器接收状态并输出命令。为了创建它,我查看了 drake 的 kuka_simulation、move_iiwa_ee 和 kuka_plan_runner 示例代码。但是,我对这 3 个文件有一些疑问。

  1. 在 kuka_simulation 中,因为我想切换到扭矩控制器模式,所以我将变量 torque_control 设置为 true,将 InverseDynamicsController 替换为 KukaTorqueController。该扭矩控制器具有重力补偿。然而,由于模拟的全部目的是创建物理 kuka 手臂的副本,这是否意味着物理 kuka 手臂中已经存在扭矩控制器?

如果这是真的,向所有关节发送扭矩值 0 不应让手臂下降并保持其位置。但是,如果物理手臂中不存在扭矩控制器,我将不得不通过删除 KukaTorqueController 并将其放置在我的控制器代码中来更改我的模拟代码。

  1. 在 kuka_plan_runner, lcm_.publish(kLcmCommandChannel, &iiwa_command); 用于向仿真发送命令。但是,当我查看 iiwa_command 的源代码时,有一条注释说 /** * 参考关节位置。无论*臂处于位置控制模式还是扭矩控制模式,都应始终发送它们。*/ int32_t num_joints;

    std::vector<双>关节位置;

在扭矩控制模式下运行时,为什么我们需要发送手臂的命令位置?例如,如果手臂在 0 位置,如果我要向每个关节发送 0 的位置命令,同时向每个关节发送 1 的扭矩,这会不会产生矛盾?手臂在尝试施加扭矩时会尝试保持其当前位置。

0 投票
0 回答
107 浏览

python - 闭环 MultibodyPlant 的约束力

既然RigidBodyTree快要出来了,我就试着用MultibodyPlant我的闭环多体机器人来研究。

我正在使用drake/examples/simple_four_bar/FourBar.sdf

但是得到以下错误

我猜我应该使用AddForceElement添加约束力,如Bilateral Position Constraints下所示,对吗?

我会进一步认为DoCalcAndAddForceContribution应该实施约束力lambda。但是, , ,CalcPotentialEnergyCalcConservativePower什么CalcNonConservativePower