Giter Site home page Giter Site logo

Marker Plate wrong axis? about aruco_ros HOT 7 OPEN

pal-robotics avatar pal-robotics commented on July 29, 2024
Marker Plate wrong axis?

from aruco_ros.

Comments (7)

nevermore0127 avatar nevermore0127 commented on July 29, 2024 2

@nevermore0127
Answering your questions,

which axis are right?

The Z axis (the blue one) must be "going out" of the ARuco tag.

Displayed in /aruco_single/result OR displayed in rviz ?

So following the ARuco convention the /aruco_single/result has the correct orientation. Notice that this not affect translation at all.

Is the TF data right ?

As I said above, the orientation issue doesn't affect the pose estimation. So, yes the TF data is right the only difference is that it has and additional rotation. So in Rviz you see the y-axis pointing out of the tag.

Or i should do things as you say then the TF data will be right?

Is not necessary it is just for convention, according to your needs you may need a different orientation. Or you can publish a static transform with a new rotation. (this is is the simpliest solution).

Notice that the TF data is only correct if your camera is correctly calibrated.

If I am not clear enough, please let me know.

Thanks,clear about that.

from aruco_ros.

ctaipuj avatar ctaipuj commented on July 29, 2024

Hi, @CesMak ,
We found out that the orientation issue is caused due to a rotation matrix described in aruco_ros_utils.cpp see these code lines. You could modify the rotate_to_ros cv::Mat object and use it as an identity matrix to undo the rotation. (Actually not perform a rotation at all). So your TF data will be the same as the one found by ARuco.

If you change this take into account that the simple_double.cpp has to be modified too, in order to avoid the same issue (this only affects the simple_double.cpp file). So you will have to change this line to mDetector.detect(inImage, markers, camParam, marker_size,false); since the default value of setYPerpendicular is set to true in the .h file.

from aruco_ros.

nevermore0127 avatar nevermore0127 commented on July 29, 2024

I have the same question about that. So witch axis is right ? Displayed in /aruco_single/result OR displayed in rviz ?

Hi, @CesMak ,
We found out that the orientation issue is caused due to a rotation matrix described in aruco_ros_utils.cpp see these code lines. You could modify the rotate_to_ros cv::Mat object and use it as an identity matrix to undo the rotation. (Actually not perform a rotation at all). So your TF data will be the same as the one found by ARuco.

If you change this take into account that the simple_double.cpp has to be modified too, in order to avoid the same issue (this only affects the simple_double.cpp file). So you will have to change this line to mDetector.detect(inImage, markers, camParam, marker_size,false); since the default value of setYPerpendicular is set to true in the .h file.

I have the same question about that and still don't understand by your reply.
So witch axis are right ? Displayed in /aruco_single/result OR displayed in rviz ?
Is the TF data right ? Or i should do things as you say then the TF data will be right?
thank you

from aruco_ros.

v-lopez avatar v-lopez commented on July 29, 2024

You can also test with the ARuco 3.0.4 branch: https://github.com/pal-robotics/aruco_ros/tree/aruco-3.0.4

I tried to adapt the package conventions to the library convention. The problem is that if we merged this, a lot of code that relies on the orientation would stop working as expected.

from aruco_ros.

ctaipuj avatar ctaipuj commented on July 29, 2024

@nevermore0127
Answering your questions,

which axis are right?

The Z axis (the blue one) must be "going out" of the ARuco tag.

Displayed in /aruco_single/result OR displayed in rviz ?

So following the ARuco convention, the /aruco_single/result has the correct orientation. Notice that this not affect translation at all.

Is the TF data right ?

As I said above, the orientation issue doesn't affect the pose estimation. So, yes the TF data is right the only difference is that it has an additional rotation. So in Rviz you see the y-axis pointing out of the tag.

Or i should do things as you say then the TF data will be right?

Is not necessary it is just for convention, according to your needs you may need a different orientation. Or you can publish a static transform with a new rotation. (this is is the simplest solution).

Notice that the TF data is only correct if your camera is correctly calibrated.

If I am not clear enough, please let me know.

from aruco_ros.

7675t avatar 7675t commented on July 29, 2024

Hi, I also found it is a bit confusing the TF axis direction is different from the detection result. I made a PR for this problem.

from aruco_ros.

zhudelong avatar zhudelong commented on July 29, 2024

@nevermore0127
Answering your questions,

which axis are right?

The Z axis (the blue one) must be "going out" of the ARuco tag.

Displayed in /aruco_single/result OR displayed in rviz ?

So following the ARuco convention the /aruco_single/result has the correct orientation. Notice that this not affect translation at all.

Is the TF data right ?

As I said above, the orientation issue doesn't affect the pose estimation. So, yes the TF data is right the only difference is that it has and additional rotation. So in Rviz you see the y-axis pointing out of the tag.

@ctaipuj
To make it more clear, if we want to use tf to transform a vector from marker frame to camera frame, we have to use the frame in Rviz. For example, I specify the four corners in the marker frame, [[-0.5, 0, -0.5], [-0.5, 0, 0.5], [0.5, 0, -0.5], [0.5, 0, 0.5]], then use the tf to transform it to camera frame and get a correct result. if I use the frame indicated by the result image, it is wrong.

by the way, how can I directly get the corner position?

from aruco_ros.

Related Issues (20)

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.