ArduPilot 컴파스를 하나만 사용하도록 소스코드에서 수정

■ ardupilot/libraries/AP_Compass/AP_Compass.h


1. // 주석은 이전 코드, //hasu0707이 있는 코드로 수정한다.

/**

   maximum number of compass instances available on this platform. If more

   than 1 then redundant sensors may be available

 */

//#define COMPASS_MAX_INSTANCES 3

//#define COMPASS_MAX_BACKEND   3

#define COMPASS_MAX_INSTANCES 1 // hasu0707

#define COMPASS_MAX_INSTANCES_FAKE 3 // hasu0707

#define COMPASS_MAX_BACKEND   1 // hasu0707

#define COMPASS_MAX_BACKEND_FAKE   3 // hasu0707


2. // 주석은 이전 코드, //hasu0707이 있는 코드로 수정한다.

    //keep track of which calibrators have been saved

    //bool _cal_saved[COMPASS_MAX_INSTANCES];

    bool _cal_saved[COMPASS_MAX_INSTANCES_FAKE]; // by hasu0707


3. // 주석은 이전 코드, //hasu0707이 있는 코드로 수정한다.

    // backend objects

    //AP_Compass_Backend *_backends[COMPASS_MAX_BACKEND];

    AP_Compass_Backend *_backends[COMPASS_MAX_BACKEND_FAKE]; // by hasu0707


4. // 주석은 이전 코드, //hasu0707이 있는 코드로 수정한다.

//    } _state[COMPASS_MAX_INSTANCES];

    } _state[COMPASS_MAX_INSTANCES_FAKE]; // by hasu0707


5. // 주석은 이전 코드, //hasu0707이 있는 코드로 수정한다.

//    CompassCalibrator _calibrator[COMPASS_MAX_INSTANCES];

    CompassCalibrator _calibrator[COMPASS_MAX_INSTANCES_FAKE]; // hasu0707



■ ardupilot/libraries/AP_Compass/AP_Compass_PX4.h


1. // 주석은 이전 코드, //hasu0707이 있는 코드로 수정한다.


//    uint8_t  _instance[COMPASS_MAX_INSTANCES];

//    int      _mag_fd[COMPASS_MAX_INSTANCES];

//    Vector3f _sum[COMPASS_MAX_INSTANCES];

//    uint32_t _count[COMPASS_MAX_INSTANCES];

//    uint64_t _last_timestamp[COMPASS_MAX_INSTANCES];

    uint8_t  _instance[COMPASS_MAX_INSTANCES_FAKE]; // hasu0707

    int      _mag_fd[COMPASS_MAX_INSTANCES_FAKE]; // hasu0707

    Vector3f _sum[COMPASS_MAX_INSTANCES_FAKE]; // hasu0707

    uint32_t _count[COMPASS_MAX_INSTANCES_FAKE]; // hasu0707

    uint64_t _last_timestamp[COMPASS_MAX_INSTANCES_FAKE]; // hasu0707

};


■ ardupilot/libraries/AP_Compass/AP_Compass_HIL.cpp


1. // 주석은 이전 코드, //hasu0707이 있는 코드로 수정한다.


void AP_Compass_HIL::read()

{

    //for (uint8_t i=0; i < ARRAY_SIZE(_compass_instance); i++) {

    for (uint8_t i=0; i < 1; i++) { // hasu0707

위로 스크롤