Code Monkey home page Code Monkey logo

Comments (11)

adolfo-rt avatar adolfo-rt commented on September 23, 2024

Could you please provide more context so we can better understand the issue?. How are you loading the geometries?, does a simple rviz visualization of the model work?, is it something affecting all geometries or just some?. Some screenshots would help.

Some context from our side. In the REEM-C model, all geometries are oriented such that they can be attached to the link frames without needing any additional transformations. Also, not all link orientations have the z coordinate pointing upwards in the zero position, as shown in the below image.

image

from reemc_robot.

olivier-stasse avatar olivier-stasse commented on September 23, 2024

Hi Adolfo,
Thanks for your quick answer.
I am probably missing something obvious.

The urdf file specify here starts with the base and its mesh without any transformation.
Thus one could expect that in the kinematic tree the base frame is x-front, y-left, z-up.
This is what we get when looking at gazebo/link_states when the robot is in the standing
position:

 x: 0.0045927966684
 y: 0.000221814771623
 z: 0.853428401546

orientation:
x: 9.59220059542e-06
y: -0.000331640671629
z: -0.00032384563851
w: 0.999999892523

But it seems not to be the case in rviz (y-green pointing up).

When looking into the DAE, it indicates that the mesh was generated using meshlab.
When loading the base.dae using meshlab, we have the following display.
base

Y is pointing up but the geometry of the body and the local frame are showing that Z is pointing along the vertical of the robot.

Therefore the kinematic tree, and the local geometry of the link are right, (Z is up).
But then I do not understand the interest of having the field up_axis set to Y_UP in base.dae ...

Could you explain me what I am getting wrong ?

In addition changing up_axis to Z_UP in line 8 of base.dae seems to not affect the computations done when starting the gazebo tutorial.

from reemc_robot.

olivier-stasse avatar olivier-stasse commented on September 23, 2024

For the context, I am trying to load the geometry in an OpenSceneGraph custom
application to check the geometry. The main point is to try our motion generator with various humanoid robots.
When loading the REEM-C model with the openscenegraph loader it applies
the transform Y_UP. This is fine with respect to a display choice as in meshlab. But with respect to the robot model, it seems to not be coherent if one wants to display the kinematic tree.

But again I am probably missing something obvious.

Thanks in advance for your kind help.

from reemc_robot.

adolfo-rt avatar adolfo-rt commented on September 23, 2024

If what you want is to change which axis is considered as the 'up' direction when displayed in isolation, I think we could accept a pull request for that. It should not break code, as the coordinate system will remain unchanged with respect to the geometry. In other words, the Y_UP or Z_UP does not play a role when using the meshes within the robot model, .

from reemc_robot.

olivier-stasse avatar olivier-stasse commented on September 23, 2024

With respect to the collada specification, this would make sure that no transformation is introduced.
The meaning of the transformation is rather large when one looks at the collada specification.
So yes I think it would be better.

from reemc_robot.

adolfo-rt avatar adolfo-rt commented on September 23, 2024

Does #7 fix the issues you were having for all geometries?. The base of the robot is such that if z points up, the geometry will be correctly aligned with the robot's zero pose. This is not the case for all geometries. For instance, this is how the head looks with z pointing upwards:

image

In REEM-C, the z axis aligns with the axis of rotation of the associated joint.

from reemc_robot.

olivier-stasse avatar olivier-stasse commented on September 23, 2024

Yes but then the kinematic tree should gives you the proper transformation:

0Xi :
E =
1 0 0
0 4.89664e-12 1
0 -1 4.89664e-12

r =
0.0580575 0.0008831 1.3744

Which here would map
1/ the Z axis in the head frame to the Y axis in the world frame
2/ the opposite of Y in the head frame to the Z-axis in the world frame,

So the head is at the appropriate place with respect to the kinematic model.

The problem is that up_axis is introducing a transform which is explicitly removed by rviz.
The ticket in rviz addressing the problem seems to me misleading. IMHO, it seems better that the geometry of the robot is coherent with respect to the kinematic model.

I checked that the commit does not modify anything by launching the tutorial on gazebo...

On my application, the only thing which changes are the textures. And maybe this is the main trouble with changing the up_axis. It defines the side of the normals.
Still I did not see any change on Gazebo.

from reemc_robot.

adolfo-rt avatar adolfo-rt commented on September 23, 2024

I can confirm that your patch does not affect the reconstruction of the robot. For extra caution: @hilario, can you think of any way in which this change could affect existing code?. Otherwise I'll go ahead and pull the trigger.

from reemc_robot.

adolfo-rt avatar adolfo-rt commented on September 23, 2024

Ping @hilario.

from reemc_robot.

olivier-stasse avatar olivier-stasse commented on September 23, 2024

Could you make a final decision on this pull request ?

from reemc_robot.

adolfo-rt avatar adolfo-rt commented on September 23, 2024

@lucamarchionni, @hilario, I no longer can accept PRs on these repos, please take appropriate action. I think it can be safely merged.

from reemc_robot.

Related Issues (2)

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.