Giter VIP home page Giter VIP logo

fiducials's Introduction

Simultaneous Localization and Mapping Using Fiducial Markers

License

Overview

This package implements a system that uses ceiling mounted fiducial markers (think QR Codes) to allow a robot to identify its location and orientation. It does this by constructing a map of the ceiling fiducials. The position of one fiducial needs to be specified, then a map of the fiducials is built up from observing pairs of markers in the same image. Once the map has been constructed, the robot can identify its location by locating itself relative to one or more ceiling fiducials.

Documentation is at http://wiki.ros.org/fiducials.

Recording A Bag File

Sometimes for trobleshooting purposes it is useful to record a bag file to capture the exact data on the topics going into and out of fiducials.

To do this, while the system is running, run rosbag record -a. You can upload this bag file to a file sharing service like Google Drive and link to it in your issue, this will help us diagnose the problem.

fiducials's People

Contributors

agutenkunst avatar ahendrix avatar alex-gee avatar aravindbattaje avatar billbenson avatar caioaamaral avatar canberkgurel avatar davecrawley avatar david-alejo avatar dorkamotorka avatar jack-digilabs avatar janezcim avatar jim-v avatar jim2v avatar lucasw avatar matjazbostic avatar maxpolzin avatar mjstn avatar moffkalast avatar nav-go avatar rohbotics avatar trainman419 avatar waynegramlich avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fiducials's Issues

0.7.0 Release

We have made a lot of changes, and it is time to do a release to the buildfarm

Test install rules

Make sure that we have all the install rules that we need to actually use pre-built packages

Transition to C++11

We should start using C++11 concepts in fiducials to help clean up the code.

With kinetic, all supported platforms have C++11 support.

aruco_detect & fiducial_detect process segfaults with USB cameras

I have been trying to use USB cameras with the ArUco detection. What I am running into with both aruco_detect and fiducial_detect is that the process dies with exit code -11. With aruco_detect it dies immediately with:

[ INFO] [1507580447.119276852]: Aruco detection ready
[aruco_detect-1] process has died [pid 229, exit code -11, cmd /opt/ros/kinetic/lib/aruco_detect/aruco_detect /camera/compressed:=/usb_cam/ima
ge/compressed /camera_info:=/usb_cam/camera_info __name:=aruco_detect __log:=/root/.ros/log/4cf040da-ad2f-11e7-abe2-0242ac110002/aruco_detect-
1.log].
log file: /root/.ros/log/4cf040da-ad2f-11e7-abe2-0242ac110002/aruco_detect-1*.log

and with fiducial_detect it loops:

process[fiducial_detect-1]: started with pid [418]
[ INFO] [1507580566.238885018]: Fiducials Localization ready
camera intrinsics:
0.000000 0.000000 0.000000 
0.000000 0.000000 0.000000 
0.000000 0.000000 0.000000 

[fiducial_detect-1] process has died [pid 418, exit code -11, cmd /opt/ros/kinetic/lib/fiducial_detect/fiducial_detect /camera/compressed:=/us
b_cam/image/compressed /camera_info:=/usb_cam/camera_info __name:=fiducial_detect __log:=/root/.ros/log/4cf040da-ad2f-11e7-abe2-0242ac110002/f
iducial_detect-1.log].
log file: /root/.ros/log/4cf040da-ad2f-11e7-abe2-0242ac110002/fiducial_detect-1*.log
[fiducial_detect-1] restarting process

and I will then see in dmesg:

[459309.981281] aruco_detect[7187]: segfault at 0 ip 000000000041ac90 sp 00007ffc833be428 error 4 in aruco_detect[400000+4b000]
[459429.206708] fiducial_detect[7399]: segfault at 0 ip 00007faa401d1770 sp 00007ffd139c34b0 error 4 in librpp_pose.so[7faa401b2000+29000]

I reproduced this on a stock Ubuntu 16.04 configuration, as well as on Docker. I tried two different USB cameras using usb_cam (I observed the same results with libuvc_camera, however, I had neglected to write down details of my test). The two cameras are:

Bus 001 Device 011: ID 041e:4097 Creative Technology, Ltd Live! Cam Chat HD [VF0700]
Bus 001 Device 012: ID 0c45:6341 Microdia Defender G-Lens 2577 HD720p Camera

To reproduce, start from the Dockerfile below:

FROM ros:kinetic-ros-base
RUN apt-get update && apt-get install -y \
    tmux \
    ros-kinetic-usb-cam \
    ros-kinetic-fiducials \
    ros-kinetic-image-view \
    && rm -rf /var/lib/apt/lists/*

I used a script something like:

xhost local:root
docker run -ti --rm -e DISPLAY=$DISPLAY --device /dev/video0 -v /tmp/.X11-unix:/tmp/.X11-unix ros_kinetic_desktop

Then run the following in separate terminals (tmux?):

roslaunch usb_cam usb_cam-test.launch
roslaunch aruco_detect aruco_detect.launch camera:=/usb_cam

Or the same with aruco_detect replaced with fiducial_detect. The first command should open a window showing images streaming in; the second should trigger the errors.

Basic Automated Tests

We need tests! We can start out with some basic ones.

  • Publish image(s) of a fiducial in frame, and make sure that the detection outputs a sane vertices.
  • Use existing map, publish image of fiducial, check for sane localization.
  • Image with two fiducials, connect them
  • Bag file with video of moving through a bunch of fiducials, map should make sense (Maybe not as basic)

Build Error in fiducial_pose, Fiducial.h is missing

I get the following error, when I compile the package with catkin_make:

fatal error: fiducial_msgs/Fiducial.h: No such file or directory

This can be fixed by inserting

add_dependencies(rpp_pose ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})

in fiducial_pose/CMakeList.txt

I am on Ubuntu 16.04, Opencv 3.2.0, ROS Kinetic

Marker height drifts

The tf pose of the detected fiducials if very spatially correct however the visualization markers of the same fiducials has high vertical error.

height-drift

Changes to make more testable

  • fiducial_slam should build a map even if base_link to camera tf is not known
  • fiducial_detect should detect fiducials and publish vertices even if no camera_info

Adaptive / adaptive thresholding

To cope better with varying lighting conditions:

  • If a fiducial is not found, increase the range of thresholds that are tried
  • Narrow the threshold search if fiducials are found to the range that found all of them
  • If a threshold is close to 0 or 255, request a change in brightness from the image source (via dynamic configure interface or a new service)

Marker lateral drift

Very minor errors in marker angular pose estimates cause large lateral jumps in the /map frame. The 3DoF position data is great while the full 6DoF pose is extremely noisy.

latteral-shifts

In this below case I'm not sure why the tf and markers are soo far away in both X & Y lateral directions while Z looks good:

screenshot from 2017-05-10 15-24-10

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.