GithubHelp home page GithubHelp logo

italogsfernandes / rastreamento-inercial Goto Github PK

View Code? Open in Web Editor NEW
1.0 4.0 0.0 17.12 MB

Desenvolvimento de um sistema de rastreamento inercial.

C 62.26% Python 3.88% MATLAB 0.16% Assembly 4.03% C# 0.79% HTML 0.22% C++ 28.29% Objective-C 0.22% Stata 0.01% Processing 0.14%

rastreamento-inercial's Introduction

Rastreamento Inercial

This project is about the development of a tracking system, based on the use of inertial sensors in a wireless network. This sensors are placed at the body segments that will be tracked and they send their data to a host computer. This computer can show the movement execution in real time and allow the usage of these data to analyzes and studies. To do that, small wearable modules are being developed, in which there will be a micro-controller an inertial sensor and a radio frequency transponder, all inside a small box made by a 3D printer. Also, an acquisition system and a user interface are being developed.

Arquivos do repositório

  • FIRMWARE:
    • Arduino: Contém um projeto do platformIO com o código para o arduino Due que será utilizado como host. Tambem contém as bibliotecas necessárias para utiliza-lo, no caso "DueTimer" e "nrf24le01Module".
    • nrf24le1: Código dos sensores utilizando o rf transponder nrf24le1. Tambem estao junto a ele as bibliotecas necesárias: "API.h", "dmp.h", "hal_w2_isr.h", "mpu_calibration", "mpu6050_reg.h", "nRF-SPIComands.h", "pacotes_inerciais.h", "timer0.h".
  • HARDWARE:
    • 3D printing:
    • PCBs:
  • SOFTWARE:
    • Matlab analysis: Ainda não implementada.
    • Python Framework: Software feito com pyQt que se comunicará com o Arduino e executará as rotinas de leitura e salvamento das coletas.
  • Codigos para consulta e referencias: Códigos úteis durante o desenvolvimento de novas aplicações e aprendizagem sobre as ferramentas utilizadas.

Imagens do sistema

  • HOST:

    • Com fio:
    • Sem fio:
  • Sensores:

  • nrf24le1:

  • nrf24le01:

  • mpu6050:

  • Caixinhas:

  • PCBS:

  • Python Framwork:

  • Sistema de Testes:

Prerequisites

  • Arduino IDE ou platformIO integrado com Atom através do pacote platomformio (preferivel).
  • Keil uVision5 full Version: IDE para compilar e também editar os códigos que irão para o transponder nRF24LE1.
  • mPro: Gravador para enviar os arquivos compilados pelo keil para o nRF24LE1.
  • Python 2.7.
  • Matlab.

Installing

Verifique os arquivos de instalação no Google Drive.

Authors

  • Ana Carolina Torres Cresto.
  • Ítalo G S Fernandes.
  • Eduardo Morais.
  • Sergio Ricardo de Jesus.
  • Andrei Nakagawa.

License

Este projeto esta sobre a licença MIT. Veja o aquivo license para mais informações.

rastreamento-inercial's People

Contributors

anatcresto avatar andreinakagawa avatar italogsfernandes avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar

rastreamento-inercial's Issues

Organizar em forma de biblioteca

É preciso organizar o arquivo functionDMP em forma de uma library.

As funções estão apenas escritas soltas. É necessário criar um header, e alterar os nome das funções para que façam interface com este header.

setMemoryBank(bank) faltando argumentos

a função setMemoryBank(), recebe 3 argumentos, sendo o bank e 2 booleanos, em alguns lugares isso nao foi dado. substitui por setMemoryBank(bank,false,false)

biblioteca incompleta

writeProgMemoryBlock
writeProgDMPConfigurationSet

pulei estas funcoes, mta coisa complicada por de tras

readbit

readbit nao esta a funcionar quando chamada pela dmp.h, mas implementada dentro da função funciona

Tela de instruções

Esta faltando um botão para ver uma tela com o passo a passo de uma coleta, caso esqueça.
Por exemplo:

Passos para realizar coleta:

  • Selecionar a porta (comumente a última)
  • Manter o braços do paciente abertos em posição inicial e clicar em 'Iniciar Animação'
  • Esperar tela "Liberado"
  • Clicar em 'Iniciar coleta'
  • Preparar posições desejadas e clicar em 'Marcar' para salvar cada posições.
  • (Sempre que desejar visualizar marcações, fechar o programa e reabrir. No caso, essa parte pode ser corrigida.)

Codigo travando em certas partes

  • setExternalFrameSync(MPU6050_EXT_SYNC_TEMP_OUT_L);

  • setXGyroOffsetTC(xgOffsetTC);

  • setYGyroOffsetTC(ygOffsetTC);

  • setZGyroOffsetTC(zgOffsetTC);

  • Interrupt routine

Ajuda no "dmpInitialize()"

A Função dmpInitialize(), parece ser muito complicada, estou levando tempo para entende-la.
Acho que vou precisar de ajuda para realizar a implementação.

Biblioteca de I2C não funcionando

O programa para no while(!dataready); e não volta. ou seja a interrupção de dataready está com problemas.
Uma das possibilidades é que o endereço esteja errado, daí surge a dúvida pq na leitura ou escrita esta sendo somado o valo 0xa0 ao endereço?
Na leitura:
W2DAT=((devAddr+0xa0)<<1)+1;//read from slave
Na escrita:
W2DAT=((devAddr+0xa0)<<1)+0;//write

Arquivo: /Keil/I2C_Testes/leitura_minima_sensores/Master_with_arduino/master_code.c

Malloc?

é possível usar malloc no 8051?
malloc(MPU6050_DMP_MEMORY_CHUNK_SIZE);

Implementação de funções I2C para 8051 pendentes

I2C no 8051

Para leitura e escrita nos registradores do MPU6050 são utilizadas varias funções de leitura e escrita I2C. Na biblioteca hal_w2.h parecem estar disponiveis apenas as funções básicas(R/W).

São Necessárias:

  • readBits
  • writeBit
  • writeBits
  • readByte
  • readBytes
  • writeWord

Liberar processamento na interrupção

Tirar processamento de dentro da interrupção em todos os casos q isso ocorrre.
Nos testes do timer e no send data.
Nos testes do timer é necessário que ele mande o horario junto. (isso é confiavel? se eu quero testar a noção de tempo interna do nrf24le1, utilizar de suas proprias leituras para isso?)

tipos de memoria

Em ql memoria salvar as varivais com estes tamanhos?

#define MPU6050_DMP_CODE_SIZE       1929    // dmpMemory[]
#define MPU6050_DMP_CONFIG_SIZE     192     // dmpConfig[]
#define MPU6050_DMP_UPDATES_SIZE    47      // dmpUpdates[]

sao utilizadas apenas no dmpinitialize

pgm_read_byte(addr)

função possui uns asteristicos q nao sei pra q servem
definição:
#define pgm_read_byte(addr) (*(const unsigned char *)(addr))
chamanda:
pgm_read_byte(data + i + j);

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.