Skip to content

Commit

Permalink
deploy: a961eb6
Browse files Browse the repository at this point in the history
  • Loading branch information
github-actions[bot] committed Dec 5, 2023
0 parents commit 12b1ec9
Show file tree
Hide file tree
Showing 24 changed files with 6,134 additions and 0 deletions.
Empty file added .nojekyll
Empty file.
521 changes: 521 additions & 0 deletions index.html

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions robots.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Sitemap: https://vivekg.dev/pytorchse3/sitemap.xml
447 changes: 447 additions & 0 deletions se3.html

Large diffs are not rendered by default.

65 changes: 65 additions & 0 deletions search.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
[
{
"objectID": "so3.html",
"href": "so3.html",
"title": "so3",
"section": "",
"text": "The log map on SO(3) is equivalent to finding the axis-angle of rotation corresponding to a rotation matrix \\(\\mathbf R\\). This is numerically unstable near rotations \\(\\theta = 0\\) or \\(\\theta = \\pi\\).\nWe port the numerically stable implementation for pytransform3d to PyTorch to enable batched computation of multiple transformations on a GPU.\n\nsource\n\n\n\n so3_log_map (R:torch.Tensor)\n\nFind the axis of rotation for a rotation matrix R. The norm of the axis corresponds to the angle of rotation.\n\nsource\n\n\n\n\n cross_product_matrix (axis_angle)\n\nConvert the axis-angle to the matrix log(R)."
},
{
"objectID": "so3.html#log-map",
"href": "so3.html#log-map",
"title": "so3",
"section": "",
"text": "The log map on SO(3) is equivalent to finding the axis-angle of rotation corresponding to a rotation matrix \\(\\mathbf R\\). This is numerically unstable near rotations \\(\\theta = 0\\) or \\(\\theta = \\pi\\).\nWe port the numerically stable implementation for pytransform3d to PyTorch to enable batched computation of multiple transformations on a GPU.\n\nsource\n\n\n\n so3_log_map (R:torch.Tensor)\n\nFind the axis of rotation for a rotation matrix R. The norm of the axis corresponds to the angle of rotation.\n\nsource\n\n\n\n\n cross_product_matrix (axis_angle)\n\nConvert the axis-angle to the matrix log(R)."
},
{
"objectID": "se3.html",
"href": "se3.html",
"title": "se3",
"section": "",
"text": "source\n\n\n\n se3_log_map (T:torch.Tensor)"
},
{
"objectID": "se3.html#log-map",
"href": "se3.html#log-map",
"title": "se3",
"section": "",
"text": "source\n\n\n\n se3_log_map (T:torch.Tensor)"
},
{
"objectID": "se3.html#exp-map",
"href": "se3.html#exp-map",
"title": "se3",
"section": "Exp map",
"text": "Exp map\n\nsource\n\nse3_exp_map\n\n se3_exp_map (log_T_vee, n=10)"
},
{
"objectID": "index.html",
"href": "index.html",
"title": "pytorchse3",
"section": "",
"text": "pip install pytorchse3"
},
{
"objectID": "index.html#install",
"href": "index.html#install",
"title": "pytorchse3",
"section": "",
"text": "pip install pytorchse3"
},
{
"objectID": "index.html#how-to-use",
"href": "index.html#how-to-use",
"title": "pytorchse3",
"section": "How to use",
"text": "How to use\n\nimport torch\n\nfrom pytorchse3.se3 import se3_exp_map, se3_log_map\n\nHere are two transformation matrices for which PyTorch3D recovers the wrong log map (see this issue).\n\nT = torch.Tensor(\n [\n [\n [-0.7384057045, 0.3333132863, -0.5862244964, 0.0000000000],\n [0.3520625532, -0.5508944392, -0.7566816807, 0.0000000000],\n [-0.5751599669, -0.7651259303, 0.2894364297, 0.0000000000],\n [-0.1840534210, -0.1836946011, 0.9952554703, 1.0000000000],\n ],\n [\n [-0.7400283217, 0.5210028887, -0.4253400862, 0.0000000000],\n [0.5329059958, 0.0683888718, -0.8434065580, 0.0000000000],\n [-0.4103286564, -0.8508108258, -0.3282552958, 0.0000000000],\n [-0.1197679043, 0.1799146235, 0.5538908839, 1.0000000000],\n ],\n ],\n).transpose(-1, -2)\n\npytorchse3 computes the correct log map.\n\nlog_T_vee = se3_log_map(T)\nlog_T_vee\n\ntensor([[ 1.1319, 1.4831, -2.5131, -0.8503, -0.1170, 0.7346],\n [ 1.1288, 2.2886, -1.8147, -0.8812, 0.0367, -0.1004]])\n\n\nExponentiating the log map recovers the original transformation matrix with 1e-4 absolute error.\n\neq_T = se3_exp_map(log_T_vee)\nassert torch.allclose(T, eq_T, atol=1e-4)\n\n\nT - eq_T\n\ntensor([[[-9.2983e-06, -2.3842e-07, 1.1504e-05, 2.9802e-08],\n [-5.1558e-06, 8.5235e-06, -8.6427e-06, -2.9802e-08],\n [ 8.6427e-06, -6.4373e-06, 4.4703e-07, 0.0000e+00],\n [ 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00]],\n\n [[ 8.0466e-06, 1.6212e-05, 6.0201e-06, -3.7253e-08],\n [ 4.5896e-06, 8.6352e-06, 3.3975e-06, 2.9802e-08],\n [-8.5831e-06, 1.0610e-05, -1.6809e-05, 0.0000e+00],\n [ 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00]]])"
},
{
"objectID": "index.html#references",
"href": "index.html#references",
"title": "pytorchse3",
"section": "References",
"text": "References\n\npytorchse3 implements log/exp maps defined in Section 2 and 3 of Ethan Eade’s tutorial\nOur numerically stable so3_log_map is a PyTorch port of pytransform3d\nTaylor expansions for some coefficients in se3_log_map are taken from H2-Mapping"
}
]
Loading

0 comments on commit 12b1ec9

Please sign in to comment.