-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
iDynTree Visualizer-based drop in replacement for iCubGui? #1
Comments
I totally agree. For a recent demo we used the iCubGui extensively, and in general it proved to be pretty useful to have a visualization of the external wrenches and to have an idea of what the robot is doing when you don't have a clear view of it. I started doing something similar in https://github.com/S-Dafarra/dyn-visualizer. Initially, I was thinking to port it to The features are still missing compared to iCubGui:
|
And also it probably make sense to have ICUB as a dependency, as the most complete description of external forces (that the iCubGui currently uses) is published on port via the skinDynLib library (conversions to pure iDynTree stuff going on in https://github.com/robotology/idyntree/blob/master/src/icub/include/iDynTree/skinDynLibConversions.h). In general, after robotology/idyntree#807 iDynTree as a library does not depend at build time on YARP or ICUB (you just depend on YARP or ICUB if you want to use the specific compatibility headers, but in that case probably you are already depending on YARP and ICUB). In there in fact one of the open points was:
Probably we can start creating a
At least for use in whole-body control demos, I think that this two points are really the one of interest for the MVP. For the first point, it is probably a good idea to revive robotology/icub-main#462, better to do it now that we are early in the release cycle of the 2021.02/1.19 distro/icub release. If you are interested, I can revive robotology/icub-main#462 . For the possibility to connect ports rather then devices, it could make sense to evaluate if it is convenient to re-use the
I think this are nice to haves, but users interested in this use case can add support for them later. |
Sounds good to me! For example, I found it annoying that it is not possible to move the joints in
Up to you. I am not completely aware of how the contacts are visualized in the iCubGUI at the moment. If it is just reading from ports, then I would be also ok in porting the same logic. On the other hand, if those improvements allow using fewer assumptions (i.e. reading from the port you get both the wrench and where it is located in the model, not just the numeric value), that would be pretty interesting. If instead, it is very dependent on the availability of skin, this would complicate the usability with iCub3 for example.
That would also be interesting. If it is already available, then it would be pretty comfortable. Otherwise, it is not much of a big deal to restart the application. It just gets a little annoying when you spend time in fixing the camera, the dimension of the window or its location in the screen. |
Reading the forces from the
However, for a visualizer I think that reading from a structured port all the forces acting on the robot is quite convenient, think for example on iCub3 to visualize the two forces on the parts of the sole. |
Totally agree. This would be available even without robotology/icub-main#462 right? |
Yes, the main problem is that skinDynLib identifies link and frames with numerical indices, while iDynTree an the rest of the URDF-using world uses strings. To bridge the gap, in wholebodydynamics we have the |
Those points are partially addressed in the |
Just for discussion, it would be also interesting to understand how to plot the torques. In Gazebo they use a sort of curved arrow shape, while in the iCubGui there is an arrow of a different color. I could not find a built-in command to draw a curved arrow in |
Indeed, the general structure of this module would match a lot with the @lrapetti @traversaro what would you suggest? Should we keep the two applications separated or we try to have a single application with complex configuration files? |
My intuition is that it could make sense to have two separate applications, especially if in the future @lrapetti may need to customize |
I just noticed that, rightfully, |
Yes, these are the kind of cross-dependency I was scared about. I think that if there are strong commonalities we can probably refactor them as C++ libraries that we add down in the stack (for example in iDynTree or something else) and that can be shared by both visualizers. |
I agree on having the two main application separate since they can have different dependencies and data sources. |
I think we can move this issue to https://github.com/robotology/idyntree-yarp-tools, what do you think @S-Dafarra ? |
Sounds good! I am planning to work on it soon, although I haven't started yet. |
Done! |
Related PRs: @S-Dafarra my last doubt is on the name, could it make sense to call it |
No problem for me! Regarding the visualization of the hands, I tried to connect to the robot while using the |
Good to know. This is a byproduct of robotology/icub-models#30 . |
Just to document it somewhere, I recently ended up in the following "issue": |
Yes, I think we can add it easily. The trick would be to retrieve from the model the frame parent link (https://robotology.github.io/idyntree/master/classiDynTree_1_1Model.html#a64e8453f19a7c6f4e9dd0d9063062854), and the corresponding relative transformation (https://robotology.github.io/idyntree/master/classiDynTree_1_1Model.html#ad3e8276d1ec7e275aadeb75c1add80b6). Then, it is just matter of chaining the two transformations together. |
PR opened at robotology/idyntree#849 |
I think this issue can be closed since the |
Yes, it is not strictly speaking a drop-in replacement for iCubGui, but I guess at this point that is ok. |
Given the latest development in the visualizer contained in iDynTree 3, it should be now relatively easy to develop a simple drop-in replacement for the iCubGui that gets the configuration of the robot and the external force from YARP ports, but gets the kinematic model and the meshes of the robot from the URDF models rather then the custom BVH models used in iCubGui (see https://github.com/robotology/icub-main/pull/531/files). This may be convenient for new and custom robots developed now (such as iRonCub) or in the future.
The text was updated successfully, but these errors were encountered: