前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

Joints

作者头像
六四零
发布2020-08-04 20:43:35
1.2K0
发布2020-08-04 20:43:35
举报
文章被收录于专栏:小白VREP小白VREP

这篇文章和大家分享的是VREP 中Joints的相关知识

01

关节类型

有三种Joint类型分别是Revolute Joint(旋转关节)、Prismatic Joint(棱柱关节)、Screw and Spherical Joint(螺旋关节和球形关节)

02

关节模式

一共有五种关节模式,分别为:

  • Passive mode(被动模式):在被动模式下,关节不直接被控制,与固定连杆类似,可以通过API函数来改变其位姿。
  • Inverse kinematics(逆运动学模式):平时表现与被动模式相同,可以用来逆运动学求解和几何约束求解。
  • Dependent mode(依赖模式):在这种模式下,关节位置直接通过线性方程依赖到另一关节。
  • Motion mode(运动模式):这种模式被弃用,不应再被使用。
  • Torque or force mode(转矩或力模式)在这种模式下,关节是由动力学模拟的。当动态启用时,关节可以自由运动或者由力/力矩、速度或位置控制。只有在此模式下才能设置关节的动力学属性。

在Torque or force mode转矩或力模式下,点击Show dynamic properties dialog

  • 当禁用关节电机motor时,关节是自由关节,只受其极限的限制。
  • 启用关节电机并且禁用控制control时,给定目标速度和其所能够传递的最大转矩。当最大转矩很大时,目标速度能够立即达到,并且关节在速度控制中操作,否则以指定的扭矩操作,直至达到目标速度。

3种控制模式

  • Custom control自定义控件:添加脚本写算法控制(后续详细介绍)。
  • PID位置控制:PID控制器
  • Spring-damper mode弹簧阻尼控制:通过力/力矩调制,关节将类似弹簧阻尼系统。

03

关节控制器

  • 有许多不同的方法能够控制关节,在此之前我们讨论一下“松散控制器”和“精确控制器”之间的区别:一个松散控制器将不能在每一个可能的调节步骤中提供新的控制值(一些常规步骤可能会被跳过,但是控制还是有可能的)。一个精确的关节控制器将在每一个可能的调节步骤中提供新的控制值。
  • 首先,关节的控制方法取决于关节的模式。关节处于力/力矩模式和关节处于非力/力矩模式。
  • 力矩模式和非力矩模式的区别在于:在力/力矩模式下操作的关节将由物理引擎处理。物理引擎默认的计算步骤比simulationloop仿真循环高出10倍:simulationloop仿真循环运行在20Hz,而物理引擎运行在200Hz。如果需要,完全可以配置默认行为。
  • 当关节处于非力/力矩模式时,线程脚本的程序代码如下:
  • 当你想通过外部应用例如remote API, ROS 或BlueZero控制关节处于非力/力矩模式时,外部控制器与VREP不同步运行,这种情况下采用松散控制,但是如果希望在每一次仿真循环中精确的控制关节的位置,必须将VREP同步运行并且外部控制器精确触发每一次仿真步骤。(程序代码详见软件help文件,此处不详细赘述)

如果关节处于力/力矩模式并且动态启用,那么物理引擎将会间接的处理它,如果关节motor不启动,那么此关节将不受控制。另外关节还可以处于以下两种动态模式:

  • 关节的motor启用,但控制回路controlloop禁用,当想要从外部应用程序精确的控制此关节时,请使用此模式。当想要在力/转矩模式下松散的控制关节或者速度控制时,也可以使用此模式。
  • 关节的电机motor启动,并且控制回路启动,当您的关节需要充当弹簧/阻尼器时,或者您想从VREP中精确的自定义控制您的关节、或者想从外部应用程序中松散的控制关节,请使用此模式.

如果您的关节的电机是启用的,但控制回路是禁用的,那么物理引擎将应用指定的最大力量/扭矩,并加速关节,直到达到目标速度。如果负载很小并且/或者最大力/力矩很大,那么目标速度就会很快达到。否则,将需要一些时间,如果力/扭矩不够大,目标速度将永远不会达到。可以用sim.setJointTargetVelocity(或者,在基于b0的远程API的情况下:simxSetJointTargetVelocity,或者,在传统的远程API的情况下: simxSetJointTargetVelocity)编程方式调整目标速度。用sim.setJointForce(例如,在基于b0的远程API的情况下:simxSetJointForce,或在传统的远程API情况下:simxSetJointForce)调节最大力/扭矩。处于force/torque模式下,在子脚本中编写精确的关节控制器之前,需注意: 默认情况下,模拟循环运行的时间步长为50ms(在模拟时间内)。但是物理引擎将以5毫秒的时间步长运行,也就是10倍的频率。子脚本将在每个模拟步骤中调用,而不是在每个物理引擎计算步骤中调用。这意味着,如果以常规方式从子脚本控制关节,那么对于10个物理引擎计算步骤,您只能提供一次新的控制值:您将丢失9个步骤。解决这个问题的一种方法是更改默认的模拟设置,并指定模拟时间步长为5ms,而不是50ms。这可以很好地工作,但是请记住,所有其他计算(例如,视觉传感器、接近传感器、距离计算、IK等)也将运行10倍以上的频率,并最终降低模拟速度(大多数情况下,您不需要如此高的刷新频率来进行其他计算模块。但是物理引擎需要如此高的刷新率)。另一个更好的选择是使用一个联合回调函数(或者一个动态回调函数),这将在后面解释。

另一方面,如果你想要运行一个精确的和定期联合外部控制器(例如远程API客户端,ROS节点或BlueZero节点),设置模拟循环率的物理引擎率相同,然后运行V-REP在同步模式下,外部控制器(如远程API客户端)将会精确触发每个仿真步骤。

如果您的关节电机是启用的控制回路也是启用的,那么物理引擎将根据设置处理关节:你的关节可以在位置控制(即PID控制)、在弹簧/阻尼模式、或在自定义控制。PID和弹簧/阻尼器参数可以从子脚本、远程API客户端、ROS或BlueZero节点更新。请参考对象参数IDs 2002-2004和2018-2019。目标位置可通过sim.setJointTargetPosition(或一个基于b0的远程API客户端:simxSetJointTargetPosition,传统的的远程API客户端:simxSetJointTargetPosition)。当需要一个精确的定制控制器时,应该使用联合回调函数(或动态回调函数)。 最后,如果你需要在外部应用程序中实现一个精确的PID或自定义控制器,您需要确保仿真步骤是一样的物理引擎计算步骤:默认情况下,V-REP的仿真循环运行20赫兹(在模拟时间),而物理引擎运行在200赫兹。您可以在仿真设置中调整仿真步长,并且需要确保在同步模式下运行V-REP。

03

关节属性

场景对象属性对话框中包含关节属性,对关节属性进行编辑点击[Menu bar->Tools->Scene object properties],另外还需要双击场景书中的对象图标;或者点击下图按钮:

在场景对象属性对话框中,点击关节按钮来显示关节对话框(只有最后一个选择是关节时才会出现关节按钮)。对话框显示最后选择的关节的设置和参数。如果选择了多个关节,那么可以将一些参数从最后选择的关节复制到其他选择的关节(应用于选择按钮,请注意,这只会在相同类型或模式的关节之间产生影响):

Position is cyclic位置为循环:表示关节位置是否为循环(-180 ~ +180度,不受限制)。只有转动关节可以是循环的。 Screw pitch螺距:关节的节距值。当位置为循环复选框时,此属性只有在旋转关节/螺旋式关节时才可用。 Position minimum位置极小值:非循环转动关节、螺钉或移动关节的最小允许值。 Position range位置范围:非循环转动关节、螺钉或移动关节的变化范围。这种关节的位置限制在位置最小值和位置最小值+位置范围之间。 Position位置:转动关节、移动关节或螺钉的固有关节位置。 IK calculation weightIK计算重量:逆运动学计算时关节的重量。例如,在冗余操作臂的情况下,这个选项使您能够在逆运动学解决方案中优先选择某些关节。与其他关节相比,重量较小的关节的位置变化相对较小。 Maximum step size最大步长:在一次运动计算过程中允许的最大位置变化。较小的步长通常会导致较长的计算,但可能更稳定。对于逆运动学计算,这个值可以被忽略的max覆盖。步长项目在逆运动学对话框。 Mode模式:关节的控制模式。关节可以处于被动模式、逆运动学模式、依赖模式或扭矩/力模式。

Hybrid operation混合操作:当联合在被动模式下,逆运动学模式或依赖的模式,它也可以是混合的方式操作:混合操作允许联合在一个常规的方式来操作,但除此之外,就在动力学计算,目前的关节位置将被复制到目标关节的位置,然后,在动力学计算,联合处理作为位置控制电动机(当且仅当它是动态地启用)。详情请参阅联合类型和操作部分。 Adjust dependency equation调整相依性方程:如果关节处于相依性模式,那么可以指定一个线性方程将关节与另一个相连。对话框的这个部分的值都以米或弧度表示。 Length长度:关节的长度。没有功能意义。 Diameter直径:关节的直径。没有功能意义。 Adjust color A / B调整颜色A / B:颜色A是关节固定部分的颜色,颜色B是关节移动部分的颜色。 Show dynamic properties dialog显示动态属性对话框:切换关节动态属性对话框。关节动态对话框允许调整关节的动态属性。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小白VREP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档