collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Simulador RobotBasic  (Lida 8116 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline Tayeb

  • Mini Robot
  • *
  • Mensagens: 710
Simulador RobotBasic
« em: 13 de Dezembro de 2009, 21:21 »
Olá membros e visitantes,

Hoje quero introduzir-vos ao simulador gratuito de robótica RobotBasic. Entusiasmei-me tanto com este simulador que mandei vir da Amazon livros sobre o mesmo.

O que é afinal RobotBasic?

RobotBasic é uma linguagem de programação poderosa cheia de comandos e funções. Uma boa quantidade desses comandos e funções são específicos para simular o funcionamento de um robô móvel. Existe também a possibilidade de controlar um robô físico com o mesmo programa da simulação.

A linguagem segue a sintaxe da saudosa linguagem BASIC pelo que a curva de aprendizagem é extremamente curta. Com um simulador deste tipo podemos testar ideias e novos algoritmos de uma forma fácil.

O seguinte código implementa a simulação de um robô que segue a parede esquerda da arena do concurso Robô Bombeiro. A maior parte do código é para construir a arena



Código: [Seleccione]
Código: Seleccionar Todos
//Variaveis globais

Ox = 150 //X do canto superior esquerdo da arena
Oy = 50 //Y do canto superior esquerdo da arena



//Cores dos diferentes elementos da arena
colorWall = Green
colorLine = White
colorStart = White
colorFloor = Black
colorCandleArea = White
colorCandle = Red
colorPen = Blue

//===========================================================
MainProgram:
   gosub DisplayInstructions
   gosub Arena
   gosub InitializeRobot
   gosub RobotControl
End
//===========================================================

InitializeRobot:

   rLocate Ox + 200, Oy + 45, 90 //Posição do robô
   rInvisible colorFloor, colorLine, colorStart, colorPen, colorCandleArea //Lista de cores invisiveis
   rPen Down, colorPen
   LineWidth 3
   rSlip 10
Return

//=============================================================

DisplayInstructions:
  data IM;"RB_Base.Bas"
  data IM;"Simulação do Robô Bombeiro."
  n = MsgBox(IM)
Return

//=============================================================

Arena:
  ClearScr Gray

  //Desenha o chão
  Rectangle Ox, Oy, Ox + 496, Oy + 496, colorFloor, colorFloor

  //Desenha as paredes exteriores
  Line Ox, Oy, Ox, Oy + 496, 3, colorWall //Left
  Line Ox, Oy, Ox + 496, Oy, 3, colorWall //Top
  Line Ox + 496, Oy, Ox + 496, Oy + 496, 3, colorWall //Right
  Line Ox, Oy + 496, Ox + 496, Oy + 496, 3, colorWall //Botom

  //Desenha 1º quarto
  Line Ox + 154, Oy, Ox + 154, Oy + 182, 3, colorWall
  Line Ox + 96, Oy + 182, Ox + 154, Oy + 182, 3, colorWall
  Line Ox + 3, Oy + 182, Ox + 93, Oy + 182, 3, colorLine //*** line ***

  //Desenha 2º quarto
  Line Ox, Oy + 274, Ox + 154, Oy + 274, 3, colorWall
  Line Ox + 154, Oy + 274, Ox + 154, Oy + 396, 3, colorWall
  Line Ox + 154, Oy + 399, Ox + 154, Oy + 493, 3, colorLine //*** line ***
 
  //Desenha 3º quarto
  Line Ox + 246, Oy + 314, Ox + 496, Oy + 314, 3, colorWall
  Line Ox + 246, Oy + 406, Ox + 246, Oy + 496, 3, colorWall
  Line Ox + 246, Oy + 317, Ox + 246, Oy + 403, 3, colorLine //*** line ***
   
  //Desenha 4º quarto
  Line Ox + 246, Oy + 92, Ox + 246, Oy + 214, 3, colorWall
  Line Ox + 246, Oy + 92, Ox + 398, Oy + 92, 3, colorWall
  Line Ox + 398, Oy + 92, Ox + 398, Oy + 214, 3, colorWall
  Line Ox + 398, Oy + 214, Ox + 342, Oy + 214, 3, colorWall
  Line Ox + 249, Oy + 214, Ox + 339, Oy + 214, 3, colorLine //*** line ***

  //Desenha círculo da posição de partida standard
  Circle Ox + 170, Oy + 16, Ox + 170 + 60, Oy + 16 + 60, colorStart, colorStart

  //Escolha aleatória da posição da vela
  candleBasePos = Random(9) + 1
 
  if (candleBasePos = 1)
    candleBaseOX = Ox + 3
    candleBaseOY = Oy + 3
    candleBaseDI = 270
    candleBaseDF = 90
    candleX = 1
    candleY = 1

  elseif (candleBasePos = 2)
    candleBaseOX = Ox + 154 - 2
    candleBaseOY = Oy + 3
    candleBaseDI = 180
    candleBaseDF = 90
    candleX = -1
    candleY = 1

  elseif (candleBasePos = 3)
    candleBaseOX = Ox + 246 + 3
    candleBaseOY = Oy + 92 + 3
    candleBaseDI = 270
    candleBaseDF = 90
    candleX = 1
    candleY = 1

  elseif (candleBasePos = 4)
    candleBaseOX = Ox + 398 - 1
    candleBaseOY = Oy + 92 + 3
    candleBaseDI = 180
    candleBaseDF = 90
    candleX = -1
    candleY = 1

  elseif (candleBasePos = 5)
    candleBaseOX = Ox + 496 - 2
    candleBaseOY = Oy + 314 + 3
    candleBaseDI = 180
    candleBaseDF = 90
    candleX = -1
    candleY = 1

  elseif (candleBasePos = 6)
    candleBaseOX = Ox + 496 - 1
    candleBaseOY = Oy + 496 - 1
    candleBaseDI = 90
    candleBaseDF = 90
    candleX = -1
    candleY = -1

  elseif (candleBasePos = 7)
    candleBaseOX = Ox + 3
    candleBaseOY = Oy + 496 - 1
    candleBaseDI = 0
    candleBaseDF = 90
    candleX = 1
    candleY = -1

  elseif (candleBasePos = 8)
    candleBaseOX = Ox + 3
    candleBaseOY = Oy + 274 + 3
    candleBaseDI = 270
    candleBaseDF = 90
    candleX = 1
    candleY = 1

  elseif (candleBasePos = 9)
    candleBaseOX = Ox + 154 - 1
    candleBaseOY = Oy + 274 + 3
    candleBaseDI = 180
    candleBaseDF = 90
    candleX = -1
    candleY = 1
  endif
     
  candleBaseR = 80;  //Raio do semicírculo que forma a zona da vela
  candleR = 5 //Raio da base da vela (corresponde à própria vela)
  candleX = candleX * 30 //Posição X da vela dentro do semicírculo
  candleY = candleY * 30 //Posição X da vela dentro do semicírculo
           
  //Desenha o semicírculo           
  Pie candleBaseOX - candleBaseR, candleBaseOY - candleBaseR, candleBaseOX + candleBaseR, candleBaseOY + candleBaseR, DtoR(candleBaseDI), DtoR(candleBaseDF), colorCandleArea, colorCandleArea
 
  //Desenha a vela (substituir por um beacon)
  Circle candleBaseOX + candleX - candleR, candleBaseOY + candleY - candleR, candleBaseOX + candleX + candleR, candleBaseOY + candleY + candleR, colorCandle, colorCandle
Return

//===========================================================

RobotControl:
  //Subrotina para controlar o robô

  gosub SeguirParedeEsquerda

Return

//===========================================================


SeguirParedeEsquerda:
  dist1 = 40
  dist2 = 50

  rForward 50
  Linhas = 0

  while true
    if(rRange(0) <= 30)
      rTurn 90
    elseif (rRange(-90) >= dist1) and (rRange(-90) <= dist2)
      rForward 1
    elseif (rRange(-90) <= dist1)
        rTurn 1       
        rForward 1
    elseif rRange(-90) >= dist2
        rTurn -1 
        rForward 1     
    endif 

    if(rSense(white) & 2)
      Linhas = Linhas + 1
      rForward 5
      XYstring 10, 10, "Linhas: " + Linhas
    endif   
  wend
return


Experimentem! O programa é gratuito e pode ser puxado do site http://www.robotbasic.org/

Eis um vídeo de uma simulação mais sofisticada em que é simulado um robô bombeiro que detecta e apaga a vela.



-----------------------------

Texto cortesia de:

Simulador RobotBasic
por Carreto em Segunda Ago 31, 2009 10:45 pm
fonte do texto: http://robobombeiro.ipg.pt/forum/viewtopic.php?f=10&t=87
--------------------

Tayeb



« Última modificação: 13 de Dezembro de 2009, 21:28 por Tayeb »

Offline Fifas

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 2.064
  • El RoboSapiens
Re: Simulador RobotBasic
« Responder #1 em: 13 de Dezembro de 2009, 21:37 »
Muito bom post Tayeb ;)

Vou testar isso :)

Offline Tayeb

  • Mini Robot
  • *
  • Mensagens: 710
Re: Simulador RobotBasic
« Responder #2 em: 13 de Dezembro de 2009, 21:46 »
Acredite Fifas que vai achar o programa muito interessante e com grandes potencialidades.

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re: Simulador RobotBasic
« Responder #3 em: 13 de Dezembro de 2009, 22:59 »
Parece-me muito interessante. ;)
Pergunto-me quando está para vir um RobotArduino.  :D

Offline Tayeb

  • Mini Robot
  • *
  • Mensagens: 710
Re: Simulador RobotBasic
« Responder #4 em: 14 de Dezembro de 2009, 01:58 »
Parece-me muito interessante. ;)
Pergunto-me quando está para vir um RobotArduino.  :D

Acho que microbyte está a querer dizer quando haverá um simulador para Arduino?

Efectivamente RobotBasic pode comunicar com qualquer microcontrolador.

O comando  SerialOut pode ser usado para enviar qualquer sequência de bytes a qualquer báudio (vêr SetCommPort)  e permitir assim o controlo de qualquer microcontrolador. Existem ainda os comandos SerIn e SerOut.

Veja os seguintes dois documentos de RobotBASIC para BasicStamp,:
 
http://www.robotbasic.org/resources/RobotBASIC_Serial_IO.pdf

e

http://www.robotbasic.org/resources/RobotBASIC_To_BS2_Comms.pdf

Os comandos podem ser facilmente adaptados ao Arduino.

Tayeb

 

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re: Simulador RobotBasic
« Responder #5 em: 14 de Dezembro de 2009, 08:29 »
Hmm... Pensei que não tivesse comm serial.
Pensei que fosse mesmo só simulador.

Isso parece fixe.
Nas férias tenho de testar.  ;)

Offline Tayeb

  • Mini Robot
  • *
  • Mensagens: 710
Re: Simulador RobotBasic
« Responder #6 em: 14 de Dezembro de 2009, 12:23 »
O nooso moderador Fifas, o Ricardo e o nosso Admin Tiago vão adorar o que encontrei:

Trata-se de uma aplicação de um sistema de controlo PID, implementado em RobotBASIC, e utilizado para controlar um modelo de Estação Espacial, assim como a respectiva simulação do processo no écrã do PC:



Tal como se diz em inglês: awsome!

Tayeb
« Última modificação: 14 de Dezembro de 2009, 12:28 por Tayeb »

Offline Tayeb

  • Mini Robot
  • *
  • Mensagens: 710
Re: Simulador RobotBasic
« Responder #7 em: 14 de Dezembro de 2009, 12:48 »
E mais um vídeo de aplicação de Visão Robótica com RobotBASIC, simplesmente de novo "awesome!":

« Última modificação: 14 de Dezembro de 2009, 13:12 por Tayeb »

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re: Simulador RobotBasic
« Responder #8 em: 14 de Dezembro de 2009, 13:08 »
Gostei muito do projecto da estação espacial ;)
Estou a começar a achar piada ao RobotBasic.

Agora vou ter mesmo de testar.

Offline Tayeb

  • Mini Robot
  • *
  • Mensagens: 710
Re: Simulador RobotBasic
« Responder #9 em: 14 de Dezembro de 2009, 13:14 »
Gostei muito do projecto da estação espacial ;)
Estou a começar a achar piada ao RobotBasic.

Agora vou ter mesmo de testar.

Talvez se se tornar um perito, nos juntemos para dar uma formação aos membros deste espaço. Estou a imaginar muitas coisas com RobotBASIC!

Offline guibot

  • Mini Robot
  • *
  • Mensagens: 651
    • Guibot
Re: Simulador RobotBasic
« Responder #10 em: 14 de Dezembro de 2009, 15:16 »
Procuro uma coisa semelhante desde que me iniciei na robótica! Isto é absolutamente fantástico!!

Offline Tayeb

  • Mini Robot
  • *
  • Mensagens: 710
Re: Simulador RobotBasic
« Responder #11 em: 14 de Dezembro de 2009, 15:35 »
Procuro uma coisa semelhante desde que me iniciei na robótica! Isto é absolutamente fantástico!!

Acredite Guilherme que para mim tem sido uma revelação e a também admiro a generosidade dos autores que oferecem gratuitamente o software e que mostram muita dedicação no seu desenvolvimento.

Vale o esforço aprender a usar esta poderosa ferramenta. Quando receber os livros que encomendei, mostrá-los-ei a sí.
« Última modificação: 14 de Dezembro de 2009, 17:40 por Tayeb »

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re: Simulador RobotBasic
« Responder #12 em: 14 de Dezembro de 2009, 15:47 »
Era bom uma versão para Mac ;)

Offline Tayeb

  • Mini Robot
  • *
  • Mensagens: 710
Re: Simulador RobotBasic
« Responder #13 em: 14 de Dezembro de 2009, 16:15 »
Talvez se consiga emular para o Mac?

Offline microbyte

  • Mini Robot
  • *
  • Mensagens: 1.322
    • http://ricardo-dias.com/
Re: Simulador RobotBasic
« Responder #14 em: 14 de Dezembro de 2009, 16:22 »
Sim, no site diz que dá por Virtual Machine.
Mas isso é batota...  :P