首页 > 其他分享 >[机器人仿真]WEBOTS中创建轮腿机器人模型-并联闭环机构的创建和使用

[机器人仿真]WEBOTS中创建轮腿机器人模型-并联闭环机构的创建和使用

时间:2024-09-22 21:14:16浏览次数:1  
标签:杆件 joint solid 创建 机器人 hingejoint 轮腿 webots

想着做个轮腿的机器人玩玩,但是如果光用PID做算法,对于轮子加腿的结构似乎效果并不好,为了实现轮腿本身能够飞坡在一定高度下能够跳跃,我想着上个仿真模型来调试和学习LQR算法

机器人仿真的软件似乎挺多,我查到比较常用的有ROS套件的一个,还有就是webots

本着界面简单,开源(还有校园网方便下载)的缘故,选用了webots

不得不说,webots界面还算友好,就是这三维窗口用的我是真难受,和常用的建模软件solidworks操作方式不能说是完全一样吧,也可以说是完全相反,滚轮的灵敏度也是大的离谱

不过毕竟这玩意本职是控制系统仿真,三维嘛,能用就行。

webots网上教程挺多,b站上讲的也还算详尽,所以本文只会粗略的描述一下串联杆件的创建过程

串联杆件机身主体建模
首先左上角 文件-NEW-新建webots项目目录

找一个好找的文件位置,写好项目名字一直下一步直到创建完成

项目名称

点击完成,出现个黑窗口

按照网上教程点击添加,加上光照,地面,风景啥的

话说这木地板看起来挺不错的

创建ROBOTS对象,在ROBOTS的children下创建solid对象

solid的children下添加Shape

添加apperence和geometry性质,选择geometry选择BOX

这样我们就得到了只因身

修改geometry里面的参数,可以修改其大小

apperence则可以修改其颜色等外观

有了机身,就可以在上面创建杆件,一般是直接在solid下创建hingejoint,再去hinge joint下创建新的solid,也可以先创建一个位置坐标转换Pose,再去pose下创建joint,这样看起来会更格式化一些。

hingejoint使用方法可以参考官方文档webots/docs/reference/hingejoint.md at released · cyberbotics/webots · GitHub

joint下套joint,这样一个个套娃,最后得到这个

板凳(bushi)

把joint放在joint里,就可以用铰链接起来

但是两个已经有的solid,如何用同一个(至少看起来是)joint铰接起来呢?

并联杆件闭环-Solid referfence
这个问题困扰了我足足三天,直到中秋的假期消耗完才找出方法来

找到的教程要么是不付费没得看,要么是草草说两句如同某些防自学教材

直到两个小时前,我终于开悟了,当场找出了办法,也就写了这篇blog

首先,我们修改hingejoint的position参数,让四根杆件都旋转到合适的位置

然后,在左边右边其中一个杆件下,创建一个hingejoint

我们按照平常创建小车的方式,创建一个位置合适的轮子,记得给shape进行命名(改name属性,比如“车轮”)

然后,在需要并起来的右边杆件下,创建一个Pose

改参数,使得pose的位置为杆件的底端

复制上面创建的轮子hingejoint,直接粘贴到下方这个pose的children下

修改复制后新出现的轮子的位置,尽量和原来的重合

然后将复制来的hingejoint的endpoint(复制过来的轮子solid)删除,然后新建 Solidreference

打开Solidreference,添加..,添加上面命名的shape,如“轮子”

这样你就拥有了一个如何鬼畜都不分离的轮子(

标签:杆件,joint,solid,创建,机器人,hingejoint,轮腿,webots
From: https://www.cnblogs.com/Mcaft/p/18425865

相关文章

  • 2024睿抗机器人开发者大赛CAIP-编程技能赛-本科组(省赛) RC-u5 工作安排详解
    本文参考https://www.cnblogs.com/Kescholar/p/18306136这一题可能对高手来说就能轻而易举的看出是个01背包,但是对于我这种小白还是要经过详细的分析才可以理解。我们题目要求的是获得的最大报酬,题目的影响因素有三个:工作时长、工作截止时间、对应的报酬,那么怎么样合理的去......
  • Java创建接口详细过程
    在Java中,创建mapper、dao(数据访问对象)、service、serviceImpl(service实现类)、controller等组件是构建企业级应用常见的分层架构模式。这种分层架构有助于实现高内聚低耦合的设计,提高代码的可维护性和可扩展性。mapperrXML文件创建MapperXML文件用于定义Java对象和数据库表......
  • 使用java做一个微信机器人
    微信机器人这个功能,目前在市面上运用的还是不是很多,每个人实现机器人的目的也不一样,有的为了自动加好友;有的为了自动拉群:也有的为了机器人对话聊天等等一系列。想必大家对微信机器人感兴趣的伙伴,也在aithub上面搜索了很多吧,但是大多数走到一半遇到各种bug就没有继续坚持走下去,原......
  • 在虚幻引擎中创建毛发/头发
    在虚幻引擎中创建毛发/头发,首先开启两个插件Groom和AlembicGroomImporter打开蒙皮缓存导出人物模型将人物导入Blender,选择需要种植头发的点指定并选择点击毛发这里变成爆炸头了,把数量和长度调一下切换到梳子模式调整发型导出为abc,文件路......
  • Leetcode 1041. 困于环中的机器人
    1.题目基本信息1.1.题目描述在无限的平面上,机器人最初位于(0,0)处,面朝北方。注意:北方向是y轴的正方向。南方向是y轴的负方向。东方向是x轴的正方向。西方向是x轴的负方向。机器人可以接受下列三条指令之一:“G”:直走1个单位“L”:左转90度“R”......
  • GLib 库g_mkdir_with_parents - 创建多级父子目录
    g_mkdir_with_parents是GLib库中的一个函数,它用于创建目录,如果目录的父目录不存在,它也会创建父目录。这个函数的原型如下:gintg_mkdir_with_parents(constgchar*pathname,gintmode);参数pathname是要创建的目录的路径,mode是设置新创建目录的权限。如果目录创建成功,或者......
  • 如何在 ReactJS 中创建可重用的 Button 组件
    按钮无疑是任何react应用程序中重要的ui组件,按钮可能用于提交表单或打开新页面等场景。您可以在react.js中构建可重用的按钮组件,您可以在应用程序的不同部分中使用它们。因此,维护您的应用程序将变得更加简单,并且您的代码将保持dry(不要重复)。您必须首先在组件文件夹中创建一......
  • 如何在 TypeScript 中创建一个类型来检索对象的所有键
    typescript有一个名为keyof的功能,可用于获取对象的键。然而,keyof运算符仅适用于对象的第一层,当我们想要获取深层的所有键时,事情会变得有点复杂。在这篇文章中,我们将讨论如何实现一个可以深层获取所有键的类型。问题概述为了理解我们要解决的问题,让我们从一个例子开始。......
  • 如何使用 Electronjs 创建跨平台桌面应用程序
    在当今的软件开发环境中,构建跨不同操作系统无缝运行的应用程序比以往任何时候都更加重要。无论您的目标是windows、macos还是linux,electron.js都提供了一个强大的框架,可以使用熟悉的web技术创建桌面应用程序。本文将指导您完成设置electron环境、创建应用程序ui、与node......
  • 在 React 中创建自定义 Hook 的最佳技巧
    react的自定义hooks是从组件中删除可重用功能的有效工具。它们支持代码中的dry(不要重复)、可维护性和整洁性。但开发有用的自定义钩子需要牢牢掌握react的基本思想和推荐程序。在这篇文章中,我们将讨论在react中开发自定义钩子的一些最佳策略,并举例说明如何有效地应用它们。......