GithubHelp home page GithubHelp logo

ar_tags_localization's Introduction

ar_tags_localization

AR tags are super cool :D

To run, make sure usb_cam is running so ar_track_ar has a camera message to listen to.

Also clone the associated usb_cam repo from here https://github.com/srli/usb_cam

Run:

roslaunch usb_cam usb_camera.launch

roslaunch ar_track_alvar robot.launch

rosrun ar_track_alvar transform_listener.py

Edit robot.launch file to change camera and tag characteristics. Edit transform_listener.py to change tag locations to origin and to add new tags

Transform listener broadcasts the location of the camera in the world frame with (x,y) and angle to the /camera_location node

We considered various ways to faciliate indoor localization, initially starting with the idea of beacon detection. By finding various light beacons placed in strategic locations around the area, we would be able to extrapolate the location of the camera in the world frame through triangulation. However, issues with color filitering in noisy conditions made beacon detection a rather poor choice for reliable detection.

Localization through use of fiducials allows for reliable tag detection in a variety of lighting conditions. Given a fiducial of a known size, we can compute the position of the camera relative to said fiducial based on the distortion of the detected tag. As we know the location of each tag relative to the real world, we can then extract the location of the camera in the world frame. We are basing the majority of the math from the ar_track_alvar library.

Fiducials bring with them many advantages, the greatest of which is reliable detection. A fiducial can also encode data additional to just IDs, including URLs or short bytes of messages, allowing users to provide the robot more information than just tag IDs. Adding additional tags to a system requires running an interactive script that will automatically create new tag images. A robot needs only to see one tag to know where it is in the world, but strategic placement of tags is necessary for more accurate calculations (i.e tags seen at great distances will naturally have more uncertainty).

However, as fiducials are two-dimensional, more tags are needed for the robot to succesfully localize compared to beacons. This problem can be addressed by placing tags on various sides of a pillar or cube and treating the group of tags as a bundle that discribe the same thing in space.

ar_tags_localization's People

Contributors

srli avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.