问题标签 [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.
drake - 如何理解连续状态向量?
背景
我正在尝试平衡移动倒立摆(即赛格威)。
对于模拟,我创建了一个简单的机器人,该机器人包括一个通过旋转关节连接到圆柱体(轮子)的杆。
问题
构建我的 MIP 工厂后,plant.num_positions()
返回8
和plant.num_velocities()
返回7
,即总continuous_state
大小为15
- 我如何理解这么多的州?
- 我想其中一个代表杆与垂直线的角度。我怎么找到那个?
- 另外,为什么
num_positions()
不等于num_velocities()
?
drake - Drake Visualizer:使用 .dae 文件时 readPolyData 中的文件扩展名未知
我正在尝试为.dae
我的模型添加一个用于碰撞和视觉的自定义网格(圆环)文件.sdf
。
当我运行我的程序时,德雷克可视化器给出以下错误
由于prius.sdf
也使用prius.dae
,我认为这是可能的。我究竟做错了什么?
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
我该如何处理这个问题?
drake - 在 macOS 上安装 Drake Source 后,如何运行示例?
使用“macOS 上的源安装”安装 drake 后,“Bazel built//...”和“Bazel test//...”就完成了。问题是:我如何运行示例,例如 examples/acrobot/run_swing_up ?我应该输入如下命令: Bazel-bin/examples/acrobot/run_swing_up 吗?
drake - 具有类型相关构造函数参数的类的标量转换复制构造函数
情况
我意识到我一直在编写很多LeafSystem
类,它们对输入数据进行非常轻量级的操作并将其作为输出数据输出。它们都是无状态的,唯一的区别是转换函数。
这方面的一个例子是简单地重新排序输入数据的类或简单地去除不相关的输入数据的类。
因此,我想编写一个LeafSystem
将这个“转换函数”作为参数的类,以跳过每次我想以稍微不同的方式处理输入数据时都必须创建一个全新的类的麻烦。
这个想法是一个构造函数,它采用 astd::function
的形式,以及输入和输出向量的大小。
“转换函数”可以在这个函子中实现。
一个示例用例是,如果我想将 3D 状态数据(x、y、z、roll、pitch、yaw)转换为 2D 状态数据(x、y、yaw),我可以编写一个仿函数,例如
并将这个函子传递给这个“StateConverter”。
问题
我面临的问题是关于标量转换复制构造函数。当类具有特定于类型的成员对象时,如何实现它?
这个类的主体如下(为了完整性)
drake - FixInputPort 尝试连接错误的端口
我有一个自定义LeafSystem
的输入端口和输出端口如下
我通过将它添加到我的系统中
对于剩余的端口,我希望现在连接修复输入端口。我这样做是通过
但是,std::logic_error
当我跑步时它会抛出一个FixInputPort
奇怪的是
和
我的工厂添加如下
drake - 从 state_output 转换为 RollPitchYaw 时变量 u0_0 没有条目
背景
为了控制 my MultibodyPlant
,我需要知道特定链接的当前滚动、俯仰、偏航和 x、y、z。我相信我是从我MultibodyPlant
的get_state_output_port()
. 植物是浮动的,即它使用默认的基于四元数的浮动基础。
问题
在解码浮动基本状态向量的含义后(不确定我是否做对了),我连接get_state_output_port()
到自定义的输入端口LeafSystem
并尝试使用以下行将四元数矩阵转换为滚动俯仰偏航
这给了我以下std::runtime_error
如何正确地将当前状态转换为横滚俯仰偏航?
drake - 如何指定安装浮动底座的位置?
假设我有一个简单的摆锤连接到 sdf 文件中定义的四旋翼。
当我将此 sdf 文件加载到 aMultibodyTree
中时,默认的连续状态向量的大小为 4(四元数)+ 3(x,y,z)+ 1(将四旋翼连接到摆锤的关节)= 8,如this answer所示。
默认情况下,urdf/sdf 解析器为系统添加基于四元数的浮动基数。
我的问题是,我怎么知道这个 4 (quaternion) + 3 (x, y, z) 框架的附加位置?
以及如何控制它的附着位置?假设我的运动方程与钟摆的尖端有关,我希望这个 4 + 3 四元数浮动底座连接到我的钟摆尖端,我将如何定义它?
drake - 使用带有 get_continuous_state_vector() 元素的 cmath 函数时没有匹配函数
在我的DoCalcTimeDerivative
中,我需要将 cos 作为状态向量元素之一。
我使用以下代码执行此操作
但是,我收到以下错误
我也尝试过使用
这同样给出了以下错误
正如我在示例中看到std::cos
和std::sin
使用的那样,这很奇怪,但我似乎无法弄清楚为什么它在示例中有效,但在我的示例中无效。
drake - 我可以在不明确计算每个身体的完整变换的情况下可视化多体姿势吗?
在examples/quadrotor/
示例中,QuadrotorPlant
指定了一个自定义并将其输出传递到QuadrotorGeometry
将QuadrotorPlant
状态打包到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()
仅输出CompassGait
7 个状态(3 rpy + 3 xyz + 1 髋角)的状态在哪里。
MultibodyPlant
相当于什么SceneGraph
?
更新(使用Russ 已删除答案中的MultibodyPositionToGeometryPose
我创建了以下函数,它尝试MultibodyPlant
从给定创建一个model_file
并pose_output_port
通过MultibodyPositionToGeometryPose
.
pose_output_port
我使用的是 4(quaternion) + 3(xyz) + 1(joint angle) 最小状态。
以上失败,但有以下异常