Giter Club home page Giter Club logo

apriltag_ros's Introduction

apriltag_ros

apriltag_ros is a Robot Operating System (ROS) wrapper of the AprilTag 3 visual fiducial detector. For details and tutorials, please see the ROS wiki.

apriltag_ros depends on the latest release of the AprilTag library. Clone it into your catkin workspace before building.

Authors: Danylo Malyuta, Wolfgang Merkt

Maintainers: Danylo Malyuta (Autonomous Control Laboratory, University of Washington), Wolfgang Merkt

Quickstart

Starting with a working ROS installation (Kinetic and Melodic are supported):

export ROS_DISTRO=melodic               # Set this to your distro, e.g. kinetic or melodic
source /opt/ros/$ROS_DISTRO/setup.bash  # Source your ROS distro 
mkdir -p ~/catkin_ws/src                # Make a new workspace 
cd ~/catkin_ws/src                      # Navigate to the source space
git clone https://github.com/AprilRobotics/apriltag.git      # Clone Apriltag library
git clone https://github.com/AprilRobotics/apriltag_ros.git  # Clone Apriltag ROS wrapper
cd ~/catkin_ws                          # Navigate to the workspace
rosdep install --from-paths src --ignore-src -r -y  # Install any missing packages
catkin build    # Build all packages in the workspace (catkin_make_isolated will work also)

See the ROS wiki for details and tutorials.

Tag Size Definition

For a correct depth estimation (and hence the correct full pose) it is necessary to specify the tag size in config/tags.yaml correctly. In the Wiki for the AprilTag Library the correct interpretation of the term "tag size" is explained. The size is defined by the length of the black/white border between the complete black and white rectangle of any tag type. Note that for apriltag3 marker families this does not in fact correspond to the outside of the marker.

Below is a visualization of the tag size (red arrow) to be specified for the most common tag classes: Tag Size Guide

Contributing

Pull requests are welcome! Especially for the following areas:

  • Publishing of the AprilTag 3 algorithm intermediate images over a ROS image topic (which AprilTag 3 already generates when tag_debug==1)
  • Conversion of the bundle calibration script from MATLAB to Python
  • Extend calibration to support calibrating tags that cannot appear simultaneously with the master tag, but do appear simultaneously with other tags which themselves or via a similar relationship appear with the master tag (e.g. a bundle with the geometry of a cube - if the master is on one face, tags on the opposite face cannot currently be calibrated). This is basically "transform chaining" and potentially allows calibration of bundles with arbitrary geometry as long as a transform chain exists from any tag to the master tag
  • Supporting multiple tag family detection (currently all tags have to be of the same family). This means calling the detector once for each family. Because the core AprilTag 2 algorithm is the performance bottleneck, detection of n tag families will possibly decrease performance by 1/n (tbd if this still holds for v3)

Changelog

  • In March 2019, the code was upgraded to AprilTag 3 and as thus the options refine_pose, refine_decode, and black_border were removed.

Copyright

The source code in apriltag_ros/ is original code that is the ROS wrapper itself, see the LICENSE. It is inspired by apriltags_ros and provides a superset of its functionalities.

If you use this code, please kindly inform Danylo Malyuta (to maintain a list here of research works that have benefited from the code) and cite:

@article{Malyuta2019,
  doi = {10.1002/rob.21898},
  url = {https://doi.org/10.1002/rob.21898},
  pages = {arXiv:1908.06381},
  year = {2019},
  month = aug,
  publisher = {Wiley},
  author = {Danylo Malyuta and Christian Brommer and Daniel Hentzen and Thomas Stastny and Roland Siegwart and Roland Brockers},
  title = {Long-duration fully autonomous operation of rotorcraft unmanned aerial systems for remote-sensing data acquisition},
  journal = {Journal of Field Robotics}
}
@inproceedings{Brommer2018,
  doi = {10.1109/iros.2018.8594111},
  url = {https://doi.org/10.1109/iros.2018.8594111},
  pages = {arXiv:1810.05683},
  year  = {2018},
  month = {oct},
  publisher = {{IEEE}},
  author = {Christian Brommer and Danylo Malyuta and Daniel Hentzen and Roland Brockers},
  title = {Long-Duration Autonomy for Small Rotorcraft {UAS} Including Recharging},
  booktitle = {{IEEE}/{RSJ} International Conference on Intelligent Robots and Systems}
}
@inproceedings{Wang2016,
  author = {Wang, John and Olson, Edwin},
  booktitle = {2016 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
  doi = {10.1109/IROS.2016.7759617},
  isbn = {978-1-5090-3762-9},
  month = {oct},
  pages = {4193--4198},
  publisher = {IEEE},
  title = {{AprilTag 2: Efficient and robust fiducial detection}},
  year = {2016}
}

apriltag_ros's People

Contributors

amalnanavati avatar antbiv avatar benzstefanbosch avatar cactorium avatar camerondevine avatar christian-rauch avatar csukuangfj avatar davelkan avatar dmalyuta avatar iory avatar jack-slip avatar jonbinney avatar jspricke avatar kaiwu013 avatar kyle-saltmarsh avatar lianghongzhuo avatar m0oz avatar maximilianwulf avatar remod avatar rgreid avatar samuelba avatar v4hn avatar wxmerkt 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

apriltag_ros's Issues

Subscribing information in the /tag_detections topic

Hello, I want to get the information about geometry_msgs/PoseWithCovarianceStamped pose in the topic /tag_detections, but subscribing pulished topic /tag_detections, /tag_detections/detections could not find the valid information, what should I do to get the pose information ? Thank you.

Adding branches!

Ok this isn't an issue but i'd like to push some changes to a cpp_beta branch but don't have permissions. Can you add an additional branch or enable others to do so? @dmalyuta

Stops working after a while

Hello.
I am running apriltags2_ros all the time on my mobile and after a while it just stops working, no crash or anything. Just image doesn't show and detections are not there.
The only different thing is that when i kill the launch it says "[apriltags2_ros_continuous_node-14] escalating to SIGTERM ", which doesn't appear when it is running normally.

Thanks,
Luís

Any limit on pixel_format and size?

Hey

I have been trying to use AprilTag detection with a GigE camera that gives me an output of 1280x720 image size and a BayerRG8 image format. It works but the detection rate drops considerably. The rectified image is being published at ~60Hz and the tf information at ~10Hz. When I reduced the image size to 640x480, the update rate became better. I even tested this with a USB camera with 30FPS, 1280x720 and mjpeg format, and found similar results. So is the implementation limited in performance by these factors? Also, what has been the highest publishing frequency for this implementation ever noted and for what parameters? For me it has been max. 30Hz for 640x480 size with yuyv format.

No default tags description

The current set up assumes all tags that may be detected are accounted for directly in a config file. This does not support applications involving large number of standardized tags, which is very common in industry. There should be a default description or size that can be optionally activated as a catch-all setting for detected tags.

Fork/rename package to apriltag_ros to align with upstream Apriltag library

Continuing the discussion from here. With the release of Apriltag 3, should this apriltags2_ros package/repo be forked or renamed?

The 2 suffix will become confusing if @wxmerkt's update to Apriltag 3 is merged.

Naming:

  • There's a mixture of repos called apriltag and apriltags, both with and without the plural
  • The package in the upstream Apriltag 3 repo https://github.com/AprilRobotics/apriltags is consistently named apriltag in CMakeLists.txt and package.xml, and libapriltag in the Makefile.
  • For consistency, I'd suggest this repo/package is forked/renamed to apriltag_ros?
  • Once Apriltag is added to the ROS build farm as discussed here, this will create the packages apriltag and apriltag_ros, which seems consistent.

Fork vs. rename?

  • How many people are building against the ROS package apriltags2_ros and this repo URL? Renaming will break things.
  • Since Apriltag 3 is out and Apriltag 2 is no longer being developed, perhaps this package should archived at version 2 and forked?
  • Can I propose forking this repo into apriltag_ros and merging @wxmerkt's update to Apriltag 3 into it instead?

@dmalyuta I'd be happy to do this, but will look for your guidance first!

ROS Community:
Before forking, we should probably figure how it fits with the broader community. A quick google turned up:

@dmalyuta how did you create the ROS wiki page? If this repo is forked to apriltag_ros, can we create http://wiki.ros.org/apriltag_ros, and add redirect notices on the other wiki pages?

Noetic Release

Is there a timeline/plan to release this package for Ros 1 Noetic?

how can I see the position of apriltags?

when I use it, the /tag_detections_image works well.
but when I use /tag_detections, it detect id and size but it not detect position

header:
seq: 7346
stamp:
secs: 1533046829
nsecs: 846270190
frame_id: "usb_cam"
detections:
id: [3]
size: [0.1]
pose:
header:
seq: 7348
stamp:
secs: 1533046829
nsecs: 846270190
frame_id: "usb_cam"
pose:
pose:
position:
x: 0.0
y: 0.0
z: 0.0
orientation:
x: 0.0
y: 0.0
z: 0.0
w: 1.0
covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

id: [0, 4, 3, 2, 1]
size: [0.1, 0.1, 0.1, 0.1, 0.1]
pose: 
  header: 
    seq: 7348
    stamp: 
      secs: 1533046829
      nsecs: 846270190
    frame_id: "usb_cam"
  pose: 
    pose: 
      position: 
        x: 0.0
        y: 0.0
        z: 0.0
      orientation: 
        x: 0.0
        y: 0.0
        z: 0.0
        w: 1.0
    covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

how can I know the position of apriltag?

The mutex in struct apriltag_detector is initialized but not destroyed

update short description of repository

The short description for this repository states

A ROS wrapper of the AprilTags 2 visual fiducial detector

Please remove the 2 or change it to 3.
The wrong description is confusing when searching for the right repository on github.

Get the center coordinates of the detected object

Is it possible to get the center coordinates of the detected object somehow with this code?
Im getting the relative position to the object by subscribing to the /tag_detections-topic from the camera but I need to move my robot to objects center somehow?

improve accuracy of detection

Hello,

I am detecting tag36h11 with realsense camera using only /rgb topic. When I detect tag it is not giving accurate position information w.r.t camera(ex. tag z distance to camera giving me output of 66 cm where in actual it is 63 cm).

so, How can I improve accuracy of this detections?

is there any usecase where someone also used depth information from realsense with aprtiltag?

thanks.

Support of tagStandard41h12

In the documentation of April Tag 3 it is recommended to use family tagStandard41h12 for all new applications. It would be nice if this family would be supported by this ROS wrapper :)

APril tag cannot Build nor find packages to launch

at /opt/ros/kinetic/share/catkin/cmake/catkin_workspace.cmake:95 (message):
  This workspace contains non-catkin packages in it, and catkin cannot build
  a non-homogeneous workspace without isolation.  Try the
  'catkin_make_isolated' command instead.
Call Stack (most recent call first):
  CMakeLists.txt:67 (catkin_workspace)


-- Configuring incomplete, errors occurred!
See also "/home/asd/c_ws/build/CMakeFiles/CMakeOutput.log".
See also "/home/asd/c_ws/build/CMakeFiles/CMakeError.log".
Invoking "cmake" failed

I am using ubuntu 16.04 with Kinectic distrubition. I can build with catkin_make_isolated, but this time cannot find apriltag package when I try to run it. Even though I used source devel/setup.bash.

Anyone ?

catkin_make error

Hello,

I am trying to install this package by cloning it in
catkin_ws/src and using catkin_make
but it is giving me this error,

CMake Error at /usr/share/cmake-3.5/Modules/FindPkgConfig.cmake:578 (message):
  None of the required 'apriltag' found

am I missing something to install before this package?

thanks.

ROS Warning - Tag descriptions not found.

Hello,
I just installed apriltags2 for ROS Melodic. Apart from updating the camera topic information in the continuous_detection.launch file, none of the other settings have been modified.

When I have a Tag36h11 tag in the field of view I get the following warning:
[ WARN] [1545183966.758860475]: Requested description of standalone tag ID [0], but no description was found...

/tag_detections_image is being published (without the tag highlighted). /tag_detections returns an empty detections array.

Camera data is being published by the usb_cam node to topic /usb_cam/image_raw ( and /usb_cam/camera_info).

I am guessing that this is a rookie issue and any help would be greatly appreciated.

Thank you,
Colm.

same message type for individual tags and bundles

I would suggest having a distinct message for tag bundles and standalone tags. The primary use case of apriltags is standalone tags, and it is a bit weird for users to have to access tag.id[0] for example. I would suggest splitting into AprilTagDetection and AprilTagBundleDetection

build error in jetson TX2 (jetpack 4.2 )

My platform is Jetson TX with jetpack 4.2, ros melodic. When I use catkin build to install apriltag_ros, there is an error.

[ 0%] Built target geometry_msgs_generate_messages_cpp
[ 0%] Built target std_msgs_generate_messages_cpp
[ 0%] Built target _apriltag_ros_generate_messages_check_deps_AnalyzeSingleImage
[ 0%] Built target sensor_msgs_generate_messages_cpp
[ 0%] Built target _apriltag_ros_generate_messages_check_deps_AprilTagDetectionArray
[ 0%] Built target std_msgs_generate_messages_py
[ 0%] Built target geometry_msgs_generate_messages_py
[ 0%] Built target sensor_msgs_generate_messages_lisp
[ 0%] Built target _apriltag_ros_generate_messages_check_deps_AprilTagDetection
[ 0%] Built target sensor_msgs_generate_messages_py
[ 0%] Built target geometry_msgs_generate_messages_lisp
[ 0%] Built target std_msgs_generate_messages_lisp
[ 0%] Built target sensor_msgs_generate_messages_eus
[ 0%] Built target std_msgs_generate_messages_eus
[ 0%] Built target geometry_msgs_generate_messages_eus
[ 0%] Built target std_msgs_generate_messages_nodejs
[ 0%] Built target geometry_msgs_generate_messages_nodejs
[ 0%] Built target sensor_msgs_generate_messages_nodejs
[ 10%] Built target apriltag_ros_generate_messages_lisp
[ 20%] Built target apriltag_ros_generate_messages_cpp
[ 36%] Built target apriltag_ros_generate_messages_py
[ 50%] Built target apriltag_ros_generate_messages_eus
[ 60%] Built target apriltag_ros_generate_messages_nodejs
make[2]: *** 没有规则可制作目标“/usr/lib/aarch64-linux-gnu/libopencv_objdetect.so.3.2.0”,由“/home/amiao1017/catkin_ws/devel/.private/apriltag_ros/lib/libapriltag_ros_common.so” 需求。 停止。
CMakeFiles/Makefile2:2659: recipe for target 'CMakeFiles/apriltag_ros_common.dir/all' failed
make[1]: *** [CMakeFiles/apriltag_ros_common.dir/all] Error 2
make[1]: *** 正在等待未完成的任务....
[ 60%] Built target apriltag_ros_generate_messages
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2

Using a USB Camera

Hi,
I am very new to ROS and still learning more on Linux. I have a question on calibrating Apriltags2_ROS to use a usb camera. I am using the usb_cam (https://github.com/ros-drivers/usb_cam) and I have issues generating an image through the web cam. I looked through the files and was wondering if changing the continues_detection.launch files (specifically line 14 and 15) to remap it to the usb_cam/camera_info and usb_cam/image_raw? Would that work do I have to do more to calibrate the Apriltags2_ROS?

  • Thank You

issue on Raspberry Pi

catkin_make_isolated on Raspberry Pi result:

[ 66%] Linking CXX shared library /home/hdwl/catkin_ws/devel_isolated/apriltags2_ros/lib/libcommon.so
[ 66%] Built target common
Scanning dependencies of target apriltags2_ros_single_image_client_node
Scanning dependencies of target continuous_detector
Scanning dependencies of target single_image_detector
[ 70%] Building CXX object CMakeFiles/continuous_detector.dir/src/continuous_detector.cpp.o
[ 73%] Building CXX object CMakeFiles/apriltags2_ros_single_image_client_node.dir/src/apriltags2_ros_single_image_client_node.cpp.o
[ 76%] Building CXX object CMakeFiles/single_image_detector.dir/src/single_image_detector.cpp.o
c++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-5/README.Bugs> for instructions.
CMakeFiles/single_image_detector.dir/build.make:62: recipe for target 'CMakeFiles/single_image_detector.dir/src/single_image_detector.cpp.o' failed
make[2]: *** [CMakeFiles/single_image_detector.dir/src/single_image_detector.cpp.o] Error 4
CMakeFiles/Makefile2:1387: recipe for target 'CMakeFiles/single_image_detector.dir/all' failed
make[1]: *** [CMakeFiles/single_image_detector.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....

could you give some advise to build it ?

Tags detected (in image and tf) but no data in /tag_detections

Hi,
I installed apriltag_ros using apt (sudo apt ros-melodic-apriltag-ros).
The detection seem to work fine (tags are well detected in the /tag_detections_image topic, and are correctly published to the /tf topic).
However, there seem to be no data published to the /tag_detections topic (which I would like to use to get the covariance of the pose).

Do you have an idea what might be the issue?

OS : ubuntu 18.04
Ros distribution : melodic
Configuration files : in the attached zip file (it also contains a sample of the output of the camera_info)
config_files.zip

Thanks a lot in advance
Best
Felix NILIUS

PS : I also tried an installation from source, but didn't succeeded

Multiple Instances of apriltag_ros for Multiple Cameras

Is running multiple instances of AprilTag_ROS under different namespaces possible?

I am working on a system with multiple cameras tracking the same set of tag bundles and would like to be able to start multiple instances of apriltag_ros in difference namespaces, to manage and fuse the tracking results independently.

I noticed that the node_namespace parameter in the .launch file is used as the apriltag_ros node "name" argument rather than as the namespace ("ns") argument. As a result, when I start multiple instances with different "node_namespace" values, they compete to publish to the same topic.

I tried adding a "ns" argument to the launch file, but this resulted in the loaded .yaml parameters being lost, returning the following warnings:

[ WARN] [1603304584.543327789]: No april tags specified
[ WARN] [1603304584.543889633]: No tag bundles specified

Worst case scenario, I could write a quick subscriber that sorts the published messages by "frame_id", which is unique between the different cameras... but I'm wondering if there is a cleaner route that I am missing.

Thanks in advance for any help! AprilTag is otherwise working great for me!

FPS question

When I run this node, it seems that detection is capped at 1 fps. Is this an artificial constraint? I'm running this on a 8th gen i7 with loads of RAM, so hardware isn't the issue.

New release

@wxmerkt Would be nice if you could do a new ROS release. Such that we can use the new tag families.

Intrinsic parameters for raw images used on rectified images

This detectTags function expects rectified images, but uses the unrectified camera intrinsic parameters: https://github.com/dmalyuta/apriltags2_ros/blob/30629ea495950d961fb093849d021ab811737736/apriltags2_ros/src/common_functions.cpp#L191

The K matrix in camera info is for the un-rectified image. The P matrix is for rectified images. This code uses the K matrix but ignores distortion, so it gives incorrect results for both rectified and un-rectified images. This means that the published detections are all slightly off (for most cameras) or very far off (for wide angle cameras.

I'll make a PR shortly that fixes this.

@v4hn I saw you comment on this repo - if you're using this package this probably affects you.

memory leak

Unable to create a subscriber

I have been trying to create a subscriber to /tag_detections topic, which is of type apriltags_ros::AprilTagDetectionArray. I have tried to follow the instructions as mentioned in the other issue, but I found out that apriltags2_ros package is replaced as apriltag_ros. I made the changes, I got a compilation error that "apriltag_ros/AprilTagDetectionArray.h" is not found. I checked the package, but still couldn't find this file. Can someone help me with this?

TODO treat issues and pull requests

I will go over all existing issues and pull requests in June/July (currently my time is spent on research and university studies). Thank you from the bottom of my heart to everyone for participating!

Apriltag.c: failed to allocate hamming decode table. Reduce max hamming size

I got this error running the aptriltag_ros_continuous_node using family 48h12 (The one with empty space in the middle).

following AprilRobotics/apriltag#68,

I changed apriltag_detector_add_family(td_, tf_) to apriltag_detector_add_family_bits(td_, tf_, 1) in common_functions.cpp and it works after recompiling.

I don't know what's going on here but I figured this is an issue related to the implementation of newer tag families in apriltag 3.

image_proc sync problem

I'm using image_proc to rectify the image of my camera.
Without image_proc the tag detection works but obvioulsy the orientation is wrongly estimated.

With image_proc the tag detection doesn't work and now I'm getting this warning:

[ WARN] [1582182434.473958456]: [image_transport] Topics '/image_proc_fisheye1/image_rect' and '/image_proc_fisheye1/camera_info' do not appear to be synchronized. In the last 10s:
        Image messages received:      301
        CameraInfo messages received: 0
        Synchronized pairs:           0

How can I solve?
Is this the problem that tags are not detected any more?

Linking problem

Hello,

I'm trying to build this project in Ubuntu 18.04 and ROS-melodic.

I just did:
(i) cd catkin_ws/src/
(ii) git clone https://github.com/AprilRobotics/apriltag_ros.git
(iii) cd catkin_ws/ & catkin_make

I'm getting a linking problem against a very basic ROS library:

[ 96%] Linking CXX executable /home/das/catkin_ws/devel/lib/apriltag_ros/apriltag_ros_single_image_client_node
CMakeFiles/apriltag_ros_single_image_client_node.dir/src/apriltag_ros_single_image_client_node.cpp.o: In function `main':
apriltag_ros_single_image_client_node.cpp:(.text.startup+0x101): undefined reference to `ros::NodeHandle::NodeHandle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__debug::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&)'
apriltag_ros_single_image_client_node.cpp:(.text.startup+0x1b0): undefined reference to `ros::NodeHandle::NodeHandle(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__debug::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&)'
collect2: error: ld returned 1 exit status

Any idea why?

ROS2 support

I created an AprilTag ROS2 node from scratch: https://github.com/christianrauch/apriltag_ros. Would you be interested in hosting the repo in the AprilRobotics group/organisation?

If we do so, it would be useful to align the message definitions and topics. The ROS2 node depends on a dedicated apriltag_msgs repo. I split the message definitions from the node so that they can be checked out independently from the node and library, e.g. for replaying logs or third party nodes. I extended the AprilTagDetection.msg with more information about the detected tag, so that it can be used by another AprilTag visualisation node.

Cannot remap to `some_namespace/image_rect/camera_info`

I'm using the Ironsides as camera. The node publishes the left image under some_namespace/image_rect and the associated CameraInfo under some_namespace/image_rect/camera_info.

I'm not able to remap the ~/camera_info topic correctly. I use: rosrun apriltags2_ros apriltags2_ros_continuous_node /image_rect:=/cam/image_rect /camera_info:= /cam/image_rect/camera_info.
rostopic info /apriltags2_ros returns

Subscriptions: 
 * /cam/image_rect [unknown type]
 * /cam/camera_info [unknown type]

Please help,
Gaël

Phantom tags detected

Hi I have noticed that when running the continuous apriltag detector, tags that are not obviously present are being detected intermittently (~every 30s to 2mins)
This is the scene that the tag detector is analyzing:
Screenshot from 2019-11-12 11-12-53

here is the output on this scene:

process[apriltag_ros_continuous_node-1]:  started with  pid   [14227]
[ INFO] [1573585127.6199681741: Initializing nodelet with 4 worker threads.
[ INFO] [1573585127.6406806711: Loaded tag config: 4, size: 0.347,  frame_name:  tag4
[ INFO] [1573585127.6407277061:  Loaded  tag  config: 118,  size: 0.482,  frame_name:  tag118
[ INFO] [1573585127.6408075941:  Loaded  tag  config: 114,  size: 0.482,  frame_name:  tag114
[ INFO] [1573585127.640859780]:  Loaded  tag  config: 119,  size: 0.482,  frame_name:  tag119
[ INFO] [1573585127.6409054071:  Loaded  tag  config: 117,  size: 0.482,  frame_name:  tag117
[ INFO] [1573585127.6409383671:  Loaded  tag  config: 113,  size: 0.482,  frame_name:  tag113
[ INFO] [1573585127.6409841911:  Loaded  tag  config: 100,  size: 0.482,  frame_name:  tag100
[ INFO] [1573585127.6410274771:  Loaded  tag  config: 102,  size: 0.482,  frame_name:  tag102
[ INFO] [1573565127.6410800201:  Loaded  tag  config: 103,  size: 0.482,  frame_name:  tag103
[ INFO] [1573585127.6411117341:  Loaded  tag  config: 108,  size: 0.482,  frame_name:  tag108
[ INFO] [1573585127.6411400311:  Loaded  tag  config: 109,  size: 0.482,  frame_name:  tag109
[ INFO] [1573585127.6411698901:  Loaded  tag  config: 111,  size: 0.482,  frame_name:  tag111
[ INFO] [1573585127.6411943851:  Loaded  tag  config: 101,  size: 0.482,  frame_name:  tag101
[ WARN] [1573585127.6422456651:  remove_duplicates  parameter  not  provided.  Defaulting  to  true
[ WARN] [1573585178.9513108811: Requested description of standalone tag ID [502], but no description was found...
[ WARN] [1573585249.5462589011: Requested description of standalone tag ID [500], but no description was found...
WRN:  Matrix  is  singular.
WRN:  Matrix  is  singular.
[ WARN] [1573585540.3505753751: Requested description of standalone tag ID [356], but no description was found...
WRN:  Matrix  is  singular.
WRN:  Matrix  is  singular.
[ WARN] [1573585745.5476507831: Requested description of standalone tag ID [46], but no description was found...
[ WARN] [1573585763.5498190051: Requested description of standalone tag ID [98], but no description was found...
[ WARN] [1573585897.3455831111: Requested description of standalone tag ID [554], but no description was found...
[ WARN] [1573586016.5486510421: Requested description of standalone tag ID [451], but no description was found...
[ WARN] [1573586101.3513115651: Requested description of standalone tag ID [354], but no description was found...
[ WARN] [1573586205.7525610501: Requested description of standalone tag ID [46], but no description was found...
[ WARN] [1573566233.3479171751: Requested description of standalone tag ID [544], but no description was found...
[ WARN] [1573586348.7532520831: Requested description of standalone tag ID [472], but no description was found...
[ WARN] [1573586467.3435749991: Requested description of standalone tag ID [46], but no description was found...

Here is an example of a phantom tag detection's pose

id: [100]
size: [0.482]
pose: 
  header: 
    seq: 13019
    stamp: 
      secs: 1565902950
      nsecs: 731362772
    frame_id: "pylon_camera_optical"
  pose: 
    pose: 
      position: 
        x: -0.00338844753806
        y: 0.0019613117084
        z: -0.00213273995678
      orientation: 
        x: 0.142591284097
        y: 0.690506810118
        z: -0.625784842158
        w: -0.333558693794

It seems like the tags are detected due to noise in the image. Any suggestions on how to debug or resolve?

position not shown in /tag_detections

When using continuous_detection the tag is detected and the outline is shown in the image, so it is detected.
But the values of the pose are NOT updated in /tag_detections, they stay all on zero.
What am I doing wrong?

AprilTags size

This is a comment more than an issue. I think the apriltags size is the side of the tag in meters including the padding bits on each side since when I follow the instructions on Printing Your Own AprilTags the size I specify programmatically includes those bits when I measure it in real life. Could you add it to your documentation page http://wiki.ros.org/apriltags2_ros/Tutorials/Detection%20in%20a%20video%20stream when explaining the file config/tags.yaml? If I am wrong, please let me know.

Thank you,
Aleix

No rule to make target error

I tried catkin build on apriltag_ros and got this error.

make[2]: *** No rule to make target '/usr/lib/aarch64-linux-gnu/libopencv_objdetect.so.3.2.0', needed by '/home/username/catkin_ws/devel/.private/apriltag_ros/lib/libapriltag_ros_common.so'. Stop.

I have libopencv_objdetect.so, libopencv_objdetect.so and libopencv_objdetect.so under /usr/lib, but no such objdetect files in /usr/lib/aarch64-linux. When I fake it and copy and rename this file into the specified directory, it just asks for another one, e.g. libopencv_photo.so.3.2.0. I have installed OpenCV 3.4.3 on my Jetson Xavier.

rostopic echo /tag_detections error

Hi,

After detecting tag I am getting pose information in /tf topic. but when I run
rostopic echo /tag_detections , it is not showing pose

`ERROR: Cannot load message class for [apriltag_ros/AprilTagDetectionArray]. Are your messages built?
thanks.

Apriltags in Gazebo

Hi

Is there any tutorials on implementing apriltag into Gazebo?

Best,
Samuel

if(0)

Perhaps this is my own shortcoming in c, but can anyone explain to me the point of the
if (0) { and if (1) { loops repeated all over this library?

As far as I understand these are effectively equivalent to if ( false) { and if (true) { both of which are fundamentally pointless if statements. The former will never run, and the later will always run thus making the if statement pointless.

there are multiple examples of this. Check out one such example below.
https://github.com/dmalyuta/apriltags2_ros/blob/master/apriltags2/src/apriltag_quad_thresh.c#L834

The only explanation I can think of is they may be trying to check your compiler version? Perhaps there's a version of c compiler that evaluates 1 and 0 inversely? But i'm not sure why that should result in the code running different loops.

Launch files not installed

When attempting to build apriltags2_ros the launch files are not installed into the catkin workspace path. To install I ran,

cd ~/catkin_ws/src
git clone https://github.com/dmalyuta/apriltags2_ros.git
cd ..
catkin_make
catkin_make install
source install/setup.bash

When I attempt to run roslaunch apriltag2_ros continuous_detection.launch I get an error message that continuous_detection.launch is not a part of apriltag2_ros. Using the find command I can tell that no launch files from apriltag2_ros are in my ~/catkin_ws/install directory.

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.