V-rep中设置完全可控的球状关节
背景
V-rep这软件好是好,就是功能太单一,一切都是对照现有工业机器人的功能进行设计的。因此,软件中无法实现可控的球状关节。
球关节:右键 - add - joint - spherical
双击关节图标,可以看到设置界面几乎就没有能设置的地方,该关节类型也被锁死,无法控制。
不仅如此,V-rep中,一个物体不能同时连接多余1个旋转关节。而且关节与物体的连接关系只能是物体1--关节1--物体2--关节2
因此也几乎堵死想通过三个正交旋转关节构建球关节的想法。
但真的就没有办法了吗?
PLAN A: 用小中介物体衔接
该方法是利用三个分别平行于空间坐标轴的正交转动关节来构成球关节。尽管关节和关节之间不能直接连接,但我们可以设置比较小的中间介质来衔接不同的关节。
关节的层级结构如下:
下图中则是用两个球体衔接了3个关节,基本上实现了球关节的效果。准确地说是实现了一种“椭球”关节。
但次方法还是存在缺点的。如果设置关节匀速转动会发现关节转动的角度和子物体转动的角度不一致(关节角度>物体角度)。还容易造成关节中轴线的偏移等奇怪的情况。因此这个球关节只是“半可控”状态。
PLAN B: 修改中介物体属性
在后续的学习过程中逐渐接触到了关于物体属性的设置,其中有两项吸引力我的注意力。
新建一个object,点开动力学设置,可以看到两个关键属性:Respondable 和 Dynamic。
其中:
- Respondable: 指的是该物体是否是可响应的,这个可响应主要是指碰撞和接触,即使设置不响应,也会受到重力和关节旋转影响。
- Dynamic: 指的是物体是静态还是动态的。如果设置为静态,物体不受重力影响(可悬浮),但仍然是可以判定接触和碰撞的,受到关节旋转影响的。
注意上面标黑的关键字,你是否想到了我想到的东西?
Step 1: 首先依然是搭建三个正交的转动关节,只不过这一次不用留出中介物体的空隙了。
Step 2: 可是这三个关节在功能上并没有连接上,现在我们添加中介物体。
在分层视图中,将中介物体拖到平行于z轴的关节下,设置物体的动力学为is not Respondable, Body is Dynamic
这样物体就通过平行于z轴的关节实现了与父物体的连接,并可以实现水平旋转,接下来设置第二个中介物体。
Step 3:
单击刚才的中介物(这里取名叫中介物1),ctrl + c
and
ctrl + v
建立与中介物1重叠的中介物2,设置其动力学is
not Respondable, Body is not Dynamic
相当于新建了一个基座。在层级视图中将中介物2放到中介物1下方。将第二个关节放在中介物2下方。
并在第二个关节下方房子中介物3(依然与之前的中介物是位置重叠的)。设置物体的动力学为is not Respondable, Body is Dynamic。
这里解释一下关系:
第一个关节本质上是带动中介物1转动,由于中介物2挂在中介物1下方,尽管中介物2是不可响应的静态物体,但也会受到父物体转动的影响,这相当于基坐标发生了改变。所以中介物2会受到关节1的控制。
但此时中介物2已经不能再被其它关节控制了。我们在介物2所在的空间位置建立中介物3,并用关节2连接中介物2和3,中介物3是直接受到关节2控制的,但也会受中介物2运动的影响。
这样一来,我们就实现了一个复合关节,接下来重复step3,建立好第三个关节,并把连杆放在第三个关节下。
这个关节中有4个中介物,并且是完全重合的,但由于设置了is not Respondable,因此不会受到碰撞的影响,而且还可以将这个关节放置在物体内部,也不会被排挤。
至此,我们就完成了一个真正意义上的完全可控的球形关节!
ohhhhhhhhhhhhhhhhhhhhhhh