问题标签 [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 投票
2 回答
95 浏览

drake - 如何理解连续状态向量?

背景

我正在尝试平衡移动倒立摆(即赛格威)。

对于模拟,我创建了一个简单的机器人,该机器人包括一个通过旋转关节连接到圆柱体(轮子)的杆。

问题

构建我的 MIP 工厂后,plant.num_positions()返回8plant.num_velocities()返回7,即总continuous_state大小为15

  1. 我如何理解这么多的州?
  2. 我想其中一个代表杆与垂直线的角度。我怎么找到那个?
  3. 另外,为什么num_positions()不等于num_velocities()
0 投票
1 回答
54 浏览

drake - Drake Visualizer:使用 .dae 文件时 readPolyData 中的文件扩展名未知

我正在尝试为.dae我的模型添加一个用于碰撞和视觉的自定义网格(圆环)文件.sdf

当我运行我的程序时,德雷克可视化器给出以下错误

由于prius.sdf也使用prius.dae,我认为这是可能的。我究竟做错了什么?

0 投票
1 回答
164 浏览

drake - 在 Ubuntu 18.04 上本地安装 Drake 的问题

我正在按照课程 6.832 的教科书附录 A 中关于如何在 Linux 上本地安装 Drake 的说明进行操作。

所有安装步骤都已完成,并且似乎是成功的。此外,我已经安装了所描述的所有先决条件。但是,当我在第 2.3 节中运行测试时

我遇到了几个错误。

似乎它正在尝试访问lib***.so比我拥有的多个文件的旧版本。

F.eks:Pydrake 试图包含 libgfortran.so.3,而我的计算机上只有 libgfortran.so.4。我试图通过使用ln -s命令使终端接受“libgfortran.so.4”作为“libgfortran.so.3”来做一些“hackfix”。但是,现在我遇到了另一个我不知道如何解决的错误。

它说:

回溯(最后一次调用):文件“”,第 1 行,在文件“/opt/drake/lib/python2.7/site-packages/pydrake/init .py ”中,第 32 行,来自 . 导入通用文件“/opt/drake/lib/python2.7/site-packages/pydrake/common/init .py ”,第 3 行,从 ._module_py 导入 * ImportError:/opt/drake/lib/python2.7/站点包/pydrake/common/../../../../libdrake.so:未定义符号:_ZN6google8protobuf2io17CodedOutputStream28WriteVarint32FallbackToArrayEjPh

我该如何处理这个问题?

0 投票
1 回答
55 浏览

drake - 在 macOS 上安装 Drake Source 后,如何运行示例?

使用“macOS 上的源安装”安装 drake 后,“Bazel built//...”和“Bazel test//...”就完成了。问题是:我如何运行示例,例如 examples/acrobot/run_swing_up ?我应该输入如下命令: Bazel-bin/examples/acrobot/run_swing_up 吗?

0 投票
1 回答
24 浏览

drake - 具有类型相关构造函数参数的类的标量转换复制构造函数

情况

我意识到我一直在编写很多LeafSystem类,它们对输入数据进行非常轻量级的操作并将其作为输出数据输出。它们都是无状态的,唯一的区别是转换函数。

这方面的一个例子是简单地重新排序输入数据的类或简单地去除不相关的输入数据的类。

因此,我想编写一个LeafSystem将这个“转换函数”作为参数的类,以跳过每次我想以稍微不同的方式处理输入数据时都必须创建一个全新的类的麻烦。

这个想法是一个构造函数,它采用 astd::function的形式,以及输入和输出向量的大小。

“转换函数”可以在这个函子中实现。

一个示例用例是,如果我想将 3D 状态数据(x、y、z、roll、pitch、yaw)转换为 2D 状态数据(x、y、yaw),我可以编写一个仿函数,例如

并将这个函子传递给这个“StateConverter”。

问题

我面临的问题是关于标量转换复制构造函数。当类具有特定于类型的成员对象时,如何实现它?

这个类的主体如下(为了完整性)

0 投票
2 回答
82 浏览

drake - FixInputPort 尝试连接错误的端口

我有一个自定义LeafSystem的输入端口和输出端口如下

我通过将它添加到我的系统中

对于剩余的端口,我希望现在连接修复输入端口。我这样做是通过

但是,std::logic_error当我跑步时它会抛出一个FixInputPort

奇怪的是

我的工厂添加如下

0 投票
1 回答
32 浏览

drake - 从 state_output 转换为 RollPitchYaw 时变量 u0_0 没有条目

背景

为了控制 my MultibodyPlant,我需要知道特定链接的当前滚动、俯仰、偏航和 x、y、z。我相信我是从我MultibodyPlantget_state_output_port(). 植物是浮动的,即它使用默认的基于四元数的浮动基础

问题

在解码浮动基本状态向量的含义后(不确定我是否做对了),我连接get_state_output_port()到自定义的输入端口LeafSystem并尝试使用以下行将四元数矩阵转换为滚动俯仰偏航

这给了我以下std::runtime_error

如何正确地将当前状态转换为横滚俯仰偏航?

0 投票
2 回答
62 浏览

drake - 如何指定安装浮动底座的位置?

假设我有一个简单的摆锤连接到 sdf 文件中定义的四旋翼。

当我将此 sdf 文件加载到 aMultibodyTree中时,默认的连续状态向量的大小为 4(四元数)+ 3(x,y,z)+ 1(将四旋翼连接到摆锤的关节)= 8,如this answer所示。

默认情况下,urdf/sdf 解析器为系统添加基于四元数的浮动基数。

我的问题是,我怎么知道这个 4 (quaternion) + 3 (x, y, z) 框架的附加位置?

以及如何控制它的附着位置?假设我的运动方程与钟摆的尖端有关,我希望这个 4 + 3 四元数浮动底座连接到我的钟摆尖端,我将如何定义它?

0 投票
1 回答
141 浏览

drake - 使用带有 get_continuous_state_vector() 元素的 cmath 函数时没有匹配函数

在我的DoCalcTimeDerivative中,我需要将 cos 作为状态向量元素之一。

我使用以下代码执行此操作

但是,我收到以下错误

我也尝试过使用

这同样给出了以下错误

正如我在示例中看到std::cosstd::sin使用的那样,这很奇怪,但我似乎无法弄清楚为什么它在示例中有效,但在我的示例中无效。

0 投票
2 回答
5294 浏览

drake - 我可以在不明确计算每个身体的完整变换的情况下可视化多体姿势吗?

examples/quadrotor/示例中,QuadrotorPlant指定了一个自定义并将其输出传递到QuadrotorGeometryQuadrotorPlant状态打包到FramePoseVector的位置SceneGraph以进行可视化。

其中的相关代码段QuadrotorGeometry执行此操作:

在我的例子中,我有一个基于浮动的多体系统(想想一个附有钟摆的四旋翼),我已经创建了一个自定义植物 ( LeafSystem)。这样一个系统的最小坐标是 4(四元数)+ 3(x,y,z)+1(关节角)= 7。如果我按照 QuadrotorGeometry 示例,我相信我需要指定完整RigidTransformd的四旋翼和全RigidTransformd摆。

问题

是否可以设置可视化/指定姿势,这样我只需要指定 7(四旋翼姿势 + 关节角度)状态最小坐标,并让内部MultibodyPlant处理每个个体(四旋翼和钟摆)的RigidTransform计算然后可以传递给SceneGraph可视化吗?

我相信这是可能的“阁楼版”(我认为这意味着“被弃用”)RigidBodyTree,这是在examples/compass_gait

get_floating_base_state_output_port()仅输出CompassGait7 个状态(3 rpy + 3 xyz + 1 髋角)的状态在哪里。

MultibodyPlant相当于什么SceneGraph

更新(使用Russ 已删除答案中的MultibodyPositionToGeometryPose

我创建了以下函数,它尝试MultibodyPlant从给定创建一个model_filepose_output_port通过MultibodyPositionToGeometryPose.

pose_output_port我使用的是 4(quaternion) + 3(xyz) + 1(joint angle) 最小状态。

以上失败,但有以下异常