1.导入模型
1 [Menu bar -- File -- import -- Mesh…]
2 文件 安装位置下的hexapod.dxf
3 网格缩放和网格定向选项 直接勾选import
4 拆分模型
导入的模型为一个整体shape 如图所示
拆分模型操作 [Menubar-Edit-Grouping/Merging-Divide selected shapes]
2.模型处理
(1)删除多余腿
六足机器人有 6 条相同的腿。所以只用制作一条腿就可以 而不用单独制作每条腿 制作好之后 只需将其复制粘贴到正确的位置即可。在场景中选择要删除的形状 按 ctrl 键或 shift 键单击进行选择 然后按删除键 确保将脚指向虚拟环境的 x 轴
按图示摆好位置后 依次在场景内选中形状 删除五条腿
2 合并模型
ctrl-c选中需要合并的对象 [Menu bar -- Edit– Copy selected objects]进行合并操作。
a) 合并基座并重命名为heax_body 更改颜色
(b) 合并第一根连杆并重命名为heax_link1 更改颜色
© 合并第二根连杆并重命名为heax_link2 更改颜色
(d) 合并第三根连杆并重命名为heax_link3 更改颜色
3.添加关节
一种方法是将关节添加到场景中 然后指定其适当的位置和方向 通过坐标和转换对话框 。在你不知道确切的关节位置时 这是不可能的 所以我们必须从我们所拥有的形状中提取它们
1 添加heax_link1的关节
(a) 把heax_link1复制到新场景 选中该形状后单击三角形编辑模式
b 提取形状
调整到合适位置后 按住shift选中电机位置的三角形 在形状编辑模式对话框中单击 Extract shape
c 退出三角形编辑模式
在弹出的对话框中选择Yes
d 插入旋转关节
[Menu bar -- Add -- Joint -- Revolute]
e 设置旋转关节与提取出的形状位置相同
选择旋转关节 按住ctrl再选择Extracted_shape 打开位置和转换对话框 单击底部的Apply to selection
f 把旋转关节复制到原场景 命名为hexa_joint1
2 添加heax_link2的关节
a)同理 提取电机形状
b)新增旋转关节并设置旋转关节与提取出的形状位置相同
c) 设置旋转关节的姿态
Alpha Beta Gamma分别为 -90 0 0
d 把旋转关节复制到原场景 命名为hexa_joint2
3 添加heax_link3的关节
a) 同理 提取电机形状
b) 新增旋转关节并设置旋转关节的姿态
Alpha Beta Gamma分别为 -90 0 0
注意 这里先改变位置再改变姿态可能会出现位置偏差 因此先改变姿态再改变位置
c) 设置旋转关节与提取出的形状位置相同
d) 把旋转关节复制到原场景 命名为hexa_joint3
4.设置关节参数
1 调节关节尺寸和位置
2 沿着z轴方向微调heax_joint1 沿着x轴方向微调heax_joint2和heax_joint3
2 设置三个关节为逆运动学混合模式
5.生成复合形状
以heax_link1为例 复制到新场景后 在三角形编辑模式下 分别选择两边和中间的部分 提取成三个长方体 其中一个长方体选择如图
提取后
合并成复合形状 [Menubar-Edit-Grouping/Merging-Group selected shapes]
可见性设置为不可见
另外两个连杆和基座同理 复制到原场景中 当作动力学模型 只供物理引擎使用 重命名为hexa_link1Respondable hexa_link2Respondable hexa_link3Respondable
注意 腿尖表示为纯球体 因为对于动力学模拟而言 纯球体最稳定/最快。
下图为隐藏hexa_link1-hexa_link3,显示hexa_link1Respondable-hexa_link3Respondable的结果
6.链接机械装置元素并设置属性
【注 下图中的Revolute_joint应为hexa_joint3 截图时名称未更正】
1 将每个动力学模型(隐藏部分)和可见模型链接起来
2 设置三个可见模型的非动态、非响应、可碰撞等属性
3 设置三个动力学模型的动态、响应、碰撞
按顺序分别选择不同的碰撞属性 保证连续的链接元素不会导致碰撞响应
4 链接关节、基座、连杆
5 新建Dummy-------hexa_footTip并设置参数
(a) [Menu Bar– Add– Dummy]添加Dummy
(b) 重命名为hexa_footTip
© 将hexa_footTip拖动到场景层次中的“hexa_link3”上
(d) 将hexa_footTip放在腿部末端 即腿部与地板接触的位置
因为与地面接触 把hexa_footTip的Y和Z位置位置为0
删除刚才生成的Cuboid
6)新建Dummy-------hexa_footTarget并设置参数
复制刚才生成的hexa_footTip 重命名为hexa_footTarget 并放置到场景下
7 链接两个Dummy
两个虚拟对象在场景中也通过红线链接 但由于两个虚拟对象重合 因此无法看到该线
7.添加IK组和元素
8.测试逆运动学计算
1 打开general dynamics properties对话框 禁用动力学
2 仿真
单击运行程序 选中hexa_footTarget 打开位置调整框 拖动hexa_footTarget 末端跟着移动
9.添加另外五条腿
(1)重命名已经做好的一条腿
在所有形状和关节的名称后面添加 _0 在Dummy后面添加 0
2 复制出第二条腿及其Dummy
把hexa_footTarget1和hexa_joint_1_1在场景层次结构中拖到hexapod下 把hexa_joint_1_1绕着z轴旋转60°
3 同理复制、移动并旋转剩下四条腿
4 添加六条腿的IK组和元素
5 为六条腿生成脚本文件
分别选中hexa_joint_1_1……hexa_joint_1_6 进行[Menu bar -- Add -- Associated child script -- Non threaded]
10.处理所有的不可见形状
1 使所有的Dummy不可见
-[Menu bar -- Tools -- Selection]→Clear Selection 清除所有选中的对象[Menu bar -- Tools -- Selection]→Dummies 0/15 按住ctrl取消选择ResizableFloor_5_25、DefaultLights、XYZCameraProxy等非目标和尖端Dummy 再取消选择hexa_footTarget0后 重新选择hexa_footTarget0 在对象属性中[Common-Apply to selection] 使得所有目标和尖端Dummy均不可见
2 使所有的关节不可见
把所有关节的可见性发送到第十层
11.新建Dummy----hexa_base
位置在原点 0 0 0 将其发送到可见层 11 链接到hexapod
12.定义六足机器人模型
您可能已经注意到 当您单击六足机器人上的某个对象时 只会选择该对象。 但是我们现在想要的是保护单个对象不被修改 而是选择整个机器人。
为除了heaxpod以外的形状设置Select base of model instead选择hexapod 设置Object is model base 出现白色包围框
现在单击六足机器人上的任何对象 整个机器人都会被选中



