IntelRealSense / realsense_mipi_platform_driver

Intel® RealSense™ camera driver for GMSL* interface
GNU General Public License v2.0
15 stars 12 forks source link

Enable two D457s #144

Closed jnzw closed 1 year ago

jnzw commented 1 year ago
pipe 1st D457 2nd D457
X Depth IR
Y RGB IMU
Z IR Depth
U IMU RGB

(Depth xor IR,RGB xor IMU)

xzhangxa commented 1 year ago

The title should be "enable two D457s on one max9296" which could be more precise to what the series are doing. Potentially these changes could support multiple max9296s with each has 2 D457 connected, we've kept that in mind but because the HW setup we can't really test it.

It's kept in mind that one D457 should work the same as before. When using two D457 on both link A/B of one max9296, because of the max9296 limitation of 4 streams, it's not possible to stream all streams of 2 D457s but the current setup is fine to make the most useful 2depth+2color and 2ir+2color work.

There's a known issue to be fixed later: DFU functionality only work for Link B D457 now.

jnzw commented 1 year ago

There's a known issue to be fixed later: DFU functionality only work for Link B D457 now.

The issue has been fixed. It was mainly a fw (firmware update counter) and hardware issue, not driver related.

ev-mp commented 1 year ago

@xzhangxa , I'm not sure I understand - each camera can generate up to two streams simultaneously (and use two lanes) ? What about running 4 streams from camera 1 and zero from camera 2 ? Can you explain the architecture behind it?

xzhangxa commented 1 year ago

@xzhangxa , I'm not sure I understand - each camera can generate up to two streams simultaneously (and use two lanes) ? What about running 4 streams from camera 1 and zero from camera 2 ? Can you explain the architecture behind it?

  • how the DTS is configured
  • is it backward-compatible with single camera configuration?
  • What happens if you try to start 2nd camera when the required pipe is in use by the 1st camera?
  • What about metadata, is it available for both cameras?

Hi @ev-mp

The quick answer is that these changes will not change the single D457 functionality, when 2 D457s are connected on both link A/B input of max9296, each D457 can still be used as before: all 4 streams streaming together, and metadata is still available.

And it's possible to use 1-4 streams from both D457s. Though because of max9295/9296 4 pipe limitation, 8 streams of 2 D457s have to share the 4 pipe. As in the table, when one stream uses a pipe the other D457's corresponding stream will not be able to run (user will get an error). The stream pairs are chosen so that the most common dual-D457 usage 2depth+2color, 2ir+2color are possible.

If necessary @jnzw and I could give a short introduction about all the changes, just summarize more than the PR description.

jnzw commented 1 year ago

Rebased onto latest Jetpack-5.0.2 branch.

jnzw commented 1 year ago

Rebased again onto Jetpack-5.0.2 branch.

xzhangxa commented 1 year ago

This PR includes the 2 commits from #137 , as there are some comments in that PR and the code was changed a little and @jnzw is on vacation, the maintainer/viewer please ignore that 2 commits and drop them when merging. Thanks.

jnzw commented 1 year ago

@Nir-Az Sorry I'm on vacation and just saw the messages this morning. I have just rebased this PR on top of #137 to include @xzhangxa 's recent changes to the build shell scripts and README. It should now be ready to be merged.

Nir-Az commented 1 year ago

@Nir-Az Sorry I'm on vacation and just saw the messages this morning. I have just rebased this PR on top of #137 to include @xzhangxa 's recent changes to the build shell scripts and README. It should now be ready to be merged.

Thanks! We will check.

dmipx commented 1 year ago

This should be rebased as we merged deb PR's