Open-source project
NVIDIA-ISAAC-ROS/isaac_ros_pose_estimation avatar
NVIDIA-ISAAC-ROS/isaac_ros_pose_estimation

isaac_ros_pose_estimation: three ROS 2 pose estimators behind one NVIDIA stack

Deep learned, NVIDIA-accelerated 3D object pose estimation

501 stars57 forksC++Apache-2.0

At a glance

What is it?
NVIDIA's Isaac ROS pose estimation repository ships three ROS 2 packages (FoundationPose, DOPE, CenterPose) that share a TensorRT or Triton inference path. The choice between them is a choice about whether you can retrain a model and how much accuracy you need.
Who is it for?
Adopt this repository if you are already on ROS 2 Humble with an NVIDIA GPU and need 6-DoF object poses for manipulation or navigation, and pick the package by your retraining budget: FoundationPose for unseen objects without fine-tuning, CenterPose for a known class where you can train, DOPE only if you need the fastest path and will train on your own objects.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 28 days ago.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What the repository actually contains

This is a ROS 2 package collection, not a single node. The README lists three packages: isaac_ros_foundationpose, isaac_ros_dope and isaac_ros_centerpose. Each one wraps a different deep learning model and exposes it as a ROS 2 node that consumes images and produces object poses. The repository is written in C++ and licensed under Apache-2.0, with the latest release tagged v4.6-0 in August 2026 and a cadence of roughly one release every six to eight weeks across v4.4, v4.5 and v4.6.

The README's own comparison table is the most useful artifact in the repository. It scores the three nodes on four axes: whether they handle novel objects without retraining, whether they support NVIDIA TAO, speed, quality and maturity. FoundationPose is the only one that handles novel objects without retraining, and it is marked as new. DOPE is marked fastest and time-tested, but it requires a trained model per object and does not support TAO. CenterPose sits in the middle: it supports TAO, is faster than FoundationPose but slower than DOPE, and produces better quality than DOPE.

That table is a design statement. NVIDIA is not presenting one recommended estimator. It is presenting three points on a trade-off curve and leaving the selection to the integrator.

The problem: 6-DoF pose is not the same as detection

A 2D bounding box tells a robot where an object is in the image. It does not tell the robot how the object is oriented, and orientation is what matters when a gripper has to approach a handle or a mobile base has to slide under a cart. Pose estimation produces that orientation, and the README frames the output as an intermediate: the prediction is meant to be fused with depth to yield a 3D pose and a distance that navigation or manipulation can consume.

The audience is therefore narrow. You need a robot that already has a camera and depth source, a ROS 2 graph to plug into, and a task where object orientation changes the correct action. NVIDIA states plainly that pose estimation is compute-intensive and is not performed at camera frame rate. The README's recommended pattern is to estimate pose on a single frame, feed that into navigation, and then compute additional estimates at a lower frequency to refine the navigation in progress. That is a deliberate architectural concession: this is a slow, intermittent signal, not a per-frame tracker for most configurations.

DOPE is the exception in one respect. It is described as requiring a pre-trained model for a known object with 3D bounding cuboid dimensions, and NVIDIA points at the HOPE dataset as the source of the shipped model. HOPE is a research dataset of toy grocery objects with textured meshes used for synthetic training. If your object is not a toy grocery item, the shipped weights are not for you.

How FoundationPose splits refinement from scoring

FoundationPose, developed by NVLabs, is the most interesting architecture in the repository. The README describes two distinct models. The refine model takes initial pose hypotheses and iteratively improves them. The refined hypotheses go to the score model, which selects and finalizes the estimate. That two-stage structure is why the package can handle unseen objects: the refine model is not asked to classify, only to improve candidate poses, and the score model ranks the results.

The same refine model doubles as a tracker. Given a new image and the previous frame's pose, it updates the estimate. NVIDIA states that this tracking path is more efficient than full pose estimation, with speeds exceeding 120 FPS on the Jetson Thor platform. Note what that number applies to: tracking, not estimation, and one specific platform. It is not a general throughput claim for the package.

The input is a 3D bounding cuboid, supplied by the caller, rather than a trained class. That is the key difference from DOPE and CenterPose. You tell FoundationPose the object's dimensions, not its identity.

DOPE and CenterPose: what the trained models buy you

DOPE estimates pose for a known object using belief maps produced by model inference. The DNN decoder takes the specified object type plus those belief maps and outputs the pose. Input images may need cropping and resizing to preserve aspect ratio and match the model's input resolution, so there is a preprocessing step you own. Training a custom DOPE model is a documented workflow, and the README links a tutorial for it.

CenterPose does more in one pass. According to the README, the CenterPose DNN performs object detection, generates 2D keypoints, estimates 6-DoF pose up to a scale, and regresses relative 3D bounding cuboid dimensions. The distinction NVIDIA draws is instance versus class: a CenterPose model can detect a chair without having trained on that specific chair. That is a meaningful capability if your object class is stable but the individual instances vary. It is not the same as FoundationPose's unseen-object handling, because CenterPose still needs the class in its training set.

The practical consequence is a dataset requirement. DOPE needs training data for your object. CenterPose needs training data for your class. FoundationPose needs cuboid dimensions. Only the third option lets you start without collecting and labelling images.

Running it: dependencies you cannot skip

The README is explicit that packages in this repository rely on accelerated DNN inference through Triton or TensorRT, provided by Isaac ROS DNN Inference. Preprocessing depends on the Isaac ROS DNN Image Encoder, which lives in the same companion repository. Neither is bundled here.

That means the install order matters. You need a ROS 2 Humble environment (the repository topics list ros2-humble), the Isaac ROS DNN Inference packages, and a working TensorRT or Triton setup before any node in this repository will start. The README does not reproduce the installation commands in the excerpt available here, so the authoritative steps are in the linked Isaac ROS DNN Inference repository and the documentation site rather than in this README.

The performance table in the README is organized by sample graph, input size and target platform, with columns for AGX Thor T5000, AGX Thor T4000, AGX Orin, Orin Nano Super 8GB and DGX Spark. Treat that table as the compatibility list. If your hardware is not among those columns, you are outside the configurations NVIDIA measured.

Where this breaks down

The clearest limitation is the retraining requirement on two of the three packages. If you have a novel object and no dataset, DOPE and CenterPose are both closed to you until you collect and label data or build a synthetic set. The README's own example of DOPE trained on dollies for a mobile robot that navigates under, lifts and moves that dolly shows how specific the training target is. That model does not generalize to your warehouse cart.

The second limitation is the frame-rate concession. NVIDIA states directly that pose estimation is not performed at the input camera rate. For a manipulation task where the object is static or slow-moving, that is acceptable. For a fast-moving object or a control loop that needs pose every frame, the single-frame-then-refine pattern will lag. FoundationPose's tracking mode is the mitigation, but the README's 120 FPS figure is tied to Jetson Thor and to tracking rather than estimation.

The third is dependency depth. This repository is a thin layer over Isaac ROS DNN Inference and TensorRT or Triton. Version drift between a TensorRT build and the release branch you check out (4.6, 4.5, 4.4) is a failure mode you inherit from the stack, not from this repository alone. The README does not document a compatibility matrix for TensorRT versions, so that is something to confirm against the release notes for the tag you use.

The alternative: classical pose estimation

The obvious alternative is a classical pipeline: feature matching plus PnP with a known 3D model of the object, typically built on OpenCV. The difference in approach is fundamental. A classical pipeline needs a textured 3D model and enough visual features in the scene, and it degrades on textureless or reflective objects. It also does not need a GPU, a TensorRT runtime, or a labelled training set.

The trade is the other direction. Classical PnP will not detect a chair it has never seen, but it also will not require you to train a network. It runs on CPU at whatever rate your feature detector manages. If your objects are textured, your model is accurate, and your lighting is controlled, a PnP pipeline is a smaller dependency surface than Isaac ROS DNN Inference plus TensorRT plus this repository.

There is a middle position worth naming: if you already have a detector producing 2D keypoints, a PnP solver on those keypoints gets you 6-DoF pose without any of the models here. CenterPose is effectively doing that internally, but you can also assemble it yourself. The reason to prefer CenterPose is that NVIDIA has packaged the detector, the keypoint regression and the cuboid regression into one trained model.

Maintenance, licence and what to verify

The release cadence is active: v4.4-0 in May 2026, v4.5-0 in July 2026, v4.6-0 in August 2026, with the last push to main on the same day as the v4.6-0 tag. Upgrading between these tags means tracking changes in Isaac ROS DNN Inference and the TensorRT version they target, because the packages here do not vendor their inference runtime. Budget for that synchronization work rather than treating this as a self-contained dependency.

The repository is Apache-2.0. That covers the ROS 2 packages. It does not automatically cover the models. FoundationPose is a model developed by NVLabs and distributed through the NVIDIA NGC catalog, and DOPE and CenterPose originate from NVLabs repositories. Model weights and their terms are separate from the package licence, and the README does not restate them. Check the model distribution terms before shipping, and treat that as a question for whoever handles licensing on your team rather than something this article can settle.

What to verify before committing: that your platform appears in the README's performance table, that you have a training dataset if you intend to use DOPE or CenterPose, and whether FoundationPose's tracking mode meets your motion requirement or whether you need the slower full estimation path.

Editorial conclusion

Adopt this repository if you are already on ROS 2 Humble with an NVIDIA GPU and need 6-DoF object poses for manipulation or navigation, and pick the package by your retraining budget: FoundationPose for unseen objects without fine-tuning, CenterPose for a known class where you can train, DOPE only if you need the fastest path and will train on your own objects. Do not adopt it if you have no NVIDIA GPU, no Isaac ROS DNN Inference installation, or no labelled dataset for your object class. Verify first that your target platform is one of the listed Jetson or DGX configurations, that your TensorRT version matches the release branch you check out, and whether the FoundationPose refine model's tracking mode is accurate enough for your motion profile.

Official sources

  1. License: Apache-2.0
  2. NVIDIA-ISAAC-ROS/isaac_ros_pose_estimation on GitHub
  3. Project website
  4. README
  5. Releases
Community notes

Community notes