首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使‘`ScrewJoint`’更符合机械手

使‘`ScrewJoint`’更符合机械手
EN

Stack Overflow用户
提问于 2022-10-21 21:40:20
回答 2查看 72关注 0票数 1

我正在进行一项模拟,其中包括:

  • 一种螺栓,垂直焊接在world
  • 螺母,通过ScrewJoint连接到螺栓上。螺母的质量设置为0.02公斤,惯性为对角线1.1e-9 *I。这是通过一个.sdf文件配置的。
  • 一个伊瓦机械手,这是目前的一个点。

问题是,这个螺母很难操作,我找不到一个可以调整的参数,这可以使它更逼真。更具体而言:

  • 我测量在水平平面上切向螺母的力的能力,使连接螺母和螺栓的接头产生螺旋运动。
  • 我希望在较低的力下有更多的运动,但到目前为止,我还没有做到这一点。
  • 我对这样做的兴趣不是无所事事的;我对更复杂的模拟感兴趣,当iiwa与这个接口接触时,这些模拟也会失败;我已经询问过那些这里这里。 (都部分回答了)。在这里总结一下:当机械手抓住螺母时,螺母以这样的方式与螺母搏斗,使得schunk夹持器被迫松开,iiwa被抛出轨道,但螺母保持静止。
  • 为了更好地说明这个问题,我附上以下两个简单的实验:

1.使用ExternallyAppliedSpatialForce在水平平面上施加200N力。

图表示法:(这里和下面)左图包含沿世界Z轴的线性量(mm/s等),右图包含围绕世界Z轴的角量(以度、degdeg/s等为单位)。带有后置撇号的图例条目使用二级Y轴刻度;其他图例条目使用主Y轴刻度。

实验总结:

这就像预期的那样,200 N就足以使螺母在螺栓上旋转,导致螺母沿着螺栓垂直运动不到1厘米,旋转超过90度。注:外力没有出现在我的图表上。

2.用iiwa和一个简单的位置控制器在水平平面力中切向施加

实验总结:这里的力与以前的大致相同:70N沿tz,但在txty中更高(170N),尽管现在只应用了一小段时间。坚果只运行几度或百分之一厘米。这一不成功的互动视频如下,接触力是可视化的使用ContactVisualizer

请告诉我如何使这个screw_joint更加兼容?

在这些实验中,我尝试了改变螺母的massinertia (不同的数量级),这似乎是在缩放接触力,但不影响接触后螺母的加速度或速度。

EN

回答 2

Stack Overflow用户

发布于 2022-10-24 13:30:01

我喜欢你的实验,使用ExternallyAppliedSpatialForce来获得一个比例的概念,虽然我没有完全了解这个设置的细节。

不过,吸引我眼球的是天平,你可以用笔和纸来估计:

  1. 你的惯性是1e-9公斤⋅米?!从你和iiwa的相互作用来看,我估计半径是1cm,用它你可以得到2e-6公斤的⋅平方米,大三个数量级。
  2. 在一个20克螺母上施加200 N的力会导致10000米/秒的加速度。作为参考,那是地球引力加速度的1000倍!

这些数字正确吗?另外,如果您碰巧有快速交互(您是吗?),您可能需要估计一个对您的应用程序有意义的时间步骤。

希望这能帮上忙!

票数 3
EN

Stack Overflow用户

发布于 2022-11-06 19:18:52

好的是我已经修好了;坏的是:我不明白解决办法。

让我们重申我正在处理的一个问题:一个被操纵的对象对ExternallyAppliedSpatialForce的反应是可以预见的,但是不能通过与操纵者的接触来移动。

所做的工作:

  1. 我已经更新了德雷克从2f340192a9dc79110410faf8a6d54a8615ddca92 (大约2022年8月22日)到42448c0af1b39f0c46f760e7ae37d77097689ad3 (大约2022年11月3日)
  2. 更新后,我的实验设置用断言Actuation input port for model instance ... must be connected破坏了。[类似于问题中提出的问题]。我的做法是这样的:
代码语言:javascript
复制
bolt_n_nut_ = internal::AddAndWeldModelFrom(sdf_path, "nut_and_bolt",
  plant_->world_frame(),
  "bolt", X_WC, plant_);

然后在后面的ManipulationStation::Finalize

代码语言:javascript
复制
auto zero_torque = builder.template AddSystem<systems::ConstantVectorSource<double>>(
  Eigen::VectorXd::Zero(1));
builder.Connect(zero_torque->get_output_port(),
  plant_->get_actuation_input_port(bolt_n_nut_));
  1. 随着上述变化,操作和操作开始与机械手交互:

图中要注意的事项:

  1. 操纵者移动的距离从几毫米增加到了几十厘米。视频显示一个螺母变得容易操作。
  2. 这种交互违反了ScrewJoint约束,即操作和沿着它的轴移动,没有太多的旋转。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74159401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档