J1939 차량 시뮬레이터
J1939 CAN을 지원하는 차량 시뮬레이터
개요
차량 시뮬레이터 ( gva-vehicle-sim )는 GVA(Generic Vehicle Architecture) 플랫폼을 위한 포괄적인 테스트 및 개발 도구입니다. 이 시뮬레이터는 통합된 J1939 CAN 버스 메시지 생성 기능을 통해 현실적인 차량 동역학 시뮬레이션을 제공하며, 실제 차량 하드웨어 없이도 하드웨어 인 더 루프 테스트를 가능하게 합니다.
메시지 생성을 위한 J1939 시뮬레이션의 이점
🎯 개발 및 테스트의 장점
하드웨어 독립적 개발
- 물리적인 CAN 하드웨어 없이 GVA 애플리케이션을 개발하고 테스트하세요.
- 값비싼 차량 ECU나 테스트 벤치가 필요 없습니다.
- 여러 팀에 걸친 병렬 개발
현실적인 차량 움직임
- 정확한 J1939 파라미터 그룹 번호(PGN)와 의심스러운 파라미터 번호(SPN)를 생성합니다.
- 차량의 실제 역학(속도, RPM, 기어 변속, 제동)을 시뮬레이션합니다.
- 시간에 맞춰 동기화된 센서 데이터를 제공합니다.
비용 절감
- 초기 개발 단계에서 물리적 시험 차량의 필요성을 없애줍니다.
- 가상 CAN 인터페이스(
vcan0)를 사용하면 모든 Linux 워크스테이션에서 테스트할 수 있습니다. - 물리적 하드웨어의 마모를 줄여줍니다.
신속 프로토타이핑
- 알고리즘 개발을 위한 즉각적인 피드백 루프
- 간편한 시나리오 생성 및 재생
- 메시지 전송 속도 및 데이터 패턴 설정 가능
통합 테스트
- J1939 게이트웨이 기능 검증
- CAN에서 DDS 토픽으로의 테스트 데이터 흐름
- 차량 매개변수에 대한 HMI의 반응성을 검증합니다.
재현 가능한 테스트
- 결정론적 차량 동작
- 반복 가능한 테스트 시나리오
- 회귀 분석을 위한 일관된 기준선
📊 J1939 메시지 지원
✅ PGN 완벽 지원 (차량 시뮬레이터에 구현됨)
차량 시뮬레이터는 CAN을 통해 다음과 같은 J1939 메시지를 능동적으로 생성하고 게이트웨이를 통해 DDS에 게시합니다.
| PGN | 마녀 | 이름 | 비율 | SPNs | 설명 |
|---|---|---|---|---|---|
| 61443 | 0xF003 | EEC2 - 전자 엔진 컨트롤러 2 | 50ms | 91, 92 | 가속 페달 위치, 엔진 부하율 |
| 61444 | 0xF004 | EEC1 - 전자 엔진 컨트롤러 1 | 100밀리초 | 190, 512, 513 | 엔진 회전수(RPM), 운전자 요구 토크, 실제 엔진 토크 |
| 61445 | 0xF005 | ETC2 - 전자식 변속기 제어기 2 | 100밀리초 | 522, 523, 524 | 클러치 위치, 선택된 기어, 현재 기어 |
| 61449 | 0xF009 | VDC2 - 차량 동적 제어 2 | 100밀리초 | 1807년, 1808년 | 스티어링 휠 각도, 요율 |
| 65253 | 0xFEE5 | 엔진 가동 시간 | 1초 | 247 | 총 엔진 작동 시간 |
| 65256 | 0xFEE8 | VDS - 차량 방향/속도 | 250ms | 517, 519, 586 | 지상 속도, 나침반 방향, 항로 |
| 65258 | 0xFEEA | ALT - 고도 | 1초 | 580 | GPS를 이용한 해발 고도 측정 |
| 65262 | 0xFEEE | ET1 - 엔진 온도 1 | 1초 | 110, 174, 175 | 엔진 냉각수 온도, 연료 온도, 오일 온도 |
| 65263 | 0xFEEF | EFLP - 엔진 유체 레벨/압력 | 500ms | 96, 100, 94 | 연료 레벨, 오일 압력, 연료 공급 압력 |
| 65265 | 0xFEF1 | CCVS - 크루즈 컨트롤/차량 속도 | 100밀리초 | 84, 597, 598 | 휠베이스 차량 속도, 브레이크 스위치, 클러치 스위치 |
| 65267 | 0xFEF3 | VP - 차량 위치 | 250ms | 584, 585 | GPS 위도, 경도 |
| 65269 | 0xFEF5 | AMB - 주변 환경 조건 | 1초 | 108, 171 | 기압, 주변 기온 |
| 65271 | 0xFEF7 | VEP1 - 차량 전기 전력 1 | 1초 | 167, 168, 158 | 배터리 전압, 교류 발전기 전압, 충전 시스템 전압 |
| 65276 | 0xFEFC | DD - 대시 디스플레이 | 1초 | 182, 183 | 연료 소모율(L/h), 순간 연비 |
| 0xEF00 | 0xEF00 | PROP_A - 독점 A (IONNIC USM) | 250ms | - | IONNIC USM ES-Key 패널용 LED 제어 |
상세 SPN 목록 (지원되는 모든 매개변수 포함)
| 스펜 | 매개변수 이름 | PGN | 단위 | 해결 | 오프셋 | 범위 |
|---|---|---|---|---|---|---|
| 84 | 휠베이스 차량 속도 | 65265 | km/h | 1/256 km/h | 0 | 0-250km/h |
| 91 | 가속 페달 위치 | 61443 | % | 0.4% | 0 | 0-100% |
| 92 | 현재 속도에서의 엔진 부하율 | 61443/61444 | % | 1% | 0 | 0-100% |
| 94 | 연료 공급 압력 | 65263 | kPa | 4kPa | 0 | 0-1000 kPa |
| 96 | 연료 레벨 | 65263 | % | 0.4% | 0 | 0-100% |
| 100 | 엔진 오일 압력 | 65263 | kPa | 4kPa | 0 | 0-1000 kPa |
| 108 | 기압 | 65269 | kPa | 0.5 kPa | 0 | 0-125 kPa |
| 110 | 엔진 냉각수 온도 | 65262 | °C | 1°C | -40 | -40°C ~ +210°C |
| 158 | 충전 시스템 전압 | 65271 | 다섯 | 0.05V | 0 | 0-3212V |
| 167 | 교류 발전기 전압 | 65271 | 다섯 | 0.05V | 0 | 0-3212V |
| 168 | 배터리 전압 | 65271 | 다섯 | 0.05V | 0 | 0-3212V |
| 171 | 주변 공기 온도 | 65269 | °C | 0.03125°C | -273 | -273 ~ +1735°C |
| 174 | 연료 온도 | 65262 | °C | 1°C | -40 | -40°C ~ +210°C |
| 175 | 엔진 오일 온도 | 65262 | °C | 0.03125°C | -273 | -273 ~ +1735°C |
| 182 | 연료비 | 65276 | 리터/시간 | 0.05리터/시간 | 0 | 0-3212 L/h |
| 183 | 순간 연비 | 65276 | km/L | 1/512 km/L | 0 | 0-125km/L |
| 190 | 엔진 속도 | 61444 | RPM | 0.125 RPM | 0 | 0-8031 RPM |
| 247 | 총 엔진 가동 시간 | 65253 | 시간 | 0.05시간 | 0 | 0-210,554,060시간 |
| 512 | 운전자 요구 엔진 토크 | 61444 | % | 1% | -125 | -125%에서 +125%까지 |
| 513 | 실제 엔진 토크 | 61444 | % | 1% | -125 | -125%에서 +125%까지 |
| 517 | 지상 속도 | 65256 | km/h | 1/256 km/h | 0 | 0-250km/h |
| 519 | 지상 코스 | 65256 | 도 | 1/128도 | 0 | 0-360° |
| 522 | 클러치 페달 위치 | 61445 | % | 0.4% | 0 | 0-100% |
| 523 | 변속기 전류 기어 | 61445 | 기어 | 1 | -125 | -125에서 +125까지 |
| 524 | 변속기 선택 기어 | 61445 | 기어 | 1 | -125 | -125에서 +125까지 |
| 580 | 고도 | 65258 | 중 | 0.125m | -2500 | -2500m ~ +5531m |
| 584 | 위도 | 65267 | 도 | 10⁻⁷도 | -210 | -90° ~ +90° |
| 585 | 경도 | 65267 | 도 | 10⁻⁷도 | -210 | -180° ~ +180° |
| 586 | 나침반 방위 | 65256 | 도 | 1/128도 | 0 | 0-360° |
| 597 | 브레이크 스위치 | 65265 | - | 2비트 | - | 꺼짐/켜짐/오류/사용 불가 |
| 598 | 클러치 스위치 | 65265 | - | 2비트 | - | 꺼짐/켜짐/오류/사용 불가 |
| 899 | 엔진 토크 모드 | 61444 | - | 1 | 0 | 0-15 (열거형) |
| 1807 | 스티어링 휠 각도 | 61449 | 라드 | 1/1024 라디안 | -31.374 | -31.374에서 +31.374 라디안 |
| 1808 | 요율 | 61449 | 라드/초 | 1/8192 라디안/초 | -3.92 | -3.92 ~ +3.92 라디안/초 |
총 15개의 PGN과 33개의 SPN이 활발하게 시뮬레이션되었습니다.
🔲 지원되지 않는 PGN (아직 구현되지 않음)
다음 J1939 메시지는 현재 차량 시뮬레이터에서 생성되지 않습니다 . 이는 향후 개선될 가능성이 있는 항목입니다.
| PGN | 마녀 | 이름 | 우선 사항 | 사용 사례 | 복잡성 |
|---|---|---|---|---|---|
| 61440 | 0xF000 | ERC1 - 전자식 감속기 제어기 1 | 낮은 | 리타더/엔진 브레이크 제어 | 중간 |
| 61441 | 0xF001 | EBC1 - 전자식 브레이크 컨트롤러 1 | 높은 | ABS, 브레이크 시스템 상태 | 높은 |
| 61442 | 0xF002 | ETC1 - 전자식 변속기 제어기 1 | 중간 | 변속 모드, 변속 진행 중 | 중간 |
| 64971 | 0xFDCB | VDHR - 차량 거리(고해상도) | 높은 | 5mm 해상도의 주행거리계 | 낮은 |
| 64972 | 0xFDCC | TCO1 - 타코그래프 | 중간 | 운전면허증, 타코그래프 속도계 | 낮은 |
| 65132 | 0xFE6C | TPMS - 타이어 공기압 모니터링 시스템 | 중간 | 개별 타이어 압력/온도 | 중간 |
| 65217 | 0xFEC1 | PTODE - PTO 드라이브 참여 | 낮은 | 동력 인출 상태 | 낮은 |
| 65248 | 0x수수료0 | VDIST - 고해상도 차량 거리 측정 | 높은 | 5m 해상도로 측정한 총 거리 | 낮은 |
| 65251 | 0xFEE3 | ECFG - 엔진 구성 | 낮은 | 엔진 제조사, 모델, 시리얼 번호 | 낮은 |
| 65252 | 0xFEE4 | SHUTDN - 셧다운 | 낮은 | 엔진 정지 무시 기능 | 낮은 |
| 65260 | 0xFEEC | VI - 차량 식별 | 중간 | 전체 VIN 전송(부분 구현) | 낮은 |
| 65279 | 0xFEFF | CCVS1 - 크루즈 컨트롤/차량 속도 1 | 중간 | 향상된 크루즈 컨트롤 데이터 | 낮은 |
| 65098 | 0xFE4A | EBC2 - 전자식 브레이크 컨트롤러 2 | 높은 | 개별 휠 브레이크 상태 | 높은 |
| 65099 | 0xFE4B | EBC3 - 전자식 브레이크 컨트롤러 3 | 중간 | 브레이크 라이닝 마모 | 중간 |
| 65110 | 0xFE56 | IC1 - 흡기/배기 조건 1 | 낮은 | 흡기 매니폴드 압력/온도 | 중간 |
| 65172 | 0xFE84 | RQST - 요청 | 낮은 | ECU에서 특정 PGN을 요청합니다. | 중간 |
| 65226 | 0xFECA | AT1I - 후처리 1 흡입 가스 | 낮은 | 디젤 미립자 필터 흡입구 | 낮은 |
| 65227 | 0xFECB | AT1O - 후처리 1 출구 가스 | 낮은 | DPF 배출구, NOx 센서 | 낮은 |
| 65247 | 0xFEDF | EFL/P2 - 엔진 유체 레벨/압력 2 | 낮은 | 추가 유체 압력 | 낮은 |
| 65266 | 0xFEF2 | LFE - 연료 효율 | 중간 | 평균/주행 연비 | 낮은 |
| 65270 | 0xFEF6 | TD - 터보차저 | 낮은 | 부스트 압력, 터빈 속도 | 중간 |
| 65272 | 0xFEF8 | VEP2 - 차량 전기 전력 2 | 낮은 | 추가 전기 버스 | 낮은 |
이러한 사항들이 시행되지 않는 이유는 무엇일까요?
| 이유 | 영향을 받은 PGN | 세다 |
|---|---|---|
| 기본 차량 시뮬레이션과는 관련이 없습니다. | ERC1, PTODE, SHUTDN, ECFG, AT1I, AT1O, TD | 7 |
| 타이어 물리 모델이 필요합니다. | TPMS | 1 |
| ABS/브레이크 모델이 필요합니다. | EBC1, EBC2, EBC3 | 3 |
| 고급 변속기가 필요합니다 | ETC1 | 1 |
| 낮은 우선순위 / 미용 목적 | VI(VIN), VDHR, VDIST, TCO1, LFE | 5 |
| 배기가스/배출가스 모델이 필요합니다. | IC1, AT1I, AT1O | 3 |
| 프로토콜 수준 (차량 데이터 아님) | RQST | 1 |
| 중복/개선된 버전 | CCVS1, EFL/P2, VEP2 | 3 |
지원되지 않는 PGN 파일 총 22개
🛠️ 기술적 특징
- OpenDRIVE 도로망 지원 : 실제 도로 형상을 따릅니다.
- 자동 변속기 시뮬레이션 : 속도와 스로틀에 따른 기어 변속
- 물리 기반 동역학 : 현실적인 제약 조건을 고려한 가속, 제동, 조향
- DDS 통합 : J1939 자동차 PSM 토픽으로 직접 게시
- Qt6 GUI : 실시간 시각화 및 수동 제어
J1939에서 DDS 게이트웨이 아키텍처로
다음 순서도는 J1939 CAN 버스 메시지가 게이트웨이를 거쳐 DDS 가입자에게 전달되는 전체 데이터 흐름을 보여줍니다.
sequenceDiagram
participant Sim as Vehicle Simulator
participant CAN as CAN Bus (vcan0)
participant Reader as SocketCanReader
participant Decoder as J1939Decoder
participant Gateway as J1939Gateway
participant DDS as DDS Topic
participant HMI as GVA HMI/LDMX
Note over Sim,CAN: Message Generation Phase
Sim->>Sim: Calculate vehicle state
(speed, RPM, gear) Sim->>CAN: Send PGN 61444
(EEC1: Engine Speed) Sim->>CAN: Send PGN 65265
(CCVS: Vehicle Speed) Sim->>CAN: Send PGN 61445
(ETC2: Transmission) Note over CAN,Decoder: CAN Reception Phase CAN->>Reader: Read CAN frame (29-bit ID) Reader->>Reader: Validate frame Reader->>Decoder: emit canFrameReceived() Note over Decoder,Gateway: J1939 Decode Phase Decoder->>Decoder: Extract PGN from CAN ID
(bits 24-8) Decoder->>Decoder: Extract source address
(bits 7-0) Decoder->>Decoder: Extract priority
(bits 28-26) Decoder->>Decoder: Decode SPNs from payload
(bit position, scale, offset) Decoder->>Gateway: emit j1939MessageDecoded() Note over Gateway,DDS: DDS Publishing Phase Gateway->>Gateway: Create C_Parameter_Group_Definition
(if first time) Gateway->>DDS: Publish PGN definition loop For each SPN in message Gateway->>Gateway: Create C_Parameter message
(sourceID, PGN, SPN, value) Gateway->>Gateway: Set metadata
(timestamp, status) Gateway->>DDS: Publish parameter end Note over DDS,HMI: Consumption Phase DDS->>HMI: onSampleReceived()
(C_Parameter) HMI->>HMI: Update speedometer HMI->>HMI: Update tachometer HMI->>HMI: Update gear indicator Note over Gateway: Status Reporting (1 Hz) Gateway->>Gateway: Update data source status Gateway->>DDS: Publish C_Data_Source
(gateway health)
(speed, RPM, gear) Sim->>CAN: Send PGN 61444
(EEC1: Engine Speed) Sim->>CAN: Send PGN 65265
(CCVS: Vehicle Speed) Sim->>CAN: Send PGN 61445
(ETC2: Transmission) Note over CAN,Decoder: CAN Reception Phase CAN->>Reader: Read CAN frame (29-bit ID) Reader->>Reader: Validate frame Reader->>Decoder: emit canFrameReceived() Note over Decoder,Gateway: J1939 Decode Phase Decoder->>Decoder: Extract PGN from CAN ID
(bits 24-8) Decoder->>Decoder: Extract source address
(bits 7-0) Decoder->>Decoder: Extract priority
(bits 28-26) Decoder->>Decoder: Decode SPNs from payload
(bit position, scale, offset) Decoder->>Gateway: emit j1939MessageDecoded() Note over Gateway,DDS: DDS Publishing Phase Gateway->>Gateway: Create C_Parameter_Group_Definition
(if first time) Gateway->>DDS: Publish PGN definition loop For each SPN in message Gateway->>Gateway: Create C_Parameter message
(sourceID, PGN, SPN, value) Gateway->>Gateway: Set metadata
(timestamp, status) Gateway->>DDS: Publish parameter end Note over DDS,HMI: Consumption Phase DDS->>HMI: onSampleReceived()
(C_Parameter) HMI->>HMI: Update speedometer HMI->>HMI: Update tachometer HMI->>HMI: Update gear indicator Note over Gateway: Status Reporting (1 Hz) Gateway->>Gateway: Update data source status Gateway->>DDS: Publish C_Data_Source
(gateway health)
순서도 설명
1. 메시지 생성 단계
- 차량 시뮬레이터는 운전자 입력과 물리적 현상을 기반으로 현실적인 차량 매개변수를 계산합니다.
- 적절한 PGN/SPN 구조를 사용하여 매개변수를 J1939 CAN 프레임으로 인코딩합니다.
- 가상 CAN 인터페이스(vcan0)로 전송합니다.
2. CAN 수신 단계
- SocketCanReader Qt 스레드는 CAN 인터페이스에서 지속적으로 데이터를 읽습니다.
- CAN 프레임 형식(29비트 확장 ID)을 검증합니다.
- 원시 프레임 데이터를 포함하는 Qt 신호를 방출합니다.
3. J1939 디코드 단계
- J1939Decoder는 CAN ID에서 프로토콜 정보를 추출합니다.
- PGN : 파라미터 그룹 번호(메시지 유형을 식별함)
- 소스 주소 : ECU 식별자(0-253)
- 우선순위 : 메시지 긴급도 (0=가장 높음, 7=가장 낮음)
- 설정을 사용하여 데이터 페이로드를 개별 SPN으로 디코딩합니다.
- 비트 위치 및 길이
- 배율 및 오프셋
- 엔지니어링 부서
4. DDS 출판 단계
- 게이트웨이는
C_Parameter_Group_Definition(PGN 메타데이터)이 처음 나타날 때 이를 게시합니다. - 메시지에 포함된 각 SPN에 대해:
- 값과 상태를 포함하는
C_Parameter메시지를 생성합니다. - 타임스탬프와 출처 식별 정보를 추가합니다.
- DDS 주제에 게시합니다
- 값과 상태를 포함하는
- 주기적인 상태 업데이트(1Hz)를 통해 게이트웨이 상태를 게시합니다.
5. 소비 단계
- GVA 애플리케이션(HMI, LDMX)은 J1939 DDS 토픽을 구독합니다.
- DDS 미들웨어를 통해 파라미터 업데이트를 수신합니다.
- UI 요소(속도계, 타코미터, 기어 표시)를 업데이트합니다.
프로토콜 세부 정보
J1939 CAN ID 구조(29비트)
Bits 28-26: Priority (0-7)
Bit 25: Reserved
Bit 24: Data Page (DP)
Bits 23-16: PDU Format (PF)
Bits 15-8: PDU Specific (PS) - group extension or destination
Bits 7-0: Source Address (SA)
PGN = (DP << 16) | (PF << 8) | (PS if PF >= 240 else 0)CAN 프레임 디코딩 예시
CAN ID: 0x18F00400
Binary: 00011000111100000000010000000000
Priority: 0x6 (bits 28-26) = 6 (normal priority)
Reserved: 0 (bit 25)
DP: 0 (bit 24)
PF: 0xF0 (bits 23-16) = 240 (broadcast)
PS: 0x04 (bits 15-8) = 4 (group extension)
SA: 0x00 (bits 7-0) = 0 (engine controller)
PGN = (0 << 16) | (240 << 8) | 4 = 61444 (EEC1 - Engine Controller 1)빠른 시작
1. 차량 시뮬레이터 제작
cd build
cmake ..
make gva-vehicle-sim2. 가상 CAN 설정
sudo scripts/test/j1939/setup-vcan.sh3. 차량 시뮬레이터를 시작하세요
# GUI mode with OpenDRIVE track
./build/bin/gva-vehicle-sim \
--domain=0 \
--opendrive=data/opendrive/ZalaZONE_full.xodr \
--can-interface=vcan0
# Headless mode with J1939 only
./build/bin/gva-vehicle-sim \
--domain=0 \
--can-interface=vcan0 \
--headless4. J1939 게이트웨이 시작
./build/bin/gva-j1939-gateway \
--domain=0 \
--interface=vcan0 \
--config=/etc/gva/j1939-config.json5. LDMX를 이용한 모니터링
./build/bin/ldmx
# Navigate to J1939 tab to see live parameters구성
차량 시뮬레이터 구성
vehicle-sim-config.json 생성하세요:
{
"j1939": {
"enabled": true,
"sourceAddress": 0,
"gatewayResourceId": 1000,
"updateRateHz": 10
},
"vehicle": {
"maxSpeed": 120.0,
"maxRpm": 6000,
"gearRatios": [3.5, 2.5, 1.8, 1.3, 1.0, 0.8],
"engineIdleRpm": 800
}
}J1939 게이트웨이 구성
PGN/SPN 정의 및 스케일링 매개변수는 /etc/gva/j1939-config.json 파일을 참조하십시오.
사용 사례
1. HMI 개발
- 실제 차량 없이 차량 대시보드를 개발하세요
- 테스트 계측기 클러스터 렌더링 및 애니메이션
- 경고/알람 임계값을 검증합니다.
2. 알고리즘 테스트
- 모의 연료 소비량을 사용하여 친환경 운전 알고리즘을 테스트합니다.
- 예측 유지보수 로직을 검증합니다.
- 자율 주행 의사 결정 기능을 테스트합니다.
3. 통합 테스트
- CAN → DDS → 애플리케이션의 엔드투엔드 데이터 흐름을 검증합니다.
- 부하 상태에서 게이트웨이 성능을 테스트하세요.
- 하위 시스템 간 데이터 동기화를 검증합니다.
4. 교육 및 시연
- 안전한 작업자 교육 환경
- 차량 없이 진행되는 고객 시연
- GVA 건축을 위한 교육 도구
성능 특성
| 미터법 | 값 |
|---|---|
| CAN 프레임 생성 속도 | PGN당 최대 100Hz |
| DDS 게시 지연 시간 | < 5ms (로컬) |
| 게이트웨이 처리량 | > 1000 PGN/초 |
| CPU 사용량(시뮬레이터 + 게이트웨이) | < 10% (4코어 시스템) |
| 메모리 사용량 | (총 용량) 약 50MB |
비교: 물리적 vs. 시뮬레이션
| 측면 | 물리적 차량 | 모의 실험 장치 |
|---|---|---|
| 하드웨어 비용 | 5만 달러 이상 | 0달러 (소프트웨어만 해당) |
| 설정 시간 | 소요 시간 (배선, 설정) | 분 |
| 재현성 | 제한적임 (운전자의 변동성) | 완벽한 (결정론적) |
| 안전 | 손해/부상 위험 | 위험 부담 없음 |
| 시나리오 제어 | 어려움 (날씨, 교통) | 완벽한 제어 |
| 데이터 로깅 | 장비가 필요합니다 | 내장형 |
| 병렬 테스트 | 한 번에 한 대씩 차량 | 여러 인스턴스 |
문제 해결
일반적인 문제점
CAN 인터페이스를 찾을 수 없습니다.
# Verify vcan0 exists
ip link show vcan0
# Recreate if needed
sudo scripts/test/j1939/setup-vcan.shDDS 메시지 없음
# Check gateway is running
pgrep -a gva-j1939-gateway
# Verify domain ID matches
./build/bin/gva-j1939-gateway --domain=0
./build/bin/gva-vehicle-sim --domain=0게이트웨이가 메시지를 디코딩하지 못합니다
# Check CAN frames are being sent
candump vcan0
# Verify configuration file
cat /etc/gva/j1939-config.json지금 바로 데모를 요청하세요.