# Tag Info

## Hot answers tagged visual-odometry

8

Monocular vision is a difficult and very interesting, particularly in its application to the general navigation problem. I will make an attempt at answering your questions, but if you find anything lacking, you can read through Szeliski's book Computer Vision: Algorithms and Applications. What is the core principle of a monocular visual odometry algorithm? ...

6

The most important point is the scale. If you do monocular SLAM, your map will only be accurate up to scale so that you e.g. cannot compute the length of the travelled path in meters. The scale between your map and the world is not even constant over time so that if you come back to your starting point, it's going to be difficult to match the beginning and ...

3

The information matrix is just the inverse of the covariance matrix. I recommend you read the page I linked, or just google covariance matrix. Essentially it contains how certain you are in your measurements. (The lower the number the less uncertain you are). As an example: The translation matrix between nodes(ignoring rotation for now). Your covariance ...

3

So SVO works a bit differently then other VO systems as it uses dense image alignment. You need to understand this concept first before understanding SVO. Look up Lucas and Kanade image alignment. The best paper on this topic can be found here. This is required understanding, so you can't skip it. Required Understanding: Lucas and Kanade(LK) How Sparse VO ...

2

Yes that is correct. Easiest way is probably to work with the homogeneous 4x4 Tranform Matrix($T$) composed of $\begin{bmatrix}R & t\\0 & 1\end{bmatrix}$. Then your new pose is then just $T_i$ multiplied by $\Delta T_{i+1}^{i}$(relative transform). For every new relative transform just do this concatenation. So $T_{i+1}=T_i*\Delta T_{i+1}^{i}$ Note:...

2

That's simple. If you use matlab or opengl what you need to do is just drawing 3 axis at (tx,ty,tz). You need to convert quaternion to rotation matrix. (qx,qy,qz,qw) -> R(3x3 matrix) where each col of R is the axis you need. The axis just a line segment where it start from (tx,ty,tz) and end at (tx+rx,ty+ry,tz+rz). There are libraries for quaternion ...

2

From the webpage for the dataset: All sequences contain mostly exploring camera motion, starting and ending at the same position: this allows to evaluate tracking accuracy via the accumulated drift from start to end, without requiring ground-truth for the full sequence. It appears as though they didn't intend the ground truth for these datasets to be ...

2

NaN values are sometimes used to indicate unavailable data. Is it possible that these are simply portions of the dataset for which ground truth was not available, but you can still evaluate on the remainder of the sequence (and that this is in fact the standard evaluation domain)? It looks like their evaluation code checks for trajectory entries with any ...

2

What does the absolute scale mean? In this context, scale refers to what property related to an image? Essentially scale refers to the size of the object/scene that the camera sees. As a projective sensor the camera can't know the depth/size of the object it is viewing. Look at the below image. While we might know that the big and small boxes are different ...

2

The process you need to go through is actually similar to the camera calibration procedure in OpenCV or other software. The chessboard is replaced by your robot, and you can skip the intrinsic estimation step. I would actually recommend you take a look https://github.com/hengli/camodocal a multi rig camera calibrator. Anyways a high level overview. The two ...

1

You are correct in your understanding that monocular VO will have an ambiguity in the scale of the reconstructed trajectory and scene. The easiest way to fix this ambiguity is to incorporate more information via additional sensors. For example, a GPS measurement could give an absolute reference that can be used to scale the VO solution correctly. A ...

1

From the Appendix section of the ORB SLAM paper: ... In pose optimization, or motion-only BA, (see section V) all points are fixed and only the camera pose is optimized. So yes, they are the same, I assume it's only the context that makes the use of one term preferable over the other.

1

Why would you not like to use ROS? Seems like if you use this package along with custom code for the rest of the solution it'll be good to go. Is there a way to use the package as a library, by calling functions as APIs? How would I go about it, has it been done? It is possible by altering the code to remove ROS dependencies and use the cor filter ...

1

When working with odometry, you need to consider that the resulting calculation may not be valid when comparing frames. Therefore I’d suggest you add try and except statements.

1

processing 1st vs 10th image and 9th vs 10th image - will the fist give 10x relative scale than the second? It depends. In the simplest perspective, 'relative' means what the transformation is from one view to another, given two images. So if you just use multiple view geometry techniques to find the transformation between any two images, you'll always end ...

1

(1) Usually, the poses are just your absolute camera poses, i.e $[R,T]$ where $R$ is a rotation matrix and $T$ is a translation, expressed in world coordinates. You can add a scale factor to that if you want. (2) Usually, the edges are the relative displacements between your cameras. That is , if you have cameras $C_1=[R_1,T_1]$ and $C_2=[R_2,T_2]$, then, ...

1

The problem of the pure strong rotation is that the image will become easily blurred unless you use 1000FPS camera. This kind of super-strong rotation often occurs in hand-held camera motion. Simply turn on your mobile camera in a slightly dark place and try to make a translational and rotational motion. You will see rotation make huge blurriness in the ...

1

No, nothing is "necessary". You can estimate the pose of the robot perfectly legitimately using only IMU data. You can also estimate it perfectly legitimately using only image data. But it won't be that good, there will be errors in any sensor. Localization is not a decision problem. It can be tempting to "switch" between sensors and think really hard ...

1

In other words, could this difference noticeably impact safety or reliability? -> not at all in my opinion. What important in autonomous car navigation is localization stability rather than the odometry estimation accuracy. Maps for autonomous driving are usually prebuilt and globally optimized before they are used for a navigation. It is never required to ...

1

The mystery has been solved. In reality, the equality does not hold in the last part of the proposition, stated in the question: $$P_{C_i}^{W_V} = P_{W_O}^{W_V} \cdot P_{B_i}^{W_O} \cdot P_{C_i}^{B_i} \ne P_{W_O}^{W_V} \cdot P_{B_i}^{W_O}$$ More specifically: $$P_{C_i}^{B_i} \ne \text{Id}$$ But In reality:  P_{C_i}^{B_i} = \big[ P_{W_O}^{W_V} \big]^{-...

1

The absolute scale cannot be estimated if you are utilizing a monocular camera. Either you add an additional sensor information such as IMU or you need a size known object to be in your dataset. As KITTI dataset has 3D LiDAR scan data as well, you can initially utilize them for finding the absolute scale.

1

Assume something, then adjust your guess based on your measured distance traversed versus actual distance traversed. If you can get data from a vehicle that drove down a road, and you know the path taken, you can map that route and determine the actual distance travelled. If you assumed some arbitrary distance, and your path turned out to be 340 km, but ...

Only top voted, non community-wiki answers of a minimum length are eligible