• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

cheekiang/uwb_localization: Indoor/Outdoor Positioning System framework based on ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称(OpenSource Name):

cheekiang/uwb_localization

开源软件地址(OpenSource Url):

https://github.com/cheekiang/uwb_localization

开源编程语言(OpenSource Language):

Eagle 97.1%

开源软件介绍(OpenSource Introduction):

#uwb_localization

Indoor/Outdoor Positioning System framework based on Decawave's DWM1000 Ultra Wide Band transceivers. The whole system was tested indoors with 3 anchors and 1 tag. Technically this should work outdoors as well.

IMAGE ALT TEXT

###Hardware Both 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 Male so you can plug it straight to a power bank and deploy the anchors remotely.

  1. If you wish to fabricate the PCB, the Gerber files are included /hardware/pcb/fabricate. Seeedstudio's DRU for 2-layer board was used to verify the design.

  2. Download the DWM1000 Arduino library https://github.com/thotro/arduino-dw1000 .

  3. The current DWM1000 Arduino library uses random address for the anchors and doesn't support arbitrary addresses. You need to edit https://github.com/thotro/arduino-dw1000/blob/master/src/DW1000Ranging.cpp#L164-L165 every time you upload the anchor codes to have unique address per anchor from:

    _currentShortAddress[0] = random(0, 256);
    _currentShortAddress[1] = random(0, 256);

    to the address you want (ie. address: '01'):

    _currentShortAddress[0] = 1;
    _currentShortAddress[1] = 0;
  4. Save DW1000Ranging.cpp and upload the codes from /hardware/arduino to your tag and anchors.

###Installation

  1. Install dependencies

    $ pip install localization
    $ pip install scipy
    $ pip install shapely
  2. Install map_server

    $ sudo apt-get install ros-indigo-map-server
  3. Build the package

    $ cd ~/catkin_ws
    $ catkin_make

###Defining TF

  1. You need to define the transforms from map to each anchor's frame. You can run map_server and load your map to identify the exact points you want your anchors placed. Open RVIZ and click on the location of each anchor by using "Publish Points".

  2. Once you get the exact location of each anchor, add the transforms in /launch/tf.launch file. Take note that the frame_id of each anchor must be the same as the address defined in Arduino (_currentShortAddress[]).

###Usage

  1. Run lips.launch:

    $ roslaunch uwb_localization localize.launch
    

###Parameters #####serial_port(default: '/dev/ttyUSB0') Tag's serial port.

#####frame_id(default: 'uwb_tag') Tag's frame_id when transform's published from map to tag.

#####min_anchor(default: 3) The mininum number of anchors the system must find before performing trilateration between anchors. Increase this if you want to improve the accuracy at the expense of computational cost.

#####min_range(default: 0.5) The minimum probable distance from an anchor to a tag to prevent false reading. For example, if your anchor is hanging 1 m away from the floor, it makes sense to put 1 meter as minimum range since there's no way it will range less than 1 meter.

#####max_range(default: 10.0) The 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, you can set the max_range less than or equal the hypotenuse of the room since ranges won't get any longer than that.




鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap