에서 SYSTEM_TIME과 컴패니언 컴퓨터 시간의 누적 오류는 this guy과 비슷합니다. Pixhawk에서 GPS 시간을 Raspberry Pi 컴패니언 컴퓨터로 가져 오려고했습니다.Dronekit
@vehicle.on_message('SYSTEM_TIME')
접근 방식을 시도하기 전에 모든 메시지를 잡기 위해 와일드 카드를 사용하고 파일에 결과를 덤프했습니다. 파일을 검토해 보면 GPS에서 수신하는 유일한 메시지 유형은 GPS_RAW_INT입니다. 무엇보다 중요한 것은 the documentation에 따라 GPS에서 UTC 시간을 가져 오는 SYSTEM_TIME_UTC 메시지가 표시되지 않는 것입니다.
이제는 @vehicle.on_message('SYSTEM_TIME')
을 사용하면 문제가 없습니다. 그러나, 그것은 무엇인가? 설명서는 다음과 같이 주장합니다 :
시스템 시간은 마스터 시계 시간 (일반적으로 기본 온보드 컴퓨터의 컴퓨터 시계)입니다.
좋아, "메인 온보드 컴퓨터"는 Pixhawk라고 가정합니다. 그러나 GPS 메시지가 포함되어 있지 않은 경우 시간은 어떻게됩니까? GPS_RAW_INT에는 시간 정보가 포함되어 있지 않습니다.은 라즈베리 파이에서오고가 부팅시 NTP 설정되어 있기 때문에 올바른
@vehicle.on_message('SYSTEM_TIME')
def listener(self, name, message):
rpi_time = time.time()
mavlink_time = float(message.time_unix_usec)/1000000
print(str(rpi_time) + " - " + str(mavlink_time) + " = " + str(rpi_time-mavlink_time))
rpi_time : 더 조사
, 나는 다음과 같은 핸들러를 썼다. 나는 mavlink_time (나는 GPS 기반 시간이되어야한다고 추정했다)이 꽤 가까웠다는 것을 확인하고 싶었다. 내가 틀렸어.
이 작업을 여러 번 실행하면 GPS 시간이 항상 약 2 초 앞당겨집니다. 시간이 지남에 따라, 그것은 뒤쳐집니다. 샘플 출력 : rpi_time가 (정확한 임) 172 초 경과 말한다이 경우,
1483754011.89 - 1483754014.72 = -2.83385300636
1483754012.16 - 1483754014.96 = -2.79546308517
1483754012.44 - 1483754015.2 = -2.75652289391
...
1483754154.69 - 1483754044.5 = 110.186414957
1483754173.72 - 1483754044.76 = 128.95413518
1483754184.04 - 1483754045.02 = 139.016195059
는 mavlink_time은 30. 기타 시험이 (불일치가 고정되는 것은 아니다) 야생 변화를 보였다 주장한다.
그래서, 내 질문은 :
- 가 따라 SYSTEM_TIME 메시지는 무엇입니까? 현실적으로 GPS는 가능합니다 (Pixhawk에서 사용할 수있는 유일한 시간 데이터입니다). 그렇다면 ...
- 왜 그렇게 정확하지 않고 왜하지도 않습니다. SYSTEM_TIME_UTC 메시지가 있습니까?