Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【V-REP自学笔记(一)】平台介绍和软件安装

【V-REP自学笔记(一)】平台介绍和软件安装

作者头像
博士的沙漏
发布于 2020-09-03 08:00:25
发布于 2020-09-03 08:00:25
3.9K0
举报
文章被收录于专栏:AI与机器人AI与机器人

导读

常用的机器人物理仿真软件有ROS/Gazebo、V-REP、Webots、Adams等,有的收费,有的开源,提供的功能也不同。V-REP是一个跨平台的机器人仿真软件,提供多种机器人模型和控制接口,便于开发者快速验证算法和低成本开发,主要特性包括:

  • 跨平台 (WindowsMacOSLinux);
  • 多种编程方法 (嵌入式脚本、插件、附加组件、ROS节点等);
  • 多种编程语言 (C/C++、PythonJava、Lua、Matlab、Octave等);
  • 超过400种不同的应用编程接口函数;
  • 100项ROS服务、30个发布类型、25个ROS订户类型、可拓展;
  • 4个物理引擎 (ODE,、Bullet,、Vortex、Newton);
  • 完整的运动学解算器 (对于任何机构的逆运动学和正运动学);
  • 嵌入图像处理的视觉传感器 (完全可拓展);
  • 数据记录与可视化 (时距图、X/Y图或三维曲线);
  • 支持水/气体喷射的动态颗粒仿真;

1. Gazebo上的机器人模型

因为研究和工作需要,我曾经花了许多时间研究Gazebo和ROS,包括使用Gazebo本身提供的C++接口进行模型的控制、使用Matlab通过ROS提供的通信接口与Gazebo通信来进行远程控制、使用Python通过ROS提供的通信接口与Gazebo通信来进行远程控制等。总的来说,Gazebo给我们提供了非常丰富的控制接口,自由度比较大,是一个值得学习的平台,但缺点也比较明显,只能在Linux系统下使用,入门的门槛比较高,当年也是学了好久才搞明白应该如何使用Gazebo软件做仿真。Gazebo在调试方面的功能不是很好,如果想要可视化数据得结合ROS提供的插件才可以,这方面我没有做太深入的研究,总的感觉就是这方面的接口不是很友好。

下面是我做研究过程中自己定义和设计的一个仿人双足机器人模型和一个Demo(有点简陋,请忽略模型的颜值)。我用它来仿真双足仿人机器人步行的过程,只实现了在Sagittal平面内的步行运动过程。这个模型的运动学模型的构建参考了Kajita教授编写的《仿人机器人》一书,步行过程的控制理论也是参考书中的有关倒立摆模型的内容和Capture Point理论等。

模型的构建过程中,首先自己设计好模型的尺寸、关节等信息,通过编写URDF文件一步一步搭建出来的,过程比较麻烦,也不直观。模型控制过程使用的是Gazebo提供的C++接口,使用C++语言编写的传感信息感知和运动控制代码。虽然后来也扩展了使用Python来进行远程控制,但是在使用的过程中发现,Gazebo的可视化以及数据观测、代码调试等做得不够人性化,以后有时间再分享基于Gazebo平台的模型搭建过程和控制代码开发过程。

附:《仿人机器人》一书的电子版下载地址,请扫码:

2. V-REP简介

V-REP(Virtual Robot Experimentation Platform)是一个跨平台的仿真软件(最新版本已经更名为CoppeliaSim,不过本教程还是用旧名称V-REP),在Windows和Linux下都可以很稳定的运行,而且软件体积较小。在官方的介绍中可以发现,其入门的门槛比较低,而且仿真软件原生提供大量的模型,并提供Demo程序和控制接口。VREP对用户友好很多,文档齐全,EDU版本也没有功能限制,同时还是跨平台的,所以初学者可以选择自己熟悉的平台上手,本文选择了Windows 10系统。下图是一些官方提供的机器人模型。

V-REP默认的开发语言是Lua,语法与C语言接近,所以有C/C++基础的读者是非常容易上手的。当然,我们也可以使用Java、Python、Matlab等语言进行开发。在后续的教程中我们将教大家如何一步一步通过代码来控制自己的机器人模型。放一个官方的宣传视频,更多视频请访问:https://www.coppeliarobotics.com/videos

4. V-REP的安装

本教程将基于Windows 10平台,使用V-REP的教育免费版(EDU版)进行学习和开发。EDU版本的V-REP可以直接从从官网下载:https://www.coppeliarobotics.com/downloads。

V-REP下载界面

注意,V-REP的最新版已经更名为CoppeliaSim,下载的时候要注意名称和选择Windows平台,选择点击进去以后,直接点击CoppeliaSim Edu, Installer就可以获取安装板的下载链接了,Binaries版本是免安装版,我没有使用这个版本。

下载完成后直接双击安装文件运行即可,可以自定义安装路径,与在Windows平台安装其他软件无异。

5. V-REP的简单使用

按照上述过程安装完成以后,双击打开软件进入首页,可以看到如下界面,与大多数三维软件类似,V-REP也包括了一些基本的物理环境:

V-REP软件首页

左边的菜单栏都是一些常用的平移、旋转等操作按钮,鼠标单击以后可以对模型进行平移和旋转等,与普通的三维软件并无而异,大家可以探索一下菜单栏,随便点。左边的Model browser就是V-REP官方提供给我们的机器人模型了,包含许多现成的机器人模型,可以选择对应的模型,鼠标单击直接拉入右边的仿真环境即可。

有了机器人模型以后左边的面板会显示一些机器人的基本组件,包括连杆和关节等,点击左边的条目时,仿真环境中的机器人会自动标注所点击的条目的位置,方便大家进行查看和调整。在菜单栏有几个按钮,可以点击菜单栏的按钮来运行V-REP内置的该机器人模型的Demo控制代码,大家可以尝试多个机器人模型,点击该运行按钮来尝试运行。

V-REP的机器人仿真运行界面

这里录制了一个使用YouBot机器人演示的Demo视频:

此外,双击机器人模型旁边的文件按钮可以打开该机器人模型的Demo控制代码,默认的控制代码是使用Lua语言编写的,用户可以方便地更改,并基于这些基础接口来开发自己的机器人控制代码。

V-REP的控制脚本

到此为止,V-REP的安装和基本使用就告一段落,更高级的用法将在后续其他教程中进行学习。

6. 定个小目标

最后,我们介绍一下这一系列自学笔记中,我们给自己定的一个小目标,完成一个Demo。我们的小目标是要使用官方提供的KUKA公司的YouBot机器人模型来实验机器人的感知和控制过程,控制机器人从A点抓取物品,然后移动到B点将物品放置在B点的工作台上,这其中就涉及到V-REP中的各种感知和控制过程,包括被抓取物品的感知、机械臂运动规划和控制、小车的路径规划和控制等。

后记

本文是自学笔记的第1篇,介绍了V-REP环境的安装和简单使用过程,更高级的用法将在后续的文章中逐步介绍,本项目涉及到的代码都将发布在Github上的V-REP-YouBot-Demo项目。作者知识有限,有不正确和不合理的地方还望读者能够指出来,大家共同学习和进步,不胜感激!

本项目Github地址:https://github.com/chauby/V-REP-YouBot-Demo.git

想要获取最新文章,欢迎关注公众号:博士的沙漏。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 博士的沙漏 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ceph 运维操作-OSD
OSD全称Object Storage Device,也就是负责响应客户端请求返回具体数据的进程。一个Ceph集群一般都有很多个OSD。
Lucien168
2020/07/20
1.8K0
SUSE Ceph 增加节点、减少节点、 删除OSD磁盘等操作 – Storage6
之前我们已快速部署好一套Ceph集群(3节点),现要测试在现有集群中在线方式增加节点
星哥玩云
2022/07/28
1.5K0
SUSE Ceph 增加节点、减少节点、 删除OSD磁盘等操作 – Storage6
ceph 运维常用命令总结
    cluster be1756f2-54f7-4d8f-8790-820c82721f17
DevinGeng
2019/04/09
5.7K0
外包技能--Ceph(L版)手动剔除osd与增加osd
Godev
2023/08/02
8560
Ceph CRUSH Map简介
CRUSH是ceph的核心设计之一,CRUSH算法通过简单计算就能确定数据的存储位置。因此ceph客户端无需经过传统查表的方式来获取数据的索引,进而根据索引来读写数据,只需通过crush算法计算后直接和对应的OSD交互进行数据读写。这样,ceph就避免了查表这种传统中心化架构存在的单点故障、性能瓶颈以及不易扩展的缺陷。
Xkrroeon
2022/09/07
1.9K0
Ceph: 关于Ceph 中创建和管理自定义 CRUSH Map的一些笔记整理
对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》
山河已无恙
2023/11/13
9420
Ceph: 关于Ceph 中创建和管理自定义 CRUSH Map的一些笔记整理
ceph分布式存储-管理crushmap
CRUSH 算法通过计算数据存储位置来确定如何存储和检索。 CRUSH 授权 Ceph 客户端直接连接 OSD ,而非通过一个中央服务器或代理。数据存储、检索算法的使用,使 Ceph 避免了单点故障、性能瓶颈、和伸缩的物理限制。
Lucien168
2020/07/20
1K0
ceph luminous 新功能之磁盘智能分组
本篇是luminous一个新功能介绍,关于磁盘智能分组的,这个在ceph里面叫crush class,这个我自己起名叫磁盘智能分组,因为这个实现的功能就是根据磁盘类型进行属性关联,然后进行分类,减少了很多的人为操作
用户2772802
2018/08/06
9870
ceph 运维操作-CRUSH MAP
CRUSH 算法通过计算数据存储位置来确定如何存储和检索。 CRUSH 授权 Ceph 客户端直接连接 OSD , 而非通过一个中央服务器或代理。数据存储、检索算法的使用,使 Ceph 避免了单点故障、性能瓶颈、和伸缩的物理限制。
Lucien168
2020/07/20
1.6K0
ceph 指定OSD创建pool
在我们的ceph集群中,可能不只有sata盘或者ssd盘,有些时候服务器上同时插了ssd和sata盘用作osd,那如果我们按照默认的crush分布规则,那会使所有pg均分在ssd和sata盘上,造成sata盘的存储空间浪费和整个ceph集群的性能浪费,其实我们可以改变ceph的默认存储规则,来使那些io要求较高的数据存储在由ssd的osd组成的存储池上,将备份数据或者时效性要求不高的数据存储在由sata的osd组成的存储池上,既提高了性能,又可以减少较大数据量存储的成本。
没有故事的陈师傅
2022/12/06
8480
ceph 指定OSD创建pool
Ceph集群常用命令参考
如果一个OSD处于up状态,那么它可以是在集群内,也可以是在集群外,如果之前的状态为 up 且 in,现在变成 up out了,那么ceph会把PG迁移到其他的OSD上。如果某个OSD的变成out了,则crush就不会再分配PG给它,如果状态为down,那么它的状态就会为out,默认在OSD down掉300s后标记它为out状态
dogfei
2020/07/31
9800
ceph osd full故障 原
资料(传送门)[http://bbs.ceph.org.cn/question/363]
domain0
2018/08/02
1.6K0
proxmox集群节点崩溃处理
在现有集群加入一个物理节点,接着再此节点创建ceph监视器、创建OSD。从宿主机系统执行ceph osd tree查看状态,创建起来的几个OSD状态都正常(up),从proxmox管理界面看也是这样。
全栈程序员站长
2022/06/29
1.5K0
proxmox集群节点崩溃处理
OpenStack 系列之Cinder multi backend
补充内容: 1.修改 crushmap 有两种方式:在线修改和离线修改 2.为了保险起见一般都是采用离线修改,也就是导出来修改 3.导出默认的 crushmap,这个是二进制文件打不开 ceph osd getcrushmap -o {compiled-crushmap-filename} 4.将刚才的二进制文件转换成可视化的文本文件 crushtool -d {compiled-crushmap-filename} -o {decompiled-crushmap-filename} 5.转换成可视化的文本文件之后,建议不要把默认的二进制文件删掉避免修改 crushmap 造成 ceph 集群瘫痪,这样我们还留了一个备份 6.修改 crushmap,也就是下面讲述的 crushmap 详解,根据实际情况修改 7.将刚才修改的可视化文本文件转换成二进制文件 crushtool -c {decompiled-crush-map-filename} -o {compiled-crush-map-filename} 8.设置 OSD 的 crushmap,也就是把刚才转换的二进制文件让他生效 ceph osd setcrushmap -i {compiled-crushmap-filename} 9.创建 ssd 和 sata 两个 pool ceph osd pool create ssd 128 ceph osd pool create sata 128 10.创建完 ssd 和 sata 两个 pool 之后更新下 cinder 密钥的权限 ceph auth caps client.cinder mon 'allow r'  osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rx pool=p_w_picpaths, allow rwx pool=ssd, allow rwx pool=sata'
DevinGeng
2019/04/09
8740
OpenStack 系列之Cinder multi backend
如何在单节点 Ceph 中配置多数据副本
在服务器资源不足,或者测试环境下,Ceph 通常只有一个节点,就算有多个服务器组成集群,往往存储服务器也往往只有一台,Ceph 的默认配置下,只能设置单数据备份,也就是说数据只存了一份,如果磁盘坏了,数据就丢了。虽然测试环境数据没那么重要,总保不齐就会有关键数据放在上面,所以还是要想办法在资源有限的条件下实现数据的高可用,另外这也是一个很好的进一步理解 Ceph 概念的好机会,接下来就让我们来看看是如何实现的吧。
用户2443625
2018/08/23
3K0
如何在单节点 Ceph 中配置多数据副本
由OSD class配置引发的PG异常状态修复
ceph版本12.2.8,一个PG卡在remapped状态,但是集群状态是OK的,为了修复这个remapped状态,才有了下面的操作。
用户1260683
2018/10/25
3.4K0
掉电后osdmap丢失无法启动osd的解决方案
本篇讲述的是一个比较极端的故障的恢复场景,在整个集群全部服务器突然掉电的时候,osd里面的osdmap可能会出现没刷到磁盘上的情况,这个时候osdmap的最新版本为空或者为没有这个文件
用户2772802
2018/08/06
1.2K0
Ceph 故障排查笔记 | 万字经验总结
删除当前 osd 的所有数据,并且重新加载 osd,此操作一定要保证有冗余可用的 osd,否则会造成整个 osd 数据损坏。
米开朗基杨
2021/05/11
8K0
Ceph 集群整体迁移方案
场景介绍:在我们的IDC中,存在着运行了3-6年的Ceph集群的服务器,这些服务器性能和容量等都已经无法满足当前业务的需求,在购入一批高性能机器后,希望将旧机器上的集群整体迁移到新机器上,当然,是保证业务不中断的前提下,再将旧机器下架回收。本文就介绍了一种实现业务不中断的数据迁移方案,并已经在多个生产环境执行。 本文的环境均为:Openstack+Ceph 运行虚拟机的场景,即主要使用RBD,不包含RGW,MDS。虚机的系统盘(Nova),云硬盘(Cinder),镜像盘(Glance)的块均保存在共享存储C
腾讯云TStack
2018/04/02
4.1K0
ceph运维常用指令
[root@node1 ~]# ceph-deploy purgedata node1
IT运维技术圈
2022/06/26
1.8K0
相关推荐
ceph 运维操作-OSD
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档