Content uploaded by Luis Bruno Pereira Nascimento
Author content
All content in this area was uploaded by Luis Bruno Pereira Nascimento on Mar 09, 2020
Content may be subject to copyright.
Content uploaded by Luis Bruno Pereira Nascimento
Author content
All content in this area was uploaded by Luis Bruno Pereira Nascimento on Mar 09, 2020
Content may be subject to copyright.
Cap´
ıtulo
3
Introduc¸ ˜
ao ao V-REP: Uma Plataforma Virtual
para Simulac¸ ˜
ao de Robˆ
os
Lu´
ıs B. P. Nascimento, Diego S. Pereira, Vitor G. Santos,
Daniel H. S. Fernandes, Pablo J. Alsina
Abstract
Practical experiments in robotics are usually difficult task to perform, since many robots
are reasonably expensive devices. Thus, a plausible solution is to use simulator to
test if the developed system works satisfactorily. In this sense, the Virtual Robot
Experimentation Platform (V-REP) is an interesting tool that enables to model robots and
perform simulations in a simple and intuitive way, focused in robotics areas such as path
planning, mapping, controls, among others. Thus, this chapter presents an introductory
course about V-REP, focusing on basic concepts of the plataform and some simulation
examples.
Resumo
A realizac¸ ˜
ao de experimentos pr´
aticos na rob´
otica nem sempre ´
e trivial devido aos altos
custos nessa ´
area, por´
em, ´
e comum a utilizac¸ ˜
ao de simuladores para possibilitar a
realizac¸ ˜
ao de experimentos. A Plataforma Virtual para Experimentac¸ ˜
ao Rob´
otica (Virtual
Robot Experimentation Platform - V-REP) ´
e uma interessante ferramenta que viabiliza a
modelagem de rob ˆ
os, assim como a realizac¸ ˜
ao de experimentos simulados de maneira
simples e did´
atica, podendo atuar em ´
areas da rob ´
otica como planejamento de caminho,
mapeamento, controle, dentre outras. Dessa forma, este cap´
ıtulo apresenta uma vis˜
ao
introdut´
oria sobre a plataforma V-REP apresentando conceitos b´
asicos da ferramenta,
assim como alguns exemplos de simulac¸ ˜
oes.
3.1. Introduc¸ ˜
ao
O aumento exponencial do poder de processamento dos computadores combinado com
o vasto crescimento de pesquisas na ´
area de rob´
otica n˜
ao s´
o estimulou, como tamb´
em
tornou vi´
avel a utilizac¸ ˜
ao de simuladores capazes de reproduzir com qualidade cen´
arios
2D/3D. Al´
em disso, os simuladores tornam poss´
ıvel a realizac¸ ˜
ao de experimentos em
tempo real permitindo ao pesquisador avanc¸ar mais rapidamente com seus resultados e,
inicialmente, ter independˆ
encia da utilizac¸ ˜
ao do robˆ
o real (hardware) que, em muitos
casos, ´
e um dos componentes mais onerosos do cen´
ario em estudo.
Atualmente, existem diversas plataformas de simulac¸˜
ao rob´
otica dispon´
ıveis
no mercado, tais como o Open HRP, Gazebo, Webots, V-REP, entre outras
[Rohmer et al. 2013]. Contudo, a Plataforma Virtual de Experimentac¸˜
ao Rob´
otica
(Virtual Robot Experimentation Platform), tratada na literatura apenas como V-REP 1,
destaca-se por se tratar de uma ferramenta f´
acil e did´
atica, o que atrai usu´
arios com pouco
ou sem conhecimentos na ´
area de rob´
otica.
A plataforma V-REP busca atender todos os requisitos de uma estrutura de
simulac¸ ˜
ao vers´
atil e escal´
avel que, al´
em de oferecer abordagens tradicionais, j´
a
encontradas em outros simuladores, possui itens adicionais, pois com uma arquitetura
de controle distribu´
ıda, cada objeto/modelo V-REP pode ser controlado individualmente
atrav´
es de um script, um plugin, uma API cliente remota, entre outras soluc¸ ˜
oes
[Rohmer et al. 2013].
´
E poss´
ıvel encontrar diversos trabalhos que fizeram uso desta plataforma, entre
eles o trabalho de [Obdrˇ
z´
alek 2017] apresenta uma estrat´
egia para utilizar um sistema
multi-agente formado por Ve´
ıculos A´
ereos N˜
ao Tripulados (VANTs), enquanto o trabalho
de [Knoll et al. 2017] prop ˜
oe um esquema de navegac¸˜
ao para robˆ
os terrestres usando um
conjunto de sensores de r´
adio frequˆ
encia. Em [Tanberk and T ¨
ukel 2017], o simulador
´
e utilizado para efetuar testes com um robˆ
o capaz de interpretar dados oriundos de
um sensor Kinect na tomada de decis˜
ao para movimentac¸ ˜
ao de pec¸as em um jogo de
xadrez. Finalmente, o trabalho de [Lima et al. 2018] apresenta a utilizac¸ ˜
ao da V-REP
para auxiliar no processo de aprendizagem de rob´
otica como uma ferramenta educacional.
Isso ´
e poss´
ıvel grac¸as `
a sua vers˜
ao educacional (V-REP PRO EDU) disponibilizada
gratuitamente.
Diante disso, percebe-se a versatilidade do simulador em atuar com diferentes
plataformas rob´
oticas e em diversas aplicac¸ ˜
oes, isso permite aos pesquisadores, alunos
e professores validarem suas ideias, seja para a obtenc¸˜
ao de resultados iniciais em
pesquisas utilizando ambientes simulados, ou como ferramenta educacional para o
ensino-aprendizagem de conceitos dentro da rob´
otica. Nesse sentido, esse cap´
ıtulo
apresenta uma vis˜
ao introdut´
oria da plataforma V-REP a fim de destacar algumas
caracter´
ısticas e funcionalidades interessantes, al´
em de descrever como prototipar um
robˆ
o terrestres utilizando os pr´
oprios objetos dispon´
ıveis na plataforma.
3.2. Virtual Robot Experimentation Platform (V-REP)
Desenvolvido pela Coppelia Robotics, o simulador rob´
otico V-REP possui um ambiente
de desenvolvimento integrado e baseia-se em uma arquitetura distribu´
ıda onde cada
objeto/modelo pode ser controlado individualmente atrav´
es de um script, um plugin, um
n´
o ROS (Robot Operating System), um cliente de uma API (Application Programming
Interface) remota ou uma soluc¸ ˜
ao personalizada. Tais itens tornam este simulador vers ´
atil
1Site oficial do V-REP: http://www.coppeliarobotics.com/
e ideal para diversas aplicac¸ ˜
oes. Os controladores podem ser escritos em C/C++, Python,
Java, Lua, Matlab ou Octave. A vers˜
ao atual da V-REP ´
e a 3.6.2, disponibilizada em 25
de junho de 2019 [Robotics 2019].
3.2.1. Onde encontrar o simulador V-REP?
A plataforma de simulac¸ ˜
ao V-REP est´
a dispon´
ıvel para diversos sistemas
operacionais. O software est´
a dispon´
ıvel para download atrav´
es do link
(http://www.coppeliarobotics.com/downloads.html). A Figura 3.1 mostra as vers ˜
oes do
software dispon´
ıveis para download.
Figura 3.1. P ´
agina de download do V-REP.
No site do V-REP est˜
ao dispon´
ıveis trˆ
es vers˜
oes do software (Pro EDU, Pro e
Player) para Windows, Mac e Sistemas Linux. A primeira (Pro EDU) ´
e uma vers˜
ao
gratuita, dispon´
ıvel para fins educacionais (essa ´
e a vers˜
ao que utilizaremos em todos os
exemplos). A segunda vers˜
ao mostrada ´
e a vers˜
ao Pro, dispon´
ıvel para fins comerciais,
sendo necess´
aria a aquisic¸ ˜
ao de uma licenc¸a de software. A terceira vers˜
ao (V-REP
Player) ´
e uma ferramenta utilizada para reproduzir e interagir com simulac¸ ˜
oes.
3.2.2. Interface do Usu´
ario
A interface de usu´
ario do simulador V-REP ´
e composta por um conjunto de elementos. Os
principais elementos s˜
ao: o terminal, a janela de aplicac¸ ˜
ao e dialogs (caixas de di´
alogo).
O primeiro deles, o terminal, ´
e ocultado quando iniciado em ambiente Windows. Nas
demais plataformas, Linux e Mac, ´
e poss´
ıvel acompanhar a inicializac¸ ˜
ao da plataforma
de simulac¸ ˜
ao, o carregamento de plugins, dentre outras informac¸ ˜
oes, inclusive mostra
se o sistema foi inicializado de forma correta. Este cap´
ıtulo n˜
ao ir´
a apresentar maiores
detalhes para iterac¸ ˜
ao com o terminal.
A janela de aplicac¸ ˜
ao ou janela principal (interface gr´
afica) do simulador V-
REP agrupa a grande maioria das funcionalidades do simulador e, atrav´
es dela, ´
e
poss´
ıvel exibir, editar, simular e interagir com uma cena. O usu´
ario tamb´
em pode
editar e interagir com uma cena ajustando as configurac¸ ˜
oes ou parˆ
ametros presentes
em uma caixa de di´
alogo. Cada caixa de di´
alogo agrupa um conjunto de func¸ ˜
oes
relacionadas ou func¸ ˜
oes que se aplicam a um mesmo objeto de destino. O conte´
udo de um
di´
alogo pode ser sens´
ıvel ao contexto (por exemplo, dependente do estado de selec¸˜
ao do
objeto)[Robotics 2019]. A Figura 3.2 retrata o ambiente da janela principal do simulador
V-REP.
Figura 3.2. Exemplo da interface V-REP com diversos tipos de robˆ
os.
De forma geral, o simulador V-REP possui uma interface gr´
afica agrad´
avel e
intuitiva formada por menus, barras de ferramentas e dialogs que permitem ao usu´
ario
inserir, remover, movimentar, editar objetos de forma simples, fazendo uso apenas do
mouse. No canto esquerdo da imagem ´
e poss´
ıvel observar o navegador de modelos
(Model Browser). A partir desse navegador ´
e poss´
ıvel encontrar diversos modelos de
robˆ
os j´
a prontos para ser utilizados em simulac¸ ˜
oes. No V-REP, os robˆ
os dispon´
ıveis
est˜
ao divididos em m´
oveis e n˜
ao-m´
oveis, sendo poss´
ıvel adicion´
a-los `
a cena arrastando e
soltando (drag-and-drop). O navegador de modelos com alguns robˆ
os pode ser observado
na Figura 3.7.
Como comentado anteriormente, outros elementos importantes que facilitam
a criac¸ ˜
ao de simulac¸ ˜
oes e que est˜
ao presentes na interface principal do V-REP s˜
ao
Figura 3.3. Exemplo da interface V-REP com diversos tipos de robˆ
os.
as barras de ferramentas. Nelas ´
e poss´
ıvel encontrar bot˜
oes com func¸ ˜
oes ´
uteis que
tornam o manuseio do simulador mais simples, j´
a que as funcionalidades presentes
nas barras est˜
ao contidas dentro de menus internos, o que tornaria mais dif´
ıcil tarefas
b´
asicas que necessitem ser realizadas, tais como, mudanc¸a na angulac¸ ˜
ao da cˆ
amera
ou reposicionamento de objetos dentro de cena. A Figura 3.4 mostra duas barras de
ferramentas contendo alguns bot˜
oes com as funcionalidades mais ´
uteis.
Figura 3.4. Algumas func¸ ˜
oes encontradas nas barras de ferramentas do V-REP.
A Figura 3.4 mostra duas barras de ferramentas contendo algumas func¸ ˜
oes
importantes para a criac¸ ˜
ao de simulac¸ ˜
oes no V-REP. Na barra de ferramentas 1 ´
e poss´
ıvel
encontrar algumas func¸ ˜
oes diretamente relacionadas `
as simulac¸ ˜
oes, como seguem:
1. Navegac¸˜
ao da cˆ
amera
2. Selec¸ ˜
ao por clique
3. Manipulac¸ ˜
ao de objetos (translac¸ ˜
ao e rotac¸ ˜
ao)
4. Bot˜
oes de simulac¸ ˜
ao (iniciar, pausar e parar)
5. Simulac¸ ˜
ao em tempo real
6. Controle de velocidade das simulac¸ ˜
oes.
A barra de ferramentas 2 apresenta algumas funcionalidades mais avanc¸adas,
assim como algumas configurac¸ ˜
oes, como podem ser listadas a seguir:
7. Configurac¸ ˜
oes da simulac¸ ˜
ao
8. Propriedade do objeto selecionado
9. M´
odulo de c´
alculos (ex: distˆ
ancias)
10. Colec¸ ˜
oes
11. Scripts
12. Editor de formas
13. Editor de caminhos selecionados
14. Objetos Selecionados
15. Navegador de Modelos
16. Hierarquia de cena
17. Camadas
18. Gravador de v´
ıdeos
19. Configurac¸ ˜
oes do usu´
ario
´
E poss´
ıvel ver com detalhes a func¸ ˜
ao de cada item no Manual do Usu´
ario
dispon´
ıvel na p´
agina oficial do V-REP (http://www.coppeliarobotics.com/helpFiles/).
Al´
em disso, alguns robˆ
os, tais como o IRB140 e o Asti, possuem uma interface pr´
opria
que permite ao usu´
arios enviar informac¸ ˜
oes aos robˆ
os e interagir com o cen´
ario em tempo
de execuc¸ ˜
ao durante uma simulac¸ ˜
ao.
Conforme mostrado, uma simulac¸ ˜
ao V-REP pode ser iniciada, pausada ou
encerrada atrav´
es de bot˜
oes na barra de menu. Internamente, o simulador gerencia
estados intermedi´
arios adicionais necess´
arios para informar a scripts ou programas o que
ocorrer´
a a seguir, contudo, isto ´
e transparente para o usu´
ario. Vale destacar que existe uma
preocupac¸ ˜
ao do simulador em manter o tempo de simulac¸ ˜
ao sincronizado com o tempo
real, entretanto, em alguns casos isto n˜
ao ´
e poss´
ıvel devido a complexidade da simulac¸˜
ao,
dos recursos computacionais dispon´
ıveis e das pr´
oprias configurac¸ ˜
oes atribu´
ıdas pelo
usu´
ario. ´
E poss´
ıvel observar na Figura 3.5 que s˜
ao exibidas diversas informac¸ ˜
oes durante
o processo de simulac¸ ˜
ao. Elas referem-se as pr ´
oprias configurac¸ ˜
oes atribu´
ıdas a cena,
como tamb´
em aos objetos presentes nela.
Figura 3.5. Informac¸ ˜
oes da Cena em execuc¸ ˜
ao no V-REP.
3.2.3. Cenas e Modelos
Cenas e modelos s˜
ao os principais elementos de simulac¸ ˜
ao V-REP. Um modelo ´
e um
sub-elemento de uma cena e uma cena pode conter v´
arios modelos. Um modelo s´
o
pode ser executado quando inclu´
ıdo em uma cena, o Asti, robˆ
o humanoide de cor branca
apresentado anteriormente, ´
e um exemplo de modelo. A plataforma V-REP permite que
pesquisadores desenvolvam modelos e importem para seu ambiente de simulac¸ ˜
ao.
Todos os itens que comp ˜
oe uma cena est˜
ao organizados de forma hier´
arquica,
compondo a hierarquia de cena (scene hierarchy). A hierarquia da cena, apresentada
na Figura 3.6, exibe o conte´
udo de uma cena, ou seja, todos os objetos presentes na
respectiva cena. Essa hierarquia ´
e feita em uma estrutura de ´
arvore e representa a relac¸ ˜
ao
pai-fiho entre todos os objetos. No exemplo a seguir, a cena com nome new scene possui
um modelo Quadric´
optero adicionado. ´
E poss´
ıvel observar na Figura que ele est´
a em
um n´
ıvel inferior ao objeto new scene, logo ´
e chamado n´
o filho. De forma an´
aloga,
os objetos Quadricopter floorCamera e Quadricopter frontCamera s˜
ao n´
os filhos do n´
o
Quadricopter, que ´
e seu respectivo n´
o pai.
Figura 3.6. Exemplo de Hierarquia de Cena no V-REP.
3.2.4. Objetos de Cena
No simulador V-REP existem diversos elementos dos quais ´
e poss´
ıvel construir uma
cena de simulac¸ ˜
ao, s˜
ao os chamados Objetos de Cena (scene objects). Esses objetos
s˜
ao vis´
ıveis e possuem uma representac¸ ˜
ao em trˆ
es dimens˜
oes. Al´
em disso, possuem
papeis fundamentais para garantir a qualidade da simulac¸ ˜
ao. Os principais objetos s˜
ao
apresentados a seguir:
•Shapes: S˜
ao as formas b´
asicas encontradas no V-REP, como por exemplo, cubo,
cilindros, esferas, etc.
•Joints: S˜
ao objetos utilizadas para a modelagem de robˆ
os para prover movimento,
ex: junta rotacional, junta prism´
atica, etc.
•Graphs: S˜
ao gr´
aficos utilizados para visualizar e gravar dados durante as
simulac¸ ˜
oes.
•Sensores: Objetos utilizados para percepc¸ ˜
ao do ambiente (Sensores de
proximidade, Sensores de Vis˜
ao e Sensores de Forc¸a)
•Path: Esse objeto define caminhos ou trajet´
orias no espac¸o.
Para a adic¸ ˜
ao de objetos ao cen´
ario, basta ir ao menu Add da barra de menus
e escolher qual objeto, ou simplesmente, clicar com o bot˜
ao esquerdo do mouse sob o
cen´
ario e selecionar Add. A Figura 3.7 mostra alguns objetos adicionados `
a cena: Trˆ
es
formas primitivas (Esfera, Cubo e um Cilindro) e um objeto Graph.
Figura 3.7. Objetos em cena. Algumas formas primitivas adicionadas ao cen´
ario.
Os objetos do tipo shapes s˜
ao formas que possibilitam a modelagem de outros
elementos na cena, como por exemplo, paredes, obst´
aculos, partes de rob ˆ
os, e etc.
Na Sec¸ ˜
ao 3.5 ser˜
ao apresentados alguns passos para a construc¸ ˜
ao de um simples robˆ
o
utilizando alguns objetos de cena b´
asicos.
3.2.5. Exerc´
ıcio 01
O cen´
ario a seguir tem como objetivo apresentar uma primeira simulac¸˜
ao com uso
da plataforma V-REP. Para tal, ser ´
a feito uso de um robˆ
o modelo Pionner P3DX, j´
a
disponibilizado pelo V-REP, sem a necessidade de nenhuma configurac¸ ˜
ao adicional. Ser´
a
constru´
ıda uma barreira impedindo que o robˆ
o saia do cen´
ario. Dessa maneira, os
seguintes passos devem resultar no cen´
ario descrito.
PASSO 01: Criar uma nova cena;
PASSO 02: Inserir um robˆ
oPioneer P3DX ao cen´
ario criado. ;
PASSO 03: Inserir quatro resizable concret blocks e redimensona-los por meio do
costumizador do bloco, de tal maneira que o espac¸o de navegac¸˜
ao que o robˆ
o est´
a inserido
seja limitado;
Figura 3.8. Selecionando o resizable concret block.
PASSO 04: Finalmente, execute a simulac¸ ˜
ao e observe o comportamento do
robˆ
o. A Figura 3.9 retrata o rob ˆ
o P3DX j´
a inserido no espac¸o de trabalho adequadamente
limitado pelos blocos para restringir sua ´
area de circulac¸ ˜
ao.
Figura 3.9. Exerc´ıcio 01 em execuc¸ ˜
ao.
QUESTIONAMENTO 01: Qual a estrat´
egia utilizada pelo robˆ
o para evitar colis˜
oes?
Onde ´
e poss´
ıvel encontr´
a-la?
3.3. Scripts
Um script ´
e considerado uma entidade utilizada para controlar um modelo. O V-
REP possui um interpretador de scripts integrado onde, por padr˜
ao, a linguagem de
programac¸ ˜
ao suportada ´
e Lua2. A linguaguem Lua permite programac¸ ˜
ao procedural,
programac¸ ˜
ao orientada a objetos, programac¸ ˜
ao funcional, programac¸ ˜
ao orientada a dados
e descric¸ ˜
ao de dados. Ela ´
e considerada uma linguagem ideal para configurac¸ ˜
ao,
automac¸ ˜
ao e r´
apida prototipagem, amplamente utilizada em aplicac¸ ˜
oes industriais, como
o Adobe’s Photoshop Lightroom, e jogos, por exemplo, World of Warcraft e Angry Birds.
3.3.1. Exerc´
ıcio 02 - Codificando um robˆ
o com linguagem Lua
O objetivo desse cen´
ario ´
e realizar um exemplo pr´
atico para demonstrar como os objetos
do ambiente de simulac¸ ˜
ao V-REP s˜
ao controlados por um script escrito na linguagem de
programac¸ ˜
ao Lua. O ponto de partida desse exerc´
ıcio ´
e a conclus˜
ao do Exerc´
ıcio 01.
PASSO 01: Abra o arquivo referente ao Exerc´
ıcio 01;
2https://www.lua.org/home.html
PASSO 02: V´
a at´
e a Hierarquia de Cena, selecione o robˆ
o Pioneer P3DX e dˆ
e
dois cliques no ´
ıcone script, localizado ao lado direito do nome Pioneer p3dx, conforme
Figura 3.10;
Figura 3.10. ´
Icone Script vinculado ao modelo Pioneer P3Dx.
PASSO 03: Apague todo o c´
odigo fonte encontrado na janela e insira o c´
odigo
Lua apresentado seguir. Tenha atenc¸˜
ao na identac¸ ˜
ao e na escrita do script;
1if (sim_call_type==sim.syscb_init) then
2motorLeft=sim.getObjectHandle("Pioneer_p3dx_leftMotor")
3motorRight=sim.getObjectHandle("Pioneer_p3dx_rightMotor")
4end
5
6if (sim_call_type==sim.syscb_actuation) then
7sim.setJointTargetVelocity(motorLeft,1)
8sim.setJointTargetVelocity(motorRight,2)
9end
Script 3.1. Acionando os motores do rob ˆ
o Pioneer em Lua
PASSO 04: Confira se seu script est´
a conforme a imagem 3.11. Em caso positivo,
execute a simulac¸ ˜
ao e observe o comportamento do robˆ
o.
QUESTIONAMENTO 02: Como ´
e poss´
ıvel justificar o comportamento do robˆ
o
tomando como base no c´
odigo fonte utilizado para controla-lo? Qual a soluc¸˜
ao para o
movimento que o robˆ
o executa ser no sentido hor´
ario?
3.4. Cliente de API Remota
A plataforma de simulac¸ ˜
ao V-REP trata-se de uma ferramenta altamente flex´
ıvel,
sendo poss´
ıvel personalizar v´
arios aspectos de uma simulac¸ ˜
ao. Um dos itens que
est´
a diretamente relacionado a tal caracter´
ıstica ´
e a utilizac¸ ˜
ao de APIs. Por meio de
determinadas APIs, ´
e poss´
ıvel controlar e manipular aspectos da cena ou objetos a partir
de diferentes maneiras, tais como, por meio de scripts ou de plugins. Uma interessante
API que pode ser utilizada pelo simulador V-REP ´
e a API Remota, que torna poss´
ıvel
Figura 3.11. Script Lua conclu´ıdo.
a comunicac¸ ˜
ao do V-REP em tempo de execuc¸ ˜
ao, com diferentes tecnologias externas,
al´
em de tornar poss´
ıvel controle de robˆ
os de maneira remota.
A API remota ´
e composta por cerca de 100 func¸ ˜
oes espec´
ıficas e uma func¸ ˜
ao
gen´
erica que pode ser chamada a partir da aplicac¸ ˜
ao cliente desenvolvida na linguagem
escolhida pelo desenvolvedor. Essas func¸ ˜
oes remotas interagem com o V-REP atrav´
es
de soquetes de comunicac¸ ˜
ao. Para cada cliente que realiza comunicac¸ ˜
ao com o servidor
V-REP, um identificador ´
e atribu´
ıdo. Todas as func¸ ˜
oes das APIs suportadas pelo V-REP
est˜
ao dispon´
ıveis online, como por exemplo, as func¸ ˜
oes para utilizac¸ ˜
ao em conjunto com
o Python est˜
ao dispon´
ıveis no link 3.
A Figura 3.12 ilustra um cen´
ario t´
ıpico de comunicac¸ ˜
ao via API remota utilizando
linguagens de programac¸ ˜
ao distintas. Neste caso, a partir do momento que o servidor
V-REP tem sua simulac¸ ˜
ao iniciada um ponto de comunicac¸ ˜
ao ´
e criado atrav´
es do
enderec¸o ip:A.A.A.A e porta 19999, enquanto os clientes, normalmente, fazem uso de
configurac¸ ˜
oes dinˆ
amicas, das quais o ip ´
e atribu´
ıdo atrav´
es de um servic¸o de rede a qual
o cliente est´
a conectado e a porta pelo sistema operacional nativo.
3.4.1. Exerc´
ıcio 03 - Utilizando uma API Remota
Com base no cen´
ario dos exerc´
ıcios anteriores, faremos uma pequena modificac¸ ˜
ao com o
objetivo de controlar o robˆ
o de maneira remota atrav´
es de um script em linguagem Python.
Para possibilitar essa comunicac¸ ˜
ao, ´
e necess´
ario adicionar uma linha de c´
odigo ao script
principal para inicializar o servidor V-REP e permitir a chamada de clientes remotos. A
linha de c´
odigo que segue abaixo habilita o servidor no V-REP e deve ser adicionada na
func¸ ˜
ao sysCall init(), como mostra a Figura 3.13.
1simRemoteApi.start(19999)
Al´
em de modificar o script principal da cena, uma modificac¸ ˜
ao no script do robˆ
o
deve ser realizada para impedir que o c´
odigo original seja executado ao inv´
es do c´
odigo
remoto. Dessa forma, sugere-se apagar todo o conte ´
udo do script atribu´
ıdo ao robˆ
o. Uma
outra forma ´
e acessar o bot˜
ao Scripts na barra de ferramentas e desabilitar o script do
robˆ
o.
3http://www.coppeliarobotics.com/helpFiles/en/remoteApiFunctionsPython.htm
Figura 3.12. Comunicac¸ ˜
ao t´ıpica utilizando API remota e V-REP.
Figura 3.13. Arquivo com o script em Python e arquivos da API Remota.
´
E importante ressaltar que cada cliente deve fazer da API para determinada
tecnologia (Matlab, Python, Java, etc) e para seu sistema operacional (arquivos
remoteAPI.so, remoteApi.dll e remoteApi.dylib para Linux, Windows e Mac,
respectivamente). Isso ´
e feito por meio da adic¸ ˜
ao de arquivos de configurac¸˜
ao dentro
do mesmo diret´
orio do programa respons´
avel em fazer as chamadas as servidor V-REP.
As APIs para cada tecnologia est˜
ao dispon´
ıveis dentro do diret´
orio de instalac¸ ˜
ao do V-
REP, na pasta /programming/remoteApiBlidings/. Nosso exemplo foi realizado no Linux
e o nome do arquivo do nosso script ´
e testePython.py. A Figura 3.14 mostra os arquivos
necess´
arios para essa simulac¸ ˜
ao.
Figura 3.14. Arquivo com o script em Python e arquivos da API Remota.
O script abaixo deve ser adicionado ao arquivo testePython.py para inicializar a
conex˜
ao com o servidor e acionar os motores. O valor da vari´
avel clientID indica se a
comunicac¸ ˜
ao com o servidor est´
a de fato ocorrendo. A func¸˜
ao simxGetObjectHandle()
obt´
em uma referˆ
encia de um objeto dentro do simulador, por isso ´
e importante que o
segundo parˆ
ametro represente o nome exato do objeto referente ao simulador. O terceiro
parˆ
ametro est´
a relacionado ao modo como a troca de mensagens ente cliente e servidor
ocorre, ent˜
ao ´
e recomendado seguir estritamente o parˆ
ametro indicado na documentac¸ ˜
ao.
Por fim, a func¸ ˜
ao simxSetJointTargetVelocity() deve indicar a velocidade e a ser aplicada
e roda que receber´
a o sinal.
1import vrep
2import time
3
4clientID = vrep.simxStart(’127.0.0.1’,19999,True,True,5000,5)
5
6if (clientID == 0):
7print(’Conectado!’)
8
9returnC, LwMotor = vrep.simxGetObjectHandle(clientID,’
Pioneer_p3dx_leftMotor’,vrep.simx_opmode_oneshot_wait)
10 returnC, RwMotor = vrep.simxGetObjectHandle(clientID,’
Pioneer_p3dx_rightMotor’,vrep.simx_opmode_oneshot_wait)
11 vrep.simxSetJointTargetVelocity(clientID,LwMotor,1,vrep.
simx_opmode_streaming)
12 vrep.simxSetJointTargetVelocity(clientID,RwMotor,1,vrep.
simx_opmode_streaming)
13
14 time.sleep(1)
Script 3.2. Acionando os motores do rob ˆ
o Pioneer em Python
No instante em que o c´
odigo do cliente ´
e executado o cen´
ario passa fazer uso das
chamadas remotas e atender as requisic¸ ˜
oes que lhe s˜
ao feitas, sendo assim, o robˆ
o deve
acionar as rodas e seguir em linha reta.
3.5. Construindo meu primeiro robˆ
o
O´
ultimo conte´
udo a ser apresentado neste cap´
ıtulo ser´
a um breve exemplo para a
modelagem um robˆ
o m´
ovel simples. Para isso, inicialmente deve-se criar uma nova
cena. Alguns passos devem ser seguidos para a modegem desse robˆ
o como podem ser
observados nos itens abaixo:
•Passo 1 - Criac¸ ˜
ao do Corpo do Robˆ
o
1. Add (bot˜
ao direto do mouse) →Primitive Shape →Cuboid
2. Dimens˜
ao: (x = 0.4, y = 0.2, z = 0.1)
3. Nos bot˜
oes localizados na barra de ferramentas (item 3 na Figura 3.4):
–Posic¸ ˜
ao: (x = 0, y = 0, z = 0.1)
–Orientac¸ ˜
ao: (Alpha = 0, Gamma = 0, Beta = 0)
4. Renomeie o Cuboid como Carro
5. Em Scene Object Properties (item 8 na Figura 3.4) →Common, Marcar as
opc¸ ˜
oes Collidable, Measurable, Detectable e Renderable.
Figura 3.15. Resultado referente ao Passo 1.
•Passo 2 - Criac¸ ˜
ao da Roda Direita
1. Add →Primitive Shape →Cylinder
2. Dimens˜
ao: (x = 0.125, z = 0.01)
3. Posic¸ ˜
ao: (x = -0.1, y = -0.105, z = 0.0625)
4. Orientac¸ ˜
ao: (Alpha = -90, Gamma = 0, Beta = 0)
5. Renomeie Cylinder como Roda Direita
6. Em Scene Object Properties →Common, Marcar as opc¸ ˜
oes Collidable,
Measurable, Detectable e Renderable
•Passo 3 - Criac¸ ˜
ao da Roda Esquerda
1. Add →Primitive Shape →Cylinder
2. Dimens˜
ao: (x = 0.125, z = 0.01)
3. Posic¸ ˜
ao: (x = -0.1, y = 0.105, z = 0.0625)
4. Orientac¸ ˜
ao: (Alpha = -90, Gamma = 0, Beta = 0)
5. Renomeie Cylinder como Roda Esquerda
6. Em Scene Object Properties →Common, Marcar as opc¸ ˜
oes Collidable,
Measurable, Detectable e Renderable
•Passo 4 - Criac¸ ˜
ao da Roda Boba
1. Add →Primitive Shape →Sphere
2. Dimens˜
ao: (x = 0.05)
3. Posic¸ ˜
ao: (x = 0.15, y = 0, z = 0.025)
4. Orientac¸ ˜
ao: (Alpha = 0, Gamma = 0, Beta = 0)
5. Renomeie Sphere como Roda Boba
6. Em Scene Object Properties →Common, Marcar as opc¸ ˜
oes Collidable,
Measurable, Detectable e Renderable
Figura 3.16. Resultado referente ao Passos 2 a 4.
•Passo 5 - Adicionando o conector da roda boba
1. Add →Force Sensor
2. Posic¸ ˜
ao: (x = 0.15, y = 0, z = 0.05)
3. Renomeie para Conector
•Passo 6 - Criac¸ ˜
ao Motor Direito
1. Add →Joint →Revolute
2. Posic¸ ˜
ao: (x = -0.1, y = -0.105, z = 0.0625)
3. Orientac¸ ˜
ao: (Alpha = -90, Gamma = 0, Beta = 0)
4. Renomeie Joint como MotorDireito
•Passo 7 - Criac¸ ˜
ao Motor Esquerdo
1. Add →Joint →Revolute
2. Posic¸ ˜
ao: (x = -0.1, y = 0.105, z = 0.0625)
3. Orientac¸ ˜
ao: (Alpha = -90, Gamma = 0, Beta = 0)
4. Renomeie Joint como MotorEsquerdo
•Passo 8 - Habilitar motores
1. Selecione os dois motores
2. Em Scene Object Properties →Show dynamic properties dialog, selecione as
opc¸ ˜
oes Motor Enabled eLock motor when target velocity is zero
•Passo 9 - Hierarquizar os componentes
1. Ponha o Conector, MotorDireito e MotorEsquerdo como filhas do Carro
2. Ponha RodaDireita como filha do MotorDireito
3. Ponha RodaEsquerda como filha do MotorEsquerdo
4. Ponha RodaBoba como filha do Conector
Figura 3.17. Resultado referente ao Passo 9.
•Passo 10 - Escondendo as juntas
1. Selecione o Conector, o MotorEsquerdo e o MotorDireito.
2. Scene Object Properties →Common
3. Em Camera visible layers, desmarque todos as caixas
4. Apply to selection
•Passo 11 - Movimentando o carro
1. Com o mouse sobre o objeto Carro na hierarquia de cena, clique com o bot˜
ao
direito Add →Associated schild Script →Non threaded
2. Adicione o c´
odigo conforme explicado na Sec¸ ˜
ao 3.3
3. Execute a simulac¸˜
ao
Figura 3.18. Rob ˆ
o montado executando.
3.6. Conclus˜
ao
Nesse cap´
ıtulo foi apresentado um conte´
udo introdut´
orio sobre a plataforma de simulac¸ ˜
ao
de robˆ
os V-REP. O software de simulac¸˜
ao foi descrito, assim como suas principais
ferramentas, demonstrando como realizar simulac¸ ˜
oes mais simples e at´
e mesmo criando
seu ambiente pr´
oprio modelo de simulac¸ ˜
ao.
A API remota apresentada ´
e uma interessante caracter´
ıstica dessa plataforma
pois, mesmo sem conhecimento na linguagem Lua, o usu´
ario poder´
a programar os robˆ
os
utilizando outras tecnologias que mais favorecer o seu conhecimento t´
ecnico.
Devido a facilidade do software, qualquer pessoa, mesmo sem um conhecimento
aprofundado em rob´
otica, poder´
a realizar simulac¸ ˜
oes. Al´
em disso, para alunos
de rob´
otica, profissionais e pesquisadores da ´
area que necessitam realizar testes
experimentais e n˜
ao possuem uma bancada completa com robˆ
os e sensores, a plataforma
ajuda a realizar os experimentos simulados a fim de validar sua metodologia num est´
agio
inicial.
Finalmente, V-REP ´
e uma plataforma para simulac¸ ˜
ao de robˆ
os completa, podendo
ser utilizada, inclusive, como ferramenta de base para disciplinas de Introduc¸ ˜
ao `
a rob´
otica
ou Sistemas rob´
oticos autˆ
onomos, por exemplo, por ser uma ferramenta ideal para colocar
em pr´
atica os conceitos abordados sobre rob´
otica.
3.7. Curr´
ıculo dos autores
Lu´
ıs Bruno Pereira do Nascimento possui Bacharelado em Ciˆ
encia da Computac¸ ˜
ao
pela Universidade Estadual do Piau´
ı (UESPI) e Mestrado em Engenharia El´
etrica e
de Computac¸ ˜
ao pela Universidade Federal do Cear´
a (UFC). Atualmente ´
e aluno de
doutorado pelo Programa de Engenharia El´
etrica e de Computac¸ ˜
ao (PPgEEC) pela
Universidade Federal do Rio Grande do Norte (UFRN). Suas ´
areas de interesse incluem
rob´
otica autˆ
onoma, otimizac¸ ˜
ao e aprendizado de m´
aquina.
Diego da Silva Pereira possui graduac¸˜
ao em Redes de Computadores pelo
Instituto Federal do Rio Grande do Norte (IFRN), Mestrado em Ciˆ
encia da Computac¸ ˜
ao
pela Universidade Estadual do Rio Grande do Norte (UERN) e est´
a em doutoramento
no Programa de P´
os-graduac¸ ˜
ao em Engenharia El´
etrica e de Computac¸ ˜
ao (PPgEEC) pela
UFRN. Atualmente ´
e professor no IFRN com pesquisas na ´
area de redes de comunicac¸ ˜
ao
sem fio aplicadas `
a sistemas rob´
oticos autˆ
onomos.
Vitor Gaboardi dos Santos possui graduac¸˜
ao em Engenharia El´
etrica na
Universidade Federal do Rio Grande do Norte (UFRN) com per´
ıodo sandu´
ıche na
University of Kansas (USA). Atualmente ´
e aluno de Mestrado no Programa de P´
os-
graduac¸ ˜
ao em Engenharia Mecatrˆ
onica pela UFRN com pesquisas relacionadas a vis˜
ao
computacional aplicada `
a rob´
otica assistiva.
Daniel Henrique Silva Fernandes possui Bacharelado em Engenharia
Mecatrˆ
onica e Bacharelado em Ciˆ
encias e Tecnologia pela Universidade Federal do
Rio Grande do Norte (UFRN). Atualmente ´
e aluno de Mestrado no Programa de P´
os-
graduac¸ ˜
ao em Engenharia Mecatrˆ
onica pela UFRN com pesquisas relacionadas a rob´
otica
assistiva e vis˜
ao computacional.
Pablo J. Alsina possui graduac¸ ˜
ao em Engenharia El´
etrica (1987), mestrado na
´
area de controle de motores de induc¸ ˜
ao (1991) e doutorado em Engenharia El´
etrica
com tema em controle de manipuladores rob´
oticos (1996), pela Universidade Federal da
Para´
ıba. Atualmente ´
e professor titular do Departamento de Engenharia de Computac¸ ˜
ao
e Automac¸ ˜
ao (DCA). ´
E professor nos Programas de P´
os-Graduac¸ ˜
ao em Engenharia
Mecatrˆ
onica (PPGEM) e em Engenharia El´
etrica e de Computac¸ ˜
ao (PPgEEC) da
Universidade Federal do Rio Grande do Norte (UFRN), onde ´
e chefe do Laborat´
orio
de Rob´
otica. Desenvolve pesquisas em rob´
otica, nas ´
areas de controle, planejamento
e percepc¸ ˜
ao rob´
otica, com aplicac¸ ˜
oes em rob´
otica assistiva, rob´
otica m´
ovel e Ve´
ıculos
A´
ereos N˜
ao Tripulados.
Referˆ
encias
[Knoll et al. 2017] Knoll, J., Hevrdejs, K., Malinowski, A., and Miah, S. (2017). Virtual
robot experiments for navigation in structured environments. In Industrial Electronics
(ISIE), 2017 IEEE 26th International Symposium on, pages 1173–1178. IEEE.
[Lima et al. 2018] Lima, A. T., de Oliveira, I. F., Rodrigues, G. B., Domingues, J. D.,
Rocha, F. A. S., and Freitas, G. M. (2018). Utilizac¸ ˜
ao do robot operating system (ros)
em conjunto com o simulador v-rep no ensino de rob´
otica. In Anais do XXII CBA, Jo˜
ao
Pessoa.
[Obdrˇ
z´
alek 2017] Obdrˇ
z´
alek, Z. (2017). Mobile agents in multi-agent uav/ugv system.
In Military Technologies (ICMT), 2017 International Conference on, pages 753–759.
IEEE.
[Robotics 2019] Robotics, C. (2019). V-rep: Virtual robot experimentation platform.
[Rohmer et al. 2013] Rohmer, E., Singh, S. P., and Freese, M. (2013). V-rep: A versatile
and scalable robot simulation framework. In Intelligent Robots and Systems (IROS),
2013 IEEE/RSJ International Conference on, pages 1321–1326. IEEE.
[Tanberk and T ¨
ukel 2017] Tanberk, S. and T ¨
ukel, D. B. (2017). Kinect controlled chess
playing robot. In Smart Technologies, IEEE EUROCON 2017-17th International
Conference on, pages 594–598. IEEE.