Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
Ambos lados da revisão anterior Revisão anterior Próxima revisão | Revisão anterior | ||
prog2:sumarizacao_de_dados_gps [2022/06/02 14:40] – [Atividade] nicolui | prog2:sumarizacao_de_dados_gps [2022/07/14 14:07] (atual) – nicolui | ||
---|---|---|---|
Linha 1: | Linha 1: | ||
+ | ====== Sumarização de Arquivos de Log de GPS ====== | ||
+ | Atualmente, a maioria dos ciclocomputadores utilizados | ||
+ | (amadores | ||
+ | conversam | ||
+ | frequência cardíaca, velocidade, cadência, | ||
+ | que o ciclista/ | ||
+ | o treino foi realizado conforme prescrito. | ||
+ | |||
+ | Todas essas informações | ||
+ | segundo. | ||
+ | primeiras linhas contém | ||
+ | da atividade. | ||
+ | valores e unidades registrados a cada segundo. | ||
+ | campos | ||
+ | sensor de frequência cardíaca, o campo // | ||
+ | |||
+ | <code - gps.log> | ||
+ | Gear: Cannondale SuperSix | ||
+ | Date: Nov 2, 2020, 10:26:44 AM | ||
+ | |||
+ | altitude: 973.8 m | ||
+ | ascent: 0 m | ||
+ | battery_soc: | ||
+ | cadence: 62 rpm | ||
+ | calories: 0 kcal | ||
+ | distance: 2.21 m | ||
+ | enhanced_altitude: | ||
+ | enhanced_speed: | ||
+ | gps_accuracy: | ||
+ | grade: 7.9 % | ||
+ | heart_rate: 112 bpm | ||
+ | left_pedal_smoothness: | ||
+ | left_right_balance: | ||
+ | left_torque_effectiveness: | ||
+ | position_lat: | ||
+ | position_long: | ||
+ | power: 201 watts | ||
+ | right_pedal_smoothness: | ||
+ | right_torque_effectiveness: | ||
+ | speed: 3.343 m/s | ||
+ | timestamp: 2020-11-02 10:26:45 | ||
+ | |||
+ | altitude: 973.8 m | ||
+ | ascent: 0 m | ||
+ | battery_soc: | ||
+ | cadence: 63 rpm | ||
+ | calories: 0 kcal | ||
+ | distance: 5.18 m | ||
+ | enhanced_altitude: | ||
+ | enhanced_speed: | ||
+ | gps_accuracy: | ||
+ | grade: 7.2 % | ||
+ | heart_rate: 112 bpm | ||
+ | left_pedal_smoothness: | ||
+ | left_right_balance: | ||
+ | left_torque_effectiveness: | ||
+ | position_lat: | ||
+ | position_long: | ||
+ | power: 194 watts | ||
+ | right_pedal_smoothness: | ||
+ | right_torque_effectiveness: | ||
+ | speed: 3.312 m/s | ||
+ | timestamp: 2020-11-02 10:26:46 | ||
+ | </ | ||
+ | |||
+ | ====== Atividade ====== | ||
+ | |||
+ | Para esse trabalho, | ||
+ | (https:// | ||
+ | bicicletas. Você deve escrever um programa que leia todos os logs de | ||
+ | um dado diretório e apresente um resumo para cada bicicleta da seguinte | ||
+ | forma: | ||
+ | |||
+ | **Bicicleta: | ||
+ | ^ Data ^ Distância (km) ^ Velocidade Média (km/h) ^ Velocidade Máxima (km/h) ^ HR Médio (bpm) ^ HR Máximo (bpm) ^ Cadência Média (rpm) ^ Subida Acumulada (m) ^ | ||
+ | | 2/11 | 62,3 | 25 | 50 | 130 | 150 | 75 | 1200 | | ||
+ | | … | … | … | … | … | … | … | … | | ||
+ | |||
+ | **Observações: | ||
+ | |||
+ | * No arquivo de log, o valor de uma grandeza é válido até o próximo // | ||
+ | |||
+ | * Os valores médios (velocidade, | ||
+ | |||
+ | * Valores nulos de velocidade (// | ||
+ | |||
+ | * Quando há uma parada total do ciclista (por exemplo, o ciclista parou para tomar um café), isto é sinalizado com o valor de velocidade 0 (zero). | ||
+ | |||
+ | * **Subida Acumulada** é quantos metros o ciclista subiu durante a atividade. Nesse cálculo você deve considerar somente o ganho de altimetria, ou seja altitude no tempo //t+1// > altitude no tempo //t//. | ||
+ | |||
+ | * Para efeitos de verificação, | ||
+ | |||
+ | Ao fim | ||
+ | informações: | ||
+ | mais longo em //km//, Pedal mais curto em //km// e Distância Média em | ||
+ | //km//. | ||
+ | |||
+ | **Forma de chamada**: | ||
+ | |||
+ | ./gps -d < | ||
+ | |||
+ | Com essa chamada, | ||
+ | encontrados | ||
+ | informações relevantes em memória. | ||
+ | |||
+ | Enquanto o programa estiver lendo os arquivos de //log//, o usuário deve | ||
+ | ser informado que o programa está em execução. | ||
+ | |||
+ | Uma vez feito isso, o programa deverá apresentar as seguintes opções ao usuário: | ||
+ | |||
+ | - Bicicletas Encontradas: | ||
+ | - Pede para o usuário informar uma das bicicletas encontradas e apresenta a lista de atividades, resumo conforme descrito acima. | ||
+ | - Lista todas atividades agrupadas por bicicleta e ordenadas pela data | ||
+ | - Lista todas atividades agrupadas por bicicleta e ordenadas pela distância | ||
+ | - Lista todas atividades ordenadas pela subida acumulada | ||
+ | - // | ||
+ | * O histograma deve mostrar a distribuição da distância das atividades da bicicleta escolhida como no exemplo abaixo. Para facilitar a comparação, | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | **Atividade Extra**: | ||
+ | |||
+ | Os alunos que apresentarem o mesmo histograma no formato gráfico (vide exemplo abaixo) receberão 25 pontos extras na nota final do trabalho. Para gerar o gráfico, você pode utilizar qualquer biblioteca (por exemplo, gnuplot), desde que a implementação seja na linguagem C. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | **ATENÇÃO** | ||
+ | |||
+ | * Sempre que possível, as informações necessárias às funções devem ser transferidas como parâmetros (por valor ou por referência, | ||
+ | * Use alocação dinâmica de memória para leitura e processamento dos arquivos de log. | ||
+ | * Para testar seu programa, use os arquivos de log disponíveis [[https:// | ||
+ | |||
+ | ==== Estrutura do código-fonte ==== | ||
+ | |||
+ | O código-fonte deve ser devidamente modularizado e estruturado em arquivos '' | ||
+ | agrupem | ||
+ | arquivos, alocação de memória, geração | ||
+ | /* A figura abaixo | ||
+ | traz uma uma **sugestão | ||
+ | correspondem a '' | ||
+ | |||
+ | {{ estrutura.png? | ||
+ | */ | ||
+ | |||
+ | ===== O que deve ser entregue ===== | ||
+ | |||
+ | * Deve ser entregue ao professor um arquivo //.tar// ou //.zip// contendo: | ||
+ | * arquivos '' | ||
+ | * arquivo '' | ||
+ | * Por favor, NÃO ENVIE OS ARQUIVOS DE LOG! m( | ||
+ | * O '' | ||
+ | * Os alvos '' | ||
+ | * CFLAGS = '' | ||
+ | * '' | ||
+ | * Compilar e ligar separadamente (gerar arquivos '' | ||
+ | * Os trabalhos devem ser entregues através do Moodle C3SL: | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
+ | ===== Avaliação ===== | ||
+ | |||
+ | Os itens de avaliação do trabalho e respectivas pontuações são: | ||
+ | |||
+ | * Modularização e organização do código-fonte (15 pontos) | ||
+ | * Funcionamento: | ||
+ | * Eficiência: | ||
+ | * **Atividade Extra**: Histograma em formato gráfico (+25 pontos) | ||
+ | |||
+ | **ATENÇÃO**: |