quiero preguntar algo. Quiero retrasar la lectura de datos de navegación en Parrot AR Drone 2.0. ¿Puede dar un ejemplo de cómo agregar un intervalo a mi lectura de Navdata? y lo que debo hacer, si quiero construir un gráfico en tiempo real, ¿alguien puede dar un enlace de tutorial?
var arDrone = require('ar-drone'); var client = new arDrone.createClient(); client.on('navdata', function(d){ if(d.demo){ console.log('Roll:' + d.demo.rotation.roll); } });o este código?
var arDrone = require('ar-drone'); var droneClient = arDrone.createClient(); droneClient.config('general:navdata_demo', 'TRUE'); droneClient.on('navdata', function(navdata) { try { console.log('test:' + navdata.demo.batteryPercentage); } catch(err) { console.log(err.message); } });Realmente no puede cambiar la velocidad a la que ingresan los datos de navegación. Puede ignorar los datos de navegación si no desea procesarlos. El siguiente código solo procesa los datos de navegación una vez por segundo:
var lastNavDataMs = 0; client.on('navdata', function(d) { var nowMs = new Date().getTime(); if (nowMs - lastNavDataMs > 1000) { lastNavDataMs = nowMs; // Process navdata once per second. if (d.demo){ console.log('pitch:' + d.demo.rotation.roll); } } });Para mostrar un gráfico en tiempo real de los valores de los sensores, puede probar la biblioteca Smoothie Charts. Está diseñado específicamente para manejar tablas y gráficos con actualización en tiempo real. Su tutorial hace que parezca muy fácil. A continuación, intenté adaptar su tutorial para mostrar información de datos de navegación del AR.Drone. No lo he probado, pero podría ser un buen punto de partida.
Primero, en su HTML, incluya el script Smoothie y cree un elemento de lienzo para contener los gráficos:
<script type="text/javascript" src="smoothie.js"></script> <canvas id="mycanvas" width="400" height="100"></canvas>El código:
var arDrone = require('ar-drone'); var smoothie = new SmoothieChart(); smoothie.streamTo(document.getElementById("mycanvas")); // Lines on the chart. var rollLine = new TimeSeries(); var altitudeLine = new TimeSeries(); var client = new arDrone.createClient(); client.on('navdata', function(d) { if (d.demo) { // Add new measurements for roll and altitude. var time = new Date().getTime(); rollLine.append(time, d.demo.rotation.roll); altitudeLine.append(time, d.demo.altitudeMeters); } }); // Add the lines to our chart. smoothie.addTimeSeries(rollLine); smoothie.addTimeSeries(altitudeLine);