{"id":51265897,"url":"https://github.com/machbase/neo-lidar-demo","last_synced_at":"2026-06-29T15:01:45.025Z","repository":{"id":361320414,"uuid":"1252924573","full_name":"machbase/neo-lidar-demo","owner":"machbase","description":null,"archived":false,"fork":false,"pushed_at":"2026-05-30T04:43:23.000Z","size":302,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-30T06:11:43.714Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/machbase.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-29T02:18:19.000Z","updated_at":"2026-05-30T04:43:26.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/machbase/neo-lidar-demo","commit_stats":null,"previous_names":["machbase/neo-lidar-demo"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/machbase/neo-lidar-demo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/machbase%2Fneo-lidar-demo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/machbase%2Fneo-lidar-demo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/machbase%2Fneo-lidar-demo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/machbase%2Fneo-lidar-demo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/machbase","download_url":"https://codeload.github.com/machbase/neo-lidar-demo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/machbase%2Fneo-lidar-demo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34931592,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-29T02:00:05.398Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-29T15:01:42.304Z","updated_at":"2026-06-29T15:01:45.004Z","avatar_url":"https://github.com/machbase.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Machbase Neo LiDAR Demo\n\nKITTI raw autonomous-driving data를 Machbase Neo에 저장하고, 브라우저에서 3D LiDAR point cloud와 차량 pose를 재생하는 데모입니다.\n\n  \u003ctable\u003e\n    \u003ctr\u003e\n      \u003ctd width=\"33%\"\u003e\n        \u003cimg src=\"https://github.com/machbase/neo-lidar-demo/blob/main/doc/images/neo-lidar-1.png\" alt=\"Neo LiDAR demo 1\" width=\"100%\"\u003e\n      \u003c/td\u003e\n      \u003ctd width=\"33%\"\u003e\n        \u003cimg src=\"https://github.com/machbase/neo-lidar-demo/blob/main/doc/images/neo-lidar-2.png\" alt=\"Neo LiDAR demo 2\" width=\"100%\"\u003e\n      \u003c/td\u003e\n      \u003ctd width=\"33%\"\u003e\n        \u003cimg src=\"https://github.com/machbase/neo-lidar-demo/blob/main/doc/images/neo-lidar-3.png\" alt=\"Neo LiDAR demo 3\" width=\"100%\"\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/table\u003e\n\n\nGitHub repository:\n```text\nhttps://github.com/machbase/neo-lidar-demo.git\n```\n\n## 실행 환경 구분\n\n이 문서는 명령 실행 위치를 명시합니다.\n\n| 표기 | 의미 | 사용하는 명령 |\n|---|---|---|\n| Linux shell | OS 터미널 | `git`, `unzip`, `curl`, `ss`, 환경변수 설정 |\n| JSH shell | Machbase Neo JSH 내부 shell | `./scripts/*.js`, `./server.js` |\n| PowerShell | Windows PowerShell | `Expand-Archive` |\n\n중요:\n\n- JSH shell은 Linux shell이 아닙니다.\n- JSH shell 내부에는 `export` 명령이 없습니다.\n- `export`, `unzip`, `curl`, `ss`, redirection, `setsid` 같은 명령은 Linux shell에서 실행합니다.\n- `.js` 스크립트는 JSH shell에서 실행합니다.\n\n이 문서의 경로 가정:\n\n```text\nLinux shell: \u003cNEO_HOME\u003e/neo-lidar-demo\nJSH shell:   /work/neo-lidar-demo\n```\n\n`\u003cNEO_HOME\u003e`은 Machbase Neo가 설치된 디렉토리입니다. JSH shell에서는 같은 설치 디렉토리가 `/work`로 보인다고 가정합니다.\n\n## 전체 흐름\n\n1. Linux shell에서 `\u003cNEO_HOME\u003e` 아래에 repository를 clone합니다.\n2. JSH shell에서 KITTI zip을 다운로드합니다.\n3. Linux shell 또는 PowerShell에서 zip을 풉니다.\n4. JSH shell에서 데이터 확인, 스키마 생성, ingest를 실행합니다.\n5. JSH shell에서 데모 API/UI 서버를 실행합니다.\n6. Linux shell에서 API 상태를 확인하고 브라우저로 접속합니다.\n\n## 준비물\n\n- Linux shell\n- Git\n- Machbase Neo 설치 디렉토리\n- 실행 중인 Machbase Neo DB\n- 인터넷 연결\n- 충분한 디스크 공간\n\nKITTI drive zip만 약 37 GiB입니다. zip 파일과 압축 해제 결과를 모두 저장할 공간을 준비합니다.\n\nMachbase Neo DB 접속 기본값:\n\n```text\nhost: 127.0.0.1\nport: 5656\nuser: sys\npassword: manager\n```\n\n다른 DB 접속값을 써야 하면 Linux shell에서 Machbase Neo/JSH를 시작하기 전에 환경변수를 설정합니다. 이미 떠 있는 JSH shell 내부에서 `export`를 입력하는 방식은 아닙니다.\n\n```sh\n# Linux shell\nexport PHY_DB_HOST=127.0.0.1\nexport PHY_DB_PORT=5656\nexport PHY_DB_USER=sys\nexport PHY_DB_PASSWORD=manager\n```\n\n## 1. 프로젝트 받기\n\nLinux shell에서 실행합니다.\n\n```sh\n# Linux shell\ncd \u003cNEO_HOME\u003e\ngit clone https://github.com/machbase/neo-lidar-demo.git\ncd neo-lidar-demo\ngit status\nls -la\n```\n\nSSH key가 GitHub에 등록되어 있으면 SSH URL을 사용할 수 있습니다.\n\n```sh\n# Linux shell\ncd \u003cNEO_HOME\u003e\ngit clone git@github.com:machbase/neo-lidar-demo.git\ncd neo-lidar-demo\n```\n\n디렉토리 구조:\n\n```text\napp/             JSH HTTP server\nlib/             DB/API/KITTI helper code\nscripts/         download, schema, ingest scripts\npublic/          browser frontend\ndata/            local dataset directory\n```\n\nJSH shell에서는 프로젝트가 아래 경로로 보여야 합니다.\n\n```text\n/work/neo-lidar-demo\n```\n\n## 2. KITTI 데이터 다운로드\n\nJSH shell에서 실행합니다.\n\n```text\n/ \u003e cd /work/neo-lidar-demo\n/work/neo-lidar-demo \u003e ./scripts/download-data.js --out data/raw/kitti --parallel 4 --chunk-mb 64 --download-only\n```\n\n사용 데이터:\n\n```text\n2011_09_30_drive_0028_sync\n2011_10_03_drive_0027_sync\n```\n\n다운로드되는 주요 파일:\n\n```text\ndata/raw/kitti/archives/2011_09_30_calib.zip\ndata/raw/kitti/archives/2011_09_30_drive_0028_sync.zip\ndata/raw/kitti/archives/2011_10_03_calib.zip\ndata/raw/kitti/archives/2011_10_03_drive_0027_sync.zip\n```\n\n`--parallel`은 동시에 받는 range chunk 수이고 `--chunk-mb`는 chunk 크기입니다. JSH HTTP 클라이언트는 range chunk를 파일에 쓰기 전에 메모리에 올리므로 다운로드 중 메모리 사용량은 대략 `parallel * chunk-mb` MiB 이상으로 잡아야 합니다.\n\n메모리가 적은 환경에서는 아래처럼 낮춰서 실행합니다.\n\n```text\n/work/neo-lidar-demo \u003e ./scripts/download-data.js --out data/raw/kitti --parallel 2 --chunk-mb 32 --download-only\n```\n\n## 3. 압축 해제\n\n압축 해제는 JSH shell이 아니라 OS shell에서 실행합니다.\n\nLinux shell 또는 WSL:\n\n```sh\n# Linux shell, cwd: \u003cNEO_HOME\u003e/neo-lidar-demo\nunzip -o data/raw/kitti/archives/2011_09_30_calib.zip -d data/raw/kitti\nunzip -o data/raw/kitti/archives/2011_09_30_drive_0028_sync.zip -d data/raw/kitti\nunzip -o data/raw/kitti/archives/2011_10_03_calib.zip -d data/raw/kitti\nunzip -o data/raw/kitti/archives/2011_10_03_drive_0027_sync.zip -d data/raw/kitti\n```\n\n`unzip`이 없으면 Linux shell에서 설치합니다.\n\n```sh\n# Linux shell\nsudo apt update\nsudo apt install unzip\n```\n\nWindows PowerShell:\n\n```powershell\n# PowerShell, cwd: \u003cNEO_HOME\u003e\\neo-lidar-demo\n$dest = \"data\\raw\\kitti\"\n$archives = \"data\\raw\\kitti\\archives\"\n\nExpand-Archive -Force -Path \"$archives\\2011_09_30_calib.zip\" -DestinationPath $dest\nExpand-Archive -Force -Path \"$archives\\2011_09_30_drive_0028_sync.zip\" -DestinationPath $dest\nExpand-Archive -Force -Path \"$archives\\2011_10_03_calib.zip\" -DestinationPath $dest\nExpand-Archive -Force -Path \"$archives\\2011_10_03_drive_0027_sync.zip\" -DestinationPath $dest\n```\n\n7-Zip:\n\n```powershell\n# PowerShell, cwd: \u003cNEO_HOME\u003e\\neo-lidar-demo\n$dest = \"data\\raw\\kitti\"\n$archives = \"data\\raw\\kitti\\archives\"\n\n7z x \"$archives\\2011_09_30_calib.zip\" \"-o$dest\" -y\n7z x \"$archives\\2011_09_30_drive_0028_sync.zip\" \"-o$dest\" -y\n7z x \"$archives\\2011_10_03_calib.zip\" \"-o$dest\" -y\n7z x \"$archives\\2011_10_03_drive_0027_sync.zip\" \"-o$dest\" -y\n```\n\n압축 해제 후 주요 디렉토리:\n\n```text\ndata/raw/kitti/2011_09_30/2011_09_30_drive_0028_sync/\ndata/raw/kitti/2011_10_03/2011_10_03_drive_0027_sync/\n```\n\n## 4. 데이터 확인\n\nJSH shell에서 스크립트로 확인합니다.\n\n```text\n/work/neo-lidar-demo \u003e ./scripts/check-data.js --data-root data/raw/kitti --sequence 2011_09_30_drive_0028_sync\n/work/neo-lidar-demo \u003e ./scripts/check-data.js --data-root data/raw/kitti --sequence 2011_10_03_drive_0027_sync\n```\n\n`velodyne_points/data`가 `true`로 나오면 LiDAR frame 파일이 있는 것입니다.\n\nLinux shell에서 frame 수를 직접 확인할 수도 있습니다.\n\n```sh\n# Linux shell, cwd: \u003cNEO_HOME\u003e/neo-lidar-demo\nfind data/raw/kitti -path '*/velodyne_points/data/*.bin' -type f | wc -l\n```\n\n전체 로딩 대상은 `9721` frames입니다.\n\n## 5. 스키마 생성\n\nJSH shell에서 실행합니다.\n\n```text\n/work/neo-lidar-demo \u003e ./scripts/schema.js\n```\n\n생성되는 테이블:\n\n```text\nPHY_TIMELINE\nPHY_LIDAR_FRAME\n```\n\n주요 인덱스:\n\n```text\nIDX_PHY_TIMELINE_FRAME_ID\nIDX_PHY_LIDAR_FRAME_ID\n```\n\n확인:\n\n```text\n/work/neo-lidar-demo \u003e ./scripts/list-tables.js\n/work/neo-lidar-demo \u003e ./scripts/list-indexes.js\n```\n\n기존 데모 테이블을 지우고 다시 만들려면 아래를 실행합니다.\n\n```text\n/work/neo-lidar-demo \u003e ./scripts/reset-schema.js\n```\n\n주의: `PHY_TIMELINE`, `PHY_LIDAR_FRAME` 데이터가 삭제됩니다.\n\n## 6. 데이터 로딩\n\nJSH shell에서 실행합니다.\n\n```text\n/work/neo-lidar-demo \u003e ./scripts/ingest.js --data-root data/raw/kitti\n```\n\n일부만 테스트 로딩하려면 `--limit`을 사용합니다.\n\n```text\n/work/neo-lidar-demo \u003e ./scripts/reset-schema.js\n/work/neo-lidar-demo \u003e ./scripts/ingest.js --data-root data/raw/kitti --limit 300\n```\n\n전체 데모를 보려면 `--limit` 없이 다시 로딩해야 합니다.\n\n로딩 결과는 하나의 논리 sequence로 저장됩니다.\n\n```text\ndataset: kitti-raw\nsequence: kitti-raw-10m\n```\n\n전체 로딩 결과는 다음과 같아야 합니다.\n\n```text\nframes: 9721\nlidar: 9721\n```\n\n## 7. 데모 서버 실행\n\nJSH shell에서 `app` 디렉토리로 이동한 뒤 실행합니다.\n\n```text\n/work/neo-lidar-demo \u003e cd app\n/work/neo-lidar-demo/app \u003e ./server.js --host 127.0.0.1 --port 56802\n```\n\n정상 시작 메시지:\n\n```text\nneo-lidar-demo server started tcp 127.0.0.1:56802\n```\n\n서버는 foreground에서 실행됩니다. 중지하려면 실행 중인 JSH shell에서 `Ctrl+C`를 누릅니다.\n\nGin debug mode 경고가 출력될 수 있습니다.\n\n```text\n[GIN-debug] [WARNING] Running in \"debug\" mode.\n```\n\n이 경고는 데모 실행을 막지 않습니다. 로그를 줄여야 하는 운영 환경에서는 JSH shell 내부가 아니라 Machbase Neo process 또는 service를 시작하는 Linux 환경에 `GIN_MODE=release`를 설정합니다.\n\n```sh\n# Linux shell, Machbase Neo/JSH를 시작하기 전에 설정\nexport GIN_MODE=release\n```\n\n## 8. 서버 확인과 브라우저 접속\n\n서버 확인은 Linux shell에서 실행합니다.\n\n```sh\n# Linux shell\ncurl http://127.0.0.1:56802/api/health\n```\n\n정상 응답:\n\n```json\n{\"app\":\"neo-lidar-demo\",\"ok\":true}\n```\n\n브라우저에서 아래 주소를 엽니다.\n\n```text\nhttp://127.0.0.1:56802/\n```\n\nMachbase Neo HTTP 서버의 package 경로에서도 열 수 있습니다. 이 경우에도 `56802` 데모 API 서버가 같이 떠 있어야 합니다.\n\n```text\nhttp://127.0.0.1:5654/db/tql/neo-lidar-demo/public/index.html\n```\n\nAPI 서버 포트를 바꿔 실행했다면 `apiBase`를 URL에 지정합니다.\n\n```text\nhttp://127.0.0.1:5654/db/tql/neo-lidar-demo/public/index.html?apiBase=http://127.0.0.1:56803\n```\n\n## 화면 기능\n\n- 3D LiDAR point cloud\n- 차량 모델\n- frame 번호\n- speed\n- point count\n- LOD 선택\n- point cloud 색상 모드와 범례\n- source frame, raw/shown point 비율, downsample 배율, query latency\n- top view 미니맵과 10m/25m/50m range ring\n- 카메라 선택\n- timeline 재생\n\n카메라 옵션:\n\n```text\nOrbit\nChase\nHigh Chase\nHood\nTop\nSide\nFront\n```\n\n카메라 조작:\n\n- `Orbit` 모드: 마우스 드래그, 휠, 우클릭 드래그로 자유 시점을 조작합니다.\n- 추적 모드: 차량 추적은 유지한 상태에서 마우스 휠로 거리 확대/축소, 우클릭 드래그 또는 Shift+드래그로 프레이밍을 이동합니다.\n- 추적 모드에서 더블클릭하면 현재 카메라의 거리와 프레이밍 보정을 초기화합니다.\n\nURL로 카메라를 직접 지정할 수 있습니다.\n\n```text\nhttp://127.0.0.1:56802/?camera=top\nhttp://127.0.0.1:56802/?camera=side\nhttp://127.0.0.1:56802/?camera=hood\n```\n\n## 로딩 데이터\n\n기본 전체 로딩 기준:\n\n```text\n2011_09_30_drive_0028_sync: 5177 frames\n2011_10_03_drive_0027_sync: 4544 frames\n합계: 9721 frames\n```\n\nDB timeline 시간 범위:\n\n```text\n2011-09-30 12:42:41.831\n~\n2011-09-30 12:59:30.665\n```\n\n약 16분 49초 분량입니다.\n\n`kitti-raw-10m`은 논리 sequence 이름입니다. 실제로는 로컬에 다운로드한 두 drive 전체를 이어 붙여 로딩합니다.\n\n원본 KITTI 파일과 DB 저장 관계:\n\n| 로컬 원본 파일 | DB 저장 위치 |\n|---|---|\n| `velodyne_points/data/*.bin` | `PHY_LIDAR_FRAME.value` |\n| `velodyne_points/timestamps.txt` | `PHY_TIMELINE.time`, `PHY_LIDAR_FRAME.time` |\n| `oxts/data/*.txt` | `PHY_TIMELINE.value` JSON 내부 pose/speed |\n| `image_00~03` | 현재 데모에서는 DB에 저장하지 않음 |\n| `calib_*.txt` | 현재 데모에서는 DB에 저장하지 않음 |\n\nLiDAR binary는 PNG 이미지가 아니라 point cloud입니다. 한 점은 16 bytes이며 다음 4개 `float32` 값으로 구성됩니다.\n\n```text\nx, y, z, intensity\n```\n\n## API 확인\n\nLinux shell에서 실행합니다.\n\n```sh\n# Linux shell\ncurl http://127.0.0.1:56802/api/manifest\ncurl http://127.0.0.1:56802/api/poses\ncurl 'http://127.0.0.1:56802/api/frame?frameId=100'\ncurl 'http://127.0.0.1:56802/api/points?frameId=100\u0026lod=2'\n```\n\nLOD 의미:\n\n```text\nLOD 0: 원본 point에 가장 가까움\nLOD 1: 4개 중 1개 point 사용\nLOD 2: 12개 중 1개 point 사용\n```\n\nDB에는 LOD별 데이터를 따로 저장하지 않습니다. DB에는 원본 LiDAR binary만 저장하고, API가 요청 시 downsample합니다.\n\n## 주요 SQL\n\n초기 manifest:\n\n```sql\nSELECT dataset, sequence, MIN(time) min_time, MAX(time) max_time, COUNT(*) frame_count\nFROM PHY_TIMELINE\nGROUP BY dataset, sequence\nORDER BY dataset, sequence\nLIMIT 20;\n```\n\npose cache 로딩:\n\n```sql\nSELECT time, value, frame_id\nFROM PHY_TIMELINE\nWHERE name = 'kitti-raw.kitti-raw-10m.timeline'\nORDER BY frame_id\nLIMIT 20000;\n```\n\n재생 중 LiDAR frame 갱신:\n\n```sql\nSELECT value, point_count, byte_count\nFROM PHY_LIDAR_FRAME\nWHERE name = 'kitti-raw.kitti-raw-10m.velodyne.raw'\n  AND frame_id = ?\nLIMIT 1;\n```\n\n차량 pose와 카메라는 브라우저 메모리에 미리 로딩한 pose cache에서 처리하므로, 매 렌더 프레임마다 SQL이 실행되지는 않습니다.\n\n## 문제 해결\n\n### 브라우저에서 연결 거부가 나올 때\n\nLinux shell에서 서버 포트를 확인합니다.\n\n```sh\n# Linux shell\nss -ltnp | grep 56802\n```\n\n서버가 없으면 JSH shell에서 다시 실행합니다.\n\n```text\n/ \u003e cd /work/neo-lidar-demo/app\n/work/neo-lidar-demo/app \u003e ./server.js --host 127.0.0.1 --port 56802\n```\n\n### 5654 package URL에서 화면은 뜨지만 플레이가 안 될 때\n\n아래 API 서버가 같이 떠 있어야 합니다.\n\n```text\n/work/neo-lidar-demo/app \u003e ./server.js --host 127.0.0.1 --port 56802\n```\n\n그리고 Linux shell에서 API가 응답하는지 확인합니다.\n\n```sh\n# Linux shell\ncurl http://127.0.0.1:56802/api/health\n```\n\n### 데이터가 안 보일 때\n\nLinux shell에서 manifest를 확인합니다.\n\n```sh\n# Linux shell\ncurl http://127.0.0.1:56802/api/manifest\n```\n\n`frameCount`가 `0`이거나 synthetic fallback이 나오면 DB 로딩이 안 된 것입니다. JSH shell에서 다시 로딩합니다.\n\n```text\n/work/neo-lidar-demo \u003e ./scripts/reset-schema.js\n/work/neo-lidar-demo \u003e ./scripts/ingest.js --data-root data/raw/kitti\n```\n\n### 데이터 다운로드가 중간에 끊겼을 때\n\n먼저 JSH shell에서 같은 다운로드 명령을 다시 실행합니다. 스크립트는 `.parts` 디렉토리의 완료된 chunk와 `.part` 조립 파일을 재사용합니다.\n\n```text\n/work/neo-lidar-demo \u003e ./scripts/download-data.js --out data/raw/kitti --parallel 4 --chunk-mb 64 --download-only\n```\n\n계속 실패하거나 파일 크기가 맞지 않는 zip이 남아 있으면 Linux shell에서 해당 zip, `.part`, `.parts`만 지우고 다시 실행합니다.\n\n```sh\n# Linux shell, cwd: \u003cNEO_HOME\u003e/neo-lidar-demo\nrm -rf data/raw/kitti/archives/2011_09_30_drive_0028_sync.zip \\\n       data/raw/kitti/archives/2011_09_30_drive_0028_sync.zip.part \\\n       data/raw/kitti/archives/2011_09_30_drive_0028_sync.zip.parts\n```\n\n그 다음 JSH shell에서 다운로드를 재시도합니다.\n\n```text\n/work/neo-lidar-demo \u003e ./scripts/download-data.js --out data/raw/kitti --parallel 4 --chunk-mb 64 --download-only\n```\n\n다운로드는 끝났는데 압축 해제 중 실패했다면 ZIP을 다시 받지 말고 OS shell에서 압축 해제만 다시 실행합니다.\n\n### 포인트가 느리게 뜰 때\n\n먼저 LOD 2로 봅니다. LOD 0은 훨씬 많은 point를 그립니다.\n\n인덱스가 생성되어 있는지도 JSH shell에서 확인합니다.\n\n```text\n/work/neo-lidar-demo \u003e ./scripts/list-indexes.js\n```\n\n`IDX_PHY_LIDAR_FRAME_ID`가 있어야 합니다.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmachbase%2Fneo-lidar-demo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmachbase%2Fneo-lidar-demo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmachbase%2Fneo-lidar-demo/lists"}