{"id":16219309,"url":"https://github.com/ivanseidel/node-ssl-vision","last_synced_at":"2025-07-03T11:02:12.875Z","repository":{"id":133091574,"uuid":"103859815","full_name":"ivanseidel/node-ssl-vision","owner":"ivanseidel","description":"RoboCup SSL Vision Client library for Node.JS","archived":false,"fork":false,"pushed_at":"2018-12-08T18:28:43.000Z","size":13,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-03T11:01:59.111Z","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/ivanseidel.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}},"created_at":"2017-09-17T20:33:03.000Z","updated_at":"2019-11-25T09:05:08.000Z","dependencies_parsed_at":null,"dependency_job_id":"6d3d054a-b14e-4f45-9176-28813c909f98","html_url":"https://github.com/ivanseidel/node-ssl-vision","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ivanseidel/node-ssl-vision","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivanseidel%2Fnode-ssl-vision","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivanseidel%2Fnode-ssl-vision/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivanseidel%2Fnode-ssl-vision/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivanseidel%2Fnode-ssl-vision/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ivanseidel","download_url":"https://codeload.github.com/ivanseidel/node-ssl-vision/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivanseidel%2Fnode-ssl-vision/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263314092,"owners_count":23447289,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":"2024-10-10T11:54:19.445Z","updated_at":"2025-07-03T11:02:12.617Z","avatar_url":"https://github.com/ivanseidel.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SSL Vision NodeJS Client\n\n[![ssl-vision Version][ssl-vision-version-image]][ssl-vision-version-link]\n\nRead RoboCup SSL Vision from NodeJS\n\n[ssl-vision-version-image]: https://img.shields.io/npm/v/ssl-vision.svg?style=flat\u0026label=ssl-vision\n[ssl-vision-version-link]: https://www.npmjs.com/package/ssl-vision\n\n## Installation\n\n```\n$ npm install ssl-vision\n```\n\n## Why\n\nThis library was created for three main reasons:\n\n1. Because it should be simple to read from SSL Vision in all languages\n2. Encourage new teams to adopt new languages\n3. Because we wanted to\n\n## Usage\n\n```javascript\nconst SSLVision = require('ssl-vision')\n\nlet client = new SSLVision(\u003cOptional IP\u003e, \u003cOptional PORT\u003e)\n\n// Start listening to UDP Multicast packets and parsing\nclient.connect()\n\n// Reads all data comming from the SSL Vision parsed as JSON Objects\nclient.on('data', (data) =\u003e {\n  console.log(data)\n  // Outputs: { detection: \u003cDetectionData\u003e, geometry: \u003cGeometryData\u003e }\n})\n\n// Listens only to geometry data\nclient.on('geometry', (geometry) =\u003e {\n  // Outputs \u003cGeometryData\u003e  \n})\n\n// Listens only to detection data\nclient.on('detection', (detection) =\u003e {\n  // Outputs \u003cDetectionData\u003e  \n})\n```\n\n### Connection Callback\n\n```javascript\n\n// Will run once connection is made\nclient.connect(() =\u003e {\n  console.log('connected!')\n})\n\n// Will wait until connected\nasync function start() {\n  await client.connect()\n  console.log('connected!')\n}\n\n// Will run once connection is made\nclient.on('connect', () =\u003e {\n  console.log('connected!')\n})\n\n```\n\n\n### `DetectionData` Format\n\n\n```json\n{\n  \"detection\": {\n    \"frame_number\": 377308,\n    \"t_capture\": 13977.820277,\n    \"t_sent\": 1505683703.172275,\n    \"camera_id\": 1,\n    \"balls\": [\n      {\n        \"confidence\": 0.930344820022583,\n        \"area\": 78,\n        \"x\": -14.979391098022461,\n        \"y\": -12.432811737060547,\n        \"z\": 0,\n        \"pixel_x\": 276.5769348144531,\n        \"pixel_y\": 225.73077392578125\n      }\n    ],\n    \"robots_yellow\": [],\n    \"robots_blue\": []\n  },\n  \"geometry\": null\n}\n```\n\n\n### `GeometryData` Format\n\n```json\n{\n  \"field\": {\n    \"field_length\": 1500,\n    \"field_width\": 1300,\n    \"goal_width\": 100,\n    \"goal_depth\": 40,\n    \"boundary_width\": 3,\n    \"field_lines\": [\n      {\n        \"name\": \"TopTouchLine\",\n        \"p1\": {\n          \"x\": -750,\n          \"y\": 650\n        },\n        \"p2\": {\n          \"x\": 750,\n          \"y\": 650\n        },\n        \"thickness\": 10\n      },\n      \"{... other field lines ...}\"\n    ],\n    \"field_arcs\": [\n      {\n        \"name\": \"CenterCircle\",\n        \"center\": {\n          \"x\": 0,\n          \"y\": 0\n        },\n        \"radius\": 150,\n        \"a1\": 10,\n        \"a2\": 0,\n        \"thickness\": 10\n      },\n      \"{... other field arcs ...}\"\n    ]\n  },\n  \"calib\": [\n    {\n      \"camera_id\": 0,\n      \"focal_length\": 2.1379730701446533,\n      \"principal_point_x\": 390,\n      \"principal_point_y\": 290,\n      \"distortion\": 0,\n      \"q0\": -0.0780009999871254,\n      \"q1\": -0.9969499707221985,\n      \"q2\": 0.0014819999923929572,\n      \"q3\": 0.0017130000051110983,\n      \"tx\": -621141.125,\n      \"ty\": -459652.8125,\n      \"tz\": 3500,\n      \"derived_camera_world_tx\": -542101.5625,\n      \"derived_camera_world_ty\": 550669.6875,\n      \"derived_camera_world_tz\": -0.6016282439231873\n    },\n    \"{... other cameras ...}\"\n  ]\n}\n``` \n\n### Creator\n[Ivan Seidel Gomes](https://github.com/ivanseidel)\n[João Pedro Vilas Boas](https://github.com/joaopedrovbs)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivanseidel%2Fnode-ssl-vision","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fivanseidel%2Fnode-ssl-vision","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivanseidel%2Fnode-ssl-vision/lists"}