Where is DifferentialBaseOdometry?

In the documentation page https://docs.nvidia.com/isaac/isaac/doc/engine/components.html#understanding-codelets it is mentioned that - “The public interface of the component DifferentialBaseOdometry ,is contained in the //packages/planner …”

However,the packages/planner directory contains only a BUILD file and another apps/ directory, which contains 3 other json files and another BUILD file.

The DifferentialBaseOdometry definition is nowhere to be found. However, it has been referenced (for lack of a better word) in several places such as the sample applications “proportional_control_python” and “simple_robot”.

namely, in the odometry node of the graph -

{
“name”: “isaac.navigation.DifferentialBaseOdometry”,
“type”: “isaac::navigation::DifferentialBaseOdometry”
}

Where is the source of DifferentialBaseOdometry ?

I intend to build a custom robot as described in Changing the Kaya reference code for deployment on custom 4-wheel robot but for this I need to first understand the code structure of the simple_robot application.

Can someone from the nvidia team please comment? @DavidWeikersdorfer

1 Like

Hi,

DifferentialBaseOdometry has been moved into //packages/navigation. We forgot to fix the documentation, thanks for letting us know, I will work on updating it.

The source code of the navigation package is not released as this point, you can see some information about the interface of the codelet here:

What kind of information were you looking for?

Hi @Ben_B

Thanks for the response.

Unfortunately I don’t see it in //packages/navigation either.

This folder contains another apps/ directory with a bunch of json files. There is a “differential_base_imu_odometry.subgraph.json” but I cannot find the cpp file where class DifferentialBaseOdometry is defined (as shown in the documentation that I have linked in my previous comment).

Is this cpp file the source code of the navigation package itself? It seemed unlikely to me as a snippet is shown in the documentation.

My main reason for asking this question is to understand how a particular class is being called without being defined in code (atleast I cannot find it anywhere in code - I tried searching the entire isaac folder through VSCode’s search tool - for the definition of DifferentialBaseOdometry but it can’t be found).

Has it been defined in a section of code which is not visible to the community? Does the calling application access the defined class through a .so file?

What I see in the documentation (even after your clarification) doesn’t seem to be adding up to what I see in the packages.

(I hope I’m not misunderstanding something trivial here, and I hope that you got my question).

Apologies if my question seems to be irrelevant, but I’m just trying to clearly understand the code structure of this SDK before I make changes to the reference codes.

I would appreciate if you can clear my confusion.

1 Like

Hi @arjunsengupta98,

Yes, most components are not opensource and defined in .so, you could modify it with some bin tools but according to the eula license you can not distribute or sell a soft with modified Isaac .so files unless you have a permission from Nvidia wich is very unlikely, you can modify some parameters of functions defined in .so through config part of json file but you are limited by the availeble parameters that you can see in the doc.

You can look at the zed lib in third party package folder, there you can see how class are defined, zed functions are probably defined like the one in .so are.

Regrads,
Planktos

Hello @Planktos

Yes, most components are not opensource and defined in .so

Thanks! Yes I thought as much.

I request the nvidia team to comment on other parts of my question as well.

Best regards,
Arjun

Dear Nvidia Team,

Eagerly awaiting your response.

@Ben_B

Regards,
Arjun

Hi,

Sorry for the late reply,

As I said earlier, the source code of the navigation package (and most other packages) are not released at this point. You do not have access to the source code, it has been pre-compiled into a shared library (.so), making it available for the application to use.
The application is using the public interface of the Codelet (defined in engine/engine/alice/components/Codelet.hpp).

Regards,

Ben

Understood @Ben_B

Thanks for the response. In that case, when you make changes to the documentation, you might want to mention that code snippet depicted there cannot be found in the publicly available isaac folder.

It may save a lot of readers from confusion :D

Thanks!