{"id":28457859,"url":"https://github.com/linorobot/ros_dwm1000","last_synced_at":"2026-03-05T04:02:02.872Z","repository":{"id":45795095,"uuid":"80608224","full_name":"linorobot/ros_dwm1000","owner":"linorobot","description":"Indoor/Outdoor Positioning System based on Decawave's DWM1000 Ultra Wide Band transceivers.","archived":false,"fork":false,"pushed_at":"2020-10-01T17:50:21.000Z","size":436,"stargazers_count":76,"open_issues_count":2,"forks_count":34,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-08-10T11:31:24.502Z","etag":null,"topics":["autonomous-vehicles","localization","robot","robotics","ros"],"latest_commit_sha":null,"homepage":"","language":"Eagle","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/linorobot.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}},"created_at":"2017-02-01T10:05:57.000Z","updated_at":"2025-07-19T16:03:59.000Z","dependencies_parsed_at":"2022-07-17T00:46:05.569Z","dependency_job_id":null,"html_url":"https://github.com/linorobot/ros_dwm1000","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/linorobot/ros_dwm1000","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linorobot%2Fros_dwm1000","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linorobot%2Fros_dwm1000/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linorobot%2Fros_dwm1000/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linorobot%2Fros_dwm1000/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/linorobot","download_url":"https://codeload.github.com/linorobot/ros_dwm1000/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linorobot%2Fros_dwm1000/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30109076,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T03:40:26.266Z","status":"ssl_error","status_checked_at":"2026-03-05T03:39:15.902Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["autonomous-vehicles","localization","robot","robotics","ros"],"created_at":"2025-06-07T00:08:31.071Z","updated_at":"2026-03-05T04:02:01.400Z","avatar_url":"https://github.com/linorobot.png","language":"Eagle","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ros_dwm1000\n\nROS Indoor/Outdoor Positioning System based on Decawave's DWM1000 Ultra Wide Band transceivers.\nThe whole system was tested indoors with 3 anchors and 1 tag. Technically this should work outdoors as well.\n\n[![IMAGE ALT TEXT](http://img.youtube.com/vi/BuBnmrkJ9BY/maxresdefault.jpg)](https://www.youtube.com/embed/BuBnmrkJ9BY \"ROS Indoor Localization using Decawave's UWB Transceivers \")\n\n### Hardware\nBoth anchors and tags use the same circuit board. The board houses the UWB transceiver, an Arduino Pro Mini 3.3V and a built-in USB\nMale so you can plug it straight to a power bank and deploy the anchors remotely.\n\n1. If you wish to fabricate the PCB, the Gerber files are included /hardware/pcb/fabricate.\nSeeedstudio's DRU for 2-layer board was used to verify the design.\n\n2. The DWM1000 Arduino library  uses random address for the anchors and doesn't support arbitrary addresses.\nYou need to edit https://github.com/grassjelly/ros_dwm1000/blob/master/hardware/firmware/anchor/lib/DW1000/DW1000Ranging.cpp#L166-L167 every time you upload the\nanchor codes to have unique address per anchor from:\n\n    ```c++\n    _currentShortAddress[0] = random(0, 256);\n    _currentShortAddress[1] = random(0, 256);\n    ```\n    to the address you want (ie. address: '01'):\n\n    ```c++\n    _currentShortAddress[0] = 1;\n    _currentShortAddress[1] = 0;\n    ```\n\n### Installation\n1. Install dependencies\n\n    ```sh\n    $ pip install localization\n    $ pip install scipy\n    $ pip install shapely\n    ```\n\n2. Install map_server\n\n    ```sh\n    $ sudo apt-get install ros-indigo-map-server\n    ```\n\n3. Build the package\n\n    ```sh\n    $ cd ~/catkin_ws\n    $ catkin_make\n    ```\n\n### Defining TF\n1. You need to define the transforms from map to each anchor's frame. You can run map_server and load your map to identify\nthe exact points you want your anchors placed. Open RVIZ and click on the location of each anchor by using \"Publish Points\".\n\n2. Once you get the exact location of each anchor, add the transforms in /launch/tf.launch file. Take note that the frame_id of\neach anchor must be the same as the address defined in Arduino (_currentShortAddress[]).\n\n### Usage\n1. Run localize.launch:\t\t\t\n\n    ```sh\n    $ roslaunch ros_dwm1000 localize.launch\n    ```\n\n### Parameters\n##### serial_port(default: '/dev/ttyUSB0')\nTag's serial port.\n\n##### frame_id(default: 'uwb_tag')\nTag's frame_id when transform's published from map to tag.\n\n##### req_anchor(default: 3)\nThe mininum number of anchors the system must find before performing trilateration between anchors. Increase this if you want to improve the accuracy. This can be tweaked down to a minimum of 2 anchors. Each tag can only support up to 4 anchors now.\n\n##### min_range(default: 0.5)\nThe minimum probable distance from an anchor to a tag to prevent false reading. For example, if your anchor is hanging 1 m away from\nthe floor, it makes sense to put 1 meter as minimum range since there's no way it will range less than 1 meter.\n\n##### max_range(default: 10.0)\nThe maximum probable distance from an anchor to a tag to prevent false reading. For example, if your anchors are placed in 8 meter x 8 meter room,\nyou can set the max_range less than or equal the hypotenuse of the room since ranges won't get any longer than that.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinorobot%2Fros_dwm1000","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flinorobot%2Fros_dwm1000","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinorobot%2Fros_dwm1000/lists"}