usrl-uofsc / stag_ros Goto Github PK
View Code? Open in Web Editor NEWA ROS package for the Stable Fiducial Marker System
A ROS package for the Stable Fiducial Marker System
Is there any configuration file I could refer to, so that I will be able to detect multiple markers at the same time, that has different IDs?
I could replicate the single_config.cfg pattern, but I would assume that each marker has it's own corner matrix?
ros_tellopy should be replaced with stag_ros, because obviously that's the name of the package.
Hello,
I am currently trying out this ROS package for a university project and have already configured the correct marker id and camera that I use but could not figure out yet how to change the marker size. Could you help me out here? Also the cfg/single.json file doesn't exist.
Thanks a lot!
Warning: class_loader.impl: SEVERE WARNING!!! A namespace collision has occured with plugin factory for class stag_ros::StagNodelet. New factory will OVERWRITE existing one. This situation occurs when libraries containing plugins are directly linked against an executable (the one running right now generating this message). Please separate plugins out into their own library or just don't link against the library and use either class_loader::ClassLoader/MultiLibraryClassLoader to open.
at line 218 in /opt/ros/noetic/include/class_loader/class_loader_core.hpp
When running stag_nodelet_runnable.
It appears that launching the nodelet in a namespace or with a different name breaks parameter loading of values such as raw_image_topic
and camera_info_topic
, which are needed for setting topics of multiple cameras.
Namespace example:
<!--Start Nodelet-->
<group ns="camera1" >
<node name="stag_ros_nodelet" pkg="stag_ros" type="stag_nodelet_runnable" output="screen" required="true" >
<!-- Place the correct yaml file here-->
<rosparam command="load" file="$(find stag_ros)/cfg/single.yaml"/>
<!-- Place the correct bundle file here-->
<rosparam command="load" file="$(find stag_ros)/cfg/single_config.yaml"/>
</node>
</group>
Nodename example:
<!--Start Nodelet-->
<node name="stag_ros_nodelet_camera1" pkg="stag_ros" type="stag_nodelet_runnable" output="screen" required="true" >
<!-- Place the correct yaml file here-->
<rosparam command="load" file="$(find stag_ros)/cfg/single.yaml"/>
<!-- Place the correct bundle file here-->
<rosparam command="load" file="$(find stag_ros)/cfg/single_config.yaml"/>
</node>
Both result in:
[ INFO] [1607395411.403805577]: Initializing nodelet with 32 worker threads.
[ WARN] [1607395411.413394006]: No tags specified
How do you suggest using stag_ros with multiple cameras?
I am trying to localize the OAK-D camera w.r.t to a STAG marker. I know the library assumes a USB camera and hence I have modified the stagNode.cpp so that it works with OAK-D (the distortion matrix has more values compared to a normal USB cam). I am using the monocular camera from OAK-D at 720p 60fps and the marker detection works as expected. But when I print out the pose, the values are way off, for eg, when the marker is 1.5 meters away the z value is 1.3meters. I have ensured the config file is correct. I I am uam using libraryHD 23 with error correction of 11. My marker side is 16.1 cm, so the config corners are as follows
tags:
[
{
frame: "single_config_test",
id: 0,
corners: [
[-0.0805,0.0805,0.0],
[0.0805,0.0805,0.0],
[0.0805,-0.0805,0.0],
]
}
]
bundles:
[
]
Any idea of what I might be doing wrong?
If you need any more information, please let me know.
Thanks.
While detection of the markers is well, it's pose estimation is really wrong. I would say there are some singularities in the code.
I am appending the error messages I get due to stag_ros.
Also when I visualize it in Rviz the transform of the stag according to the camera is like in infinity and jumping around.
Please explain to me what is/are the difference(s) of /stag_ros/markers topic and /stag_ros/bundles topic? Both of them have the same message type, stag_ros/STagMarker[]
What does those two in the .cfg files means(both theoretically and in terms of practice - should user ever changed it?):
stag_ros/src/stag_ros/stag_node.cpp
Line 73 in f1b88c5
Assuming the output msg type is geometry_msgs::PoseStamped this means that each detected marker is published(outputed) separately.
I think it would be better if the detected markers would be combined into an array that is published. This makes stuff easier for example if one wants to determine which markers is the closest one or how many markers is detected etc.
vision_msgs does offer Detection2DArray as also Detection2D which might be useful in this case, if you consider it.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.