Mujoco中旋转轴的定义

两种定义方式

1

    <body name="arm_low_l" pos="-.06 0 -.016" quat="0 0 0.707107 0.707107">
 
         <joint name="l_elbow" range="-1.3 1.57" type="hinge"/>
         <geom type="cylinder"  size="0.001 0.008"/>

      </body>

2

		<body pos="0 0 2" euler="0 0 0">
			<joint name="pin" type="hinge" axis = "0 -1 0" pos="0 0 0.5"/>
			<geom type="cylinder" size="0.05 0.5" rgba="0 .9 0 1" mass="1"/>
		</body>

差异:

  1. 到第1种的定义方法,有一个四元数quat=“0 0 0.707107 0.707107”,第2种没有
  2. 到第2种的定义方法,body有euler,子元素joint有axis,pos属性,第1种没有

原因

任何姿态,等效于饶一个特定旋转轴旋转一定角度
—《机器人操作的数学导论》

  1. 第1种的定义方法,是依据上面的理论来的,用一个四元数来表示了旋转轴了,这里的四元数还包含了初始姿态。
  2. 第2种方法,是比较传统的方法,直接先定义一个连杆,然后再定义旋转轴的方向以及所在位置

第二种方法的一些解读

Mujoco中默认的body是垂直方向的,所以如果我们需要建一些水平会其他
形式的body,需要用euler以及axis属性组合起来

    <body name="shoulder_l" pos="0 0.06035 0" euler="0 0 0">
           <inertial diaginertia="0.0118742 0.00851644 0.00537304" mass="0.013" pos="-0.0135226 0.0102641 0.00139357" quat="0.89853 0.0814684 0.0409894 0.429332"/>
           <joint name="l_shoulder_pitch" range="-2.61799 2.61799" type="hinge" axis="1 0 0" pos="0 0 -0.03" />
           <geom type="cylinder"  size="0.001 0.03"/>
    </body>

1 euler:定义了下个关节所所在的局部坐标系在本关节的局部坐标系中的姿态

1.1 例子1

axis=“1 0 0”
euler=" 0 0 0",表示子坐标系与父坐标系的姿态相同
在这里插入图片描述

1.2 例子2

axis=“1 0 0”
euler=" -1.57 0" 表示子坐标系绕父坐标系的x轴顺时针旋转pi/2
在这里插入图片描述

1.3 例子3

axis=“0 0 1”
euler=" -1.57 0"

旋转原先是指向上边的,因为euler的值的影响,变成了指向右面
在这里插入图片描述

1.4 例子4

axis=“0 1 0”
euler=" -1.57 0"

旋转原先是指向右边的,因为euler的值的影响,变成了指向下面
加粗样式

2 axis: 定义了本关节绕本局部坐标系的哪个轴旋转

3 pos:定义关节在body中的哪个位置,注意,body的体坐标系是建在body的中间的,所以[0,0,0]就是将关节放在body中间

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值