Robótica
Como encontrar a posição final de um braço robótico com 3 servos

Como encontrar a posição final de um braço robótico com 3 servos

Um braço robótico é uma estrutura mecânica articulada que pode ser controlada por meio de servos. Cada servo é responsável por controlar o movimento em um eixo específico, como o eixo X, Y ou Z. Para encontrar a posição final do braço robótico nos eixos X e Y, é necessário utilizar uma fórmula que leve em consideração os ângulos de rotação de cada servo.

Fórmula para encontrar a posição final

A fórmula para encontrar a posição final de um braço robótico com 3 servos nos eixos X e Y é baseada na trigonometria. Vamos supor que os ângulos de rotação dos servos sejam representados por θ1, θ2 e θ3, respectivamente.

Para o eixo X:

X = L1 * cos(θ1) + L2 * cos(θ1 + θ2) + L3 * cos(θ1 + θ2 + θ3)

Para o eixo Y:

Y = L1 * sin(θ1) + L2 * sin(θ1 + θ2) + L3 * sin(θ1 + θ2 + θ3)

Onde:

  • L1, L2 e L3 são os comprimentos dos segmentos do braço robótico;
  • θ1, θ2 e θ3 são os ângulos de rotação dos servos.

Exemplo prático

Vamos supor que o braço robótico tenha os seguintes comprimentos de segmentos:

  • L1 = 10 cm
  • L2 = 15 cm
  • L3 = 20 cm

E que os ângulos de rotação dos servos sejam:

  • θ1 = 45°
  • θ2 = 30°
  • θ3 = 60°

Substituindo os valores na fórmula, temos:

X = 10 * cos(45°) + 15 * cos(45° + 30°) + 20 * cos(45° + 30° + 60°)

Y = 10 * sin(45°) + 15 * sin(45° + 30°) + 20 * sin(45° + 30° + 60°)

Calculando os valores, obtemos:

X ≈ 32,07 cm

Y ≈ 31,75 cm

Portanto, a posição final do braço robótico nos eixos X e Y é aproximadamente (32,07 cm, 31,75 cm).

Considerações finais

A fórmula apresentada permite encontrar a posição final de um braço robótico nos eixos X e Y com base nos ângulos de rotação dos servos e nos comprimentos dos segmentos do braço. É importante lembrar que essa fórmula assume que o braço robótico opera em um plano bidimensional e que não há interferências ou restrições adicionais.

Além disso, é fundamental ter em mente que a precisão da posição final depende da precisão dos ângulos de rotação dos servos e dos comprimentos dos segmentos do braço. Qualquer imprecisão ou erro na medição ou no controle dos servos pode afetar a posição final do braço robótico.

Em resumo, a fórmula apresentada é uma ferramenta útil para calcular a posição final de um braço robótico nos eixos X e Y, mas é necessário ter cuidado ao utilizar e interpretar os resultados.

Sem categoria
Trabalho processamento de sinais

Conforme materia

https://github.com/raphaelPinheiro26/Processamento-de-Sinais-e-Imagens—Fatec-RP/blob/main/Trabalhos/Trabalho_01_Introdu%C3%A7%C3%A3o_ao_Python.ipynb

Exemplo de trabalho

Aluno: Marcelo Maurin Martins

Grupo: Sem grupo

1 – Senha Pronto Atendimento Escreva um programa que destribua senhas aos pacientes que chegam no Atendimento de Emergência de um Hospital. Deverá seguir os seguintes critérios

O hospital possui 3 filas (ortopedia, Atendimento Comum e Atendimento Prioritário) A senha será composta por 3 letras indicando a fila e 3 algarismos indicando a posição do paciente na fila (AAA-000) A senha de atendimento preferêncial irá iniciar com as letras ATP A senha de atendimento comum irá iniciar com as letras ATC A senha de atendimento para ortopedia irá iniciar com as letras ORT Antes de finalizar o programa, o mesmo deverá imprimir a lista de senhas geradas em cada fila

In [1]:

# Função para gerar senhas
def gerar_senha(fila, tipo, contador):
    if tipo == "prioritaria":
        prefixo = "ATP"
    elif tipo == "comum":
        prefixo = "ATC"
    elif tipo == "ortopedia":
        prefixo = "ORT"
    else:
        raise ValueError("Tipo de fila inválido")

    senha = f"{prefixo}-{contador:03d}"
    fila.append(senha)

# Filas
ortopedia = []
atendimento_comum = []
atendimento_prioritario = []

# Função para imprimir senhas em uma fila
def imprimir_senhas(fila, nome):
    print(f"Senhas na fila {nome}:")
    for senha in fila:
        print(senha)

# Simulação de um estudante aprendendo Python
print("Bem-vindo ao sistema de distribuição de senhas do hospital!")
print("Escolha o tipo de atendimento:")
print("1 - Ortopedia")
print("2 - Atendimento Comum")
print("3 - Atendimento Prioritário")

opcao = input("Digite o número correspondente ao tipo de atendimento desejado: ")

if opcao == "1":
    gerar_senha(ortopedia, "ortopedia", len(ortopedia))
    imprimir_senhas(ortopedia, "Ortopedia")
elif opcao == "2":
    gerar_senha(atendimento_comum, "comum", len(atendimento_comum))
    imprimir_senhas(atendimento_comum, "Atendimento Comum")
elif opcao == "3":
    gerar_senha(atendimento_prioritario, "prioritaria", len(atendimento_prioritario))
    imprimir_senhas(atendimento_prioritario, "Atendimento Prioritário")
else:
    print("Opção inválida! Por favor, escolha uma opção válida.")
Bem-vindo ao sistema de distribuição de senhas do hospital!
Escolha o tipo de atendimento:
1 - Ortopedia
2 - Atendimento Comum
3 - Atendimento Prioritário
Digite o número correspondente ao tipo de atendimento desejado: 1
Senhas na fila Ortopedia:
ORT-000

Nota complementar

Fiz um outro programa em uma terceira linguagem aderente ao exercicio.

2 – Horário de Medicamentos Faça um programa que a equipe de enfermagem entre com as informações do paciente para lembra-los do horário da medicação com as seguintes recomendações:

Dados do Paciente – Nome Completo, Data de Nascimento e Tipo do sangue Dados da Medicação – Nome da Medicação, Classificação, e horário para aplicação A Classificação do Medicamento será – medicamento comum, Psicotrópico, Alto risco, Alto custo e Psicotrópicos Ao chegar nos horários do medicamento, um aviso deverá aparecer na tela o horário pode ser simulado mas se for usado a hora do computador ganhará mais pontos Pelo menos 2 horários distintos para alarmar

In [ ]:

import datetime
import time

# Função para calcular a idade a partir da data de nascimento
def calcular_idade(data_nascimento):
    hoje = datetime.date.today()
    ano_nascimento = data_nascimento.year
    idade = hoje.year - ano_nascimento
    if hoje.month < data_nascimento.month or (hoje.month == data_nascimento.month and hoje.day < data_nascimento.day):
        idade -= 1
    return idade

# Função para formatar a data de nascimento
def formatar_data(data):
    return data.strftime("%d/%m/%Y")

# Função para verificar se é hora da medicação
def verificar_horario_med(med_horario, hora_atual):
    for horario in med_horario:
        if hora_atual.hour == horario.hour and hora_atual.minute == horario.minute:
            return True
    return False

# Dados do paciente
nome = input("Digite o nome completo do paciente: ")
data_nascimento = datetime.datetime.strptime(input("Digite a data de nascimento do paciente (formato: dd/mm/aaaa): "), "%d/%m/%Y")
tipo_sangue = input("Digite o tipo sanguíneo do paciente: ")

# Dados da medicação
nome_med = input("Digite o nome da medicação: ")
classificacao_med = input("Digite a classificação da medicação (comum, psicotrópico, alto risco, alto custo, psicotrópicos): ").lower()
horarios = []
for i in range(2):
    hora = datetime.datetime.strptime(input(f"Digite o horário {i+1} para aplicação da medicação (formato: hh:mm): "), "%H:%M")
    horarios.append(hora.time())

# Imprimir informações do paciente e da medicação
print("\n--- Informações do Paciente ---")
print("Nome:", nome)
print("Data de Nascimento:", formatar_data(data_nascimento))
print("Idade:", calcular_idade(data_nascimento), "anos")
print("Tipo Sanguíneo:", tipo_sangue)

print("\n--- Informações da Medicação ---")
print("Nome da Medicação:", nome_med)
print("Classificação da Medicação:", classificacao_med.capitalize())
print("Horários de Aplicação:", ", ".join(map(lambda x: x.strftime("%H:%M"), horarios)))

# Variável para controlar se a mensagem já foi exibida
mensagem_exibida = False

# Simulação do tempo para verificar o horário da medicação
print("\nSimulando o tempo para verificar o horário da medicação...")

while True:
    hora_atual = datetime.datetime.now().time()
    if verificar_horario_med(horarios, hora_atual) and not mensagem_exibida:
        print("Hora da medicação! Não se esqueça de tomar o medicamento:", nome_med)
        mensagem_exibida = True
    elif not verificar_horario_med(horarios, hora_atual):
        mensagem_exibida = False
    # Aguardar 1 minuto antes de verificar novamente
    time.sleep(60)
Digite o nome completo do paciente: marcelo
Digite a data de nascimento do paciente (formato: dd/mm/aaaa): 20/12/1999
Digite o tipo sanguíneo do paciente: a
Digite o nome da medicação: paracetamol
Digite a classificação da medicação (comum, psicotrópico, alto risco, alto custo, psicotrópicos): 12:56
Digite o horário 1 para aplicação da medicação (formato: hh:mm): 12:57
Digite o horário 2 para aplicação da medicação (formato: hh:mm): 12:58

--- Informações do Paciente ---
Nome: marcelo
Data de Nascimento: 20/12/1999
Idade: 24 anos
Tipo Sanguíneo: a

--- Informações da Medicação ---
Nome da Medicação: paracetamol
Classificação da Medicação: 12:56
Horários de Aplicação: 12:57, 12:58

Simulando o tempo para verificar o horário da medicação...
Hora da medicação! Não se esqueça de tomar o medicamento: paracetamol

3 – Inventário de Equipamentos Biomédicos Faça um programa que tenha dois modos acessados por um menu. O primeiro módulo é de cadastro de equipamentos médicos e o segundo é de consulta dos equipamentos cadastrados. Siga as instruções:

O software deverá ter um menu principal onde o usuáriopoderá acessar as duas opções Na parte de cadastramento o usuário deverá entrar com os dados nos campos: Nome do Equipamento, TAG de identificação, e local de uso. A tag é um jeito mais fácil de identificar os equipamentos. exemplo:3° monitor multiparemetro da UTI -> UTI-MNP-0003 Porém vc pode criar a sua forma No modo de consulta deverá ter 3 formas de consulta (TAG, Tipo de equipamento e Local de uso) Ao consultar um item por uma das formas, as outras informações referente a este item taambém deverá aparecer

In [ ]:

# Função para cadastrar um novo equipamento
def cadastrar_equipamento(inventario):
    print("\n--- Cadastro de Equipamento ---")
    nome = input("Digite o nome do equipamento: ")
    local = input("Digite o local de uso do equipamento: ")
    tag = input("Digite a TAG de identificação do equipamento: ")
    inventario.append({"Nome": nome, "Local": local, "TAG": tag})
    print("Equipamento cadastrado com sucesso!")

# Função para consultar equipamentos por TAG
def consultar_por_tag(inventario):
    tag_consulta = input("Digite a TAG do equipamento que deseja consultar: ")
    encontrado = False
    for equipamento in inventario:
        if equipamento["TAG"] == tag_consulta:
            print("\n--- Informações do Equipamento ---")
            print("Nome:", equipamento["Nome"])
            print("Local de Uso:", equipamento["Local"])
            print("TAG:", equipamento["TAG"])
            encontrado = True
            break
    if not encontrado:
        print("Equipamento não encontrado!")

# Função para consultar equipamentos por Tipo
def consultar_por_tipo(inventario):
    tipo_consulta = input("Digite o tipo de equipamento que deseja consultar: ")
    encontrado = False
    for equipamento in inventario:
        if tipo_consulta in equipamento["TAG"]:
            print("\n--- Informações do Equipamento ---")
            print("Nome:", equipamento["Nome"])
            print("Local de Uso:", equipamento["Local"])
            print("TAG:", equipamento["TAG"])
            encontrado = True
    if not encontrado:
        print("Nenhum equipamento desse tipo encontrado!")

# Função para consultar equipamentos por Local
def consultar_por_local(inventario):
    local_consulta = input("Digite o local de uso que deseja consultar: ")
    encontrado = False
    for equipamento in inventario:
        if equipamento["Local"].lower() == local_consulta.lower():
            print("\n--- Informações do Equipamento ---")
            print("Nome:", equipamento["Nome"])
            print("Local de Uso:", equipamento["Local"])
            print("TAG:", equipamento["TAG"])
            encontrado = True
    if not encontrado:
        print("Nenhum equipamento encontrado nesse local!")

# Função para exibir o menu principal
def exibir_menu():
    print("\n--- Menu Principal ---")
    print("1. Cadastrar Equipamento")
    print("2. Consultar Equipamentos")
    print("3. Sair")

# Lista para armazenar os equipamentos cadastrados
inventario = []

# Loop principal do programa
while True:
    exibir_menu()
    opcao = input("Escolha uma opção: ")

    if opcao == "1":
        cadastrar_equipamento(inventario)
    elif opcao == "2":
        print("\n--- Opções de Consulta ---")
        print("1. Por TAG")
        print("2. Por Tipo de Equipamento")
        print("3. Por Local de Uso")
        consulta_opcao = input("Escolha uma opção de consulta: ")
        if consulta_opcao == "1":
            consultar_por_tag(inventario)
        elif consulta_opcao == "2":
            consultar_por_tipo(inventario)
        elif consulta_opcao == "3":
            consultar_por_local(inventario)
        else:
            print("Opção de consulta inválida!")
    elif opcao == "3":
        print("Saindo do programa...")
        break
    else:
        print("Opção inválida! Por favor, escolha uma opção válida.")

In [ ]:

 
maurinsoft.com.br