webots自学笔记(二)节点与机器人建模
原创文章,出自"博客园, _阿龙clliu" :http://www.cnblogs.com/clliu/
上一次介绍了界面和一个简单的自由落体,然而在实际运用中,机器人的结构都是可以大做文章的,天马星空的想象如果能在仿真中运行一下是再好不过了的。这一次说一说webots下建模。
本人是学机械的,都知道现在主流的三维建模软件都有SolidWorks、Creo(Pro\E)、UG等等,这些软件建模的功能很强大,操作也相对简单。而webots的建模是基于VRML语言的,我知道的使用这个语言的建模软件有3dmax,我所知道一些工业设计的同学他们这款软件。所以,我们在SolidWorks等软件下建模的文件是没有办法导入webots的。
在webots建模中,都是以场景树中的节点贯穿所有信息,关于节点的概念,我也讲不清楚,英文能力好的朋友可以查单reference.pdf(F4)中Chapter 2 -Node Chart。
用一句话概括一下webots的建模模式:建一个基本单元(圆柱、长方体等),经过translation(位移)、rotation(旋转)、sacle(缩放)的过程得到一个新的形状,多个这样的形状通过关系组合。(基本上和openGL的绘图模式一样)
建立一个四足机器人模型
进入正题,我们在一级节点(与WorldInfo、Viewpoint同级)下新建节点。会出现新节点、USE、PROTO(项目)、PROTO(webots)。
新节点 是代表可以添加的节点,在不同的节点下新建,这一栏的内容是不一样的。
USE 里面包含在项目中用户建好的节点,差不多复制的意思吧,前提是建好的节点需要命名(再强调一遍,命名不是修改节点下name属性,是选中该节点在下方DEF中输入)。
PROTO(项目) 里面添加源目录的文件,现在不用到。
PROTO(Webots) 里面有软件写好的一些模型,有些生活中的物品,桌子,球之类的,还有现在有名机器人(nao等)和传感器。用到最多的就是object下的floors下的Floor(Solid),新建世界时软件添加的CheckeredFLoor地板真是太丑了,我一般都删了自己加一个。

选择新节点下的Robot节点,创建一个机器人,点击Robot节点,下方DEF命名为robot。(在添加节点时要养成命名的好习惯)选择robot节点下的children,新建节点,这时候的新节点下的内容和之前不一样,多了很多项。

选择Shape节点,我们建立一个机器人的机身。在Shape节点下有appearance和gometry两个子节点,代表着外观和几何形状。

选中geometry节点,新建节点box,命名为body,选中size,修改成(x,y,z)为(0.32,0.01, 0.16)。

这时候机器人的机身贴在地板上,我们选择Robot节点下的translation节点,将修改成0.25,这时候机器人就向上移动了0.25m。
接下来继续选择Robot节点下Children(也可以选中DEF body Shape节点),新建一个servo节点,只要和DEF body Shape节点在同一级就可以。命名为fore_right_1。

在servo下的children节点下新建Transform节点,命名为servo_shape,Transform节点可以进行位移、旋转、缩放的变换。

在其children下添加shape节点,命名servo_shape,在shape的geometry NULL下新建Cylinder(圆柱)节点,修改属性height为0.01,radius为0.01。修改完后,圆柱完全藏在机身里面了。

接下来修改DEF fore_right_1 Servo下的translation 为(0.12,0,0.085),rotation为(0,0,1,0);将DEF servo_shape Transfrom下的rotation修改为(1,0,0,1.5708)。
rotation这种旋转变化应该是四元数,和常用的欧拉角不一样,指的是绕一个向量旋转某个弧度,(1,0,0,1.5708)指绕x轴旋转pi/2。修改完成之后应该如下,这里一定要细心。

我们打开菜单栏 查看->可选显示->显示伺服轴,查看电机的旋转方向是否正确。这时候视图中出现一条黑线。这个方向是错误的,电机的旋转轴应该和机身平行向外。

这时候选中DEF fore_right_1 Servo的rotation,点击一下角度属性的^按钮,方向就调整过来了,再按一下向下的,恢复到0,电机的方向就和Z向相同了。另外,需要使用直线位移的电机,可以将servo下type属性改成linear,更详细的介绍查看reference.pdf中 3.42 Servo。


接下来继续建模,在DEF servo_shape Transform同级下新建节点Transform,命名leg1,修改translation为(0,-0.05,0)。在其下children新建shape节点,命名leg1。在其geometry下新建box节点,size属性改成(0.01,0.1,0.008)。

接下来在DEF leg1 Transform同级新建servo节点,命名fore_right_2,修改translation为(0,-0.1,0)。在其fore_right_2 servo 的children下新建Transport节点,命名servo_shape,修改rotation(1,0,0,1.5708),在children下新建USE节点servo_shape(如果之前没有命名,USE节点将无法使用)。说的不清楚可以看图操作。

接下来的操作都差不多,直接放图,按着图上做吧。

最下面与地面接触的小圆柱,我使用的是touchSensor节点,这个传感器节点可以反馈与地面的接触力,控制机器人的时候可以使用到。具体的操作看图吧。

有人会问为什么一个电机2要加在电机1的子节点下,你想一下,小腿的位置是伴随着髋关节和膝关节两个电机的变化而变化,髋关节(servo1)转动,大腿(leg1)、小腿(leg2)和膝关节(servo2)都会随之转动;膝关节(servo2)转动,只有小腿(leg2)随之转动。所以,大腿(leg1)、小腿(leg2)和膝关节(servo2),都是髋关节(servo1)的子节点;小腿(leg2)是膝关节(servo2)的子节点。
然后接下来其他的腿建模,基本上都是用USE节点的,过程就不说了,后面会给出模型的文件下载。
模型建完之后,是一项很繁琐的工作,设置boundingObject和Phyzics,给每个零件添加颜色,这个过程难度不大,照着下载的文件跟着做吧。
另外说一点,不是所有的形状都要加boundingObject(外边界),这样很容易产生干涉,简介只给body和12个小圆柱加外边界。

图中弯曲的腿,可以通过修改每个servo的rotation的值,具体可以看文件吧。
.wbo文件导入方法:新建一个世界,按下导入选择文件。

下一篇讲控制器,建议学习的时候多查reference。
webots自学笔记(二)节点与机器人建模的更多相关文章
- webots自学笔记(一)软件界面和简单模型仿真
本人是某非理工类某高校大四狗,由于毕设研究需要使用webots软件,在学习使用webots的过程花费了很多时间.由于这个软件基本没有什么中文资料,所以想把自己所学到的一些东西写下来,如有什么错误的地方 ...
- webots自学笔记(三)控制器与电机控制
原创文章,来自“博客园,_阿龙clliu” http://www.cnblogs.com/clliu/,装载请注明原文章出处. 上一次建了四足机器人的模型,模型文件在上一篇有下载地址,这一次用控制器让 ...
- webots自学笔记(四)传感器API使用、查看官方文档
原创文章,来自“博客园,_阿龙clliu” http://www.cnblogs.com/clliu/,转载请注明原文章出处. 不能说webots的学习资料少,只能说 ...
- webots自学笔记(五)使用物理插件ODE建立铰链
原创文章,来自"博客园,_阿龙clliu" http://www.cnblogs.com/clliu/,转载请注明原文章出处. 在一些三维制图软件或仿真软件里,都有运动副的概念,w ...
- webots自学笔记(六)实用控制器函数补充
原创文章,来自"博客园,_阿龙clliu" http://www.cnblogs.com/clliu/,转载请注明原文章出处. 用Webots软件做机器人仿真时,可以编 ...
- JDK源码阅读-------自学笔记(二十四)(java.util.LinkedList 再探 自定义讲解)
一.实现get方法 1.一般思维实现思路 1).将对象的值放入一个中间变量中. 2).遍历索引值,将中间量的下一个元素赋值给中间量. 3).返回中间量中的元素值. 4).示意图 get(2),传入角标 ...
- webpack4 自学笔记二(typescript的配置)
全部的代码及笔记都可以在我的github上查看, 唤醒star: https://github.com/Jasonwang911/webpackStudyInit/tree/master/typesc ...
- python自学笔记二
:#进入循环重输文0件名 pass else:#退出循环,等待创建 break fobj = open(fname,'a')#打开或创建文件 #接下来写入文件 all = [] print('ente ...
- python自学笔记(二)
通过前文介绍,大体上可以用学过的知识做一些东西了. 这里简单介绍下python参数解析argparse命令. 使用argparse需要引用 import argparse 然后调用 parser = ...
随机推荐
- ASP.NET 页面之间传值的几种方式
开篇概述 对于任何一个初学者来说,页面之间传值可谓是必经之路,却又是他们的难点.其实,对大部分高手来说,未必不是难点. 回想2016年面试的将近300人中,有实习生,有应届毕业生,有1-3年经验的,有 ...
- mysql表名忽略大小写
安装完数据库,建表查询发现表不存在,原来是表名大小写写错了,原来Linux下的MySQL默认是区分表名大小写的,这样的话对变成灰带来很大的不变,如何才能使mysql表名不区分大小写呢? 通过如下设置, ...
- Redis key 相关命令
其实本质上,Redis 就是一个Key---Value 数据库.这里我先介绍下Redis中关于的key的相关命令, 注意:key是字符串存储,但是不能使用 空格 或者 “\n”,value 则可以使用 ...
- windows下Visual Studio Code 1.9安装
点击送你去官网下载vs code 进入下载页面如下 下载完成双击安装 安装完成打开之后如下图,最新版的默认中文就挺好的! 注意下面是微软建议: Note: .NET Framework 4.5.2 i ...
- Linux下tomcat的安装与项目部署
最近在linux下安装了jdk,为了圆我以前的心愿,把tomcat也安装了,顺便部署个项目,也算是小又成就感 废话不说了,直接上过程 一.下载安装对应的jdk,并配置Java环境. 有关jdk的安装请 ...
- GitLab Wiki 内容恢复版本管理
原来一直在网站上写Wiki文档, 最近手欠误删一篇文档, 想要恢复文档时才发现原来gitlab的Wiki是用git管理的从此再也不用为误删担心了 实现步骤: mac系统安装gollow brew in ...
- 【4Large-Style】前端框架设计——Button 的设计思路
Button 的设计 Button 作为基本的 Web 元素,看似简单,却需要非常用心的设计,因为 Button 作为按钮,是具有多个不同的状态,每种状态都基本上需要进行一些特殊的优化设计,以让组件更 ...
- Python爬虫:通过关键字爬取百度图片
使用工具:Python2.7 点我下载 scrapy框架 sublime text3 一.搭建python(Windows版本) 1.安装python2.7 ---然后在cmd当中输入python,界 ...
- CSS3知识点整理(四)----布局样式及其他
包括CSS3多列布局样式.Flexbox伸缩布局.盒子模型等.重点介绍了Flexbox伸缩布局的各种属性用法. 一.多列布局 为了能在Web页面中方便实现类似报纸.杂志那种多列排版的布局,W3C特意给 ...
- HTTP学习目录
前面的话 除了HTML.CSS.javascript这三门前端基础知识之外,HTTP恐怕是前端工程师最需要掌握的知识了,它是前端和后端沟通的桥梁,前端工程师需要能够调试HTTP.修复网络传输中可能遇到 ...