Comments (3)
If the pose is null, it means ARKit cannot output a pose, so the mapping node will likely ignore updating and the rtabmapEvents will be empty till the pose can be recomputed.
Do you mean that if ArKit tracking state is in any other state than "normal", you would still want a covariance value?
rtabmap/app/ios/RTABMapApp/ViewController.swift
Lines 979 to 1014 in a11ea29
In that code, we won't forward any pose to rtabmap if the tracking is not normal.
from rtabmap.
Hi @matlabbe, yes that's the hope to continue computing covariances based on updated pose from ARKit.
I've verified in the ViewController.Swift
that the pose still gets computed by the ARKit (there's values) even when the camera status are excessiveMotion
insufficientFeatures
since the accept = true
is still valid and therefore executes the rtabmap?.postOdometryEvent(...)
I've narrowed down to the RtabMap.Swift
where the update is managed in this if
statement:
rtabmap/app/ios/RTABMapApp/RTABMap.swift
Line 248 in 81e249b
I then create an else
case to try to continue perform postOdometryEvent with some dummyData:
else
{
var dummyDepthDataPtr: UnsafeMutableRawPointer? = nil // Dummy depth pointer
var dummyDepthSize: Int32 = 0 // Dummy depth size
var dummyDepthWidth: Int32 = 0 // Dummy depth width
var dummyDepthHeight: Int32 = 0 // Dummy depth height
var dummyDepthFormat: Int32 = 0 // Dummy depth format
var dummyConfDataPtr: UnsafeMutableRawPointer? = nil // Dummy conf pointer
var dummyConfSize: Int32 = 0 // Dummy conf size
var dummyConfWidth: Int32 = 0 // Dummy conf width
var dummyConfHeight: Int32 = 0 // Dummy conf height
var dummyConfFormat: Int32 = 0 // Dummy conf format
var dummyBufferPoints: UnsafeMutableRawPointer? = nil // Dummy buffer points
var dummyBufferPointsCount: Int32 = 0 // Dummy buffer points count
print("----------error log----------")
print(pose)
print(frame.camera.intrinsics)
print(frame.timestamp)
postOdometryEventNative(native_rtabmap,
pose[3,0], pose[3,1], pose[3,2], quat.x, quat.y, quat.z, quat.w,
frame.camera.intrinsics[0,0], // fx
frame.camera.intrinsics[1,1], // fy
frame.camera.intrinsics[2,0], // cx
frame.camera.intrinsics[2,1], // cy
frame.timestamp,
nil, //CVPixelBufferGetBaseAddressOfPlane(frame.capturedImage, 0), // y plane pointer
nil, // u plane pointer
nil, //CVPixelBufferGetBaseAddressOfPlane(frame.capturedImage, 1), // v plane pointer
1, //Int32(CVPixelBufferGetBytesPerRowOfPlane(frame.capturedImage, 0)) * Int32(CVPixelBufferGetHeightOfPlane(frame.capturedImage, 0)), // yPlaneLen
1, //Int32(CVPixelBufferGetWidth(frame.capturedImage)), // rgb width
1, //Int32(CVPixelBufferGetHeight(frame.capturedImage)), // rgb height
1, //Int32(CVPixelBufferGetPixelFormatType(frame.capturedImage)), // rgb format
dummyDepthDataPtr, // depth pointer
dummyDepthSize, // depth size
dummyDepthWidth, // depth width
dummyDepthHeight, // depth height
dummyDepthFormat, // depth format
dummyConfDataPtr, // conf pointer
dummyConfSize, // conf size
dummyConfWidth, // conf width
dummyConfHeight, // conf height
dummyConfFormat, // conf format
dummyBufferPoints, dummyBufferPointsCount, 4,
v[3,0], v[3,1], v[3,2], quatv.x, quatv.y, quatv.z, quatv.w,
p[0,0], p[1,1], p[2,0], p[2,1], p[2,2], p[2,3], p[3,2],
texCoord[0],texCoord[1],texCoord[2],texCoord[3],texCoord[4],texCoord[5],texCoord[6],texCoord[7])
}
Trying to bypass this portion correctly without compromising any pose estimation embedded inside:
rtabmap/app/android/jni/RTABMapApp.cpp
Line 3748 in 81e249b
The problem with this is yPlaneLen == rgbWidth*rgbHeight
does not match since I'm sending dummy data of 1
. Is there a way to bypass these values correctly?
from rtabmap.
Can you keep the rgb data as usual? The rgb frame I think should be always available.
from rtabmap.
Related Issues (20)
- Error while running HOT 1
- G2o Fatal error for optimizeBA() HOT 5
- rtabmap parameter problem in 0.21.4 HOT 2
- how to change 2d map when i navigate from 1f to 2f HOT 4
- Empty Gridmap and Octomap with recent integration of Gridmap HOT 2
- Received IMU doesn't have orientation set! It is ignored HOT 2
- many nodes are not optimized (negative weight) after mapping HOT 1
- Python3 Option with RTABMAP Issue HOT 4
- Support for Orbbec Femto cameras HOT 1
- what are these lines mean in graph view ? HOT 2
- how to merge multiple times SLAM db file with rgbd camera, 3d lidar and odometry ? HOT 4
- Localization Mode + MM: Add option to pre-optimize the full global graph once so that map origin doesn't change on retrieval
- how to fusion icp odometry and visual odometry into a fusion odometry? and some question need to reassure
- Change exported multiband filenames
- `cmake_modules/FindSqlite3.cmake` breaks transitive dependencies. HOT 2
- (iSAM2) GTSAM exception caught: Requested the BayesTree clique for a key that is not in the BayesTree HOT 1
- bad calib camera matrix HOT 3
- Continously updating the reconstructed cloud with the sensor field of view HOT 4
- Wiki: Installation iOS - add App Store link HOT 1
- Offload the processing of the RTAB-Map iOS app to a PC HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rtabmap.