mirror of https://github.com/ArduPilot/ardupilot
Added Car/Quad APO examples.
git-svn-id: https://arducopter.googlecode.com/svn/trunk@1937 f9c3cf11-9bcb-44bc-f272-b75c42450872
This commit is contained in:
parent
3b87530b74
commit
cb787573ef
|
@ -0,0 +1,263 @@
|
|||
/*
|
||||
* UgvTraxxasStampede.pde
|
||||
*
|
||||
* Created on: Apr 30, 2011
|
||||
* Author: jgoppert
|
||||
*/
|
||||
|
||||
/*
|
||||
* ArduPilotOne.pde
|
||||
*
|
||||
* Created on: Apr 30, 2011
|
||||
* Author: jgoppert
|
||||
*/
|
||||
|
||||
// Libraries
|
||||
#include <APO.h>
|
||||
#include <AP_Common.h>
|
||||
#include <FastSerial.h>
|
||||
#include <APM_RC.h>
|
||||
#include <AP_RangeFinder.h>
|
||||
#include <GCS_MAVLink.h>
|
||||
#include <AP_ADC.h>
|
||||
#include <AP_DCM.h>
|
||||
#include <AP_Compass.h>
|
||||
#include <Wire.h>
|
||||
#include <AP_GPS.h>
|
||||
#include <AP_IMU.h>
|
||||
#include <APM_BMP085.h>
|
||||
|
||||
// Serial 0: debug /dev/ttyUSB0
|
||||
// Serial 1: gps/hil /dev/ttyUSB1
|
||||
// Serial 2: gcs /dev/ttyUSB2
|
||||
|
||||
// select hardware absraction mode from
|
||||
// MODE_LIVE, actual flight
|
||||
// TODO: IMPLEMENT --> MODE_HIL_NAV, hardware in the loop with sensors running, tests navigation system and control
|
||||
// MODE_HIL_CNTL, hardware in the loop with only controller running, just tests controller
|
||||
apo::halMode_t halMode = apo::MODE_LIVE;
|
||||
|
||||
// select from, BOARD_ARDUPILOTMEGA
|
||||
apo::board_t board = apo::BOARD_ARDUPILOTMEGA;
|
||||
|
||||
// select from, VEHICLE_CAR, VEHICLE_QUAD, VEHICLE_PLANE
|
||||
apo::vehicle_t vehicle = apo::VEHICLE_CAR;
|
||||
|
||||
// optional sensors
|
||||
static bool gpsEnabled = true;
|
||||
static bool baroEnabled = true;
|
||||
static bool compassEnabled = true;
|
||||
|
||||
static bool rangeFinderFrontEnabled = true;
|
||||
static bool rangeFinderBackEnabled = true;
|
||||
static bool rangeFinderLeftEnabled = true;
|
||||
static bool rangeFinderRightEnabled = true;
|
||||
static bool rangeFinderUpEnabled = true;
|
||||
static bool rangeFinderDownEnabled = true;
|
||||
|
||||
|
||||
//---------ADVANCED SECTION ----------------//
|
||||
|
||||
// loop rates
|
||||
const float loop0Rate = 150;
|
||||
const float loop1Rate = 50;
|
||||
const float loop2Rate = 10;
|
||||
const float loop3Rate = 1;
|
||||
const float loop4Rate = 0.1;
|
||||
|
||||
// max time in seconds to allow flight without ground station comms
|
||||
// zero will ignore timeout
|
||||
const uint8_t heartbeatTimeout = 3.0;
|
||||
|
||||
//---------HARDWARE CONFIG ----------------//
|
||||
|
||||
//Hardware Parameters
|
||||
#define SLIDE_SWITCH_PIN 40
|
||||
#define PUSHBUTTON_PIN 41
|
||||
#define A_LED_PIN 37 //36 = B,3637 = A,363735 = C
|
||||
#define B_LED_PIN 36
|
||||
#define C_LED_PIN 35
|
||||
#define EEPROM_MAX_ADDR 2048
|
||||
#define RANGE_FINDER_CLASS AP_RangeFinder_MaxsonarLV
|
||||
|
||||
|
||||
//---------MAIN ----------------//
|
||||
|
||||
|
||||
/*
|
||||
* Required Global Declarations
|
||||
*/
|
||||
FastSerialPort0(Serial);
|
||||
FastSerialPort1(Serial1);
|
||||
FastSerialPort2(Serial2);
|
||||
FastSerialPort3(Serial3);
|
||||
apo::AP_Autopilot * autoPilot;
|
||||
|
||||
void setup() {
|
||||
|
||||
using namespace apo;
|
||||
|
||||
AP_HardwareAbstractionLayer * hal = new AP_HardwareAbstractionLayer(halMode,board,vehicle);
|
||||
|
||||
/*
|
||||
* Communications
|
||||
*/
|
||||
Serial.begin(57600, 128, 128); // debug
|
||||
Serial3.begin(57600, 128, 128); // gcs
|
||||
|
||||
hal->debug = &Serial;
|
||||
hal->debug->println_P(PSTR("initializing debug line"));
|
||||
hal->debug->println_P(PSTR("initializing radio"));
|
||||
APM_RC.Init(); // APM Radio initialization
|
||||
|
||||
/*
|
||||
* Pins
|
||||
*/
|
||||
hal->debug->println_P(PSTR("settings pin modes"));
|
||||
pinMode(A_LED_PIN, OUTPUT); // extra led
|
||||
pinMode(B_LED_PIN, OUTPUT); // imu ledclass AP_CommLink;
|
||||
pinMode(C_LED_PIN, OUTPUT); // gps led
|
||||
pinMode(SLIDE_SWITCH_PIN, INPUT);
|
||||
pinMode(PUSHBUTTON_PIN, INPUT);
|
||||
DDRL |= B00000100; // set port L, pint 2 to output for the relay
|
||||
|
||||
/*
|
||||
* Initialize Comm Channels
|
||||
*/
|
||||
hal->debug->println_P(PSTR("initializing comm channels"));
|
||||
if (hal->mode()==MODE_LIVE) {
|
||||
Serial1.begin(38400, 128, 16); // gps
|
||||
} else { // hil
|
||||
Serial1.begin(57600, 128, 128);
|
||||
}
|
||||
|
||||
/*
|
||||
* Sensor initialization
|
||||
*/
|
||||
if (hal->mode()==MODE_LIVE)
|
||||
{
|
||||
hal->debug->println_P(PSTR("initializing adc"));
|
||||
hal->adc = new AP_ADC_ADS7844;
|
||||
hal->adc->Init();
|
||||
|
||||
if (gpsEnabled) {
|
||||
hal->debug->println_P(PSTR("initializing gps"));
|
||||
AP_GPS_Auto gpsDriver(&Serial1,&(hal->gps));
|
||||
hal->gps = &gpsDriver;
|
||||
hal->gps->init();
|
||||
}
|
||||
|
||||
if (baroEnabled) {
|
||||
hal->debug->println_P(PSTR("initializing baro"));
|
||||
hal->baro = new APM_BMP085_Class;
|
||||
hal->baro->Init();
|
||||
}
|
||||
|
||||
if (compassEnabled) {
|
||||
hal->debug->println_P(PSTR("initializing compass"));
|
||||
hal->compass = new AP_Compass_HMC5843;
|
||||
hal->compass->set_orientation(AP_COMPASS_COMPONENTS_UP_PINS_FORWARD);
|
||||
hal->compass->init();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize ultrasonic sensors. If sensors are not plugged in, the navigator will not
|
||||
* initialize them and NULL will be assigned to those corresponding pointers.
|
||||
* On detecting NULL assigned to any ultrasonic sensor, its corresponding block of code
|
||||
* will not be executed by the navigator.
|
||||
* The coordinate system is assigned by the right hand screw rule with the thumb pointing down.
|
||||
* In set_orientation, it is defind as (front/back,left/right,down,up)
|
||||
*/
|
||||
|
||||
if (rangeFinderFrontEnabled) {
|
||||
hal->debug->println_P(PSTR("initializing front range finder"));
|
||||
RangeFinder * rangeFinder = new RANGE_FINDER_CLASS;
|
||||
rangeFinder->init(1);
|
||||
rangeFinder->set_orientation(1,0,0);
|
||||
hal->rangeFinders.push_back(rangeFinder);
|
||||
}
|
||||
|
||||
if (rangeFinderBackEnabled) {
|
||||
hal->debug->println_P(PSTR("initializing back range finder"));
|
||||
RangeFinder * rangeFinder = new RANGE_FINDER_CLASS;
|
||||
rangeFinder->init(2);
|
||||
rangeFinder->set_orientation(-1,0,0);
|
||||
hal->rangeFinders.push_back(rangeFinder);
|
||||
}
|
||||
|
||||
if (rangeFinderLeftEnabled) {
|
||||
hal->debug->println_P(PSTR("initializing left range finder"));
|
||||
RangeFinder * rangeFinder = new RANGE_FINDER_CLASS;
|
||||
rangeFinder->init(3);
|
||||
rangeFinder->set_orientation(0,-1,0);
|
||||
hal->rangeFinders.push_back(rangeFinder);
|
||||
}
|
||||
|
||||
if (rangeFinderRightEnabled) {
|
||||
hal->debug->println_P(PSTR("initializing right range finder"));
|
||||
RangeFinder * rangeFinder = new RANGE_FINDER_CLASS;
|
||||
rangeFinder->init(4);
|
||||
rangeFinder->set_orientation(0,1,0);
|
||||
hal->rangeFinders.push_back(rangeFinder);
|
||||
}
|
||||
|
||||
if (rangeFinderUpEnabled) {
|
||||
hal->debug->println_P(PSTR("initializing up range finder"));
|
||||
RangeFinder * rangeFinder = new RANGE_FINDER_CLASS;
|
||||
rangeFinder->init(5);
|
||||
rangeFinder->set_orientation(0,0,-1);
|
||||
hal->rangeFinders.push_back(rangeFinder);
|
||||
}
|
||||
|
||||
if (rangeFinderDownEnabled) {
|
||||
hal->debug->println_P(PSTR("initializing down range finder"));
|
||||
RangeFinder * rangeFinder = new RANGE_FINDER_CLASS;
|
||||
rangeFinder->init(6);
|
||||
rangeFinder->set_orientation(0,0,1);
|
||||
hal->rangeFinders.push_back(rangeFinder);
|
||||
}
|
||||
|
||||
/*
|
||||
* Navigator
|
||||
*/
|
||||
AP_Navigator * navigator = new DcmNavigator(hal);
|
||||
|
||||
/*
|
||||
* Guide
|
||||
*/
|
||||
AP_Guide * guide = new MavlinkGuide(k_guide,navigator,hal);
|
||||
|
||||
/*
|
||||
* Controller Initialization
|
||||
*/
|
||||
AP_Controller * controller = NULL;
|
||||
switch(vehicle)
|
||||
{
|
||||
case VEHICLE_CAR:
|
||||
controller = new CarController(k_cntrl,k_pidStr,k_pidThr,navigator,guide,hal);
|
||||
break;
|
||||
case VEHICLE_QUAD:
|
||||
controller = new QuadController(navigator,guide,hal);
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
* CommLinks
|
||||
*/
|
||||
hal->gcs = new MavlinkComm(&Serial3,navigator,guide,controller,hal);
|
||||
hal->hil = new MavlinkComm(&Serial1,navigator,guide,controller,hal);
|
||||
|
||||
/*
|
||||
* Start the autopilot
|
||||
*/
|
||||
hal->debug->printf_P(PSTR("initializing ArduPilotOne\n"));
|
||||
hal->debug->printf_P(PSTR("free ram: %d bytes\n"),freeMemory());
|
||||
|
||||
autoPilot = new apo::AP_Autopilot(navigator,guide,controller,hal);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
autoPilot->update();
|
||||
}
|
|
@ -0,0 +1,263 @@
|
|||
/*
|
||||
* QuadArducopter.pde
|
||||
*
|
||||
* Created on: Apr 30, 2011
|
||||
* Author: jgoppert
|
||||
*/
|
||||
|
||||
/*
|
||||
* ArduPilotOne.pde
|
||||
*
|
||||
* Created on: Apr 30, 2011
|
||||
* Author: jgoppert
|
||||
*/
|
||||
|
||||
// Libraries
|
||||
#include <APO.h>
|
||||
#include <AP_Common.h>
|
||||
#include <FastSerial.h>
|
||||
#include <APM_RC.h>
|
||||
#include <AP_RangeFinder.h>
|
||||
#include <GCS_MAVLink.h>
|
||||
#include <AP_ADC.h>
|
||||
#include <AP_DCM.h>
|
||||
#include <AP_Compass.h>
|
||||
#include <Wire.h>
|
||||
#include <AP_GPS.h>
|
||||
#include <AP_IMU.h>
|
||||
#include <APM_BMP085.h>
|
||||
|
||||
// Serial 0: debug /dev/ttyUSB0
|
||||
// Serial 1: gps/hil /dev/ttyUSB1
|
||||
// Serial 2: gcs /dev/ttyUSB2
|
||||
|
||||
// select hardware absraction mode from
|
||||
// MODE_LIVE, actual flight
|
||||
// TODO: IMPLEMENT --> MODE_HIL_NAV, hardware in the loop with sensors running, tests navigation system and control
|
||||
// MODE_HIL_CNTL, hardware in the loop with only controller running, just tests controller
|
||||
apo::halMode_t halMode = apo::MODE_LIVE;
|
||||
|
||||
// select from, BOARD_ARDUPILOTMEGA
|
||||
apo::board_t board = apo::BOARD_ARDUPILOTMEGA;
|
||||
|
||||
// select from, VEHICLE_CAR, VEHICLE_QUAD, VEHICLE_PLANE
|
||||
apo::vehicle_t vehicle = apo::VEHICLE_QUAD;
|
||||
|
||||
// optional sensors
|
||||
static bool gpsEnabled = true;
|
||||
static bool baroEnabled = true;
|
||||
static bool compassEnabled = true;
|
||||
|
||||
static bool rangeFinderFrontEnabled = true;
|
||||
static bool rangeFinderBackEnabled = true;
|
||||
static bool rangeFinderLeftEnabled = true;
|
||||
static bool rangeFinderRightEnabled = true;
|
||||
static bool rangeFinderUpEnabled = true;
|
||||
static bool rangeFinderDownEnabled = true;
|
||||
|
||||
|
||||
//---------ADVANCED SECTION ----------------//
|
||||
|
||||
// loop rates
|
||||
const float loop0Rate = 150;
|
||||
const float loop1Rate = 50;
|
||||
const float loop2Rate = 10;
|
||||
const float loop3Rate = 1;
|
||||
const float loop4Rate = 0.1;
|
||||
|
||||
// max time in seconds to allow flight without ground station comms
|
||||
// zero will ignore timeout
|
||||
const uint8_t heartbeatTimeout = 3.0;
|
||||
|
||||
//---------HARDWARE CONFIG ----------------//
|
||||
|
||||
//Hardware Parameters
|
||||
#define SLIDE_SWITCH_PIN 40
|
||||
#define PUSHBUTTON_PIN 41
|
||||
#define A_LED_PIN 37 //36 = B,3637 = A,363735 = C
|
||||
#define B_LED_PIN 36
|
||||
#define C_LED_PIN 35
|
||||
#define EEPROM_MAX_ADDR 2048
|
||||
#define RANGE_FINDER_CLASS AP_RangeFinder_MaxsonarLV
|
||||
|
||||
|
||||
//---------MAIN ----------------//
|
||||
|
||||
|
||||
/*
|
||||
* Required Global Declarations
|
||||
*/
|
||||
FastSerialPort0(Serial);
|
||||
FastSerialPort1(Serial1);
|
||||
FastSerialPort2(Serial2);
|
||||
FastSerialPort3(Serial3);
|
||||
apo::AP_Autopilot * autoPilot;
|
||||
|
||||
void setup() {
|
||||
|
||||
using namespace apo;
|
||||
|
||||
AP_HardwareAbstractionLayer * hal = new AP_HardwareAbstractionLayer(halMode,board,vehicle);
|
||||
|
||||
/*
|
||||
* Communications
|
||||
*/
|
||||
Serial.begin(57600, 128, 128); // debug
|
||||
Serial3.begin(57600, 128, 128); // gcs
|
||||
|
||||
hal->debug = &Serial;
|
||||
hal->debug->println_P(PSTR("initializing debug line"));
|
||||
hal->debug->println_P(PSTR("initializing radio"));
|
||||
APM_RC.Init(); // APM Radio initialization
|
||||
|
||||
/*
|
||||
* Pins
|
||||
*/
|
||||
hal->debug->println_P(PSTR("settings pin modes"));
|
||||
pinMode(A_LED_PIN, OUTPUT); // extra led
|
||||
pinMode(B_LED_PIN, OUTPUT); // imu ledclass AP_CommLink;
|
||||
pinMode(C_LED_PIN, OUTPUT); // gps led
|
||||
pinMode(SLIDE_SWITCH_PIN, INPUT);
|
||||
pinMode(PUSHBUTTON_PIN, INPUT);
|
||||
DDRL |= B00000100; // set port L, pint 2 to output for the relay
|
||||
|
||||
/*
|
||||
* Initialize Comm Channels
|
||||
*/
|
||||
hal->debug->println_P(PSTR("initializing comm channels"));
|
||||
if (hal->mode()==MODE_LIVE) {
|
||||
Serial1.begin(38400, 128, 16); // gps
|
||||
} else { // hil
|
||||
Serial1.begin(57600, 128, 128);
|
||||
}
|
||||
|
||||
/*
|
||||
* Sensor initialization
|
||||
*/
|
||||
if (hal->mode()==MODE_LIVE)
|
||||
{
|
||||
hal->debug->println_P(PSTR("initializing adc"));
|
||||
hal->adc = new AP_ADC_ADS7844;
|
||||
hal->adc->Init();
|
||||
|
||||
if (gpsEnabled) {
|
||||
hal->debug->println_P(PSTR("initializing gps"));
|
||||
AP_GPS_Auto gpsDriver(&Serial1,&(hal->gps));
|
||||
hal->gps = &gpsDriver;
|
||||
hal->gps->init();
|
||||
}
|
||||
|
||||
if (baroEnabled) {
|
||||
hal->debug->println_P(PSTR("initializing baro"));
|
||||
hal->baro = new APM_BMP085_Class;
|
||||
hal->baro->Init();
|
||||
}
|
||||
|
||||
if (compassEnabled) {
|
||||
hal->debug->println_P(PSTR("initializing compass"));
|
||||
hal->compass = new AP_Compass_HMC5843;
|
||||
hal->compass->set_orientation(AP_COMPASS_COMPONENTS_UP_PINS_FORWARD);
|
||||
hal->compass->init();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize ultrasonic sensors. If sensors are not plugged in, the navigator will not
|
||||
* initialize them and NULL will be assigned to those corresponding pointers.
|
||||
* On detecting NULL assigned to any ultrasonic sensor, its corresponding block of code
|
||||
* will not be executed by the navigator.
|
||||
* The coordinate system is assigned by the right hand screw rule with the thumb pointing down.
|
||||
* In set_orientation, it is defind as (front/back,left/right,down,up)
|
||||
*/
|
||||
|
||||
if (rangeFinderFrontEnabled) {
|
||||
hal->debug->println_P(PSTR("initializing front range finder"));
|
||||
RangeFinder * rangeFinder = new RANGE_FINDER_CLASS;
|
||||
rangeFinder->init(1);
|
||||
rangeFinder->set_orientation(1,0,0);
|
||||
hal->rangeFinders.push_back(rangeFinder);
|
||||
}
|
||||
|
||||
if (rangeFinderBackEnabled) {
|
||||
hal->debug->println_P(PSTR("initializing back range finder"));
|
||||
RangeFinder * rangeFinder = new RANGE_FINDER_CLASS;
|
||||
rangeFinder->init(2);
|
||||
rangeFinder->set_orientation(-1,0,0);
|
||||
hal->rangeFinders.push_back(rangeFinder);
|
||||
}
|
||||
|
||||
if (rangeFinderLeftEnabled) {
|
||||
hal->debug->println_P(PSTR("initializing left range finder"));
|
||||
RangeFinder * rangeFinder = new RANGE_FINDER_CLASS;
|
||||
rangeFinder->init(3);
|
||||
rangeFinder->set_orientation(0,-1,0);
|
||||
hal->rangeFinders.push_back(rangeFinder);
|
||||
}
|
||||
|
||||
if (rangeFinderRightEnabled) {
|
||||
hal->debug->println_P(PSTR("initializing right range finder"));
|
||||
RangeFinder * rangeFinder = new RANGE_FINDER_CLASS;
|
||||
rangeFinder->init(4);
|
||||
rangeFinder->set_orientation(0,1,0);
|
||||
hal->rangeFinders.push_back(rangeFinder);
|
||||
}
|
||||
|
||||
if (rangeFinderUpEnabled) {
|
||||
hal->debug->println_P(PSTR("initializing up range finder"));
|
||||
RangeFinder * rangeFinder = new RANGE_FINDER_CLASS;
|
||||
rangeFinder->init(5);
|
||||
rangeFinder->set_orientation(0,0,-1);
|
||||
hal->rangeFinders.push_back(rangeFinder);
|
||||
}
|
||||
|
||||
if (rangeFinderDownEnabled) {
|
||||
hal->debug->println_P(PSTR("initializing down range finder"));
|
||||
RangeFinder * rangeFinder = new RANGE_FINDER_CLASS;
|
||||
rangeFinder->init(6);
|
||||
rangeFinder->set_orientation(0,0,1);
|
||||
hal->rangeFinders.push_back(rangeFinder);
|
||||
}
|
||||
|
||||
/*
|
||||
* Navigator
|
||||
*/
|
||||
AP_Navigator * navigator = new DcmNavigator(hal);
|
||||
|
||||
/*
|
||||
* Guide
|
||||
*/
|
||||
AP_Guide * guide = new MavlinkGuide(k_guide,navigator,hal);
|
||||
|
||||
/*
|
||||
* Controller Initialization
|
||||
*/
|
||||
AP_Controller * controller = NULL;
|
||||
switch(vehicle)
|
||||
{
|
||||
case VEHICLE_CAR:
|
||||
controller = new CarController(k_cntrl,k_pidStr,k_pidThr,navigator,guide,hal);
|
||||
break;
|
||||
case VEHICLE_QUAD:
|
||||
controller = new QuadController(navigator,guide,hal);
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
* CommLinks
|
||||
*/
|
||||
hal->gcs = new MavlinkComm(&Serial3,navigator,guide,controller,hal);
|
||||
hal->hil = new MavlinkComm(&Serial1,navigator,guide,controller,hal);
|
||||
|
||||
/*
|
||||
* Start the autopilot
|
||||
*/
|
||||
hal->debug->printf_P(PSTR("initializing ArduPilotOne\n"));
|
||||
hal->debug->printf_P(PSTR("free ram: %d bytes\n"),freeMemory());
|
||||
|
||||
autoPilot = new apo::AP_Autopilot(navigator,guide,controller,hal);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
autoPilot->update();
|
||||
}
|
|
@ -0,0 +1,2 @@
|
|||
BOARD = mega
|
||||
include ../../../AP_Common/Arduino.mk
|
|
@ -0,0 +1,2 @@
|
|||
BOARD = mega
|
||||
include ../../../AP_Common/Arduino.mk
|
|
@ -0,0 +1,46 @@
|
|||
/*
|
||||
AnalogReadSerial
|
||||
Reads an analog input on pin 0, prints the result to the serial monitor
|
||||
|
||||
This example code is in the public domain.
|
||||
*/
|
||||
|
||||
#include <GCS_MAVLink.h>
|
||||
|
||||
int packetDrops = 0;
|
||||
|
||||
void handleMessage(mavlink_message_t * msg) {
|
||||
Serial.print(", received mavlink message: ");
|
||||
Serial.print(msg->msgid,DEC);
|
||||
}
|
||||
|
||||
void setup() {
|
||||
Serial.begin(57600);
|
||||
Serial3.begin(57600);
|
||||
mavlink_comm_0_port = &Serial3;
|
||||
packetDrops = 0;
|
||||
}
|
||||
|
||||
void loop() {
|
||||
mavlink_msg_heartbeat_send(MAVLINK_COMM_0,mavlink_system.type,MAV_AUTOPILOT_ARDUPILOTMEGA);
|
||||
Serial.print("heartbeat sent");
|
||||
|
||||
// receive new packets
|
||||
mavlink_message_t msg;
|
||||
mavlink_status_t status;
|
||||
|
||||
Serial.print(", bytes available: "); Serial.print(comm_get_available(MAVLINK_COMM_0));
|
||||
while(comm_get_available(MAVLINK_COMM_0)) {
|
||||
uint8_t c = comm_receive_ch(MAVLINK_COMM_0);
|
||||
|
||||
// Try to get a new message
|
||||
if(mavlink_parse_char(MAVLINK_COMM_0, c, &msg, &status)) handleMessage(&msg);
|
||||
}
|
||||
|
||||
// Update packet drops counter
|
||||
packetDrops += status.packet_rx_drop_count;
|
||||
|
||||
Serial.print(", dropped packets: ");
|
||||
Serial.println(packetDrops);
|
||||
delay(1000);
|
||||
}
|
|
@ -0,0 +1,2 @@
|
|||
BOARD = mega
|
||||
include ../../../AP_Common/Arduino.mk
|
Loading…
Reference in New Issue