Top Gear Rally Car Line Follower

Para os mais especializados em mecânica e electrónica em LEGO.
Avatar do Utilizador
CyberX
Sócio
Sócio
Mensagens: 4339
Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:

Top Gear Rally Car Line Follower

Mensagem por CyberX »

Não gosto deste bicho, é lento como um cágado.
Mas com pybricks (saiu agora a versão alpha para Control+) ainda consigo suportá-lo.


Código: Selecionar todos

hub = CPlusHub()
sensor1 =  ColorDistanceSensor(Port.A)
motor1 = Motor(Port.B)
motor2 = Motor(Port.D)

motor1.run_target(200,0,wait=True)

while True:
    if sensor1.reflection() < 30:
        hub.light.on(Color.RED)
        
        motor1.run_target(400,60,wait=True)
        
        motor2.run(700)
        wait(50)
        motor2.stop()
        
        hub.light.off()
    else:
        hub.light.on(Color.GREEN)
        
        motor1.run_target(400,-60,wait=True)

        motor2.run(700)
        wait(50)
        motor2.stop()
        
        hub.light.off()
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
Avatar do Utilizador
Conchas
Direcção
Direcção
Mensagens: 15919
Registado: 26 jan 2007, 15:20
Localização: Feijó (Almada)
Contacto:

Re: Top Gear Rally Car Line Follower

Mensagem por Conchas »

Mas porque raio é que isso é tão lento!??... :(
FCorreia

#EUusoOmeuLUGBULKnosEVENTOSdaPLUG

We are working to build a better :plug:
LEGO Fan, a lifelong experience - Play Well (Leg Godt)

Oeiras :brincka: 2024, 25-28 de Abril
Avatar do Utilizador
CyberX
Sócio
Sócio
Mensagens: 4339
Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:

Re: Top Gear Rally Car Line Follower

Mensagem por CyberX »

Conchas Escreveu: 06 jun 2020, 14:10 Mas porque raio é que isso é tão lento!??... :(
1. Eu sou uma bosta de programador, foi isto que me saiu ao fim de uma hora
2. O carro é mesmo uma bosta
3. Os motores PU são uma bosta
4. Já disse que não gosto deste bicho, que é lento como um cágado?
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
Avatar do Utilizador
Conchas
Direcção
Direcção
Mensagens: 15919
Registado: 26 jan 2007, 15:20
Localização: Feijó (Almada)
Contacto:

Re: Top Gear Rally Car Line Follower

Mensagem por Conchas »

Ok, o problema tem de ser mesmo o código uma beta muito carunchosa.
Do carro não é certamente... :)
FCorreia

#EUusoOmeuLUGBULKnosEVENTOSdaPLUG

We are working to build a better :plug:
LEGO Fan, a lifelong experience - Play Well (Leg Godt)

Oeiras :brincka: 2024, 25-28 de Abril
Avatar do Utilizador
CyberX
Sócio
Sócio
Mensagens: 4339
Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:

Re: Top Gear Rally Car Line Follower

Mensagem por CyberX »

Conchas Escreveu: 06 jun 2020, 14:41 Ok, o problema tem de ser mesmo o código uma beta muito carunchosa.
Do carro não é certamente... :)
Não é pá, já editei o código para ser mais rápido. Não estou para me meter em PIDs, isto é um two-step basico.
Mas o carro é lento como um cágado gordo.
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
Avatar do Utilizador
Conchas
Direcção
Direcção
Mensagens: 15919
Registado: 26 jan 2007, 15:20
Localização: Feijó (Almada)
Contacto:

Re: Top Gear Rally Car Line Follower

Mensagem por Conchas »

Um P é o suficiente para trabalhar muito do que isso na grande maioria dos casos.
É certe que sendo uma drive base com steering, pode introduzir aqui algum efeito indesejado, mas mesmo assim não devia ser nada extraordinariamente difícil de controlar.

Os motores têm de trabalhar em continuo.
Acho que esses "Wait" e "Wait=true" estão a lixar tudo!

Uns comentários no código para saber qual motor é qual e o significado das constantes, tb não ia nada mal... ;)
FCorreia

#EUusoOmeuLUGBULKnosEVENTOSdaPLUG

We are working to build a better :plug:
LEGO Fan, a lifelong experience - Play Well (Leg Godt)

Oeiras :brincka: 2024, 25-28 de Abril
Avatar do Utilizador
CyberX
Sócio
Sócio
Mensagens: 4339
Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:

Re: Top Gear Rally Car Line Follower

Mensagem por CyberX »


Código: Selecionar todos

hub = CPlusHub()
sensor1 =  ColorDistanceSensor(Port.A)
motor1 = Motor(Port.B)
motor2 = Motor(Port.D)

motor1.run_target(200,0,wait=True)

while True:
    if sensor1.reflection() < 30:
        hub.light.on(Color.RED)
        
        motor1.run_target(600,60,wait=True)
        
        motor2.dc(30)
        wait(50)
        motor2.stop()
        
        hub.light.off()
    else:
        hub.light.on(Color.GREEN)
        
        motor1.run_target(600,-60,wait=True)

        motor2.dc(30)
        wait(50)
        motor2.stop()
        
        hub.light.off()
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
Avatar do Utilizador
CyberX
Sócio
Sócio
Mensagens: 4339
Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:

Re: Top Gear Rally Car Line Follower

Mensagem por CyberX »

Conchas Escreveu: 06 jun 2020, 15:05 Uns comentários no código para saber qual motor é qual e o significado das constantes, tb não ia nada mal... ;)
Comentários? 8) 8) 8)
Isto é "agile" à boa maneira tuga, fast release to market, comenta-se depois a menos que pagues
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
Avatar do Utilizador
CyberX
Sócio
Sócio
Mensagens: 4339
Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:

Re: Top Gear Rally Car Line Follower

Mensagem por CyberX »

Pronto, comentários e o carro nunca pára. Não há video, é muito semelhante ao anterior (apenas mais fluido):

Código: Selecionar todos

hub = CPlusHub()
sensor1 =  ColorDistanceSensor(Port.A)
mStear = Motor(Port.B)
mMove = Motor(Port.D)

ReflectionTHRESHOLD=30  # light sensor reflection read, percent
TurnZERO = 0
TurnLEFT = -60                     #angle degrees
TurnRIGHT = -TurnLEFT
MoveDUTY = 30                   # Duty Cycle, percent
MoveTime = 50                     # milliseconds

mStear.run_target(200,TurnZERO,wait=True)

while True:
    if sensor1.reflection() < ReflectionTHRESHOLD:
        hub.light.on(Color.RED)
        mStear.run_target(600,TurnRIGHT)
        mMove.dc(MoveDUTY)
        wait(MoveTime)
        hub.light.off()
    else:
        hub.light.on(Color.GREEN)
        mStear.run_target(600,TurnLEFT)
        mMove.dc(MoveDUTY)
        wait(MoveTime)
        hub.light.off()
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
Avatar do Utilizador
CyberX
Sócio
Sócio
Mensagens: 4339
Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:

Re: Top Gear Rally Car Line Follower

Mensagem por CyberX »

Sim, o mMove.dc() pode sair do Loop ja que o carro não pára.
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
Avatar do Utilizador
gads
Administrator
Administrator
Mensagens: 6355
Registado: 11 set 2006, 23:58
Localização: Oeiras

Re: Top Gear Rally Car Line Follower

Mensagem por gads »

Comecei a ver o video antes de ler os comentários e ainda me questionei "porque raio é que isto está em slow motion?" ;D
Guilherme Santos
www.historybricks.com
Avatar do Utilizador
CyberX
Sócio
Sócio
Mensagens: 4339
Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:

Re: Top Gear Rally Car Line Follower

Mensagem por CyberX »

Pronto, versão revista e diminuida
MoveDUTY maiores e TurnLEFT/RIGHT maiores serão possíveis com pistas com curvas menos apertadas - infelizmente a que montei à pressa não é assim.

Código: Selecionar todos

hub = CPlusHub()
sensor1 =  ColorDistanceSensor(Port.A)
mStear = Motor(Port.B)
mMove = Motor(Port.D)

ReflectionTHRESHOLD=30  # light sensor reflection read, percent
TurnZERO = 0
TurnLEFT = -70          # angle, degrees
TurnRIGHT = -TurnLEFT
TurnSpeed = 600        # 
MoveDUTY = 40           # Duty Cycle, percent

mStear.run_target(200,TurnZERO,wait=True)
mMove.dc(MoveDUTY)
        
while True:
    if sensor1.reflection() < ReflectionTHRESHOLD:
        hub.light.on(Color.RED)
        mStear.run_target(TurnSpeed,TurnRIGHT)
    else:
        hub.light.on(Color.GREEN)
        mStear.run_target(TurnSpeed,TurnLEFT)
Última edição por CyberX em 06 jun 2020, 15:59, editado 3 vezes no total.
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
Avatar do Utilizador
Conchas
Direcção
Direcção
Mensagens: 15919
Registado: 26 jan 2007, 15:20
Localização: Feijó (Almada)
Contacto:

Re: Top Gear Rally Car Line Follower

Mensagem por Conchas »

Estás a ver!?
Muito melhor assim. ;D

E pelos vistos melhorou a performance.
Agora só mexendo!...
FCorreia

#EUusoOmeuLUGBULKnosEVENTOSdaPLUG

We are working to build a better :plug:
LEGO Fan, a lifelong experience - Play Well (Leg Godt)

Oeiras :brincka: 2024, 25-28 de Abril
Avatar do Utilizador
CyberX
Sócio
Sócio
Mensagens: 4339
Registado: 10 mar 2014, 20:09
Localização: Mira Sintra
Contacto:

Re: Top Gear Rally Car Line Follower

Mensagem por CyberX »

Conchas Escreveu: 06 jun 2020, 15:56 Estás a ver!?
Muito melhor assim. ;D

E pelos vistos melhorou a performance.
Agora só mexendo!...
Nã, o bicho é mesmo mau.
Jorge Pereira
«De génio, criança e louco... porquê só 1 pouco?»
Avatar do Utilizador
Conchas
Direcção
Direcção
Mensagens: 15919
Registado: 26 jan 2007, 15:20
Localização: Feijó (Almada)
Contacto:

Re: Top Gear Rally Car Line Follower

Mensagem por Conchas »

Só se for o bicho acima do teclado! ;D >:D
FCorreia

#EUusoOmeuLUGBULKnosEVENTOSdaPLUG

We are working to build a better :plug:
LEGO Fan, a lifelong experience - Play Well (Leg Godt)

Oeiras :brincka: 2024, 25-28 de Abril
Responder