diff --git a/.VSCodeCounter/2024-06-17_19-36-50/details.md b/.VSCodeCounter/2024-06-17_19-36-50/details.md
new file mode 100644
index 0000000..3e52b53
--- /dev/null
+++ b/.VSCodeCounter/2024-06-17_19-36-50/details.md
@@ -0,0 +1,227 @@
+# Details
+
+Date : 2024-06-17 19:36:50
+
+Directory d:\\Administrator\\Desktop\\空地协同头歌\\src\\Robot\\unitree_legged_go1-walk
+
+Total : 212 files, 34127 codes, 5084 comments, 8663 blanks, all 47874 lines
+
+[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
+
+## Files
+| filename | language | code | comment | blank | total |
+| :--- | :--- | ---: | ---: | ---: | ---: |
+| [src/Robot/unitree_legged_go1-walk/README.md](/src/Robot/unitree_legged_go1-walk/README.md) | Markdown | 42 | 0 | 12 | 54 |
+| [src/Robot/unitree_legged_go1-walk/example/example_joystick.cpp](/src/Robot/unitree_legged_go1-walk/example/example_joystick.cpp) | C++ | 64 | 3 | 16 | 83 |
+| [src/Robot/unitree_legged_go1-walk/example/example_position.cpp](/src/Robot/unitree_legged_go1-walk/example/example_position.cpp) | C++ | 134 | 14 | 22 | 170 |
+| [src/Robot/unitree_legged_go1-walk/example/example_torque.cpp](/src/Robot/unitree_legged_go1-walk/example/example_torque.cpp) | C++ | 77 | 4 | 16 | 97 |
+| [src/Robot/unitree_legged_go1-walk/example/example_velocity.cpp](/src/Robot/unitree_legged_go1-walk/example/example_velocity.cpp) | C++ | 77 | 6 | 18 | 101 |
+| [src/Robot/unitree_legged_go1-walk/example/example_walk.cpp](/src/Robot/unitree_legged_go1-walk/example/example_walk.cpp) | C++ | 169 | 42 | 15 | 226 |
+| [src/Robot/unitree_legged_go1-walk/example_py/example_position.py](/src/Robot/unitree_legged_go1-walk/example_py/example_position.py) | Python | 81 | 12 | 26 | 119 |
+| [src/Robot/unitree_legged_go1-walk/example_py/example_torque.py](/src/Robot/unitree_legged_go1-walk/example_py/example_torque.py) | Python | 44 | 9 | 18 | 71 |
+| [src/Robot/unitree_legged_go1-walk/example_py/example_velocity.py](/src/Robot/unitree_legged_go1-walk/example_py/example_velocity.py) | Python | 38 | 4 | 17 | 59 |
+| [src/Robot/unitree_legged_go1-walk/example_py/example_walk.py](/src/Robot/unitree_legged_go1-walk/example_py/example_walk.py) | Python | 76 | 14 | 30 | 120 |
+| [src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/a1_const.h](/src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/a1_const.h) | C++ | 11 | 3 | 4 | 18 |
+| [src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/aliengo_const.h](/src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/aliengo_const.h) | C++ | 11 | 3 | 4 | 18 |
+| [src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/b1_const.h](/src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/b1_const.h) | C++ | 11 | 3 | 2 | 16 |
+| [src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/comm.h](/src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/comm.h) | C++ | 172 | 27 | 30 | 229 |
+| [src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/go1_const.h](/src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/go1_const.h) | C++ | 11 | 3 | 4 | 18 |
+| [src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/joystick.h](/src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/joystick.h) | C++ | 35 | 5 | 4 | 44 |
+| [src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/loop.h](/src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/loop.h) | C++ | 42 | 7 | 13 | 62 |
+| [src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/quadruped.h](/src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/quadruped.h) | C++ | 31 | 4 | 14 | 49 |
+| [src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/safety.h](/src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/safety.h) | C++ | 18 | 5 | 7 | 30 |
+| [src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/udp.h](/src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/udp.h) | C++ | 63 | 17 | 19 | 99 |
+| [src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/unitree_legged_sdk.h](/src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/unitree_legged_sdk.h) | C++ | 11 | 3 | 5 | 19 |
+| [src/Robot/unitree_legged_go1-walk/package.xml](/src/Robot/unitree_legged_go1-walk/package.xml) | XML | 9 | 0 | 2 | 11 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/python_interface.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/python_interface.cpp) | C++ | 190 | 9 | 22 | 221 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.appveyor.yml](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.appveyor.yml) | YAML | 37 | 0 | 1 | 38 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.cmake-format.yaml](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.cmake-format.yaml) | YAML | 31 | 28 | 15 | 74 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/CONTRIBUTING.md](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/CONTRIBUTING.md) | Markdown | 248 | 0 | 72 | 320 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/ISSUE_TEMPLATE/bug-report.md](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/ISSUE_TEMPLATE/bug-report.md) | Markdown | 19 | 0 | 10 | 29 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/ISSUE_TEMPLATE/config.yml](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/ISSUE_TEMPLATE/config.yml) | YAML | 5 | 0 | 1 | 6 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/ISSUE_TEMPLATE/feature-request.md](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/ISSUE_TEMPLATE/feature-request.md) | Markdown | 11 | 0 | 6 | 17 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/ISSUE_TEMPLATE/question.md](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/ISSUE_TEMPLATE/question.md) | Markdown | 17 | 0 | 5 | 22 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/labeler.yml](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/labeler.yml) | YAML | 12 | 0 | 3 | 15 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/workflows/ci.yml](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/workflows/ci.yml) | YAML | 368 | 43 | 112 | 523 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/workflows/configure.yml](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/workflows/configure.yml) | YAML | 63 | 6 | 16 | 85 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/workflows/format.yml](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/workflows/format.yml) | YAML | 31 | 3 | 8 | 42 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/workflows/labeler.yml](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/workflows/labeler.yml) | YAML | 12 | 0 | 2 | 14 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/workflows/pip.yml](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/workflows/pip.yml) | YAML | 73 | 7 | 24 | 104 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.pre-commit-config.yaml](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.pre-commit-config.yaml) | YAML | 58 | 22 | 9 | 89 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.readthedocs.yml](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.readthedocs.yml) | YAML | 3 | 0 | 1 | 4 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/README.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/README.rst) | reStructuredText | 122 | 6 | 31 | 159 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/_static/theme_overrides.css](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/_static/theme_overrides.css) | CSS | 11 | 0 | 1 | 12 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/cast/chrono.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/cast/chrono.rst) | reStructuredText | 62 | 2 | 18 | 82 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/cast/custom.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/cast/custom.rst) | reStructuredText | 68 | 5 | 19 | 92 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/cast/eigen.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/cast/eigen.rst) | reStructuredText | 229 | 13 | 69 | 311 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/cast/functional.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/cast/functional.rst) | reStructuredText | 74 | 9 | 27 | 110 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/cast/index.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/cast/index.rst) | reStructuredText | 31 | 2 | 11 | 44 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/cast/overview.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/cast/overview.rst) | reStructuredText | 136 | 8 | 22 | 166 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/cast/stl.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/cast/stl.rst) | reStructuredText | 158 | 18 | 65 | 241 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/cast/strings.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/cast/strings.rst) | reStructuredText | 195 | 20 | 91 | 306 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/classes.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/classes.rst) | reStructuredText | 856 | 96 | 310 | 1,262 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/embedding.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/embedding.rst) | reStructuredText | 168 | 14 | 80 | 262 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/exceptions.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/exceptions.rst) | reStructuredText | 224 | 14 | 61 | 299 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/functions.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/functions.rst) | reStructuredText | 367 | 47 | 148 | 562 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/misc.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/misc.rst) | reStructuredText | 214 | 27 | 97 | 338 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/pycpp/index.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/pycpp/index.rst) | reStructuredText | 9 | 1 | 4 | 14 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/pycpp/numpy.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/pycpp/numpy.rst) | reStructuredText | 299 | 26 | 112 | 437 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/pycpp/object.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/pycpp/object.rst) | reStructuredText | 143 | 27 | 82 | 252 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/pycpp/utilities.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/pycpp/utilities.rst) | reStructuredText | 91 | 13 | 41 | 145 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/smart_ptrs.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/smart_ptrs.rst) | reStructuredText | 107 | 14 | 53 | 174 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/basics.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/basics.rst) | reStructuredText | 171 | 32 | 99 | 302 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/benchmark.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/benchmark.py) | Python | 75 | 1 | 14 | 90 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/benchmark.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/benchmark.rst) | reStructuredText | 53 | 16 | 27 | 96 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/changelog.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/changelog.rst) | reStructuredText | 1,118 | 15 | 365 | 1,498 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/classes.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/classes.rst) | reStructuredText | 333 | 49 | 151 | 533 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/cmake/index.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/cmake/index.rst) | reStructuredText | 5 | 1 | 3 | 9 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/compiling.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/compiling.rst) | reStructuredText | 373 | 47 | 174 | 594 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/conf.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/conf.py) | Python | 78 | 177 | 85 | 340 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/faq.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/faq.rst) | reStructuredText | 227 | 20 | 97 | 344 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/index.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/index.rst) | reStructuredText | 27 | 6 | 11 | 44 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/installing.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/installing.rst) | reStructuredText | 62 | 9 | 33 | 104 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/limitations.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/limitations.rst) | reStructuredText | 42 | 0 | 15 | 57 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/pybind11_vs_boost_python1.svg](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/pybind11_vs_boost_python1.svg) | XML | 427 | 0 | 1 | 428 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/pybind11_vs_boost_python2.svg](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/pybind11_vs_boost_python2.svg) | XML | 427 | 0 | 1 | 428 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/reference.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/reference.rst) | reStructuredText | 41 | 30 | 47 | 118 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/release.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/release.rst) | reStructuredText | 57 | 2 | 17 | 76 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/requirements.txt](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/requirements.txt) | pip requirements | 7 | 0 | 1 | 8 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/upgrade.rst](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/upgrade.rst) | reStructuredText | 359 | 19 | 136 | 514 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/attr.h](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/attr.h) | C++ | 306 | 126 | 120 | 552 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/buffer_info.h](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/buffer_info.h) | C++ | 106 | 14 | 27 | 147 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/cast.h](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/cast.h) | C++ | 1,615 | 305 | 307 | 2,227 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/chrono.h](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/chrono.h) | C++ | 128 | 32 | 32 | 192 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/common.h](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/common.h) | C++ | 2 | 0 | 1 | 3 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/complex.h](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/complex.h) | C++ | 43 | 9 | 14 | 66 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/detail/class.h](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/detail/class.h) | C++ | 460 | 111 | 100 | 671 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/detail/common.h](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/detail/common.h) | C++ | 527 | 213 | 114 | 854 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/detail/descr.h](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/detail/descr.h) | C++ | 68 | 10 | 23 | 101 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/detail/init.h](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/detail/init.h) | C++ | 228 | 66 | 43 | 337 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/detail/internals.h](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/detail/internals.h) | C++ | 257 | 61 | 35 | 353 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/detail/typeid.h](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/detail/typeid.h) | C++ | 37 | 10 | 9 | 56 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/eigen.h](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/eigen.h) | C++ | 417 | 106 | 85 | 608 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/embed.h](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/embed.h) | C++ | 95 | 90 | 23 | 208 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/eval.h](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/eval.h) | C++ | 96 | 17 | 20 | 133 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/functional.h](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/functional.h) | C++ | 68 | 20 | 17 | 105 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/iostream.h](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/iostream.h) | C++ | 107 | 77 | 33 | 217 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/numpy.h](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/numpy.h) | C++ | 1,229 | 197 | 254 | 1,680 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/operators.h](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/operators.h) | C++ | 136 | 18 | 20 | 174 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/options.h](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/options.h) | C++ | 30 | 14 | 22 | 66 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/pybind11.h](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/pybind11.h) | C++ | 1,719 | 356 | 281 | 2,356 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/pytypes.h](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/pytypes.h) | C++ | 1,133 | 302 | 221 | 1,656 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/stl.h](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/stl.h) | C++ | 303 | 26 | 60 | 389 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/stl_bind.h](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/stl_bind.h) | C++ | 495 | 53 | 114 | 662 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/pybind11/__init__.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/pybind11/__init__.py) | Python | 8 | 1 | 4 | 13 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/pybind11/__main__.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/pybind11/__main__.py) | Python | 37 | 2 | 11 | 50 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/pybind11/_version.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/pybind11/_version.py) | Python | 7 | 1 | 5 | 13 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/pybind11/commands.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/pybind11/commands.py) | Python | 13 | 1 | 7 | 21 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/pybind11/setup_helpers.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/pybind11/setup_helpers.py) | Python | 264 | 35 | 89 | 388 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/setup.cfg](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/setup.cfg) | Properties | 56 | 3 | 8 | 67 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/setup.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/setup.py) | Python | 77 | 14 | 25 | 116 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/conftest.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/conftest.py) | Python | 143 | 5 | 53 | 201 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/constructor_stats.h](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/constructor_stats.h) | C++ | 180 | 77 | 19 | 276 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/cross_module_gil_utils.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/cross_module_gil_utils.cpp) | C++ | 48 | 15 | 11 | 74 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/env.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/env.py) | Python | 9 | 1 | 5 | 15 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/extra_python_package/pytest.ini](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/extra_python_package/pytest.ini) | Ini | 0 | 0 | 1 | 1 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/extra_python_package/test_files.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/extra_python_package/test_files.py) | Python | 208 | 3 | 49 | 260 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/extra_setuptools/pytest.ini](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/extra_setuptools/pytest.ini) | Ini | 0 | 0 | 1 | 1 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/extra_setuptools/test_setuphelper.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/extra_setuptools/test_setuphelper.py) | Python | 79 | 3 | 20 | 102 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/local_bindings.h](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/local_bindings.h) | C++ | 44 | 11 | 10 | 65 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/object.h](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/object.h) | C++ | 92 | 47 | 37 | 176 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/pybind11_cross_module_tests.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/pybind11_cross_module_tests.cpp) | C++ | 60 | 43 | 21 | 124 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/pybind11_tests.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/pybind11_tests.cpp) | C++ | 55 | 23 | 14 | 92 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/pybind11_tests.h](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/pybind11_tests.h) | C++ | 51 | 7 | 14 | 72 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/pytest.ini](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/pytest.ini) | Ini | 19 | 0 | 1 | 20 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/requirements.txt](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/requirements.txt) | pip requirements | 8 | 0 | 1 | 9 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_async.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_async.cpp) | C++ | 16 | 8 | 3 | 27 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_async.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_async.py) | Python | 15 | 1 | 10 | 26 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_buffers.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_buffers.cpp) | C++ | 165 | 18 | 32 | 215 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_buffers.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_buffers.py) | Python | 122 | 4 | 37 | 163 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_builtin_casters.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_builtin_casters.cpp) | C++ | 138 | 29 | 26 | 193 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_builtin_casters.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_builtin_casters.py) | Python | 307 | 10 | 76 | 393 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_call_policies.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_call_policies.cpp) | C++ | 70 | 15 | 17 | 102 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_call_policies.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_call_policies.py) | Python | 163 | 3 | 27 | 193 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_callbacks.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_callbacks.cpp) | C++ | 124 | 21 | 24 | 169 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_callbacks.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_callbacks.py) | Python | 94 | 6 | 38 | 138 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_chrono.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_chrono.cpp) | C++ | 46 | 25 | 14 | 85 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_chrono.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_chrono.py) | Python | 130 | 23 | 60 | 213 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_class.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_class.cpp) | C++ | 377 | 76 | 73 | 526 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_class.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_class.py) | Python | 295 | 25 | 101 | 421 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_cmake_build/embed.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_cmake_build/embed.cpp) | C++ | 16 | 0 | 6 | 22 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_cmake_build/main.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_cmake_build/main.cpp) | C++ | 5 | 0 | 2 | 7 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_cmake_build/test.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_cmake_build/test.py) | Python | 4 | 1 | 2 | 7 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_constants_and_functions.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_constants_and_functions.cpp) | C++ | 97 | 14 | 17 | 128 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_constants_and_functions.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_constants_and_functions.py) | Python | 30 | 1 | 12 | 43 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_copy_move.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_copy_move.cpp) | C++ | 177 | 22 | 21 | 220 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_copy_move.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_copy_move.py) | Python | 77 | 11 | 26 | 114 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_custom_type_casters.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_custom_type_casters.cpp) | C++ | 91 | 19 | 18 | 128 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_custom_type_casters.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_custom_type_casters.py) | Python | 71 | 5 | 15 | 91 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_docstring_options.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_docstring_options.cpp) | C++ | 38 | 9 | 15 | 62 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_docstring_options.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_docstring_options.py) | Python | 16 | 11 | 13 | 40 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_eigen.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_eigen.cpp) | C++ | 218 | 69 | 41 | 328 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_eigen.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_eigen.py) | Python | 544 | 28 | 126 | 698 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_embed/catch.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_embed/catch.cpp) | C++ | 12 | 4 | 7 | 23 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_embed/external_module.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_embed/external_module.cpp) | C++ | 15 | 3 | 6 | 24 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_embed/test_interpreter.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_embed/test_interpreter.cpp) | C++ | 200 | 31 | 54 | 285 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_embed/test_interpreter.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_embed/test_interpreter.py) | Python | 6 | 1 | 4 | 11 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_enum.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_enum.cpp) | C++ | 63 | 14 | 11 | 88 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_enum.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_enum.py) | Python | 151 | 20 | 42 | 213 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_eval.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_eval.cpp) | C++ | 64 | 11 | 17 | 92 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_eval.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_eval.py) | Python | 16 | 1 | 11 | 28 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_eval_call.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_eval_call.py) | Python | 2 | 2 | 2 | 6 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_exceptions.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_exceptions.cpp) | C++ | 165 | 32 | 28 | 225 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_exceptions.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_exceptions.py) | Python | 123 | 18 | 51 | 192 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_factory_constructors.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_factory_constructors.cpp) | C++ | 250 | 60 | 34 | 344 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_factory_constructors.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_factory_constructors.py) | Python | 375 | 9 | 95 | 479 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_gil_scoped.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_gil_scoped.cpp) | C++ | 40 | 8 | 7 | 55 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_gil_scoped.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_gil_scoped.py) | Python | 62 | 6 | 24 | 92 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_iostream.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_iostream.cpp) | C++ | 46 | 9 | 19 | 74 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_iostream.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_iostream.py) | Python | 168 | 6 | 42 | 216 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_kwargs_and_defaults.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_kwargs_and_defaults.cpp) | C++ | 90 | 35 | 18 | 143 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_kwargs_and_defaults.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_kwargs_and_defaults.py) | Python | 176 | 8 | 57 | 241 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_local_bindings.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_local_bindings.cpp) | C++ | 54 | 32 | 16 | 102 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_local_bindings.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_local_bindings.py) | Python | 165 | 11 | 55 | 231 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_methods_and_attributes.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_methods_and_attributes.cpp) | C++ | 297 | 40 | 42 | 379 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_methods_and_attributes.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_methods_and_attributes.py) | Python | 347 | 14 | 102 | 463 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_modules.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_modules.cpp) | C++ | 74 | 16 | 12 | 102 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_modules.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_modules.py) | Python | 54 | 3 | 17 | 74 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_multiple_inheritance.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_multiple_inheritance.cpp) | C++ | 145 | 43 | 31 | 219 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_multiple_inheritance.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_multiple_inheritance.py) | Python | 258 | 13 | 86 | 357 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_numpy_array.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_numpy_array.cpp) | C++ | 340 | 48 | 51 | 439 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_numpy_array.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_numpy_array.py) | Python | 379 | 21 | 96 | 496 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_numpy_dtypes.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_numpy_dtypes.cpp) | C++ | 408 | 34 | 58 | 500 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_numpy_dtypes.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_numpy_dtypes.py) | Python | 281 | 10 | 76 | 367 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_numpy_vectorize.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_numpy_vectorize.cpp) | C++ | 58 | 22 | 14 | 94 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_numpy_vectorize.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_numpy_vectorize.py) | Python | 181 | 2 | 23 | 206 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_opaque_types.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_opaque_types.cpp) | C++ | 47 | 17 | 10 | 74 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_opaque_types.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_opaque_types.py) | Python | 41 | 1 | 14 | 56 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_operator_overloading.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_operator_overloading.cpp) | C++ | 167 | 31 | 29 | 227 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_operator_overloading.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_operator_overloading.py) | Python | 118 | 3 | 25 | 146 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_pickling.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_pickling.cpp) | C++ | 94 | 19 | 18 | 131 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_pickling.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_pickling.py) | Python | 34 | 1 | 12 | 47 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_pytypes.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_pytypes.cpp) | C++ | 328 | 27 | 56 | 411 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_pytypes.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_pytypes.py) | Python | 326 | 13 | 88 | 427 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_sequences_and_iterators.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_sequences_and_iterators.cpp) | C++ | 284 | 30 | 45 | 359 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_sequences_and_iterators.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_sequences_and_iterators.py) | Python | 141 | 2 | 49 | 192 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_smart_ptr.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_smart_ptr.cpp) | C++ | 284 | 50 | 37 | 371 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_smart_ptr.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_smart_ptr.py) | Python | 224 | 12 | 56 | 292 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_stl.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_stl.cpp) | C++ | 241 | 37 | 47 | 325 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_stl.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_stl.py) | Python | 185 | 3 | 65 | 253 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_stl_binders.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_stl_binders.cpp) | C++ | 91 | 19 | 20 | 130 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_stl_binders.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_stl_binders.py) | Python | 202 | 16 | 68 | 286 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_tagbased_polymorphic.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_tagbased_polymorphic.cpp) | C++ | 107 | 15 | 21 | 143 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_tagbased_polymorphic.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_tagbased_polymorphic.py) | Python | 18 | 1 | 3 | 22 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_union.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_union.cpp) | C++ | 11 | 8 | 4 | 23 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_union.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_union.py) | Python | 5 | 1 | 4 | 10 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_virtual_functions.cpp](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_virtual_functions.cpp) | C++ | 352 | 86 | 61 | 499 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_virtual_functions.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_virtual_functions.py) | Python | 290 | 16 | 75 | 381 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tools/FindCatch.cmake](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tools/FindCatch.cmake) | CMake | 63 | 0 | 8 | 71 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tools/FindEigen3.cmake](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tools/FindEigen3.cmake) | CMake | 67 | 0 | 17 | 84 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tools/FindPythonLibsNew.cmake](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tools/FindPythonLibsNew.cmake) | CMake | 229 | 0 | 27 | 256 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tools/check-style.sh](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tools/check-style.sh) | Shell Script | 26 | 13 | 6 | 45 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tools/libsize.py](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tools/libsize.py) | Python | 24 | 5 | 10 | 39 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tools/pybind11Common.cmake](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tools/pybind11Common.cmake) | CMake | 329 | 0 | 57 | 386 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tools/pybind11NewTools.cmake](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tools/pybind11NewTools.cmake) | CMake | 205 | 0 | 38 | 243 |
+| [src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tools/pybind11Tools.cmake](/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tools/pybind11Tools.cmake) | CMake | 169 | 0 | 28 | 197 |
+
+[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
\ No newline at end of file
diff --git a/.VSCodeCounter/2024-06-17_19-36-50/diff-details.md b/.VSCodeCounter/2024-06-17_19-36-50/diff-details.md
new file mode 100644
index 0000000..f661bc7
--- /dev/null
+++ b/.VSCodeCounter/2024-06-17_19-36-50/diff-details.md
@@ -0,0 +1,15 @@
+# Diff Details
+
+Date : 2024-06-17 19:36:50
+
+Directory d:\\Administrator\\Desktop\\空地协同头歌\\src\\Robot\\unitree_legged_go1-walk
+
+Total : 0 files, 0 codes, 0 comments, 0 blanks, all 0 lines
+
+[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details
+
+## Files
+| filename | language | code | comment | blank | total |
+| :--- | :--- | ---: | ---: | ---: | ---: |
+
+[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details
\ No newline at end of file
diff --git a/.VSCodeCounter/2024-06-17_19-36-50/diff.csv b/.VSCodeCounter/2024-06-17_19-36-50/diff.csv
new file mode 100644
index 0000000..b7d8d75
--- /dev/null
+++ b/.VSCodeCounter/2024-06-17_19-36-50/diff.csv
@@ -0,0 +1,2 @@
+"filename", "language", "", "comment", "blank", "total"
+"Total", "-", , 0, 0, 0
\ No newline at end of file
diff --git a/.VSCodeCounter/2024-06-17_19-36-50/diff.md b/.VSCodeCounter/2024-06-17_19-36-50/diff.md
new file mode 100644
index 0000000..53ce0d6
--- /dev/null
+++ b/.VSCodeCounter/2024-06-17_19-36-50/diff.md
@@ -0,0 +1,19 @@
+# Diff Summary
+
+Date : 2024-06-17 19:36:50
+
+Directory d:\\Administrator\\Desktop\\空地协同头歌\\src\\Robot\\unitree_legged_go1-walk
+
+Total : 0 files, 0 codes, 0 comments, 0 blanks, all 0 lines
+
+[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md)
+
+## Languages
+| language | files | code | comment | blank | total |
+| :--- | ---: | ---: | ---: | ---: | ---: |
+
+## Directories
+| path | files | code | comment | blank | total |
+| :--- | ---: | ---: | ---: | ---: | ---: |
+
+[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md)
\ No newline at end of file
diff --git a/.VSCodeCounter/2024-06-17_19-36-50/diff.txt b/.VSCodeCounter/2024-06-17_19-36-50/diff.txt
new file mode 100644
index 0000000..b04cc61
--- /dev/null
+++ b/.VSCodeCounter/2024-06-17_19-36-50/diff.txt
@@ -0,0 +1,22 @@
+Date : 2024-06-17 19:36:50
+Directory : d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk
+Total : 0 files, 0 codes, 0 comments, 0 blanks, all 0 lines
+
+Languages
++----------+------------+------------+------------+------------+------------+
+| language | files | code | comment | blank | total |
++----------+------------+------------+------------+------------+------------+
++----------+------------+------------+------------+------------+------------+
+
+Directories
++------+------------+------------+------------+------------+------------+
+| path | files | code | comment | blank | total |
++------+------------+------------+------------+------------+------------+
++------+------------+------------+------------+------------+------------+
+
+Files
++----------+----------+------------+------------+------------+------------+
+| filename | language | code | comment | blank | total |
++----------+----------+------------+------------+------------+------------+
+| Total | | 0 | 0 | 0 | 0 |
++----------+----------+------------+------------+------------+------------+
\ No newline at end of file
diff --git a/.VSCodeCounter/2024-06-17_19-36-50/results.csv b/.VSCodeCounter/2024-06-17_19-36-50/results.csv
new file mode 100644
index 0000000..0d8ae86
--- /dev/null
+++ b/.VSCodeCounter/2024-06-17_19-36-50/results.csv
@@ -0,0 +1,214 @@
+"filename", "language", "XML", "Python", "C++", "Markdown", "YAML", "reStructuredText", "Properties", "CMake", "Shell Script", "CSS", "pip requirements", "Ini", "comment", "blank", "total"
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\README.md", "Markdown", 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 54
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\example\example_joystick.cpp", "C++", 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 16, 83
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\example\example_position.cpp", "C++", 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 22, 170
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\example\example_torque.cpp", "C++", 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 16, 97
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\example\example_velocity.cpp", "C++", 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 18, 101
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\example\example_walk.cpp", "C++", 0, 0, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 15, 226
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\example_py\example_position.py", "Python", 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 26, 119
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\example_py\example_torque.py", "Python", 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 18, 71
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\example_py\example_velocity.py", "Python", 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 17, 59
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\example_py\example_walk.py", "Python", 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 30, 120
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\include\unitree_legged_sdk\a1_const.h", "C++", 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 18
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\include\unitree_legged_sdk\aliengo_const.h", "C++", 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 18
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\include\unitree_legged_sdk\b1_const.h", "C++", 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 16
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\include\unitree_legged_sdk\comm.h", "C++", 0, 0, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 30, 229
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\include\unitree_legged_sdk\go1_const.h", "C++", 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 18
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\include\unitree_legged_sdk\joystick.h", "C++", 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 44
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\include\unitree_legged_sdk\loop.h", "C++", 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 13, 62
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\include\unitree_legged_sdk\quadruped.h", "C++", 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 14, 49
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\include\unitree_legged_sdk\safety.h", "C++", 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 7, 30
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\include\unitree_legged_sdk\udp.h", "C++", 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 19, 99
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\include\unitree_legged_sdk\unitree_legged_sdk.h", "C++", 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 5, 19
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\package.xml", "XML", 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 11
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\python_interface.cpp", "C++", 0, 0, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 22, 221
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\.appveyor.yml", "YAML", 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 1, 38
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\.cmake-format.yaml", "YAML", 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 28, 15, 74
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\.github\CONTRIBUTING.md", "Markdown", 0, 0, 0, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 320
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\.github\ISSUE_TEMPLATE\bug-report.md", "Markdown", 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 29
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\.github\ISSUE_TEMPLATE\config.yml", "YAML", 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\.github\ISSUE_TEMPLATE\feature-request.md", "Markdown", 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 17
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\.github\ISSUE_TEMPLATE\question.md", "Markdown", 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 22
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\.github\labeler.yml", "YAML", 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 3, 15
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\.github\workflows\ci.yml", "YAML", 0, 0, 0, 0, 368, 0, 0, 0, 0, 0, 0, 0, 43, 112, 523
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\.github\workflows\configure.yml", "YAML", 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 6, 16, 85
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\.github\workflows\format.yml", "YAML", 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 3, 8, 42
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\.github\workflows\labeler.yml", "YAML", 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 2, 14
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\.github\workflows\pip.yml", "YAML", 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 7, 24, 104
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\.pre-commit-config.yaml", "YAML", 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 22, 9, 89
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\.readthedocs.yml", "YAML", 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\README.rst", "reStructuredText", 0, 0, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 6, 31, 159
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\_static\theme_overrides.css", "CSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 1, 12
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\cast\chrono.rst", "reStructuredText", 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 2, 18, 82
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\cast\custom.rst", "reStructuredText", 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 5, 19, 92
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\cast\eigen.rst", "reStructuredText", 0, 0, 0, 0, 0, 229, 0, 0, 0, 0, 0, 0, 13, 69, 311
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\cast\functional.rst", "reStructuredText", 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 9, 27, 110
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\cast\index.rst", "reStructuredText", 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 2, 11, 44
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\cast\overview.rst", "reStructuredText", 0, 0, 0, 0, 0, 136, 0, 0, 0, 0, 0, 0, 8, 22, 166
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\cast\stl.rst", "reStructuredText", 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 18, 65, 241
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\cast\strings.rst", "reStructuredText", 0, 0, 0, 0, 0, 195, 0, 0, 0, 0, 0, 0, 20, 91, 306
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\classes.rst", "reStructuredText", 0, 0, 0, 0, 0, 856, 0, 0, 0, 0, 0, 0, 96, 310, 1262
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\embedding.rst", "reStructuredText", 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 14, 80, 262
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\exceptions.rst", "reStructuredText", 0, 0, 0, 0, 0, 224, 0, 0, 0, 0, 0, 0, 14, 61, 299
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\functions.rst", "reStructuredText", 0, 0, 0, 0, 0, 367, 0, 0, 0, 0, 0, 0, 47, 148, 562
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\misc.rst", "reStructuredText", 0, 0, 0, 0, 0, 214, 0, 0, 0, 0, 0, 0, 27, 97, 338
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\pycpp\index.rst", "reStructuredText", 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 1, 4, 14
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\pycpp\numpy.rst", "reStructuredText", 0, 0, 0, 0, 0, 299, 0, 0, 0, 0, 0, 0, 26, 112, 437
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\pycpp\object.rst", "reStructuredText", 0, 0, 0, 0, 0, 143, 0, 0, 0, 0, 0, 0, 27, 82, 252
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\pycpp\utilities.rst", "reStructuredText", 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 13, 41, 145
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\smart_ptrs.rst", "reStructuredText", 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, 14, 53, 174
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\basics.rst", "reStructuredText", 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 32, 99, 302
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\benchmark.py", "Python", 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 14, 90
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\benchmark.rst", "reStructuredText", 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 16, 27, 96
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\changelog.rst", "reStructuredText", 0, 0, 0, 0, 0, 1118, 0, 0, 0, 0, 0, 0, 15, 365, 1498
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\classes.rst", "reStructuredText", 0, 0, 0, 0, 0, 333, 0, 0, 0, 0, 0, 0, 49, 151, 533
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\cmake\index.rst", "reStructuredText", 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 1, 3, 9
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\compiling.rst", "reStructuredText", 0, 0, 0, 0, 0, 373, 0, 0, 0, 0, 0, 0, 47, 174, 594
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\conf.py", "Python", 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 85, 340
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\faq.rst", "reStructuredText", 0, 0, 0, 0, 0, 227, 0, 0, 0, 0, 0, 0, 20, 97, 344
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\index.rst", "reStructuredText", 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 6, 11, 44
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\installing.rst", "reStructuredText", 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 9, 33, 104
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\limitations.rst", "reStructuredText", 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 15, 57
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\pybind11_vs_boost_python1.svg", "XML", 427, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 428
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\pybind11_vs_boost_python2.svg", "XML", 427, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 428
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\reference.rst", "reStructuredText", 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 30, 47, 118
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\release.rst", "reStructuredText", 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 2, 17, 76
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\requirements.txt", "pip requirements", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 1, 8
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\upgrade.rst", "reStructuredText", 0, 0, 0, 0, 0, 359, 0, 0, 0, 0, 0, 0, 19, 136, 514
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\attr.h", "C++", 0, 0, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 120, 552
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\buffer_info.h", "C++", 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 27, 147
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\cast.h", "C++", 0, 0, 1615, 0, 0, 0, 0, 0, 0, 0, 0, 0, 305, 307, 2227
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\chrono.h", "C++", 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 32, 192
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\common.h", "C++", 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\complex.h", "C++", 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 14, 66
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\detail\class.h", "C++", 0, 0, 460, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 100, 671
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\detail\common.h", "C++", 0, 0, 527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 213, 114, 854
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\detail\descr.h", "C++", 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 23, 101
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\detail\init.h", "C++", 0, 0, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 43, 337
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\detail\internals.h", "C++", 0, 0, 257, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 35, 353
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\detail\typeid.h", "C++", 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 9, 56
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\eigen.h", "C++", 0, 0, 417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 85, 608
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\embed.h", "C++", 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 23, 208
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\eval.h", "C++", 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 20, 133
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\functional.h", "C++", 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 17, 105
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\iostream.h", "C++", 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 33, 217
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\numpy.h", "C++", 0, 0, 1229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 197, 254, 1680
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\operators.h", "C++", 0, 0, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 20, 174
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\options.h", "C++", 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 22, 66
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\pybind11.h", "C++", 0, 0, 1719, 0, 0, 0, 0, 0, 0, 0, 0, 0, 356, 281, 2356
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\pytypes.h", "C++", 0, 0, 1133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 302, 221, 1656
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\stl.h", "C++", 0, 0, 303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 60, 389
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\stl_bind.h", "C++", 0, 0, 495, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 114, 662
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\pybind11\__init__.py", "Python", 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 13
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\pybind11\__main__.py", "Python", 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 11, 50
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\pybind11\_version.py", "Python", 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 13
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\pybind11\commands.py", "Python", 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 21
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\pybind11\setup_helpers.py", "Python", 0, 264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 89, 388
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\setup.cfg", "Properties", 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 3, 8, 67
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\setup.py", "Python", 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 25, 116
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\conftest.py", "Python", 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 53, 201
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\constructor_stats.h", "C++", 0, 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 19, 276
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\cross_module_gil_utils.cpp", "C++", 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 11, 74
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\env.py", "Python", 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 15
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\extra_python_package\pytest.ini", "Ini", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\extra_python_package\test_files.py", "Python", 0, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 49, 260
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\extra_setuptools\pytest.ini", "Ini", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\extra_setuptools\test_setuphelper.py", "Python", 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 20, 102
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\local_bindings.h", "C++", 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 10, 65
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\object.h", "C++", 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 37, 176
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\pybind11_cross_module_tests.cpp", "C++", 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 21, 124
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\pybind11_tests.cpp", "C++", 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 14, 92
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\pybind11_tests.h", "C++", 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 14, 72
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\pytest.ini", "Ini", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 1, 20
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\requirements.txt", "pip requirements", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 1, 9
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_async.cpp", "C++", 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 3, 27
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_async.py", "Python", 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 10, 26
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_buffers.cpp", "C++", 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 32, 215
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_buffers.py", "Python", 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 37, 163
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_builtin_casters.cpp", "C++", 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 26, 193
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_builtin_casters.py", "Python", 0, 307, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 76, 393
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_call_policies.cpp", "C++", 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 17, 102
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_call_policies.py", "Python", 0, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 27, 193
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_callbacks.cpp", "C++", 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 24, 169
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_callbacks.py", "Python", 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 38, 138
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_chrono.cpp", "C++", 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 14, 85
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_chrono.py", "Python", 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 60, 213
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_class.cpp", "C++", 0, 0, 377, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 73, 526
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_class.py", "Python", 0, 295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 101, 421
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_cmake_build\embed.cpp", "C++", 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 22
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_cmake_build\main.cpp", "C++", 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 7
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_cmake_build\test.py", "Python", 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 7
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_constants_and_functions.cpp", "C++", 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 17, 128
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_constants_and_functions.py", "Python", 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 12, 43
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_copy_move.cpp", "C++", 0, 0, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 21, 220
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_copy_move.py", "Python", 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 26, 114
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_custom_type_casters.cpp", "C++", 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 18, 128
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_custom_type_casters.py", "Python", 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 15, 91
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_docstring_options.cpp", "C++", 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 15, 62
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_docstring_options.py", "Python", 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 13, 40
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_eigen.cpp", "C++", 0, 0, 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 41, 328
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_eigen.py", "Python", 0, 544, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 126, 698
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_embed\catch.cpp", "C++", 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 7, 23
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_embed\external_module.cpp", "C++", 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 24
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_embed\test_interpreter.cpp", "C++", 0, 0, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 54, 285
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_embed\test_interpreter.py", "Python", 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 11
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_enum.cpp", "C++", 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 11, 88
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_enum.py", "Python", 0, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 42, 213
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_eval.cpp", "C++", 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 17, 92
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_eval.py", "Python", 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 11, 28
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_eval_call.py", "Python", 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 6
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_exceptions.cpp", "C++", 0, 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 28, 225
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_exceptions.py", "Python", 0, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 51, 192
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_factory_constructors.cpp", "C++", 0, 0, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 34, 344
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_factory_constructors.py", "Python", 0, 375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 95, 479
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_gil_scoped.cpp", "C++", 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 7, 55
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_gil_scoped.py", "Python", 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 24, 92
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_iostream.cpp", "C++", 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 19, 74
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_iostream.py", "Python", 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 42, 216
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_kwargs_and_defaults.cpp", "C++", 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 18, 143
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_kwargs_and_defaults.py", "Python", 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 57, 241
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_local_bindings.cpp", "C++", 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 16, 102
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_local_bindings.py", "Python", 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 55, 231
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_methods_and_attributes.cpp", "C++", 0, 0, 297, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 42, 379
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_methods_and_attributes.py", "Python", 0, 347, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 102, 463
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_modules.cpp", "C++", 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 12, 102
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_modules.py", "Python", 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 17, 74
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_multiple_inheritance.cpp", "C++", 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 31, 219
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_multiple_inheritance.py", "Python", 0, 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 86, 357
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_numpy_array.cpp", "C++", 0, 0, 340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 51, 439
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_numpy_array.py", "Python", 0, 379, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 96, 496
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_numpy_dtypes.cpp", "C++", 0, 0, 408, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 58, 500
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_numpy_dtypes.py", "Python", 0, 281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 76, 367
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_numpy_vectorize.cpp", "C++", 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 14, 94
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_numpy_vectorize.py", "Python", 0, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 23, 206
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_opaque_types.cpp", "C++", 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 10, 74
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_opaque_types.py", "Python", 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 14, 56
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_operator_overloading.cpp", "C++", 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 29, 227
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_operator_overloading.py", "Python", 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 25, 146
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_pickling.cpp", "C++", 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 18, 131
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_pickling.py", "Python", 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 12, 47
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_pytypes.cpp", "C++", 0, 0, 328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 56, 411
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_pytypes.py", "Python", 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 88, 427
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_sequences_and_iterators.cpp", "C++", 0, 0, 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 45, 359
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_sequences_and_iterators.py", "Python", 0, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 49, 192
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_smart_ptr.cpp", "C++", 0, 0, 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 37, 371
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_smart_ptr.py", "Python", 0, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 56, 292
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_stl.cpp", "C++", 0, 0, 241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 47, 325
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_stl.py", "Python", 0, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 65, 253
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_stl_binders.cpp", "C++", 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 130
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_stl_binders.py", "Python", 0, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 68, 286
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_tagbased_polymorphic.cpp", "C++", 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 21, 143
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_tagbased_polymorphic.py", "Python", 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 22
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_union.cpp", "C++", 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 23
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_union.py", "Python", 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 10
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_virtual_functions.cpp", "C++", 0, 0, 352, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 61, 499
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_virtual_functions.py", "Python", 0, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 75, 381
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tools\FindCatch.cmake", "CMake", 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 8, 71
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tools\FindEigen3.cmake", "CMake", 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 17, 84
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tools\FindPythonLibsNew.cmake", "CMake", 0, 0, 0, 0, 0, 0, 0, 229, 0, 0, 0, 0, 0, 27, 256
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tools\check-style.sh", "Shell Script", 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 13, 6, 45
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tools\libsize.py", "Python", 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 10, 39
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tools\pybind11Common.cmake", "CMake", 0, 0, 0, 0, 0, 0, 0, 329, 0, 0, 0, 0, 0, 57, 386
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tools\pybind11NewTools.cmake", "CMake", 0, 0, 0, 0, 0, 0, 0, 205, 0, 0, 0, 0, 0, 38, 243
+"d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tools\pybind11Tools.cmake", "CMake", 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 28, 197
+"Total", "-", 863, 7457, 17167, 337, 693, 6421, 56, 1062, 26, 11, 15, 19, 5084, 8663, 47874
\ No newline at end of file
diff --git a/.VSCodeCounter/2024-06-17_19-36-50/results.json b/.VSCodeCounter/2024-06-17_19-36-50/results.json
new file mode 100644
index 0000000..48171b6
--- /dev/null
+++ b/.VSCodeCounter/2024-06-17_19-36-50/results.json
@@ -0,0 +1 @@
+{"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/package.xml":{"language":"XML","code":9,"comment":0,"blank":2},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/example_py/example_walk.py":{"language":"Python","code":76,"comment":14,"blank":30},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/example_py/example_position.py":{"language":"Python","code":81,"comment":12,"blank":26},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/example_py/example_velocity.py":{"language":"Python","code":38,"comment":4,"blank":17},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/example_py/example_torque.py":{"language":"Python","code":44,"comment":9,"blank":18},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/a1_const.h":{"language":"C++","code":11,"comment":3,"blank":4},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/python_interface.cpp":{"language":"C++","code":190,"comment":9,"blank":22},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/example/example_velocity.cpp":{"language":"C++","code":77,"comment":6,"blank":18},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/joystick.h":{"language":"C++","code":35,"comment":5,"blank":4},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/safety.h":{"language":"C++","code":18,"comment":5,"blank":7},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/README.md":{"language":"Markdown","code":42,"comment":0,"blank":12},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.appveyor.yml":{"language":"YAML","code":37,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/labeler.yml":{"language":"YAML","code":12,"comment":0,"blank":3},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/setup.py":{"language":"Python","code":77,"comment":14,"blank":25},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.cmake-format.yaml":{"language":"YAML","code":31,"comment":28,"blank":15},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/README.rst":{"language":"reStructuredText","code":122,"comment":6,"blank":31},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/udp.h":{"language":"C++","code":63,"comment":17,"blank":19},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/unitree_legged_sdk.h":{"language":"C++","code":11,"comment":3,"blank":5},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/quadruped.h":{"language":"C++","code":31,"comment":4,"blank":14},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/loop.h":{"language":"C++","code":42,"comment":7,"blank":13},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/example/example_walk.cpp":{"language":"C++","code":169,"comment":42,"blank":15},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/example/example_torque.cpp":{"language":"C++","code":77,"comment":4,"blank":16},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/go1_const.h":{"language":"C++","code":11,"comment":3,"blank":4},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/comm.h":{"language":"C++","code":172,"comment":27,"blank":30},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/example/example_joystick.cpp":{"language":"C++","code":64,"comment":3,"blank":16},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/example/example_position.cpp":{"language":"C++","code":134,"comment":14,"blank":22},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.pre-commit-config.yaml":{"language":"YAML","code":58,"comment":22,"blank":9},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/ISSUE_TEMPLATE/feature-request.md":{"language":"Markdown","code":11,"comment":0,"blank":6},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/setup.cfg":{"language":"Properties","code":56,"comment":3,"blank":8},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/ISSUE_TEMPLATE/config.yml":{"language":"YAML","code":5,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/CONTRIBUTING.md":{"language":"Markdown","code":248,"comment":0,"blank":72},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/pybind11/__main__.py":{"language":"Python","code":37,"comment":2,"blank":11},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/pybind11/__init__.py":{"language":"Python","code":8,"comment":1,"blank":4},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/workflows/configure.yml":{"language":"YAML","code":63,"comment":6,"blank":16},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/pybind11/_version.py":{"language":"Python","code":7,"comment":1,"blank":5},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/pybind11/setup_helpers.py":{"language":"Python","code":264,"comment":35,"blank":89},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/pybind11/commands.py":{"language":"Python","code":13,"comment":1,"blank":7},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/b1_const.h":{"language":"C++","code":11,"comment":3,"blank":2},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/include/unitree_legged_sdk/aliengo_const.h":{"language":"C++","code":11,"comment":3,"blank":4},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/conftest.py":{"language":"Python","code":143,"comment":5,"blank":53},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/ISSUE_TEMPLATE/bug-report.md":{"language":"Markdown","code":19,"comment":0,"blank":10},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tools/FindEigen3.cmake":{"language":"CMake","code":67,"comment":0,"blank":17},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/workflows/format.yml":{"language":"YAML","code":31,"comment":3,"blank":8},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/basics.rst":{"language":"reStructuredText","code":171,"comment":32,"blank":99},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tools/FindPythonLibsNew.cmake":{"language":"CMake","code":229,"comment":0,"blank":27},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.readthedocs.yml":{"language":"YAML","code":3,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/constructor_stats.h":{"language":"C++","code":180,"comment":77,"blank":19},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/cross_module_gil_utils.cpp":{"language":"C++","code":48,"comment":15,"blank":11},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tools/FindCatch.cmake":{"language":"CMake","code":63,"comment":0,"blank":8},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tools/check-style.sh":{"language":"Shell Script","code":26,"comment":13,"blank":6},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/conf.py":{"language":"Python","code":78,"comment":177,"blank":85},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/pybind11_tests.cpp":{"language":"C++","code":55,"comment":23,"blank":14},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/compiling.rst":{"language":"reStructuredText","code":373,"comment":47,"blank":174},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/workflows/labeler.yml":{"language":"YAML","code":12,"comment":0,"blank":2},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/pybind11_cross_module_tests.cpp":{"language":"C++","code":60,"comment":43,"blank":21},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/object.h":{"language":"C++","code":92,"comment":47,"blank":37},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/embedding.rst":{"language":"reStructuredText","code":168,"comment":14,"blank":80},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/cast.h":{"language":"C++","code":1615,"comment":305,"blank":307},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_call_policies.cpp":{"language":"C++","code":70,"comment":15,"blank":17},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/workflows/ci.yml":{"language":"YAML","code":368,"comment":43,"blank":112},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_async.cpp":{"language":"C++","code":16,"comment":8,"blank":3},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/eigen.h":{"language":"C++","code":417,"comment":106,"blank":85},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_call_policies.py":{"language":"Python","code":163,"comment":3,"blank":27},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_chrono.cpp":{"language":"C++","code":46,"comment":25,"blank":14},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_class.py":{"language":"Python","code":295,"comment":25,"blank":101},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_chrono.py":{"language":"Python","code":130,"comment":23,"blank":60},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/workflows/pip.yml":{"language":"YAML","code":73,"comment":7,"blank":24},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_constants_and_functions.cpp":{"language":"C++","code":97,"comment":14,"blank":17},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/.github/ISSUE_TEMPLATE/question.md":{"language":"Markdown","code":17,"comment":0,"blank":5},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_copy_move.py":{"language":"Python","code":77,"comment":11,"blank":26},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_copy_move.cpp":{"language":"C++","code":177,"comment":22,"blank":21},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_custom_type_casters.cpp":{"language":"C++","code":91,"comment":19,"blank":18},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/_static/theme_overrides.css":{"language":"CSS","code":11,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_constants_and_functions.py":{"language":"Python","code":30,"comment":1,"blank":12},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_custom_type_casters.py":{"language":"Python","code":71,"comment":5,"blank":15},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_docstring_options.cpp":{"language":"C++","code":38,"comment":9,"blank":15},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/upgrade.rst":{"language":"reStructuredText","code":359,"comment":19,"blank":136},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_class.cpp":{"language":"C++","code":377,"comment":76,"blank":73},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/embed.h":{"language":"C++","code":95,"comment":90,"blank":23},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_cmake_build/embed.cpp":{"language":"C++","code":16,"comment":0,"blank":6},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/release.rst":{"language":"reStructuredText","code":57,"comment":2,"blank":17},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/reference.rst":{"language":"reStructuredText","code":41,"comment":30,"blank":47},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_callbacks.py":{"language":"Python","code":94,"comment":6,"blank":38},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_exceptions.cpp":{"language":"C++","code":165,"comment":32,"blank":28},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/cmake/index.rst":{"language":"reStructuredText","code":5,"comment":1,"blank":3},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/requirements.txt":{"language":"pip requirements","code":7,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_factory_constructors.py":{"language":"Python","code":375,"comment":9,"blank":95},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/detail/class.h":{"language":"C++","code":460,"comment":111,"blank":100},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_factory_constructors.cpp":{"language":"C++","code":250,"comment":60,"blank":34},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_exceptions.py":{"language":"Python","code":123,"comment":18,"blank":51},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_eval_call.py":{"language":"Python","code":2,"comment":2,"blank":2},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_gil_scoped.cpp":{"language":"C++","code":40,"comment":8,"blank":7},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_eval.py":{"language":"Python","code":16,"comment":1,"blank":11},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_eval.cpp":{"language":"C++","code":64,"comment":11,"blank":17},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_cmake_build/test.py":{"language":"Python","code":4,"comment":1,"blank":2},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_gil_scoped.py":{"language":"Python","code":62,"comment":6,"blank":24},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_iostream.cpp":{"language":"C++","code":46,"comment":9,"blank":19},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/detail/common.h":{"language":"C++","code":527,"comment":213,"blank":114},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_local_bindings.py":{"language":"Python","code":165,"comment":11,"blank":55},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/detail/descr.h":{"language":"C++","code":68,"comment":10,"blank":23},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/detail/init.h":{"language":"C++","code":228,"comment":66,"blank":43},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_enum.py":{"language":"Python","code":151,"comment":20,"blank":42},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_methods_and_attributes.py":{"language":"Python","code":347,"comment":14,"blank":102},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_local_bindings.cpp":{"language":"C++","code":54,"comment":32,"blank":16},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_kwargs_and_defaults.cpp":{"language":"C++","code":90,"comment":35,"blank":18},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_kwargs_and_defaults.py":{"language":"Python","code":176,"comment":8,"blank":57},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_methods_and_attributes.cpp":{"language":"C++","code":297,"comment":40,"blank":42},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_iostream.py":{"language":"Python","code":168,"comment":6,"blank":42},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/detail/typeid.h":{"language":"C++","code":37,"comment":10,"blank":9},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_enum.cpp":{"language":"C++","code":63,"comment":14,"blank":11},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/detail/internals.h":{"language":"C++","code":257,"comment":61,"blank":35},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_cmake_build/main.cpp":{"language":"C++","code":5,"comment":0,"blank":2},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_modules.py":{"language":"Python","code":54,"comment":3,"blank":17},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_modules.cpp":{"language":"C++","code":74,"comment":16,"blank":12},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_multiple_inheritance.py":{"language":"Python","code":258,"comment":13,"blank":86},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_multiple_inheritance.cpp":{"language":"C++","code":145,"comment":43,"blank":31},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_numpy_array.cpp":{"language":"C++","code":340,"comment":48,"blank":51},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_embed/external_module.cpp":{"language":"C++","code":15,"comment":3,"blank":6},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_opaque_types.cpp":{"language":"C++","code":47,"comment":17,"blank":10},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_opaque_types.py":{"language":"Python","code":41,"comment":1,"blank":14},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_numpy_vectorize.py":{"language":"Python","code":181,"comment":2,"blank":23},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_numpy_dtypes.py":{"language":"Python","code":281,"comment":10,"blank":76},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_numpy_vectorize.cpp":{"language":"C++","code":58,"comment":22,"blank":14},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_embed/catch.cpp":{"language":"C++","code":12,"comment":4,"blank":7},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_numpy_dtypes.cpp":{"language":"C++","code":408,"comment":34,"blank":58},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_pickling.py":{"language":"Python","code":34,"comment":1,"blank":12},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_embed/test_interpreter.cpp":{"language":"C++","code":200,"comment":31,"blank":54},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_numpy_array.py":{"language":"Python","code":379,"comment":21,"blank":96},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_pytypes.cpp":{"language":"C++","code":328,"comment":27,"blank":56},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_smart_ptr.cpp":{"language":"C++","code":284,"comment":50,"blank":37},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_sequences_and_iterators.py":{"language":"Python","code":141,"comment":2,"blank":49},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_stl.cpp":{"language":"C++","code":241,"comment":37,"blank":47},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_sequences_and_iterators.cpp":{"language":"C++","code":284,"comment":30,"blank":45},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/pybind11_vs_boost_python2.svg":{"language":"XML","code":427,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_pytypes.py":{"language":"Python","code":326,"comment":13,"blank":88},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_smart_ptr.py":{"language":"Python","code":224,"comment":12,"blank":56},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_pickling.cpp":{"language":"C++","code":94,"comment":19,"blank":18},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_operator_overloading.py":{"language":"Python","code":118,"comment":3,"blank":25},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_embed/test_interpreter.py":{"language":"Python","code":6,"comment":1,"blank":4},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_operator_overloading.cpp":{"language":"C++","code":167,"comment":31,"blank":29},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_virtual_functions.cpp":{"language":"C++","code":352,"comment":86,"blank":61},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_stl.py":{"language":"Python","code":185,"comment":3,"blank":65},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_union.cpp":{"language":"C++","code":11,"comment":8,"blank":4},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_union.py":{"language":"Python","code":5,"comment":1,"blank":4},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_eigen.py":{"language":"Python","code":544,"comment":28,"blank":126},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_tagbased_polymorphic.py":{"language":"Python","code":18,"comment":1,"blank":3},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_stl_binders.cpp":{"language":"C++","code":91,"comment":19,"blank":20},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_stl_binders.py":{"language":"Python","code":202,"comment":16,"blank":68},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_tagbased_polymorphic.cpp":{"language":"C++","code":107,"comment":15,"blank":21},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_virtual_functions.py":{"language":"Python","code":290,"comment":16,"blank":75},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_eigen.cpp":{"language":"C++","code":218,"comment":69,"blank":41},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_docstring_options.py":{"language":"Python","code":16,"comment":11,"blank":13},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/complex.h":{"language":"C++","code":43,"comment":9,"blank":14},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_builtin_casters.py":{"language":"Python","code":307,"comment":10,"blank":76},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_callbacks.cpp":{"language":"C++","code":124,"comment":21,"blank":24},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/common.h":{"language":"C++","code":2,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/smart_ptrs.rst":{"language":"reStructuredText","code":107,"comment":14,"blank":53},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/pycpp/numpy.rst":{"language":"reStructuredText","code":299,"comment":26,"blank":112},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_builtin_casters.cpp":{"language":"C++","code":138,"comment":29,"blank":26},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/pycpp/utilities.rst":{"language":"reStructuredText","code":91,"comment":13,"blank":41},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/pycpp/object.rst":{"language":"reStructuredText","code":143,"comment":27,"blank":82},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/pycpp/index.rst":{"language":"reStructuredText","code":9,"comment":1,"blank":4},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_buffers.py":{"language":"Python","code":122,"comment":4,"blank":37},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_buffers.cpp":{"language":"C++","code":165,"comment":18,"blank":32},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/misc.rst":{"language":"reStructuredText","code":214,"comment":27,"blank":97},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/chrono.h":{"language":"C++","code":128,"comment":32,"blank":32},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/test_async.py":{"language":"Python","code":15,"comment":1,"blank":10},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/exceptions.rst":{"language":"reStructuredText","code":224,"comment":14,"blank":61},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/limitations.rst":{"language":"reStructuredText","code":42,"comment":0,"blank":15},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/functions.rst":{"language":"reStructuredText","code":367,"comment":47,"blank":148},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/installing.rst":{"language":"reStructuredText","code":62,"comment":9,"blank":33},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/buffer_info.h":{"language":"C++","code":106,"comment":14,"blank":27},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/index.rst":{"language":"reStructuredText","code":27,"comment":6,"blank":11},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/faq.rst":{"language":"reStructuredText","code":227,"comment":20,"blank":97},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/classes.rst":{"language":"reStructuredText","code":856,"comment":96,"blank":310},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/attr.h":{"language":"C++","code":306,"comment":126,"blank":120},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/requirements.txt":{"language":"pip requirements","code":8,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/pybind11_tests.h":{"language":"C++","code":51,"comment":7,"blank":14},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/local_bindings.h":{"language":"C++","code":44,"comment":11,"blank":10},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tools/pybind11Tools.cmake":{"language":"CMake","code":169,"comment":0,"blank":28},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tools/pybind11NewTools.cmake":{"language":"CMake","code":205,"comment":0,"blank":38},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/classes.rst":{"language":"reStructuredText","code":333,"comment":49,"blank":151},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/pytest.ini":{"language":"Ini","code":19,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/cast/strings.rst":{"language":"reStructuredText","code":195,"comment":20,"blank":91},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/cast/index.rst":{"language":"reStructuredText","code":31,"comment":2,"blank":11},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/cast/stl.rst":{"language":"reStructuredText","code":158,"comment":18,"blank":65},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/cast/overview.rst":{"language":"reStructuredText","code":136,"comment":8,"blank":22},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/cast/functional.rst":{"language":"reStructuredText","code":74,"comment":9,"blank":27},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/extra_setuptools/test_setuphelper.py":{"language":"Python","code":79,"comment":3,"blank":20},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/iostream.h":{"language":"C++","code":107,"comment":77,"blank":33},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/functional.h":{"language":"C++","code":68,"comment":20,"blank":17},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/cast/eigen.rst":{"language":"reStructuredText","code":229,"comment":13,"blank":69},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/eval.h":{"language":"C++","code":96,"comment":17,"blank":20},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/operators.h":{"language":"C++","code":136,"comment":18,"blank":20},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/numpy.h":{"language":"C++","code":1229,"comment":197,"blank":254},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/extra_setuptools/pytest.ini":{"language":"Ini","code":0,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/options.h":{"language":"C++","code":30,"comment":14,"blank":22},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/stl.h":{"language":"C++","code":303,"comment":26,"blank":60},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/cast/custom.rst":{"language":"reStructuredText","code":68,"comment":5,"blank":19},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/pytypes.h":{"language":"C++","code":1133,"comment":302,"blank":221},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/advanced/cast/chrono.rst":{"language":"reStructuredText","code":62,"comment":2,"blank":18},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/pybind11.h":{"language":"C++","code":1719,"comment":356,"blank":281},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/include/pybind11/stl_bind.h":{"language":"C++","code":495,"comment":53,"blank":114},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/changelog.rst":{"language":"reStructuredText","code":1118,"comment":15,"blank":365},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/benchmark.rst":{"language":"reStructuredText","code":53,"comment":16,"blank":27},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/env.py":{"language":"Python","code":9,"comment":1,"blank":5},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/benchmark.py":{"language":"Python","code":75,"comment":1,"blank":14},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tools/pybind11Common.cmake":{"language":"CMake","code":329,"comment":0,"blank":57},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tools/libsize.py":{"language":"Python","code":24,"comment":5,"blank":10},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/extra_python_package/test_files.py":{"language":"Python","code":208,"comment":3,"blank":49},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/tests/extra_python_package/pytest.ini":{"language":"Ini","code":0,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/%E7%A9%BA%E5%9C%B0%E5%8D%8F%E5%90%8C%E5%A4%B4%E6%AD%8C/src/Robot/unitree_legged_go1-walk/python_wrapper/third-party/pybind11/docs/pybind11_vs_boost_python1.svg":{"language":"XML","code":427,"comment":0,"blank":1}}
\ No newline at end of file
diff --git a/.VSCodeCounter/2024-06-17_19-36-50/results.md b/.VSCodeCounter/2024-06-17_19-36-50/results.md
new file mode 100644
index 0000000..bb69f88
--- /dev/null
+++ b/.VSCodeCounter/2024-06-17_19-36-50/results.md
@@ -0,0 +1,66 @@
+# Summary
+
+Date : 2024-06-17 19:36:50
+
+Directory d:\\Administrator\\Desktop\\空地协同头歌\\src\\Robot\\unitree_legged_go1-walk
+
+Total : 212 files, 34127 codes, 5084 comments, 8663 blanks, all 47874 lines
+
+Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
+
+## Languages
+| language | files | code | comment | blank | total |
+| :--- | ---: | ---: | ---: | ---: | ---: |
+| C++ | 90 | 17,167 | 3,720 | 3,398 | 24,285 |
+| Python | 57 | 7,457 | 631 | 2,253 | 10,341 |
+| reStructuredText | 32 | 6,421 | 608 | 2,516 | 9,545 |
+| CMake | 6 | 1,062 | 0 | 175 | 1,237 |
+| XML | 3 | 863 | 0 | 4 | 867 |
+| YAML | 11 | 693 | 109 | 192 | 994 |
+| Markdown | 5 | 337 | 0 | 105 | 442 |
+| Properties | 1 | 56 | 3 | 8 | 67 |
+| Shell Script | 1 | 26 | 13 | 6 | 45 |
+| Ini | 3 | 19 | 0 | 3 | 22 |
+| pip requirements | 2 | 15 | 0 | 2 | 17 |
+| CSS | 1 | 11 | 0 | 1 | 12 |
+
+## Directories
+| path | files | code | comment | blank | total |
+| :--- | ---: | ---: | ---: | ---: | ---: |
+| . | 212 | 34,127 | 5,084 | 8,663 | 47,874 |
+| . (Files) | 2 | 51 | 0 | 14 | 65 |
+| example | 5 | 521 | 69 | 87 | 677 |
+| example_py | 4 | 239 | 39 | 91 | 369 |
+| include | 11 | 416 | 80 | 106 | 602 |
+| include\\unitree_legged_sdk | 11 | 416 | 80 | 106 | 602 |
+| python_wrapper | 190 | 32,900 | 4,896 | 8,365 | 46,161 |
+| python_wrapper (Files) | 1 | 190 | 9 | 22 | 221 |
+| python_wrapper\\third-party | 189 | 32,710 | 4,887 | 8,343 | 45,940 |
+| python_wrapper\\third-party\\pybind11 | 189 | 32,710 | 4,887 | 8,343 | 45,940 |
+| python_wrapper\\third-party\\pybind11 (Files) | 7 | 384 | 73 | 90 | 547 |
+| python_wrapper\\third-party\\pybind11\\.github | 11 | 859 | 59 | 259 | 1,177 |
+| python_wrapper\\third-party\\pybind11\\.github (Files) | 2 | 260 | 0 | 75 | 335 |
+| python_wrapper\\third-party\\pybind11\\.github\\ISSUE_TEMPLATE | 4 | 52 | 0 | 22 | 74 |
+| python_wrapper\\third-party\\pybind11\\.github\\workflows | 5 | 547 | 59 | 162 | 768 |
+| python_wrapper\\third-party\\pybind11\\docs | 37 | 7,324 | 780 | 2,588 | 10,692 |
+| python_wrapper\\third-party\\pybind11\\docs (Files) | 17 | 3,877 | 423 | 1,274 | 5,574 |
+| python_wrapper\\third-party\\pybind11\\docs\\_static | 1 | 11 | 0 | 1 | 12 |
+| python_wrapper\\third-party\\pybind11\\docs\\advanced | 18 | 3,431 | 356 | 1,310 | 5,097 |
+| python_wrapper\\third-party\\pybind11\\docs\\advanced (Files) | 6 | 1,936 | 212 | 749 | 2,897 |
+| python_wrapper\\third-party\\pybind11\\docs\\advanced\\cast | 8 | 953 | 77 | 322 | 1,352 |
+| python_wrapper\\third-party\\pybind11\\docs\\advanced\\pycpp | 4 | 542 | 67 | 239 | 848 |
+| python_wrapper\\third-party\\pybind11\\docs\\cmake | 1 | 5 | 1 | 3 | 9 |
+| python_wrapper\\third-party\\pybind11\\include | 24 | 9,605 | 2,233 | 1,975 | 13,813 |
+| python_wrapper\\third-party\\pybind11\\include\\pybind11 | 24 | 9,605 | 2,233 | 1,975 | 13,813 |
+| python_wrapper\\third-party\\pybind11\\include\\pybind11 (Files) | 18 | 8,028 | 1,762 | 1,651 | 11,441 |
+| python_wrapper\\third-party\\pybind11\\include\\pybind11\\detail | 6 | 1,577 | 471 | 324 | 2,372 |
+| python_wrapper\\third-party\\pybind11\\pybind11 | 5 | 329 | 40 | 116 | 485 |
+| python_wrapper\\third-party\\pybind11\\tests | 97 | 13,097 | 1,684 | 3,124 | 17,905 |
+| python_wrapper\\third-party\\pybind11\\tests (Files) | 86 | 12,552 | 1,638 | 2,972 | 17,162 |
+| python_wrapper\\third-party\\pybind11\\tests\\extra_python_package | 2 | 208 | 3 | 50 | 261 |
+| python_wrapper\\third-party\\pybind11\\tests\\extra_setuptools | 2 | 79 | 3 | 21 | 103 |
+| python_wrapper\\third-party\\pybind11\\tests\\test_cmake_build | 3 | 25 | 1 | 10 | 36 |
+| python_wrapper\\third-party\\pybind11\\tests\\test_embed | 4 | 233 | 39 | 71 | 343 |
+| python_wrapper\\third-party\\pybind11\\tools | 8 | 1,112 | 18 | 191 | 1,321 |
+
+Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
\ No newline at end of file
diff --git a/.VSCodeCounter/2024-06-17_19-36-50/results.txt b/.VSCodeCounter/2024-06-17_19-36-50/results.txt
new file mode 100644
index 0000000..6ee3789
--- /dev/null
+++ b/.VSCodeCounter/2024-06-17_19-36-50/results.txt
@@ -0,0 +1,281 @@
+Date : 2024-06-17 19:36:50
+Directory : d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk
+Total : 212 files, 34127 codes, 5084 comments, 8663 blanks, all 47874 lines
+
+Languages
++------------------+------------+------------+------------+------------+------------+
+| language | files | code | comment | blank | total |
++------------------+------------+------------+------------+------------+------------+
+| C++ | 90 | 17,167 | 3,720 | 3,398 | 24,285 |
+| Python | 57 | 7,457 | 631 | 2,253 | 10,341 |
+| reStructuredText | 32 | 6,421 | 608 | 2,516 | 9,545 |
+| CMake | 6 | 1,062 | 0 | 175 | 1,237 |
+| XML | 3 | 863 | 0 | 4 | 867 |
+| YAML | 11 | 693 | 109 | 192 | 994 |
+| Markdown | 5 | 337 | 0 | 105 | 442 |
+| Properties | 1 | 56 | 3 | 8 | 67 |
+| Shell Script | 1 | 26 | 13 | 6 | 45 |
+| Ini | 3 | 19 | 0 | 3 | 22 |
+| pip requirements | 2 | 15 | 0 | 2 | 17 |
+| CSS | 1 | 11 | 0 | 1 | 12 |
++------------------+------------+------------+------------+------------+------------+
+
+Directories
++--------------------------------------------------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
+| path | files | code | comment | blank | total |
++--------------------------------------------------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
+| . | 212 | 34,127 | 5,084 | 8,663 | 47,874 |
+| . (Files) | 2 | 51 | 0 | 14 | 65 |
+| example | 5 | 521 | 69 | 87 | 677 |
+| example_py | 4 | 239 | 39 | 91 | 369 |
+| include | 11 | 416 | 80 | 106 | 602 |
+| include\unitree_legged_sdk | 11 | 416 | 80 | 106 | 602 |
+| python_wrapper | 190 | 32,900 | 4,896 | 8,365 | 46,161 |
+| python_wrapper (Files) | 1 | 190 | 9 | 22 | 221 |
+| python_wrapper\third-party | 189 | 32,710 | 4,887 | 8,343 | 45,940 |
+| python_wrapper\third-party\pybind11 | 189 | 32,710 | 4,887 | 8,343 | 45,940 |
+| python_wrapper\third-party\pybind11 (Files) | 7 | 384 | 73 | 90 | 547 |
+| python_wrapper\third-party\pybind11\.github | 11 | 859 | 59 | 259 | 1,177 |
+| python_wrapper\third-party\pybind11\.github (Files) | 2 | 260 | 0 | 75 | 335 |
+| python_wrapper\third-party\pybind11\.github\ISSUE_TEMPLATE | 4 | 52 | 0 | 22 | 74 |
+| python_wrapper\third-party\pybind11\.github\workflows | 5 | 547 | 59 | 162 | 768 |
+| python_wrapper\third-party\pybind11\docs | 37 | 7,324 | 780 | 2,588 | 10,692 |
+| python_wrapper\third-party\pybind11\docs (Files) | 17 | 3,877 | 423 | 1,274 | 5,574 |
+| python_wrapper\third-party\pybind11\docs\_static | 1 | 11 | 0 | 1 | 12 |
+| python_wrapper\third-party\pybind11\docs\advanced | 18 | 3,431 | 356 | 1,310 | 5,097 |
+| python_wrapper\third-party\pybind11\docs\advanced (Files) | 6 | 1,936 | 212 | 749 | 2,897 |
+| python_wrapper\third-party\pybind11\docs\advanced\cast | 8 | 953 | 77 | 322 | 1,352 |
+| python_wrapper\third-party\pybind11\docs\advanced\pycpp | 4 | 542 | 67 | 239 | 848 |
+| python_wrapper\third-party\pybind11\docs\cmake | 1 | 5 | 1 | 3 | 9 |
+| python_wrapper\third-party\pybind11\include | 24 | 9,605 | 2,233 | 1,975 | 13,813 |
+| python_wrapper\third-party\pybind11\include\pybind11 | 24 | 9,605 | 2,233 | 1,975 | 13,813 |
+| python_wrapper\third-party\pybind11\include\pybind11 (Files) | 18 | 8,028 | 1,762 | 1,651 | 11,441 |
+| python_wrapper\third-party\pybind11\include\pybind11\detail | 6 | 1,577 | 471 | 324 | 2,372 |
+| python_wrapper\third-party\pybind11\pybind11 | 5 | 329 | 40 | 116 | 485 |
+| python_wrapper\third-party\pybind11\tests | 97 | 13,097 | 1,684 | 3,124 | 17,905 |
+| python_wrapper\third-party\pybind11\tests (Files) | 86 | 12,552 | 1,638 | 2,972 | 17,162 |
+| python_wrapper\third-party\pybind11\tests\extra_python_package | 2 | 208 | 3 | 50 | 261 |
+| python_wrapper\third-party\pybind11\tests\extra_setuptools | 2 | 79 | 3 | 21 | 103 |
+| python_wrapper\third-party\pybind11\tests\test_cmake_build | 3 | 25 | 1 | 10 | 36 |
+| python_wrapper\third-party\pybind11\tests\test_embed | 4 | 233 | 39 | 71 | 343 |
+| python_wrapper\third-party\pybind11\tools | 8 | 1,112 | 18 | 191 | 1,321 |
++--------------------------------------------------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
+
+Files
++--------------------------------------------------------------------------------------------------------------------------------------------------+------------------+------------+------------+------------+------------+
+| filename | language | code | comment | blank | total |
++--------------------------------------------------------------------------------------------------------------------------------------------------+------------------+------------+------------+------------+------------+
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\README.md | Markdown | 42 | 0 | 12 | 54 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\example\example_joystick.cpp | C++ | 64 | 3 | 16 | 83 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\example\example_position.cpp | C++ | 134 | 14 | 22 | 170 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\example\example_torque.cpp | C++ | 77 | 4 | 16 | 97 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\example\example_velocity.cpp | C++ | 77 | 6 | 18 | 101 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\example\example_walk.cpp | C++ | 169 | 42 | 15 | 226 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\example_py\example_position.py | Python | 81 | 12 | 26 | 119 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\example_py\example_torque.py | Python | 44 | 9 | 18 | 71 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\example_py\example_velocity.py | Python | 38 | 4 | 17 | 59 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\example_py\example_walk.py | Python | 76 | 14 | 30 | 120 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\include\unitree_legged_sdk\a1_const.h | C++ | 11 | 3 | 4 | 18 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\include\unitree_legged_sdk\aliengo_const.h | C++ | 11 | 3 | 4 | 18 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\include\unitree_legged_sdk\b1_const.h | C++ | 11 | 3 | 2 | 16 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\include\unitree_legged_sdk\comm.h | C++ | 172 | 27 | 30 | 229 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\include\unitree_legged_sdk\go1_const.h | C++ | 11 | 3 | 4 | 18 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\include\unitree_legged_sdk\joystick.h | C++ | 35 | 5 | 4 | 44 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\include\unitree_legged_sdk\loop.h | C++ | 42 | 7 | 13 | 62 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\include\unitree_legged_sdk\quadruped.h | C++ | 31 | 4 | 14 | 49 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\include\unitree_legged_sdk\safety.h | C++ | 18 | 5 | 7 | 30 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\include\unitree_legged_sdk\udp.h | C++ | 63 | 17 | 19 | 99 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\include\unitree_legged_sdk\unitree_legged_sdk.h | C++ | 11 | 3 | 5 | 19 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\package.xml | XML | 9 | 0 | 2 | 11 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\python_interface.cpp | C++ | 190 | 9 | 22 | 221 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\.appveyor.yml | YAML | 37 | 0 | 1 | 38 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\.cmake-format.yaml | YAML | 31 | 28 | 15 | 74 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\.github\CONTRIBUTING.md | Markdown | 248 | 0 | 72 | 320 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\.github\ISSUE_TEMPLATE\bug-report.md | Markdown | 19 | 0 | 10 | 29 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\.github\ISSUE_TEMPLATE\config.yml | YAML | 5 | 0 | 1 | 6 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\.github\ISSUE_TEMPLATE\feature-request.md | Markdown | 11 | 0 | 6 | 17 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\.github\ISSUE_TEMPLATE\question.md | Markdown | 17 | 0 | 5 | 22 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\.github\labeler.yml | YAML | 12 | 0 | 3 | 15 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\.github\workflows\ci.yml | YAML | 368 | 43 | 112 | 523 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\.github\workflows\configure.yml | YAML | 63 | 6 | 16 | 85 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\.github\workflows\format.yml | YAML | 31 | 3 | 8 | 42 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\.github\workflows\labeler.yml | YAML | 12 | 0 | 2 | 14 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\.github\workflows\pip.yml | YAML | 73 | 7 | 24 | 104 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\.pre-commit-config.yaml | YAML | 58 | 22 | 9 | 89 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\.readthedocs.yml | YAML | 3 | 0 | 1 | 4 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\README.rst | reStructuredText | 122 | 6 | 31 | 159 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\_static\theme_overrides.css | CSS | 11 | 0 | 1 | 12 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\cast\chrono.rst | reStructuredText | 62 | 2 | 18 | 82 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\cast\custom.rst | reStructuredText | 68 | 5 | 19 | 92 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\cast\eigen.rst | reStructuredText | 229 | 13 | 69 | 311 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\cast\functional.rst | reStructuredText | 74 | 9 | 27 | 110 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\cast\index.rst | reStructuredText | 31 | 2 | 11 | 44 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\cast\overview.rst | reStructuredText | 136 | 8 | 22 | 166 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\cast\stl.rst | reStructuredText | 158 | 18 | 65 | 241 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\cast\strings.rst | reStructuredText | 195 | 20 | 91 | 306 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\classes.rst | reStructuredText | 856 | 96 | 310 | 1,262 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\embedding.rst | reStructuredText | 168 | 14 | 80 | 262 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\exceptions.rst | reStructuredText | 224 | 14 | 61 | 299 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\functions.rst | reStructuredText | 367 | 47 | 148 | 562 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\misc.rst | reStructuredText | 214 | 27 | 97 | 338 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\pycpp\index.rst | reStructuredText | 9 | 1 | 4 | 14 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\pycpp\numpy.rst | reStructuredText | 299 | 26 | 112 | 437 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\pycpp\object.rst | reStructuredText | 143 | 27 | 82 | 252 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\pycpp\utilities.rst | reStructuredText | 91 | 13 | 41 | 145 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\advanced\smart_ptrs.rst | reStructuredText | 107 | 14 | 53 | 174 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\basics.rst | reStructuredText | 171 | 32 | 99 | 302 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\benchmark.py | Python | 75 | 1 | 14 | 90 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\benchmark.rst | reStructuredText | 53 | 16 | 27 | 96 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\changelog.rst | reStructuredText | 1,118 | 15 | 365 | 1,498 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\classes.rst | reStructuredText | 333 | 49 | 151 | 533 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\cmake\index.rst | reStructuredText | 5 | 1 | 3 | 9 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\compiling.rst | reStructuredText | 373 | 47 | 174 | 594 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\conf.py | Python | 78 | 177 | 85 | 340 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\faq.rst | reStructuredText | 227 | 20 | 97 | 344 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\index.rst | reStructuredText | 27 | 6 | 11 | 44 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\installing.rst | reStructuredText | 62 | 9 | 33 | 104 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\limitations.rst | reStructuredText | 42 | 0 | 15 | 57 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\pybind11_vs_boost_python1.svg | XML | 427 | 0 | 1 | 428 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\pybind11_vs_boost_python2.svg | XML | 427 | 0 | 1 | 428 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\reference.rst | reStructuredText | 41 | 30 | 47 | 118 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\release.rst | reStructuredText | 57 | 2 | 17 | 76 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\requirements.txt | pip requirements | 7 | 0 | 1 | 8 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\docs\upgrade.rst | reStructuredText | 359 | 19 | 136 | 514 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\attr.h | C++ | 306 | 126 | 120 | 552 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\buffer_info.h | C++ | 106 | 14 | 27 | 147 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\cast.h | C++ | 1,615 | 305 | 307 | 2,227 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\chrono.h | C++ | 128 | 32 | 32 | 192 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\common.h | C++ | 2 | 0 | 1 | 3 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\complex.h | C++ | 43 | 9 | 14 | 66 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\detail\class.h | C++ | 460 | 111 | 100 | 671 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\detail\common.h | C++ | 527 | 213 | 114 | 854 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\detail\descr.h | C++ | 68 | 10 | 23 | 101 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\detail\init.h | C++ | 228 | 66 | 43 | 337 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\detail\internals.h | C++ | 257 | 61 | 35 | 353 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\detail\typeid.h | C++ | 37 | 10 | 9 | 56 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\eigen.h | C++ | 417 | 106 | 85 | 608 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\embed.h | C++ | 95 | 90 | 23 | 208 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\eval.h | C++ | 96 | 17 | 20 | 133 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\functional.h | C++ | 68 | 20 | 17 | 105 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\iostream.h | C++ | 107 | 77 | 33 | 217 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\numpy.h | C++ | 1,229 | 197 | 254 | 1,680 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\operators.h | C++ | 136 | 18 | 20 | 174 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\options.h | C++ | 30 | 14 | 22 | 66 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\pybind11.h | C++ | 1,719 | 356 | 281 | 2,356 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\pytypes.h | C++ | 1,133 | 302 | 221 | 1,656 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\stl.h | C++ | 303 | 26 | 60 | 389 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\include\pybind11\stl_bind.h | C++ | 495 | 53 | 114 | 662 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\pybind11\__init__.py | Python | 8 | 1 | 4 | 13 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\pybind11\__main__.py | Python | 37 | 2 | 11 | 50 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\pybind11\_version.py | Python | 7 | 1 | 5 | 13 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\pybind11\commands.py | Python | 13 | 1 | 7 | 21 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\pybind11\setup_helpers.py | Python | 264 | 35 | 89 | 388 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\setup.cfg | Properties | 56 | 3 | 8 | 67 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\setup.py | Python | 77 | 14 | 25 | 116 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\conftest.py | Python | 143 | 5 | 53 | 201 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\constructor_stats.h | C++ | 180 | 77 | 19 | 276 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\cross_module_gil_utils.cpp | C++ | 48 | 15 | 11 | 74 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\env.py | Python | 9 | 1 | 5 | 15 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\extra_python_package\pytest.ini | Ini | 0 | 0 | 1 | 1 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\extra_python_package\test_files.py | Python | 208 | 3 | 49 | 260 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\extra_setuptools\pytest.ini | Ini | 0 | 0 | 1 | 1 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\extra_setuptools\test_setuphelper.py | Python | 79 | 3 | 20 | 102 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\local_bindings.h | C++ | 44 | 11 | 10 | 65 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\object.h | C++ | 92 | 47 | 37 | 176 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\pybind11_cross_module_tests.cpp | C++ | 60 | 43 | 21 | 124 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\pybind11_tests.cpp | C++ | 55 | 23 | 14 | 92 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\pybind11_tests.h | C++ | 51 | 7 | 14 | 72 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\pytest.ini | Ini | 19 | 0 | 1 | 20 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\requirements.txt | pip requirements | 8 | 0 | 1 | 9 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_async.cpp | C++ | 16 | 8 | 3 | 27 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_async.py | Python | 15 | 1 | 10 | 26 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_buffers.cpp | C++ | 165 | 18 | 32 | 215 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_buffers.py | Python | 122 | 4 | 37 | 163 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_builtin_casters.cpp | C++ | 138 | 29 | 26 | 193 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_builtin_casters.py | Python | 307 | 10 | 76 | 393 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_call_policies.cpp | C++ | 70 | 15 | 17 | 102 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_call_policies.py | Python | 163 | 3 | 27 | 193 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_callbacks.cpp | C++ | 124 | 21 | 24 | 169 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_callbacks.py | Python | 94 | 6 | 38 | 138 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_chrono.cpp | C++ | 46 | 25 | 14 | 85 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_chrono.py | Python | 130 | 23 | 60 | 213 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_class.cpp | C++ | 377 | 76 | 73 | 526 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_class.py | Python | 295 | 25 | 101 | 421 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_cmake_build\embed.cpp | C++ | 16 | 0 | 6 | 22 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_cmake_build\main.cpp | C++ | 5 | 0 | 2 | 7 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_cmake_build\test.py | Python | 4 | 1 | 2 | 7 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_constants_and_functions.cpp | C++ | 97 | 14 | 17 | 128 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_constants_and_functions.py | Python | 30 | 1 | 12 | 43 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_copy_move.cpp | C++ | 177 | 22 | 21 | 220 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_copy_move.py | Python | 77 | 11 | 26 | 114 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_custom_type_casters.cpp | C++ | 91 | 19 | 18 | 128 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_custom_type_casters.py | Python | 71 | 5 | 15 | 91 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_docstring_options.cpp | C++ | 38 | 9 | 15 | 62 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_docstring_options.py | Python | 16 | 11 | 13 | 40 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_eigen.cpp | C++ | 218 | 69 | 41 | 328 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_eigen.py | Python | 544 | 28 | 126 | 698 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_embed\catch.cpp | C++ | 12 | 4 | 7 | 23 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_embed\external_module.cpp | C++ | 15 | 3 | 6 | 24 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_embed\test_interpreter.cpp | C++ | 200 | 31 | 54 | 285 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_embed\test_interpreter.py | Python | 6 | 1 | 4 | 11 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_enum.cpp | C++ | 63 | 14 | 11 | 88 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_enum.py | Python | 151 | 20 | 42 | 213 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_eval.cpp | C++ | 64 | 11 | 17 | 92 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_eval.py | Python | 16 | 1 | 11 | 28 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_eval_call.py | Python | 2 | 2 | 2 | 6 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_exceptions.cpp | C++ | 165 | 32 | 28 | 225 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_exceptions.py | Python | 123 | 18 | 51 | 192 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_factory_constructors.cpp | C++ | 250 | 60 | 34 | 344 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_factory_constructors.py | Python | 375 | 9 | 95 | 479 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_gil_scoped.cpp | C++ | 40 | 8 | 7 | 55 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_gil_scoped.py | Python | 62 | 6 | 24 | 92 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_iostream.cpp | C++ | 46 | 9 | 19 | 74 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_iostream.py | Python | 168 | 6 | 42 | 216 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_kwargs_and_defaults.cpp | C++ | 90 | 35 | 18 | 143 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_kwargs_and_defaults.py | Python | 176 | 8 | 57 | 241 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_local_bindings.cpp | C++ | 54 | 32 | 16 | 102 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_local_bindings.py | Python | 165 | 11 | 55 | 231 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_methods_and_attributes.cpp | C++ | 297 | 40 | 42 | 379 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_methods_and_attributes.py | Python | 347 | 14 | 102 | 463 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_modules.cpp | C++ | 74 | 16 | 12 | 102 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_modules.py | Python | 54 | 3 | 17 | 74 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_multiple_inheritance.cpp | C++ | 145 | 43 | 31 | 219 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_multiple_inheritance.py | Python | 258 | 13 | 86 | 357 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_numpy_array.cpp | C++ | 340 | 48 | 51 | 439 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_numpy_array.py | Python | 379 | 21 | 96 | 496 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_numpy_dtypes.cpp | C++ | 408 | 34 | 58 | 500 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_numpy_dtypes.py | Python | 281 | 10 | 76 | 367 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_numpy_vectorize.cpp | C++ | 58 | 22 | 14 | 94 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_numpy_vectorize.py | Python | 181 | 2 | 23 | 206 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_opaque_types.cpp | C++ | 47 | 17 | 10 | 74 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_opaque_types.py | Python | 41 | 1 | 14 | 56 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_operator_overloading.cpp | C++ | 167 | 31 | 29 | 227 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_operator_overloading.py | Python | 118 | 3 | 25 | 146 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_pickling.cpp | C++ | 94 | 19 | 18 | 131 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_pickling.py | Python | 34 | 1 | 12 | 47 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_pytypes.cpp | C++ | 328 | 27 | 56 | 411 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_pytypes.py | Python | 326 | 13 | 88 | 427 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_sequences_and_iterators.cpp | C++ | 284 | 30 | 45 | 359 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_sequences_and_iterators.py | Python | 141 | 2 | 49 | 192 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_smart_ptr.cpp | C++ | 284 | 50 | 37 | 371 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_smart_ptr.py | Python | 224 | 12 | 56 | 292 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_stl.cpp | C++ | 241 | 37 | 47 | 325 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_stl.py | Python | 185 | 3 | 65 | 253 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_stl_binders.cpp | C++ | 91 | 19 | 20 | 130 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_stl_binders.py | Python | 202 | 16 | 68 | 286 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_tagbased_polymorphic.cpp | C++ | 107 | 15 | 21 | 143 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_tagbased_polymorphic.py | Python | 18 | 1 | 3 | 22 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_union.cpp | C++ | 11 | 8 | 4 | 23 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_union.py | Python | 5 | 1 | 4 | 10 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_virtual_functions.cpp | C++ | 352 | 86 | 61 | 499 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tests\test_virtual_functions.py | Python | 290 | 16 | 75 | 381 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tools\FindCatch.cmake | CMake | 63 | 0 | 8 | 71 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tools\FindEigen3.cmake | CMake | 67 | 0 | 17 | 84 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tools\FindPythonLibsNew.cmake | CMake | 229 | 0 | 27 | 256 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tools\check-style.sh | Shell Script | 26 | 13 | 6 | 45 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tools\libsize.py | Python | 24 | 5 | 10 | 39 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tools\pybind11Common.cmake | CMake | 329 | 0 | 57 | 386 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tools\pybind11NewTools.cmake | CMake | 205 | 0 | 38 | 243 |
+| d:\Administrator\Desktop\空地协同头歌\src\Robot\unitree_legged_go1-walk\python_wrapper\third-party\pybind11\tools\pybind11Tools.cmake | CMake | 169 | 0 | 28 | 197 |
+| Total | | 34,127 | 5,084 | 8,663 | 47,874 |
++--------------------------------------------------------------------------------------------------------------------------------------------------+------------------+------------+------------+------------+------------+
\ No newline at end of file
diff --git a/src/Robot/go1_guide/.VSCodeCounter/2024-06-17_19-31-57/details.md b/src/Robot/go1_guide/.VSCodeCounter/2024-06-17_19-31-57/details.md
new file mode 100644
index 0000000..1486640
--- /dev/null
+++ b/src/Robot/go1_guide/.VSCodeCounter/2024-06-17_19-31-57/details.md
@@ -0,0 +1,284 @@
+# Details
+
+Date : 2024-06-17 19:31:57
+
+Directory d:\\Administrator\\Desktop\\go1_guide-master
+
+Total : 269 files, 18894 codes, 2357 comments, 2385 blanks, all 23636 lines
+
+[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
+
+## Files
+| filename | language | code | comment | blank | total |
+| :--- | :--- | ---: | ---: | ---: | ---: |
+| [core/Camera.py](/core/Camera.py) | Python | 42 | 43 | 27 | 112 |
+| [core/PID.py](/core/PID.py) | Python | 38 | 1 | 8 | 47 |
+| [core/capture.py](/core/capture.py) | Python | 49 | 1 | 15 | 65 |
+| [core/color_detection.py](/core/color_detection.py) | Python | 27 | 2 | 11 | 40 |
+| [core/getcolor.py](/core/getcolor.py) | Python | 12 | 0 | 2 | 14 |
+| [core/picture_processing.py](/core/picture_processing.py) | Python | 24 | 83 | 21 | 128 |
+| [core/robot_connector.py](/core/robot_connector.py) | Python | 13 | 0 | 5 | 18 |
+| [core/shot.py](/core/shot.py) | Python | 12 | 8 | 6 | 26 |
+| [main.py](/main.py) | Python | 161 | 26 | 43 | 230 |
+| [model/picodet_l_416_coco_lcnet/infer_cfg.yml](/model/picodet_l_416_coco_lcnet/infer_cfg.yml) | YAML | 31 | 0 | 1 | 32 |
+| [nano/UnitreecameraSDK/README.md](/nano/UnitreecameraSDK/README.md) | Markdown | 61 | 0 | 24 | 85 |
+| [nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8cc.html](/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8cc.html) | HTML | 151 | 5 | 7 | 163 |
+| [nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8hpp.html](/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8hpp.html) | HTML | 130 | 5 | 4 | 139 |
+| [nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8hpp_source.html](/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8hpp_source.html) | HTML | 78 | 5 | 3 | 86 |
+| [nano/UnitreecameraSDK/doc/html/_system_log_8hpp.html](/nano/UnitreecameraSDK/doc/html/_system_log_8hpp.html) | HTML | 115 | 5 | 4 | 124 |
+| [nano/UnitreecameraSDK/doc/html/_system_log_8hpp_source.html](/nano/UnitreecameraSDK/doc/html/_system_log_8hpp_source.html) | HTML | 83 | 5 | 3 | 91 |
+| [nano/UnitreecameraSDK/doc/html/_unitree_camera_s_d_k_8hpp.html](/nano/UnitreecameraSDK/doc/html/_unitree_camera_s_d_k_8hpp.html) | HTML | 122 | 5 | 4 | 131 |
+| [nano/UnitreecameraSDK/doc/html/_unitree_camera_s_d_k_8hpp_source.html](/nano/UnitreecameraSDK/doc/html/_unitree_camera_s_d_k_8hpp_source.html) | HTML | 81 | 5 | 3 | 89 |
+| [nano/UnitreecameraSDK/doc/html/annotated.html](/nano/UnitreecameraSDK/doc/html/annotated.html) | HTML | 87 | 5 | 3 | 95 |
+| [nano/UnitreecameraSDK/doc/html/camera__api_8h_source.html](/nano/UnitreecameraSDK/doc/html/camera__api_8h_source.html) | HTML | 75 | 5 | 3 | 83 |
+| [nano/UnitreecameraSDK/doc/html/class_stereo_camera-members.html](/nano/UnitreecameraSDK/doc/html/class_stereo_camera-members.html) | HTML | 104 | 5 | 4 | 113 |
+| [nano/UnitreecameraSDK/doc/html/class_stereo_camera.html](/nano/UnitreecameraSDK/doc/html/class_stereo_camera.html) | HTML | 1,247 | 5 | 89 | 1,341 |
+| [nano/UnitreecameraSDK/doc/html/class_system_log-members.html](/nano/UnitreecameraSDK/doc/html/class_system_log-members.html) | HTML | 80 | 5 | 4 | 89 |
+| [nano/UnitreecameraSDK/doc/html/class_system_log.html](/nano/UnitreecameraSDK/doc/html/class_system_log.html) | HTML | 446 | 5 | 33 | 484 |
+| [nano/UnitreecameraSDK/doc/html/class_unitree_camera-members.html](/nano/UnitreecameraSDK/doc/html/class_unitree_camera-members.html) | HTML | 111 | 5 | 4 | 120 |
+| [nano/UnitreecameraSDK/doc/html/class_unitree_camera.html](/nano/UnitreecameraSDK/doc/html/class_unitree_camera.html) | HTML | 372 | 5 | 18 | 395 |
+| [nano/UnitreecameraSDK/doc/html/classes.html](/nano/UnitreecameraSDK/doc/html/classes.html) | HTML | 88 | 5 | 3 | 96 |
+| [nano/UnitreecameraSDK/doc/html/classglwindow_1_1_event_dispatcher-members.html](/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_event_dispatcher-members.html) | HTML | 86 | 5 | 4 | 95 |
+| [nano/UnitreecameraSDK/doc/html/classglwindow_1_1_event_dispatcher.html](/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_event_dispatcher.html) | HTML | 136 | 5 | 3 | 144 |
+| [nano/UnitreecameraSDK/doc/html/classglwindow_1_1_g_l_window-members.html](/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_g_l_window-members.html) | HTML | 100 | 5 | 4 | 109 |
+| [nano/UnitreecameraSDK/doc/html/classglwindow_1_1_g_l_window.html](/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_g_l_window.html) | HTML | 190 | 5 | 3 | 198 |
+| [nano/UnitreecameraSDK/doc/html/classglwindow_1_1_scene_window-members.html](/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_scene_window-members.html) | HTML | 99 | 5 | 4 | 108 |
+| [nano/UnitreecameraSDK/doc/html/classglwindow_1_1_scene_window.html](/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_scene_window.html) | HTML | 190 | 5 | 3 | 198 |
+| [nano/UnitreecameraSDK/doc/html/classinfo__camera___string-members.html](/nano/UnitreecameraSDK/doc/html/classinfo__camera___string-members.html) | HTML | 73 | 5 | 4 | 82 |
+| [nano/UnitreecameraSDK/doc/html/classinfo__camera___string.html](/nano/UnitreecameraSDK/doc/html/classinfo__camera___string.html) | HTML | 87 | 5 | 3 | 95 |
+| [nano/UnitreecameraSDK/doc/html/classinfo__camera__os-members.html](/nano/UnitreecameraSDK/doc/html/classinfo__camera__os-members.html) | HTML | 79 | 5 | 4 | 88 |
+| [nano/UnitreecameraSDK/doc/html/classinfo__camera__os.html](/nano/UnitreecameraSDK/doc/html/classinfo__camera__os.html) | HTML | 105 | 5 | 3 | 113 |
+| [nano/UnitreecameraSDK/doc/html/dir_000005_000007.html](/nano/UnitreecameraSDK/doc/html/dir_000005_000007.html) | HTML | 68 | 5 | 3 | 76 |
+| [nano/UnitreecameraSDK/doc/html/dir_000008_000007.html](/nano/UnitreecameraSDK/doc/html/dir_000008_000007.html) | HTML | 68 | 5 | 3 | 76 |
+| [nano/UnitreecameraSDK/doc/html/dir_000009_000007.html](/nano/UnitreecameraSDK/doc/html/dir_000009_000007.html) | HTML | 68 | 5 | 3 | 76 |
+| [nano/UnitreecameraSDK/doc/html/dir_209c714a154efd8d40a59e92e6a74502.html](/nano/UnitreecameraSDK/doc/html/dir_209c714a154efd8d40a59e92e6a74502.html) | HTML | 72 | 5 | 3 | 80 |
+| [nano/UnitreecameraSDK/doc/html/dir_3a56b08581502e42e7c33d229017cb82.html](/nano/UnitreecameraSDK/doc/html/dir_3a56b08581502e42e7c33d229017cb82.html) | HTML | 76 | 5 | 3 | 84 |
+| [nano/UnitreecameraSDK/doc/html/dir_4eeb864c4eec08c7d6b9d3b0352cfdde.html](/nano/UnitreecameraSDK/doc/html/dir_4eeb864c4eec08c7d6b9d3b0352cfdde.html) | HTML | 82 | 5 | 3 | 90 |
+| [nano/UnitreecameraSDK/doc/html/dir_4fef79e7177ba769987a8da36c892c5f.html](/nano/UnitreecameraSDK/doc/html/dir_4fef79e7177ba769987a8da36c892c5f.html) | HTML | 76 | 5 | 3 | 84 |
+| [nano/UnitreecameraSDK/doc/html/dir_63772b626f2709090f0bdca0f40827b4.html](/nano/UnitreecameraSDK/doc/html/dir_63772b626f2709090f0bdca0f40827b4.html) | HTML | 72 | 5 | 3 | 80 |
+| [nano/UnitreecameraSDK/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html](/nano/UnitreecameraSDK/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html) | HTML | 89 | 5 | 3 | 97 |
+| [nano/UnitreecameraSDK/doc/html/dir_8a35f475ed9d8a5443c1993b236eb8f6.html](/nano/UnitreecameraSDK/doc/html/dir_8a35f475ed9d8a5443c1993b236eb8f6.html) | HTML | 72 | 5 | 3 | 80 |
+| [nano/UnitreecameraSDK/doc/html/dir_8d5e63337d9bc0375b6fa20fd80d83ec.html](/nano/UnitreecameraSDK/doc/html/dir_8d5e63337d9bc0375b6fa20fd80d83ec.html) | HTML | 72 | 5 | 3 | 80 |
+| [nano/UnitreecameraSDK/doc/html/dir_d28a4824dc47e487b107a5db32ef43c4.html](/nano/UnitreecameraSDK/doc/html/dir_d28a4824dc47e487b107a5db32ef43c4.html) | HTML | 105 | 5 | 3 | 113 |
+| [nano/UnitreecameraSDK/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html](/nano/UnitreecameraSDK/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html) | HTML | 85 | 5 | 3 | 93 |
+| [nano/UnitreecameraSDK/doc/html/doxygen.css](/nano/UnitreecameraSDK/doc/html/doxygen.css) | CSS | 1,260 | 84 | 253 | 1,597 |
+| [nano/UnitreecameraSDK/doc/html/dynsections.js](/nano/UnitreecameraSDK/doc/html/dynsections.js) | JavaScript | 80 | 7 | 11 | 98 |
+| [nano/UnitreecameraSDK/doc/html/example__get_calib_params_file_8cc.html](/nano/UnitreecameraSDK/doc/html/example__get_calib_params_file_8cc.html) | HTML | 133 | 5 | 6 | 144 |
+| [nano/UnitreecameraSDK/doc/html/example__get_depth_frame_8cc.html](/nano/UnitreecameraSDK/doc/html/example__get_depth_frame_8cc.html) | HTML | 134 | 5 | 6 | 145 |
+| [nano/UnitreecameraSDK/doc/html/example__get_point_cloud_8cc.html](/nano/UnitreecameraSDK/doc/html/example__get_point_cloud_8cc.html) | HTML | 132 | 5 | 4 | 141 |
+| [nano/UnitreecameraSDK/doc/html/example__get_raw_frame_8cc.html](/nano/UnitreecameraSDK/doc/html/example__get_raw_frame_8cc.html) | HTML | 133 | 5 | 6 | 144 |
+| [nano/UnitreecameraSDK/doc/html/example__get_rect_frame_8cc.html](/nano/UnitreecameraSDK/doc/html/example__get_rect_frame_8cc.html) | HTML | 138 | 5 | 6 | 149 |
+| [nano/UnitreecameraSDK/doc/html/files.html](/nano/UnitreecameraSDK/doc/html/files.html) | HTML | 88 | 5 | 3 | 96 |
+| [nano/UnitreecameraSDK/doc/html/functions.html](/nano/UnitreecameraSDK/doc/html/functions.html) | HTML | 218 | 5 | 22 | 245 |
+| [nano/UnitreecameraSDK/doc/html/functions_func.html](/nano/UnitreecameraSDK/doc/html/functions_func.html) | HTML | 210 | 5 | 20 | 235 |
+| [nano/UnitreecameraSDK/doc/html/functions_vars.html](/nano/UnitreecameraSDK/doc/html/functions_vars.html) | HTML | 72 | 5 | 3 | 80 |
+| [nano/UnitreecameraSDK/doc/html/globals.html](/nano/UnitreecameraSDK/doc/html/globals.html) | HTML | 78 | 5 | 3 | 86 |
+| [nano/UnitreecameraSDK/doc/html/globals_defs.html](/nano/UnitreecameraSDK/doc/html/globals_defs.html) | HTML | 69 | 5 | 3 | 77 |
+| [nano/UnitreecameraSDK/doc/html/globals_enum.html](/nano/UnitreecameraSDK/doc/html/globals_enum.html) | HTML | 69 | 5 | 3 | 77 |
+| [nano/UnitreecameraSDK/doc/html/globals_func.html](/nano/UnitreecameraSDK/doc/html/globals_func.html) | HTML | 72 | 5 | 3 | 80 |
+| [nano/UnitreecameraSDK/doc/html/glwindow_8hpp_source.html](/nano/UnitreecameraSDK/doc/html/glwindow_8hpp_source.html) | HTML | 78 | 5 | 3 | 86 |
+| [nano/UnitreecameraSDK/doc/html/graph_legend.html](/nano/UnitreecameraSDK/doc/html/graph_legend.html) | HTML | 97 | 5 | 3 | 105 |
+| [nano/UnitreecameraSDK/doc/html/hierarchy.html](/nano/UnitreecameraSDK/doc/html/hierarchy.html) | HTML | 88 | 5 | 3 | 96 |
+| [nano/UnitreecameraSDK/doc/html/index.html](/nano/UnitreecameraSDK/doc/html/index.html) | HTML | 78 | 5 | 3 | 86 |
+| [nano/UnitreecameraSDK/doc/html/inherits.html](/nano/UnitreecameraSDK/doc/html/inherits.html) | HTML | 130 | 5 | 3 | 138 |
+| [nano/UnitreecameraSDK/doc/html/jquery.js](/nano/UnitreecameraSDK/doc/html/jquery.js) | JavaScript | 9 | 78 | 0 | 87 |
+| [nano/UnitreecameraSDK/doc/html/menu.js](/nano/UnitreecameraSDK/doc/html/menu.js) | JavaScript | 25 | 0 | 2 | 27 |
+| [nano/UnitreecameraSDK/doc/html/menudata.js](/nano/UnitreecameraSDK/doc/html/menudata.js) | JavaScript | 2 | 0 | 1 | 3 |
+| [nano/UnitreecameraSDK/doc/html/scenewindow_8hpp_source.html](/nano/UnitreecameraSDK/doc/html/scenewindow_8hpp_source.html) | HTML | 77 | 5 | 3 | 85 |
+| [nano/UnitreecameraSDK/doc/html/search/all_0.html](/nano/UnitreecameraSDK/doc/html/search/all_0.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/all_0.js](/nano/UnitreecameraSDK/doc/html/search/all_0.js) | JavaScript | 4 | 0 | 1 | 5 |
+| [nano/UnitreecameraSDK/doc/html/search/all_1.html](/nano/UnitreecameraSDK/doc/html/search/all_1.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/all_1.js](/nano/UnitreecameraSDK/doc/html/search/all_1.js) | JavaScript | 5 | 0 | 1 | 6 |
+| [nano/UnitreecameraSDK/doc/html/search/all_2.html](/nano/UnitreecameraSDK/doc/html/search/all_2.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/all_2.js](/nano/UnitreecameraSDK/doc/html/search/all_2.js) | JavaScript | 6 | 0 | 1 | 7 |
+| [nano/UnitreecameraSDK/doc/html/search/all_3.html](/nano/UnitreecameraSDK/doc/html/search/all_3.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/all_3.js](/nano/UnitreecameraSDK/doc/html/search/all_3.js) | JavaScript | 10 | 0 | 1 | 11 |
+| [nano/UnitreecameraSDK/doc/html/search/all_4.html](/nano/UnitreecameraSDK/doc/html/search/all_4.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/all_4.js](/nano/UnitreecameraSDK/doc/html/search/all_4.js) | JavaScript | 14 | 0 | 1 | 15 |
+| [nano/UnitreecameraSDK/doc/html/search/all_5.html](/nano/UnitreecameraSDK/doc/html/search/all_5.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/all_5.js](/nano/UnitreecameraSDK/doc/html/search/all_5.js) | JavaScript | 8 | 0 | 1 | 9 |
+| [nano/UnitreecameraSDK/doc/html/search/all_6.html](/nano/UnitreecameraSDK/doc/html/search/all_6.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/all_6.js](/nano/UnitreecameraSDK/doc/html/search/all_6.js) | JavaScript | 5 | 0 | 1 | 6 |
+| [nano/UnitreecameraSDK/doc/html/search/all_7.html](/nano/UnitreecameraSDK/doc/html/search/all_7.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/all_7.js](/nano/UnitreecameraSDK/doc/html/search/all_7.js) | JavaScript | 4 | 0 | 1 | 5 |
+| [nano/UnitreecameraSDK/doc/html/search/all_8.html](/nano/UnitreecameraSDK/doc/html/search/all_8.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/all_8.js](/nano/UnitreecameraSDK/doc/html/search/all_8.js) | JavaScript | 5 | 0 | 1 | 6 |
+| [nano/UnitreecameraSDK/doc/html/search/all_9.html](/nano/UnitreecameraSDK/doc/html/search/all_9.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/all_9.js](/nano/UnitreecameraSDK/doc/html/search/all_9.js) | JavaScript | 7 | 0 | 1 | 8 |
+| [nano/UnitreecameraSDK/doc/html/search/all_a.html](/nano/UnitreecameraSDK/doc/html/search/all_a.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/all_a.js](/nano/UnitreecameraSDK/doc/html/search/all_a.js) | JavaScript | 26 | 0 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/all_b.html](/nano/UnitreecameraSDK/doc/html/search/all_b.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/all_b.js](/nano/UnitreecameraSDK/doc/html/search/all_b.js) | JavaScript | 7 | 0 | 1 | 8 |
+| [nano/UnitreecameraSDK/doc/html/search/all_c.html](/nano/UnitreecameraSDK/doc/html/search/all_c.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/all_c.js](/nano/UnitreecameraSDK/doc/html/search/all_c.js) | JavaScript | 4 | 0 | 1 | 5 |
+| [nano/UnitreecameraSDK/doc/html/search/all_d.html](/nano/UnitreecameraSDK/doc/html/search/all_d.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/all_d.js](/nano/UnitreecameraSDK/doc/html/search/all_d.js) | JavaScript | 5 | 0 | 1 | 6 |
+| [nano/UnitreecameraSDK/doc/html/search/classes_0.html](/nano/UnitreecameraSDK/doc/html/search/classes_0.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/classes_0.js](/nano/UnitreecameraSDK/doc/html/search/classes_0.js) | JavaScript | 4 | 0 | 1 | 5 |
+| [nano/UnitreecameraSDK/doc/html/search/classes_1.html](/nano/UnitreecameraSDK/doc/html/search/classes_1.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/classes_1.js](/nano/UnitreecameraSDK/doc/html/search/classes_1.js) | JavaScript | 5 | 0 | 1 | 6 |
+| [nano/UnitreecameraSDK/doc/html/search/classes_2.html](/nano/UnitreecameraSDK/doc/html/search/classes_2.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/classes_2.js](/nano/UnitreecameraSDK/doc/html/search/classes_2.js) | JavaScript | 4 | 0 | 1 | 5 |
+| [nano/UnitreecameraSDK/doc/html/search/classes_3.html](/nano/UnitreecameraSDK/doc/html/search/classes_3.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/classes_3.js](/nano/UnitreecameraSDK/doc/html/search/classes_3.js) | JavaScript | 5 | 0 | 1 | 6 |
+| [nano/UnitreecameraSDK/doc/html/search/classes_4.html](/nano/UnitreecameraSDK/doc/html/search/classes_4.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/classes_4.js](/nano/UnitreecameraSDK/doc/html/search/classes_4.js) | JavaScript | 4 | 0 | 1 | 5 |
+| [nano/UnitreecameraSDK/doc/html/search/classes_5.html](/nano/UnitreecameraSDK/doc/html/search/classes_5.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/classes_5.js](/nano/UnitreecameraSDK/doc/html/search/classes_5.js) | JavaScript | 8 | 0 | 1 | 9 |
+| [nano/UnitreecameraSDK/doc/html/search/classes_6.html](/nano/UnitreecameraSDK/doc/html/search/classes_6.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/classes_6.js](/nano/UnitreecameraSDK/doc/html/search/classes_6.js) | JavaScript | 4 | 0 | 1 | 5 |
+| [nano/UnitreecameraSDK/doc/html/search/classes_7.html](/nano/UnitreecameraSDK/doc/html/search/classes_7.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/classes_7.js](/nano/UnitreecameraSDK/doc/html/search/classes_7.js) | JavaScript | 4 | 0 | 1 | 5 |
+| [nano/UnitreecameraSDK/doc/html/search/defines_0.html](/nano/UnitreecameraSDK/doc/html/search/defines_0.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/defines_0.js](/nano/UnitreecameraSDK/doc/html/search/defines_0.js) | JavaScript | 4 | 0 | 1 | 5 |
+| [nano/UnitreecameraSDK/doc/html/search/enums_0.html](/nano/UnitreecameraSDK/doc/html/search/enums_0.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/enums_0.js](/nano/UnitreecameraSDK/doc/html/search/enums_0.js) | JavaScript | 4 | 0 | 1 | 5 |
+| [nano/UnitreecameraSDK/doc/html/search/files_0.html](/nano/UnitreecameraSDK/doc/html/search/files_0.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/files_0.js](/nano/UnitreecameraSDK/doc/html/search/files_0.js) | JavaScript | 8 | 0 | 1 | 9 |
+| [nano/UnitreecameraSDK/doc/html/search/files_1.html](/nano/UnitreecameraSDK/doc/html/search/files_1.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/files_1.js](/nano/UnitreecameraSDK/doc/html/search/files_1.js) | JavaScript | 6 | 0 | 1 | 7 |
+| [nano/UnitreecameraSDK/doc/html/search/files_2.html](/nano/UnitreecameraSDK/doc/html/search/files_2.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/files_2.js](/nano/UnitreecameraSDK/doc/html/search/files_2.js) | JavaScript | 4 | 0 | 1 | 5 |
+| [nano/UnitreecameraSDK/doc/html/search/functions_0.html](/nano/UnitreecameraSDK/doc/html/search/functions_0.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/functions_0.js](/nano/UnitreecameraSDK/doc/html/search/functions_0.js) | JavaScript | 4 | 0 | 1 | 5 |
+| [nano/UnitreecameraSDK/doc/html/search/functions_1.html](/nano/UnitreecameraSDK/doc/html/search/functions_1.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/functions_1.js](/nano/UnitreecameraSDK/doc/html/search/functions_1.js) | JavaScript | 6 | 0 | 1 | 7 |
+| [nano/UnitreecameraSDK/doc/html/search/functions_2.html](/nano/UnitreecameraSDK/doc/html/search/functions_2.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/functions_2.js](/nano/UnitreecameraSDK/doc/html/search/functions_2.js) | JavaScript | 13 | 0 | 1 | 14 |
+| [nano/UnitreecameraSDK/doc/html/search/functions_3.html](/nano/UnitreecameraSDK/doc/html/search/functions_3.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/functions_3.js](/nano/UnitreecameraSDK/doc/html/search/functions_3.js) | JavaScript | 4 | 0 | 1 | 5 |
+| [nano/UnitreecameraSDK/doc/html/search/functions_4.html](/nano/UnitreecameraSDK/doc/html/search/functions_4.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/functions_4.js](/nano/UnitreecameraSDK/doc/html/search/functions_4.js) | JavaScript | 5 | 0 | 1 | 6 |
+| [nano/UnitreecameraSDK/doc/html/search/functions_5.html](/nano/UnitreecameraSDK/doc/html/search/functions_5.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/functions_5.js](/nano/UnitreecameraSDK/doc/html/search/functions_5.js) | JavaScript | 4 | 0 | 1 | 5 |
+| [nano/UnitreecameraSDK/doc/html/search/functions_6.html](/nano/UnitreecameraSDK/doc/html/search/functions_6.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/functions_6.js](/nano/UnitreecameraSDK/doc/html/search/functions_6.js) | JavaScript | 6 | 0 | 1 | 7 |
+| [nano/UnitreecameraSDK/doc/html/search/functions_7.html](/nano/UnitreecameraSDK/doc/html/search/functions_7.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/functions_7.js](/nano/UnitreecameraSDK/doc/html/search/functions_7.js) | JavaScript | 20 | 0 | 1 | 21 |
+| [nano/UnitreecameraSDK/doc/html/search/functions_8.html](/nano/UnitreecameraSDK/doc/html/search/functions_8.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/functions_8.js](/nano/UnitreecameraSDK/doc/html/search/functions_8.js) | JavaScript | 6 | 0 | 1 | 7 |
+| [nano/UnitreecameraSDK/doc/html/search/functions_9.html](/nano/UnitreecameraSDK/doc/html/search/functions_9.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/functions_9.js](/nano/UnitreecameraSDK/doc/html/search/functions_9.js) | JavaScript | 5 | 0 | 1 | 6 |
+| [nano/UnitreecameraSDK/doc/html/search/nomatches.html](/nano/UnitreecameraSDK/doc/html/search/nomatches.html) | HTML | 12 | 0 | 1 | 13 |
+| [nano/UnitreecameraSDK/doc/html/search/pages_0.html](/nano/UnitreecameraSDK/doc/html/search/pages_0.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/pages_0.js](/nano/UnitreecameraSDK/doc/html/search/pages_0.js) | JavaScript | 4 | 0 | 1 | 5 |
+| [nano/UnitreecameraSDK/doc/html/search/search.css](/nano/UnitreecameraSDK/doc/html/search/search.css) | CSS | 220 | 5 | 47 | 272 |
+| [nano/UnitreecameraSDK/doc/html/search/search.js](/nano/UnitreecameraSDK/doc/html/search/search.js) | JavaScript | 688 | 36 | 68 | 792 |
+| [nano/UnitreecameraSDK/doc/html/search/searchdata.js](/nano/UnitreecameraSDK/doc/html/search/searchdata.js) | JavaScript | 15 | 0 | 4 | 19 |
+| [nano/UnitreecameraSDK/doc/html/search/variables_0.html](/nano/UnitreecameraSDK/doc/html/search/variables_0.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/variables_0.js](/nano/UnitreecameraSDK/doc/html/search/variables_0.js) | JavaScript | 4 | 0 | 1 | 5 |
+| [nano/UnitreecameraSDK/doc/html/search/variables_1.html](/nano/UnitreecameraSDK/doc/html/search/variables_1.html) | HTML | 21 | 5 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/html/search/variables_1.js](/nano/UnitreecameraSDK/doc/html/search/variables_1.js) | JavaScript | 4 | 0 | 1 | 5 |
+| [nano/UnitreecameraSDK/doc/html/struct___device___point__-members.html](/nano/UnitreecameraSDK/doc/html/struct___device___point__-members.html) | HTML | 92 | 5 | 4 | 101 |
+| [nano/UnitreecameraSDK/doc/html/struct___device___point__.html](/nano/UnitreecameraSDK/doc/html/struct___device___point__.html) | HTML | 151 | 5 | 3 | 159 |
+| [nano/UnitreecameraSDK/doc/html/struct_g_l_window_1_1_system_state-members.html](/nano/UnitreecameraSDK/doc/html/struct_g_l_window_1_1_system_state-members.html) | HTML | 89 | 5 | 4 | 98 |
+| [nano/UnitreecameraSDK/doc/html/struct_g_l_window_1_1_system_state.html](/nano/UnitreecameraSDK/doc/html/struct_g_l_window_1_1_system_state.html) | HTML | 125 | 5 | 3 | 133 |
+| [nano/UnitreecameraSDK/doc/html/struct_p_c_l-members.html](/nano/UnitreecameraSDK/doc/html/struct_p_c_l-members.html) | HTML | 72 | 5 | 4 | 81 |
+| [nano/UnitreecameraSDK/doc/html/struct_p_c_l.html](/nano/UnitreecameraSDK/doc/html/struct_p_c_l.html) | HTML | 93 | 5 | 5 | 103 |
+| [nano/UnitreecameraSDK/doc/html/structglwindow_1_1_event_handler-members.html](/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_event_handler-members.html) | HTML | 84 | 5 | 4 | 93 |
+| [nano/UnitreecameraSDK/doc/html/structglwindow_1_1_event_handler.html](/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_event_handler.html) | HTML | 118 | 5 | 3 | 126 |
+| [nano/UnitreecameraSDK/doc/html/structglwindow_1_1_g_l_window_1_1_scoped_context-members.html](/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_g_l_window_1_1_scoped_context-members.html) | HTML | 77 | 5 | 4 | 86 |
+| [nano/UnitreecameraSDK/doc/html/structglwindow_1_1_g_l_window_1_1_scoped_context.html](/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_g_l_window_1_1_scoped_context.html) | HTML | 101 | 5 | 3 | 109 |
+| [nano/UnitreecameraSDK/doc/html/structglwindow_1_1_scene_window_1_1_viewpoint-members.html](/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_scene_window_1_1_viewpoint-members.html) | HTML | 79 | 5 | 4 | 88 |
+| [nano/UnitreecameraSDK/doc/html/structglwindow_1_1_scene_window_1_1_viewpoint.html](/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_scene_window_1_1_viewpoint.html) | HTML | 95 | 5 | 3 | 103 |
+| [nano/UnitreecameraSDK/doc/html/tabs.css](/nano/UnitreecameraSDK/doc/html/tabs.css) | CSS | 1 | 0 | 1 | 2 |
+| [nano/UnitreecameraSDK/doc/latex/Makefile](/nano/UnitreecameraSDK/doc/latex/Makefile) | Makefile | 17 | 0 | 5 | 22 |
+| [nano/UnitreecameraSDK/doc/latex/_stereo_camera_common_8cc.tex](/nano/UnitreecameraSDK/doc/latex/_stereo_camera_common_8cc.tex) | LaTeX | 76 | 0 | 14 | 90 |
+| [nano/UnitreecameraSDK/doc/latex/_stereo_camera_common_8hpp.tex](/nano/UnitreecameraSDK/doc/latex/_stereo_camera_common_8hpp.tex) | LaTeX | 53 | 0 | 8 | 61 |
+| [nano/UnitreecameraSDK/doc/latex/_system_log_8hpp.tex](/nano/UnitreecameraSDK/doc/latex/_system_log_8hpp.tex) | LaTeX | 41 | 0 | 8 | 49 |
+| [nano/UnitreecameraSDK/doc/latex/_unitree_camera_s_d_k_8hpp.tex](/nano/UnitreecameraSDK/doc/latex/_unitree_camera_s_d_k_8hpp.tex) | LaTeX | 48 | 0 | 8 | 56 |
+| [nano/UnitreecameraSDK/doc/latex/annotated.tex](/nano/UnitreecameraSDK/doc/latex/annotated.tex) | LaTeX | 17 | 0 | 1 | 18 |
+| [nano/UnitreecameraSDK/doc/latex/class_stereo_camera.tex](/nano/UnitreecameraSDK/doc/latex/class_stereo_camera.tex) | LaTeX | 778 | 0 | 191 | 969 |
+| [nano/UnitreecameraSDK/doc/latex/class_system_log.tex](/nano/UnitreecameraSDK/doc/latex/class_system_log.tex) | LaTeX | 268 | 0 | 71 | 339 |
+| [nano/UnitreecameraSDK/doc/latex/class_unitree_camera.tex](/nano/UnitreecameraSDK/doc/latex/class_unitree_camera.tex) | LaTeX | 173 | 0 | 49 | 222 |
+| [nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_event_dispatcher.tex](/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_event_dispatcher.tex) | LaTeX | 61 | 0 | 7 | 68 |
+| [nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_g_l_window.tex](/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_g_l_window.tex) | LaTeX | 111 | 0 | 5 | 116 |
+| [nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_scene_window.tex](/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_scene_window.tex) | LaTeX | 99 | 0 | 7 | 106 |
+| [nano/UnitreecameraSDK/doc/latex/classinfo__camera___string.tex](/nano/UnitreecameraSDK/doc/latex/classinfo__camera___string.tex) | LaTeX | 17 | 0 | 3 | 20 |
+| [nano/UnitreecameraSDK/doc/latex/classinfo__camera__os.tex](/nano/UnitreecameraSDK/doc/latex/classinfo__camera__os.tex) | LaTeX | 35 | 0 | 3 | 38 |
+| [nano/UnitreecameraSDK/doc/latex/dir_209c714a154efd8d40a59e92e6a74502.tex](/nano/UnitreecameraSDK/doc/latex/dir_209c714a154efd8d40a59e92e6a74502.tex) | LaTeX | 2 | 0 | 1 | 3 |
+| [nano/UnitreecameraSDK/doc/latex/dir_3a56b08581502e42e7c33d229017cb82.tex](/nano/UnitreecameraSDK/doc/latex/dir_3a56b08581502e42e7c33d229017cb82.tex) | LaTeX | 5 | 0 | 1 | 6 |
+| [nano/UnitreecameraSDK/doc/latex/dir_4eeb864c4eec08c7d6b9d3b0352cfdde.tex](/nano/UnitreecameraSDK/doc/latex/dir_4eeb864c4eec08c7d6b9d3b0352cfdde.tex) | LaTeX | 10 | 0 | 1 | 11 |
+| [nano/UnitreecameraSDK/doc/latex/dir_4fef79e7177ba769987a8da36c892c5f.tex](/nano/UnitreecameraSDK/doc/latex/dir_4fef79e7177ba769987a8da36c892c5f.tex) | LaTeX | 5 | 0 | 1 | 6 |
+| [nano/UnitreecameraSDK/doc/latex/dir_63772b626f2709090f0bdca0f40827b4.tex](/nano/UnitreecameraSDK/doc/latex/dir_63772b626f2709090f0bdca0f40827b4.tex) | LaTeX | 2 | 0 | 1 | 3 |
+| [nano/UnitreecameraSDK/doc/latex/dir_68267d1309a1af8e8297ef4c3efbcdba.tex](/nano/UnitreecameraSDK/doc/latex/dir_68267d1309a1af8e8297ef4c3efbcdba.tex) | LaTeX | 15 | 0 | 1 | 16 |
+| [nano/UnitreecameraSDK/doc/latex/dir_8a35f475ed9d8a5443c1993b236eb8f6.tex](/nano/UnitreecameraSDK/doc/latex/dir_8a35f475ed9d8a5443c1993b236eb8f6.tex) | LaTeX | 2 | 0 | 1 | 3 |
+| [nano/UnitreecameraSDK/doc/latex/dir_8d5e63337d9bc0375b6fa20fd80d83ec.tex](/nano/UnitreecameraSDK/doc/latex/dir_8d5e63337d9bc0375b6fa20fd80d83ec.tex) | LaTeX | 2 | 0 | 1 | 3 |
+| [nano/UnitreecameraSDK/doc/latex/dir_d28a4824dc47e487b107a5db32ef43c4.tex](/nano/UnitreecameraSDK/doc/latex/dir_d28a4824dc47e487b107a5db32ef43c4.tex) | LaTeX | 26 | 0 | 1 | 27 |
+| [nano/UnitreecameraSDK/doc/latex/dir_d44c64559bbebec7f509842c48db8b23.tex](/nano/UnitreecameraSDK/doc/latex/dir_d44c64559bbebec7f509842c48db8b23.tex) | LaTeX | 11 | 0 | 1 | 12 |
+| [nano/UnitreecameraSDK/doc/latex/doxygen.sty](/nano/UnitreecameraSDK/doc/latex/doxygen.sty) | TeX | 394 | 53 | 57 | 504 |
+| [nano/UnitreecameraSDK/doc/latex/example__get_calib_params_file_8cc.tex](/nano/UnitreecameraSDK/doc/latex/example__get_calib_params_file_8cc.tex) | LaTeX | 44 | 0 | 15 | 59 |
+| [nano/UnitreecameraSDK/doc/latex/example__get_depth_frame_8cc.tex](/nano/UnitreecameraSDK/doc/latex/example__get_depth_frame_8cc.tex) | LaTeX | 45 | 0 | 16 | 61 |
+| [nano/UnitreecameraSDK/doc/latex/example__get_point_cloud_8cc.tex](/nano/UnitreecameraSDK/doc/latex/example__get_point_cloud_8cc.tex) | LaTeX | 59 | 0 | 8 | 67 |
+| [nano/UnitreecameraSDK/doc/latex/example__get_raw_frame_8cc.tex](/nano/UnitreecameraSDK/doc/latex/example__get_raw_frame_8cc.tex) | LaTeX | 44 | 0 | 15 | 59 |
+| [nano/UnitreecameraSDK/doc/latex/example__get_rect_frame_8cc.tex](/nano/UnitreecameraSDK/doc/latex/example__get_rect_frame_8cc.tex) | LaTeX | 49 | 0 | 20 | 69 |
+| [nano/UnitreecameraSDK/doc/latex/files.tex](/nano/UnitreecameraSDK/doc/latex/files.tex) | LaTeX | 15 | 0 | 1 | 16 |
+| [nano/UnitreecameraSDK/doc/latex/hierarchy.tex](/nano/UnitreecameraSDK/doc/latex/hierarchy.tex) | LaTeX | 21 | 0 | 1 | 22 |
+| [nano/UnitreecameraSDK/doc/latex/index.tex](/nano/UnitreecameraSDK/doc/latex/index.tex) | LaTeX | 40 | 0 | 22 | 62 |
+| [nano/UnitreecameraSDK/doc/latex/refman.tex](/nano/UnitreecameraSDK/doc/latex/refman.tex) | LaTeX | 127 | 12 | 15 | 154 |
+| [nano/UnitreecameraSDK/doc/latex/struct___device___point__.tex](/nano/UnitreecameraSDK/doc/latex/struct___device___point__.tex) | LaTeX | 82 | 0 | 5 | 87 |
+| [nano/UnitreecameraSDK/doc/latex/struct_g_l_window_1_1_system_state.tex](/nano/UnitreecameraSDK/doc/latex/struct_g_l_window_1_1_system_state.tex) | LaTeX | 50 | 0 | 3 | 53 |
+| [nano/UnitreecameraSDK/doc/latex/struct_p_c_l.tex](/nano/UnitreecameraSDK/doc/latex/struct_p_c_l.tex) | LaTeX | 24 | 0 | 13 | 37 |
+| [nano/UnitreecameraSDK/doc/latex/structglwindow_1_1_event_handler.tex](/nano/UnitreecameraSDK/doc/latex/structglwindow_1_1_event_handler.tex) | LaTeX | 43 | 0 | 5 | 48 |
+| [nano/UnitreecameraSDK/doc/latex/structglwindow_1_1_g_l_window_1_1_scoped_context.tex](/nano/UnitreecameraSDK/doc/latex/structglwindow_1_1_g_l_window_1_1_scoped_context.tex) | LaTeX | 25 | 0 | 5 | 30 |
+| [nano/UnitreecameraSDK/doc/latex/structglwindow_1_1_scene_window_1_1_viewpoint.tex](/nano/UnitreecameraSDK/doc/latex/structglwindow_1_1_scene_window_1_1_viewpoint.tex) | LaTeX | 21 | 0 | 3 | 24 |
+| [nano/UnitreecameraSDK/examples/example_getCalibParamsFile.cc](/nano/UnitreecameraSDK/examples/example_getCalibParamsFile.cc) | C++ | 14 | 9 | 5 | 28 |
+| [nano/UnitreecameraSDK/examples/example_getDepthFrame.cc](/nano/UnitreecameraSDK/examples/example_getDepthFrame.cc) | C++ | 26 | 9 | 8 | 43 |
+| [nano/UnitreecameraSDK/examples/example_getPointCloud.cc](/nano/UnitreecameraSDK/examples/example_getPointCloud.cc) | C++ | 73 | 9 | 16 | 98 |
+| [nano/UnitreecameraSDK/examples/example_getRawFrame.cc](/nano/UnitreecameraSDK/examples/example_getRawFrame.cc) | C++ | 41 | 9 | 14 | 64 |
+| [nano/UnitreecameraSDK/examples/example_getRectFrame.cc](/nano/UnitreecameraSDK/examples/example_getRectFrame.cc) | C++ | 39 | 11 | 11 | 61 |
+| [nano/UnitreecameraSDK/examples/example_getimagetrans.cc](/nano/UnitreecameraSDK/examples/example_getimagetrans.cc) | C++ | 28 | 28 | 7 | 63 |
+| [nano/UnitreecameraSDK/examples/example_putImagetrans.cc](/nano/UnitreecameraSDK/examples/example_putImagetrans.cc) | C++ | 24 | 85 | 10 | 119 |
+| [nano/UnitreecameraSDK/examples/example_share.cc](/nano/UnitreecameraSDK/examples/example_share.cc) | C++ | 24 | 0 | 5 | 29 |
+| [nano/UnitreecameraSDK/examples/glViewer/glwindow.hpp](/nano/UnitreecameraSDK/examples/glViewer/glwindow.hpp) | C++ | 100 | 2 | 23 | 125 |
+| [nano/UnitreecameraSDK/examples/glViewer/glwindow_x11.cpp](/nano/UnitreecameraSDK/examples/glViewer/glwindow_x11.cpp) | C++ | 436 | 7 | 76 | 519 |
+| [nano/UnitreecameraSDK/examples/glViewer/scenewindow.cpp](/nano/UnitreecameraSDK/examples/glViewer/scenewindow.cpp) | C++ | 139 | 4 | 39 | 182 |
+| [nano/UnitreecameraSDK/examples/glViewer/scenewindow.hpp](/nano/UnitreecameraSDK/examples/glViewer/scenewindow.hpp) | C++ | 35 | 1 | 14 | 50 |
+| [nano/UnitreecameraSDK/include/StereoCameraCommon.hpp](/nano/UnitreecameraSDK/include/StereoCameraCommon.hpp) | C++ | 99 | 534 | 27 | 660 |
+| [nano/UnitreecameraSDK/include/SystemLog.hpp](/nano/UnitreecameraSDK/include/SystemLog.hpp) | C++ | 26 | 135 | 8 | 169 |
+| [nano/UnitreecameraSDK/include/UnitreeCameraSDK.hpp](/nano/UnitreecameraSDK/include/UnitreeCameraSDK.hpp) | C++ | 23 | 126 | 10 | 159 |
+| [nano/UnitreecameraSDK/src/getimagetrans.cc](/nano/UnitreecameraSDK/src/getimagetrans.cc) | C++ | 28 | 16 | 4 | 48 |
+| [nano/UnitreecameraSDK/src/putimagetrans.cc](/nano/UnitreecameraSDK/src/putimagetrans.cc) | C++ | 58 | 37 | 14 | 109 |
+| [nano/UnitreecameraSDK/stereo_camera_config.yaml](/nano/UnitreecameraSDK/stereo_camera_config.yaml) | YAML | 66 | 12 | 0 | 78 |
+| [nano/UnitreecameraSDK/trans_rect_config.yaml](/nano/UnitreecameraSDK/trans_rect_config.yaml) | YAML | 66 | 13 | 1 | 80 |
+| [nano/UnitreecameraSDK/trans_rect_config_0.yaml](/nano/UnitreecameraSDK/trans_rect_config_0.yaml) | YAML | 66 | 12 | 0 | 78 |
+| [nano/UnitreecameraSDK/trans_rect_config_1.yaml](/nano/UnitreecameraSDK/trans_rect_config_1.yaml) | YAML | 66 | 12 | 0 | 78 |
+| [nano/kill.sh](/nano/kill.sh) | Shell Script | 4 | 1 | 2 | 7 |
+| [nano/picture_processing.py](/nano/picture_processing.py) | Python | 24 | 83 | 21 | 128 |
+| [nano/start.sh](/nano/start.sh) | Shell Script | 5 | 2 | 3 | 10 |
+| [nano/templates/index.html](/nano/templates/index.html) | HTML | 12 | 0 | 2 | 14 |
+| [nano/trans_rect_config_0.yaml](/nano/trans_rect_config_0.yaml) | YAML | 66 | 12 | 1 | 79 |
+| [nano/trans_rect_config_1.yaml](/nano/trans_rect_config_1.yaml) | YAML | 66 | 12 | 1 | 79 |
+| [nano/webcamera.py](/nano/webcamera.py) | Python | 49 | 2 | 15 | 66 |
+| [predict.py](/predict.py) | Python | 208 | 15 | 55 | 278 |
+| [raspberrypi/server_robotcontrol.py](/raspberrypi/server_robotcontrol.py) | Python | 67 | 1 | 14 | 82 |
+| [raspberrypi/start.sh](/raspberrypi/start.sh) | Shell Script | 1 | 0 | 1 | 2 |
+| [raspberrypi/unitree.py](/raspberrypi/unitree.py) | Python | 21 | 0 | 6 | 27 |
+| [raspberrypi/unitree_legged_sdk/README.md](/raspberrypi/unitree_legged_sdk/README.md) | Markdown | 29 | 0 | 9 | 38 |
+| [raspberrypi/unitree_legged_sdk/example/example_joystick.cpp](/raspberrypi/unitree_legged_sdk/example/example_joystick.cpp) | C++ | 62 | 5 | 16 | 83 |
+| [raspberrypi/unitree_legged_sdk/example/example_position.cpp](/raspberrypi/unitree_legged_sdk/example/example_position.cpp) | C++ | 122 | 17 | 25 | 164 |
+| [raspberrypi/unitree_legged_sdk/example/example_torque.cpp](/raspberrypi/unitree_legged_sdk/example/example_torque.cpp) | C++ | 71 | 8 | 16 | 95 |
+| [raspberrypi/unitree_legged_sdk/example/example_velocity.cpp](/raspberrypi/unitree_legged_sdk/example/example_velocity.cpp) | C++ | 72 | 8 | 18 | 98 |
+| [raspberrypi/unitree_legged_sdk/example/example_walk.cpp](/raspberrypi/unitree_legged_sdk/example/example_walk.cpp) | C++ | 134 | 6 | 17 | 157 |
+| [raspberrypi/unitree_legged_sdk/example_py/example_position.py](/raspberrypi/unitree_legged_sdk/example_py/example_position.py) | Python | 81 | 12 | 26 | 119 |
+| [raspberrypi/unitree_legged_sdk/example_py/example_torque.py](/raspberrypi/unitree_legged_sdk/example_py/example_torque.py) | Python | 44 | 9 | 18 | 71 |
+| [raspberrypi/unitree_legged_sdk/example_py/example_velocity.py](/raspberrypi/unitree_legged_sdk/example_py/example_velocity.py) | Python | 38 | 4 | 17 | 59 |
+| [raspberrypi/unitree_legged_sdk/example_py/example_walk.py](/raspberrypi/unitree_legged_sdk/example_py/example_walk.py) | Python | 76 | 14 | 30 | 120 |
+| [raspberrypi/unitree_legged_sdk/example_py/test.py](/raspberrypi/unitree_legged_sdk/example_py/test.py) | Python | 5 | 1 | 2 | 8 |
+| [raspberrypi/unitree_legged_sdk/example_py/unitree.py](/raspberrypi/unitree_legged_sdk/example_py/unitree.py) | Python | 21 | 0 | 6 | 27 |
+| [raspberrypi/unitree_legged_sdk/example_py/unitree_python_sdk.py](/raspberrypi/unitree_legged_sdk/example_py/unitree_python_sdk.py) | Python | 42 | 9 | 10 | 61 |
+| [raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/a1_const.h](/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/a1_const.h) | C++ | 12 | 3 | 4 | 19 |
+| [raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/aliengo_const.h](/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/aliengo_const.h) | C++ | 12 | 3 | 4 | 19 |
+| [raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/comm.h](/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/comm.h) | C++ | 172 | 15 | 30 | 217 |
+| [raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/go1_const.h](/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/go1_const.h) | C++ | 12 | 3 | 4 | 19 |
+| [raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/joystick.h](/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/joystick.h) | C++ | 35 | 5 | 4 | 44 |
+| [raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/loop.h](/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/loop.h) | C++ | 42 | 7 | 13 | 62 |
+| [raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/quadruped.h](/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/quadruped.h) | C++ | 32 | 4 | 15 | 51 |
+| [raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/safety.h](/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/safety.h) | C++ | 19 | 5 | 8 | 32 |
+| [raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/udp.h](/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/udp.h) | C++ | 64 | 17 | 21 | 102 |
+| [raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/unitree_legged_sdk.h](/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/unitree_legged_sdk.h) | C++ | 11 | 3 | 5 | 19 |
+| [raspberrypi/unitree_python_sdk.py](/raspberrypi/unitree_python_sdk.py) | Python | 42 | 9 | 10 | 61 |
+| [setup.sh](/setup.sh) | Shell Script | 4 | 1 | 1 | 6 |
+| [test.py](/test.py) | Python | 12 | 1 | 5 | 18 |
+
+[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
\ No newline at end of file
diff --git a/src/Robot/go1_guide/.VSCodeCounter/2024-06-17_19-31-57/diff-details.md b/src/Robot/go1_guide/.VSCodeCounter/2024-06-17_19-31-57/diff-details.md
new file mode 100644
index 0000000..b6a1039
--- /dev/null
+++ b/src/Robot/go1_guide/.VSCodeCounter/2024-06-17_19-31-57/diff-details.md
@@ -0,0 +1,15 @@
+# Diff Details
+
+Date : 2024-06-17 19:31:57
+
+Directory d:\\Administrator\\Desktop\\go1_guide-master
+
+Total : 0 files, 0 codes, 0 comments, 0 blanks, all 0 lines
+
+[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details
+
+## Files
+| filename | language | code | comment | blank | total |
+| :--- | :--- | ---: | ---: | ---: | ---: |
+
+[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details
\ No newline at end of file
diff --git a/src/Robot/go1_guide/.VSCodeCounter/2024-06-17_19-31-57/diff.csv b/src/Robot/go1_guide/.VSCodeCounter/2024-06-17_19-31-57/diff.csv
new file mode 100644
index 0000000..b7d8d75
--- /dev/null
+++ b/src/Robot/go1_guide/.VSCodeCounter/2024-06-17_19-31-57/diff.csv
@@ -0,0 +1,2 @@
+"filename", "language", "", "comment", "blank", "total"
+"Total", "-", , 0, 0, 0
\ No newline at end of file
diff --git a/src/Robot/go1_guide/.VSCodeCounter/2024-06-17_19-31-57/diff.md b/src/Robot/go1_guide/.VSCodeCounter/2024-06-17_19-31-57/diff.md
new file mode 100644
index 0000000..5d2c8f3
--- /dev/null
+++ b/src/Robot/go1_guide/.VSCodeCounter/2024-06-17_19-31-57/diff.md
@@ -0,0 +1,19 @@
+# Diff Summary
+
+Date : 2024-06-17 19:31:57
+
+Directory d:\\Administrator\\Desktop\\go1_guide-master
+
+Total : 0 files, 0 codes, 0 comments, 0 blanks, all 0 lines
+
+[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md)
+
+## Languages
+| language | files | code | comment | blank | total |
+| :--- | ---: | ---: | ---: | ---: | ---: |
+
+## Directories
+| path | files | code | comment | blank | total |
+| :--- | ---: | ---: | ---: | ---: | ---: |
+
+[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md)
\ No newline at end of file
diff --git a/src/Robot/go1_guide/.VSCodeCounter/2024-06-17_19-31-57/diff.txt b/src/Robot/go1_guide/.VSCodeCounter/2024-06-17_19-31-57/diff.txt
new file mode 100644
index 0000000..dad4572
--- /dev/null
+++ b/src/Robot/go1_guide/.VSCodeCounter/2024-06-17_19-31-57/diff.txt
@@ -0,0 +1,22 @@
+Date : 2024-06-17 19:31:57
+Directory : d:\Administrator\Desktop\go1_guide-master
+Total : 0 files, 0 codes, 0 comments, 0 blanks, all 0 lines
+
+Languages
++----------+------------+------------+------------+------------+------------+
+| language | files | code | comment | blank | total |
++----------+------------+------------+------------+------------+------------+
++----------+------------+------------+------------+------------+------------+
+
+Directories
++------+------------+------------+------------+------------+------------+
+| path | files | code | comment | blank | total |
++------+------------+------------+------------+------------+------------+
++------+------------+------------+------------+------------+------------+
+
+Files
++----------+----------+------------+------------+------------+------------+
+| filename | language | code | comment | blank | total |
++----------+----------+------------+------------+------------+------------+
+| Total | | 0 | 0 | 0 | 0 |
++----------+----------+------------+------------+------------+------------+
\ No newline at end of file
diff --git a/src/Robot/go1_guide/.VSCodeCounter/2024-06-17_19-31-57/results.csv b/src/Robot/go1_guide/.VSCodeCounter/2024-06-17_19-31-57/results.csv
new file mode 100644
index 0000000..b9c2798
--- /dev/null
+++ b/src/Robot/go1_guide/.VSCodeCounter/2024-06-17_19-31-57/results.csv
@@ -0,0 +1,271 @@
+"filename", "language", "Shell Script", "Python", "YAML", "C++", "Markdown", "HTML", "LaTeX", "JavaScript", "CSS", "Makefile", "TeX", "comment", "blank", "total"
+"d:\Administrator\Desktop\go1_guide-master\core\Camera.py", "Python", 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 27, 112
+"d:\Administrator\Desktop\go1_guide-master\core\PID.py", "Python", 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 8, 47
+"d:\Administrator\Desktop\go1_guide-master\core\capture.py", "Python", 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 15, 65
+"d:\Administrator\Desktop\go1_guide-master\core\color_detection.py", "Python", 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 11, 40
+"d:\Administrator\Desktop\go1_guide-master\core\getcolor.py", "Python", 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 14
+"d:\Administrator\Desktop\go1_guide-master\core\picture_processing.py", "Python", 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 21, 128
+"d:\Administrator\Desktop\go1_guide-master\core\robot_connector.py", "Python", 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 18
+"d:\Administrator\Desktop\go1_guide-master\core\shot.py", "Python", 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 6, 26
+"d:\Administrator\Desktop\go1_guide-master\main.py", "Python", 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 43, 230
+"d:\Administrator\Desktop\go1_guide-master\model\picodet_l_416_coco_lcnet\infer_cfg.yml", "YAML", 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 32
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\README.md", "Markdown", 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 24, 85
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\_stereo_camera_common_8cc.html", "HTML", 0, 0, 0, 0, 0, 151, 0, 0, 0, 0, 0, 5, 7, 163
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\_stereo_camera_common_8hpp.html", "HTML", 0, 0, 0, 0, 0, 130, 0, 0, 0, 0, 0, 5, 4, 139
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\_stereo_camera_common_8hpp_source.html", "HTML", 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 5, 3, 86
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\_system_log_8hpp.html", "HTML", 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 5, 4, 124
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\_system_log_8hpp_source.html", "HTML", 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 5, 3, 91
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\_unitree_camera_s_d_k_8hpp.html", "HTML", 0, 0, 0, 0, 0, 122, 0, 0, 0, 0, 0, 5, 4, 131
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\_unitree_camera_s_d_k_8hpp_source.html", "HTML", 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 5, 3, 89
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\annotated.html", "HTML", 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 5, 3, 95
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\camera__api_8h_source.html", "HTML", 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 5, 3, 83
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\class_stereo_camera-members.html", "HTML", 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 5, 4, 113
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\class_stereo_camera.html", "HTML", 0, 0, 0, 0, 0, 1247, 0, 0, 0, 0, 0, 5, 89, 1341
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\class_system_log-members.html", "HTML", 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 5, 4, 89
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\class_system_log.html", "HTML", 0, 0, 0, 0, 0, 446, 0, 0, 0, 0, 0, 5, 33, 484
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\class_unitree_camera-members.html", "HTML", 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 5, 4, 120
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\class_unitree_camera.html", "HTML", 0, 0, 0, 0, 0, 372, 0, 0, 0, 0, 0, 5, 18, 395
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\classes.html", "HTML", 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 5, 3, 96
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\classglwindow_1_1_event_dispatcher-members.html", "HTML", 0, 0, 0, 0, 0, 86, 0, 0, 0, 0, 0, 5, 4, 95
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\classglwindow_1_1_event_dispatcher.html", "HTML", 0, 0, 0, 0, 0, 136, 0, 0, 0, 0, 0, 5, 3, 144
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\classglwindow_1_1_g_l_window-members.html", "HTML", 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 5, 4, 109
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\classglwindow_1_1_g_l_window.html", "HTML", 0, 0, 0, 0, 0, 190, 0, 0, 0, 0, 0, 5, 3, 198
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\classglwindow_1_1_scene_window-members.html", "HTML", 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 5, 4, 108
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\classglwindow_1_1_scene_window.html", "HTML", 0, 0, 0, 0, 0, 190, 0, 0, 0, 0, 0, 5, 3, 198
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\classinfo__camera___string-members.html", "HTML", 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 5, 4, 82
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\classinfo__camera___string.html", "HTML", 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 5, 3, 95
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\classinfo__camera__os-members.html", "HTML", 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 5, 4, 88
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\classinfo__camera__os.html", "HTML", 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 5, 3, 113
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\dir_000005_000007.html", "HTML", 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 5, 3, 76
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\dir_000008_000007.html", "HTML", 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 5, 3, 76
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\dir_000009_000007.html", "HTML", 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 5, 3, 76
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\dir_209c714a154efd8d40a59e92e6a74502.html", "HTML", 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 5, 3, 80
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\dir_3a56b08581502e42e7c33d229017cb82.html", "HTML", 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 5, 3, 84
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\dir_4eeb864c4eec08c7d6b9d3b0352cfdde.html", "HTML", 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 5, 3, 90
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\dir_4fef79e7177ba769987a8da36c892c5f.html", "HTML", 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 5, 3, 84
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\dir_63772b626f2709090f0bdca0f40827b4.html", "HTML", 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 5, 3, 80
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\dir_68267d1309a1af8e8297ef4c3efbcdba.html", "HTML", 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 5, 3, 97
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\dir_8a35f475ed9d8a5443c1993b236eb8f6.html", "HTML", 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 5, 3, 80
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\dir_8d5e63337d9bc0375b6fa20fd80d83ec.html", "HTML", 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 5, 3, 80
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\dir_d28a4824dc47e487b107a5db32ef43c4.html", "HTML", 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 5, 3, 113
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\dir_d44c64559bbebec7f509842c48db8b23.html", "HTML", 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 5, 3, 93
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\doxygen.css", "CSS", 0, 0, 0, 0, 0, 0, 0, 0, 1260, 0, 0, 84, 253, 1597
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\dynsections.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 7, 11, 98
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\example__get_calib_params_file_8cc.html", "HTML", 0, 0, 0, 0, 0, 133, 0, 0, 0, 0, 0, 5, 6, 144
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\example__get_depth_frame_8cc.html", "HTML", 0, 0, 0, 0, 0, 134, 0, 0, 0, 0, 0, 5, 6, 145
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\example__get_point_cloud_8cc.html", "HTML", 0, 0, 0, 0, 0, 132, 0, 0, 0, 0, 0, 5, 4, 141
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\example__get_raw_frame_8cc.html", "HTML", 0, 0, 0, 0, 0, 133, 0, 0, 0, 0, 0, 5, 6, 144
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\example__get_rect_frame_8cc.html", "HTML", 0, 0, 0, 0, 0, 138, 0, 0, 0, 0, 0, 5, 6, 149
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\files.html", "HTML", 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 5, 3, 96
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\functions.html", "HTML", 0, 0, 0, 0, 0, 218, 0, 0, 0, 0, 0, 5, 22, 245
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\functions_func.html", "HTML", 0, 0, 0, 0, 0, 210, 0, 0, 0, 0, 0, 5, 20, 235
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\functions_vars.html", "HTML", 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 5, 3, 80
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\globals.html", "HTML", 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 5, 3, 86
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\globals_defs.html", "HTML", 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 5, 3, 77
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\globals_enum.html", "HTML", 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 5, 3, 77
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\globals_func.html", "HTML", 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 5, 3, 80
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\glwindow_8hpp_source.html", "HTML", 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 5, 3, 86
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\graph_legend.html", "HTML", 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 5, 3, 105
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\hierarchy.html", "HTML", 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 5, 3, 96
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\index.html", "HTML", 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 5, 3, 86
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\inherits.html", "HTML", 0, 0, 0, 0, 0, 130, 0, 0, 0, 0, 0, 5, 3, 138
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\jquery.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 78, 0, 87
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\menu.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 2, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\menudata.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 3
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\scenewindow_8hpp_source.html", "HTML", 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 5, 3, 85
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_0.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_0.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 1, 5
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_1.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_1.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 1, 6
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_2.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_2.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 1, 7
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_3.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_3.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 1, 11
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_4.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_4.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 1, 15
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_5.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_5.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 1, 9
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_6.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_6.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 1, 6
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_7.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_7.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 1, 5
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_8.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_8.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 1, 6
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_9.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_9.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 1, 8
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_a.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_a.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_b.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_b.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 1, 8
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_c.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_c.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 1, 5
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_d.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_d.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 1, 6
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_0.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_0.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 1, 5
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_1.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_1.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 1, 6
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_2.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_2.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 1, 5
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_3.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_3.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 1, 6
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_4.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_4.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 1, 5
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_5.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_5.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 1, 9
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_6.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_6.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 1, 5
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_7.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_7.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 1, 5
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\defines_0.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\defines_0.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 1, 5
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\enums_0.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\enums_0.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 1, 5
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\files_0.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\files_0.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 1, 9
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\files_1.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\files_1.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 1, 7
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\files_2.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\files_2.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 1, 5
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_0.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_0.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 1, 5
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_1.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_1.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 1, 7
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_2.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_2.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 1, 14
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_3.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_3.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 1, 5
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_4.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_4.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 1, 6
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_5.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_5.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 1, 5
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_6.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_6.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 1, 7
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_7.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_7.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 1, 21
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_8.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_8.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 1, 7
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_9.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_9.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 1, 6
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\nomatches.html", "HTML", 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 1, 13
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\pages_0.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\pages_0.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 1, 5
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\search.css", "CSS", 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 5, 47, 272
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\search.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 688, 0, 0, 0, 36, 68, 792
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\searchdata.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 4, 19
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\variables_0.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\variables_0.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 1, 5
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\variables_1.html", "HTML", 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 5, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\variables_1.js", "JavaScript", 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 1, 5
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\struct___device___point__-members.html", "HTML", 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 5, 4, 101
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\struct___device___point__.html", "HTML", 0, 0, 0, 0, 0, 151, 0, 0, 0, 0, 0, 5, 3, 159
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\struct_g_l_window_1_1_system_state-members.html", "HTML", 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 5, 4, 98
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\struct_g_l_window_1_1_system_state.html", "HTML", 0, 0, 0, 0, 0, 125, 0, 0, 0, 0, 0, 5, 3, 133
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\struct_p_c_l-members.html", "HTML", 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 5, 4, 81
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\struct_p_c_l.html", "HTML", 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 5, 5, 103
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\structglwindow_1_1_event_handler-members.html", "HTML", 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 5, 4, 93
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\structglwindow_1_1_event_handler.html", "HTML", 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 5, 3, 126
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\structglwindow_1_1_g_l_window_1_1_scoped_context-members.html", "HTML", 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 5, 4, 86
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\structglwindow_1_1_g_l_window_1_1_scoped_context.html", "HTML", 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 5, 3, 109
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\structglwindow_1_1_scene_window_1_1_viewpoint-members.html", "HTML", 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 5, 4, 88
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\structglwindow_1_1_scene_window_1_1_viewpoint.html", "HTML", 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 5, 3, 103
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\tabs.css", "CSS", 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 2
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\Makefile", "Makefile", 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 5, 22
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\_stereo_camera_common_8cc.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 14, 90
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\_stereo_camera_common_8hpp.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 8, 61
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\_system_log_8hpp.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 8, 49
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\_unitree_camera_s_d_k_8hpp.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 8, 56
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\annotated.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 1, 18
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\class_stereo_camera.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 778, 0, 0, 0, 0, 0, 191, 969
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\class_system_log.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 268, 0, 0, 0, 0, 0, 71, 339
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\class_unitree_camera.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 173, 0, 0, 0, 0, 0, 49, 222
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\classglwindow_1_1_event_dispatcher.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, 7, 68
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\classglwindow_1_1_g_l_window.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 5, 116
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\classglwindow_1_1_scene_window.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 7, 106
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\classinfo__camera___string.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 3, 20
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\classinfo__camera__os.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 3, 38
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\dir_209c714a154efd8d40a59e92e6a74502.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 3
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\dir_3a56b08581502e42e7c33d229017cb82.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 1, 6
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\dir_4eeb864c4eec08c7d6b9d3b0352cfdde.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 11
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\dir_4fef79e7177ba769987a8da36c892c5f.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 1, 6
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\dir_63772b626f2709090f0bdca0f40827b4.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 3
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\dir_68267d1309a1af8e8297ef4c3efbcdba.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 1, 16
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\dir_8a35f475ed9d8a5443c1993b236eb8f6.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 3
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\dir_8d5e63337d9bc0375b6fa20fd80d83ec.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 3
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\dir_d28a4824dc47e487b107a5db32ef43c4.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 1, 27
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\dir_d44c64559bbebec7f509842c48db8b23.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 1, 12
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\doxygen.sty", "TeX", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 394, 53, 57, 504
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\example__get_calib_params_file_8cc.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 15, 59
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\example__get_depth_frame_8cc.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 16, 61
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\example__get_point_cloud_8cc.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 8, 67
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\example__get_raw_frame_8cc.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 15, 59
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\example__get_rect_frame_8cc.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 20, 69
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\files.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 1, 16
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\hierarchy.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 1, 22
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\index.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 22, 62
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\refman.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 0, 12, 15, 154
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\struct___device___point__.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 5, 87
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\struct_g_l_window_1_1_system_state.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 3, 53
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\struct_p_c_l.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 13, 37
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\structglwindow_1_1_event_handler.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 5, 48
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\structglwindow_1_1_g_l_window_1_1_scoped_context.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 5, 30
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\structglwindow_1_1_scene_window_1_1_viewpoint.tex", "LaTeX", 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 3, 24
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\examples\example_getCalibParamsFile.cc", "C++", 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 9, 5, 28
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\examples\example_getDepthFrame.cc", "C++", 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 9, 8, 43
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\examples\example_getPointCloud.cc", "C++", 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 9, 16, 98
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\examples\example_getRawFrame.cc", "C++", 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 9, 14, 64
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\examples\example_getRectFrame.cc", "C++", 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 11, 11, 61
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\examples\example_getimagetrans.cc", "C++", 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 28, 7, 63
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\examples\example_putImagetrans.cc", "C++", 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 85, 10, 119
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\examples\example_share.cc", "C++", 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 5, 29
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\examples\glViewer\glwindow.hpp", "C++", 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 2, 23, 125
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\examples\glViewer\glwindow_x11.cpp", "C++", 0, 0, 0, 436, 0, 0, 0, 0, 0, 0, 0, 7, 76, 519
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\examples\glViewer\scenewindow.cpp", "C++", 0, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 4, 39, 182
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\examples\glViewer\scenewindow.hpp", "C++", 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 1, 14, 50
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\include\StereoCameraCommon.hpp", "C++", 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 534, 27, 660
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\include\SystemLog.hpp", "C++", 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 135, 8, 169
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\include\UnitreeCameraSDK.hpp", "C++", 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 126, 10, 159
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\src\getimagetrans.cc", "C++", 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 16, 4, 48
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\src\putimagetrans.cc", "C++", 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 37, 14, 109
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\stereo_camera_config.yaml", "YAML", 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 78
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\trans_rect_config.yaml", "YAML", 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 13, 1, 80
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\trans_rect_config_0.yaml", "YAML", 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 78
+"d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\trans_rect_config_1.yaml", "YAML", 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 78
+"d:\Administrator\Desktop\go1_guide-master\nano\kill.sh", "Shell Script", 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 7
+"d:\Administrator\Desktop\go1_guide-master\nano\picture_processing.py", "Python", 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 21, 128
+"d:\Administrator\Desktop\go1_guide-master\nano\start.sh", "Shell Script", 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 10
+"d:\Administrator\Desktop\go1_guide-master\nano\templates\index.html", "HTML", 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 2, 14
+"d:\Administrator\Desktop\go1_guide-master\nano\trans_rect_config_0.yaml", "YAML", 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 12, 1, 79
+"d:\Administrator\Desktop\go1_guide-master\nano\trans_rect_config_1.yaml", "YAML", 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 12, 1, 79
+"d:\Administrator\Desktop\go1_guide-master\nano\webcamera.py", "Python", 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 15, 66
+"d:\Administrator\Desktop\go1_guide-master\predict.py", "Python", 0, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 55, 278
+"d:\Administrator\Desktop\go1_guide-master\raspberrypi\server_robotcontrol.py", "Python", 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 14, 82
+"d:\Administrator\Desktop\go1_guide-master\raspberrypi\start.sh", "Shell Script", 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2
+"d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree.py", "Python", 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 27
+"d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\README.md", "Markdown", 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 9, 38
+"d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\example\example_joystick.cpp", "C++", 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 5, 16, 83
+"d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\example\example_position.cpp", "C++", 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 17, 25, 164
+"d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\example\example_torque.cpp", "C++", 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 8, 16, 95
+"d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\example\example_velocity.cpp", "C++", 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 8, 18, 98
+"d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\example\example_walk.cpp", "C++", 0, 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, 6, 17, 157
+"d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\example_py\example_position.py", "Python", 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 26, 119
+"d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\example_py\example_torque.py", "Python", 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 18, 71
+"d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\example_py\example_velocity.py", "Python", 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 17, 59
+"d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\example_py\example_walk.py", "Python", 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 30, 120
+"d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\example_py\test.py", "Python", 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 8
+"d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\example_py\unitree.py", "Python", 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 27
+"d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\example_py\unitree_python_sdk.py", "Python", 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 61
+"d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\include\unitree_legged_sdk\a1_const.h", "C++", 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 3, 4, 19
+"d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\include\unitree_legged_sdk\aliengo_const.h", "C++", 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 3, 4, 19
+"d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\include\unitree_legged_sdk\comm.h", "C++", 0, 0, 0, 172, 0, 0, 0, 0, 0, 0, 0, 15, 30, 217
+"d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\include\unitree_legged_sdk\go1_const.h", "C++", 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 3, 4, 19
+"d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\include\unitree_legged_sdk\joystick.h", "C++", 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 5, 4, 44
+"d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\include\unitree_legged_sdk\loop.h", "C++", 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 7, 13, 62
+"d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\include\unitree_legged_sdk\quadruped.h", "C++", 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 4, 15, 51
+"d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\include\unitree_legged_sdk\safety.h", "C++", 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 5, 8, 32
+"d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\include\unitree_legged_sdk\udp.h", "C++", 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 17, 21, 102
+"d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\include\unitree_legged_sdk\unitree_legged_sdk.h", "C++", 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 3, 5, 19
+"d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_python_sdk.py", "Python", 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 61
+"d:\Administrator\Desktop\go1_guide-master\setup.sh", "Shell Script", 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 6
+"d:\Administrator\Desktop\go1_guide-master\test.py", "Python", 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 18
+"Total", "-", 14, 1108, 427, 2085, 90, 9654, 2546, 1078, 1481, 17, 394, 2357, 2385, 23636
\ No newline at end of file
diff --git a/src/Robot/go1_guide/.VSCodeCounter/2024-06-17_19-31-57/results.json b/src/Robot/go1_guide/.VSCodeCounter/2024-06-17_19-31-57/results.json
new file mode 100644
index 0000000..a9cfcf7
--- /dev/null
+++ b/src/Robot/go1_guide/.VSCodeCounter/2024-06-17_19-31-57/results.json
@@ -0,0 +1 @@
+{"file:///d%3A/Administrator/Desktop/go1_guide-master/setup.sh":{"language":"Shell Script","code":4,"comment":1,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/test.py":{"language":"Python","code":12,"comment":1,"blank":5},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/trans_rect_config_1.yaml":{"language":"YAML","code":66,"comment":12,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/trans_rect_config_0.yaml":{"language":"YAML","code":66,"comment":12,"blank":0},"file:///d%3A/Administrator/Desktop/go1_guide-master/raspberrypi/unitree_python_sdk.py":{"language":"Python","code":42,"comment":9,"blank":10},"file:///d%3A/Administrator/Desktop/go1_guide-master/raspberrypi/unitree_legged_sdk/example_py/example_position.py":{"language":"Python","code":81,"comment":12,"blank":26},"file:///d%3A/Administrator/Desktop/go1_guide-master/predict.py":{"language":"Python","code":208,"comment":15,"blank":55},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/trans_rect_config.yaml":{"language":"YAML","code":66,"comment":13,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/trans_rect_config_1.yaml":{"language":"YAML","code":66,"comment":12,"blank":0},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/stereo_camera_config.yaml":{"language":"YAML","code":66,"comment":12,"blank":0},"file:///d%3A/Administrator/Desktop/go1_guide-master/raspberrypi/unitree_legged_sdk/example_py/unitree_python_sdk.py":{"language":"Python","code":42,"comment":9,"blank":10},"file:///d%3A/Administrator/Desktop/go1_guide-master/raspberrypi/unitree_legged_sdk/example_py/unitree.py":{"language":"Python","code":21,"comment":0,"blank":6},"file:///d%3A/Administrator/Desktop/go1_guide-master/raspberrypi/unitree_legged_sdk/example_py/test.py":{"language":"Python","code":5,"comment":1,"blank":2},"file:///d%3A/Administrator/Desktop/go1_guide-master/raspberrypi/unitree_legged_sdk/example_py/example_walk.py":{"language":"Python","code":76,"comment":14,"blank":30},"file:///d%3A/Administrator/Desktop/go1_guide-master/raspberrypi/unitree_legged_sdk/example_py/example_torque.py":{"language":"Python","code":44,"comment":9,"blank":18},"file:///d%3A/Administrator/Desktop/go1_guide-master/raspberrypi/unitree_legged_sdk/example_py/example_velocity.py":{"language":"Python","code":38,"comment":4,"blank":17},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/src/getimagetrans.cc":{"language":"C++","code":28,"comment":16,"blank":4},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/README.md":{"language":"Markdown","code":61,"comment":0,"blank":24},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/src/putimagetrans.cc":{"language":"C++","code":58,"comment":37,"blank":14},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/include/StereoCameraCommon.hpp":{"language":"C++","code":99,"comment":534,"blank":27},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/include/SystemLog.hpp":{"language":"C++","code":26,"comment":135,"blank":8},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/examples/example_getRawFrame.cc":{"language":"C++","code":41,"comment":9,"blank":14},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/examples/example_getRectFrame.cc":{"language":"C++","code":39,"comment":11,"blank":11},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/examples/example_getDepthFrame.cc":{"language":"C++","code":26,"comment":9,"blank":8},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/include/UnitreeCameraSDK.hpp":{"language":"C++","code":23,"comment":126,"blank":10},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/examples/example_putImagetrans.cc":{"language":"C++","code":24,"comment":85,"blank":10},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/examples/example_getPointCloud.cc":{"language":"C++","code":73,"comment":9,"blank":16},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/examples/example_share.cc":{"language":"C++","code":24,"comment":0,"blank":5},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/examples/example_getimagetrans.cc":{"language":"C++","code":28,"comment":28,"blank":7},"file:///d%3A/Administrator/Desktop/go1_guide-master/raspberrypi/unitree_legged_sdk/README.md":{"language":"Markdown","code":29,"comment":0,"blank":9},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/examples/example_getCalibParamsFile.cc":{"language":"C++","code":14,"comment":9,"blank":5},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/trans_rect_config_0.yaml":{"language":"YAML","code":66,"comment":12,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/templates/index.html":{"language":"HTML","code":12,"comment":0,"blank":2},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/start.sh":{"language":"Shell Script","code":5,"comment":2,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/annotated.html":{"language":"HTML","code":87,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/picture_processing.py":{"language":"Python","code":24,"comment":83,"blank":21},"file:///d%3A/Administrator/Desktop/go1_guide-master/core/shot.py":{"language":"Python","code":12,"comment":8,"blank":6},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/webcamera.py":{"language":"Python","code":49,"comment":2,"blank":15},"file:///d%3A/Administrator/Desktop/go1_guide-master/raspberrypi/unitree.py":{"language":"Python","code":21,"comment":0,"blank":6},"file:///d%3A/Administrator/Desktop/go1_guide-master/raspberrypi/start.sh":{"language":"Shell Script","code":1,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/kill.sh":{"language":"Shell Script","code":4,"comment":1,"blank":2},"file:///d%3A/Administrator/Desktop/go1_guide-master/core/robot_connector.py":{"language":"Python","code":13,"comment":0,"blank":5},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_event_dispatcher-members.html":{"language":"HTML","code":86,"comment":5,"blank":4},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/classes.html":{"language":"HTML","code":88,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_event_dispatcher.tex":{"language":"LaTeX","code":61,"comment":0,"blank":7},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/examples/glViewer/scenewindow.cpp":{"language":"C++","code":139,"comment":4,"blank":39},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/examples/glViewer/glwindow_x11.cpp":{"language":"C++","code":436,"comment":7,"blank":76},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/examples/glViewer/scenewindow.hpp":{"language":"C++","code":35,"comment":1,"blank":14},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_event_dispatcher.html":{"language":"HTML","code":136,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/annotated.tex":{"language":"LaTeX","code":17,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/examples/glViewer/glwindow.hpp":{"language":"C++","code":100,"comment":2,"blank":23},"file:///d%3A/Administrator/Desktop/go1_guide-master/raspberrypi/server_robotcontrol.py":{"language":"Python","code":67,"comment":1,"blank":14},"file:///d%3A/Administrator/Desktop/go1_guide-master/core/PID.py":{"language":"Python","code":38,"comment":1,"blank":8},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/camera__api_8h_source.html":{"language":"HTML","code":75,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/core/picture_processing.py":{"language":"Python","code":24,"comment":83,"blank":21},"file:///d%3A/Administrator/Desktop/go1_guide-master/core/Camera.py":{"language":"Python","code":42,"comment":43,"blank":27},"file:///d%3A/Administrator/Desktop/go1_guide-master/core/capture.py":{"language":"Python","code":49,"comment":1,"blank":15},"file:///d%3A/Administrator/Desktop/go1_guide-master/main.py":{"language":"Python","code":161,"comment":26,"blank":43},"file:///d%3A/Administrator/Desktop/go1_guide-master/core/getcolor.py":{"language":"Python","code":12,"comment":0,"blank":2},"file:///d%3A/Administrator/Desktop/go1_guide-master/core/color_detection.py":{"language":"Python","code":27,"comment":2,"blank":11},"file:///d%3A/Administrator/Desktop/go1_guide-master/raspberrypi/unitree_legged_sdk/example/example_velocity.cpp":{"language":"C++","code":72,"comment":8,"blank":18},"file:///d%3A/Administrator/Desktop/go1_guide-master/raspberrypi/unitree_legged_sdk/example/example_torque.cpp":{"language":"C++","code":71,"comment":8,"blank":16},"file:///d%3A/Administrator/Desktop/go1_guide-master/raspberrypi/unitree_legged_sdk/example/example_position.cpp":{"language":"C++","code":122,"comment":17,"blank":25},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_scene_window.tex":{"language":"LaTeX","code":99,"comment":0,"blank":7},"file:///d%3A/Administrator/Desktop/go1_guide-master/raspberrypi/unitree_legged_sdk/example/example_joystick.cpp":{"language":"C++","code":62,"comment":5,"blank":16},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_g_l_window-members.html":{"language":"HTML","code":100,"comment":5,"blank":4},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_g_l_window.tex":{"language":"LaTeX","code":111,"comment":0,"blank":5},"file:///d%3A/Administrator/Desktop/go1_guide-master/raspberrypi/unitree_legged_sdk/example/example_walk.cpp":{"language":"C++","code":134,"comment":6,"blank":17},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_g_l_window.html":{"language":"HTML","code":190,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/comm.h":{"language":"C++","code":172,"comment":15,"blank":30},"file:///d%3A/Administrator/Desktop/go1_guide-master/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/aliengo_const.h":{"language":"C++","code":12,"comment":3,"blank":4},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_scene_window.html":{"language":"HTML","code":190,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/a1_const.h":{"language":"C++","code":12,"comment":3,"blank":4},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/class_system_log.html":{"language":"HTML","code":446,"comment":5,"blank":33},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/class_system_log-members.html":{"language":"HTML","code":80,"comment":5,"blank":4},"file:///d%3A/Administrator/Desktop/go1_guide-master/model/picodet_l_416_coco_lcnet/infer_cfg.yml":{"language":"YAML","code":31,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/class_stereo_camera-members.html":{"language":"HTML","code":104,"comment":5,"blank":4},"file:///d%3A/Administrator/Desktop/go1_guide-master/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/unitree_legged_sdk.h":{"language":"C++","code":11,"comment":3,"blank":5},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/class_unitree_camera-members.html":{"language":"HTML","code":111,"comment":5,"blank":4},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/classinfo__camera___string.html":{"language":"HTML","code":87,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/udp.h":{"language":"C++","code":64,"comment":17,"blank":21},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/class_stereo_camera.html":{"language":"HTML","code":1247,"comment":5,"blank":89},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/class_unitree_camera.html":{"language":"HTML","code":372,"comment":5,"blank":18},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/class_unitree_camera.tex":{"language":"LaTeX","code":173,"comment":0,"blank":49},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/classinfo__camera___string-members.html":{"language":"HTML","code":73,"comment":5,"blank":4},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/classinfo__camera__os.html":{"language":"HTML","code":105,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/safety.h":{"language":"C++","code":19,"comment":5,"blank":8},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/classinfo__camera__os-members.html":{"language":"HTML","code":79,"comment":5,"blank":4},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/class_system_log.tex":{"language":"LaTeX","code":268,"comment":0,"blank":71},"file:///d%3A/Administrator/Desktop/go1_guide-master/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/joystick.h":{"language":"C++","code":35,"comment":5,"blank":4},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/class_stereo_camera.tex":{"language":"LaTeX","code":778,"comment":0,"blank":191},"file:///d%3A/Administrator/Desktop/go1_guide-master/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/loop.h":{"language":"C++","code":42,"comment":7,"blank":13},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/classinfo__camera___string.tex":{"language":"LaTeX","code":17,"comment":0,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/quadruped.h":{"language":"C++","code":32,"comment":4,"blank":15},"file:///d%3A/Administrator/Desktop/go1_guide-master/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/go1_const.h":{"language":"C++","code":12,"comment":3,"blank":4},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/classinfo__camera__os.tex":{"language":"LaTeX","code":35,"comment":0,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/scenewindow_8hpp_source.html":{"language":"HTML","code":77,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_scene_window-members.html":{"language":"HTML","code":99,"comment":5,"blank":4},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/functions_9.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/functions_8.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/functions_8.js":{"language":"JavaScript","code":6,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/functions_7.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/functions_7.js":{"language":"JavaScript","code":20,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/functions_9.js":{"language":"JavaScript","code":5,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/functions_6.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/functions_5.js":{"language":"JavaScript","code":4,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/functions_6.js":{"language":"JavaScript","code":6,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/functions_5.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/functions_4.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/functions_4.js":{"language":"JavaScript","code":5,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/functions_3.js":{"language":"JavaScript","code":4,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/functions_3.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/functions_2.js":{"language":"JavaScript","code":13,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/functions_2.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/_unitree_camera_s_d_k_8hpp_source.html":{"language":"HTML","code":81,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/functions_1.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/functions_1.js":{"language":"JavaScript","code":6,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/functions_0.js":{"language":"JavaScript","code":4,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/files_2.js":{"language":"JavaScript","code":4,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/_unitree_camera_s_d_k_8hpp.html":{"language":"HTML","code":122,"comment":5,"blank":4},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/functions_0.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/files_2.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/files_1.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/files_0.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/files_1.js":{"language":"JavaScript","code":6,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/files_0.js":{"language":"JavaScript","code":8,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/enums_0.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/defines_0.js":{"language":"JavaScript","code":4,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/defines_0.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/classes_7.js":{"language":"JavaScript","code":4,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/enums_0.js":{"language":"JavaScript","code":4,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/classes_7.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/classes_6.js":{"language":"JavaScript","code":4,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/classes_6.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/classes_5.js":{"language":"JavaScript","code":8,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/classes_5.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/classes_4.js":{"language":"JavaScript","code":4,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/classes_4.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/classes_3.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/classes_3.js":{"language":"JavaScript","code":5,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/classes_2.js":{"language":"JavaScript","code":4,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/classes_2.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/_system_log_8hpp_source.html":{"language":"HTML","code":83,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/_system_log_8hpp.html":{"language":"HTML","code":115,"comment":5,"blank":4},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/classes_1.js":{"language":"JavaScript","code":5,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/classes_1.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/classes_0.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/nomatches.html":{"language":"HTML","code":12,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/classes_0.js":{"language":"JavaScript","code":4,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/all_d.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/all_d.js":{"language":"JavaScript","code":5,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8hpp_source.html":{"language":"HTML","code":78,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/all_c.js":{"language":"JavaScript","code":4,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/all_c.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/all_b.js":{"language":"JavaScript","code":7,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/pages_0.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/all_b.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/all_a.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8hpp.html":{"language":"HTML","code":130,"comment":5,"blank":4},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/all_a.js":{"language":"JavaScript","code":26,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/all_9.js":{"language":"JavaScript","code":7,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8cc.html":{"language":"HTML","code":151,"comment":5,"blank":7},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/all_9.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/all_8.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/all_8.js":{"language":"JavaScript","code":5,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/all_7.js":{"language":"JavaScript","code":4,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/all_7.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/all_6.js":{"language":"JavaScript","code":5,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/all_5.js":{"language":"JavaScript","code":8,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/all_6.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/pages_0.js":{"language":"JavaScript","code":4,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/tabs.css":{"language":"CSS","code":1,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/all_5.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/all_4.js":{"language":"JavaScript","code":14,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/all_4.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/all_3.js":{"language":"JavaScript","code":10,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/all_3.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/all_2.js":{"language":"JavaScript","code":6,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/struct___device___point__-members.html":{"language":"HTML","code":92,"comment":5,"blank":4},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/struct___device___point__.html":{"language":"HTML","code":151,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/all_2.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/all_1.js":{"language":"JavaScript","code":5,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/struct_p_c_l.html":{"language":"HTML","code":93,"comment":5,"blank":5},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/search.css":{"language":"CSS","code":220,"comment":5,"blank":47},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/all_1.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/struct_p_c_l-members.html":{"language":"HTML","code":72,"comment":5,"blank":4},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/all_0.js":{"language":"JavaScript","code":4,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/struct_g_l_window_1_1_system_state.html":{"language":"HTML","code":125,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/struct_g_l_window_1_1_system_state-members.html":{"language":"HTML","code":89,"comment":5,"blank":4},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/all_0.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_g_l_window_1_1_scoped_context.html":{"language":"HTML","code":101,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_scene_window_1_1_viewpoint-members.html":{"language":"HTML","code":79,"comment":5,"blank":4},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_scene_window_1_1_viewpoint.html":{"language":"HTML","code":95,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_event_handler.html":{"language":"HTML","code":118,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_event_handler-members.html":{"language":"HTML","code":84,"comment":5,"blank":4},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/search.js":{"language":"JavaScript","code":688,"comment":36,"blank":68},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_g_l_window_1_1_scoped_context-members.html":{"language":"HTML","code":77,"comment":5,"blank":4},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/menudata.js":{"language":"JavaScript","code":2,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/menu.js":{"language":"JavaScript","code":25,"comment":0,"blank":2},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/searchdata.js":{"language":"JavaScript","code":15,"comment":0,"blank":4},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/_unitree_camera_s_d_k_8hpp.tex":{"language":"LaTeX","code":48,"comment":0,"blank":8},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/_stereo_camera_common_8hpp.tex":{"language":"LaTeX","code":53,"comment":0,"blank":8},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/_system_log_8hpp.tex":{"language":"LaTeX","code":41,"comment":0,"blank":8},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/struct___device___point__.tex":{"language":"LaTeX","code":82,"comment":0,"blank":5},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/_stereo_camera_common_8cc.tex":{"language":"LaTeX","code":76,"comment":0,"blank":14},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/struct_p_c_l.tex":{"language":"LaTeX","code":24,"comment":0,"blank":13},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/struct_g_l_window_1_1_system_state.tex":{"language":"LaTeX","code":50,"comment":0,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/index.html":{"language":"HTML","code":78,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/variables_0.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/structglwindow_1_1_g_l_window_1_1_scoped_context.tex":{"language":"LaTeX","code":25,"comment":0,"blank":5},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/structglwindow_1_1_scene_window_1_1_viewpoint.tex":{"language":"LaTeX","code":21,"comment":0,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/jquery.js":{"language":"JavaScript","code":9,"comment":78,"blank":0},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/structglwindow_1_1_event_handler.tex":{"language":"LaTeX","code":43,"comment":0,"blank":5},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/hierarchy.html":{"language":"HTML","code":88,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/inherits.html":{"language":"HTML","code":130,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/graph_legend.html":{"language":"HTML","code":97,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/variables_0.js":{"language":"JavaScript","code":4,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/globals_func.html":{"language":"HTML","code":72,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/refman.tex":{"language":"LaTeX","code":127,"comment":12,"blank":15},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/glwindow_8hpp_source.html":{"language":"HTML","code":78,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/globals_enum.html":{"language":"HTML","code":69,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/Makefile":{"language":"Makefile","code":17,"comment":0,"blank":5},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/functions_vars.html":{"language":"HTML","code":72,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/globals_defs.html":{"language":"HTML","code":69,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/globals.html":{"language":"HTML","code":78,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/functions_func.html":{"language":"HTML","code":210,"comment":5,"blank":20},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/index.tex":{"language":"LaTeX","code":40,"comment":0,"blank":22},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/functions.html":{"language":"HTML","code":218,"comment":5,"blank":22},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/files.html":{"language":"HTML","code":88,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/variables_1.html":{"language":"HTML","code":21,"comment":5,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/example__get_rect_frame_8cc.html":{"language":"HTML","code":138,"comment":5,"blank":6},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/example__get_raw_frame_8cc.html":{"language":"HTML","code":133,"comment":5,"blank":6},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/example__get_point_cloud_8cc.html":{"language":"HTML","code":132,"comment":5,"blank":4},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/example__get_depth_frame_8cc.html":{"language":"HTML","code":134,"comment":5,"blank":6},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/example__get_calib_params_file_8cc.html":{"language":"HTML","code":133,"comment":5,"blank":6},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/hierarchy.tex":{"language":"LaTeX","code":21,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/example__get_rect_frame_8cc.tex":{"language":"LaTeX","code":49,"comment":0,"blank":20},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/files.tex":{"language":"LaTeX","code":15,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/search/variables_1.js":{"language":"JavaScript","code":4,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/dynsections.js":{"language":"JavaScript","code":80,"comment":7,"blank":11},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/example__get_raw_frame_8cc.tex":{"language":"LaTeX","code":44,"comment":0,"blank":15},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html":{"language":"HTML","code":85,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/doxygen.css":{"language":"CSS","code":1260,"comment":84,"blank":253},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/example__get_point_cloud_8cc.tex":{"language":"LaTeX","code":59,"comment":0,"blank":8},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/dir_d28a4824dc47e487b107a5db32ef43c4.html":{"language":"HTML","code":105,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/example__get_depth_frame_8cc.tex":{"language":"LaTeX","code":45,"comment":0,"blank":16},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/dir_8d5e63337d9bc0375b6fa20fd80d83ec.html":{"language":"HTML","code":72,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/dir_8a35f475ed9d8a5443c1993b236eb8f6.html":{"language":"HTML","code":72,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html":{"language":"HTML","code":89,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/dir_63772b626f2709090f0bdca0f40827b4.html":{"language":"HTML","code":72,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/example__get_calib_params_file_8cc.tex":{"language":"LaTeX","code":44,"comment":0,"blank":15},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/dir_4fef79e7177ba769987a8da36c892c5f.html":{"language":"HTML","code":76,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/doxygen.sty":{"language":"TeX","code":394,"comment":53,"blank":57},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/dir_d44c64559bbebec7f509842c48db8b23.tex":{"language":"LaTeX","code":11,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/dir_8d5e63337d9bc0375b6fa20fd80d83ec.tex":{"language":"LaTeX","code":2,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/dir_4eeb864c4eec08c7d6b9d3b0352cfdde.html":{"language":"HTML","code":82,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/dir_d28a4824dc47e487b107a5db32ef43c4.tex":{"language":"LaTeX","code":26,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/dir_209c714a154efd8d40a59e92e6a74502.html":{"language":"HTML","code":72,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/dir_3a56b08581502e42e7c33d229017cb82.html":{"language":"HTML","code":76,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/dir_8a35f475ed9d8a5443c1993b236eb8f6.tex":{"language":"LaTeX","code":2,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/dir_68267d1309a1af8e8297ef4c3efbcdba.tex":{"language":"LaTeX","code":15,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/dir_000005_000007.html":{"language":"HTML","code":68,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/dir_000008_000007.html":{"language":"HTML","code":68,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/html/dir_000009_000007.html":{"language":"HTML","code":68,"comment":5,"blank":3},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/dir_63772b626f2709090f0bdca0f40827b4.tex":{"language":"LaTeX","code":2,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/dir_4fef79e7177ba769987a8da36c892c5f.tex":{"language":"LaTeX","code":5,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/dir_209c714a154efd8d40a59e92e6a74502.tex":{"language":"LaTeX","code":2,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/dir_3a56b08581502e42e7c33d229017cb82.tex":{"language":"LaTeX","code":5,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/go1_guide-master/nano/UnitreecameraSDK/doc/latex/dir_4eeb864c4eec08c7d6b9d3b0352cfdde.tex":{"language":"LaTeX","code":10,"comment":0,"blank":1}}
\ No newline at end of file
diff --git a/src/Robot/go1_guide/.VSCodeCounter/2024-06-17_19-31-57/results.md b/src/Robot/go1_guide/.VSCodeCounter/2024-06-17_19-31-57/results.md
new file mode 100644
index 0000000..ee93246
--- /dev/null
+++ b/src/Robot/go1_guide/.VSCodeCounter/2024-06-17_19-31-57/results.md
@@ -0,0 +1,58 @@
+# Summary
+
+Date : 2024-06-17 19:31:57
+
+Directory d:\\Administrator\\Desktop\\go1_guide-master
+
+Total : 269 files, 18894 codes, 2357 comments, 2385 blanks, all 23636 lines
+
+Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
+
+## Languages
+| language | files | code | comment | blank | total |
+| :--- | ---: | ---: | ---: | ---: | ---: |
+| HTML | 112 | 9,654 | 550 | 456 | 10,660 |
+| LaTeX | 38 | 2,546 | 12 | 532 | 3,090 |
+| C++ | 32 | 2,085 | 1,131 | 491 | 3,707 |
+| CSS | 3 | 1,481 | 89 | 301 | 1,871 |
+| Python | 23 | 1,108 | 324 | 373 | 1,805 |
+| JavaScript | 46 | 1,078 | 121 | 126 | 1,325 |
+| YAML | 7 | 427 | 73 | 4 | 504 |
+| TeX | 1 | 394 | 53 | 57 | 504 |
+| Markdown | 2 | 90 | 0 | 33 | 123 |
+| Makefile | 1 | 17 | 0 | 5 | 22 |
+| Shell Script | 4 | 14 | 4 | 7 | 25 |
+
+## Directories
+| path | files | code | comment | blank | total |
+| :--- | ---: | ---: | ---: | ---: | ---: |
+| . | 269 | 18,894 | 2,357 | 2,385 | 23,636 |
+| . (Files) | 4 | 385 | 43 | 104 | 532 |
+| core | 8 | 217 | 138 | 95 | 450 |
+| model | 1 | 31 | 0 | 1 | 32 |
+| model\\picodet_l_416_coco_lcnet | 1 | 31 | 0 | 1 | 32 |
+| nano | 229 | 16,922 | 2,008 | 1,836 | 20,766 |
+| nano (Files) | 6 | 214 | 112 | 43 | 369 |
+| nano\\UnitreecameraSDK | 222 | 16,696 | 1,896 | 1,791 | 20,383 |
+| nano\\UnitreecameraSDK (Files) | 5 | 325 | 49 | 25 | 399 |
+| nano\\UnitreecameraSDK\\doc | 200 | 15,158 | 825 | 1,475 | 17,458 |
+| nano\\UnitreecameraSDK\\doc\\html | 160 | 12,201 | 760 | 881 | 13,842 |
+| nano\\UnitreecameraSDK\\doc\\html (Files) | 76 | 10,167 | 519 | 681 | 11,367 |
+| nano\\UnitreecameraSDK\\doc\\html\\search | 84 | 2,034 | 241 | 200 | 2,475 |
+| nano\\UnitreecameraSDK\\doc\\latex | 40 | 2,957 | 65 | 594 | 3,616 |
+| nano\\UnitreecameraSDK\\examples | 12 | 979 | 174 | 228 | 1,381 |
+| nano\\UnitreecameraSDK\\examples (Files) | 8 | 269 | 160 | 76 | 505 |
+| nano\\UnitreecameraSDK\\examples\\glViewer | 4 | 710 | 14 | 152 | 876 |
+| nano\\UnitreecameraSDK\\include | 3 | 148 | 795 | 45 | 988 |
+| nano\\UnitreecameraSDK\\src | 2 | 86 | 53 | 18 | 157 |
+| nano\\templates | 1 | 12 | 0 | 2 | 14 |
+| raspberrypi | 27 | 1,339 | 168 | 349 | 1,856 |
+| raspberrypi (Files) | 4 | 131 | 10 | 31 | 172 |
+| raspberrypi\\unitree_legged_sdk | 23 | 1,208 | 158 | 318 | 1,684 |
+| raspberrypi\\unitree_legged_sdk (Files) | 1 | 29 | 0 | 9 | 38 |
+| raspberrypi\\unitree_legged_sdk\\example | 5 | 461 | 44 | 92 | 597 |
+| raspberrypi\\unitree_legged_sdk\\example_py | 7 | 307 | 49 | 109 | 465 |
+| raspberrypi\\unitree_legged_sdk\\include | 10 | 411 | 65 | 108 | 584 |
+| raspberrypi\\unitree_legged_sdk\\include\\unitree_legged_sdk | 10 | 411 | 65 | 108 | 584 |
+
+Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
\ No newline at end of file
diff --git a/src/Robot/go1_guide/.VSCodeCounter/2024-06-17_19-31-57/results.txt b/src/Robot/go1_guide/.VSCodeCounter/2024-06-17_19-31-57/results.txt
new file mode 100644
index 0000000..836be3b
--- /dev/null
+++ b/src/Robot/go1_guide/.VSCodeCounter/2024-06-17_19-31-57/results.txt
@@ -0,0 +1,330 @@
+Date : 2024-06-17 19:31:57
+Directory : d:\Administrator\Desktop\go1_guide-master
+Total : 269 files, 18894 codes, 2357 comments, 2385 blanks, all 23636 lines
+
+Languages
++--------------+------------+------------+------------+------------+------------+
+| language | files | code | comment | blank | total |
++--------------+------------+------------+------------+------------+------------+
+| HTML | 112 | 9,654 | 550 | 456 | 10,660 |
+| LaTeX | 38 | 2,546 | 12 | 532 | 3,090 |
+| C++ | 32 | 2,085 | 1,131 | 491 | 3,707 |
+| CSS | 3 | 1,481 | 89 | 301 | 1,871 |
+| Python | 23 | 1,108 | 324 | 373 | 1,805 |
+| JavaScript | 46 | 1,078 | 121 | 126 | 1,325 |
+| YAML | 7 | 427 | 73 | 4 | 504 |
+| TeX | 1 | 394 | 53 | 57 | 504 |
+| Markdown | 2 | 90 | 0 | 33 | 123 |
+| Makefile | 1 | 17 | 0 | 5 | 22 |
+| Shell Script | 4 | 14 | 4 | 7 | 25 |
++--------------+------------+------------+------------+------------+------------+
+
+Directories
++----------------------------------------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
+| path | files | code | comment | blank | total |
++----------------------------------------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
+| . | 269 | 18,894 | 2,357 | 2,385 | 23,636 |
+| . (Files) | 4 | 385 | 43 | 104 | 532 |
+| core | 8 | 217 | 138 | 95 | 450 |
+| model | 1 | 31 | 0 | 1 | 32 |
+| model\picodet_l_416_coco_lcnet | 1 | 31 | 0 | 1 | 32 |
+| nano | 229 | 16,922 | 2,008 | 1,836 | 20,766 |
+| nano (Files) | 6 | 214 | 112 | 43 | 369 |
+| nano\UnitreecameraSDK | 222 | 16,696 | 1,896 | 1,791 | 20,383 |
+| nano\UnitreecameraSDK (Files) | 5 | 325 | 49 | 25 | 399 |
+| nano\UnitreecameraSDK\doc | 200 | 15,158 | 825 | 1,475 | 17,458 |
+| nano\UnitreecameraSDK\doc\html | 160 | 12,201 | 760 | 881 | 13,842 |
+| nano\UnitreecameraSDK\doc\html (Files) | 76 | 10,167 | 519 | 681 | 11,367 |
+| nano\UnitreecameraSDK\doc\html\search | 84 | 2,034 | 241 | 200 | 2,475 |
+| nano\UnitreecameraSDK\doc\latex | 40 | 2,957 | 65 | 594 | 3,616 |
+| nano\UnitreecameraSDK\examples | 12 | 979 | 174 | 228 | 1,381 |
+| nano\UnitreecameraSDK\examples (Files) | 8 | 269 | 160 | 76 | 505 |
+| nano\UnitreecameraSDK\examples\glViewer | 4 | 710 | 14 | 152 | 876 |
+| nano\UnitreecameraSDK\include | 3 | 148 | 795 | 45 | 988 |
+| nano\UnitreecameraSDK\src | 2 | 86 | 53 | 18 | 157 |
+| nano\templates | 1 | 12 | 0 | 2 | 14 |
+| raspberrypi | 27 | 1,339 | 168 | 349 | 1,856 |
+| raspberrypi (Files) | 4 | 131 | 10 | 31 | 172 |
+| raspberrypi\unitree_legged_sdk | 23 | 1,208 | 158 | 318 | 1,684 |
+| raspberrypi\unitree_legged_sdk (Files) | 1 | 29 | 0 | 9 | 38 |
+| raspberrypi\unitree_legged_sdk\example | 5 | 461 | 44 | 92 | 597 |
+| raspberrypi\unitree_legged_sdk\example_py | 7 | 307 | 49 | 109 | 465 |
+| raspberrypi\unitree_legged_sdk\include | 10 | 411 | 65 | 108 | 584 |
+| raspberrypi\unitree_legged_sdk\include\unitree_legged_sdk | 10 | 411 | 65 | 108 | 584 |
++----------------------------------------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
+
+Files
++----------------------------------------------------------------------------------------------------------------------------------------+--------------+------------+------------+------------+------------+
+| filename | language | code | comment | blank | total |
++----------------------------------------------------------------------------------------------------------------------------------------+--------------+------------+------------+------------+------------+
+| d:\Administrator\Desktop\go1_guide-master\core\Camera.py | Python | 42 | 43 | 27 | 112 |
+| d:\Administrator\Desktop\go1_guide-master\core\PID.py | Python | 38 | 1 | 8 | 47 |
+| d:\Administrator\Desktop\go1_guide-master\core\capture.py | Python | 49 | 1 | 15 | 65 |
+| d:\Administrator\Desktop\go1_guide-master\core\color_detection.py | Python | 27 | 2 | 11 | 40 |
+| d:\Administrator\Desktop\go1_guide-master\core\getcolor.py | Python | 12 | 0 | 2 | 14 |
+| d:\Administrator\Desktop\go1_guide-master\core\picture_processing.py | Python | 24 | 83 | 21 | 128 |
+| d:\Administrator\Desktop\go1_guide-master\core\robot_connector.py | Python | 13 | 0 | 5 | 18 |
+| d:\Administrator\Desktop\go1_guide-master\core\shot.py | Python | 12 | 8 | 6 | 26 |
+| d:\Administrator\Desktop\go1_guide-master\main.py | Python | 161 | 26 | 43 | 230 |
+| d:\Administrator\Desktop\go1_guide-master\model\picodet_l_416_coco_lcnet\infer_cfg.yml | YAML | 31 | 0 | 1 | 32 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\README.md | Markdown | 61 | 0 | 24 | 85 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\_stereo_camera_common_8cc.html | HTML | 151 | 5 | 7 | 163 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\_stereo_camera_common_8hpp.html | HTML | 130 | 5 | 4 | 139 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\_stereo_camera_common_8hpp_source.html | HTML | 78 | 5 | 3 | 86 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\_system_log_8hpp.html | HTML | 115 | 5 | 4 | 124 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\_system_log_8hpp_source.html | HTML | 83 | 5 | 3 | 91 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\_unitree_camera_s_d_k_8hpp.html | HTML | 122 | 5 | 4 | 131 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\_unitree_camera_s_d_k_8hpp_source.html | HTML | 81 | 5 | 3 | 89 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\annotated.html | HTML | 87 | 5 | 3 | 95 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\camera__api_8h_source.html | HTML | 75 | 5 | 3 | 83 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\class_stereo_camera-members.html | HTML | 104 | 5 | 4 | 113 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\class_stereo_camera.html | HTML | 1,247 | 5 | 89 | 1,341 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\class_system_log-members.html | HTML | 80 | 5 | 4 | 89 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\class_system_log.html | HTML | 446 | 5 | 33 | 484 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\class_unitree_camera-members.html | HTML | 111 | 5 | 4 | 120 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\class_unitree_camera.html | HTML | 372 | 5 | 18 | 395 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\classes.html | HTML | 88 | 5 | 3 | 96 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\classglwindow_1_1_event_dispatcher-members.html | HTML | 86 | 5 | 4 | 95 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\classglwindow_1_1_event_dispatcher.html | HTML | 136 | 5 | 3 | 144 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\classglwindow_1_1_g_l_window-members.html | HTML | 100 | 5 | 4 | 109 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\classglwindow_1_1_g_l_window.html | HTML | 190 | 5 | 3 | 198 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\classglwindow_1_1_scene_window-members.html | HTML | 99 | 5 | 4 | 108 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\classglwindow_1_1_scene_window.html | HTML | 190 | 5 | 3 | 198 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\classinfo__camera___string-members.html | HTML | 73 | 5 | 4 | 82 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\classinfo__camera___string.html | HTML | 87 | 5 | 3 | 95 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\classinfo__camera__os-members.html | HTML | 79 | 5 | 4 | 88 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\classinfo__camera__os.html | HTML | 105 | 5 | 3 | 113 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\dir_000005_000007.html | HTML | 68 | 5 | 3 | 76 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\dir_000008_000007.html | HTML | 68 | 5 | 3 | 76 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\dir_000009_000007.html | HTML | 68 | 5 | 3 | 76 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\dir_209c714a154efd8d40a59e92e6a74502.html | HTML | 72 | 5 | 3 | 80 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\dir_3a56b08581502e42e7c33d229017cb82.html | HTML | 76 | 5 | 3 | 84 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\dir_4eeb864c4eec08c7d6b9d3b0352cfdde.html | HTML | 82 | 5 | 3 | 90 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\dir_4fef79e7177ba769987a8da36c892c5f.html | HTML | 76 | 5 | 3 | 84 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\dir_63772b626f2709090f0bdca0f40827b4.html | HTML | 72 | 5 | 3 | 80 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\dir_68267d1309a1af8e8297ef4c3efbcdba.html | HTML | 89 | 5 | 3 | 97 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\dir_8a35f475ed9d8a5443c1993b236eb8f6.html | HTML | 72 | 5 | 3 | 80 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\dir_8d5e63337d9bc0375b6fa20fd80d83ec.html | HTML | 72 | 5 | 3 | 80 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\dir_d28a4824dc47e487b107a5db32ef43c4.html | HTML | 105 | 5 | 3 | 113 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\dir_d44c64559bbebec7f509842c48db8b23.html | HTML | 85 | 5 | 3 | 93 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\doxygen.css | CSS | 1,260 | 84 | 253 | 1,597 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\dynsections.js | JavaScript | 80 | 7 | 11 | 98 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\example__get_calib_params_file_8cc.html | HTML | 133 | 5 | 6 | 144 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\example__get_depth_frame_8cc.html | HTML | 134 | 5 | 6 | 145 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\example__get_point_cloud_8cc.html | HTML | 132 | 5 | 4 | 141 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\example__get_raw_frame_8cc.html | HTML | 133 | 5 | 6 | 144 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\example__get_rect_frame_8cc.html | HTML | 138 | 5 | 6 | 149 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\files.html | HTML | 88 | 5 | 3 | 96 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\functions.html | HTML | 218 | 5 | 22 | 245 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\functions_func.html | HTML | 210 | 5 | 20 | 235 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\functions_vars.html | HTML | 72 | 5 | 3 | 80 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\globals.html | HTML | 78 | 5 | 3 | 86 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\globals_defs.html | HTML | 69 | 5 | 3 | 77 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\globals_enum.html | HTML | 69 | 5 | 3 | 77 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\globals_func.html | HTML | 72 | 5 | 3 | 80 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\glwindow_8hpp_source.html | HTML | 78 | 5 | 3 | 86 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\graph_legend.html | HTML | 97 | 5 | 3 | 105 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\hierarchy.html | HTML | 88 | 5 | 3 | 96 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\index.html | HTML | 78 | 5 | 3 | 86 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\inherits.html | HTML | 130 | 5 | 3 | 138 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\jquery.js | JavaScript | 9 | 78 | 0 | 87 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\menu.js | JavaScript | 25 | 0 | 2 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\menudata.js | JavaScript | 2 | 0 | 1 | 3 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\scenewindow_8hpp_source.html | HTML | 77 | 5 | 3 | 85 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_0.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_0.js | JavaScript | 4 | 0 | 1 | 5 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_1.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_1.js | JavaScript | 5 | 0 | 1 | 6 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_2.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_2.js | JavaScript | 6 | 0 | 1 | 7 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_3.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_3.js | JavaScript | 10 | 0 | 1 | 11 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_4.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_4.js | JavaScript | 14 | 0 | 1 | 15 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_5.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_5.js | JavaScript | 8 | 0 | 1 | 9 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_6.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_6.js | JavaScript | 5 | 0 | 1 | 6 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_7.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_7.js | JavaScript | 4 | 0 | 1 | 5 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_8.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_8.js | JavaScript | 5 | 0 | 1 | 6 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_9.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_9.js | JavaScript | 7 | 0 | 1 | 8 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_a.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_a.js | JavaScript | 26 | 0 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_b.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_b.js | JavaScript | 7 | 0 | 1 | 8 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_c.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_c.js | JavaScript | 4 | 0 | 1 | 5 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_d.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\all_d.js | JavaScript | 5 | 0 | 1 | 6 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_0.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_0.js | JavaScript | 4 | 0 | 1 | 5 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_1.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_1.js | JavaScript | 5 | 0 | 1 | 6 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_2.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_2.js | JavaScript | 4 | 0 | 1 | 5 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_3.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_3.js | JavaScript | 5 | 0 | 1 | 6 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_4.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_4.js | JavaScript | 4 | 0 | 1 | 5 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_5.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_5.js | JavaScript | 8 | 0 | 1 | 9 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_6.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_6.js | JavaScript | 4 | 0 | 1 | 5 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_7.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\classes_7.js | JavaScript | 4 | 0 | 1 | 5 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\defines_0.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\defines_0.js | JavaScript | 4 | 0 | 1 | 5 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\enums_0.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\enums_0.js | JavaScript | 4 | 0 | 1 | 5 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\files_0.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\files_0.js | JavaScript | 8 | 0 | 1 | 9 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\files_1.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\files_1.js | JavaScript | 6 | 0 | 1 | 7 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\files_2.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\files_2.js | JavaScript | 4 | 0 | 1 | 5 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_0.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_0.js | JavaScript | 4 | 0 | 1 | 5 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_1.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_1.js | JavaScript | 6 | 0 | 1 | 7 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_2.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_2.js | JavaScript | 13 | 0 | 1 | 14 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_3.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_3.js | JavaScript | 4 | 0 | 1 | 5 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_4.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_4.js | JavaScript | 5 | 0 | 1 | 6 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_5.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_5.js | JavaScript | 4 | 0 | 1 | 5 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_6.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_6.js | JavaScript | 6 | 0 | 1 | 7 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_7.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_7.js | JavaScript | 20 | 0 | 1 | 21 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_8.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_8.js | JavaScript | 6 | 0 | 1 | 7 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_9.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\functions_9.js | JavaScript | 5 | 0 | 1 | 6 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\nomatches.html | HTML | 12 | 0 | 1 | 13 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\pages_0.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\pages_0.js | JavaScript | 4 | 0 | 1 | 5 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\search.css | CSS | 220 | 5 | 47 | 272 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\search.js | JavaScript | 688 | 36 | 68 | 792 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\searchdata.js | JavaScript | 15 | 0 | 4 | 19 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\variables_0.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\variables_0.js | JavaScript | 4 | 0 | 1 | 5 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\variables_1.html | HTML | 21 | 5 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\search\variables_1.js | JavaScript | 4 | 0 | 1 | 5 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\struct___device___point__-members.html | HTML | 92 | 5 | 4 | 101 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\struct___device___point__.html | HTML | 151 | 5 | 3 | 159 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\struct_g_l_window_1_1_system_state-members.html | HTML | 89 | 5 | 4 | 98 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\struct_g_l_window_1_1_system_state.html | HTML | 125 | 5 | 3 | 133 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\struct_p_c_l-members.html | HTML | 72 | 5 | 4 | 81 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\struct_p_c_l.html | HTML | 93 | 5 | 5 | 103 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\structglwindow_1_1_event_handler-members.html | HTML | 84 | 5 | 4 | 93 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\structglwindow_1_1_event_handler.html | HTML | 118 | 5 | 3 | 126 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\structglwindow_1_1_g_l_window_1_1_scoped_context-members.html | HTML | 77 | 5 | 4 | 86 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\structglwindow_1_1_g_l_window_1_1_scoped_context.html | HTML | 101 | 5 | 3 | 109 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\structglwindow_1_1_scene_window_1_1_viewpoint-members.html | HTML | 79 | 5 | 4 | 88 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\structglwindow_1_1_scene_window_1_1_viewpoint.html | HTML | 95 | 5 | 3 | 103 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\html\tabs.css | CSS | 1 | 0 | 1 | 2 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\Makefile | Makefile | 17 | 0 | 5 | 22 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\_stereo_camera_common_8cc.tex | LaTeX | 76 | 0 | 14 | 90 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\_stereo_camera_common_8hpp.tex | LaTeX | 53 | 0 | 8 | 61 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\_system_log_8hpp.tex | LaTeX | 41 | 0 | 8 | 49 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\_unitree_camera_s_d_k_8hpp.tex | LaTeX | 48 | 0 | 8 | 56 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\annotated.tex | LaTeX | 17 | 0 | 1 | 18 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\class_stereo_camera.tex | LaTeX | 778 | 0 | 191 | 969 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\class_system_log.tex | LaTeX | 268 | 0 | 71 | 339 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\class_unitree_camera.tex | LaTeX | 173 | 0 | 49 | 222 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\classglwindow_1_1_event_dispatcher.tex | LaTeX | 61 | 0 | 7 | 68 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\classglwindow_1_1_g_l_window.tex | LaTeX | 111 | 0 | 5 | 116 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\classglwindow_1_1_scene_window.tex | LaTeX | 99 | 0 | 7 | 106 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\classinfo__camera___string.tex | LaTeX | 17 | 0 | 3 | 20 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\classinfo__camera__os.tex | LaTeX | 35 | 0 | 3 | 38 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\dir_209c714a154efd8d40a59e92e6a74502.tex | LaTeX | 2 | 0 | 1 | 3 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\dir_3a56b08581502e42e7c33d229017cb82.tex | LaTeX | 5 | 0 | 1 | 6 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\dir_4eeb864c4eec08c7d6b9d3b0352cfdde.tex | LaTeX | 10 | 0 | 1 | 11 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\dir_4fef79e7177ba769987a8da36c892c5f.tex | LaTeX | 5 | 0 | 1 | 6 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\dir_63772b626f2709090f0bdca0f40827b4.tex | LaTeX | 2 | 0 | 1 | 3 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\dir_68267d1309a1af8e8297ef4c3efbcdba.tex | LaTeX | 15 | 0 | 1 | 16 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\dir_8a35f475ed9d8a5443c1993b236eb8f6.tex | LaTeX | 2 | 0 | 1 | 3 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\dir_8d5e63337d9bc0375b6fa20fd80d83ec.tex | LaTeX | 2 | 0 | 1 | 3 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\dir_d28a4824dc47e487b107a5db32ef43c4.tex | LaTeX | 26 | 0 | 1 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\dir_d44c64559bbebec7f509842c48db8b23.tex | LaTeX | 11 | 0 | 1 | 12 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\doxygen.sty | TeX | 394 | 53 | 57 | 504 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\example__get_calib_params_file_8cc.tex | LaTeX | 44 | 0 | 15 | 59 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\example__get_depth_frame_8cc.tex | LaTeX | 45 | 0 | 16 | 61 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\example__get_point_cloud_8cc.tex | LaTeX | 59 | 0 | 8 | 67 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\example__get_raw_frame_8cc.tex | LaTeX | 44 | 0 | 15 | 59 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\example__get_rect_frame_8cc.tex | LaTeX | 49 | 0 | 20 | 69 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\files.tex | LaTeX | 15 | 0 | 1 | 16 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\hierarchy.tex | LaTeX | 21 | 0 | 1 | 22 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\index.tex | LaTeX | 40 | 0 | 22 | 62 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\refman.tex | LaTeX | 127 | 12 | 15 | 154 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\struct___device___point__.tex | LaTeX | 82 | 0 | 5 | 87 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\struct_g_l_window_1_1_system_state.tex | LaTeX | 50 | 0 | 3 | 53 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\struct_p_c_l.tex | LaTeX | 24 | 0 | 13 | 37 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\structglwindow_1_1_event_handler.tex | LaTeX | 43 | 0 | 5 | 48 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\structglwindow_1_1_g_l_window_1_1_scoped_context.tex | LaTeX | 25 | 0 | 5 | 30 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\doc\latex\structglwindow_1_1_scene_window_1_1_viewpoint.tex | LaTeX | 21 | 0 | 3 | 24 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\examples\example_getCalibParamsFile.cc | C++ | 14 | 9 | 5 | 28 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\examples\example_getDepthFrame.cc | C++ | 26 | 9 | 8 | 43 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\examples\example_getPointCloud.cc | C++ | 73 | 9 | 16 | 98 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\examples\example_getRawFrame.cc | C++ | 41 | 9 | 14 | 64 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\examples\example_getRectFrame.cc | C++ | 39 | 11 | 11 | 61 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\examples\example_getimagetrans.cc | C++ | 28 | 28 | 7 | 63 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\examples\example_putImagetrans.cc | C++ | 24 | 85 | 10 | 119 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\examples\example_share.cc | C++ | 24 | 0 | 5 | 29 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\examples\glViewer\glwindow.hpp | C++ | 100 | 2 | 23 | 125 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\examples\glViewer\glwindow_x11.cpp | C++ | 436 | 7 | 76 | 519 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\examples\glViewer\scenewindow.cpp | C++ | 139 | 4 | 39 | 182 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\examples\glViewer\scenewindow.hpp | C++ | 35 | 1 | 14 | 50 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\include\StereoCameraCommon.hpp | C++ | 99 | 534 | 27 | 660 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\include\SystemLog.hpp | C++ | 26 | 135 | 8 | 169 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\include\UnitreeCameraSDK.hpp | C++ | 23 | 126 | 10 | 159 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\src\getimagetrans.cc | C++ | 28 | 16 | 4 | 48 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\src\putimagetrans.cc | C++ | 58 | 37 | 14 | 109 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\stereo_camera_config.yaml | YAML | 66 | 12 | 0 | 78 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\trans_rect_config.yaml | YAML | 66 | 13 | 1 | 80 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\trans_rect_config_0.yaml | YAML | 66 | 12 | 0 | 78 |
+| d:\Administrator\Desktop\go1_guide-master\nano\UnitreecameraSDK\trans_rect_config_1.yaml | YAML | 66 | 12 | 0 | 78 |
+| d:\Administrator\Desktop\go1_guide-master\nano\kill.sh | Shell Script | 4 | 1 | 2 | 7 |
+| d:\Administrator\Desktop\go1_guide-master\nano\picture_processing.py | Python | 24 | 83 | 21 | 128 |
+| d:\Administrator\Desktop\go1_guide-master\nano\start.sh | Shell Script | 5 | 2 | 3 | 10 |
+| d:\Administrator\Desktop\go1_guide-master\nano\templates\index.html | HTML | 12 | 0 | 2 | 14 |
+| d:\Administrator\Desktop\go1_guide-master\nano\trans_rect_config_0.yaml | YAML | 66 | 12 | 1 | 79 |
+| d:\Administrator\Desktop\go1_guide-master\nano\trans_rect_config_1.yaml | YAML | 66 | 12 | 1 | 79 |
+| d:\Administrator\Desktop\go1_guide-master\nano\webcamera.py | Python | 49 | 2 | 15 | 66 |
+| d:\Administrator\Desktop\go1_guide-master\predict.py | Python | 208 | 15 | 55 | 278 |
+| d:\Administrator\Desktop\go1_guide-master\raspberrypi\server_robotcontrol.py | Python | 67 | 1 | 14 | 82 |
+| d:\Administrator\Desktop\go1_guide-master\raspberrypi\start.sh | Shell Script | 1 | 0 | 1 | 2 |
+| d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree.py | Python | 21 | 0 | 6 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\README.md | Markdown | 29 | 0 | 9 | 38 |
+| d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\example\example_joystick.cpp | C++ | 62 | 5 | 16 | 83 |
+| d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\example\example_position.cpp | C++ | 122 | 17 | 25 | 164 |
+| d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\example\example_torque.cpp | C++ | 71 | 8 | 16 | 95 |
+| d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\example\example_velocity.cpp | C++ | 72 | 8 | 18 | 98 |
+| d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\example\example_walk.cpp | C++ | 134 | 6 | 17 | 157 |
+| d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\example_py\example_position.py | Python | 81 | 12 | 26 | 119 |
+| d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\example_py\example_torque.py | Python | 44 | 9 | 18 | 71 |
+| d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\example_py\example_velocity.py | Python | 38 | 4 | 17 | 59 |
+| d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\example_py\example_walk.py | Python | 76 | 14 | 30 | 120 |
+| d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\example_py\test.py | Python | 5 | 1 | 2 | 8 |
+| d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\example_py\unitree.py | Python | 21 | 0 | 6 | 27 |
+| d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\example_py\unitree_python_sdk.py | Python | 42 | 9 | 10 | 61 |
+| d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\include\unitree_legged_sdk\a1_const.h | C++ | 12 | 3 | 4 | 19 |
+| d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\include\unitree_legged_sdk\aliengo_const.h | C++ | 12 | 3 | 4 | 19 |
+| d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\include\unitree_legged_sdk\comm.h | C++ | 172 | 15 | 30 | 217 |
+| d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\include\unitree_legged_sdk\go1_const.h | C++ | 12 | 3 | 4 | 19 |
+| d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\include\unitree_legged_sdk\joystick.h | C++ | 35 | 5 | 4 | 44 |
+| d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\include\unitree_legged_sdk\loop.h | C++ | 42 | 7 | 13 | 62 |
+| d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\include\unitree_legged_sdk\quadruped.h | C++ | 32 | 4 | 15 | 51 |
+| d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\include\unitree_legged_sdk\safety.h | C++ | 19 | 5 | 8 | 32 |
+| d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\include\unitree_legged_sdk\udp.h | C++ | 64 | 17 | 21 | 102 |
+| d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_legged_sdk\include\unitree_legged_sdk\unitree_legged_sdk.h | C++ | 11 | 3 | 5 | 19 |
+| d:\Administrator\Desktop\go1_guide-master\raspberrypi\unitree_python_sdk.py | Python | 42 | 9 | 10 | 61 |
+| d:\Administrator\Desktop\go1_guide-master\setup.sh | Shell Script | 4 | 1 | 1 | 6 |
+| d:\Administrator\Desktop\go1_guide-master\test.py | Python | 12 | 1 | 5 | 18 |
+| Total | | 18,894 | 2,357 | 2,385 | 23,636 |
++----------------------------------------------------------------------------------------------------------------------------------------+--------------+------------+------------+------------+------------+
\ No newline at end of file
diff --git a/src/Robot/go1_guide/.gitignore b/src/Robot/go1_guide/.gitignore
new file mode 100644
index 0000000..6641f44
--- /dev/null
+++ b/src/Robot/go1_guide/.gitignore
@@ -0,0 +1,2 @@
+PaddleDetection
+__pycache__
diff --git a/src/Robot/go1_guide/README b/src/Robot/go1_guide/README
new file mode 100644
index 0000000..00ec587
--- /dev/null
+++ b/src/Robot/go1_guide/README
@@ -0,0 +1,26 @@
+此项目为 <2022年第15届中国大学生计算机设计大赛 南京决赛区人工智能挑战赛> 参赛使用代码, 部署到 Unitree Go1 机器狗上。
+
+感知部分---识别部分---控制部分
+头部Nano---腹部Nano---RaspberryPi
+IP: 13 15 161
+
+部署&运行:
+1. 将nano文件夹移动到头部nano, 执行start.sh, 开启网络摄像头
+ (在机器狗局域网中的任何设备都可以通过192.168.123.13:5000/video1获取前向摄像头图像
+ 在机器狗局域网中的任何设备都可以通过192.168.123.13:5000/video2获取下巴摄像头图像)
+2. 将raspberrypi文件夹移动到RaspberryPi, 执行start.sh, 启动控制服务器
+ (用以接收指令,然后通过官方控制SDK来控制机器狗)
+3. 将其他文件移动到腹部nano, 执行setup.sh, 安装PaddleDetection
+ 执行main.py脚本, 开始进行比赛
+ (获取网络摄像头的图像, 进行目标检测, 通过识别结果判断下一步的控制, 再发送控制指令给RaspberryPi进行控制机器狗)
+
+
+
+参考资料:
+GitHub(Unitree Robotics): https://github.com/unitreerobotics
+开发知识库 语雀: https://www.yuque.com/ironfatty/nly1un
+Unitree Go1 开发指南: https://blog.csdn.net/qq_45779334/article/details/121960667?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-121960667-blog-121993402.pc_relevant_multi_platform_whitelistv1&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-121960667-blog-121993402.pc_relevant_multi_platform_whitelistv1&utm_relevant_index=1
+Go1资料包: https://pan.baidu.com/s/16OexDC4zN85LItv6Z1nXRw 提取码 kehe
+
+
+### 使用的目标检测模型为基于PaddlePaddle的PicoDet, 模型文件在model文件夹中
diff --git a/src/Robot/go1_guide/core/Camera.py b/src/Robot/go1_guide/core/Camera.py
new file mode 100644
index 0000000..efde5c9
--- /dev/null
+++ b/src/Robot/go1_guide/core/Camera.py
@@ -0,0 +1,112 @@
+import cv2
+import time
+import os
+import numpy as np
+
+class Camera:
+ def __init__(self, source=0):
+ # source = "http://192.168.123.12:8080/?action=stream"
+ self.cap = cv2.VideoCapture(source)
+
+ def getframe(self):
+ ret, frame = self.cap.read()
+ return frame
+
+ def getframe_rgb(self):
+ ret, frame = self.cap.read()
+ return cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
+
+ def showframe(self, frame, window_name='result'):
+ cv2.imshow(window_name, frame)
+
+ def close(self):
+ self.cap.release()
+
+ def writeframe(self, frame, filename=''):
+ if filename=='':
+ filename = './result' + time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime()) + '.jpg'
+ cv2.imwrite(filename, frame)
+
+
+
+# path_imgs = './images'
+path_imgs = r'E:/Datasets/WisdomGuide/val'
+
+class Camera_virtual():
+ index = 0
+ def __init__(self, path_imgs=path_imgs, imgs_num=-1):
+ self.path_imgs = path_imgs
+ self.files = os.listdir(path_imgs)[0:imgs_num]
+ self.files = list(map(lambda x: path_imgs+os.path.sep+x, self.files))
+ self.imgs_num = len(self.files)
+ # self.frames = []
+ # for file in files:
+ # if not os.path.isdir(file):
+ # frame = cv2.imread(path_imgs + os.path.sep + file)
+ # self.frames.append(frame)
+ return
+
+ def getframe(self):
+ frame = cv2.imread(self.files[self.index])
+ return frame
+
+ def getframe_rgb(self):
+ frame = cv2.imread(self.files[self.index])
+ return cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
+
+ def nextframe(self):
+ self.index += 1
+ if self.index>=self.imgs_num: self.index = 0
+
+ def get_frame_byte(self):
+ frame = cv2.imread(self.files[self.index])
+ return cv2.imencode('.jpg', frame)[1].tobytes()
+
+
+
+# class Camera_rs:
+# def __init__(self) -> None:
+# import pyrealsense2 as rs
+
+# # Configure depth and color streams
+# self.pipeline = rs.pipeline()
+# config = rs.config()
+# # Get device product line for setting a supporting resolution
+# pipeline_wrapper = rs.pipeline_wrapper(self.pipeline)
+# pipeline_profile = config.resolve(pipeline_wrapper)
+# device = pipeline_profile.get_device()
+# device_product_line = str(device.get_info(rs.camera_info.product_line))
+
+# found_rgb = False
+# for s in device.sensors:
+# if s.get_info(rs.camera_info.name) == 'RGB Camera':
+# found_rgb = True
+# break
+# if not found_rgb:
+# print("The demo requires Depth camera with Color sensor")
+# exit(0)
+
+# if device_product_line == 'L500':
+# config.enable_stream(rs.stream.color, 960, 540, rs.format.bgr8, 30)
+# else:
+# config.enable_stream(rs.stream.color, 640, 480, rs.format.bgr8, 30)
+
+# # Start streaming
+# self.pipeline.start(config)
+
+
+# def getframe(self):
+# frames = self.pipeline.wait_for_frames()
+# color_frame = frames.get_color_frame()
+# if not color_frame:
+# print('Can not get color frame.')
+# return False
+
+# # Convert images to numpy arrays
+# frame = np.asanyarray(color_frame.get_data()) # color_image
+# return frame
+
+
+# def close(self):
+# pass
+
\ No newline at end of file
diff --git a/src/Robot/go1_guide/core/PID.py b/src/Robot/go1_guide/core/PID.py
new file mode 100644
index 0000000..c815b7e
--- /dev/null
+++ b/src/Robot/go1_guide/core/PID.py
@@ -0,0 +1,47 @@
+
+class PID():
+ def __init__(self, dt, max, min, Kp, Kd, Ki):
+ self.dt = dt # 循环时长
+ self.max = max # 操作变量最大值
+ self.min = min # 操作变量最小值
+ self.Kp = Kp # 比例增益
+ self.Kd = Kd # 微分增益
+ self.Ki = Ki # 积分增益
+ self.integral = 0 # 直到上一次的误差值
+ self.pre_error = 0 # 上一次的误差值
+
+ def calculate(self, setPoint, pv):
+ # 其中 pv:process value 即过程值,
+ error = setPoint - pv # 误差
+ Pout = self.Kp * error # 比例项
+ self.integral += error * self.dt
+ Iout = self.Ki * self.integral # 积分项
+ derivative = (error - self.pre_error)/self.dt
+ Dout = self.Kd * derivative # 微分项
+
+ output = Pout + Iout + Dout # 新的目标值
+
+ if(output > self.max):
+ output = self.max
+ elif(output < self.min):
+ output = self.min
+
+ self.pre_error = error # 保存本次误差,以供下次计算
+ return output
+
+
+
+if __name__ == '__main__':
+ import matplotlib.pyplot as plt
+ t = range(150)
+ pid = PID(0.1, 100, -100, 0.1, 0.01, 0.5)
+ val = 20
+ z = []
+ for i in t:
+ inc = pid.calculate(0, val)
+ print("val:{} inc:{}".format(val,inc))
+ z.append(20-val)
+ val += inc
+ plt.figure(figsize=(8,6), dpi = 80)
+ plt.plot(t,z,color="blue",linewidth=1.0,linestyle="-")
+ plt.show()
\ No newline at end of file
diff --git a/src/Robot/go1_guide/core/capture.py b/src/Robot/go1_guide/core/capture.py
new file mode 100644
index 0000000..2992292
--- /dev/null
+++ b/src/Robot/go1_guide/core/capture.py
@@ -0,0 +1,64 @@
+"""capture class"""
+import cv2
+
+
+class CaptureInterface(object):
+ """base class of capture"""
+ def start(self):
+ """start"""
+ raise NotImplementedError
+
+ def stop(self):
+ """stop"""
+ raise NotImplementedError
+
+ def getType(self):
+ """getType"""
+ raise NotImplementedError
+
+ def getFrame(self):
+ """getFrame"""
+ raise NotImplementedError
+
+ def run(self):
+ """run"""
+ raise NotImplementedError
+
+
+class USBCamera(CaptureInterface):
+ """usb cam wrapper"""
+ def __init__(self, dev, type_='usb_camera', size=[928,800]):
+ """init"""
+ self.dev_type = type_
+ self.dev_name = dev
+ self.size = size
+ # dev_ = int(dev.split("/")[-1][5:])
+ dev_ = dev
+ self.cap = cv2.VideoCapture(dev_)
+ self.cap.set(cv2.CAP_PROP_FRAME_WIDTH, self.size[0])
+ self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT, self.size[1])
+
+ def start(self):
+ """start"""
+ self.cap = cv2.VideoCapture(self.dev_name)
+ self.cap.set(cv2.CAP_PROP_FRAME_WIDTH, self.size[0])
+ self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT, self.size[1])
+ if self.cap is None:
+ return -1
+ return 0
+
+ def stop(self):
+ """stop"""
+ self.cap.release()
+ return 0
+
+ def getFrame(self):
+ """getFrame"""
+ _, frame = self.cap.read()
+ return frame
+
+ def getType(self):
+ """getType"""
+ return self.dev_type
+
+
diff --git a/src/Robot/go1_guide/core/color_detection.py b/src/Robot/go1_guide/core/color_detection.py
new file mode 100644
index 0000000..4ee3911
--- /dev/null
+++ b/src/Robot/go1_guide/core/color_detection.py
@@ -0,0 +1,39 @@
+import cv2
+import numpy as np
+
+
+color_lower = np.array([65, 130, 60], np.uint8)
+color_upper = np.array([77, 170, 150], np.uint8)
+
+while True:
+ max_x = 0
+ max_center = -1
+
+ color_frame = None #frame
+
+ # Convert images to numpy arrays
+ color_image = np.asanyarray(color_frame.get_data())
+ hsvFrame = cv2.cvtColor(color_image, cv2.COLOR_BGR2HSV)
+ color_mask = cv2.inRange(hsvFrame, color_lower, color_upper)
+
+ kernal = np.ones((5, 5), "uint8")
+ color_mask = cv2.dilate(color_mask, kernal)
+ res = cv2.bitwise_and(color_image, color_image, mask = color_mask)
+
+ # Creating contour to track red color
+ contours, hierarchy = cv2.findContours(color_mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
+ area = max(contours,key = cv2.contourArea)
+ x, y, w, h = cv2.boundingRect(area)
+ color_image = cv2.rectangle(color_image,
+ (x, y),
+ (x + w, y + h),
+ (0, 0, 255), 2)
+
+ x_center = x + int(w/2)
+ y_center = y + int(h/2)
+ cv2.imshow("Color Detection in Real-Time", color_image)
+
+ waitkey = cv2.waitKey(1)
+ if waitkey==ord('q'): break
+
+cv2.destroyAllWindows()
diff --git a/src/Robot/go1_guide/core/getcolor.py b/src/Robot/go1_guide/core/getcolor.py
new file mode 100644
index 0000000..1443693
--- /dev/null
+++ b/src/Robot/go1_guide/core/getcolor.py
@@ -0,0 +1,14 @@
+import cv2
+import numpy as np
+
+def mouseColor(event, x, y, flags, param):
+ if event == cv2.EVENT_LBUTTONDOWN:
+ print('HSV:', hsv[y, x])
+
+img = cv2.imread('shot0.jpg')
+hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
+cv2.namedWindow("Color Picker")
+cv2.setMouseCallback("Color Picker", mouseColor)
+cv2.imshow("Color Picker", img)
+if cv2.waitKey(0):
+ cv2.destroyAllWindows()
\ No newline at end of file
diff --git a/src/Robot/go1_guide/core/picture_processing.py b/src/Robot/go1_guide/core/picture_processing.py
new file mode 100644
index 0000000..0cf7496
--- /dev/null
+++ b/src/Robot/go1_guide/core/picture_processing.py
@@ -0,0 +1,128 @@
+import cv2
+import numpy as np
+# from capture import USBCamera
+
+# def saveFrame():
+# capture = USBCamera("/dev/video0")
+# frame = capture.getFrame()
+# cv2.imwrite('capture.png', frame)
+
+
+# import numpy as np
+# import glob
+# size = [480,400]
+# def get_K_and_D(checkerboard, imgsPath):
+# CHECKERBOARD = checkerboard
+# subpix_criteria = (cv2.TERM_CRITERIA_EPS+cv2.TERM_CRITERIA_MAX_ITER, 30, 0.1)
+# calibration_flags = cv2.fisheye.CALIB_RECOMPUTE_EXTRINSIC+cv2.fisheye.CALIB_CHECK_COND+cv2.fisheye.CALIB_FIX_SKEW
+# objp = np.zeros((1, CHECKERBOARD[0]*CHECKERBOARD[1], 3), np.float32)
+# objp[0,:,:2] = np.mgrid[0:CHECKERBOARD[0], 0:CHECKERBOARD[1]].T.reshape(-1, 2)
+# _img_shape = None
+# objpoints = []
+# imgpoints = []
+# images = glob.glob(imgsPath + '/*.png')
+# for fname in images:
+# img = cv2.imread(fname)
+# img = cv2.resize(img, size)
+# if _img_shape == None:
+# _img_shape = img.shape[:2]
+# else:
+# assert _img_shape == img.shape[:2], "All images must share the same size."
+
+# gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
+# ret, corners = cv2.findChessboardCorners(gray, CHECKERBOARD,cv2.CALIB_CB_ADAPTIVE_THRESH+cv2.CALIB_CB_FAST_CHECK+cv2.CALIB_CB_NORMALIZE_IMAGE)
+# if ret == True:
+# objpoints.append(objp)
+# cv2.cornerSubPix(gray,corners,(3,3),(-1,-1),subpix_criteria)
+# imgpoints.append(corners)
+# N_OK = len(objpoints)
+# K = np.zeros((3, 3))
+# D = np.zeros((4, 1))
+# rvecs = [np.zeros((1, 1, 3), dtype=np.float64) for i in range(N_OK)]
+# tvecs = [np.zeros((1, 1, 3), dtype=np.float64) for i in range(N_OK)]
+# rms, _, _, _, _ = \
+# cv2.fisheye.calibrate(
+# objpoints,
+# imgpoints,
+# gray.shape[::-1],
+# K,
+# D,
+# rvecs,
+# tvecs,
+# calibration_flags,
+# (cv2.TERM_CRITERIA_EPS+cv2.TERM_CRITERIA_MAX_ITER, 30, 1e-6)
+# )
+# DIM = _img_shape[::-1]
+# print("Found " + str(N_OK) + " valid images for calibration")
+# print("DIM=" + str(_img_shape[::-1]))
+# print("K=np.array(" + str(K.tolist()) + ")")
+# print("D=np.array(" + str(D.tolist()) + ")")
+# return DIM, K, D
+
+
+# def OpenCVFisheyeImageUndistortion(img):
+ # cv::Mat img, undistortImg
+ # cv::Matx33d K, P
+ # cv::Vec4d D
+ # cv::Mat mapX, mapY
+
+ # K(0, 0) = 348.52; K(0, 1) = 0; K(0, 2) = 640.19
+ # K(1, 0) = 0; K(1, 1) = 348.52; K(1, 2) = 358.56
+ # K(2, 0) = 0; K(2, 1) = 0; K(2, 2) = 1
+
+ # D(0) = 0.066258
+ # D(1) = 0.039769
+ # D(2) = -0.026906
+ # D(3) = 0.003342
+
+ # P = K
+ # P(0, 0) /= 1.5
+ # P(1, 1) /= 1.5
+
+ # K = [[348.52, 0, 640.19],
+ # [0, 348.52, 358.56],
+ # [0, 0, 1]]
+ # D = [0.066258, 0.039769, -0.026906, 0.003342]
+ # cv2.initUndistortRectifyMap(K, D, cv::Matx33d::eye(), P, cv::Size(img.cols, img.rows), CV_16SC2, mapX, mapY)
+
+ # cv::remap(img, undistortImg, mapX, mapY, CV_INTER_LINEAR)
+ # cv::imshow("src", img)
+ # cv::imshow("corrected", undistortImg)
+
+
+
+# DIM = (480, 400)
+# K = np.array([[122.87238744667862, 0.0, 220.28343964853087],
+# [0.0, 120.60935347262523, 203.74634232157828],
+# [0.0, 0.0, 1.0]])
+# D = np.array([[0.06701341388742599], [0.1906721369775406], [-0.2568929474339438], [0.09063021944980182]])
+DIM = (640,480)
+K = np.array([[182.2034195269173, 0.0, 248.72241643510006],
+ [0.0, 200.88841301751464, 195.87207910703572],
+ [0.0, 0.0, 1.0]])
+D = np.array([[0.12236488620142214], [-0.053849293887633265], [0.03508527000849206], [-0.011661429257952398]])
+
+def undistort(img, DIM=DIM, K=K, D=D):
+ # img = cv2.resize(img, DIM)
+ map1, map2 = cv2.fisheye.initUndistortRectifyMap(K, D, np.eye(3), K, DIM,cv2.CV_16SC2)
+ undistorted_img = cv2.remap(img, map1, map2, interpolation=cv2.INTER_LINEAR,borderMode=cv2.BORDER_CONSTANT)
+ return undistorted_img
+
+
+def get_img_middle(img, size=[640,480]):
+ top = int((img.shape[0] - size[1]) / 2)
+ bottom = top + size[1]
+ left = int((img.shape[1] - size[0]) / 2)
+ right = left + size[0]
+ return img[top:bottom, left:right]
+
+
+
+
+if __name__ == "__main__":
+ capture = USBCamera("/dev/video0")
+ frame = capture.getFrame()
+ frame = cv2.resize(frame, DIM)
+ map1, map2 = cv2.fisheye.initUndistortRectifyMap(K, D, np.eye(3), K, DIM,cv2.CV_16SC2)
+ undistorted_img = cv2.remap(img, map1, map2, interpolation=cv2.INTER_LINEAR,borderMode=cv2.BORDER_CONSTANT)
+ cv2.imwrite('unfisheyeImage.png', undistorted_img)
\ No newline at end of file
diff --git a/src/Robot/go1_guide/core/robot_connector.py b/src/Robot/go1_guide/core/robot_connector.py
new file mode 100644
index 0000000..85425db
--- /dev/null
+++ b/src/Robot/go1_guide/core/robot_connector.py
@@ -0,0 +1,17 @@
+import socket
+import json
+
+
+class RobotConnector():
+ def __init__(self, ip_address='192.168.123.161', port=8000):
+ address_server = (ip_address, port)
+ self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ self.s.connect(address_server)
+
+ def robot_high_control(self, mode=2, gaitType=0, speedLevel=0,
+ footRaiseHeight=0, bodyHeight=0,
+ euler=[0,0,0], velocity=[0,0], yawSpeed=0.0, reverve=0):
+ data = [mode, gaitType, speedLevel, footRaiseHeight, bodyHeight, euler, velocity, yawSpeed, reverve]
+ data = json.dumps(data)
+ self.s.send(bytes(data.encode('utf-8')))
+
diff --git a/src/Robot/go1_guide/core/shot.py b/src/Robot/go1_guide/core/shot.py
new file mode 100644
index 0000000..ca50134
--- /dev/null
+++ b/src/Robot/go1_guide/core/shot.py
@@ -0,0 +1,25 @@
+import cv2
+
+t = 1
+video = 'http://192.168.123.13:5000/video2'
+capture = cv2.VideoCapture(video)
+
+t = 5
+while True:
+ # if capture.isOpened():
+ # _, frame = capture.read()
+ # cv2.imshow("video", frame)
+
+ _, frame = capture.read()
+ t -= 1
+ if not t:
+ cv2.imwrite("shot0.jpg", frame)
+ break
+
+ # waitkey = cv2.waitKey(1)
+ # if waitkey == ord('q'): break
+ # if waitkey == ord(' '):
+ # cv2.imwrite("shot{}.png".format(t), frame)
+ # t += 1
+
+capture.release()
diff --git a/src/Robot/go1_guide/main.py b/src/Robot/go1_guide/main.py
new file mode 100644
index 0000000..5c2b7c7
--- /dev/null
+++ b/src/Robot/go1_guide/main.py
@@ -0,0 +1,229 @@
+
+## frame.shape : [480, 640, 3]
+
+min_speed, max_speed = 0.05, 0.28 #0.28
+
+import time
+import cv2
+
+from predict import predicter
+predictor = predicter()
+
+from core.robot_connector import RobotConnector
+robot = RobotConnector(ip_address='192.168.123.161', port=8000)
+
+from core.PID import PID
+# pid_velocity0 = PID(0.1, 0.2, 0.0, 0.01, 0.00, 0.00) # dt循环时长, max操作变量最大值, min操作变量最小值, Kp比例增益, Kd积分增益, Ki微分增益
+# pid_velocity1 = PID(0.1, 0.2, -0.2, 0.10, 0.10, 0.00)
+pid_yaw = PID(0.1, 1.2, -1.2, 0.018, 0.01, 0.00)
+
+from core.Camera import Camera
+vedio1 = Camera("http://192.168.123.13:5000/video1")
+vedio2 = Camera("http://192.168.123.13:5000/video2")
+
+# IpLastSegment = "15"
+# udpstrPrevData = "udpsrc address=192.168.123."+ IpLastSegment + " port="
+# ## 端口: 前方, 下巴, 左, 右, 腹部
+# udpPORT = [9201, 9202, 9203, 9204, 9205] [1]
+# udpstrBehindData = " ! application/x-rtp,media=video,encoding-name=H264 ! rtph264depay ! h264parse ! omxh264dec ! videoconvert ! appsink"
+# udpSendIntegratedPipe = udpstrPrevData + udpPORT + udpstrBehindData
+# print('udpSendIntegratedPipe:', udpSendIntegratedPipe)
+# vedio2 = Camera(udpSendIntegratedPipe)
+
+def save(img, result, name):
+ if result:
+ x, y, w, h = result
+ img = cv2.rectangle(img,
+ (x, y),
+ (x + w, y + h),
+ (0, 0, 255), 2)
+ cv2.imwrite(name+'.jpg', img)
+ print('saved')
+
+
+def get_object(bboxes, object, square=None):
+ for box in bboxes:
+ if box['type']==object:
+ if square and box['w']*box['h']>square:
+ return box['x'], box['y'], box['w'], box['h']
+ return None
+
+
+def cross():
+ while True:
+ frame1 = vedio1.getframe()
+ bboxes = predictor.predict(frame1)
+ result = get_object(bboxes, 'green_light')
+ if result:
+ save(frame1, result, 'green')
+ break
+ for i in range(12):
+ time.sleep(0.2)
+ robot.robot_high_control(velocity=[max_speed, 0.0], yawSpeed=0.0)
+ while True:
+ frame2 = vedio2.getframe()
+ bboxes = predictor.predict(frame2)
+ result = get_object(bboxes, 'blind_path')
+ if result:
+ break
+ else:
+ robot.robot_high_control(velocity=[max_speed, 0.0], yawSpeed=0.0)
+
+
+def obstacle():
+ while True:
+ frame1 = vedio1.getframe()
+ bboxes = predictor.predict(frame1)
+ result = get_object(bboxes, 'block', square=250000) #300000
+ if result:
+ break
+ robot.robot_high_control(velocity=[0.12, 0.00], yawSpeed=0.00)
+ print('adjustment...')
+ for i in range(15):
+ time.sleep(0.2)
+ robot.robot_high_control(velocity=[0.00, -0.20], yawSpeed=0.00)
+ for i in range(7):
+ time.sleep(0.2)
+ robot.robot_high_control(velocity=[0.20, 0.00], yawSpeed=0.00)
+ for i in range(5):
+ time.sleep(0.2)
+ robot.robot_high_control(velocity=[0.00, 0.00], yawSpeed=0.58)
+ for i in range(15):
+ time.sleep(0.2)
+ robot.robot_high_control(velocity=[0.2, 0.00], yawSpeed=0.00)
+ for i in range(5):
+ time.sleep(0.2)
+ robot.robot_high_control(velocity=[0.00, 0.00], yawSpeed=-0.55)
+
+
+def step():
+ for i in range(6):
+ time.sleep(0.2)
+ robot.robot_high_control(velocity=[0.20, 0.00], yawSpeed=0.00, footRaiseHeight=0.12)
+ for i in range(10):
+ time.sleep(0.2)
+ robot.robot_high_control(velocity=[max_speed, 0.00], yawSpeed=0.00)
+ while True:
+ frame2 = vedio2.getframe()
+ bboxes = predictor.predict(frame2)
+ result = get_object(bboxes, 'blind_path')
+ if result:
+ break
+ else:
+ robot.robot_high_control(velocity=[0.20, 0.00], yawSpeed=0.00)
+
+
+def end():
+ for i in range(15):
+ time.sleep(0.2)
+ robot.robot_high_control(velocity=[0.20, 0.00], yawSpeed=-0.65)
+
+
+
+
+def walk_along():
+ items = [0, 0, 0, 0]
+ h_frame, w_frame = vedio2.getframe().shape[0:2]
+ x_center = 0
+ while True:
+ frame1 = vedio1.getframe()
+ frame2 = vedio2.getframe()
+ bboxes1 = predictor.predict(frame1)
+ bboxes2 = predictor.predict(frame2)
+
+ if not items[0]:
+ # frame_ = frame2[0:int(h_frame/2), :]
+ result = get_object(bboxes2, 'crossing')
+ if result:
+ save(frame2, result, 'cross')
+ print('cross...')
+ cross()
+ print('crossed')
+ x_center = w_frame/2
+ items[0] = 1
+ continue
+
+ if not items[1]:
+ result = get_object(bboxes1, 'block', square=10000)
+ if result:
+ print('obstacle...')
+ obstacle()
+ print('obstacled')
+ x_center = w_frame/2
+ items[1] = 1
+ continue
+
+ if not items[2]:
+ result = get_object(bboxes2, 'step')
+ if result:
+ save(frame2, result, 'step')
+ print('step...')
+ step()
+ print('steped')
+ x_center = w_frame/2
+ items[2] = 1
+ continue
+
+ if not items[3] and all(items[:-2]):
+ result = get_object(bboxes2, 'red')
+ if result:
+ save(frame2, result, 'red')
+ print('end...')
+ end()
+ print('END!!!')
+ break
+
+ result = get_object(bboxes2, 'blind_path')
+ if result:
+ x, y, w, h = result
+ x_center = x + int(w/2)
+ y_center = y + int(h/2)
+
+ # color_image = cv2.rectangle(color_image,
+ # (x, y),
+ # (x + w, y + h),
+ # (0, 0, 255), 2)
+ # color_image = cv2.circle(color_image,
+ # (x_center,y_center),
+ # 1,
+ # (0, 0, 255), 4)
+ # color_image = cv2.line(color_image,
+ # (int(w_frame/2), 0),
+ # (int(w_frame/2), h_frame),
+ # (0, 255, 0), 2)
+
+
+ velocity = [0.0, 0.0]
+ yawspeed = 0.0
+
+ deviation = abs(w_frame/2 - x_center)
+ velocity[0] = max_speed-(max_speed-min_speed)*(deviation/(w_frame/2))
+ yawspeed = pid_yaw.calculate(0, x_center - w_frame/2)
+ # print('{}, {}'.format(x_center ,yawspeed))
+
+ robot.robot_high_control(velocity=velocity, yawSpeed=yawspeed)
+
+
+ waitkey = cv2.waitKey(1)
+ if waitkey==ord('q'): break
+
+ # cap.release()
+
+
+def go(n):
+ for i in range(n):
+ time.sleep(0.2)
+ robot.robot_high_control(velocity=[max_speed, 0.0], yawSpeed=0.0)
+
+
+
+frame1, frame2 = None, None
+print('go...')
+go(10)
+print('walk...')
+walk_along()
+frame1, frame2 = None, None
+
+while True:
+ time.sleep(0.2)
+ robot.robot_high_control(bodyHeight=-1.8)
diff --git a/src/Robot/go1_guide/model/picodet_l_416_coco_lcnet/infer_cfg.yml b/src/Robot/go1_guide/model/picodet_l_416_coco_lcnet/infer_cfg.yml
new file mode 100644
index 0000000..9152a42
--- /dev/null
+++ b/src/Robot/go1_guide/model/picodet_l_416_coco_lcnet/infer_cfg.yml
@@ -0,0 +1,31 @@
+mode: paddle
+draw_threshold: 0.5
+metric: COCO
+use_dynamic_shape: false
+arch: GFL
+min_subgraph_size: 3
+Preprocess:
+- interp: 2
+ keep_ratio: false
+ target_size:
+ - 416
+ - 416
+ type: Resize
+- type: Permute
+label_list:
+- blind_path
+- green_light
+- block
+- no_light
+- red_light
+NMS:
+ keep_top_k: 100
+ name: MultiClassNMS
+ nms_threshold: 0.5
+ nms_top_k: 1000
+ score_threshold: 0.3
+fpn_stride:
+- 8
+- 16
+- 32
+- 64
diff --git a/src/Robot/go1_guide/model/picodet_l_416_coco_lcnet/model.pdiparams b/src/Robot/go1_guide/model/picodet_l_416_coco_lcnet/model.pdiparams
new file mode 100644
index 0000000..d53c5ef
Binary files /dev/null and b/src/Robot/go1_guide/model/picodet_l_416_coco_lcnet/model.pdiparams differ
diff --git a/src/Robot/go1_guide/model/picodet_l_416_coco_lcnet/model.pdiparams.info b/src/Robot/go1_guide/model/picodet_l_416_coco_lcnet/model.pdiparams.info
new file mode 100644
index 0000000..dbd2d91
Binary files /dev/null and b/src/Robot/go1_guide/model/picodet_l_416_coco_lcnet/model.pdiparams.info differ
diff --git a/src/Robot/go1_guide/model/picodet_l_416_coco_lcnet/model.pdmodel b/src/Robot/go1_guide/model/picodet_l_416_coco_lcnet/model.pdmodel
new file mode 100644
index 0000000..6ff7627
Binary files /dev/null and b/src/Robot/go1_guide/model/picodet_l_416_coco_lcnet/model.pdmodel differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/CMakeLists.txt b/src/Robot/go1_guide/nano/UnitreecameraSDK/CMakeLists.txt
new file mode 100644
index 0000000..3a580ec
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/CMakeLists.txt
@@ -0,0 +1,34 @@
+cmake_minimum_required( VERSION 2.8 )
+project( UnitreeCameraSDK )
+
+set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bins/)
+
+find_package(OpenCV 4 REQUIRED)
+if(OpenCV_FOUND)
+ include_directories(${OpenCV_INCLUDE_DIR})
+ message(STATUS "OpenCV ${OpenCV_VERSION} FOUND")
+ message(STATUS ${OpenCV_LIBS})
+ if(${OpenCV_VERSION_MAJOR} EQUAL 4)
+ add_definitions(-DOPENCV_VERSION_4)
+ elseif(${OpenCV_VERSION_MAJOR} LESS 4)
+ add_definitions(-DOPENCV_VERSION_3)
+ endif()
+else()
+ message(FATAL_ERROR "OpenCV Library Not Found")
+endif()
+
+if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "x86_64")
+set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib/amd64/)
+link_directories(${PROJECT_SOURCE_DIR}/lib/amd64/)
+else()
+set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib/arm64/)
+link_directories(${PROJECT_SOURCE_DIR}/lib/arm64/)
+endif()
+
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread")
+include_directories(${PROJECT_SOURCE_DIR}/include)
+
+set(SDKLIBS unitree_camera tstc_V4L2_xu_camera udev systemlog ${OpenCV_LIBS})
+
+add_subdirectory(${PROJECT_SOURCE_DIR}/src)
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/LICENSE b/src/Robot/go1_guide/nano/UnitreecameraSDK/LICENSE
new file mode 100644
index 0000000..a612ad9
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/LICENSE
@@ -0,0 +1,373 @@
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+ means each individual or legal entity that creates, contributes to
+ the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+ means the combination of the Contributions of others (if any) used
+ by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+ means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+ means Source Code Form to which the initial Contributor has attached
+ the notice in Exhibit A, the Executable Form of such Source Code
+ Form, and Modifications of such Source Code Form, in each case
+ including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+ means
+
+ (a) that the initial Contributor has attached the notice described
+ in Exhibit B to the Covered Software; or
+
+ (b) that the Covered Software was made available under the terms of
+ version 1.1 or earlier of the License, but not also under the
+ terms of a Secondary License.
+
+1.6. "Executable Form"
+ means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+ means a work that combines Covered Software with other material, in
+ a separate file or files, that is not Covered Software.
+
+1.8. "License"
+ means this document.
+
+1.9. "Licensable"
+ means having the right to grant, to the maximum extent possible,
+ whether at the time of the initial grant or subsequently, any and
+ all of the rights conveyed by this License.
+
+1.10. "Modifications"
+ means any of the following:
+
+ (a) any file in Source Code Form that results from an addition to,
+ deletion from, or modification of the contents of Covered
+ Software; or
+
+ (b) any new file in Source Code Form that contains any Covered
+ Software.
+
+1.11. "Patent Claims" of a Contributor
+ means any patent claim(s), including without limitation, method,
+ process, and apparatus claims, in any patent Licensable by such
+ Contributor that would be infringed, but for the grant of the
+ License, by the making, using, selling, offering for sale, having
+ made, import, or transfer of either its Contributions or its
+ Contributor Version.
+
+1.12. "Secondary License"
+ means either the GNU General Public License, Version 2.0, the GNU
+ Lesser General Public License, Version 2.1, the GNU Affero General
+ Public License, Version 3.0, or any later versions of those
+ licenses.
+
+1.13. "Source Code Form"
+ means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+ means an individual or a legal entity exercising rights under this
+ License. For legal entities, "You" includes any entity that
+ controls, is controlled by, or is under common control with You. For
+ purposes of this definition, "control" means (a) the power, direct
+ or indirect, to cause the direction or management of such entity,
+ whether by contract or otherwise, or (b) ownership of more than
+ fifty percent (50%) of the outstanding shares or beneficial
+ ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+ Licensable by such Contributor to use, reproduce, make available,
+ modify, display, perform, distribute, and otherwise exploit its
+ Contributions, either on an unmodified basis, with Modifications, or
+ as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+ for sale, have made, import, and otherwise transfer either its
+ Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+ or
+
+(b) for infringements caused by: (i) Your and any other third party's
+ modifications of Covered Software, or (ii) the combination of its
+ Contributions with other software (except as part of its Contributor
+ Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+ its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+ Form, as described in Section 3.1, and You must inform recipients of
+ the Executable Form how they can obtain a copy of such Source Code
+ Form by reasonable means in a timely manner, at a charge no more
+ than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+ License, or sublicense it under different terms, provided that the
+ license for the Executable Form does not attempt to limit or alter
+ the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+* *
+* 6. Disclaimer of Warranty *
+* ------------------------- *
+* *
+* Covered Software is provided under this License on an "as is" *
+* basis, without warranty of any kind, either expressed, implied, or *
+* statutory, including, without limitation, warranties that the *
+* Covered Software is free of defects, merchantable, fit for a *
+* particular purpose or non-infringing. The entire risk as to the *
+* quality and performance of the Covered Software is with You. *
+* Should any Covered Software prove defective in any respect, You *
+* (not any Contributor) assume the cost of any necessary servicing, *
+* repair, or correction. This disclaimer of warranty constitutes an *
+* essential part of this License. No use of any Covered Software is *
+* authorized under this License except under this disclaimer. *
+* *
+************************************************************************
+
+************************************************************************
+* *
+* 7. Limitation of Liability *
+* -------------------------- *
+* *
+* Under no circumstances and under no legal theory, whether tort *
+* (including negligence), contract, or otherwise, shall any *
+* Contributor, or anyone who distributes Covered Software as *
+* permitted above, be liable to You for any direct, indirect, *
+* special, incidental, or consequential damages of any character *
+* including, without limitation, damages for lost profits, loss of *
+* goodwill, work stoppage, computer failure or malfunction, or any *
+* and all other commercial damages or losses, even if such party *
+* shall have been informed of the possibility of such damages. This *
+* limitation of liability shall not apply to liability for death or *
+* personal injury resulting from such party's negligence to the *
+* extent applicable law prohibits such limitation. Some *
+* jurisdictions do not allow the exclusion or limitation of *
+* incidental or consequential damages, so this exclusion and *
+* limitation may not apply to You. *
+* *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+ This Source Code Form is subject to the terms of the Mozilla Public
+ License, v. 2.0. If a copy of the MPL was not distributed with this
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+---------------------------------------------------------
+
+ This Source Code Form is "Incompatible With Secondary Licenses", as
+ defined by the Mozilla Public License, v. 2.0.
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/README.md b/src/Robot/go1_guide/nano/UnitreecameraSDK/README.md
new file mode 100644
index 0000000..2c2efab
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/README.md
@@ -0,0 +1,84 @@
+Introduction
+---
+Unitree Robotics is a energetic start-up company that focuses on the development, production and sales of high-performance quadruped robots. It has been interviewed by BBC and CCTV, and is one of the earliest company to publicly sell quadruped robots.
+
+The company has an outstanding leadership in developing robot core components, motion control, robot perception, etc.
+
+We attaches great importance to research and development, and thus independently developed the motors, reducers, controllers, and even some sensors of the quadruped robot.
+
+1.Overview
+---
+UnitreeCameraSDK 1.1.0 is a cross-platform library for unitree stereo cameras
+
+The SDK allows depth and color streaming, and provides intrinsic calibration information. The library also offers pointcloud, depth image aligned to color image.
+
+2.Dependencies
+---
+
+OpenCV, version: equal or lager than 4 (need gstreamer)
+
+CMake, version: 2.8 or higher
+
+[OpenGL] for point cloud gui
+
+[GLUT] for point cloud gui
+
+[X11], for point cloud gui
+
+2.Build
+---
+
+```
+cd UnitreeCameraSDK;
+mkdir build && cd build;
+cmake ..; make
+```
+
+3.Run Examples
+---
+
+Get Camera Raw Frame:
+```
+cd UnitreeCameraSDK;
+./bin/example_getRawFrame
+```
+
+Get Calibration Parameters File
+```
+cd UnitreeCameraSDK;
+./bin/example_getCalibParamsFile
+```
+
+Get Rectify Frame
+```
+cd UnitreeCameraSDK;
+./bin/example_getRectFrame
+```
+
+Get Depth Frame
+```
+cd UnitreeCameraSDK;
+./bin/example_getDepthFrame
+```
+
+Get Point Cloud:
+```
+cd UnitreeCameraSDK;
+./bin/example_getPointCloud
+```
+
+4.send image and listen image
+sender:put image to another devices
+```
+cd UnitreeCameraSDK;
+./bin/example_putImagetrans
+```
+
+listener:get image from another devices
+```
+cd UnitreeCameraSDK;
+./bin/example_getimagetrans
+```
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8cc.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8cc.html
new file mode 100644
index 0000000..d33521b
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8cc.html
@@ -0,0 +1,162 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: src/StereoCameraCommon.cc File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This file is part of UnitreeCameraSDK, which implement stereo vision algorithm.
+More...
+
#include "StereoCameraCommon.hpp "
+
#include <unistd.h>
+
#include <sys/shm.h>
+
+
+
+typedef enum ImageRect ImageRectType
+
+
+
+enum ImageRect { RECT_FISHEYE = 0,
+RECT_LONGLAT ,
+RECT_PERSPECTIVE
+ } This enum is used for stereo images rectification. More...
+
+
+
+
+
+double MatRowMul (cv::Mat m, double x, double y, double z, int r)
+
+
+int convertRawFisheyeImage (cv::Mat &left, cv::Mat &right, float da=0.0, float db=-32.0, float dcx=0.0, float dcy=0.0)
+
+
+int convertRawFisheyeImage (int radius, cv::Mat &left, cv::Mat &right)
+
+
+bool initRectifyMap (cv::Mat K, cv::Mat D, cv::Mat R, cv::Mat Knew, double xi0, double xi1, cv::Size size, int mode, cv::Mat &map1, cv::Mat &map2)
+
+
+uchar getBlueSegVal (float minv, float maxv, float curv)
+
+
+uchar getGreenSegVal (float minv, float maxv, float curv)
+
+
+uchar getRedSegVal (float minv, float maxv, float curv)
+
+
+
+
This file is part of UnitreeCameraSDK, which implement stereo vision algorithm.
+
image capture, image rectification, disparity computation, point cloud generation
Author ZhangChunyang create date 2021.07.31
+
Version 1.0.1
+
Copyright Copyright (c)2019-2021, Hangzhou Yushu Technology Stock CO.LTD. All Rights Reserved.
+
+
+
◆ ImageRect
+
+
+
+
+
This enum is used for stereo images rectification.
+
FISHEYE and LONGLAT for fisheye camera model, PERSPECTIVE for pinhole cameras
Note used for differen camera models
+
Attention make sure camera model is matched.
+
+
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8cc__incl.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8cc__incl.map
new file mode 100644
index 0000000..b3373c3
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8cc__incl.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8cc__incl.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8cc__incl.md5
new file mode 100644
index 0000000..c233b3d
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8cc__incl.md5
@@ -0,0 +1 @@
+57fa0654752fd2d6c6272d1d713d3832
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8cc__incl.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8cc__incl.png
new file mode 100644
index 0000000..13098f2
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8cc__incl.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8hpp.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8hpp.html
new file mode 100644
index 0000000..181941b
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8hpp.html
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: include/StereoCameraCommon.hpp File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This file is part of UnitreeCameraSDK, which declare stereo camera algorithm APIs.
+More...
+
#include <string>
+
#include <thread>
+
#include <mutex>
+
#include <condition_variable>
+
#include <opencv2/opencv.hpp>
+
#include <chrono>
+
#include "SystemLog.hpp "
+
+
Go to the source code of this file.
+
+
+struct PCL
+ this struct is used for RGB point cloud capture and display More...
+
+class StereoCamera
+ this class integrate camera control and stereo vision algorithm More...
+
+
+
+
+typedef struct PCL PCLType
+
+
+
+
This file is part of UnitreeCameraSDK, which declare stereo camera algorithm APIs.
+
image capture, image rectification, disparity computation, depth image and point cloud generation
Author ZhangChunyang
+
Date 2021.07.31
+
Version 1.0.1
+
Copyright Copyright (c)2020-2021, Hangzhou Yushu Technology Stock CO.LTD. All Rights Reserved.
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8hpp__dep__incl.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8hpp__dep__incl.map
new file mode 100644
index 0000000..48dc27e
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8hpp__dep__incl.map
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8hpp__dep__incl.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8hpp__dep__incl.md5
new file mode 100644
index 0000000..3dd816b
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+aa4f2b92d31e72bd1c10fbe90d80df31
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8hpp__dep__incl.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8hpp__dep__incl.png
new file mode 100644
index 0000000..bec8471
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8hpp__dep__incl.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8hpp__incl.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8hpp__incl.map
new file mode 100644
index 0000000..f7d7977
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8hpp__incl.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8hpp__incl.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8hpp__incl.md5
new file mode 100644
index 0000000..1386ee7
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8hpp__incl.md5
@@ -0,0 +1 @@
+3e051c090d4d328e3aa44db8a31d0f5b
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8hpp__incl.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8hpp__incl.png
new file mode 100644
index 0000000..f0b5919
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8hpp__incl.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8hpp_source.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8hpp_source.html
new file mode 100644
index 0000000..1d7816b
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_stereo_camera_common_8hpp_source.html
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: include/StereoCameraCommon.hpp Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the documentation of this file. 10 #ifndef __STEREO_CAMERA_COMMOM_HPP__ 11 #define __STEREO_CAMERA_COMMOM_HPP__ 16 #include <condition_variable> 17 #include <opencv2/opencv.hpp> 47 typedef struct TimeFrame{
50 std::chrono::microseconds timeStamp;
59 int m_serialNumber = 0;
60 int m_threshold = 120;
61 float m_frameRate = 30.0;
62 int m_ipLastSegment = 15;
64 bool m_shareMemSupport =
false ;
65 bool m_udpH264Support =
false ;
66 bool m_isOpened =
false ;
67 bool m_isCompute =
false ;
72 TimeFrameType m_stampFrame, m_dispFrame;
74 cv::Mat m_leftXi,m_leftRotation,m_leftIntrinsic,m_leftDistortion;
75 cv::Mat m_rightXi,m_rightRotation,m_rightIntrinsic,m_rightDistortion;
76 cv::Mat m_translation;
78 cv::Mat m_kfe, m_fmap[2], m_lmap[2][2], m_lagerFmap[2];
81 std::string m_logName =
"StereoCamera" ;
83 std::mutex m_capLock, m_dispLock;
84 std::condition_variable m_capTrigger, m_dispTrigger;
86 cv::VideoCapture *m_videoCap =
nullptr ;
88 std::thread *m_capWorker =
nullptr ;
89 std::thread *m_dispWorker =
nullptr ;
159 virtual bool isOpened(
void );
172 virtual bool setLogLevel(
int level);
185 virtual bool setPosNumber(
int posNumber);
198 virtual bool setSerialNumber(
int serialNumber);
211 virtual bool setRawFrameRate(
int frameRate);
225 virtual bool setRawFrameSize(cv::Size frameSize);
240 virtual bool setRectFrameSize(cv::Size frameSize);
257 virtual bool setCalibParams(std::vector<cv::Mat> paramsArray,
bool flag =
false );
270 virtual int getLogLevel(
void )
const ;
283 virtual int getDeviceNode(
void )
const ;
296 virtual int getPosNumber(
void )
const ;
309 virtual int getSerialNumber(
void )
const ;
321 virtual float getRawFrameRate(
void )
const ;
333 virtual cv::Size getRawFrameSize(
void )
const ;
349 virtual bool getRawFrame(cv::Mat &frame, std::chrono::microseconds &timeStamp);
370 virtual bool getStereoFrame(cv::Mat &left, cv::Mat &right, std::chrono::microseconds &timeStamp);
391 virtual bool getDepthFrame(cv::Mat& depth,
bool color, std::chrono::microseconds &timeStamp);
412 virtual bool getPointCloud(std::vector<cv::Vec3f> &pcl, std::chrono::microseconds &timeStamp);
434 virtual bool getPointCloud(std::vector<PCLType>& pcl, std::chrono::microseconds& timeStamp);
453 virtual bool getCalibParams(std::vector<cv::Mat> ¶msArray,
bool flag =
false );
473 virtual bool getRectStereoFrame(cv::Mat &left, cv::Mat &right, cv::Mat &feim);
495 virtual bool getRectStereoFrame(cv::Mat &left, cv::Mat &right, cv::Mat &feim, std::chrono::microseconds &timeStamp);
511 virtual bool loadConfig(std::string fileName);
528 virtual bool loadCalibParams(std::string fileName);
541 virtual bool saveConfig(std::string fileName =
"stereo_camera_config.yaml" );
554 virtual bool saveCalibParams(std::string fileName =
"stereo_camera_calibparams.yaml" );
573 virtual bool startCapture(
bool udpFlag =
false ,
bool shmFlag =
false );
588 virtual bool startStereoCompute(
void );
603 virtual bool stopStereoCompute(
void );
620 virtual bool stopCapture(
void );
623 #endif //__STEREO_CAMERA_COMMOM_HPP__ This file is part of UnitreeCameraSDK, which declare the APIs of log system.
+
this class integrate camera control and stereo vision algorithm
Definition: StereoCameraCommon.hpp:38
+
cv::Vec3f pts
points coordinates (x, y, z)
Definition: StereoCameraCommon.hpp:29
+
cv::Vec3b clr
points color (b, g, r)
Definition: StereoCameraCommon.hpp:30
+
Definition: SystemLog.hpp:18
+
this struct is used for RGB point cloud capture and display
Definition: StereoCameraCommon.hpp:28
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_system_log_8hpp.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_system_log_8hpp.html
new file mode 100644
index 0000000..9a37376
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_system_log_8hpp.html
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: include/SystemLog.hpp File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This file is part of UnitreeCameraSDK, which declare the APIs of log system.
+More...
+
#include <stdarg.h>
+#include <stdio.h>
+#include <string>
+
+
Go to the source code of this file.
+
+
+
This file is part of UnitreeCameraSDK, which declare the APIs of log system.
+
The log system is used for unified management of the output information of the special system.
Author ZhangChunyang
+
Date 2021.07.31
+
Version 1.0.1
+
Copyright Copyright (c)2020-2021, Hangzhou Yushu Technology Stock CO.LTD. All Rights Reserved.
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_system_log_8hpp__dep__incl.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_system_log_8hpp__dep__incl.map
new file mode 100644
index 0000000..acac00c
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_system_log_8hpp__dep__incl.map
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_system_log_8hpp__dep__incl.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_system_log_8hpp__dep__incl.md5
new file mode 100644
index 0000000..7b9de72
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_system_log_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+9473d02ecebf83419d031c6892e87325
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_system_log_8hpp__dep__incl.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_system_log_8hpp__dep__incl.png
new file mode 100644
index 0000000..dfd64cf
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_system_log_8hpp__dep__incl.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_system_log_8hpp__incl.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_system_log_8hpp__incl.map
new file mode 100644
index 0000000..9593bd3
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_system_log_8hpp__incl.map
@@ -0,0 +1,2 @@
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_system_log_8hpp__incl.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_system_log_8hpp__incl.md5
new file mode 100644
index 0000000..649cd5a
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_system_log_8hpp__incl.md5
@@ -0,0 +1 @@
+f149372964a39345b4a615ac7d83e1aa
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_system_log_8hpp__incl.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_system_log_8hpp__incl.png
new file mode 100644
index 0000000..3bc2fd7
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_system_log_8hpp__incl.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_system_log_8hpp_source.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_system_log_8hpp_source.html
new file mode 100644
index 0000000..6293e8d
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_system_log_8hpp_source.html
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: include/SystemLog.hpp Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the documentation of this file. 11 #ifndef __SYSTEMLOG_HPP__ 12 #define __SYSTEMLOG_HPP__ 23 std::string m_logName;
24 std::string m_logFileName;
168 #endif //__SYSTEMLOG_HPP__ void saveLog(void)
save system log to a file, default file name: Running.txt
+
void setLogLevel(int level)
set system ouput log level
+
SystemLog(std::string logName)
SystemLog constructor.
+
void runTimeWarning(const char *format,...)
output running warning infomation, color: yellow
+
void runTimeInfo(const char *format,...)
output running infomation, color: green
+
void debugTimeInfo(const char *format,...)
output debug infomation, color: white
+
Definition: SystemLog.hpp:18
+
void runTimeError(const char *format,...)
output running error infomation, color: red
+
void debugTimeWarning(const char *format,...)
output debug warning infomation, color: cyan
+
void saveLogToFile(std::string fileName)
save system log to a designated file
+
void debugTimeError(const char *format,...)
output debug error infomation, color: magenta
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_unitree_camera_s_d_k_8hpp.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_unitree_camera_s_d_k_8hpp.html
new file mode 100644
index 0000000..71e18ff
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_unitree_camera_s_d_k_8hpp.html
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: include/UnitreeCameraSDK.hpp File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This file is part of UnitreeCameraSDK, which declare unitree camera APIs.
+More...
+
+
Go to the source code of this file.
+
+
+
+cv::Mat getRotationMatrix (int axis='x', float theta=0.0)
+
+
+cv::Mat getTranslationMatrix (int axis='x', float theta=0.0, cv::Mat vec=cv::Mat())
+
+
+
+
This file is part of UnitreeCameraSDK, which declare unitree camera APIs.
+
class UnitreeCamera inherits the APIs of class StereoCamera image capture, image rectification, disparity computation, depth image and point cloud generation update camera firmware, flash camera parameters to camera
Author ZhangChunyang
+
Date 2021.07.31
+
Version 1.0.1
+
Copyright Copyright (c) 2020-2021, Hangzhou Yushu Technology Stock CO.LTD. All Rights Reserved.
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_unitree_camera_s_d_k_8hpp__dep__incl.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_unitree_camera_s_d_k_8hpp__dep__incl.map
new file mode 100644
index 0000000..50bd748
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_unitree_camera_s_d_k_8hpp__dep__incl.map
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_unitree_camera_s_d_k_8hpp__dep__incl.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_unitree_camera_s_d_k_8hpp__dep__incl.md5
new file mode 100644
index 0000000..bdd6285
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_unitree_camera_s_d_k_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+bf9b57dd0d6c56de8b8aa497c92b06e5
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_unitree_camera_s_d_k_8hpp__dep__incl.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_unitree_camera_s_d_k_8hpp__dep__incl.png
new file mode 100644
index 0000000..bf1c78d
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_unitree_camera_s_d_k_8hpp__dep__incl.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_unitree_camera_s_d_k_8hpp__incl.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_unitree_camera_s_d_k_8hpp__incl.map
new file mode 100644
index 0000000..ad799b1
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_unitree_camera_s_d_k_8hpp__incl.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_unitree_camera_s_d_k_8hpp__incl.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_unitree_camera_s_d_k_8hpp__incl.md5
new file mode 100644
index 0000000..e7273d8
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_unitree_camera_s_d_k_8hpp__incl.md5
@@ -0,0 +1 @@
+a5b5bcb6f5fc15d30ca4d887d4317791
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_unitree_camera_s_d_k_8hpp__incl.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_unitree_camera_s_d_k_8hpp__incl.png
new file mode 100644
index 0000000..f7cbd3c
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_unitree_camera_s_d_k_8hpp__incl.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_unitree_camera_s_d_k_8hpp_source.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_unitree_camera_s_d_k_8hpp_source.html
new file mode 100644
index 0000000..c74446a
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/_unitree_camera_s_d_k_8hpp_source.html
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: include/UnitreeCameraSDK.hpp Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the documentation of this file. 14 #ifndef __UNITREE_CAMERA_SDK_HPP__ 15 #define __UNITREE_CAMERA_SDK_HPP__ 22 std::string m_logName =
"UnitreeCameraSDK" ;
128 bool loadInternalCalibParams(
void );
143 cv::Mat getRotationMatrix(
int axis =
'x' ,
float theta = 0.0);
156 cv::Mat getTranslationMatrix(
int axis =
'x' ,
float theta = 0.0, cv::Mat vec = cv::Mat());
bool updateCalibParams2Flash(std::string fileName)
update camera calibrate parameters
Definition: UnitreeCameraSDK.cc:314
+
Definition: UnitreeCameraSDK.hpp:19
+
this class integrate camera control and stereo vision algorithm
Definition: StereoCameraCommon.hpp:38
+
This file is part of UnitreeCameraSDK, which declare stereo camera algorithm APIs.
+
~UnitreeCamera(void)
UnitreeCamera destructor.
Definition: UnitreeCameraSDK.cc:300
+
bool checkFirmwareVersion(std::string &version)
check camera's firmware version
Definition: UnitreeCameraSDK.cc:319
+
Definition: SystemLog.hpp:18
+
UnitreeCamera()
UnitreeCamera init unitree stereo camera object for default parameters.
Definition: UnitreeCameraSDK.cc:231
+
bool updateFirmware(std::string fileName)
update camera's firmware
Definition: UnitreeCameraSDK.cc:309
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/annotated.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/annotated.html
new file mode 100644
index 0000000..c9e7703
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/annotated.html
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: Class List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/bc_s.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/bc_s.png
new file mode 100644
index 0000000..224b29a
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/bc_s.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/bdwn.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/bdwn.png
new file mode 100644
index 0000000..940a0b9
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/bdwn.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/camera__api_8h_source.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/camera__api_8h_source.html
new file mode 100644
index 0000000..24e514a
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/camera__api_8h_source.html
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: src/camera_api.h Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
6 typedef unsigned char BYTE;
7 typedef unsigned short WORD;
8 typedef unsigned long DWORD;
9 typedef unsigned long ULONG;
19 char deviceID[MAX_PATH];
20 char device[MAX_PATH];
24 char location[MAX_PATH];
31 char iManufacturer[MAX_PATH];
32 char iProduct[MAX_PATH];
33 char iSerialNumber[MAX_PATH];
37 extern "C" int32_t Camera_Count(
int *Number);
52 typedef int32_t(*H_Fun_HPb) (
struct _Device_Point_ *, int32_t, BYTE*);
56 typedef int32_t(*H_Fun_WPb) (
struct _Device_Point_ *, WORD, BYTE*);
62 typedef int32_t(*H_Fun_BWPw) (
struct _Device_Point_ *, BYTE, WORD, WORD*);
64 typedef int32_t(*H_Fun_BWW) (
struct _Device_Point_ *, BYTE, WORD, WORD);
76 typedef int32_t(*Input_GPIO_Get) (
struct _Device_Point_ *, ULONG, BYTE*);
78 typedef int32_t(*Output_GPIO_Set) (
struct _Device_Point_ *, ULONG, BYTE);
80 typedef int32_t(*Input_GPIO_Init) (
struct _Device_Point_ *, ULONG);
82 typedef int32_t(*Output_GPIO_Init) (
struct _Device_Point_ *, ULONG);
91 typedef void * (*pCUSTOMERFun) (
struct _Device_Point_ *, WORD, BYTE*, BYTE);
129 H_Fun_WB Set_ISP_Reg;
131 H_Fun_WPb Get_ISP_Reg;
134 H_Fun_BWW Set_Sensor_Reg;
136 H_Fun_BWPw Get_Sensor_Reg;
157 Input_GPIO_Get Input_Gpio_Get;
179 Output_GPIO_Set Output_Gpio_set;
198 Input_GPIO_Init Input_Gpio_init;
217 Output_GPIO_Init Output_Gpio_init;
233 H_Fun_CinfoStr pInfoStr;
244 pCUSTOMERFun pCustomer;
252 Camera_Device_Point_Init(
int tar_device_index);
256 Camera_Device_Point_UnInit(pDevice_Point *PPDevice);
260 Camera_Get_information_Api(pDevice_Point pMes,
info_camera_os * pinfo);
264 Camera_Flash_R_Api(pDevice_Point pMes,
int piece_Index, BYTE*buff);
268 Camera_Flash_W_Api(pDevice_Point pMes,
int piece_Index, BYTE*buff);
276 Camera_Customer_Api(pDevice_Point pMes, uint16_t
id , uint8_t*pdata, uint8_t len);
280 Camera_Updata(pDevice_Point pMes, uint8_t *FW, uint32_t SIZE,
float *pf_Schedule);
281 #endif // CAMERA_API_H Definition: camera_api.h:13
+
Definition: camera_api.h:96
+
Definition: camera_api.h:28
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_stereo_camera-members.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_stereo_camera-members.html
new file mode 100644
index 0000000..c12fc55
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_stereo_camera-members.html
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for StereoCamera , including all inherited members.
+
+ getCalibParams (std::vector< cv::Mat > ¶msArray, bool flag=false)StereoCamera virtual
+ getDepthFrame (cv::Mat &depth, bool color, std::chrono::microseconds &timeStamp)StereoCamera virtual
+ getDeviceNode (void) constStereoCamera virtual
+ getLogLevel (void) constStereoCamera virtual
+ getPointCloud (std::vector< cv::Vec3f > &pcl, std::chrono::microseconds &timeStamp) (defined in StereoCamera )StereoCamera virtual
+ getPointCloud (std::vector< PCLType > &pcl, std::chrono::microseconds &timeStamp) (defined in StereoCamera )StereoCamera virtual
+ getPosNumber (void) constStereoCamera virtual
+ getRawFrame (cv::Mat &frame, std::chrono::microseconds &timeStamp)StereoCamera virtual
+ getRawFrameRate (void) constStereoCamera virtual
+ getRawFrameSize (void) constStereoCamera virtual
+ getRectStereoFrame (cv::Mat &left, cv::Mat &right, cv::Mat &feim) (defined in StereoCamera )StereoCamera virtual
+ getRectStereoFrame (cv::Mat &left, cv::Mat &right, cv::Mat &feim, std::chrono::microseconds &timeStamp) (defined in StereoCamera )StereoCamera virtual
+ getSerialNumber (void) constStereoCamera virtual
+ getStereoFrame (cv::Mat &left, cv::Mat &right, std::chrono::microseconds &timeStamp)StereoCamera virtual
+ isOpened (void)StereoCamera virtual
+ loadCalibParams (std::string fileName)StereoCamera virtual
+ loadConfig (std::string fileName)StereoCamera virtual
+ saveCalibParams (std::string fileName="stereo_camera_calibparams.yaml")StereoCamera virtual
+ saveConfig (std::string fileName="stereo_camera_config.yaml")StereoCamera virtual
+ setCalibParams (std::vector< cv::Mat > paramsArray, bool flag=false)StereoCamera virtual
+ setLogLevel (int level)StereoCamera virtual
+ setPosNumber (int posNumber)StereoCamera virtual
+ setRawFrameRate (int frameRate)StereoCamera virtual
+ setRawFrameSize (cv::Size frameSize)StereoCamera virtual
+ setRectFrameSize (cv::Size frameSize)StereoCamera virtual
+ setSerialNumber (int serialNumber)StereoCamera virtual
+ startCapture (bool udpFlag=false, bool shmFlag=false)StereoCamera virtual
+ startStereoCompute (void)StereoCamera virtual
+ StereoCamera (void)StereoCamera
+ StereoCamera (std::string fileName) (defined in StereoCamera )StereoCamera
+ StereoCamera (int deviceNode) (defined in StereoCamera )StereoCamera
+ stopCapture (void)StereoCamera virtual
+ stopStereoCompute (void)StereoCamera virtual
+ ~StereoCamera ()StereoCamera virtual
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_stereo_camera.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_stereo_camera.html
new file mode 100644
index 0000000..0119b0d
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_stereo_camera.html
@@ -0,0 +1,1340 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: StereoCamera Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
this class integrate camera control and stereo vision algorithm
+ More...
+
+
#include <StereoCameraCommon.hpp >
+
+
+
+
+ StereoCamera (void)
+ StereoCamera . More...
+
+
+ StereoCamera (std::string fileName)
+
+
+ StereoCamera (int deviceNode)
+
+virtual ~StereoCamera ()
+ StereoCamera destructor. More...
+
+virtual bool isOpened (void)
+ get stereo camera running status More...
+
+virtual bool setLogLevel (int level)
+ set stereo camera ouput log level More...
+
+virtual bool setPosNumber (int posNumber)
+ set stereo camera position number More...
+
+virtual bool setSerialNumber (int serialNumber)
+ set stereo camera serial number More...
+
+virtual bool setRawFrameRate (int frameRate)
+ set stereo camera FPS (Frames Per Seconds) More...
+
+virtual bool setRawFrameSize (cv::Size frameSize)
+ set stereo camera frame size More...
+
+virtual bool setRectFrameSize (cv::Size frameSize)
+ set rectification image size More...
+
+virtual bool setCalibParams (std::vector< cv::Mat > paramsArray, bool flag=false)
+ set stereo camera calibration parameters More...
+
+virtual int getLogLevel (void) const
+ get log system output level More...
+
+virtual int getDeviceNode (void) const
+ get camera device node More...
+
+virtual int getPosNumber (void) const
+ get stereo camera device node More...
+
+virtual int getSerialNumber (void) const
+ get stereo camera serial number More...
+
+virtual float getRawFrameRate (void) const
+ get stereo camera capture frame rate More...
+
+virtual cv::Size getRawFrameSize (void) const
+ get stereo camera frame size More...
+
+virtual bool getRawFrame (cv::Mat &frame, std::chrono::microseconds &timeStamp)
+ get stereo camera raw frame More...
+
+virtual bool getStereoFrame (cv::Mat &left, cv::Mat &right, std::chrono::microseconds &timeStamp)
+ get stereo camera left and right image More...
+
+virtual bool getDepthFrame (cv::Mat &depth, bool color, std::chrono::microseconds &timeStamp)
+ get stereo camera depth image More...
+
+
+virtual bool getPointCloud (std::vector< cv::Vec3f > &pcl, std::chrono::microseconds &timeStamp)
+
+
+virtual bool getPointCloud (std::vector< PCLType > &pcl, std::chrono::microseconds &timeStamp)
+
+virtual bool getCalibParams (std::vector< cv::Mat > ¶msArray, bool flag=false)
+ get stereo camera calibration paramerters More...
+
+
+virtual bool getRectStereoFrame (cv::Mat &left, cv::Mat &right, cv::Mat &feim)
+
+
+virtual bool getRectStereoFrame (cv::Mat &left, cv::Mat &right, cv::Mat &feim, std::chrono::microseconds &timeStamp)
+
+virtual bool loadConfig (std::string fileName)
+ load stereo camera config parameters More...
+
+virtual bool loadCalibParams (std::string fileName)
+ load stereo camera calibration params More...
+
+virtual bool saveConfig (std::string fileName="stereo_camera_config.yaml")
+ save stereo camera settings to config file More...
+
+virtual bool saveCalibParams (std::string fileName="stereo_camera_calibparams.yaml")
+ save stereo camera calibration parameters to file More...
+
+virtual bool startCapture (bool udpFlag=false, bool shmFlag=false)
+ start stereo camera capture thread More...
+
+virtual bool startStereoCompute (void)
+ start stereo camera computing disparity thread More...
+
+virtual bool stopStereoCompute (void)
+ stop stereo camera computing disparity thread More...
+
+virtual bool stopCapture (void)
+ stop stereo camera capture thread More...
+
+
+
+
this class integrate camera control and stereo vision algorithm
+
this class is the base of UnitreeCameraSDK, it includes many functions, such as camera frame capturing, image rectification, disparity computation, generating point cloud and etc.
+
+
+
◆ StereoCamera()
+
+
+
+
+
+ StereoCamera::StereoCamera
+ (
+ void
+ )
+
+
+
+
+
+
StereoCamera .
+
StereoCamera constructor overload.
+
default constructor
Parameters
+
+
+
+
Returns None
+
Note initialize StereoCamera object by default settings
+
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
+
use camera config file to init stereo camera
Parameters
+
+ [in] fileName camera config file, include file path, for example: ~/test/stereoConfig.yaml
+ [out] None
+
+
+
+
Returns None
+
Note initialize StereoCamera object by settings from configure file
+
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
+
use camera device node number to init stereo camera
Parameters
+
+ [in] deviceNode camera device node, for example: /dev/video0, camera device node: 0
+ [out] None
+
+
+
+
Returns None
+
Note initialize StereoCamera object by device node number
+
+
+
+
+
◆ ~StereoCamera()
+
+
+
+
+
+
+
+
+ StereoCamera::~StereoCamera
+ (
+ )
+
+
+
+
+
+virtual
+
+
+
+
+
StereoCamera destructor.
+
release all stereo camera resource
Parameters
+
+
+
+
Returns None
+
Note automatically called when StereoCamera object released
+
+
+
+
+
+
◆ getCalibParams()
+
+
+
+
+
+
+
+
+ bool StereoCamera::getCalibParams
+ (
+ std::vector< cv::Mat > &
+ paramsArray ,
+
+
+
+
+ bool
+ flag = false
+
+
+
+ )
+
+
+
+
+
+virtual
+
+
+
+
+
get stereo camera calibration paramerters
+
calibration paramerters include: camera intrinsic matrix, camera distortion coefficient, xi(mei model), rotation matrix, translation vector, rectification image intrinsic matrix
Parameters
+
+ [in] flag default false, false: get left camera parameters, true: get right camera parameters.
+ [out] paramsArray arrange Array element as follows: intrinsic,distortion,xi,rotation,translation,kfe
+
+
+
+
Returns true or false, if assignment successfully return true, otherwise return false
+
Attention This funtion must be called after startCapture()
+
Note cam.startCapture();
std::vector<cv::Mat> paramsArray;
if (cam.getCalibParams(paramsArray)){
}
+
+
+
+
+
◆ getDepthFrame()
+
+
+
+
+
+
+
+
+ bool StereoCamera::getDepthFrame
+ (
+ cv::Mat &
+ depth ,
+
+
+
+
+ bool
+ color ,
+
+
+
+
+ std::chrono::microseconds &
+ timeStamp
+
+
+
+ )
+
+
+
+
+
+virtual
+
+
+
+
+
get stereo camera depth image
+
Parameters
+
+ [in] color true: depth is color image, false:depth is gray image
+ [out] depth left image
+ [out] timeStamp frame time stamp
+
+
+
+
Returns true or false, if depth image is not empty, return true, otherwise return false.
+
Attention This funtion must be called after startCapture() .
+
Note cam.startCapture();
cam.startStereoCompute();
cv::Mat depth;
std::chrono::microseconds timeStamp;
if (cam.getPointCloud(depth, true , timeStamp)){
}
+
+
+
+
+
◆ getDeviceNode()
+
+
+
+
+
+
+
+
+ int StereoCamera::getDeviceNode
+ (
+ void
+ )
+ const
+
+
+
+
+virtual
+
+
+
+
+
get camera device node
+
Parameters
+
+
+
+
Returns device node number
+
Note for example: /dev/video2, device node number is 2, the return value of function is 2. int nodeNumber = cam.getDeviceNode();
+
+
+
+
+
◆ getLogLevel()
+
+
+
+
+
+
+
+
+ int StereoCamera::getLogLevel
+ (
+ void
+ )
+ const
+
+
+
+
+virtual
+
+
+
+
+
get log system output level
+
Parameters
+
+
+
+
Returns log level
+
Note 1: output runtime information, 2: output runtime infomation and debug information int LogLevel = cam.getLogLevel();
+
+
+
+
+
◆ getPosNumber()
+
+
+
+
+
+
+
+
+ int StereoCamera::getPosNumber
+ (
+ void
+ )
+ const
+
+
+
+
+virtual
+
+
+
+
+
get stereo camera device node
+
Parameters
+
+
+
+
Returns positon number
+
Note face NO.1, chin NO.2, left NO.3, right NO.4, down NO.5 int posNum = cam.getPosNumber();
+
+
+
+
+
◆ getRawFrame()
+
+
+
+
+
+
+
+
+ bool StereoCamera::getRawFrame
+ (
+ cv::Mat &
+ frame ,
+
+
+
+
+ std::chrono::microseconds &
+ timeStamp
+
+
+
+ )
+
+
+
+
+
+virtual
+
+
+
+
+
get stereo camera raw frame
+
Parameters
+
+ [in] None
+ [out] frame raw frame, include left and right image
+ [out] timeStamp raw frame time stamp
+
+
+
+
Returns true or false, if frame is not empty, return true, otherwise return false.
+
Note cv::Mat frame;
std::chrono::microseconds timeStamp
cam.getRawFrame(frame, timeStamp);
+
+
+
+
+
◆ getRawFrameRate()
+
+
+
+
+
+
+
+
+ float StereoCamera::getRawFrameRate
+ (
+ void
+ )
+ const
+
+
+
+
+virtual
+
+
+
+
+
get stereo camera capture frame rate
+
Parameters
+
+
+
+
Returns current stereo camera fps.
+
+
+
+
+
◆ getRawFrameSize()
+
+
+
+
+
+
+
+
+ cv::Size StereoCamera::getRawFrameSize
+ (
+ void
+ )
+ const
+
+
+
+
+virtual
+
+
+
+
+
get stereo camera frame size
+
Parameters
+
+
+
+
Returns frame size. cv::Size fSize = cam.getRawFrameSize();
+
+
+
+
+
◆ getSerialNumber()
+
+
+
+
+
+
+
+
+ int StereoCamera::getSerialNumber
+ (
+ void
+ )
+ const
+
+
+
+
+virtual
+
+
+
+
+
get stereo camera serial number
+
this number is same as robot serial number
Parameters
+
+
+
+
Returns robot serial number
+
Note int seiralNumber = cam.getSerialNumber();
+
+
+
+
+
◆ getStereoFrame()
+
+
+
+
+
+
+
+
+ bool StereoCamera::getStereoFrame
+ (
+ cv::Mat &
+ left ,
+
+
+
+
+ cv::Mat &
+ right ,
+
+
+
+
+ std::chrono::microseconds &
+ timeStamp
+
+
+
+ )
+
+
+
+
+
+virtual
+
+
+
+
+
get stereo camera left and right image
+
Parameters
+
+ [in] None
+ [out] left left image
+ [out] right right image
+ [out] timeStamp frame time stamp
+
+
+
+
Returns true or false, if left and right images are not empty, return true, otherwise return false.
+
Attention This funtion must be called after startCapture() .
+
Note cam.startCapture();
cv::Mat left, right;
std::chrono::microseconds timeStamp;
if (cam.getRawFrame(left,right, timeStamp)){
}
+
+
+
+
+
◆ isOpened()
+
+
+
+
+
+
+
+
+ bool StereoCamera::isOpened
+ (
+ void
+ )
+
+
+
+
+
+virtual
+
+
+
+
+
get stereo camera running status
+
detect camera is opened or closed
Parameters
+
+
+
+
Returns true or false, if camera is opened return true, otherwise return false
+
Note tell camera running status, it should be called after StereoCamera object initialization printf("Camera is opened!" );
+
+
+
+
+
◆ loadCalibParams()
+
+
+
+
+
+
+
+
+ bool StereoCamera::loadCalibParams
+ (
+ std::string
+ fileName )
+
+
+
+
+
+virtual
+
+
+
+
+
load stereo camera calibration params
+
calibration paramerters include: camera intrinsic matrix, camera distortion coefficient, xi(mei model), rotation matrix, translation vector, rectification image intrinsic matrix, etc.
Parameters
+
+ [in] fileName calibration file name: include file path, for example: "path_to/calib.yaml"
+ [out] None
+
+
+
+
Returns true or false, if load file successfully return true, otherwise return false
+
Attention This funtion must be called before startCapture() and after loadConfig("xxx");
+
Note
+
+
+
+
+
◆ loadConfig()
+
+
+
+
+
+
+
+
+ bool StereoCamera::loadConfig
+ (
+ std::string
+ fileName )
+
+
+
+
+
+virtual
+
+
+
+
+
load stereo camera config parameters
+
parameters include: LogLevel,Threshold,Algorithm,IpLastSegment, DeviceNode,FrameSize,RectifyFrameSize,FrameRate, etc.
Parameters
+
+ [in] fileName config name: include config path, for example: "path_to/config.yaml"
+ [out] None
+
+
+
+
Returns true or false, if load config file successfully return true, otherwise return false
+
Attention This funtion must be called before startCapture() and after init the camera object.
+
Note
+
+
+
+
+
◆ saveCalibParams()
+
+
+
+
+
+
+
+
+ bool StereoCamera::saveCalibParams
+ (
+ std::string
+ fileName = "stereo_camera_calibparams.yaml"
)
+
+
+
+
+
+virtual
+
+
+
+
+
save stereo camera calibration parameters to file
+
Parameters
+
+ [in] fileName default name: stereo_camera_calibparams.yaml, output file: include file path, for example: "path_to/calib.yaml"
+ [out] None
+
+
+
+
Returns true or false, if save file successfully return true, otherwise return false
+
+
+
+
+
◆ saveConfig()
+
+
+
+
+
+
+
+
+ bool StereoCamera::saveConfig
+ (
+ std::string
+ fileName = "stereo_camera_config.yaml"
)
+
+
+
+
+
+virtual
+
+
+
+
+
save stereo camera settings to config file
+
Parameters
+
+ [in] fileName default name: stereo_camera_config.yaml, output config file: include file path, for example: "path_to/config.yaml"
+ [out] None
+
+
+
+
Returns true or false, if save file successfully return true, otherwise return false
+
+
+
+
+
◆ setCalibParams()
+
+
+
+
+
+
+
+
+ bool StereoCamera::setCalibParams
+ (
+ std::vector< cv::Mat >
+ paramsArray ,
+
+
+
+
+ bool
+ flag = false
+
+
+
+ )
+
+
+
+
+
+virtual
+
+
+
+
+
set stereo camera calibration parameters
+
calibration paramerters include: camera intrinsic matrix, camera distortion coefficient, xi(mei model), rotation matrix, translation vector, rectification image intrinsic matrix
Parameters
+
+ [in] paramsArray arrange Array element as follows: intrinsic,distortion,xi,rotation,translation,kfe
+ [in] flag false: set left camera params, true: right camera params
+ [out] None
+
+
+
+
Returns true or false, if assignment successfully return true, otherwise return false
+
Attention the order of parameters should be correct
+
Note std::vector<cv::Mat> leftParamsArray;
+
+
+
+
+
◆ setLogLevel()
+
+
+
+
+
+
+
+
+ bool StereoCamera::setLogLevel
+ (
+ int
+ level )
+
+
+
+
+
+virtual
+
+
+
+
+
set stereo camera ouput log level
+
log level means that different kind of information will be output
Parameters
+
+ [in] level
+ [out] None
+
+
+
+
Returns true or false, if assignment successfully return true, otherwise return false
+
Note output information starts with "StereoCamera", it should be called after StereoCamera object initialization
+
+
+
+
+
◆ setPosNumber()
+
+
+
+
+
+
+
+
+ bool StereoCamera::setPosNumber
+ (
+ int
+ posNumber )
+
+
+
+
+
+virtual
+
+
+
+
+
set stereo camera position number
+
position number means that the number of camera location in robot body
Parameters
+
+ [in] posNumber
+ [out] None
+
+
+
+
Returns true or false, if assignment successfully return true, otherwise return false
+
Note face NO.1, chin NO.2, left NO.3, right NO.4, down NO.5
+
+
+
+
+
◆ setRawFrameRate()
+
+
+
+
+
+
+
+
+ bool StereoCamera::setRawFrameRate
+ (
+ int
+ frameRate )
+
+
+
+
+
+virtual
+
+
+
+
+
set stereo camera FPS (Frames Per Seconds)
+
for 1856X800 FPS:30, for 928x400 FPS:30 or 60
Parameters
+
+ [in] frameRate
+ [out] None
+
+
+
+
Returns true or false, if assignment successfully return true, otherwise return false
+
Note
+
+
+
+
+
◆ setRawFrameSize()
+
+
+
+
+
+
+
+
+ bool StereoCamera::setRawFrameSize
+ (
+ cv::Size
+ frameSize )
+
+
+
+
+
+virtual
+
+
+
+
+
set stereo camera frame size
+
There are two choise: 1856X800,928x400.
Parameters
+
+ [in] frameSize
+ [out] None
+
+
+
+
Returns true or false, if assignment successfully return true, otherwise return false
+
Attention if do not assign frameSize, default size is 1856x800
+
Note
+
+
+
+
+
◆ setRectFrameSize()
+
+
+
+
+
+
+
+
+ bool StereoCamera::setRectFrameSize
+ (
+ cv::Size
+ frameSize )
+
+
+
+
+
+virtual
+
+
+
+
+
set rectification image size
+
this size should keep ratio as camera raw image size, for example: raw single frame size: 928x800 rectification image size: 464x400 or 232x200
Parameters
+
+ [in] frameSize
+ [out] None
+
+
+
+
Returns true or false, if assignment successfully return true, otherwise return false
+
Attention rectification image size must be smaller than camera raw single image size
+
Note
+
+
+
+
+
◆ setSerialNumber()
+
+
+
+
+
+
+
+
+ bool StereoCamera::setSerialNumber
+ (
+ int
+ serialNumber )
+
+
+
+
+
+virtual
+
+
+
+
+
set stereo camera serial number
+
serial number same as robot serial number
Parameters
+
+ [in] serialNumber
+ [out] None
+
+
+
+
Returns true or false, if assignment successfully return true, otherwise return false
+
Note
+
+
+
+
+
◆ startCapture()
+
+
+
+
+
+
+
+
+ bool StereoCamera::startCapture
+ (
+ bool
+ udpFlag = false
,
+
+
+
+
+ bool
+ shmFlag = false
+
+
+
+ )
+
+
+
+
+
+virtual
+
+
+
+
+
start stereo camera capture thread
+
Parameters
+
+ [in] udpFlag default false, true: enable using H264 encode camera frame and send it by gstream udp command
+ [in] shmFlag default false, true: enable using share memory to share camera frame
+ [out] None
+
+
+
+
Returns true or false, if create capture thread successfully return true, otherwise return false
+
Note gstreamer send command: "appsrc ! videoconvert ! omxh264enc ! video/x-h264, stream-format=byte-stream ! rtph264pay ! udpsink host=192.168.123.SEG port=hostPort". SEG is last segment of your recieve board IP, its range from 2~254,for example: 13, host=192.168.123.13. hostPort is defined by the result of adding camera position number and 9000, for example: camera positon number is 5, port=9005. share memory key number is defined by the result of adding camera position number and 9000. This function must be called after camera config or settings finished.
+
+
+
+
+
◆ startStereoCompute()
+
+
+
+
+
+
+
+
+ bool StereoCamera::startStereoCompute
+ (
+ void
+ )
+
+
+
+
+
+virtual
+
+
+
+
+
start stereo camera computing disparity thread
+
Parameters
+
+
+
+
Returns true or false, if create thread successfully return true, otherwise return false
+
Attention This function must be called after startCapture() ;
+
Note
+
+
+
+
+
◆ stopCapture()
+
+
+
+
+
+
+
+
+ bool StereoCamera::stopCapture
+ (
+ void
+ )
+
+
+
+
+
+virtual
+
+
+
+
+
stop stereo camera capture thread
+
Parameters
+
+
+
+
Returns true or false, if stop thread successfully return true, otherwise return false
+
Attention This function must be called after startCapture() .
+
Note
+
+
+
+
+
◆ stopStereoCompute()
+
+
+
+
+
+
+
+
+ bool StereoCamera::stopStereoCompute
+ (
+ void
+ )
+
+
+
+
+
+virtual
+
+
+
+
+
stop stereo camera computing disparity thread
+
Parameters
+
+
+
+
Returns true or false, if stop thread successfully return true, otherwise return false
+
Attention This function must be called after startStereoCompute()
+
Note
+
+
+
+
The documentation for this class was generated from the following files:
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_stereo_camera__inherit__graph.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_stereo_camera__inherit__graph.map
new file mode 100644
index 0000000..1416261
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_stereo_camera__inherit__graph.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_stereo_camera__inherit__graph.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_stereo_camera__inherit__graph.md5
new file mode 100644
index 0000000..39733df
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_stereo_camera__inherit__graph.md5
@@ -0,0 +1 @@
+4ecdfe0d822fc62f64e03af6e9cfede9
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_stereo_camera__inherit__graph.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_stereo_camera__inherit__graph.png
new file mode 100644
index 0000000..270403c
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_stereo_camera__inherit__graph.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_system_log-members.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_system_log-members.html
new file mode 100644
index 0000000..98ae082
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_system_log-members.html
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for SystemLog , including all inherited members.
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_system_log.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_system_log.html
new file mode 100644
index 0000000..5f7f835
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_system_log.html
@@ -0,0 +1,483 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: SystemLog Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SystemLog (std::string logName)
+ SystemLog constructor. More...
+
+void setLogLevel (int level)
+ set system ouput log level More...
+
+void runTimeError (const char *format,...)
+ output running error infomation, color: red More...
+
+void runTimeInfo (const char *format,...)
+ output running infomation, color: green More...
+
+void runTimeWarning (const char *format,...)
+ output running warning infomation, color: yellow More...
+
+void debugTimeWarning (const char *format,...)
+ output debug warning infomation, color: cyan More...
+
+void debugTimeInfo (const char *format,...)
+ output debug infomation, color: white More...
+
+void debugTimeError (const char *format,...)
+ output debug error infomation, color: magenta More...
+
+void saveLog (void)
+ save system log to a file, default file name: Running.txt More...
+
+void saveLogToFile (std::string fileName)
+ save system log to a designated file More...
+
+
+
+
+
◆ SystemLog()
+
+
+
+
+
+ SystemLog::SystemLog
+ (
+ std::string
+ logName )
+
+
+
+
+
+
SystemLog constructor.
+
Parameters
+
+ [in] logName the name of special system
+ [out] None
+
+
+
+
Returns None
+
Note
+
Attention output information starts with "logName"
+
+
+
+
+
+
◆ debugTimeError()
+
+
+
+
+
+ SystemLog::debugTimeError
+ (
+ const char *
+ format ,
+
+
+
+
+
+ ...
+
+
+
+ )
+
+
+
+
+
+
output debug error infomation, color: magenta
+
output format [logName][DEBUG_ERROR] info
Parameters
+
+ [in] format
+ [in] ...
+ [out] None
+
+
+
+
Returns None
+
Note
+
Attention use it like printf()
+
+
+
+
+
◆ debugTimeInfo()
+
+
+
+
+
+ SystemLog::debugTimeInfo
+ (
+ const char *
+ format ,
+
+
+
+
+
+ ...
+
+
+
+ )
+
+
+
+
+
+
output debug infomation, color: white
+
output format [logName][DEBUG_INFO] info
Parameters
+
+ [in] format
+ [in] ...
+ [out] None
+
+
+
+
Returns None
+
Note
+
Attention use it like printf()
+
+
+
+
+
◆ debugTimeWarning()
+
+
+
+
+
+ SystemLog::debugTimeWarning
+ (
+ const char *
+ format ,
+
+
+
+
+
+ ...
+
+
+
+ )
+
+
+
+
+
+
output debug warning infomation, color: cyan
+
output format [logName][DEBUG_WARNING] info
Parameters
+
+ [in] format
+ [in] ...
+ [out] None
+
+
+
+
Returns None
+
Note
+
Attention use it like printf()
+
+
+
+
+
◆ runTimeError()
+
+
+
+
+
+ SystemLog::runTimeError
+ (
+ const char *
+ format ,
+
+
+
+
+
+ ...
+
+
+
+ )
+
+
+
+
+
+
output running error infomation, color: red
+
output format [logName][ERROR] info
Parameters
+
+ [in] format
+ [in] ...
+ [out] None
+
+
+
+
Returns None
+
Note
+
Attention use it like printf()
+
+
+
+
+
◆ runTimeInfo()
+
+
+
+
+
+ SystemLog::runTimeInfo
+ (
+ const char *
+ format ,
+
+
+
+
+
+ ...
+
+
+
+ )
+
+
+
+
+
+
output running infomation, color: green
+
output format [logName][INFO] info
Parameters
+
+ [in] format
+ [in] ...
+ [out] None
+
+
+
+
Returns None
+
Note
+
Attention use it like printf()
+
+
+
+
+
◆ runTimeWarning()
+
+
+
+
+
+ SystemLog::runTimeWarning
+ (
+ const char *
+ format ,
+
+
+
+
+
+ ...
+
+
+
+ )
+
+
+
+
+
+
output running warning infomation, color: yellow
+
output format [logName][WARNING] info
Parameters
+
+ [in] format
+ [in] ...
+ [out] None
+
+
+
+
Returns None
+
Note
+
Attention use it like printf()
+
+
+
+
+
◆ saveLog()
+
+
+
+
+
+ SystemLog::saveLog
+ (
+ void
+ )
+
+
+
+
+
+
save system log to a file, default file name: Running.txt
+
Parameters
+
+
+
+
Returns None
+
Note
+
Attention not implement at this version
+
+
+
+
+
◆ saveLogToFile()
+
+
+
+
+
+ SystemLog::saveLogToFile
+ (
+ std::string
+ fileName )
+
+
+
+
+
+
save system log to a designated file
+
Parameters
+
+ [in] fileName
+ [out] None
+
+
+
+
Returns None
+
Note
+
Attention not implement at this version
+
+
+
+
+
◆ setLogLevel()
+
+
+
+
+
+ SystemLog::setLogLevel
+ (
+ int
+ level )
+
+
+
+
+
+
set system ouput log level
+
log level means that different kind of information will be output
Parameters
+
+ [in] level 1 running information output, 2 running and debug infomation output
+ [out] None
+
+
+
+
Returns None
+
Note
+
Attention
+
+
+
+
The documentation for this class was generated from the following file:
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_unitree_camera-members.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_unitree_camera-members.html
new file mode 100644
index 0000000..2f248a0
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_unitree_camera-members.html
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for UnitreeCamera , including all inherited members.
+
+ checkFirmwareVersion (std::string &version)UnitreeCamera
+ getCalibParams (std::vector< cv::Mat > ¶msArray, bool flag=false)StereoCamera virtual
+ getDepthFrame (cv::Mat &depth, bool color, std::chrono::microseconds &timeStamp)StereoCamera virtual
+ getDeviceNode (void) constStereoCamera virtual
+ getLogLevel (void) constStereoCamera virtual
+ getPointCloud (std::vector< cv::Vec3f > &pcl, std::chrono::microseconds &timeStamp) (defined in StereoCamera )StereoCamera virtual
+ getPointCloud (std::vector< PCLType > &pcl, std::chrono::microseconds &timeStamp) (defined in StereoCamera )StereoCamera virtual
+ getPosNumber (void) constStereoCamera virtual
+ getRawFrame (cv::Mat &frame, std::chrono::microseconds &timeStamp)StereoCamera virtual
+ getRawFrameRate (void) constStereoCamera virtual
+ getRawFrameSize (void) constStereoCamera virtual
+ getRectStereoFrame (cv::Mat &left, cv::Mat &right, cv::Mat &feim) (defined in StereoCamera )StereoCamera virtual
+ getRectStereoFrame (cv::Mat &left, cv::Mat &right, cv::Mat &feim, std::chrono::microseconds &timeStamp) (defined in StereoCamera )StereoCamera virtual
+ getSerialNumber (void) constStereoCamera virtual
+ getStereoFrame (cv::Mat &left, cv::Mat &right, std::chrono::microseconds &timeStamp)StereoCamera virtual
+ isOpened (void)StereoCamera virtual
+ loadCalibParams (std::string fileName)StereoCamera virtual
+ loadConfig (std::string fileName)StereoCamera virtual
+ saveCalibParams (std::string fileName="stereo_camera_calibparams.yaml")StereoCamera virtual
+ saveConfig (std::string fileName="stereo_camera_config.yaml")StereoCamera virtual
+ setCalibParams (std::vector< cv::Mat > paramsArray, bool flag=false)StereoCamera virtual
+ setLogLevel (int level)StereoCamera virtual
+ setPosNumber (int posNumber)StereoCamera virtual
+ setRawFrameRate (int frameRate)StereoCamera virtual
+ setRawFrameSize (cv::Size frameSize)StereoCamera virtual
+ setRectFrameSize (cv::Size frameSize)StereoCamera virtual
+ setSerialNumber (int serialNumber)StereoCamera virtual
+ startCapture (bool udpFlag=false, bool shmFlag=false)StereoCamera virtual
+ startStereoCompute (void)StereoCamera virtual
+ StereoCamera (void)StereoCamera
+ StereoCamera (std::string fileName) (defined in StereoCamera )StereoCamera
+ StereoCamera (int deviceNode) (defined in StereoCamera )StereoCamera
+ stopCapture (void)StereoCamera virtual
+ stopStereoCompute (void)StereoCamera virtual
+ UnitreeCamera ()UnitreeCamera
+ UnitreeCamera (std::string fileName) (defined in UnitreeCamera )UnitreeCamera
+ UnitreeCamera (int deviceNode) (defined in UnitreeCamera )UnitreeCamera
+ updateCalibParams2Flash (std::string fileName)UnitreeCamera
+ updateFirmware (std::string fileName)UnitreeCamera
+ ~StereoCamera ()StereoCamera virtual
+ ~UnitreeCamera (void)UnitreeCamera
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_unitree_camera.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_unitree_camera.html
new file mode 100644
index 0000000..3ec89c5
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_unitree_camera.html
@@ -0,0 +1,394 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: UnitreeCamera Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCamera ()
+ UnitreeCamera init unitree stereo camera object for default parameters. More...
+
+
+ UnitreeCamera (std::string fileName)
+
+
+ UnitreeCamera (int deviceNode)
+
+ ~UnitreeCamera (void)
+ UnitreeCamera destructor. More...
+
+bool updateCalibParams2Flash (std::string fileName)
+ update camera calibrate parameters More...
+
+bool checkFirmwareVersion (std::string &version)
+ check camera's firmware version More...
+
+bool updateFirmware (std::string fileName)
+ update camera's firmware More...
+
+
+ StereoCamera (void)
+ StereoCamera . More...
+
+
+ StereoCamera (std::string fileName)
+
+
+ StereoCamera (int deviceNode)
+
+virtual ~StereoCamera ()
+ StereoCamera destructor. More...
+
+virtual bool isOpened (void)
+ get stereo camera running status More...
+
+virtual bool setLogLevel (int level)
+ set stereo camera ouput log level More...
+
+virtual bool setPosNumber (int posNumber)
+ set stereo camera position number More...
+
+virtual bool setSerialNumber (int serialNumber)
+ set stereo camera serial number More...
+
+virtual bool setRawFrameRate (int frameRate)
+ set stereo camera FPS (Frames Per Seconds) More...
+
+virtual bool setRawFrameSize (cv::Size frameSize)
+ set stereo camera frame size More...
+
+virtual bool setRectFrameSize (cv::Size frameSize)
+ set rectification image size More...
+
+virtual bool setCalibParams (std::vector< cv::Mat > paramsArray, bool flag=false)
+ set stereo camera calibration parameters More...
+
+virtual int getLogLevel (void) const
+ get log system output level More...
+
+virtual int getDeviceNode (void) const
+ get camera device node More...
+
+virtual int getPosNumber (void) const
+ get stereo camera device node More...
+
+virtual int getSerialNumber (void) const
+ get stereo camera serial number More...
+
+virtual float getRawFrameRate (void) const
+ get stereo camera capture frame rate More...
+
+virtual cv::Size getRawFrameSize (void) const
+ get stereo camera frame size More...
+
+virtual bool getRawFrame (cv::Mat &frame, std::chrono::microseconds &timeStamp)
+ get stereo camera raw frame More...
+
+virtual bool getStereoFrame (cv::Mat &left, cv::Mat &right, std::chrono::microseconds &timeStamp)
+ get stereo camera left and right image More...
+
+virtual bool getDepthFrame (cv::Mat &depth, bool color, std::chrono::microseconds &timeStamp)
+ get stereo camera depth image More...
+
+
+virtual bool getPointCloud (std::vector< cv::Vec3f > &pcl, std::chrono::microseconds &timeStamp)
+
+
+virtual bool getPointCloud (std::vector< PCLType > &pcl, std::chrono::microseconds &timeStamp)
+
+virtual bool getCalibParams (std::vector< cv::Mat > ¶msArray, bool flag=false)
+ get stereo camera calibration paramerters More...
+
+
+virtual bool getRectStereoFrame (cv::Mat &left, cv::Mat &right, cv::Mat &feim)
+
+
+virtual bool getRectStereoFrame (cv::Mat &left, cv::Mat &right, cv::Mat &feim, std::chrono::microseconds &timeStamp)
+
+virtual bool loadConfig (std::string fileName)
+ load stereo camera config parameters More...
+
+virtual bool loadCalibParams (std::string fileName)
+ load stereo camera calibration params More...
+
+virtual bool saveConfig (std::string fileName="stereo_camera_config.yaml")
+ save stereo camera settings to config file More...
+
+virtual bool saveCalibParams (std::string fileName="stereo_camera_calibparams.yaml")
+ save stereo camera calibration parameters to file More...
+
+virtual bool startCapture (bool udpFlag=false, bool shmFlag=false)
+ start stereo camera capture thread More...
+
+virtual bool startStereoCompute (void)
+ start stereo camera computing disparity thread More...
+
+virtual bool stopStereoCompute (void)
+ stop stereo camera computing disparity thread More...
+
+virtual bool stopCapture (void)
+ stop stereo camera capture thread More...
+
+
+
+
+
◆ UnitreeCamera()
+
+
+
+
+
+ UnitreeCamera::UnitreeCamera
+ (
+ void
+ )
+
+
+
+
+
+
UnitreeCamera init unitree stereo camera object for default parameters.
+
UnitreeCamera constructor overload.
+
default constructor
Parameters
+
+
+
+
Returns None
+
Note
+
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
+
use camera config file to init unitree stereo camera
Parameters
+
+ [in] fileName camera config file, include file path, for example: ~/test/stereoConfig.yaml
+ [out] None
+
+
+
+
Returns None
+
Note
+
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
+
use camera device node number to init unitree stereo camera
Parameters
+
+ [in] deviceNode camera device node, for example: /dev/video0, camera device node: 0
+ [out] None
+
+
+
+
Returns None
+
Note
+
+
+
+
+
◆ ~UnitreeCamera()
+
+
+
+
+
+ UnitreeCamera::~UnitreeCamera
+ (
+ void
+ )
+
+
+
+
+
+
UnitreeCamera destructor.
+
release all unitree stereo camera resource
Parameters
+
+
+
+
Returns None
+
Note automatically called when UnitreeCamera object released
+
+
+
+
+
+
◆ checkFirmwareVersion()
+
+
+
+
+
+ bool UnitreeCamera::checkFirmwareVersion
+ (
+ std::string &
+ version )
+
+
+
+
+
+
check camera's firmware version
+
Parameters
+
+ [in] version firmware version
+ [out] None
+
+
+
+
Returns None
+
Note
+
+
+
+
+
◆ updateCalibParams2Flash()
+
+
+
+
+
+ bool UnitreeCamera::updateCalibParams2Flash
+ (
+ std::string
+ fileName )
+
+
+
+
+
+
update camera calibrate parameters
+
Parameters
+
+ [in] fileName calibration parameters file
+ [out] None
+
+
+
+
Returns None
+
Note
+
+
+
+
+
◆ updateFirmware()
+
+
+
+
+
+ bool UnitreeCamera::updateFirmware
+ (
+ std::string
+ fileName )
+
+
+
+
+
+
update camera's firmware
+
Parameters
+
+ [in] fileName firmware file
+ [out] None
+
+
+
+
Returns None
+
Note
+
+
+
+
The documentation for this class was generated from the following files:
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_unitree_camera__coll__graph.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_unitree_camera__coll__graph.map
new file mode 100644
index 0000000..f54cd1e
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_unitree_camera__coll__graph.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_unitree_camera__coll__graph.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_unitree_camera__coll__graph.md5
new file mode 100644
index 0000000..e2ddf8e
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_unitree_camera__coll__graph.md5
@@ -0,0 +1 @@
+1e9041f437823ee1ca80b8a2e5ffa404
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_unitree_camera__coll__graph.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_unitree_camera__coll__graph.png
new file mode 100644
index 0000000..5381334
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_unitree_camera__coll__graph.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_unitree_camera__inherit__graph.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_unitree_camera__inherit__graph.map
new file mode 100644
index 0000000..f54cd1e
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_unitree_camera__inherit__graph.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_unitree_camera__inherit__graph.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_unitree_camera__inherit__graph.md5
new file mode 100644
index 0000000..fc602d9
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_unitree_camera__inherit__graph.md5
@@ -0,0 +1 @@
+020ea7f2a76a453c10d6f0f038d526af
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_unitree_camera__inherit__graph.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_unitree_camera__inherit__graph.png
new file mode 100644
index 0000000..5381334
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/class_unitree_camera__inherit__graph.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classes.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classes.html
new file mode 100644
index 0000000..4c76edb
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classes.html
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: Class Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_event_dispatcher-members.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_event_dispatcher-members.html
new file mode 100644
index 0000000..9920c45
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_event_dispatcher-members.html
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for glwindow::EventDispatcher , including all inherited members.
+
+ EventDispatcher (const std::vector< EventHandler *> &h) (defined in glwindow::EventDispatcher )glwindow::EventDispatcher inline
+ handlers (defined in glwindow::EventDispatcher )glwindow::EventDispatcher
+ on_button_down (GLWindow &win, int btn, int state, int x, int y) (defined in glwindow::EventDispatcher )glwindow::EventDispatcher virtual
+ on_button_up (GLWindow &win, int btn, int state, int x, int y) (defined in glwindow::EventDispatcher )glwindow::EventDispatcher virtual
+ on_close (GLWindow &win) (defined in glwindow::EventDispatcher )glwindow::EventDispatcher virtual
+ on_key_down (GLWindow &win, int key) (defined in glwindow::EventDispatcher )glwindow::EventDispatcher virtual
+ on_key_up (GLWindow &win, int key) (defined in glwindow::EventDispatcher )glwindow::EventDispatcher virtual
+ on_mouse_move (GLWindow &win, int state, int x, int y) (defined in glwindow::EventDispatcher )glwindow::EventDispatcher virtual
+ on_mouse_wheel (GLWindow &win, int state, int x, int y, int dx, int dy) (defined in glwindow::EventDispatcher )glwindow::EventDispatcher virtual
+ on_resize (GLWindow &win, int x, int y, int w, int h) (defined in glwindow::EventDispatcher )glwindow::EventDispatcher virtual
+ on_text (GLWindow &win, const char *text, int len) (defined in glwindow::EventDispatcher )glwindow::EventDispatcher virtual
+ ~EventHandler () (defined in glwindow::EventHandler )glwindow::EventHandler inline virtual
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_event_dispatcher.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_event_dispatcher.html
new file mode 100644
index 0000000..9fed335
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_event_dispatcher.html
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: glwindow::EventDispatcher Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ EventDispatcher (const std::vector< EventHandler *> &h)
+
+
+bool on_key_down (GLWindow &win, int key)
+
+
+bool on_key_up (GLWindow &win, int key)
+
+
+bool on_text (GLWindow &win, const char *text, int len)
+
+
+bool on_button_down (GLWindow &win, int btn, int state, int x, int y)
+
+
+bool on_button_up (GLWindow &win, int btn, int state, int x, int y)
+
+
+bool on_mouse_move (GLWindow &win, int state, int x, int y)
+
+
+bool on_mouse_wheel (GLWindow &win, int state, int x, int y, int dx, int dy)
+
+
+bool on_resize (GLWindow &win, int x, int y, int w, int h)
+
+
+bool on_close (GLWindow &win)
+
+
+
The documentation for this class was generated from the following files:
+examples/glViewer/glwindow.hpp
+examples/glViewer/glwindow_x11.cpp
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_event_dispatcher__coll__graph.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_event_dispatcher__coll__graph.map
new file mode 100644
index 0000000..a0fc881
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_event_dispatcher__coll__graph.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_event_dispatcher__coll__graph.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_event_dispatcher__coll__graph.md5
new file mode 100644
index 0000000..4d141fb
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_event_dispatcher__coll__graph.md5
@@ -0,0 +1 @@
+1913ce6d1b16797d43db04ffb64ea288
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_event_dispatcher__coll__graph.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_event_dispatcher__coll__graph.png
new file mode 100644
index 0000000..723deac
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_event_dispatcher__coll__graph.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_event_dispatcher__inherit__graph.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_event_dispatcher__inherit__graph.map
new file mode 100644
index 0000000..a0fc881
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_event_dispatcher__inherit__graph.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_event_dispatcher__inherit__graph.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_event_dispatcher__inherit__graph.md5
new file mode 100644
index 0000000..68da514
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_event_dispatcher__inherit__graph.md5
@@ -0,0 +1 @@
+56e07467f201c4e49ed45aa8f3b6710c
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_event_dispatcher__inherit__graph.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_event_dispatcher__inherit__graph.png
new file mode 100644
index 0000000..723deac
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_event_dispatcher__inherit__graph.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_g_l_window-members.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_g_l_window-members.html
new file mode 100644
index 0000000..48b40c3
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_g_l_window-members.html
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for glwindow::GLWindow , including all inherited members.
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_g_l_window.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_g_l_window.html
new file mode 100644
index 0000000..b7624bc
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_g_l_window.html
@@ -0,0 +1,197 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: glwindow::GLWindow Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GLWindow (int w=-1, int h=-1, const char *title=0)
+
+
+int width () const
+
+
+int height () const
+
+
+bool visible () const
+
+
+bool alive () const
+
+
+bool make_current ()
+
+
+bool push_context ()
+
+
+void pop_context ()
+
+
+void swap_buffers ()
+
+
+void set_size (int w, int h)
+
+
+void set_position (int x, int y)
+
+
+void set_title (const char *title)
+
+
+void add_handler (EventHandler *handler)
+
+
+bool remove_handler (EventHandler *handler)
+
+
+void handle_events ()
+
+
+void destroy ()
+
+
+void draw_text (double x, double y, const char *text, int xywh[4]=0)
+
+
+
+
+static void handle_all_events ()
+
+
+
+
+static void add_window (GLWindow *win)
+
+
+static bool remove_window (GLWindow *win)
+
+
+
+
+static GLWindow * active_context = 0
+
+
+static std::vector< GLWindow * > all_windows
+
+
+
The documentation for this class was generated from the following files:
+examples/glViewer/glwindow.hpp
+examples/glViewer/glwindow_x11.cpp
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_g_l_window__coll__graph.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_g_l_window__coll__graph.map
new file mode 100644
index 0000000..42c1220
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_g_l_window__coll__graph.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_g_l_window__coll__graph.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_g_l_window__coll__graph.md5
new file mode 100644
index 0000000..ec0bc24
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_g_l_window__coll__graph.md5
@@ -0,0 +1 @@
+ee4ba1d64643994ac13d99eac09cf723
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_g_l_window__coll__graph.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_g_l_window__coll__graph.png
new file mode 100644
index 0000000..a03641e
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_g_l_window__coll__graph.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_scene_window-members.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_scene_window-members.html
new file mode 100644
index 0000000..cc5e1c4
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_scene_window-members.html
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for glwindow::SceneWindow , including all inherited members.
+
+ drag_btn (defined in glwindow::SceneWindow )glwindow::SceneWindow protected
+ dragging (defined in glwindow::SceneWindow )glwindow::SceneWindow protected
+ drawing (defined in glwindow::SceneWindow )glwindow::SceneWindow protected
+ finish_draw () (defined in glwindow::SceneWindow )glwindow::SceneWindow
+ inv_h0 (defined in glwindow::SceneWindow )glwindow::SceneWindow protected
+ inv_w0 (defined in glwindow::SceneWindow )glwindow::SceneWindow protected
+ on_button_down (GLWindow &win, int btn, int state, int x, int y) (defined in glwindow::SceneWindow )glwindow::SceneWindow protected virtual
+ on_button_up (GLWindow &win, int btn, int state, int x, int y) (defined in glwindow::SceneWindow )glwindow::SceneWindow protected virtual
+ on_close (GLWindow &win) (defined in glwindow::EventHandler )glwindow::EventHandler inline virtual
+ on_key_down (GLWindow &win, int key) (defined in glwindow::SceneWindow )glwindow::SceneWindow protected virtual
+ on_key_up (GLWindow &win, int key) (defined in glwindow::EventHandler )glwindow::EventHandler inline virtual
+ on_mouse_move (GLWindow &win, int state, int x, int y) (defined in glwindow::SceneWindow )glwindow::SceneWindow protected virtual
+ on_mouse_wheel (GLWindow &win, int state, int x, int y, int dx, int dy) (defined in glwindow::SceneWindow )glwindow::SceneWindow protected virtual
+ on_resize (GLWindow &win, int x, int y, int w, int h) (defined in glwindow::SceneWindow )glwindow::SceneWindow protected virtual
+ on_text (GLWindow &win, const char *text, int len) (defined in glwindow::EventHandler )glwindow::EventHandler inline virtual
+ SceneWindow (int width, int height, const char *title) (defined in glwindow::SceneWindow )glwindow::SceneWindow
+ start_draw () (defined in glwindow::SceneWindow )glwindow::SceneWindow
+ update () (defined in glwindow::SceneWindow )glwindow::SceneWindow
+ viewpoint (defined in glwindow::SceneWindow )glwindow::SceneWindow
+ vp0 (defined in glwindow::SceneWindow )glwindow::SceneWindow protected
+ win (defined in glwindow::SceneWindow )glwindow::SceneWindow
+ x0 (defined in glwindow::SceneWindow )glwindow::SceneWindow protected
+ y0 (defined in glwindow::SceneWindow )glwindow::SceneWindow protected
+ ~EventHandler () (defined in glwindow::EventHandler )glwindow::EventHandler inline virtual
+ ~SceneWindow () (defined in glwindow::SceneWindow )glwindow::SceneWindow virtual
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_scene_window.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_scene_window.html
new file mode 100644
index 0000000..27fc883
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_scene_window.html
@@ -0,0 +1,197 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: glwindow::SceneWindow Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SceneWindow (int width, int height, const char *title)
+
+
+void update ()
+
+
+bool start_draw ()
+
+
+void finish_draw ()
+
+ Public Member Functions inherited from glwindow::EventHandler
+
+virtual bool on_key_up (GLWindow &win, int key)
+
+
+virtual bool on_text (GLWindow &win, const char *text, int len)
+
+
+virtual bool on_close (GLWindow &win)
+
+
+
+
+bool on_key_down (GLWindow &win, int key)
+
+
+bool on_button_down (GLWindow &win, int btn, int state, int x, int y)
+
+
+bool on_button_up (GLWindow &win, int btn, int state, int x, int y)
+
+
+bool on_mouse_move (GLWindow &win, int state, int x, int y)
+
+
+bool on_mouse_wheel (GLWindow &win, int state, int x, int y, int dx, int dy)
+
+
+bool on_resize (GLWindow &win, int x, int y, int w, int h)
+
+
+
+
+bool dragging
+
+
+int drag_btn
+
+
+int x0
+
+
+int y0
+
+
+double inv_w0
+
+
+double inv_h0
+
+
+Viewpoint vp0
+
+
+bool drawing
+
+
+
The documentation for this class was generated from the following files:
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_scene_window__coll__graph.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_scene_window__coll__graph.map
new file mode 100644
index 0000000..4f278e3
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_scene_window__coll__graph.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_scene_window__coll__graph.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_scene_window__coll__graph.md5
new file mode 100644
index 0000000..7b99c0d
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_scene_window__coll__graph.md5
@@ -0,0 +1 @@
+d59452f13aabc9dd31e2be55c07f9f27
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_scene_window__coll__graph.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_scene_window__coll__graph.png
new file mode 100644
index 0000000..708db5a
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_scene_window__coll__graph.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_scene_window__inherit__graph.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_scene_window__inherit__graph.map
new file mode 100644
index 0000000..46aca0e
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_scene_window__inherit__graph.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_scene_window__inherit__graph.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_scene_window__inherit__graph.md5
new file mode 100644
index 0000000..e6ad224
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_scene_window__inherit__graph.md5
@@ -0,0 +1 @@
+f200bc9171d7649faf50a70a3f42e7a5
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_scene_window__inherit__graph.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_scene_window__inherit__graph.png
new file mode 100644
index 0000000..bc1e199
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classglwindow_1_1_scene_window__inherit__graph.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classinfo__camera___string-members.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classinfo__camera___string-members.html
new file mode 100644
index 0000000..dad9ad3
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classinfo__camera___string-members.html
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for info_camera_String , including all inherited members.
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classinfo__camera___string.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classinfo__camera___string.html
new file mode 100644
index 0000000..a33814b
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classinfo__camera___string.html
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: info_camera_String Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+char iManufacturer [MAX_PATH]
+
+
+char iProduct [MAX_PATH]
+
+
+char iSerialNumber [MAX_PATH]
+
+
+
The documentation for this class was generated from the following file:
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classinfo__camera__os-members.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classinfo__camera__os-members.html
new file mode 100644
index 0000000..ec62253
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classinfo__camera__os-members.html
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for info_camera_os , including all inherited members.
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classinfo__camera__os.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classinfo__camera__os.html
new file mode 100644
index 0000000..1fdecd6
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/classinfo__camera__os.html
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: info_camera_os Class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+WORD vid
+
+
+WORD pid
+
+
+WORD bcdDevice
+
+
+char deviceID [MAX_PATH]
+
+
+char device [MAX_PATH]
+
+
+BYTE icType
+
+
+uint64_t busnum
+
+
+uint64_t devnum
+
+
+char location [MAX_PATH]
+
+
+
The documentation for this class was generated from the following file:
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/closed.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/closed.png
new file mode 100644
index 0000000..98cc2c9
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/closed.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_000005_000007.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_000005_000007.html
new file mode 100644
index 0000000..02f6746
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_000005_000007.html
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: examples -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
examples → include Relation
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_000008_000007.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_000008_000007.html
new file mode 100644
index 0000000..67452a4
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_000008_000007.html
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: src -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_000009_000007.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_000009_000007.html
new file mode 100644
index 0000000..bd2bfe5
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_000009_000007.html
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: tools -> include Relation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
tools → include Relation
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_209c714a154efd8d40a59e92e6a74502.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_209c714a154efd8d40a59e92e6a74502.html
new file mode 100644
index 0000000..d1f7e05
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_209c714a154efd8d40a59e92e6a74502.html
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: build/CMakeFiles/3.14.6/CompilerIdC Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_3a56b08581502e42e7c33d229017cb82.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_3a56b08581502e42e7c33d229017cb82.html
new file mode 100644
index 0000000..3c2b6c5
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_3a56b08581502e42e7c33d229017cb82.html
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: build/CMakeFiles/3.14.6 Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_4eeb864c4eec08c7d6b9d3b0352cfdde.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_4eeb864c4eec08c7d6b9d3b0352cfdde.html
new file mode 100644
index 0000000..9a2fd63
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_4eeb864c4eec08c7d6b9d3b0352cfdde.html
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: tools Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_4eeb864c4eec08c7d6b9d3b0352cfdde_dep.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_4eeb864c4eec08c7d6b9d3b0352cfdde_dep.map
new file mode 100644
index 0000000..8d3c1b1
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_4eeb864c4eec08c7d6b9d3b0352cfdde_dep.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_4eeb864c4eec08c7d6b9d3b0352cfdde_dep.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_4eeb864c4eec08c7d6b9d3b0352cfdde_dep.md5
new file mode 100644
index 0000000..df41d98
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_4eeb864c4eec08c7d6b9d3b0352cfdde_dep.md5
@@ -0,0 +1 @@
+96d321e00c4e5ae1269226ed3cd0f67d
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_4eeb864c4eec08c7d6b9d3b0352cfdde_dep.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_4eeb864c4eec08c7d6b9d3b0352cfdde_dep.png
new file mode 100644
index 0000000..1fb6f5e
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_4eeb864c4eec08c7d6b9d3b0352cfdde_dep.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_4fef79e7177ba769987a8da36c892c5f.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_4fef79e7177ba769987a8da36c892c5f.html
new file mode 100644
index 0000000..03894f6
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_4fef79e7177ba769987a8da36c892c5f.html
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: build Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_63772b626f2709090f0bdca0f40827b4.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_63772b626f2709090f0bdca0f40827b4.html
new file mode 100644
index 0000000..f803c60
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_63772b626f2709090f0bdca0f40827b4.html
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: build/CMakeFiles Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html
new file mode 100644
index 0000000..87e4041
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: src Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+file StereoCameraCommon.cc
+ This file is part of UnitreeCameraSDK, which implement stereo vision algorithm.
+
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map
new file mode 100644
index 0000000..d5f8479
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5
new file mode 100644
index 0000000..2576efc
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5
@@ -0,0 +1 @@
+9c56f5576d0bd1b883527830dcc0dafd
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.png
new file mode 100644
index 0000000..4018e40
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_8a35f475ed9d8a5443c1993b236eb8f6.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_8a35f475ed9d8a5443c1993b236eb8f6.html
new file mode 100644
index 0000000..44cb71f
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_8a35f475ed9d8a5443c1993b236eb8f6.html
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: build/CMakeFiles/3.14.6/CompilerIdCXX Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_8d5e63337d9bc0375b6fa20fd80d83ec.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_8d5e63337d9bc0375b6fa20fd80d83ec.html
new file mode 100644
index 0000000..3bd3853
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_8d5e63337d9bc0375b6fa20fd80d83ec.html
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: examples/glViewer Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_d28a4824dc47e487b107a5db32ef43c4.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_d28a4824dc47e487b107a5db32ef43c4.html
new file mode 100644
index 0000000..4463f26
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_d28a4824dc47e487b107a5db32ef43c4.html
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: examples Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_d28a4824dc47e487b107a5db32ef43c4_dep.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_d28a4824dc47e487b107a5db32ef43c4_dep.map
new file mode 100644
index 0000000..f228784
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_d28a4824dc47e487b107a5db32ef43c4_dep.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_d28a4824dc47e487b107a5db32ef43c4_dep.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_d28a4824dc47e487b107a5db32ef43c4_dep.md5
new file mode 100644
index 0000000..60711e1
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_d28a4824dc47e487b107a5db32ef43c4_dep.md5
@@ -0,0 +1 @@
+da4da957ccd48cc377870afce1819bb4
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_d28a4824dc47e487b107a5db32ef43c4_dep.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_d28a4824dc47e487b107a5db32ef43c4_dep.png
new file mode 100644
index 0000000..84ce407
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_d28a4824dc47e487b107a5db32ef43c4_dep.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html
new file mode 100644
index 0000000..e574c73
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: include Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/doc.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/doc.png
new file mode 100644
index 0000000..17edabf
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/doc.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/doxygen.css b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/doxygen.css
new file mode 100644
index 0000000..4f1ab91
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/doxygen.css
@@ -0,0 +1,1596 @@
+/* The standard CSS for doxygen 1.8.13 */
+
+body, table, div, p, dl {
+ font: 400 14px/22px Roboto,sans-serif;
+}
+
+p.reference, p.definition {
+ font: 400 14px/22px Roboto,sans-serif;
+}
+
+/* @group Heading Levels */
+
+h1.groupheader {
+ font-size: 150%;
+}
+
+.title {
+ font: 400 14px/28px Roboto,sans-serif;
+ font-size: 150%;
+ font-weight: bold;
+ margin: 10px 2px;
+}
+
+h2.groupheader {
+ border-bottom: 1px solid #879ECB;
+ color: #354C7B;
+ font-size: 150%;
+ font-weight: normal;
+ margin-top: 1.75em;
+ padding-top: 8px;
+ padding-bottom: 4px;
+ width: 100%;
+}
+
+h3.groupheader {
+ font-size: 100%;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ -webkit-transition: text-shadow 0.5s linear;
+ -moz-transition: text-shadow 0.5s linear;
+ -ms-transition: text-shadow 0.5s linear;
+ -o-transition: text-shadow 0.5s linear;
+ transition: text-shadow 0.5s linear;
+ margin-right: 15px;
+}
+
+h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
+ text-shadow: 0 0 15px cyan;
+}
+
+dt {
+ font-weight: bold;
+}
+
+div.multicol {
+ -moz-column-gap: 1em;
+ -webkit-column-gap: 1em;
+ -moz-column-count: 3;
+ -webkit-column-count: 3;
+}
+
+p.startli, p.startdd {
+ margin-top: 2px;
+}
+
+p.starttd {
+ margin-top: 0px;
+}
+
+p.endli {
+ margin-bottom: 0px;
+}
+
+p.enddd {
+ margin-bottom: 4px;
+}
+
+p.endtd {
+ margin-bottom: 2px;
+}
+
+/* @end */
+
+caption {
+ font-weight: bold;
+}
+
+span.legend {
+ font-size: 70%;
+ text-align: center;
+}
+
+h3.version {
+ font-size: 90%;
+ text-align: center;
+}
+
+div.qindex, div.navtab{
+ background-color: #EBEFF6;
+ border: 1px solid #A3B4D7;
+ text-align: center;
+}
+
+div.qindex, div.navpath {
+ width: 100%;
+ line-height: 140%;
+}
+
+div.navtab {
+ margin-right: 15px;
+}
+
+/* @group Link Styling */
+
+a {
+ color: #3D578C;
+ font-weight: normal;
+ text-decoration: none;
+}
+
+.contents a:visited {
+ color: #4665A2;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+a.qindex {
+ font-weight: bold;
+}
+
+a.qindexHL {
+ font-weight: bold;
+ background-color: #9CAFD4;
+ color: #ffffff;
+ border: 1px double #869DCA;
+}
+
+.contents a.qindexHL:visited {
+ color: #ffffff;
+}
+
+a.el {
+ font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code, a.code:visited, a.line, a.line:visited {
+ color: #4665A2;
+}
+
+a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
+ color: #4665A2;
+}
+
+/* @end */
+
+dl.el {
+ margin-left: -1cm;
+}
+
+pre.fragment {
+ border: 1px solid #C4CFE5;
+ background-color: #FBFCFD;
+ padding: 4px 6px;
+ margin: 4px 8px 4px 2px;
+ overflow: auto;
+ word-wrap: break-word;
+ font-size: 9pt;
+ line-height: 125%;
+ font-family: monospace, fixed;
+ font-size: 105%;
+}
+
+div.fragment {
+ padding: 0px;
+ margin: 4px 8px 4px 2px;
+ background-color: #FBFCFD;
+ border: 1px solid #C4CFE5;
+}
+
+div.line {
+ font-family: monospace, fixed;
+ font-size: 13px;
+ min-height: 13px;
+ line-height: 1.0;
+ text-wrap: unrestricted;
+ white-space: -moz-pre-wrap; /* Moz */
+ white-space: -pre-wrap; /* Opera 4-6 */
+ white-space: -o-pre-wrap; /* Opera 7 */
+ white-space: pre-wrap; /* CSS3 */
+ word-wrap: break-word; /* IE 5.5+ */
+ text-indent: -53px;
+ padding-left: 53px;
+ padding-bottom: 0px;
+ margin: 0px;
+ -webkit-transition-property: background-color, box-shadow;
+ -webkit-transition-duration: 0.5s;
+ -moz-transition-property: background-color, box-shadow;
+ -moz-transition-duration: 0.5s;
+ -ms-transition-property: background-color, box-shadow;
+ -ms-transition-duration: 0.5s;
+ -o-transition-property: background-color, box-shadow;
+ -o-transition-duration: 0.5s;
+ transition-property: background-color, box-shadow;
+ transition-duration: 0.5s;
+}
+
+div.line:after {
+ content:"\000A";
+ white-space: pre;
+}
+
+div.line.glow {
+ background-color: cyan;
+ box-shadow: 0 0 10px cyan;
+}
+
+
+span.lineno {
+ padding-right: 4px;
+ text-align: right;
+ border-right: 2px solid #0F0;
+ background-color: #E8E8E8;
+ white-space: pre;
+}
+span.lineno a {
+ background-color: #D8D8D8;
+}
+
+span.lineno a:hover {
+ background-color: #C8C8C8;
+}
+
+.lineno {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+div.ah, span.ah {
+ background-color: black;
+ font-weight: bold;
+ color: #ffffff;
+ margin-bottom: 3px;
+ margin-top: 3px;
+ padding: 0.2em;
+ border: solid thin #333;
+ border-radius: 0.5em;
+ -webkit-border-radius: .5em;
+ -moz-border-radius: .5em;
+ box-shadow: 2px 2px 3px #999;
+ -webkit-box-shadow: 2px 2px 3px #999;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
+ background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%);
+}
+
+div.classindex ul {
+ list-style: none;
+ padding-left: 0;
+}
+
+div.classindex span.ai {
+ display: inline-block;
+}
+
+div.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ font-weight: bold;
+}
+
+div.groupText {
+ margin-left: 16px;
+ font-style: italic;
+}
+
+body {
+ background-color: white;
+ color: black;
+ margin: 0;
+}
+
+div.contents {
+ margin-top: 10px;
+ margin-left: 12px;
+ margin-right: 8px;
+}
+
+td.indexkey {
+ background-color: #EBEFF6;
+ font-weight: bold;
+ border: 1px solid #C4CFE5;
+ margin: 2px 0px 2px 0;
+ padding: 2px 10px;
+ white-space: nowrap;
+ vertical-align: top;
+}
+
+td.indexvalue {
+ background-color: #EBEFF6;
+ border: 1px solid #C4CFE5;
+ padding: 2px 10px;
+ margin: 2px 0px;
+}
+
+tr.memlist {
+ background-color: #EEF1F7;
+}
+
+p.formulaDsp {
+ text-align: center;
+}
+
+img.formulaDsp {
+
+}
+
+img.formulaInl {
+ vertical-align: middle;
+}
+
+div.center {
+ text-align: center;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ padding: 0px;
+}
+
+div.center img {
+ border: 0px;
+}
+
+address.footer {
+ text-align: right;
+ padding-right: 12px;
+}
+
+img.footer {
+ border: 0px;
+ vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+ color: #008000
+}
+
+span.keywordtype {
+ color: #604020
+}
+
+span.keywordflow {
+ color: #e08000
+}
+
+span.comment {
+ color: #800000
+}
+
+span.preprocessor {
+ color: #806020
+}
+
+span.stringliteral {
+ color: #002080
+}
+
+span.charliteral {
+ color: #008080
+}
+
+span.vhdldigit {
+ color: #ff00ff
+}
+
+span.vhdlchar {
+ color: #000000
+}
+
+span.vhdlkeyword {
+ color: #700070
+}
+
+span.vhdllogic {
+ color: #ff0000
+}
+
+blockquote {
+ background-color: #F7F8FB;
+ border-left: 2px solid #9CAFD4;
+ margin: 0 24px 0 4px;
+ padding: 0 12px 0 16px;
+}
+
+/* @end */
+
+/*
+.search {
+ color: #003399;
+ font-weight: bold;
+}
+
+form.search {
+ margin-bottom: 0px;
+ margin-top: 0px;
+}
+
+input.search {
+ font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #e8eef2;
+}
+*/
+
+td.tiny {
+ font-size: 75%;
+}
+
+.dirtab {
+ padding: 4px;
+ border-collapse: collapse;
+ border: 1px solid #A3B4D7;
+}
+
+th.dirtab {
+ background: #EBEFF6;
+ font-weight: bold;
+}
+
+hr {
+ height: 0px;
+ border: none;
+ border-top: 1px solid #4A6AAA;
+}
+
+hr.footer {
+ height: 1px;
+}
+
+/* @group Member Descriptions */
+
+table.memberdecls {
+ border-spacing: 0px;
+ padding: 0px;
+}
+
+.memberdecls td, .fieldtable tr {
+ -webkit-transition-property: background-color, box-shadow;
+ -webkit-transition-duration: 0.5s;
+ -moz-transition-property: background-color, box-shadow;
+ -moz-transition-duration: 0.5s;
+ -ms-transition-property: background-color, box-shadow;
+ -ms-transition-duration: 0.5s;
+ -o-transition-property: background-color, box-shadow;
+ -o-transition-duration: 0.5s;
+ transition-property: background-color, box-shadow;
+ transition-duration: 0.5s;
+}
+
+.memberdecls td.glow, .fieldtable tr.glow {
+ background-color: cyan;
+ box-shadow: 0 0 15px cyan;
+}
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+ background-color: #F9FAFC;
+ border: none;
+ margin: 4px;
+ padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+ padding: 0px 8px 4px 8px;
+ color: #555;
+}
+
+.memSeparator {
+ border-bottom: 1px solid #DEE4F0;
+ line-height: 1px;
+ margin: 0px;
+ padding: 0px;
+}
+
+.memItemLeft, .memTemplItemLeft {
+ white-space: nowrap;
+}
+
+.memItemRight {
+ width: 100%;
+}
+
+.memTemplParams {
+ color: #4665A2;
+ white-space: nowrap;
+ font-size: 80%;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtitle {
+ padding: 8px;
+ border-top: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ margin-bottom: -1px;
+ background-image: url('nav_f.png');
+ background-repeat: repeat-x;
+ background-color: #E2E8F2;
+ line-height: 1.25;
+ font-weight: 300;
+ float:left;
+}
+
+.permalink
+{
+ font-size: 65%;
+ display: inline-block;
+ vertical-align: middle;
+}
+
+.memtemplate {
+ font-size: 80%;
+ color: #4665A2;
+ font-weight: normal;
+ margin-left: 9px;
+}
+
+.memnav {
+ background-color: #EBEFF6;
+ border: 1px solid #A3B4D7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+
+.mempage {
+ width: 100%;
+}
+
+.memitem {
+ padding: 0;
+ margin-bottom: 10px;
+ margin-right: 5px;
+ -webkit-transition: box-shadow 0.5s linear;
+ -moz-transition: box-shadow 0.5s linear;
+ -ms-transition: box-shadow 0.5s linear;
+ -o-transition: box-shadow 0.5s linear;
+ transition: box-shadow 0.5s linear;
+ display: table !important;
+ width: 100%;
+}
+
+.memitem.glow {
+ box-shadow: 0 0 15px cyan;
+}
+
+.memname {
+ font-weight: 400;
+ margin-left: 6px;
+}
+
+.memname td {
+ vertical-align: bottom;
+}
+
+.memproto, dl.reflist dt {
+ border-top: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ padding: 6px 0px 6px 0px;
+ color: #253555;
+ font-weight: bold;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ background-color: #DFE5F1;
+ /* opera specific markup */
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ border-top-right-radius: 4px;
+ /* firefox specific markup */
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ -moz-border-radius-topright: 4px;
+ /* webkit specific markup */
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ -webkit-border-top-right-radius: 4px;
+
+}
+
+.overload {
+ font-family: "courier new",courier,monospace;
+ font-size: 65%;
+}
+
+.memdoc, dl.reflist dd {
+ border-bottom: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ padding: 6px 10px 2px 10px;
+ background-color: #FBFCFD;
+ border-top-width: 0;
+ background-image:url('nav_g.png');
+ background-repeat:repeat-x;
+ background-color: #FFFFFF;
+ /* opera specific markup */
+ border-bottom-left-radius: 4px;
+ border-bottom-right-radius: 4px;
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ /* firefox specific markup */
+ -moz-border-radius-bottomleft: 4px;
+ -moz-border-radius-bottomright: 4px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ /* webkit specific markup */
+ -webkit-border-bottom-left-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+dl.reflist dt {
+ padding: 5px;
+}
+
+dl.reflist dd {
+ margin: 0px 0px 10px 0px;
+ padding: 5px;
+}
+
+.paramkey {
+ text-align: right;
+}
+
+.paramtype {
+ white-space: nowrap;
+}
+
+.paramname {
+ color: #602020;
+ white-space: nowrap;
+}
+.paramname em {
+ font-style: normal;
+}
+.paramname code {
+ line-height: 14px;
+}
+
+.params, .retval, .exception, .tparams {
+ margin-left: 0px;
+ padding-left: 0px;
+}
+
+.params .paramname, .retval .paramname {
+ font-weight: bold;
+ vertical-align: top;
+}
+
+.params .paramtype {
+ font-style: italic;
+ vertical-align: top;
+}
+
+.params .paramdir {
+ font-family: "courier new",courier,monospace;
+ vertical-align: top;
+}
+
+table.mlabels {
+ border-spacing: 0px;
+}
+
+td.mlabels-left {
+ width: 100%;
+ padding: 0px;
+}
+
+td.mlabels-right {
+ vertical-align: bottom;
+ padding: 0px;
+ white-space: nowrap;
+}
+
+span.mlabels {
+ margin-left: 8px;
+}
+
+span.mlabel {
+ background-color: #728DC1;
+ border-top:1px solid #5373B4;
+ border-left:1px solid #5373B4;
+ border-right:1px solid #C4CFE5;
+ border-bottom:1px solid #C4CFE5;
+ text-shadow: none;
+ color: white;
+ margin-right: 4px;
+ padding: 2px 3px;
+ border-radius: 3px;
+ font-size: 7pt;
+ white-space: nowrap;
+ vertical-align: middle;
+}
+
+
+
+/* @end */
+
+/* these are for tree view inside a (index) page */
+
+div.directory {
+ margin: 10px 0px;
+ border-top: 1px solid #9CAFD4;
+ border-bottom: 1px solid #9CAFD4;
+ width: 100%;
+}
+
+.directory table {
+ border-collapse:collapse;
+}
+
+.directory td {
+ margin: 0px;
+ padding: 0px;
+ vertical-align: top;
+}
+
+.directory td.entry {
+ white-space: nowrap;
+ padding-right: 6px;
+ padding-top: 3px;
+}
+
+.directory td.entry a {
+ outline:none;
+}
+
+.directory td.entry a img {
+ border: none;
+}
+
+.directory td.desc {
+ width: 100%;
+ padding-left: 6px;
+ padding-right: 6px;
+ padding-top: 3px;
+ border-left: 1px solid rgba(0,0,0,0.05);
+}
+
+.directory tr.even {
+ padding-left: 6px;
+ background-color: #F7F8FB;
+}
+
+.directory img {
+ vertical-align: -30%;
+}
+
+.directory .levels {
+ white-space: nowrap;
+ width: 100%;
+ text-align: right;
+ font-size: 9pt;
+}
+
+.directory .levels span {
+ cursor: pointer;
+ padding-left: 2px;
+ padding-right: 2px;
+ color: #3D578C;
+}
+
+.arrow {
+ color: #9CAFD4;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ cursor: pointer;
+ font-size: 80%;
+ display: inline-block;
+ width: 16px;
+ height: 22px;
+}
+
+.icon {
+ font-family: Arial, Helvetica;
+ font-weight: bold;
+ font-size: 12px;
+ height: 14px;
+ width: 16px;
+ display: inline-block;
+ background-color: #728DC1;
+ color: white;
+ text-align: center;
+ border-radius: 4px;
+ margin-left: 2px;
+ margin-right: 2px;
+}
+
+.icona {
+ width: 24px;
+ height: 22px;
+ display: inline-block;
+}
+
+.iconfopen {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('folderopen.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+.iconfclosed {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('folderclosed.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+.icondoc {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('doc.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+table.directory {
+ font: 400 14px Roboto,sans-serif;
+}
+
+/* @end */
+
+div.dynheader {
+ margin-top: 8px;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+address {
+ font-style: normal;
+ color: #2A3D61;
+}
+
+table.doxtable caption {
+ caption-side: top;
+}
+
+table.doxtable {
+ border-collapse:collapse;
+ margin-top: 4px;
+ margin-bottom: 4px;
+}
+
+table.doxtable td, table.doxtable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+ background-color: #374F7F;
+ color: #FFFFFF;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+}
+
+table.fieldtable {
+ /*width: 100%;*/
+ margin-bottom: 10px;
+ border: 1px solid #A8B8D9;
+ border-spacing: 0px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+ -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+ box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+}
+
+.fieldtable td, .fieldtable th {
+ padding: 3px 7px 2px;
+}
+
+.fieldtable td.fieldtype, .fieldtable td.fieldname {
+ white-space: nowrap;
+ border-right: 1px solid #A8B8D9;
+ border-bottom: 1px solid #A8B8D9;
+ vertical-align: top;
+}
+
+.fieldtable td.fieldname {
+ padding-top: 3px;
+}
+
+.fieldtable td.fielddoc {
+ border-bottom: 1px solid #A8B8D9;
+ /*width: 100%;*/
+}
+
+.fieldtable td.fielddoc p:first-child {
+ margin-top: 0px;
+}
+
+.fieldtable td.fielddoc p:last-child {
+ margin-bottom: 2px;
+}
+
+.fieldtable tr:last-child td {
+ border-bottom: none;
+}
+
+.fieldtable th {
+ background-image:url('nav_f.png');
+ background-repeat:repeat-x;
+ background-color: #E2E8F2;
+ font-size: 90%;
+ color: #253555;
+ padding-bottom: 4px;
+ padding-top: 5px;
+ text-align:left;
+ font-weight: 400;
+ -moz-border-radius-topleft: 4px;
+ -moz-border-radius-topright: 4px;
+ -webkit-border-top-left-radius: 4px;
+ -webkit-border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+ border-bottom: 1px solid #A8B8D9;
+}
+
+
+.tabsearch {
+ top: 0px;
+ left: 10px;
+ height: 36px;
+ background-image: url('tab_b.png');
+ z-index: 101;
+ overflow: hidden;
+ font-size: 13px;
+}
+
+.navpath ul
+{
+ font-size: 11px;
+ background-image:url('tab_b.png');
+ background-repeat:repeat-x;
+ background-position: 0 -5px;
+ height:30px;
+ line-height:30px;
+ color:#8AA0CC;
+ border:solid 1px #C2CDE4;
+ overflow:hidden;
+ margin:0px;
+ padding:0px;
+}
+
+.navpath li
+{
+ list-style-type:none;
+ float:left;
+ padding-left:10px;
+ padding-right:15px;
+ background-image:url('bc_s.png');
+ background-repeat:no-repeat;
+ background-position:right;
+ color:#364D7C;
+}
+
+.navpath li.navelem a
+{
+ height:32px;
+ display:block;
+ text-decoration: none;
+ outline: none;
+ color: #283A5D;
+ font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ text-decoration: none;
+}
+
+.navpath li.navelem a:hover
+{
+ color:#6884BD;
+}
+
+.navpath li.footer
+{
+ list-style-type:none;
+ float:right;
+ padding-left:10px;
+ padding-right:15px;
+ background-image:none;
+ background-repeat:no-repeat;
+ background-position:right;
+ color:#364D7C;
+ font-size: 8pt;
+}
+
+
+div.summary
+{
+ float: right;
+ font-size: 8pt;
+ padding-right: 5px;
+ width: 50%;
+ text-align: right;
+}
+
+div.summary a
+{
+ white-space: nowrap;
+}
+
+table.classindex
+{
+ margin: 10px;
+ white-space: nowrap;
+ margin-left: 3%;
+ margin-right: 3%;
+ width: 94%;
+ border: 0;
+ border-spacing: 0;
+ padding: 0;
+}
+
+div.ingroups
+{
+ font-size: 8pt;
+ width: 50%;
+ text-align: left;
+}
+
+div.ingroups a
+{
+ white-space: nowrap;
+}
+
+div.header
+{
+ background-image:url('nav_h.png');
+ background-repeat:repeat-x;
+ background-color: #F9FAFC;
+ margin: 0px;
+ border-bottom: 1px solid #C4CFE5;
+}
+
+div.headertitle
+{
+ padding: 5px 5px 5px 10px;
+}
+
+dl
+{
+ padding: 0 0 0 10px;
+}
+
+/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */
+dl.section
+{
+ margin-left: 0px;
+ padding-left: 0px;
+}
+
+dl.note
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #D0C000;
+}
+
+dl.warning, dl.attention
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #FF0000;
+}
+
+dl.pre, dl.post, dl.invariant
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #00D000;
+}
+
+dl.deprecated
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #505050;
+}
+
+dl.todo
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #00C0E0;
+}
+
+dl.test
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #3030E0;
+}
+
+dl.bug
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #C08050;
+}
+
+dl.section dd {
+ margin-bottom: 6px;
+}
+
+
+#projectlogo
+{
+ text-align: center;
+ vertical-align: bottom;
+ border-collapse: separate;
+}
+
+#projectlogo img
+{
+ border: 0px none;
+}
+
+#projectalign
+{
+ vertical-align: middle;
+}
+
+#projectname
+{
+ font: 300% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 2px 0px;
+}
+
+#projectbrief
+{
+ font: 120% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 0px;
+}
+
+#projectnumber
+{
+ font: 50% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 0px;
+}
+
+#titlearea
+{
+ padding: 0px;
+ margin: 0px;
+ width: 100%;
+ border-bottom: 1px solid #5373B4;
+}
+
+.image
+{
+ text-align: center;
+}
+
+.dotgraph
+{
+ text-align: center;
+}
+
+.mscgraph
+{
+ text-align: center;
+}
+
+.plantumlgraph
+{
+ text-align: center;
+}
+
+.diagraph
+{
+ text-align: center;
+}
+
+.caption
+{
+ font-weight: bold;
+}
+
+div.zoom
+{
+ border: 1px solid #90A5CE;
+}
+
+dl.citelist {
+ margin-bottom:50px;
+}
+
+dl.citelist dt {
+ color:#334975;
+ float:left;
+ font-weight:bold;
+ margin-right:10px;
+ padding:5px;
+}
+
+dl.citelist dd {
+ margin:2px 0;
+ padding:5px 0;
+}
+
+div.toc {
+ padding: 14px 25px;
+ background-color: #F4F6FA;
+ border: 1px solid #D8DFEE;
+ border-radius: 7px 7px 7px 7px;
+ float: right;
+ height: auto;
+ margin: 0 8px 10px 10px;
+ width: 200px;
+}
+
+div.toc li {
+ background: url("bdwn.png") no-repeat scroll 0 5px transparent;
+ font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
+ margin-top: 5px;
+ padding-left: 10px;
+ padding-top: 2px;
+}
+
+div.toc h3 {
+ font: bold 12px/1.2 Arial,FreeSans,sans-serif;
+ color: #4665A2;
+ border-bottom: 0 none;
+ margin: 0;
+}
+
+div.toc ul {
+ list-style: none outside none;
+ border: medium none;
+ padding: 0px;
+}
+
+div.toc li.level1 {
+ margin-left: 0px;
+}
+
+div.toc li.level2 {
+ margin-left: 15px;
+}
+
+div.toc li.level3 {
+ margin-left: 30px;
+}
+
+div.toc li.level4 {
+ margin-left: 45px;
+}
+
+.inherit_header {
+ font-weight: bold;
+ color: gray;
+ cursor: pointer;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.inherit_header td {
+ padding: 6px 0px 2px 5px;
+}
+
+.inherit {
+ display: none;
+}
+
+tr.heading h2 {
+ margin-top: 12px;
+ margin-bottom: 4px;
+}
+
+/* tooltip related style info */
+
+.ttc {
+ position: absolute;
+ display: none;
+}
+
+#powerTip {
+ cursor: default;
+ white-space: nowrap;
+ background-color: white;
+ border: 1px solid gray;
+ border-radius: 4px 4px 4px 4px;
+ box-shadow: 1px 1px 7px gray;
+ display: none;
+ font-size: smaller;
+ max-width: 80%;
+ opacity: 0.9;
+ padding: 1ex 1em 1em;
+ position: absolute;
+ z-index: 2147483647;
+}
+
+#powerTip div.ttdoc {
+ color: grey;
+ font-style: italic;
+}
+
+#powerTip div.ttname a {
+ font-weight: bold;
+}
+
+#powerTip div.ttname {
+ font-weight: bold;
+}
+
+#powerTip div.ttdeci {
+ color: #006318;
+}
+
+#powerTip div {
+ margin: 0px;
+ padding: 0px;
+ font: 12px/16px Roboto,sans-serif;
+}
+
+#powerTip:before, #powerTip:after {
+ content: "";
+ position: absolute;
+ margin: 0px;
+}
+
+#powerTip.n:after, #powerTip.n:before,
+#powerTip.s:after, #powerTip.s:before,
+#powerTip.w:after, #powerTip.w:before,
+#powerTip.e:after, #powerTip.e:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.nw:after, #powerTip.nw:before,
+#powerTip.sw:after, #powerTip.sw:before {
+ border: solid transparent;
+ content: " ";
+ height: 0;
+ width: 0;
+ position: absolute;
+}
+
+#powerTip.n:after, #powerTip.s:after,
+#powerTip.w:after, #powerTip.e:after,
+#powerTip.nw:after, #powerTip.ne:after,
+#powerTip.sw:after, #powerTip.se:after {
+ border-color: rgba(255, 255, 255, 0);
+}
+
+#powerTip.n:before, #powerTip.s:before,
+#powerTip.w:before, #powerTip.e:before,
+#powerTip.nw:before, #powerTip.ne:before,
+#powerTip.sw:before, #powerTip.se:before {
+ border-color: rgba(128, 128, 128, 0);
+}
+
+#powerTip.n:after, #powerTip.n:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.nw:after, #powerTip.nw:before {
+ top: 100%;
+}
+
+#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
+ border-top-color: #ffffff;
+ border-width: 10px;
+ margin: 0px -10px;
+}
+#powerTip.n:before {
+ border-top-color: #808080;
+ border-width: 11px;
+ margin: 0px -11px;
+}
+#powerTip.n:after, #powerTip.n:before {
+ left: 50%;
+}
+
+#powerTip.nw:after, #powerTip.nw:before {
+ right: 14px;
+}
+
+#powerTip.ne:after, #powerTip.ne:before {
+ left: 14px;
+}
+
+#powerTip.s:after, #powerTip.s:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.sw:after, #powerTip.sw:before {
+ bottom: 100%;
+}
+
+#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
+ border-bottom-color: #ffffff;
+ border-width: 10px;
+ margin: 0px -10px;
+}
+
+#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
+ border-bottom-color: #808080;
+ border-width: 11px;
+ margin: 0px -11px;
+}
+
+#powerTip.s:after, #powerTip.s:before {
+ left: 50%;
+}
+
+#powerTip.sw:after, #powerTip.sw:before {
+ right: 14px;
+}
+
+#powerTip.se:after, #powerTip.se:before {
+ left: 14px;
+}
+
+#powerTip.e:after, #powerTip.e:before {
+ left: 100%;
+}
+#powerTip.e:after {
+ border-left-color: #ffffff;
+ border-width: 10px;
+ top: 50%;
+ margin-top: -10px;
+}
+#powerTip.e:before {
+ border-left-color: #808080;
+ border-width: 11px;
+ top: 50%;
+ margin-top: -11px;
+}
+
+#powerTip.w:after, #powerTip.w:before {
+ right: 100%;
+}
+#powerTip.w:after {
+ border-right-color: #ffffff;
+ border-width: 10px;
+ top: 50%;
+ margin-top: -10px;
+}
+#powerTip.w:before {
+ border-right-color: #808080;
+ border-width: 11px;
+ top: 50%;
+ margin-top: -11px;
+}
+
+@media print
+{
+ #top { display: none; }
+ #side-nav { display: none; }
+ #nav-path { display: none; }
+ body { overflow:visible; }
+ h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
+ .summary { display: none; }
+ .memitem { page-break-inside: avoid; }
+ #doc-content
+ {
+ margin-left:0 !important;
+ height:auto !important;
+ width:auto !important;
+ overflow:inherit;
+ display:inline;
+ }
+}
+
+/* @group Markdown */
+
+/*
+table.markdownTable {
+ border-collapse:collapse;
+ margin-top: 4px;
+ margin-bottom: 4px;
+}
+
+table.markdownTable td, table.markdownTable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+table.markdownTableHead tr {
+}
+
+table.markdownTableBodyLeft td, table.markdownTable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone {
+ background-color: #374F7F;
+ color: #FFFFFF;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+}
+
+th.markdownTableHeadLeft {
+ text-align: left
+}
+
+th.markdownTableHeadRight {
+ text-align: right
+}
+
+th.markdownTableHeadCenter {
+ text-align: center
+}
+*/
+
+table.markdownTable {
+ border-collapse:collapse;
+ margin-top: 4px;
+ margin-bottom: 4px;
+}
+
+table.markdownTable td, table.markdownTable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+table.markdownTable tr {
+}
+
+th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone {
+ background-color: #374F7F;
+ color: #FFFFFF;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+}
+
+th.markdownTableHeadLeft, td.markdownTableBodyLeft {
+ text-align: left
+}
+
+th.markdownTableHeadRight, td.markdownTableBodyRight {
+ text-align: right
+}
+
+th.markdownTableHeadCenter, td.markdownTableBodyCenter {
+ text-align: center
+}
+
+
+/* @end */
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/doxygen.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/doxygen.png
new file mode 100644
index 0000000..3ff17d8
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/doxygen.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dynsections.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dynsections.js
new file mode 100644
index 0000000..85e1836
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/dynsections.js
@@ -0,0 +1,97 @@
+function toggleVisibility(linkObj)
+{
+ var base = $(linkObj).attr('id');
+ var summary = $('#'+base+'-summary');
+ var content = $('#'+base+'-content');
+ var trigger = $('#'+base+'-trigger');
+ var src=$(trigger).attr('src');
+ if (content.is(':visible')===true) {
+ content.hide();
+ summary.show();
+ $(linkObj).addClass('closed').removeClass('opened');
+ $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
+ } else {
+ content.show();
+ summary.hide();
+ $(linkObj).removeClass('closed').addClass('opened');
+ $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
+ }
+ return false;
+}
+
+function updateStripes()
+{
+ $('table.directory tr').
+ removeClass('even').filter(':visible:even').addClass('even');
+}
+
+function toggleLevel(level)
+{
+ $('table.directory tr').each(function() {
+ var l = this.id.split('_').length-1;
+ var i = $('#img'+this.id.substring(3));
+ var a = $('#arr'+this.id.substring(3));
+ if (l
+
+
+
+
+
+
+UnitreeCameraSDK: examples/example_getCalibParamsFile.cc File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This file is part of UnitreeCameraSDK.
+More...
+
#include <UnitreeCameraSDK.hpp >
+
#include <unistd.h>
+
+
+int main (int argc, char *argv[])
+
+
+
+
This file is part of UnitreeCameraSDK.
+
This example that how to get camera internal parameters
Author ZhangChunyang
+
Date 2021.07.31
+
Version 1.0.1
+
Copyright Copyright (c) 2020-2021, Hangzhou Yushu Technology Stock CO.LTD. All Rights Reserved.
+
+
+
◆ main()
+
+
+
+
+
+ int main
+ (
+ int
+ argc ,
+
+
+
+
+ char *
+ argv []
+
+
+
+ )
+
+
+
+
+
< init UnitreeCamera object by config file
+
< get camera open state
+
< disable image h264 encoding and share memory sharing
+
< wait parameters initialization finished
+
< save parameters to output_camCalibParams.yaml
+
< stop camera capturing
+
+
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_calib_params_file_8cc__incl.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_calib_params_file_8cc__incl.map
new file mode 100644
index 0000000..7d43765
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_calib_params_file_8cc__incl.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_calib_params_file_8cc__incl.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_calib_params_file_8cc__incl.md5
new file mode 100644
index 0000000..a535110
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_calib_params_file_8cc__incl.md5
@@ -0,0 +1 @@
+8dfd6022b06a01184572814d12874ff8
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_calib_params_file_8cc__incl.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_calib_params_file_8cc__incl.png
new file mode 100644
index 0000000..1db53b7
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_calib_params_file_8cc__incl.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_depth_frame_8cc.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_depth_frame_8cc.html
new file mode 100644
index 0000000..550540c
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_depth_frame_8cc.html
@@ -0,0 +1,144 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: examples/example_getDepthFrame.cc File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This file is part of UnitreeCameraSDK.
+More...
+
#include <UnitreeCameraSDK.hpp >
+
#include <unistd.h>
+
+
+int main (int argc, char *argv[])
+
+
+
+
This file is part of UnitreeCameraSDK.
+
This example that how to get depth frame
Author ZhangChunyang
+
Date 2021.07.31
+
Version 1.0.1
+
Copyright Copyright (c) 2020-2021, Hangzhou Yushu Technology Stock CO.LTD. All Rights Reserved.
+
+
+
◆ main()
+
+
+
+
+
+ int main
+ (
+ int
+ argc ,
+
+
+
+
+ char *
+ argv []
+
+
+
+ )
+
+
+
+
+
< init UnitreeCamera object by config file
+
< get camera open state
+
< disable image h264 encoding and share memory sharing
+
< start disparity computing
+
< get stereo camera depth image
+
< stop disparity computing
+
< stop camera capturing
+
+
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_depth_frame_8cc__incl.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_depth_frame_8cc__incl.map
new file mode 100644
index 0000000..47f0f5a
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_depth_frame_8cc__incl.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_depth_frame_8cc__incl.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_depth_frame_8cc__incl.md5
new file mode 100644
index 0000000..9b43ab7
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_depth_frame_8cc__incl.md5
@@ -0,0 +1 @@
+49c60eec896c657506cfc99e97a1facd
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_depth_frame_8cc__incl.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_depth_frame_8cc__incl.png
new file mode 100644
index 0000000..05cc59a
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_depth_frame_8cc__incl.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_point_cloud_8cc.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_point_cloud_8cc.html
new file mode 100644
index 0000000..1508d03
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_point_cloud_8cc.html
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: examples/example_getPointCloud.cc File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This file is part of UnitreeCameraSDK.
+More...
+
#include <GL/gl.h>
+
#include <signal.h>
+
#include <cerrno>
+
#include <cfenv>
+
#include <unistd.h>
+
#include "glViewer/scenewindow.hpp"
+
#include <UnitreeCameraSDK.hpp >
+
+
+
+#define RGB_PCL false
+ Color Point Cloud Enable Flag.
+
+
+
+
+void DrawScene (const std::vector< PCLType > &pcl_vec)
+
+
+void DrawScene (const std::vector< cv::Vec3f > &pcl_vec)
+
+
+void ctrl_c_handler (int s)
+
+
+int main (int argc, char *argv[])
+
+
+
+
+bool killSignalFlag = false
+
+
+
+
This file is part of UnitreeCameraSDK.
+
This example that how to get camera point cloud.
Author ZhangChunyang
+
Date 2021.07.31
+
Version 1.0.1
+
Copyright Copyright (c) 2020-2021, Hangzhou Yushu Technology Stock CO.LTD. All Rights Reserved.
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_point_cloud_8cc__incl.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_point_cloud_8cc__incl.map
new file mode 100644
index 0000000..4291d37
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_point_cloud_8cc__incl.map
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_point_cloud_8cc__incl.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_point_cloud_8cc__incl.md5
new file mode 100644
index 0000000..4be41b2
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_point_cloud_8cc__incl.md5
@@ -0,0 +1 @@
+c9ebdf0f7db31453d2b2f129e7e2c3fb
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_point_cloud_8cc__incl.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_point_cloud_8cc__incl.png
new file mode 100644
index 0000000..481654e
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_point_cloud_8cc__incl.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_raw_frame_8cc.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_raw_frame_8cc.html
new file mode 100644
index 0000000..fb89634
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_raw_frame_8cc.html
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: examples/example_getRawFrame.cc File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This file is part of UnitreeCameraSDK.
+More...
+
#include <UnitreeCameraSDK.hpp >
+
#include <unistd.h>
+
+
+int main (int argc, char *argv[])
+
+
+
+
This file is part of UnitreeCameraSDK.
+
This example that how to get camera raw frame.
Author ZhangChunyang
+
Date 2021.07.31
+
Version 1.0.1
+
Copyright Copyright (c) 2020-2021, Hangzhou Yushu Technology Stock CO.LTD. All Rights Reserved.
+
+
+
◆ main()
+
+
+
+
+
+ int main
+ (
+ int
+ argc ,
+
+
+
+
+ char *
+ argv []
+
+
+
+ )
+
+
+
+
+
< init camera by device node number
+
< set camera frame size
+
< set camera frame rate
+
< start camera capturing
+
< get camera raw image
+
< stop camera capturing
+
+
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_raw_frame_8cc__incl.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_raw_frame_8cc__incl.map
new file mode 100644
index 0000000..4366bf5
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_raw_frame_8cc__incl.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_raw_frame_8cc__incl.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_raw_frame_8cc__incl.md5
new file mode 100644
index 0000000..8a7f0e0
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_raw_frame_8cc__incl.md5
@@ -0,0 +1 @@
+b6ef2bde5c4bc73126be8ca1bdce1d38
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_raw_frame_8cc__incl.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_raw_frame_8cc__incl.png
new file mode 100644
index 0000000..f788cd7
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_raw_frame_8cc__incl.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_rect_frame_8cc.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_rect_frame_8cc.html
new file mode 100644
index 0000000..00dea59
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_rect_frame_8cc.html
@@ -0,0 +1,148 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: examples/example_getRectFrame.cc File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This file is part of UnitreeCameraSDK.
+More...
+
#include <UnitreeCameraSDK.hpp >
+
#include <unistd.h>
+
+
+int main (int argc, char *argv[])
+
+
+
+
This file is part of UnitreeCameraSDK.
+
This example that how to get depth frame
Author ZhangChunyang
+
Date 2021.07.31
+
Version 1.0.1
+
Copyright Copyright (c) 2020-2021, Hangzhou Yushu Technology Stock CO.LTD. All Rights Reserved.
+
+
+
◆ main()
+
+
+
+
+
+ int main
+ (
+ int
+ argc ,
+
+
+
+
+ char *
+ argv []
+
+
+
+ )
+
+
+
+
+
< default 0 -> /dev/video0
+
< default frame size 1856x800
+
< default camera fps: 30
+
< init camera by device node number
+
< get camera open state
+
< set camera frame size
+
< set camera camera fps
+
< set camera rectify frame size
+
< disable image h264 encoding and share memory sharing
+
< get longlat rectify left,right and fisheye rectify feim
+
< stop camera capturing
+
+
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_rect_frame_8cc__incl.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_rect_frame_8cc__incl.map
new file mode 100644
index 0000000..5dd851f
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_rect_frame_8cc__incl.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_rect_frame_8cc__incl.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_rect_frame_8cc__incl.md5
new file mode 100644
index 0000000..bd38a97
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_rect_frame_8cc__incl.md5
@@ -0,0 +1 @@
+f8143a2d8d82000710b69e1b2c8a579d
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_rect_frame_8cc__incl.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_rect_frame_8cc__incl.png
new file mode 100644
index 0000000..bf1a448
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/example__get_rect_frame_8cc__incl.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/files.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/files.html
new file mode 100644
index 0000000..170410d
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/files.html
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: File List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented files with brief descriptions:
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/folderclosed.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/folderclosed.png
new file mode 100644
index 0000000..bb8ab35
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/folderclosed.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/folderopen.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/folderopen.png
new file mode 100644
index 0000000..d6c7f67
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/folderopen.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/functions.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/functions.html
new file mode 100644
index 0000000..b731c73
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/functions.html
@@ -0,0 +1,244 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+
- c -
+
+
+
- d -
+
+
+
- g -
+
+
+
- i -
+
+
+
- l -
+
+
+
- p -
+
+
+
- r -
+
+
+
- s -
+
+
+
- u -
+
+
+
- ~ -
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/functions_func.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/functions_func.html
new file mode 100644
index 0000000..bcabf67
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/functions_func.html
@@ -0,0 +1,234 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: Class Members - Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- c -
+
+
+
- d -
+
+
+
- g -
+
+
+
- i -
+
+
+
- l -
+
+
+
- r -
+
+
+
- s -
+
+
+
- u -
+
+
+
- ~ -
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/functions_vars.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/functions_vars.html
new file mode 100644
index 0000000..323c93e
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/functions_vars.html
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: Class Members - Variables
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/globals.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/globals.html
new file mode 100644
index 0000000..5ee6ec0
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/globals.html
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: File Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all documented file members with links to the documentation:
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/globals_defs.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/globals_defs.html
new file mode 100644
index 0000000..889f298
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/globals_defs.html
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: File Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/globals_enum.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/globals_enum.html
new file mode 100644
index 0000000..4b759a8
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/globals_enum.html
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: File Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/globals_func.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/globals_func.html
new file mode 100644
index 0000000..f150ba4
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/globals_func.html
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: File Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/glwindow_8hpp_source.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/glwindow_8hpp_source.html
new file mode 100644
index 0000000..0c3fe86
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/glwindow_8hpp_source.html
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: examples/glViewer/glwindow.hpp Source File
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
9 namespace ButtonEvent {
11 LEFT=1, MIDDLE=2, RIGHT=4, WHEEL=8,
12 MODKEY_CTRL=16, MODKEY_SHIFT=32,
43 virtual bool on_key_down(
GLWindow & win,
int key) {
return false ; }
44 virtual bool on_key_up(
GLWindow & win,
int key) {
return false ; }
45 virtual bool on_text(
GLWindow & win,
const char *text,
int len) {
return false ; }
46 virtual bool on_button_down(
GLWindow & win,
int btn,
int state,
int x,
int y) {
return false ; }
47 virtual bool on_button_up(
GLWindow & win,
int btn,
int state,
int x,
int y) {
return false ; }
48 virtual bool on_mouse_move(
GLWindow & win,
int state,
int x,
int y) {
return false ; }
49 virtual bool on_mouse_wheel(
GLWindow & win,
int state,
int x,
int y,
int dx,
int dy) {
return false ; }
50 virtual bool on_resize(
GLWindow & win,
int x,
int y,
int w,
int h) {
return false ; }
51 virtual bool on_close(
GLWindow & win) {
return false ; }
58 const std::vector<EventHandler*> &handlers;
61 bool on_key_down(
GLWindow & win,
int key);
62 bool on_key_up(
GLWindow & win,
int key);
63 bool on_text(
GLWindow & win,
const char *text,
int len);
64 bool on_button_down(
GLWindow & win,
int btn,
int state,
int x,
int y);
65 bool on_button_up(
GLWindow & win,
int btn,
int state,
int x,
int y);
66 bool on_mouse_move(
GLWindow & win,
int state,
int x,
int y);
67 bool on_mouse_wheel(
GLWindow & win,
int state,
int x,
int y,
int dx,
int dy);
68 bool on_resize(
GLWindow & win,
int x,
int y,
int w,
int h);
75 GLWindow (
int w=-1,
int h=-1,
const char *title=0);
99 void set_size(
int w,
int h);
100 void set_position(
int x,
int y);
102 void set_title(
const char * title);
106 void handle_events();
107 static void handle_all_events();
111 void draw_text(
double x,
double y,
const char *text,
int xywh[4]=0);
116 std::vector<EventHandler*> handlers;
120 static std::vector<GLWindow*> all_windows;
121 static void add_window(
GLWindow *win);
122 static bool remove_window(
GLWindow *win);
Definition: glwindow.hpp:7
+
Definition: glwindow.hpp:39
+
Definition: glwindow.hpp:55
+
Definition: glwindow.hpp:72
+
Definition: glwindow_x11.cpp:176
+
Definition: glwindow.hpp:87
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/graph_legend.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/graph_legend.html
new file mode 100644
index 0000000..693557b
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/graph_legend.html
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: Graph Legend
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree camera sdk apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This page explains how to interpret the graphs that are generated by doxygen.
+
Consider the following example:
/*! Invisible class because of truncation */
class Invisible { };
/*! Truncated class, inheritance relation is hidden */
class Truncated : public Invisible { };
/* Class not documented with doxygen comments */
class Undocumented { };
/*! Class that is inherited using public inheritance */
class PublicBase : public Truncated { };
/*! A template class */
template<class T> class Templ { };
/*! Class that is inherited using protected inheritance */
class ProtectedBase { };
/*! Class that is inherited using private inheritance */
class PrivateBase { };
/*! Class that is used by the Inherited class */
class Used { };
/*! Super class that inherits a number of other classes */
class Inherited : public PublicBase,
protected ProtectedBase,
private PrivateBase,
public Undocumented,
public Templ<int>
{
private:
Used *m_usedClass;
};
This will result in the following graph:
+
+
+
+The boxes in the above graph have the following meaning:
+
+
+A filled gray box represents the struct or class for which the graph is generated.
+
+A box with a black border denotes a documented struct or class.
+
+A box with a gray border denotes an undocumented struct or class.
+
+A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
+
+
The arrows have the following meaning:
+
+
+A dark blue arrow is used to visualize a public inheritance relation between two classes.
+
+A dark green arrow is used for protected inheritance.
+
+A dark red arrow is used for private inheritance.
+
+A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
+
+A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/graph_legend.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/graph_legend.md5
new file mode 100644
index 0000000..a06ed05
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/graph_legend.md5
@@ -0,0 +1 @@
+387ff8eb65306fa251338d3c9bd7bfff
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/graph_legend.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/graph_legend.png
new file mode 100644
index 0000000..81788d8
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/graph_legend.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/hierarchy.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/hierarchy.html
new file mode 100644
index 0000000..0bb1af6
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/hierarchy.html
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Go to the graphical class hierarchy
+This inheritance list is sorted roughly, but not completely, alphabetically:
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/index.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/index.html
new file mode 100644
index 0000000..227d6cf
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/index.html
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: Introduction
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree camera sdk apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Unitree Robotics is a energetic start-up company that focuses on the development, production and sales of high-performance quadruped robots. It has been interviewed by BBC and CCTV, and is one of the earliest company to publicly sell quadruped robots.
+
The company has an outstanding leadership in developing robot core components, motion control, robot perception, etc.
+
We attaches great importance to research and development, and thus independently developed the motors, reducers, controllers, and even some sensors of the quadruped robot.
+
1.Overview
+
UnitreeCameraSDK 1.0 is a cross-platform library for unitree depth cameras
+
The SDK allows depth and color streaming, and provides intrinsic calibration information. The library also offers pointcloud, depth aligned to color and vise-versa.
+
2.Dependencies
+
OpenCV, version: equal or lager than 4 Cmake, version: 2.8
+
2.Build
+
cd UnitreeCameraSDK;
mkdir build; cd build;
cmake ..; make
3.Run Examples
+
Get Camera Raw Frame:
cd UnitreeCameraSDK;
./bin/example_getRawFrame
Get Calibration Parameters File
cd UnitreeCameraSDK;
./bin/example_getCalibParamsFile
Get Rectify Frame
cd UnitreeCameraSDK;
./bin/example_getRectFrame
Get Depth Frame
cd UnitreeCameraSDK;
./bin/example_getDepthFrame
Get Point Cloud:
cd UnitreeCameraSDK;
./bin/example_getPointCloud
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_0.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_0.map
new file mode 100644
index 0000000..774ae01
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_0.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_0.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_0.md5
new file mode 100644
index 0000000..73c0382
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_0.md5
@@ -0,0 +1 @@
+61dd634668d43833ad1b7e4b152b9c1c
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_0.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_0.png
new file mode 100644
index 0000000..c40bfc5
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_0.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_1.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_1.map
new file mode 100644
index 0000000..235e06c
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_1.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_1.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_1.md5
new file mode 100644
index 0000000..cbcc577
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_1.md5
@@ -0,0 +1 @@
+710b5fdf740fae65d041a470d0b31bd9
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_1.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_1.png
new file mode 100644
index 0000000..6758e5b
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_1.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_10.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_10.map
new file mode 100644
index 0000000..e60ae33
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_10.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_10.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_10.md5
new file mode 100644
index 0000000..3c829db
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_10.md5
@@ -0,0 +1 @@
+a0e3e915a94984f0717583209626075e
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_10.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_10.png
new file mode 100644
index 0000000..b274f17
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_10.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_2.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_2.map
new file mode 100644
index 0000000..4987089
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_2.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_2.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_2.md5
new file mode 100644
index 0000000..a0f856e
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_2.md5
@@ -0,0 +1 @@
+976e5acfa425de17b8ade4a9616cba86
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_2.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_2.png
new file mode 100644
index 0000000..671ff90
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_2.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_3.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_3.map
new file mode 100644
index 0000000..f587196
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_3.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_3.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_3.md5
new file mode 100644
index 0000000..5b91912
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_3.md5
@@ -0,0 +1 @@
+8155cd923783d31c3e24a0fe4a8f5fd2
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_3.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_3.png
new file mode 100644
index 0000000..7bae101
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_3.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_4.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_4.map
new file mode 100644
index 0000000..405ecee
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_4.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_4.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_4.md5
new file mode 100644
index 0000000..934a788
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_4.md5
@@ -0,0 +1 @@
+317b71c1594dd72211cab8522a994166
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_4.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_4.png
new file mode 100644
index 0000000..7bbc17e
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_4.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_5.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_5.map
new file mode 100644
index 0000000..e7e9066
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_5.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_5.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_5.md5
new file mode 100644
index 0000000..a8b1b1d
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_5.md5
@@ -0,0 +1 @@
+c88b8993c22736e30753fb0024d45fd0
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_5.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_5.png
new file mode 100644
index 0000000..8cfed5f
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_5.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_6.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_6.map
new file mode 100644
index 0000000..3ab8239
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_6.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_6.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_6.md5
new file mode 100644
index 0000000..aad523b
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_6.md5
@@ -0,0 +1 @@
+8266cffa382ccf24901c718932d88853
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_6.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_6.png
new file mode 100644
index 0000000..59389ac
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_6.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_7.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_7.map
new file mode 100644
index 0000000..43d0283
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_7.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_7.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_7.md5
new file mode 100644
index 0000000..9b732e4
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_7.md5
@@ -0,0 +1 @@
+cd1ee94555a24f3d256b39e86eb6d022
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_7.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_7.png
new file mode 100644
index 0000000..eff4392
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_7.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_8.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_8.map
new file mode 100644
index 0000000..a83666e
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_8.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_8.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_8.md5
new file mode 100644
index 0000000..18e0786
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_8.md5
@@ -0,0 +1 @@
+0172852549ba2b35d1a9e308b9333714
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_8.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_8.png
new file mode 100644
index 0000000..83a07cf
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_8.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_9.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_9.map
new file mode 100644
index 0000000..0772f31
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_9.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_9.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_9.md5
new file mode 100644
index 0000000..ea8545d
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_9.md5
@@ -0,0 +1 @@
+c3bc484aaf9f99c46c4d9d18867f6d7c
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_9.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_9.png
new file mode 100644
index 0000000..cfdb435
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherit_graph_9.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherits.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherits.html
new file mode 100644
index 0000000..045e76d
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/inherits.html
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: Class Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/jquery.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/jquery.js
new file mode 100644
index 0000000..f5343ed
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/jquery.js
@@ -0,0 +1,87 @@
+/*!
+ * jQuery JavaScript Library v1.7.1
+ * http://jquery.com/
+ *
+ * Copyright 2011, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Mon Nov 21 21:11:03 2011 -0500
+ */
+(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bva ";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}});
+/*!
+ * Sizzle CSS Selector Engine
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ * More information: http://sizzlejs.com/
+ */
+(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS ";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML=" ";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="
";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT 0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,""," "],thead:[1,""],tr:[2,""],td:[3,""],col:[2,""],area:[1,""," "],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>$2>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>$2>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA
=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*!
+ * jQuery UI 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI
+ */
+(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*!
+ * jQuery UI Widget 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Widget
+ */
+(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*!
+ * jQuery UI Mouse 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Mouse
+ *
+ * Depends:
+ * jquery.ui.widget.js
+ */
+(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g ');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*!
+ * jQuery hashchange event - v1.3 - 7/21/2010
+ * http://benalman.com/projects/jquery-hashchange-plugin/
+ *
+ * Copyright (c) 2010 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ */
+(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('').hide().one("load",function(){r||l(a());n()}).attr("src",r||"javascript:0").insertAfter("body")[0].contentWindow;h.onpropertychange=function(){try{if(event.propertyName==="title"){q.document.title=h.title}}catch(s){}}}};j.stop=k;o=function(){return a(q.location.href)};l=function(v,s){var u=q.document,t=$.fn[c].domain;if(v!==s){u.title=h.title;u.open();t&&u.write('
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
5 #include "glwindow.hpp" 17 double azimuth, elevation, distance;
21 SceneWindow (
int width,
int height,
const char *title);
33 bool on_key_down(
GLWindow & win,
int key);
34 bool on_button_down(
GLWindow & win,
int btn,
int state,
int x,
int y);
35 bool on_button_up(
GLWindow & win,
int btn,
int state,
int x,
int y);
36 bool on_mouse_move(
GLWindow & win,
int state,
int x,
int y);
37 bool on_mouse_wheel(
GLWindow & win,
int state,
int x,
int y,
int dx,
int dy);
38 bool on_resize(
GLWindow & win,
int x,
int y,
int w,
int h);
43 double inv_w0, inv_h0;
Definition: glwindow.hpp:7
+
Definition: glwindow.hpp:39
+
Definition: glwindow.hpp:72
+
Definition: scenewindow.hpp:14
+
Definition: scenewindow.hpp:10
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_0.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_0.html
new file mode 100644
index 0000000..f25360b
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_0.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_0.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_0.js
new file mode 100644
index 0000000..7cf7879
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['introduction',['Introduction',['../index.html',1,'']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_1.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_1.html
new file mode 100644
index 0000000..b13f0f7
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_1.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_1.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_1.js
new file mode 100644
index 0000000..5ed2b5d
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_1.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['checkfirmwareversion',['checkFirmwareVersion',['../class_unitree_camera.html#a45e182540ab4bb59b68fb07c23bdd91f',1,'UnitreeCamera']]],
+ ['clr',['clr',['../struct_p_c_l.html#a6555550c790378b130273dd6ae3a2158',1,'PCL']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_2.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_2.html
new file mode 100644
index 0000000..9543c57
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_2.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_2.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_2.js
new file mode 100644
index 0000000..605cf07
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_2.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+ ['debugtimeerror',['debugTimeError',['../class_system_log.html#ae1cbe2de51efe22068e2e047396a72dd',1,'SystemLog']]],
+ ['debugtimeinfo',['debugTimeInfo',['../class_system_log.html#ad79238fdcc9a301093d6fa32884d1ae1',1,'SystemLog']]],
+ ['debugtimewarning',['debugTimeWarning',['../class_system_log.html#a08dff4b478ed29a39d584d3b7f21ddfb',1,'SystemLog']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_3.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_3.html
new file mode 100644
index 0000000..03405c0
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_3.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_3.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_3.js
new file mode 100644
index 0000000..4d759ee
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_3.js
@@ -0,0 +1,10 @@
+var searchData=
+[
+ ['eventdispatcher',['EventDispatcher',['../classglwindow_1_1_event_dispatcher.html',1,'glwindow']]],
+ ['eventhandler',['EventHandler',['../structglwindow_1_1_event_handler.html',1,'glwindow']]],
+ ['example_5fgetcalibparamsfile_2ecc',['example_getCalibParamsFile.cc',['../example__get_calib_params_file_8cc.html',1,'']]],
+ ['example_5fgetdepthframe_2ecc',['example_getDepthFrame.cc',['../example__get_depth_frame_8cc.html',1,'']]],
+ ['example_5fgetpointcloud_2ecc',['example_getPointCloud.cc',['../example__get_point_cloud_8cc.html',1,'']]],
+ ['example_5fgetrawframe_2ecc',['example_getRawFrame.cc',['../example__get_raw_frame_8cc.html',1,'']]],
+ ['example_5fgetrectframe_2ecc',['example_getRectFrame.cc',['../example__get_rect_frame_8cc.html',1,'']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_4.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_4.html
new file mode 100644
index 0000000..8e1f4b9
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_4.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_4.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_4.js
new file mode 100644
index 0000000..945e0db
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_4.js
@@ -0,0 +1,14 @@
+var searchData=
+[
+ ['getcalibparams',['getCalibParams',['../class_stereo_camera.html#a61ea11e661cca31acb780edbbba1d32e',1,'StereoCamera']]],
+ ['getdepthframe',['getDepthFrame',['../class_stereo_camera.html#aa0bd7e3a7ab4fcf2598ac4e780a27cb3',1,'StereoCamera']]],
+ ['getdevicenode',['getDeviceNode',['../class_stereo_camera.html#a34d50c8166cf8f3f76fff5789f8f1eee',1,'StereoCamera']]],
+ ['getloglevel',['getLogLevel',['../class_stereo_camera.html#a105495e27d95f3f905ef1de0f9866c70',1,'StereoCamera']]],
+ ['getposnumber',['getPosNumber',['../class_stereo_camera.html#ab844029084a9a9de0996c1e7b24c258c',1,'StereoCamera']]],
+ ['getrawframe',['getRawFrame',['../class_stereo_camera.html#ac8fbb6e1ebd828b1640d43ad7cdc0f9c',1,'StereoCamera']]],
+ ['getrawframerate',['getRawFrameRate',['../class_stereo_camera.html#ac92c3a60ae0c38e203c81bb2a2738eb4',1,'StereoCamera']]],
+ ['getrawframesize',['getRawFrameSize',['../class_stereo_camera.html#a38c990b26167c2f7823b20f44b1a8fa7',1,'StereoCamera']]],
+ ['getserialnumber',['getSerialNumber',['../class_stereo_camera.html#a3cb43015d545854892dd2e4057f5b2be',1,'StereoCamera']]],
+ ['getstereoframe',['getStereoFrame',['../class_stereo_camera.html#aa25f48d95ba8d1c71fb0e40b53f68379',1,'StereoCamera']]],
+ ['glwindow',['GLWindow',['../classglwindow_1_1_g_l_window.html',1,'glwindow']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_5.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_5.html
new file mode 100644
index 0000000..89a879e
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_5.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_5.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_5.js
new file mode 100644
index 0000000..06549df
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_5.js
@@ -0,0 +1,8 @@
+var searchData=
+[
+ ['imagerect',['ImageRect',['../_stereo_camera_common_8cc.html#a883d5937720f572dee2c22374bf7190b',1,'StereoCameraCommon.cc']]],
+ ['introduction',['Introduction',['../index.html',1,'']]],
+ ['info_5fcamera_5fos',['info_camera_os',['../classinfo__camera__os.html',1,'']]],
+ ['info_5fcamera_5fstring',['info_camera_String',['../classinfo__camera___string.html',1,'']]],
+ ['isopened',['isOpened',['../class_stereo_camera.html#a47c0d9ee727f13af5d348db9f217a44b',1,'StereoCamera']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_6.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_6.html
new file mode 100644
index 0000000..6afac06
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_6.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_6.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_6.js
new file mode 100644
index 0000000..64bf2cb
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_6.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['loadcalibparams',['loadCalibParams',['../class_stereo_camera.html#afb896942fb7fe1ea33c80ec9dcefa6a0',1,'StereoCamera']]],
+ ['loadconfig',['loadConfig',['../class_stereo_camera.html#afe25245d518e12c6f0a685d7da7a2979',1,'StereoCamera']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_7.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_7.html
new file mode 100644
index 0000000..de19107
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_7.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_7.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_7.js
new file mode 100644
index 0000000..99c7536
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_7.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['main',['main',['../example__get_calib_params_file_8cc.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): example_getCalibParamsFile.cc'],['../example__get_depth_frame_8cc.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): example_getDepthFrame.cc'],['../example__get_raw_frame_8cc.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): example_getRawFrame.cc'],['../example__get_rect_frame_8cc.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): example_getRectFrame.cc']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_8.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_8.html
new file mode 100644
index 0000000..11e27cd
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_8.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_8.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_8.js
new file mode 100644
index 0000000..e29c660
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_8.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['pcl',['PCL',['../struct_p_c_l.html',1,'']]],
+ ['pts',['pts',['../struct_p_c_l.html#a07c28b7f533724d91ec4a9e461989d8c',1,'PCL']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_9.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_9.html
new file mode 100644
index 0000000..f8abbbe
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_9.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_9.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_9.js
new file mode 100644
index 0000000..c9f8da8
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_9.js
@@ -0,0 +1,7 @@
+var searchData=
+[
+ ['rgb_5fpcl',['RGB_PCL',['../example__get_point_cloud_8cc.html#a252571170a109b31218383613dc16295',1,'example_getPointCloud.cc']]],
+ ['runtimeerror',['runTimeError',['../class_system_log.html#ac33b9f16ae96885ff7170d209a6af506',1,'SystemLog']]],
+ ['runtimeinfo',['runTimeInfo',['../class_system_log.html#ac9b085c959e3f97d547c997c2fca2613',1,'SystemLog']]],
+ ['runtimewarning',['runTimeWarning',['../class_system_log.html#a69d19a4affe470db2b740a1e9a78e6e5',1,'SystemLog']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_a.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_a.html
new file mode 100644
index 0000000..9601fce
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_a.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_a.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_a.js
new file mode 100644
index 0000000..865f018
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_a.js
@@ -0,0 +1,26 @@
+var searchData=
+[
+ ['savecalibparams',['saveCalibParams',['../class_stereo_camera.html#a7611e0d97d57abf36b4fa7dca2a3cfc5',1,'StereoCamera']]],
+ ['saveconfig',['saveConfig',['../class_stereo_camera.html#a568930e8b3668361fedad5233ab5ba47',1,'StereoCamera']]],
+ ['savelog',['saveLog',['../class_system_log.html#a9714a265975472433882962b7449bd45',1,'SystemLog']]],
+ ['savelogtofile',['saveLogToFile',['../class_system_log.html#af41d346f86242f5be187fe2be354347d',1,'SystemLog']]],
+ ['scenewindow',['SceneWindow',['../classglwindow_1_1_scene_window.html',1,'glwindow']]],
+ ['scopedcontext',['ScopedContext',['../structglwindow_1_1_g_l_window_1_1_scoped_context.html',1,'glwindow::GLWindow']]],
+ ['setcalibparams',['setCalibParams',['../class_stereo_camera.html#a98d7546631507bcede3c9a850e69db7a',1,'StereoCamera']]],
+ ['setloglevel',['setLogLevel',['../class_stereo_camera.html#adb684170c2180eb2109f9eecd1723c1c',1,'StereoCamera::setLogLevel()'],['../class_system_log.html#a21296bb67489848bad6cfa04280fec85',1,'SystemLog::setLogLevel()']]],
+ ['setposnumber',['setPosNumber',['../class_stereo_camera.html#ad570580bd5b16ac58831d57ffd23ce5b',1,'StereoCamera']]],
+ ['setrawframerate',['setRawFrameRate',['../class_stereo_camera.html#aa28635e45b1d0ade5353a69e2a7175e4',1,'StereoCamera']]],
+ ['setrawframesize',['setRawFrameSize',['../class_stereo_camera.html#adb1ed69d226251cd050b1deab0270af8',1,'StereoCamera']]],
+ ['setrectframesize',['setRectFrameSize',['../class_stereo_camera.html#ac2d8d3a96e0ac426af20a3e88df0167a',1,'StereoCamera']]],
+ ['setserialnumber',['setSerialNumber',['../class_stereo_camera.html#a110ad0dc21cea5bfa5607752fc858163',1,'StereoCamera']]],
+ ['startcapture',['startCapture',['../class_stereo_camera.html#a4e5146c1d33ab5f4f9a3995b93e3cbc5',1,'StereoCamera']]],
+ ['startstereocompute',['startStereoCompute',['../class_stereo_camera.html#abb6da9140cb988beb753514e7416032b',1,'StereoCamera']]],
+ ['stereocamera',['StereoCamera',['../class_stereo_camera.html',1,'StereoCamera'],['../class_stereo_camera.html#a6d9ac42b50dc07f5f846336ffd29e752',1,'StereoCamera::StereoCamera()']]],
+ ['stereocameracommon_2ecc',['StereoCameraCommon.cc',['../_stereo_camera_common_8cc.html',1,'']]],
+ ['stereocameracommon_2ehpp',['StereoCameraCommon.hpp',['../_stereo_camera_common_8hpp.html',1,'']]],
+ ['stopcapture',['stopCapture',['../class_stereo_camera.html#a8c9f54bf349fd4dc5a8ba9fd26f22c31',1,'StereoCamera']]],
+ ['stopstereocompute',['stopStereoCompute',['../class_stereo_camera.html#a3597295e386dfe27474ff0e9567e6d6c',1,'StereoCamera']]],
+ ['systemlog',['SystemLog',['../class_system_log.html',1,'SystemLog'],['../class_system_log.html#aad41c68c3a8192ddb646170349023c99',1,'SystemLog::SystemLog()']]],
+ ['systemlog_2ehpp',['SystemLog.hpp',['../_system_log_8hpp.html',1,'']]],
+ ['systemstate',['SystemState',['../struct_g_l_window_1_1_system_state.html',1,'glwindow::GLWindow']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_b.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_b.html
new file mode 100644
index 0000000..0814e4e
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_b.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_b.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_b.js
new file mode 100644
index 0000000..4c02995
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_b.js
@@ -0,0 +1,7 @@
+var searchData=
+[
+ ['unitreecamera',['UnitreeCamera',['../class_unitree_camera.html',1,'UnitreeCamera'],['../class_unitree_camera.html#af8a5e0c70f99096ecd378680d2f1ec27',1,'UnitreeCamera::UnitreeCamera()']]],
+ ['unitreecamerasdk_2ehpp',['UnitreeCameraSDK.hpp',['../_unitree_camera_s_d_k_8hpp.html',1,'']]],
+ ['updatecalibparams2flash',['updateCalibParams2Flash',['../class_unitree_camera.html#ab056c2e429ec5d91b7e838c18cbd0d73',1,'UnitreeCamera']]],
+ ['updatefirmware',['updateFirmware',['../class_unitree_camera.html#abd0fd0e03ac98f90905ea582e4f397a7',1,'UnitreeCamera']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_c.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_c.html
new file mode 100644
index 0000000..da08c38
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_c.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_c.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_c.js
new file mode 100644
index 0000000..80182f0
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_c.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['viewpoint',['Viewpoint',['../structglwindow_1_1_scene_window_1_1_viewpoint.html',1,'glwindow::SceneWindow']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_d.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_d.html
new file mode 100644
index 0000000..9986c9c
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_d.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_d.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_d.js
new file mode 100644
index 0000000..3f78a12
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/all_d.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['_7estereocamera',['~StereoCamera',['../class_stereo_camera.html#a2b36ce592e0e2bf0850d37681c51ae60',1,'StereoCamera']]],
+ ['_7eunitreecamera',['~UnitreeCamera',['../class_unitree_camera.html#aefb112b0fa677221163ddd18ccf08d8c',1,'UnitreeCamera']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_0.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_0.html
new file mode 100644
index 0000000..1c3e406
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_0.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_0.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_0.js
new file mode 100644
index 0000000..4f49513
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['_5fdevice_5fpoint_5f',['_Device_Point_',['../struct___device___point__.html',1,'']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_1.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_1.html
new file mode 100644
index 0000000..a8e7069
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_1.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_1.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_1.js
new file mode 100644
index 0000000..8ba0acc
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_1.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['eventdispatcher',['EventDispatcher',['../classglwindow_1_1_event_dispatcher.html',1,'glwindow']]],
+ ['eventhandler',['EventHandler',['../structglwindow_1_1_event_handler.html',1,'glwindow']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_2.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_2.html
new file mode 100644
index 0000000..5c09c96
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_2.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_2.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_2.js
new file mode 100644
index 0000000..7dd1d64
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_2.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['glwindow',['GLWindow',['../classglwindow_1_1_g_l_window.html',1,'glwindow']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_3.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_3.html
new file mode 100644
index 0000000..5faaeba
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_3.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_3.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_3.js
new file mode 100644
index 0000000..b9aa6ad
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_3.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['info_5fcamera_5fos',['info_camera_os',['../classinfo__camera__os.html',1,'']]],
+ ['info_5fcamera_5fstring',['info_camera_String',['../classinfo__camera___string.html',1,'']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_4.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_4.html
new file mode 100644
index 0000000..b3f11bc
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_4.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_4.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_4.js
new file mode 100644
index 0000000..688d4f6
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_4.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['pcl',['PCL',['../struct_p_c_l.html',1,'']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_5.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_5.html
new file mode 100644
index 0000000..952ace6
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_5.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_5.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_5.js
new file mode 100644
index 0000000..28986ea
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_5.js
@@ -0,0 +1,8 @@
+var searchData=
+[
+ ['scenewindow',['SceneWindow',['../classglwindow_1_1_scene_window.html',1,'glwindow']]],
+ ['scopedcontext',['ScopedContext',['../structglwindow_1_1_g_l_window_1_1_scoped_context.html',1,'glwindow::GLWindow']]],
+ ['stereocamera',['StereoCamera',['../class_stereo_camera.html',1,'']]],
+ ['systemlog',['SystemLog',['../class_system_log.html',1,'']]],
+ ['systemstate',['SystemState',['../struct_g_l_window_1_1_system_state.html',1,'glwindow::GLWindow']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_6.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_6.html
new file mode 100644
index 0000000..75eef9f
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_6.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_6.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_6.js
new file mode 100644
index 0000000..69449f8
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_6.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['unitreecamera',['UnitreeCamera',['../class_unitree_camera.html',1,'']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_7.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_7.html
new file mode 100644
index 0000000..745f5f2
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_7.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_7.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_7.js
new file mode 100644
index 0000000..80182f0
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/classes_7.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['viewpoint',['Viewpoint',['../structglwindow_1_1_scene_window_1_1_viewpoint.html',1,'glwindow::SceneWindow']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/close.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/close.png
new file mode 100644
index 0000000..9342d3d
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/close.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/defines_0.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/defines_0.html
new file mode 100644
index 0000000..5b25204
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/defines_0.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/defines_0.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/defines_0.js
new file mode 100644
index 0000000..1b6dfe3
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/defines_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['rgb_5fpcl',['RGB_PCL',['../example__get_point_cloud_8cc.html#a252571170a109b31218383613dc16295',1,'example_getPointCloud.cc']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/enums_0.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/enums_0.html
new file mode 100644
index 0000000..ee343ac
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/enums_0.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/enums_0.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/enums_0.js
new file mode 100644
index 0000000..2bca4cd
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/enums_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['imagerect',['ImageRect',['../_stereo_camera_common_8cc.html#a883d5937720f572dee2c22374bf7190b',1,'StereoCameraCommon.cc']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/files_0.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/files_0.html
new file mode 100644
index 0000000..4f272b8
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/files_0.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/files_0.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/files_0.js
new file mode 100644
index 0000000..300cedb
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/files_0.js
@@ -0,0 +1,8 @@
+var searchData=
+[
+ ['example_5fgetcalibparamsfile_2ecc',['example_getCalibParamsFile.cc',['../example__get_calib_params_file_8cc.html',1,'']]],
+ ['example_5fgetdepthframe_2ecc',['example_getDepthFrame.cc',['../example__get_depth_frame_8cc.html',1,'']]],
+ ['example_5fgetpointcloud_2ecc',['example_getPointCloud.cc',['../example__get_point_cloud_8cc.html',1,'']]],
+ ['example_5fgetrawframe_2ecc',['example_getRawFrame.cc',['../example__get_raw_frame_8cc.html',1,'']]],
+ ['example_5fgetrectframe_2ecc',['example_getRectFrame.cc',['../example__get_rect_frame_8cc.html',1,'']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/files_1.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/files_1.html
new file mode 100644
index 0000000..dcce422
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/files_1.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/files_1.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/files_1.js
new file mode 100644
index 0000000..80501e5
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/files_1.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+ ['stereocameracommon_2ecc',['StereoCameraCommon.cc',['../_stereo_camera_common_8cc.html',1,'']]],
+ ['stereocameracommon_2ehpp',['StereoCameraCommon.hpp',['../_stereo_camera_common_8hpp.html',1,'']]],
+ ['systemlog_2ehpp',['SystemLog.hpp',['../_system_log_8hpp.html',1,'']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/files_2.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/files_2.html
new file mode 100644
index 0000000..d5c6c3b
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/files_2.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/files_2.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/files_2.js
new file mode 100644
index 0000000..e048fcd
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/files_2.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['unitreecamerasdk_2ehpp',['UnitreeCameraSDK.hpp',['../_unitree_camera_s_d_k_8hpp.html',1,'']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_0.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_0.html
new file mode 100644
index 0000000..4e6d87d
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_0.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_0.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_0.js
new file mode 100644
index 0000000..71dc74d
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['checkfirmwareversion',['checkFirmwareVersion',['../class_unitree_camera.html#a45e182540ab4bb59b68fb07c23bdd91f',1,'UnitreeCamera']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_1.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_1.html
new file mode 100644
index 0000000..b343e2d
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_1.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_1.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_1.js
new file mode 100644
index 0000000..605cf07
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_1.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+ ['debugtimeerror',['debugTimeError',['../class_system_log.html#ae1cbe2de51efe22068e2e047396a72dd',1,'SystemLog']]],
+ ['debugtimeinfo',['debugTimeInfo',['../class_system_log.html#ad79238fdcc9a301093d6fa32884d1ae1',1,'SystemLog']]],
+ ['debugtimewarning',['debugTimeWarning',['../class_system_log.html#a08dff4b478ed29a39d584d3b7f21ddfb',1,'SystemLog']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_2.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_2.html
new file mode 100644
index 0000000..ecce2f3
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_2.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_2.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_2.js
new file mode 100644
index 0000000..9c55938
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_2.js
@@ -0,0 +1,13 @@
+var searchData=
+[
+ ['getcalibparams',['getCalibParams',['../class_stereo_camera.html#a61ea11e661cca31acb780edbbba1d32e',1,'StereoCamera']]],
+ ['getdepthframe',['getDepthFrame',['../class_stereo_camera.html#aa0bd7e3a7ab4fcf2598ac4e780a27cb3',1,'StereoCamera']]],
+ ['getdevicenode',['getDeviceNode',['../class_stereo_camera.html#a34d50c8166cf8f3f76fff5789f8f1eee',1,'StereoCamera']]],
+ ['getloglevel',['getLogLevel',['../class_stereo_camera.html#a105495e27d95f3f905ef1de0f9866c70',1,'StereoCamera']]],
+ ['getposnumber',['getPosNumber',['../class_stereo_camera.html#ab844029084a9a9de0996c1e7b24c258c',1,'StereoCamera']]],
+ ['getrawframe',['getRawFrame',['../class_stereo_camera.html#ac8fbb6e1ebd828b1640d43ad7cdc0f9c',1,'StereoCamera']]],
+ ['getrawframerate',['getRawFrameRate',['../class_stereo_camera.html#ac92c3a60ae0c38e203c81bb2a2738eb4',1,'StereoCamera']]],
+ ['getrawframesize',['getRawFrameSize',['../class_stereo_camera.html#a38c990b26167c2f7823b20f44b1a8fa7',1,'StereoCamera']]],
+ ['getserialnumber',['getSerialNumber',['../class_stereo_camera.html#a3cb43015d545854892dd2e4057f5b2be',1,'StereoCamera']]],
+ ['getstereoframe',['getStereoFrame',['../class_stereo_camera.html#aa25f48d95ba8d1c71fb0e40b53f68379',1,'StereoCamera']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_3.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_3.html
new file mode 100644
index 0000000..15f06ab
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_3.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_3.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_3.js
new file mode 100644
index 0000000..9e10f93
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_3.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['isopened',['isOpened',['../class_stereo_camera.html#a47c0d9ee727f13af5d348db9f217a44b',1,'StereoCamera']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_4.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_4.html
new file mode 100644
index 0000000..8985ff2
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_4.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_4.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_4.js
new file mode 100644
index 0000000..64bf2cb
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_4.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['loadcalibparams',['loadCalibParams',['../class_stereo_camera.html#afb896942fb7fe1ea33c80ec9dcefa6a0',1,'StereoCamera']]],
+ ['loadconfig',['loadConfig',['../class_stereo_camera.html#afe25245d518e12c6f0a685d7da7a2979',1,'StereoCamera']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_5.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_5.html
new file mode 100644
index 0000000..0314918
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_5.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_5.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_5.js
new file mode 100644
index 0000000..99c7536
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_5.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['main',['main',['../example__get_calib_params_file_8cc.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): example_getCalibParamsFile.cc'],['../example__get_depth_frame_8cc.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): example_getDepthFrame.cc'],['../example__get_raw_frame_8cc.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): example_getRawFrame.cc'],['../example__get_rect_frame_8cc.html#a0ddf1224851353fc92bfbff6f499fa97',1,'main(int argc, char *argv[]): example_getRectFrame.cc']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_6.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_6.html
new file mode 100644
index 0000000..c506123
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_6.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_6.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_6.js
new file mode 100644
index 0000000..52eb9f3
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_6.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+ ['runtimeerror',['runTimeError',['../class_system_log.html#ac33b9f16ae96885ff7170d209a6af506',1,'SystemLog']]],
+ ['runtimeinfo',['runTimeInfo',['../class_system_log.html#ac9b085c959e3f97d547c997c2fca2613',1,'SystemLog']]],
+ ['runtimewarning',['runTimeWarning',['../class_system_log.html#a69d19a4affe470db2b740a1e9a78e6e5',1,'SystemLog']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_7.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_7.html
new file mode 100644
index 0000000..83a7b84
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_7.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_7.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_7.js
new file mode 100644
index 0000000..68aa3ab
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_7.js
@@ -0,0 +1,20 @@
+var searchData=
+[
+ ['savecalibparams',['saveCalibParams',['../class_stereo_camera.html#a7611e0d97d57abf36b4fa7dca2a3cfc5',1,'StereoCamera']]],
+ ['saveconfig',['saveConfig',['../class_stereo_camera.html#a568930e8b3668361fedad5233ab5ba47',1,'StereoCamera']]],
+ ['savelog',['saveLog',['../class_system_log.html#a9714a265975472433882962b7449bd45',1,'SystemLog']]],
+ ['savelogtofile',['saveLogToFile',['../class_system_log.html#af41d346f86242f5be187fe2be354347d',1,'SystemLog']]],
+ ['setcalibparams',['setCalibParams',['../class_stereo_camera.html#a98d7546631507bcede3c9a850e69db7a',1,'StereoCamera']]],
+ ['setloglevel',['setLogLevel',['../class_stereo_camera.html#adb684170c2180eb2109f9eecd1723c1c',1,'StereoCamera::setLogLevel()'],['../class_system_log.html#a21296bb67489848bad6cfa04280fec85',1,'SystemLog::setLogLevel()']]],
+ ['setposnumber',['setPosNumber',['../class_stereo_camera.html#ad570580bd5b16ac58831d57ffd23ce5b',1,'StereoCamera']]],
+ ['setrawframerate',['setRawFrameRate',['../class_stereo_camera.html#aa28635e45b1d0ade5353a69e2a7175e4',1,'StereoCamera']]],
+ ['setrawframesize',['setRawFrameSize',['../class_stereo_camera.html#adb1ed69d226251cd050b1deab0270af8',1,'StereoCamera']]],
+ ['setrectframesize',['setRectFrameSize',['../class_stereo_camera.html#ac2d8d3a96e0ac426af20a3e88df0167a',1,'StereoCamera']]],
+ ['setserialnumber',['setSerialNumber',['../class_stereo_camera.html#a110ad0dc21cea5bfa5607752fc858163',1,'StereoCamera']]],
+ ['startcapture',['startCapture',['../class_stereo_camera.html#a4e5146c1d33ab5f4f9a3995b93e3cbc5',1,'StereoCamera']]],
+ ['startstereocompute',['startStereoCompute',['../class_stereo_camera.html#abb6da9140cb988beb753514e7416032b',1,'StereoCamera']]],
+ ['stereocamera',['StereoCamera',['../class_stereo_camera.html#a6d9ac42b50dc07f5f846336ffd29e752',1,'StereoCamera']]],
+ ['stopcapture',['stopCapture',['../class_stereo_camera.html#a8c9f54bf349fd4dc5a8ba9fd26f22c31',1,'StereoCamera']]],
+ ['stopstereocompute',['stopStereoCompute',['../class_stereo_camera.html#a3597295e386dfe27474ff0e9567e6d6c',1,'StereoCamera']]],
+ ['systemlog',['SystemLog',['../class_system_log.html#aad41c68c3a8192ddb646170349023c99',1,'SystemLog']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_8.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_8.html
new file mode 100644
index 0000000..b55f0e6
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_8.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_8.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_8.js
new file mode 100644
index 0000000..8f6db03
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_8.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+ ['unitreecamera',['UnitreeCamera',['../class_unitree_camera.html#af8a5e0c70f99096ecd378680d2f1ec27',1,'UnitreeCamera']]],
+ ['updatecalibparams2flash',['updateCalibParams2Flash',['../class_unitree_camera.html#ab056c2e429ec5d91b7e838c18cbd0d73',1,'UnitreeCamera']]],
+ ['updatefirmware',['updateFirmware',['../class_unitree_camera.html#abd0fd0e03ac98f90905ea582e4f397a7',1,'UnitreeCamera']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_9.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_9.html
new file mode 100644
index 0000000..c73f07b
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_9.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_9.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_9.js
new file mode 100644
index 0000000..3f78a12
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/functions_9.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['_7estereocamera',['~StereoCamera',['../class_stereo_camera.html#a2b36ce592e0e2bf0850d37681c51ae60',1,'StereoCamera']]],
+ ['_7eunitreecamera',['~UnitreeCamera',['../class_unitree_camera.html#aefb112b0fa677221163ddd18ccf08d8c',1,'UnitreeCamera']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/mag_sel.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/mag_sel.png
new file mode 100644
index 0000000..81f6040
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/mag_sel.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/nomatches.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/nomatches.html
new file mode 100644
index 0000000..b1ded27
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/nomatches.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/pages_0.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/pages_0.html
new file mode 100644
index 0000000..4955b9e
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/pages_0.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/pages_0.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/pages_0.js
new file mode 100644
index 0000000..7cf7879
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/pages_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['introduction',['Introduction',['../index.html',1,'']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/search.css b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/search.css
new file mode 100644
index 0000000..3cf9df9
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/search.css
@@ -0,0 +1,271 @@
+/*---------------- Search Box */
+
+#FSearchBox {
+ float: left;
+}
+
+#MSearchBox {
+ white-space : nowrap;
+ float: none;
+ margin-top: 8px;
+ right: 0px;
+ width: 170px;
+ height: 24px;
+ z-index: 102;
+}
+
+#MSearchBox .left
+{
+ display:block;
+ position:absolute;
+ left:10px;
+ width:20px;
+ height:19px;
+ background:url('search_l.png') no-repeat;
+ background-position:right;
+}
+
+#MSearchSelect {
+ display:block;
+ position:absolute;
+ width:20px;
+ height:19px;
+}
+
+.left #MSearchSelect {
+ left:4px;
+}
+
+.right #MSearchSelect {
+ right:5px;
+}
+
+#MSearchField {
+ display:block;
+ position:absolute;
+ height:19px;
+ background:url('search_m.png') repeat-x;
+ border:none;
+ width:115px;
+ margin-left:20px;
+ padding-left:4px;
+ color: #909090;
+ outline: none;
+ font: 9pt Arial, Verdana, sans-serif;
+ -webkit-border-radius: 0px;
+}
+
+#FSearchBox #MSearchField {
+ margin-left:15px;
+}
+
+#MSearchBox .right {
+ display:block;
+ position:absolute;
+ right:10px;
+ top:8px;
+ width:20px;
+ height:19px;
+ background:url('search_r.png') no-repeat;
+ background-position:left;
+}
+
+#MSearchClose {
+ display: none;
+ position: absolute;
+ top: 4px;
+ background : none;
+ border: none;
+ margin: 0px 4px 0px 0px;
+ padding: 0px 0px;
+ outline: none;
+}
+
+.left #MSearchClose {
+ left: 6px;
+}
+
+.right #MSearchClose {
+ right: 2px;
+}
+
+.MSearchBoxActive #MSearchField {
+ color: #000000;
+}
+
+/*---------------- Search filter selection */
+
+#MSearchSelectWindow {
+ display: none;
+ position: absolute;
+ left: 0; top: 0;
+ border: 1px solid #90A5CE;
+ background-color: #F9FAFC;
+ z-index: 10001;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ -moz-border-radius: 4px;
+ -webkit-border-top-left-radius: 4px;
+ -webkit-border-top-right-radius: 4px;
+ -webkit-border-bottom-left-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+.SelectItem {
+ font: 8pt Arial, Verdana, sans-serif;
+ padding-left: 2px;
+ padding-right: 12px;
+ border: 0px;
+}
+
+span.SelectionMark {
+ margin-right: 4px;
+ font-family: monospace;
+ outline-style: none;
+ text-decoration: none;
+}
+
+a.SelectItem {
+ display: block;
+ outline-style: none;
+ color: #000000;
+ text-decoration: none;
+ padding-left: 6px;
+ padding-right: 12px;
+}
+
+a.SelectItem:focus,
+a.SelectItem:active {
+ color: #000000;
+ outline-style: none;
+ text-decoration: none;
+}
+
+a.SelectItem:hover {
+ color: #FFFFFF;
+ background-color: #3D578C;
+ outline-style: none;
+ text-decoration: none;
+ cursor: pointer;
+ display: block;
+}
+
+/*---------------- Search results window */
+
+iframe#MSearchResults {
+ width: 60ex;
+ height: 15em;
+}
+
+#MSearchResultsWindow {
+ display: none;
+ position: absolute;
+ left: 0; top: 0;
+ border: 1px solid #000;
+ background-color: #EEF1F7;
+ z-index:10000;
+}
+
+/* ----------------------------------- */
+
+
+#SRIndex {
+ clear:both;
+ padding-bottom: 15px;
+}
+
+.SREntry {
+ font-size: 10pt;
+ padding-left: 1ex;
+}
+
+.SRPage .SREntry {
+ font-size: 8pt;
+ padding: 1px 5px;
+}
+
+body.SRPage {
+ margin: 5px 2px;
+}
+
+.SRChildren {
+ padding-left: 3ex; padding-bottom: .5em
+}
+
+.SRPage .SRChildren {
+ display: none;
+}
+
+.SRSymbol {
+ font-weight: bold;
+ color: #425E97;
+ font-family: Arial, Verdana, sans-serif;
+ text-decoration: none;
+ outline: none;
+}
+
+a.SRScope {
+ display: block;
+ color: #425E97;
+ font-family: Arial, Verdana, sans-serif;
+ text-decoration: none;
+ outline: none;
+}
+
+a.SRSymbol:focus, a.SRSymbol:active,
+a.SRScope:focus, a.SRScope:active {
+ text-decoration: underline;
+}
+
+span.SRScope {
+ padding-left: 4px;
+}
+
+.SRPage .SRStatus {
+ padding: 2px 5px;
+ font-size: 8pt;
+ font-style: italic;
+}
+
+.SRResult {
+ display: none;
+}
+
+DIV.searchresults {
+ margin-left: 10px;
+ margin-right: 10px;
+}
+
+/*---------------- External search page results */
+
+.searchresult {
+ background-color: #F0F3F8;
+}
+
+.pages b {
+ color: white;
+ padding: 5px 5px 3px 5px;
+ background-image: url("../tab_a.png");
+ background-repeat: repeat-x;
+ text-shadow: 0 1px 1px #000000;
+}
+
+.pages {
+ line-height: 17px;
+ margin-left: 4px;
+ text-decoration: none;
+}
+
+.hl {
+ font-weight: bold;
+}
+
+#searchresults {
+ margin-bottom: 20px;
+}
+
+.searchpages {
+ margin-top: 10px;
+}
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/search.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/search.js
new file mode 100644
index 0000000..dedce3b
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/search.js
@@ -0,0 +1,791 @@
+function convertToId(search)
+{
+ var result = '';
+ for (i=0;i do a search
+ {
+ this.Search();
+ }
+ }
+
+ this.OnSearchSelectKey = function(evt)
+ {
+ var e = (evt) ? evt : window.event; // for IE
+ if (e.keyCode==40 && this.searchIndex0) // Up
+ {
+ this.searchIndex--;
+ this.OnSelectItem(this.searchIndex);
+ }
+ else if (e.keyCode==13 || e.keyCode==27)
+ {
+ this.OnSelectItem(this.searchIndex);
+ this.CloseSelectionWindow();
+ this.DOMSearchField().focus();
+ }
+ return false;
+ }
+
+ // --------- Actions
+
+ // Closes the results window.
+ this.CloseResultsWindow = function()
+ {
+ this.DOMPopupSearchResultsWindow().style.display = 'none';
+ this.DOMSearchClose().style.display = 'none';
+ this.Activate(false);
+ }
+
+ this.CloseSelectionWindow = function()
+ {
+ this.DOMSearchSelectWindow().style.display = 'none';
+ }
+
+ // Performs a search.
+ this.Search = function()
+ {
+ this.keyTimeout = 0;
+
+ // strip leading whitespace
+ var searchValue = this.DOMSearchField().value.replace(/^ +/, "");
+
+ var code = searchValue.toLowerCase().charCodeAt(0);
+ var idxChar = searchValue.substr(0, 1).toLowerCase();
+ if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair
+ {
+ idxChar = searchValue.substr(0, 2);
+ }
+
+ var resultsPage;
+ var resultsPageWithSearch;
+ var hasResultsPage;
+
+ var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar);
+ if (idx!=-1)
+ {
+ var hexCode=idx.toString(16);
+ resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html';
+ resultsPageWithSearch = resultsPage+'?'+escape(searchValue);
+ hasResultsPage = true;
+ }
+ else // nothing available for this search term
+ {
+ resultsPage = this.resultsPath + '/nomatches.html';
+ resultsPageWithSearch = resultsPage;
+ hasResultsPage = false;
+ }
+
+ window.frames.MSearchResults.location = resultsPageWithSearch;
+ var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow();
+
+ if (domPopupSearchResultsWindow.style.display!='block')
+ {
+ var domSearchBox = this.DOMSearchBox();
+ this.DOMSearchClose().style.display = 'inline';
+ if (this.insideFrame)
+ {
+ var domPopupSearchResults = this.DOMPopupSearchResults();
+ domPopupSearchResultsWindow.style.position = 'relative';
+ domPopupSearchResultsWindow.style.display = 'block';
+ var width = document.body.clientWidth - 8; // the -8 is for IE :-(
+ domPopupSearchResultsWindow.style.width = width + 'px';
+ domPopupSearchResults.style.width = width + 'px';
+ }
+ else
+ {
+ var domPopupSearchResults = this.DOMPopupSearchResults();
+ var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth;
+ var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1;
+ domPopupSearchResultsWindow.style.display = 'block';
+ left -= domPopupSearchResults.offsetWidth;
+ domPopupSearchResultsWindow.style.top = top + 'px';
+ domPopupSearchResultsWindow.style.left = left + 'px';
+ }
+ }
+
+ this.lastSearchValue = searchValue;
+ this.lastResultsPage = resultsPage;
+ }
+
+ // -------- Activation Functions
+
+ // Activates or deactivates the search panel, resetting things to
+ // their default values if necessary.
+ this.Activate = function(isActive)
+ {
+ if (isActive || // open it
+ this.DOMPopupSearchResultsWindow().style.display == 'block'
+ )
+ {
+ this.DOMSearchBox().className = 'MSearchBoxActive';
+
+ var searchField = this.DOMSearchField();
+
+ if (searchField.value == this.searchLabel) // clear "Search" term upon entry
+ {
+ searchField.value = '';
+ this.searchActive = true;
+ }
+ }
+ else if (!isActive) // directly remove the panel
+ {
+ this.DOMSearchBox().className = 'MSearchBoxInactive';
+ this.DOMSearchField().value = this.searchLabel;
+ this.searchActive = false;
+ this.lastSearchValue = ''
+ this.lastResultsPage = '';
+ }
+ }
+}
+
+// -----------------------------------------------------------------------
+
+// The class that handles everything on the search results page.
+function SearchResults(name)
+{
+ // The number of matches from the last run of .
+ this.lastMatchCount = 0;
+ this.lastKey = 0;
+ this.repeatOn = false;
+
+ // Toggles the visibility of the passed element ID.
+ this.FindChildElement = function(id)
+ {
+ var parentElement = document.getElementById(id);
+ var element = parentElement.firstChild;
+
+ while (element && element!=parentElement)
+ {
+ if (element.nodeName == 'DIV' && element.className == 'SRChildren')
+ {
+ return element;
+ }
+
+ if (element.nodeName == 'DIV' && element.hasChildNodes())
+ {
+ element = element.firstChild;
+ }
+ else if (element.nextSibling)
+ {
+ element = element.nextSibling;
+ }
+ else
+ {
+ do
+ {
+ element = element.parentNode;
+ }
+ while (element && element!=parentElement && !element.nextSibling);
+
+ if (element && element!=parentElement)
+ {
+ element = element.nextSibling;
+ }
+ }
+ }
+ }
+
+ this.Toggle = function(id)
+ {
+ var element = this.FindChildElement(id);
+ if (element)
+ {
+ if (element.style.display == 'block')
+ {
+ element.style.display = 'none';
+ }
+ else
+ {
+ element.style.display = 'block';
+ }
+ }
+ }
+
+ // Searches for the passed string. If there is no parameter,
+ // it takes it from the URL query.
+ //
+ // Always returns true, since other documents may try to call it
+ // and that may or may not be possible.
+ this.Search = function(search)
+ {
+ if (!search) // get search word from URL
+ {
+ search = window.location.search;
+ search = search.substring(1); // Remove the leading '?'
+ search = unescape(search);
+ }
+
+ search = search.replace(/^ +/, ""); // strip leading spaces
+ search = search.replace(/ +$/, ""); // strip trailing spaces
+ search = search.toLowerCase();
+ search = convertToId(search);
+
+ var resultRows = document.getElementsByTagName("div");
+ var matches = 0;
+
+ var i = 0;
+ while (i < resultRows.length)
+ {
+ var row = resultRows.item(i);
+ if (row.className == "SRResult")
+ {
+ var rowMatchName = row.id.toLowerCase();
+ rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_'
+
+ if (search.length<=rowMatchName.length &&
+ rowMatchName.substr(0, search.length)==search)
+ {
+ row.style.display = 'block';
+ matches++;
+ }
+ else
+ {
+ row.style.display = 'none';
+ }
+ }
+ i++;
+ }
+ document.getElementById("Searching").style.display='none';
+ if (matches == 0) // no results
+ {
+ document.getElementById("NoMatches").style.display='block';
+ }
+ else // at least one result
+ {
+ document.getElementById("NoMatches").style.display='none';
+ }
+ this.lastMatchCount = matches;
+ return true;
+ }
+
+ // return the first item with index index or higher that is visible
+ this.NavNext = function(index)
+ {
+ var focusItem;
+ while (1)
+ {
+ var focusName = 'Item'+index;
+ focusItem = document.getElementById(focusName);
+ if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
+ {
+ break;
+ }
+ else if (!focusItem) // last element
+ {
+ break;
+ }
+ focusItem=null;
+ index++;
+ }
+ return focusItem;
+ }
+
+ this.NavPrev = function(index)
+ {
+ var focusItem;
+ while (1)
+ {
+ var focusName = 'Item'+index;
+ focusItem = document.getElementById(focusName);
+ if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
+ {
+ break;
+ }
+ else if (!focusItem) // last element
+ {
+ break;
+ }
+ focusItem=null;
+ index--;
+ }
+ return focusItem;
+ }
+
+ this.ProcessKeys = function(e)
+ {
+ if (e.type == "keydown")
+ {
+ this.repeatOn = false;
+ this.lastKey = e.keyCode;
+ }
+ else if (e.type == "keypress")
+ {
+ if (!this.repeatOn)
+ {
+ if (this.lastKey) this.repeatOn = true;
+ return false; // ignore first keypress after keydown
+ }
+ }
+ else if (e.type == "keyup")
+ {
+ this.lastKey = 0;
+ this.repeatOn = false;
+ }
+ return this.lastKey!=0;
+ }
+
+ this.Nav = function(evt,itemIndex)
+ {
+ var e = (evt) ? evt : window.event; // for IE
+ if (e.keyCode==13) return true;
+ if (!this.ProcessKeys(e)) return false;
+
+ if (this.lastKey==38) // Up
+ {
+ var newIndex = itemIndex-1;
+ var focusItem = this.NavPrev(newIndex);
+ if (focusItem)
+ {
+ var child = this.FindChildElement(focusItem.parentNode.parentNode.id);
+ if (child && child.style.display == 'block') // children visible
+ {
+ var n=0;
+ var tmpElem;
+ while (1) // search for last child
+ {
+ tmpElem = document.getElementById('Item'+newIndex+'_c'+n);
+ if (tmpElem)
+ {
+ focusItem = tmpElem;
+ }
+ else // found it!
+ {
+ break;
+ }
+ n++;
+ }
+ }
+ }
+ if (focusItem)
+ {
+ focusItem.focus();
+ }
+ else // return focus to search field
+ {
+ parent.document.getElementById("MSearchField").focus();
+ }
+ }
+ else if (this.lastKey==40) // Down
+ {
+ var newIndex = itemIndex+1;
+ var focusItem;
+ var item = document.getElementById('Item'+itemIndex);
+ var elem = this.FindChildElement(item.parentNode.parentNode.id);
+ if (elem && elem.style.display == 'block') // children visible
+ {
+ focusItem = document.getElementById('Item'+itemIndex+'_c0');
+ }
+ if (!focusItem) focusItem = this.NavNext(newIndex);
+ if (focusItem) focusItem.focus();
+ }
+ else if (this.lastKey==39) // Right
+ {
+ var item = document.getElementById('Item'+itemIndex);
+ var elem = this.FindChildElement(item.parentNode.parentNode.id);
+ if (elem) elem.style.display = 'block';
+ }
+ else if (this.lastKey==37) // Left
+ {
+ var item = document.getElementById('Item'+itemIndex);
+ var elem = this.FindChildElement(item.parentNode.parentNode.id);
+ if (elem) elem.style.display = 'none';
+ }
+ else if (this.lastKey==27) // Escape
+ {
+ parent.searchBox.CloseResultsWindow();
+ parent.document.getElementById("MSearchField").focus();
+ }
+ else if (this.lastKey==13) // Enter
+ {
+ return true;
+ }
+ return false;
+ }
+
+ this.NavChild = function(evt,itemIndex,childIndex)
+ {
+ var e = (evt) ? evt : window.event; // for IE
+ if (e.keyCode==13) return true;
+ if (!this.ProcessKeys(e)) return false;
+
+ if (this.lastKey==38) // Up
+ {
+ if (childIndex>0)
+ {
+ var newIndex = childIndex-1;
+ document.getElementById('Item'+itemIndex+'_c'+newIndex).focus();
+ }
+ else // already at first child, jump to parent
+ {
+ document.getElementById('Item'+itemIndex).focus();
+ }
+ }
+ else if (this.lastKey==40) // Down
+ {
+ var newIndex = childIndex+1;
+ var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex);
+ if (!elem) // last child, jump to parent next parent
+ {
+ elem = this.NavNext(itemIndex+1);
+ }
+ if (elem)
+ {
+ elem.focus();
+ }
+ }
+ else if (this.lastKey==27) // Escape
+ {
+ parent.searchBox.CloseResultsWindow();
+ parent.document.getElementById("MSearchField").focus();
+ }
+ else if (this.lastKey==13) // Enter
+ {
+ return true;
+ }
+ return false;
+ }
+}
+
+function setKeyActions(elem,action)
+{
+ elem.setAttribute('onkeydown',action);
+ elem.setAttribute('onkeypress',action);
+ elem.setAttribute('onkeyup',action);
+}
+
+function setClassAttr(elem,attr)
+{
+ elem.setAttribute('class',attr);
+ elem.setAttribute('className',attr);
+}
+
+function createResults()
+{
+ var results = document.getElementById("SRResults");
+ for (var e=0; e
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/variables_0.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/variables_0.js
new file mode 100644
index 0000000..52beea4
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/variables_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['clr',['clr',['../struct_p_c_l.html#a6555550c790378b130273dd6ae3a2158',1,'PCL']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/variables_1.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/variables_1.html
new file mode 100644
index 0000000..84237b6
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/variables_1.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/variables_1.js b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/variables_1.js
new file mode 100644
index 0000000..22840f4
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/search/variables_1.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['pts',['pts',['../struct_p_c_l.html#a07c28b7f533724d91ec4a9e461989d8c',1,'PCL']]]
+];
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/splitbar.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/splitbar.png
new file mode 100644
index 0000000..fe895f2
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/splitbar.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/struct___device___point__-members.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/struct___device___point__-members.html
new file mode 100644
index 0000000..e0d05be
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/struct___device___point__-members.html
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for _Device_Point_ , including all inherited members.
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/struct___device___point__.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/struct___device___point__.html
new file mode 100644
index 0000000..470e5d7
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/struct___device___point__.html
@@ -0,0 +1,158 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: _Device_Point_ Struct Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+uint32_t u_index
+
+
+BYTE FlashType
+
+
+BYTE ISP_ID
+
+
+PVOID p_device
+
+
+H_Fun_IPb Falsh_R
+
+
+H_Fun_IPb Falsh_W
+
+
+H_Fun_Cinfo pInfo
+
+
+H_Fun_WB Set_ISP_Reg
+
+
+H_Fun_WPb Get_ISP_Reg
+
+
+H_Fun_BWW Set_Sensor_Reg
+
+
+H_Fun_BWPw Get_Sensor_Reg
+
+
+Input_GPIO_Get Input_Gpio_Get
+
+
+Output_GPIO_Set Output_Gpio_set
+
+
+Input_GPIO_Init Input_Gpio_init
+
+
+Output_GPIO_Init Output_Gpio_init
+
+
+PVOID RES_1
+
+
+PVOID RES_2
+
+
+H_Fun_CinfoStr pInfoStr
+
+
+pExID pExid_R
+
+
+pExID pExid_W
+
+
+PVOID respoint
+
+
+pCUSTOMERFun pCustomer
+
+
+
The documentation for this struct was generated from the following file:
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/struct___device___point____coll__graph.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/struct___device___point____coll__graph.map
new file mode 100644
index 0000000..f394c50
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/struct___device___point____coll__graph.map
@@ -0,0 +1,2 @@
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/struct___device___point____coll__graph.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/struct___device___point____coll__graph.md5
new file mode 100644
index 0000000..c7366d1
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/struct___device___point____coll__graph.md5
@@ -0,0 +1 @@
+b59d458dc6010826c9138b2c27598384
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/struct___device___point____coll__graph.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/struct___device___point____coll__graph.png
new file mode 100644
index 0000000..2a0c7d8
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/struct___device___point____coll__graph.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/struct_g_l_window_1_1_system_state-members.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/struct_g_l_window_1_1_system_state-members.html
new file mode 100644
index 0000000..b162105
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/struct_g_l_window_1_1_system_state-members.html
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for glwindow::GLWindow::SystemState , including all inherited members.
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/struct_g_l_window_1_1_system_state.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/struct_g_l_window_1_1_system_state.html
new file mode 100644
index 0000000..09d4f24
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/struct_g_l_window_1_1_system_state.html
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: glwindow::GLWindow::SystemState Struct Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+bool init (int w, int h, const char *title)
+
+
+void destroy ()
+
+
+void swap_buffers ()
+
+
+void set_title (const char *title)
+
+
+bool make_current ()
+
+
+
+
+Display * display
+
+
+Window window
+
+
+GLXContext context
+
+
+Atom delete_atom
+
+
+Cursor cursor
+
+
+int width
+
+
+int height
+
+
+bool visible
+
+
+
The documentation for this struct was generated from the following file:
+examples/glViewer/glwindow_x11.cpp
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/struct_p_c_l-members.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/struct_p_c_l-members.html
new file mode 100644
index 0000000..761b680
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/struct_p_c_l-members.html
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for PCL , including all inherited members.
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/struct_p_c_l.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/struct_p_c_l.html
new file mode 100644
index 0000000..a23a4d7
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/struct_p_c_l.html
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: PCL Struct Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
this struct is used for RGB point cloud capture and display
+ More...
+
+
#include <StereoCameraCommon.hpp >
+
+
+
+cv::Vec3f pts
+ points coordinates (x, y, z)
+
+
+cv::Vec3b clr
+ points color (b, g, r)
+
+
+
+
this struct is used for RGB point cloud capture and display
+
pts for point coordinates (x, y, z), clr for point color (b, g, r)
Note point cloud simple type
+
Attention point data element type float, color data element type uchar
+
The documentation for this struct was generated from the following file:
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_event_handler-members.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_event_handler-members.html
new file mode 100644
index 0000000..5374867
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_event_handler-members.html
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for glwindow::EventHandler , including all inherited members.
+
+ on_button_down (GLWindow &win, int btn, int state, int x, int y) (defined in glwindow::EventHandler )glwindow::EventHandler inline virtual
+ on_button_up (GLWindow &win, int btn, int state, int x, int y) (defined in glwindow::EventHandler )glwindow::EventHandler inline virtual
+ on_close (GLWindow &win) (defined in glwindow::EventHandler )glwindow::EventHandler inline virtual
+ on_key_down (GLWindow &win, int key) (defined in glwindow::EventHandler )glwindow::EventHandler inline virtual
+ on_key_up (GLWindow &win, int key) (defined in glwindow::EventHandler )glwindow::EventHandler inline virtual
+ on_mouse_move (GLWindow &win, int state, int x, int y) (defined in glwindow::EventHandler )glwindow::EventHandler inline virtual
+ on_mouse_wheel (GLWindow &win, int state, int x, int y, int dx, int dy) (defined in glwindow::EventHandler )glwindow::EventHandler inline virtual
+ on_resize (GLWindow &win, int x, int y, int w, int h) (defined in glwindow::EventHandler )glwindow::EventHandler inline virtual
+ on_text (GLWindow &win, const char *text, int len) (defined in glwindow::EventHandler )glwindow::EventHandler inline virtual
+ ~EventHandler () (defined in glwindow::EventHandler )glwindow::EventHandler inline virtual
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_event_handler.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_event_handler.html
new file mode 100644
index 0000000..24964b3
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_event_handler.html
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: glwindow::EventHandler Struct Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+virtual bool on_key_down (GLWindow &win, int key)
+
+
+virtual bool on_key_up (GLWindow &win, int key)
+
+
+virtual bool on_text (GLWindow &win, const char *text, int len)
+
+
+virtual bool on_button_down (GLWindow &win, int btn, int state, int x, int y)
+
+
+virtual bool on_button_up (GLWindow &win, int btn, int state, int x, int y)
+
+
+virtual bool on_mouse_move (GLWindow &win, int state, int x, int y)
+
+
+virtual bool on_mouse_wheel (GLWindow &win, int state, int x, int y, int dx, int dy)
+
+
+virtual bool on_resize (GLWindow &win, int x, int y, int w, int h)
+
+
+virtual bool on_close (GLWindow &win)
+
+
+
The documentation for this struct was generated from the following file:
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_event_handler__inherit__graph.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_event_handler__inherit__graph.map
new file mode 100644
index 0000000..2314df8
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_event_handler__inherit__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_event_handler__inherit__graph.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_event_handler__inherit__graph.md5
new file mode 100644
index 0000000..2a0db9e
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_event_handler__inherit__graph.md5
@@ -0,0 +1 @@
+0ab96645613531c9cf3dbfe057be442c
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_event_handler__inherit__graph.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_event_handler__inherit__graph.png
new file mode 100644
index 0000000..2911e13
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_event_handler__inherit__graph.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_g_l_window_1_1_scoped_context-members.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_g_l_window_1_1_scoped_context-members.html
new file mode 100644
index 0000000..f86dc11
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_g_l_window_1_1_scoped_context-members.html
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for glwindow::GLWindow::ScopedContext , including all inherited members.
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_g_l_window_1_1_scoped_context.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_g_l_window_1_1_scoped_context.html
new file mode 100644
index 0000000..2514b61
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_g_l_window_1_1_scoped_context.html
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: glwindow::GLWindow::ScopedContext Struct Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The documentation for this struct was generated from the following file:
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_g_l_window_1_1_scoped_context__coll__graph.map b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_g_l_window_1_1_scoped_context__coll__graph.map
new file mode 100644
index 0000000..27dba31
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_g_l_window_1_1_scoped_context__coll__graph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_g_l_window_1_1_scoped_context__coll__graph.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_g_l_window_1_1_scoped_context__coll__graph.md5
new file mode 100644
index 0000000..960d30d
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_g_l_window_1_1_scoped_context__coll__graph.md5
@@ -0,0 +1 @@
+8ad66e757da7ac5070285f635808d79a
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_g_l_window_1_1_scoped_context__coll__graph.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_g_l_window_1_1_scoped_context__coll__graph.png
new file mode 100644
index 0000000..d73d80e
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_g_l_window_1_1_scoped_context__coll__graph.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_scene_window_1_1_viewpoint-members.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_scene_window_1_1_viewpoint-members.html
new file mode 100644
index 0000000..ff28d37
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_scene_window_1_1_viewpoint-members.html
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: Member List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This is the complete list of members for glwindow::SceneWindow::Viewpoint , including all inherited members.
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_scene_window_1_1_viewpoint.html b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_scene_window_1_1_viewpoint.html
new file mode 100644
index 0000000..23e1f2a
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/structglwindow_1_1_scene_window_1_1_viewpoint.html
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+UnitreeCameraSDK: glwindow::SceneWindow::Viewpoint Struct Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UnitreeCameraSDK
+ 1.0.1
+
+ unitree stereo camra apis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+double target [3]
+
+
+double azimuth
+
+
+double elevation
+
+
+double distance
+
+
+
The documentation for this struct was generated from the following files:
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/sync_off.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/sync_off.png
new file mode 100644
index 0000000..3b443fc
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/sync_off.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/sync_on.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/sync_on.png
new file mode 100644
index 0000000..e08320f
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/sync_on.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/tab_a.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/tab_a.png
new file mode 100644
index 0000000..3b725c4
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/tab_a.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/tab_b.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/tab_b.png
new file mode 100644
index 0000000..e2b4a86
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/tab_b.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/tab_h.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/tab_h.png
new file mode 100644
index 0000000..fd5cb70
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/tab_h.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/tab_s.png b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/tab_s.png
new file mode 100644
index 0000000..ab478c9
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/tab_s.png differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/tabs.css b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/tabs.css
new file mode 100644
index 0000000..bbde11e
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/html/tabs.css
@@ -0,0 +1 @@
+.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:transparent}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/Makefile b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/Makefile
new file mode 100644
index 0000000..8cc3866
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/Makefile
@@ -0,0 +1,21 @@
+all: refman.pdf
+
+pdf: refman.pdf
+
+refman.pdf: clean refman.tex
+ pdflatex refman
+ makeindex refman.idx
+ pdflatex refman
+ latex_count=8 ; \
+ while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\
+ do \
+ echo "Rerunning latex...." ;\
+ pdflatex refman ;\
+ latex_count=`expr $$latex_count - 1` ;\
+ done
+ makeindex refman.idx
+ pdflatex refman
+
+
+clean:
+ rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_stereo_camera_common_8cc.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_stereo_camera_common_8cc.tex
new file mode 100644
index 0000000..2038db9
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_stereo_camera_common_8cc.tex
@@ -0,0 +1,89 @@
+\hypertarget{_stereo_camera_common_8cc}{}\section{src/\+Stereo\+Camera\+Common.cc File Reference}
+\label{_stereo_camera_common_8cc}\index{src/\+Stereo\+Camera\+Common.\+cc@{src/\+Stereo\+Camera\+Common.\+cc}}
+
+
+This file is part of Unitree\+Camera\+S\+DK, which implement stereo vision algorithm.
+
+
+{\ttfamily \#include \char`\"{}Stereo\+Camera\+Common.\+hpp\char`\"{}}\newline
+{\ttfamily \#include $<$unistd.\+h$>$}\newline
+{\ttfamily \#include $<$sys/shm.\+h$>$}\newline
+Include dependency graph for Stereo\+Camera\+Common.\+cc\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{_stereo_camera_common_8cc__incl}
+\end{center}
+\end{figure}
+\subsection*{Typedefs}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\Hypertarget{_stereo_camera_common_8cc_a45c9c33784774d9db5196228af42ade2}\label{_stereo_camera_common_8cc_a45c9c33784774d9db5196228af42ade2}}
+typedef enum \hyperlink{_stereo_camera_common_8cc_a883d5937720f572dee2c22374bf7190b}{Image\+Rect} {\bfseries Image\+Rect\+Type}
+\end{DoxyCompactItemize}
+\subsection*{Enumerations}
+\begin{DoxyCompactItemize}
+\item
+enum \hyperlink{_stereo_camera_common_8cc_a883d5937720f572dee2c22374bf7190b}{Image\+Rect} \{ {\bfseries R\+E\+C\+T\+\_\+\+F\+I\+S\+H\+E\+YE} = 0,
+{\bfseries R\+E\+C\+T\+\_\+\+L\+O\+N\+G\+L\+AT},
+{\bfseries R\+E\+C\+T\+\_\+\+P\+E\+R\+S\+P\+E\+C\+T\+I\+VE}
+ \}\begin{DoxyCompactList}\small\item\em This enum is used for stereo images rectification. \end{DoxyCompactList}
+\end{DoxyCompactItemize}
+\subsection*{Functions}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\Hypertarget{_stereo_camera_common_8cc_aa41028d84c6cc0f12740351985e25da7}\label{_stereo_camera_common_8cc_aa41028d84c6cc0f12740351985e25da7}}
+double {\bfseries Mat\+Row\+Mul} (cv\+::\+Mat m, double x, double y, double z, int r)
+\item
+\mbox{\Hypertarget{_stereo_camera_common_8cc_a6939ed8f37b4dfd4bdca76bb95545165}\label{_stereo_camera_common_8cc_a6939ed8f37b4dfd4bdca76bb95545165}}
+int {\bfseries convert\+Raw\+Fisheye\+Image} (cv\+::\+Mat \&left, cv\+::\+Mat \&right, float da=0.\+0, float db=-\/32.\+0, float dcx=0.\+0, float dcy=0.\+0)
+\item
+\mbox{\Hypertarget{_stereo_camera_common_8cc_a6ef6fea1313a8a9891d2f1f678a80012}\label{_stereo_camera_common_8cc_a6ef6fea1313a8a9891d2f1f678a80012}}
+int {\bfseries convert\+Raw\+Fisheye\+Image} (int radius, cv\+::\+Mat \&left, cv\+::\+Mat \&right)
+\item
+\mbox{\Hypertarget{_stereo_camera_common_8cc_a3ac4c463fd503a9b114180cfc5f193f2}\label{_stereo_camera_common_8cc_a3ac4c463fd503a9b114180cfc5f193f2}}
+bool {\bfseries init\+Rectify\+Map} (cv\+::\+Mat K, cv\+::\+Mat D, cv\+::\+Mat R, cv\+::\+Mat Knew, double xi0, double xi1, cv\+::\+Size size, int mode, cv\+::\+Mat \&map1, cv\+::\+Mat \&map2)
+\item
+\mbox{\Hypertarget{_stereo_camera_common_8cc_a883a659a463c067a78194c408f9d320c}\label{_stereo_camera_common_8cc_a883a659a463c067a78194c408f9d320c}}
+uchar {\bfseries get\+Blue\+Seg\+Val} (float minv, float maxv, float curv)
+\item
+\mbox{\Hypertarget{_stereo_camera_common_8cc_a0aeb36e5e9d4ef6d0e22167ce996414d}\label{_stereo_camera_common_8cc_a0aeb36e5e9d4ef6d0e22167ce996414d}}
+uchar {\bfseries get\+Green\+Seg\+Val} (float minv, float maxv, float curv)
+\item
+\mbox{\Hypertarget{_stereo_camera_common_8cc_aeae18b151dd0f723b04923e956416f8c}\label{_stereo_camera_common_8cc_aeae18b151dd0f723b04923e956416f8c}}
+uchar {\bfseries get\+Red\+Seg\+Val} (float minv, float maxv, float curv)
+\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+This file is part of Unitree\+Camera\+S\+DK, which implement stereo vision algorithm.
+
+image capture, image rectification, disparity computation, point cloud generation \begin{DoxyAuthor}{Author}
+Zhang\+Chunyang create date 2021.\+07.\+31
+\end{DoxyAuthor}
+\begin{DoxyVersion}{Version}
+1.\+0.\+1
+\end{DoxyVersion}
+\begin{DoxyCopyright}{Copyright}
+Copyright (c)2019-\/2021, Hangzhou Yushu Technology Stock C\+O.\+L\+TD. All Rights Reserved.
+\end{DoxyCopyright}
+
+
+\subsection{Enumeration Type Documentation}
+\mbox{\Hypertarget{_stereo_camera_common_8cc_a883d5937720f572dee2c22374bf7190b}\label{_stereo_camera_common_8cc_a883d5937720f572dee2c22374bf7190b}}
+\index{Stereo\+Camera\+Common.\+cc@{Stereo\+Camera\+Common.\+cc}!Image\+Rect@{Image\+Rect}}
+\index{Image\+Rect@{Image\+Rect}!Stereo\+Camera\+Common.\+cc@{Stereo\+Camera\+Common.\+cc}}
+\subsubsection{\texorpdfstring{Image\+Rect}{ImageRect}}
+{\footnotesize\ttfamily enum \hyperlink{_stereo_camera_common_8cc_a883d5937720f572dee2c22374bf7190b}{Image\+Rect}}
+
+
+
+This enum is used for stereo images rectification.
+
+F\+I\+S\+H\+E\+YE and L\+O\+N\+G\+L\+AT for fisheye camera model, P\+E\+R\+S\+P\+E\+C\+T\+I\+VE for pinhole cameras \begin{DoxyNote}{Note}
+used for differen camera models
+\end{DoxyNote}
+\begin{DoxyAttention}{Attention}
+make sure camera model is matched.
+\end{DoxyAttention}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_stereo_camera_common_8cc__incl.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_stereo_camera_common_8cc__incl.md5
new file mode 100644
index 0000000..fea48d2
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_stereo_camera_common_8cc__incl.md5
@@ -0,0 +1 @@
+3688f76f6e3cc41a3ff3e8c44f2f04dc
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_stereo_camera_common_8cc__incl.pdf b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_stereo_camera_common_8cc__incl.pdf
new file mode 100644
index 0000000..8f26a99
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_stereo_camera_common_8cc__incl.pdf differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_stereo_camera_common_8hpp.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_stereo_camera_common_8hpp.tex
new file mode 100644
index 0000000..d2902d0
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_stereo_camera_common_8hpp.tex
@@ -0,0 +1,60 @@
+\hypertarget{_stereo_camera_common_8hpp}{}\section{include/\+Stereo\+Camera\+Common.hpp File Reference}
+\label{_stereo_camera_common_8hpp}\index{include/\+Stereo\+Camera\+Common.\+hpp@{include/\+Stereo\+Camera\+Common.\+hpp}}
+
+
+This file is part of Unitree\+Camera\+S\+DK, which declare stereo camera algorithm A\+P\+Is.
+
+
+{\ttfamily \#include $<$string$>$}\newline
+{\ttfamily \#include $<$thread$>$}\newline
+{\ttfamily \#include $<$mutex$>$}\newline
+{\ttfamily \#include $<$condition\+\_\+variable$>$}\newline
+{\ttfamily \#include $<$opencv2/opencv.\+hpp$>$}\newline
+{\ttfamily \#include $<$chrono$>$}\newline
+{\ttfamily \#include \char`\"{}System\+Log.\+hpp\char`\"{}}\newline
+Include dependency graph for Stereo\+Camera\+Common.\+hpp\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{_stereo_camera_common_8hpp__incl}
+\end{center}
+\end{figure}
+This graph shows which files directly or indirectly include this file\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{_stereo_camera_common_8hpp__dep__incl}
+\end{center}
+\end{figure}
+\subsection*{Classes}
+\begin{DoxyCompactItemize}
+\item
+struct \hyperlink{struct_p_c_l}{P\+CL}
+\begin{DoxyCompactList}\small\item\em this struct is used for R\+GB point cloud capture and display \end{DoxyCompactList}\item
+class \hyperlink{class_stereo_camera}{Stereo\+Camera}
+\begin{DoxyCompactList}\small\item\em this class integrate camera control and stereo vision algorithm \end{DoxyCompactList}\end{DoxyCompactItemize}
+\subsection*{Typedefs}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\Hypertarget{_stereo_camera_common_8hpp_ac9f36f2ca129cb52709d9b161d119f70}\label{_stereo_camera_common_8hpp_ac9f36f2ca129cb52709d9b161d119f70}}
+typedef struct \hyperlink{struct_p_c_l}{P\+CL} {\bfseries P\+C\+L\+Type}
+\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+This file is part of Unitree\+Camera\+S\+DK, which declare stereo camera algorithm A\+P\+Is.
+
+image capture, image rectification, disparity computation, depth image and point cloud generation \begin{DoxyAuthor}{Author}
+Zhang\+Chunyang
+\end{DoxyAuthor}
+\begin{DoxyDate}{Date}
+2021.\+07.\+31
+\end{DoxyDate}
+\begin{DoxyVersion}{Version}
+1.\+0.\+1
+\end{DoxyVersion}
+\begin{DoxyCopyright}{Copyright}
+Copyright (c)2020-\/2021, Hangzhou Yushu Technology Stock C\+O.\+L\+TD. All Rights Reserved.
+\end{DoxyCopyright}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_stereo_camera_common_8hpp__dep__incl.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_stereo_camera_common_8hpp__dep__incl.md5
new file mode 100644
index 0000000..7abb3f1
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_stereo_camera_common_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+7f4db891f68f1d4e01f1d1594809e7ee
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_stereo_camera_common_8hpp__dep__incl.pdf b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_stereo_camera_common_8hpp__dep__incl.pdf
new file mode 100644
index 0000000..41dad99
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_stereo_camera_common_8hpp__dep__incl.pdf differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_stereo_camera_common_8hpp__incl.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_stereo_camera_common_8hpp__incl.md5
new file mode 100644
index 0000000..0fbd8a5
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_stereo_camera_common_8hpp__incl.md5
@@ -0,0 +1 @@
+b776e70f5a953ff824f392fc5bfb13b1
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_stereo_camera_common_8hpp__incl.pdf b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_stereo_camera_common_8hpp__incl.pdf
new file mode 100644
index 0000000..5ecf1f2
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_stereo_camera_common_8hpp__incl.pdf differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_system_log_8hpp.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_system_log_8hpp.tex
new file mode 100644
index 0000000..141c8ff
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_system_log_8hpp.tex
@@ -0,0 +1,48 @@
+\hypertarget{_system_log_8hpp}{}\section{include/\+System\+Log.hpp File Reference}
+\label{_system_log_8hpp}\index{include/\+System\+Log.\+hpp@{include/\+System\+Log.\+hpp}}
+
+
+This file is part of Unitree\+Camera\+S\+DK, which declare the A\+P\+Is of log system.
+
+
+{\ttfamily \#include $<$stdarg.\+h$>$}\newline
+{\ttfamily \#include $<$stdio.\+h$>$}\newline
+{\ttfamily \#include $<$string$>$}\newline
+Include dependency graph for System\+Log.\+hpp\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=256pt]{_system_log_8hpp__incl}
+\end{center}
+\end{figure}
+This graph shows which files directly or indirectly include this file\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{_system_log_8hpp__dep__incl}
+\end{center}
+\end{figure}
+\subsection*{Classes}
+\begin{DoxyCompactItemize}
+\item
+class \hyperlink{class_system_log}{System\+Log}
+\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+This file is part of Unitree\+Camera\+S\+DK, which declare the A\+P\+Is of log system.
+
+The log system is used for unified management of the output information of the special system. \begin{DoxyAuthor}{Author}
+Zhang\+Chunyang
+\end{DoxyAuthor}
+\begin{DoxyDate}{Date}
+2021.\+07.\+31
+\end{DoxyDate}
+\begin{DoxyVersion}{Version}
+1.\+0.\+1
+\end{DoxyVersion}
+\begin{DoxyCopyright}{Copyright}
+Copyright (c)2020-\/2021, Hangzhou Yushu Technology Stock C\+O.\+L\+TD. All Rights Reserved.
+\end{DoxyCopyright}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_system_log_8hpp__dep__incl.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_system_log_8hpp__dep__incl.md5
new file mode 100644
index 0000000..69ca37d
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_system_log_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+7ba5ad435a88ad707a5fa2d1a339e212
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_system_log_8hpp__dep__incl.pdf b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_system_log_8hpp__dep__incl.pdf
new file mode 100644
index 0000000..9e44c18
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_system_log_8hpp__dep__incl.pdf differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_system_log_8hpp__incl.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_system_log_8hpp__incl.md5
new file mode 100644
index 0000000..0bdd592
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_system_log_8hpp__incl.md5
@@ -0,0 +1 @@
+eea3b1c6140c740cb39e3585c6c6f257
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_system_log_8hpp__incl.pdf b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_system_log_8hpp__incl.pdf
new file mode 100644
index 0000000..7250004
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_system_log_8hpp__incl.pdf differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_unitree_camera_s_d_k_8hpp.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_unitree_camera_s_d_k_8hpp.tex
new file mode 100644
index 0000000..5341f52
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_unitree_camera_s_d_k_8hpp.tex
@@ -0,0 +1,55 @@
+\hypertarget{_unitree_camera_s_d_k_8hpp}{}\section{include/\+Unitree\+Camera\+S\+DK.hpp File Reference}
+\label{_unitree_camera_s_d_k_8hpp}\index{include/\+Unitree\+Camera\+S\+D\+K.\+hpp@{include/\+Unitree\+Camera\+S\+D\+K.\+hpp}}
+
+
+This file is part of Unitree\+Camera\+S\+DK, which declare unitree camera A\+P\+Is.
+
+
+{\ttfamily \#include \char`\"{}Stereo\+Camera\+Common.\+hpp\char`\"{}}\newline
+Include dependency graph for Unitree\+Camera\+S\+D\+K.\+hpp\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{_unitree_camera_s_d_k_8hpp__incl}
+\end{center}
+\end{figure}
+This graph shows which files directly or indirectly include this file\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{_unitree_camera_s_d_k_8hpp__dep__incl}
+\end{center}
+\end{figure}
+\subsection*{Classes}
+\begin{DoxyCompactItemize}
+\item
+class \hyperlink{class_unitree_camera}{Unitree\+Camera}
+\end{DoxyCompactItemize}
+\subsection*{Functions}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\Hypertarget{_unitree_camera_s_d_k_8hpp_a698a13c84f0a5e266fabc2722bcc33e1}\label{_unitree_camera_s_d_k_8hpp_a698a13c84f0a5e266fabc2722bcc33e1}}
+cv\+::\+Mat {\bfseries get\+Rotation\+Matrix} (int axis=\textquotesingle{}x\textquotesingle{}, float theta=0.\+0)
+\item
+\mbox{\Hypertarget{_unitree_camera_s_d_k_8hpp_a3b00277586cab0e3a3d1ba29e3aa6d8e}\label{_unitree_camera_s_d_k_8hpp_a3b00277586cab0e3a3d1ba29e3aa6d8e}}
+cv\+::\+Mat {\bfseries get\+Translation\+Matrix} (int axis=\textquotesingle{}x\textquotesingle{}, float theta=0.\+0, cv\+::\+Mat vec=cv\+::\+Mat())
+\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+This file is part of Unitree\+Camera\+S\+DK, which declare unitree camera A\+P\+Is.
+
+class \hyperlink{class_unitree_camera}{Unitree\+Camera} inherits the A\+P\+Is of class \hyperlink{class_stereo_camera}{Stereo\+Camera} image capture, image rectification, disparity computation, depth image and point cloud generation update camera firmware, flash camera parameters to camera \begin{DoxyAuthor}{Author}
+Zhang\+Chunyang
+\end{DoxyAuthor}
+\begin{DoxyDate}{Date}
+2021.\+07.\+31
+\end{DoxyDate}
+\begin{DoxyVersion}{Version}
+1.\+0.\+1
+\end{DoxyVersion}
+\begin{DoxyCopyright}{Copyright}
+Copyright (c) 2020-\/2021, Hangzhou Yushu Technology Stock C\+O.\+L\+TD. All Rights Reserved.
+\end{DoxyCopyright}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_unitree_camera_s_d_k_8hpp__dep__incl.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_unitree_camera_s_d_k_8hpp__dep__incl.md5
new file mode 100644
index 0000000..13a1baf
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_unitree_camera_s_d_k_8hpp__dep__incl.md5
@@ -0,0 +1 @@
+a07567474bbc9135661cab5b88320738
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_unitree_camera_s_d_k_8hpp__dep__incl.pdf b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_unitree_camera_s_d_k_8hpp__dep__incl.pdf
new file mode 100644
index 0000000..887105c
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_unitree_camera_s_d_k_8hpp__dep__incl.pdf differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_unitree_camera_s_d_k_8hpp__incl.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_unitree_camera_s_d_k_8hpp__incl.md5
new file mode 100644
index 0000000..d571ede
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_unitree_camera_s_d_k_8hpp__incl.md5
@@ -0,0 +1 @@
+81d016b1eecb4aa1226c28e6ac6e50b1
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_unitree_camera_s_d_k_8hpp__incl.pdf b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_unitree_camera_s_d_k_8hpp__incl.pdf
new file mode 100644
index 0000000..17d2f23
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/_unitree_camera_s_d_k_8hpp__incl.pdf differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/annotated.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/annotated.tex
new file mode 100644
index 0000000..bcab401
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/annotated.tex
@@ -0,0 +1,17 @@
+\section{Class List}
+Here are the classes, structs, unions and interfaces with brief descriptions\+:\begin{DoxyCompactList}
+\item\contentsline{section}{\hyperlink{struct___device___point__}{\+\_\+\+Device\+\_\+\+Point\+\_\+} }{\pageref{struct___device___point__}}{}
+\item\contentsline{section}{\hyperlink{classglwindow_1_1_event_dispatcher}{glwindow\+::\+Event\+Dispatcher} }{\pageref{classglwindow_1_1_event_dispatcher}}{}
+\item\contentsline{section}{\hyperlink{structglwindow_1_1_event_handler}{glwindow\+::\+Event\+Handler} }{\pageref{structglwindow_1_1_event_handler}}{}
+\item\contentsline{section}{\hyperlink{classglwindow_1_1_g_l_window}{glwindow\+::\+G\+L\+Window} }{\pageref{classglwindow_1_1_g_l_window}}{}
+\item\contentsline{section}{\hyperlink{classinfo__camera__os}{info\+\_\+camera\+\_\+os} }{\pageref{classinfo__camera__os}}{}
+\item\contentsline{section}{\hyperlink{classinfo__camera___string}{info\+\_\+camera\+\_\+\+String} }{\pageref{classinfo__camera___string}}{}
+\item\contentsline{section}{\hyperlink{struct_p_c_l}{P\+CL} \\*This struct is used for R\+GB point cloud capture and display }{\pageref{struct_p_c_l}}{}
+\item\contentsline{section}{\hyperlink{classglwindow_1_1_scene_window}{glwindow\+::\+Scene\+Window} }{\pageref{classglwindow_1_1_scene_window}}{}
+\item\contentsline{section}{\hyperlink{structglwindow_1_1_g_l_window_1_1_scoped_context}{glwindow\+::\+G\+L\+Window\+::\+Scoped\+Context} }{\pageref{structglwindow_1_1_g_l_window_1_1_scoped_context}}{}
+\item\contentsline{section}{\hyperlink{class_stereo_camera}{Stereo\+Camera} \\*This class integrate camera control and stereo vision algorithm }{\pageref{class_stereo_camera}}{}
+\item\contentsline{section}{\hyperlink{class_system_log}{System\+Log} }{\pageref{class_system_log}}{}
+\item\contentsline{section}{\hyperlink{struct_g_l_window_1_1_system_state}{glwindow\+::\+G\+L\+Window\+::\+System\+State} }{\pageref{struct_g_l_window_1_1_system_state}}{}
+\item\contentsline{section}{\hyperlink{class_unitree_camera}{Unitree\+Camera} }{\pageref{class_unitree_camera}}{}
+\item\contentsline{section}{\hyperlink{structglwindow_1_1_scene_window_1_1_viewpoint}{glwindow\+::\+Scene\+Window\+::\+Viewpoint} }{\pageref{structglwindow_1_1_scene_window_1_1_viewpoint}}{}
+\end{DoxyCompactList}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/class_stereo_camera.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/class_stereo_camera.tex
new file mode 100644
index 0000000..89842b8
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/class_stereo_camera.tex
@@ -0,0 +1,968 @@
+\hypertarget{class_stereo_camera}{}\section{Stereo\+Camera Class Reference}
+\label{class_stereo_camera}\index{Stereo\+Camera@{Stereo\+Camera}}
+
+
+this class integrate camera control and stereo vision algorithm
+
+
+
+
+{\ttfamily \#include $<$Stereo\+Camera\+Common.\+hpp$>$}
+
+
+
+Inheritance diagram for Stereo\+Camera\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=163pt]{class_stereo_camera__inherit__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{DoxyCompactItemize}
+\item
+\hyperlink{class_stereo_camera_a6d9ac42b50dc07f5f846336ffd29e752}{Stereo\+Camera} (void)
+\begin{DoxyCompactList}\small\item\em \hyperlink{class_stereo_camera}{Stereo\+Camera}. \end{DoxyCompactList}\item
+\mbox{\Hypertarget{class_stereo_camera_ad5caa5f91c77562d8b6183ef153a943c}\label{class_stereo_camera_ad5caa5f91c77562d8b6183ef153a943c}}
+{\bfseries Stereo\+Camera} (std\+::string file\+Name)
+\item
+\mbox{\Hypertarget{class_stereo_camera_a6e0d6591990e7f8d175d67e9609c8a4c}\label{class_stereo_camera_a6e0d6591990e7f8d175d67e9609c8a4c}}
+{\bfseries Stereo\+Camera} (int device\+Node)
+\item
+virtual \hyperlink{class_stereo_camera_a2b36ce592e0e2bf0850d37681c51ae60}{$\sim$\+Stereo\+Camera} ()
+\begin{DoxyCompactList}\small\item\em \hyperlink{class_stereo_camera}{Stereo\+Camera} destructor. \end{DoxyCompactList}\item
+virtual bool \hyperlink{class_stereo_camera_a47c0d9ee727f13af5d348db9f217a44b}{is\+Opened} (void)
+\begin{DoxyCompactList}\small\item\em get stereo camera running status \end{DoxyCompactList}\item
+virtual bool \hyperlink{class_stereo_camera_adb684170c2180eb2109f9eecd1723c1c}{set\+Log\+Level} (int level)
+\begin{DoxyCompactList}\small\item\em set stereo camera ouput log level \end{DoxyCompactList}\item
+virtual bool \hyperlink{class_stereo_camera_ad570580bd5b16ac58831d57ffd23ce5b}{set\+Pos\+Number} (int pos\+Number)
+\begin{DoxyCompactList}\small\item\em set stereo camera position number \end{DoxyCompactList}\item
+virtual bool \hyperlink{class_stereo_camera_a110ad0dc21cea5bfa5607752fc858163}{set\+Serial\+Number} (int serial\+Number)
+\begin{DoxyCompactList}\small\item\em set stereo camera serial number \end{DoxyCompactList}\item
+virtual bool \hyperlink{class_stereo_camera_aa28635e45b1d0ade5353a69e2a7175e4}{set\+Raw\+Frame\+Rate} (int frame\+Rate)
+\begin{DoxyCompactList}\small\item\em set stereo camera F\+PS (Frames Per Seconds) \end{DoxyCompactList}\item
+virtual bool \hyperlink{class_stereo_camera_adb1ed69d226251cd050b1deab0270af8}{set\+Raw\+Frame\+Size} (cv\+::\+Size frame\+Size)
+\begin{DoxyCompactList}\small\item\em set stereo camera frame size \end{DoxyCompactList}\item
+virtual bool \hyperlink{class_stereo_camera_ac2d8d3a96e0ac426af20a3e88df0167a}{set\+Rect\+Frame\+Size} (cv\+::\+Size frame\+Size)
+\begin{DoxyCompactList}\small\item\em set rectification image size \end{DoxyCompactList}\item
+virtual bool \hyperlink{class_stereo_camera_a98d7546631507bcede3c9a850e69db7a}{set\+Calib\+Params} (std\+::vector$<$ cv\+::\+Mat $>$ params\+Array, bool flag=false)
+\begin{DoxyCompactList}\small\item\em set stereo camera calibration parameters \end{DoxyCompactList}\item
+virtual int \hyperlink{class_stereo_camera_a105495e27d95f3f905ef1de0f9866c70}{get\+Log\+Level} (void) const
+\begin{DoxyCompactList}\small\item\em get log system output level \end{DoxyCompactList}\item
+virtual int \hyperlink{class_stereo_camera_a34d50c8166cf8f3f76fff5789f8f1eee}{get\+Device\+Node} (void) const
+\begin{DoxyCompactList}\small\item\em get camera device node \end{DoxyCompactList}\item
+virtual int \hyperlink{class_stereo_camera_ab844029084a9a9de0996c1e7b24c258c}{get\+Pos\+Number} (void) const
+\begin{DoxyCompactList}\small\item\em get stereo camera device node \end{DoxyCompactList}\item
+virtual int \hyperlink{class_stereo_camera_a3cb43015d545854892dd2e4057f5b2be}{get\+Serial\+Number} (void) const
+\begin{DoxyCompactList}\small\item\em get stereo camera serial number \end{DoxyCompactList}\item
+virtual float \hyperlink{class_stereo_camera_ac92c3a60ae0c38e203c81bb2a2738eb4}{get\+Raw\+Frame\+Rate} (void) const
+\begin{DoxyCompactList}\small\item\em get stereo camera capture frame rate \end{DoxyCompactList}\item
+virtual cv\+::\+Size \hyperlink{class_stereo_camera_a38c990b26167c2f7823b20f44b1a8fa7}{get\+Raw\+Frame\+Size} (void) const
+\begin{DoxyCompactList}\small\item\em get stereo camera frame size \end{DoxyCompactList}\item
+virtual bool \hyperlink{class_stereo_camera_ac8fbb6e1ebd828b1640d43ad7cdc0f9c}{get\+Raw\+Frame} (cv\+::\+Mat \&frame, std\+::chrono\+::microseconds \&time\+Stamp)
+\begin{DoxyCompactList}\small\item\em get stereo camera raw frame \end{DoxyCompactList}\item
+virtual bool \hyperlink{class_stereo_camera_aa25f48d95ba8d1c71fb0e40b53f68379}{get\+Stereo\+Frame} (cv\+::\+Mat \&left, cv\+::\+Mat \&right, std\+::chrono\+::microseconds \&time\+Stamp)
+\begin{DoxyCompactList}\small\item\em get stereo camera left and right image \end{DoxyCompactList}\item
+virtual bool \hyperlink{class_stereo_camera_aa0bd7e3a7ab4fcf2598ac4e780a27cb3}{get\+Depth\+Frame} (cv\+::\+Mat \&depth, bool color, std\+::chrono\+::microseconds \&time\+Stamp)
+\begin{DoxyCompactList}\small\item\em get stereo camera depth image \end{DoxyCompactList}\item
+\mbox{\Hypertarget{class_stereo_camera_aed61a02ac44c99be0aa62afea2ad9ed8}\label{class_stereo_camera_aed61a02ac44c99be0aa62afea2ad9ed8}}
+virtual bool {\bfseries get\+Point\+Cloud} (std\+::vector$<$ cv\+::\+Vec3f $>$ \&pcl, std\+::chrono\+::microseconds \&time\+Stamp)
+\item
+\mbox{\Hypertarget{class_stereo_camera_ac571ca8f4dc4783052bdab22f68a1ac1}\label{class_stereo_camera_ac571ca8f4dc4783052bdab22f68a1ac1}}
+virtual bool {\bfseries get\+Point\+Cloud} (std\+::vector$<$ \hyperlink{struct_p_c_l}{P\+C\+L\+Type} $>$ \&pcl, std\+::chrono\+::microseconds \&time\+Stamp)
+\item
+virtual bool \hyperlink{class_stereo_camera_a61ea11e661cca31acb780edbbba1d32e}{get\+Calib\+Params} (std\+::vector$<$ cv\+::\+Mat $>$ \¶ms\+Array, bool flag=false)
+\begin{DoxyCompactList}\small\item\em get stereo camera calibration paramerters \end{DoxyCompactList}\item
+\mbox{\Hypertarget{class_stereo_camera_a6a2a8d258ad08a80ab02932d5248850e}\label{class_stereo_camera_a6a2a8d258ad08a80ab02932d5248850e}}
+virtual bool {\bfseries get\+Rect\+Stereo\+Frame} (cv\+::\+Mat \&left, cv\+::\+Mat \&right, cv\+::\+Mat \&feim)
+\item
+\mbox{\Hypertarget{class_stereo_camera_a2730d460983ce6af37a4cf13025b4ed8}\label{class_stereo_camera_a2730d460983ce6af37a4cf13025b4ed8}}
+virtual bool {\bfseries get\+Rect\+Stereo\+Frame} (cv\+::\+Mat \&left, cv\+::\+Mat \&right, cv\+::\+Mat \&feim, std\+::chrono\+::microseconds \&time\+Stamp)
+\item
+virtual bool \hyperlink{class_stereo_camera_afe25245d518e12c6f0a685d7da7a2979}{load\+Config} (std\+::string file\+Name)
+\begin{DoxyCompactList}\small\item\em load stereo camera config parameters \end{DoxyCompactList}\item
+virtual bool \hyperlink{class_stereo_camera_afb896942fb7fe1ea33c80ec9dcefa6a0}{load\+Calib\+Params} (std\+::string file\+Name)
+\begin{DoxyCompactList}\small\item\em load stereo camera calibration params \end{DoxyCompactList}\item
+virtual bool \hyperlink{class_stereo_camera_a568930e8b3668361fedad5233ab5ba47}{save\+Config} (std\+::string file\+Name=\char`\"{}stereo\+\_\+camera\+\_\+config.\+yaml\char`\"{})
+\begin{DoxyCompactList}\small\item\em save stereo camera settings to config file \end{DoxyCompactList}\item
+virtual bool \hyperlink{class_stereo_camera_a7611e0d97d57abf36b4fa7dca2a3cfc5}{save\+Calib\+Params} (std\+::string file\+Name=\char`\"{}stereo\+\_\+camera\+\_\+calibparams.\+yaml\char`\"{})
+\begin{DoxyCompactList}\small\item\em save stereo camera calibration parameters to file \end{DoxyCompactList}\item
+virtual bool \hyperlink{class_stereo_camera_a4e5146c1d33ab5f4f9a3995b93e3cbc5}{start\+Capture} (bool udp\+Flag=false, bool shm\+Flag=false)
+\begin{DoxyCompactList}\small\item\em start stereo camera capture thread \end{DoxyCompactList}\item
+virtual bool \hyperlink{class_stereo_camera_abb6da9140cb988beb753514e7416032b}{start\+Stereo\+Compute} (void)
+\begin{DoxyCompactList}\small\item\em start stereo camera computing disparity thread \end{DoxyCompactList}\item
+virtual bool \hyperlink{class_stereo_camera_a3597295e386dfe27474ff0e9567e6d6c}{stop\+Stereo\+Compute} (void)
+\begin{DoxyCompactList}\small\item\em stop stereo camera computing disparity thread \end{DoxyCompactList}\item
+virtual bool \hyperlink{class_stereo_camera_a8c9f54bf349fd4dc5a8ba9fd26f22c31}{stop\+Capture} (void)
+\begin{DoxyCompactList}\small\item\em stop stereo camera capture thread \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+this class integrate camera control and stereo vision algorithm
+
+this class is the base of Unitree\+Camera\+S\+DK, it includes many functions, such as camera frame capturing, image rectification, disparity computation, generating point cloud and etc.
+
+\subsection{Constructor \& Destructor Documentation}
+\mbox{\Hypertarget{class_stereo_camera_a6d9ac42b50dc07f5f846336ffd29e752}\label{class_stereo_camera_a6d9ac42b50dc07f5f846336ffd29e752}}
+\index{Stereo\+Camera@{Stereo\+Camera}!Stereo\+Camera@{Stereo\+Camera}}
+\index{Stereo\+Camera@{Stereo\+Camera}!Stereo\+Camera@{Stereo\+Camera}}
+\subsubsection{\texorpdfstring{Stereo\+Camera()}{StereoCamera()}}
+{\footnotesize\ttfamily Stereo\+Camera\+::\+Stereo\+Camera (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}
+
+
+
+\hyperlink{class_stereo_camera}{Stereo\+Camera}.
+
+\hyperlink{class_stereo_camera}{Stereo\+Camera} constructor overload.
+
+default constructor
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em None} & \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+None
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+initialize \hyperlink{class_stereo_camera}{Stereo\+Camera} object by default settings
+\begin{DoxyCode}
+\hyperlink{class_stereo_camera}{StereoCamera} *pCam = \textcolor{keyword}{new} \hyperlink{class_stereo_camera_a6d9ac42b50dc07f5f846336ffd29e752}{StereoCamera}(); or \hyperlink{class_stereo_camera}{StereoCamera} cam;
+\end{DoxyCode}
+
+\end{DoxyNote}
+This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
+
+use camera config file to init stereo camera
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em file\+Name} & camera config file, include file path, for example\+: $\sim$/test/stereo\+Config.yaml \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+None
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+initialize \hyperlink{class_stereo_camera}{Stereo\+Camera} object by settings from configure file
+\begin{DoxyCode}
+\hyperlink{class_stereo_camera_a6d9ac42b50dc07f5f846336ffd29e752}{StereoCamera}(\textcolor{stringliteral}{"path\_to/config.yaml"});
+\end{DoxyCode}
+
+\end{DoxyNote}
+This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
+
+use camera device node number to init stereo camera
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em device\+Node} & camera device node, for example\+: /dev/video0, camera device node\+: 0 \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+None
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+initialize \hyperlink{class_stereo_camera}{Stereo\+Camera} object by device node number
+\begin{DoxyCode}
+\hyperlink{class_stereo_camera_a6d9ac42b50dc07f5f846336ffd29e752}{StereoCamera}(0); \textcolor{comment}{// for /dev/video0}
+\end{DoxyCode}
+
+\end{DoxyNote}
+\mbox{\Hypertarget{class_stereo_camera_a2b36ce592e0e2bf0850d37681c51ae60}\label{class_stereo_camera_a2b36ce592e0e2bf0850d37681c51ae60}}
+\index{Stereo\+Camera@{Stereo\+Camera}!````~Stereo\+Camera@{$\sim$\+Stereo\+Camera}}
+\index{````~Stereo\+Camera@{$\sim$\+Stereo\+Camera}!Stereo\+Camera@{Stereo\+Camera}}
+\subsubsection{\texorpdfstring{$\sim$\+Stereo\+Camera()}{~StereoCamera()}}
+{\footnotesize\ttfamily Stereo\+Camera\+::$\sim$\+Stereo\+Camera (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}
+
+
+
+\hyperlink{class_stereo_camera}{Stereo\+Camera} destructor.
+
+release all stereo camera resource
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em None} & \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+None
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+automatically called when \hyperlink{class_stereo_camera}{Stereo\+Camera} object released
+\end{DoxyNote}
+
+
+\subsection{Member Function Documentation}
+\mbox{\Hypertarget{class_stereo_camera_a61ea11e661cca31acb780edbbba1d32e}\label{class_stereo_camera_a61ea11e661cca31acb780edbbba1d32e}}
+\index{Stereo\+Camera@{Stereo\+Camera}!get\+Calib\+Params@{get\+Calib\+Params}}
+\index{get\+Calib\+Params@{get\+Calib\+Params}!Stereo\+Camera@{Stereo\+Camera}}
+\subsubsection{\texorpdfstring{get\+Calib\+Params()}{getCalibParams()}}
+{\footnotesize\ttfamily bool Stereo\+Camera\+::get\+Calib\+Params (\begin{DoxyParamCaption}\item[{std\+::vector$<$ cv\+::\+Mat $>$ \&}]{params\+Array, }\item[{bool}]{flag = {\ttfamily false} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}
+
+
+
+get stereo camera calibration paramerters
+
+calibration paramerters include\+: camera intrinsic matrix, camera distortion coefficient, xi(mei model), rotation matrix, translation vector, rectification image intrinsic matrix
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em flag} & default false, false\+: get left camera parameters, true\+: get right camera parameters. \\
+\hline
+\mbox{\tt out} & {\em params\+Array} & arrange Array element as follows\+: intrinsic,distortion,xi,rotation,translation,kfe \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+true or false, if assignment successfully return true, otherwise return false
+\end{DoxyReturn}
+\begin{DoxyAttention}{Attention}
+This funtion must be called after \hyperlink{class_stereo_camera_a4e5146c1d33ab5f4f9a3995b93e3cbc5}{start\+Capture()}
+\end{DoxyAttention}
+\begin{DoxyNote}{Note}
+
+\begin{DoxyCode}
+cam.startCapture();
+std::vector paramsArray;
+\textcolor{keywordflow}{if}(cam.getCalibParams(paramsArray))\{
+ \textcolor{comment}{//do something}
+\}
+\end{DoxyCode}
+
+\end{DoxyNote}
+\mbox{\Hypertarget{class_stereo_camera_aa0bd7e3a7ab4fcf2598ac4e780a27cb3}\label{class_stereo_camera_aa0bd7e3a7ab4fcf2598ac4e780a27cb3}}
+\index{Stereo\+Camera@{Stereo\+Camera}!get\+Depth\+Frame@{get\+Depth\+Frame}}
+\index{get\+Depth\+Frame@{get\+Depth\+Frame}!Stereo\+Camera@{Stereo\+Camera}}
+\subsubsection{\texorpdfstring{get\+Depth\+Frame()}{getDepthFrame()}}
+{\footnotesize\ttfamily bool Stereo\+Camera\+::get\+Depth\+Frame (\begin{DoxyParamCaption}\item[{cv\+::\+Mat \&}]{depth, }\item[{bool}]{color, }\item[{std\+::chrono\+::microseconds \&}]{time\+Stamp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}
+
+
+
+get stereo camera depth image
+
+
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em color} & true\+: depth is color image, false\+:depth is gray image \\
+\hline
+\mbox{\tt out} & {\em depth} & left image \\
+\hline
+\mbox{\tt out} & {\em time\+Stamp} & frame time stamp \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+true or false, if depth image is not empty, return true, otherwise return false.
+\end{DoxyReturn}
+\begin{DoxyAttention}{Attention}
+This funtion must be called after \hyperlink{class_stereo_camera_a4e5146c1d33ab5f4f9a3995b93e3cbc5}{start\+Capture()}.
+\end{DoxyAttention}
+\begin{DoxyNote}{Note}
+
+\begin{DoxyCode}
+cam.startCapture();
+cam.startStereoCompute();
+cv::Mat depth;
+std::chrono::microseconds timeStamp;
+\textcolor{keywordflow}{if}(cam.getPointCloud(depth, \textcolor{keyword}{true}, timeStamp))\{
+ \textcolor{comment}{//do something}
+\}
+\end{DoxyCode}
+
+\end{DoxyNote}
+\mbox{\Hypertarget{class_stereo_camera_a34d50c8166cf8f3f76fff5789f8f1eee}\label{class_stereo_camera_a34d50c8166cf8f3f76fff5789f8f1eee}}
+\index{Stereo\+Camera@{Stereo\+Camera}!get\+Device\+Node@{get\+Device\+Node}}
+\index{get\+Device\+Node@{get\+Device\+Node}!Stereo\+Camera@{Stereo\+Camera}}
+\subsubsection{\texorpdfstring{get\+Device\+Node()}{getDeviceNode()}}
+{\footnotesize\ttfamily int Stereo\+Camera\+::get\+Device\+Node (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}
+
+
+
+get camera device node
+
+
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em None} & \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+device node number
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+for example\+: /dev/video2, device node number is 2, the return value of function is 2.
+\begin{DoxyCode}
+\textcolor{keywordtype}{int} nodeNumber = cam.getDeviceNode();
+\end{DoxyCode}
+
+\end{DoxyNote}
+\mbox{\Hypertarget{class_stereo_camera_a105495e27d95f3f905ef1de0f9866c70}\label{class_stereo_camera_a105495e27d95f3f905ef1de0f9866c70}}
+\index{Stereo\+Camera@{Stereo\+Camera}!get\+Log\+Level@{get\+Log\+Level}}
+\index{get\+Log\+Level@{get\+Log\+Level}!Stereo\+Camera@{Stereo\+Camera}}
+\subsubsection{\texorpdfstring{get\+Log\+Level()}{getLogLevel()}}
+{\footnotesize\ttfamily int Stereo\+Camera\+::get\+Log\+Level (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}
+
+
+
+get log system output level
+
+
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em None} & \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+log level
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+1\+: output runtime information, 2\+: output runtime infomation and debug information
+\begin{DoxyCode}
+\textcolor{keywordtype}{int} LogLevel = cam.getLogLevel();
+\end{DoxyCode}
+
+\end{DoxyNote}
+\mbox{\Hypertarget{class_stereo_camera_ab844029084a9a9de0996c1e7b24c258c}\label{class_stereo_camera_ab844029084a9a9de0996c1e7b24c258c}}
+\index{Stereo\+Camera@{Stereo\+Camera}!get\+Pos\+Number@{get\+Pos\+Number}}
+\index{get\+Pos\+Number@{get\+Pos\+Number}!Stereo\+Camera@{Stereo\+Camera}}
+\subsubsection{\texorpdfstring{get\+Pos\+Number()}{getPosNumber()}}
+{\footnotesize\ttfamily int Stereo\+Camera\+::get\+Pos\+Number (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}
+
+
+
+get stereo camera device node
+
+
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em None} & \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+positon number
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+face N\+O.\+1, chin N\+O.\+2, left N\+O.\+3, right N\+O.\+4, down N\+O.\+5
+\begin{DoxyCode}
+\textcolor{keywordtype}{int} posNum = cam.getPosNumber();
+\end{DoxyCode}
+
+\end{DoxyNote}
+\mbox{\Hypertarget{class_stereo_camera_ac8fbb6e1ebd828b1640d43ad7cdc0f9c}\label{class_stereo_camera_ac8fbb6e1ebd828b1640d43ad7cdc0f9c}}
+\index{Stereo\+Camera@{Stereo\+Camera}!get\+Raw\+Frame@{get\+Raw\+Frame}}
+\index{get\+Raw\+Frame@{get\+Raw\+Frame}!Stereo\+Camera@{Stereo\+Camera}}
+\subsubsection{\texorpdfstring{get\+Raw\+Frame()}{getRawFrame()}}
+{\footnotesize\ttfamily bool Stereo\+Camera\+::get\+Raw\+Frame (\begin{DoxyParamCaption}\item[{cv\+::\+Mat \&}]{frame, }\item[{std\+::chrono\+::microseconds \&}]{time\+Stamp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}
+
+
+
+get stereo camera raw frame
+
+
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em None} & \\
+\hline
+\mbox{\tt out} & {\em frame} & raw frame, include left and right image \\
+\hline
+\mbox{\tt out} & {\em time\+Stamp} & raw frame time stamp \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+true or false, if frame is not empty, return true, otherwise return false.
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+
+\begin{DoxyCode}
+cv::Mat frame;
+std::chrono::microseconds timeStamp
+cam.getRawFrame(frame, timeStamp);
+\end{DoxyCode}
+
+\end{DoxyNote}
+\mbox{\Hypertarget{class_stereo_camera_ac92c3a60ae0c38e203c81bb2a2738eb4}\label{class_stereo_camera_ac92c3a60ae0c38e203c81bb2a2738eb4}}
+\index{Stereo\+Camera@{Stereo\+Camera}!get\+Raw\+Frame\+Rate@{get\+Raw\+Frame\+Rate}}
+\index{get\+Raw\+Frame\+Rate@{get\+Raw\+Frame\+Rate}!Stereo\+Camera@{Stereo\+Camera}}
+\subsubsection{\texorpdfstring{get\+Raw\+Frame\+Rate()}{getRawFrameRate()}}
+{\footnotesize\ttfamily float Stereo\+Camera\+::get\+Raw\+Frame\+Rate (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}
+
+
+
+get stereo camera capture frame rate
+
+
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em None} & \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+current stereo camera fps.
+\begin{DoxyCode}
+\textcolor{keywordtype}{float} fps = \hyperlink{class_stereo_camera_ac92c3a60ae0c38e203c81bb2a2738eb4}{getRawFrameRate}();
+\end{DoxyCode}
+
+\end{DoxyReturn}
+\mbox{\Hypertarget{class_stereo_camera_a38c990b26167c2f7823b20f44b1a8fa7}\label{class_stereo_camera_a38c990b26167c2f7823b20f44b1a8fa7}}
+\index{Stereo\+Camera@{Stereo\+Camera}!get\+Raw\+Frame\+Size@{get\+Raw\+Frame\+Size}}
+\index{get\+Raw\+Frame\+Size@{get\+Raw\+Frame\+Size}!Stereo\+Camera@{Stereo\+Camera}}
+\subsubsection{\texorpdfstring{get\+Raw\+Frame\+Size()}{getRawFrameSize()}}
+{\footnotesize\ttfamily cv\+::\+Size Stereo\+Camera\+::get\+Raw\+Frame\+Size (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}
+
+
+
+get stereo camera frame size
+
+
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em None} & \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+frame size.
+\begin{DoxyCode}
+cv::Size fSize = cam.getRawFrameSize();
+\end{DoxyCode}
+
+\end{DoxyReturn}
+\mbox{\Hypertarget{class_stereo_camera_a3cb43015d545854892dd2e4057f5b2be}\label{class_stereo_camera_a3cb43015d545854892dd2e4057f5b2be}}
+\index{Stereo\+Camera@{Stereo\+Camera}!get\+Serial\+Number@{get\+Serial\+Number}}
+\index{get\+Serial\+Number@{get\+Serial\+Number}!Stereo\+Camera@{Stereo\+Camera}}
+\subsubsection{\texorpdfstring{get\+Serial\+Number()}{getSerialNumber()}}
+{\footnotesize\ttfamily int Stereo\+Camera\+::get\+Serial\+Number (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}
+
+
+
+get stereo camera serial number
+
+this number is same as robot serial number
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em None} & \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+robot serial number
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+
+\begin{DoxyCode}
+\textcolor{keywordtype}{int} seiralNumber = cam.getSerialNumber();
+\end{DoxyCode}
+
+\end{DoxyNote}
+\mbox{\Hypertarget{class_stereo_camera_aa25f48d95ba8d1c71fb0e40b53f68379}\label{class_stereo_camera_aa25f48d95ba8d1c71fb0e40b53f68379}}
+\index{Stereo\+Camera@{Stereo\+Camera}!get\+Stereo\+Frame@{get\+Stereo\+Frame}}
+\index{get\+Stereo\+Frame@{get\+Stereo\+Frame}!Stereo\+Camera@{Stereo\+Camera}}
+\subsubsection{\texorpdfstring{get\+Stereo\+Frame()}{getStereoFrame()}}
+{\footnotesize\ttfamily bool Stereo\+Camera\+::get\+Stereo\+Frame (\begin{DoxyParamCaption}\item[{cv\+::\+Mat \&}]{left, }\item[{cv\+::\+Mat \&}]{right, }\item[{std\+::chrono\+::microseconds \&}]{time\+Stamp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}
+
+
+
+get stereo camera left and right image
+
+
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em None} & \\
+\hline
+\mbox{\tt out} & {\em left} & left image \\
+\hline
+\mbox{\tt out} & {\em right} & right image \\
+\hline
+\mbox{\tt out} & {\em time\+Stamp} & frame time stamp \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+true or false, if left and right images are not empty, return true, otherwise return false.
+\end{DoxyReturn}
+\begin{DoxyAttention}{Attention}
+This funtion must be called after \hyperlink{class_stereo_camera_a4e5146c1d33ab5f4f9a3995b93e3cbc5}{start\+Capture()}.
+\end{DoxyAttention}
+\begin{DoxyNote}{Note}
+
+\begin{DoxyCode}
+cam.startCapture();
+cv::Mat left, right;
+std::chrono::microseconds timeStamp;
+\textcolor{keywordflow}{if}(cam.getRawFrame(left,right, timeStamp))\{
+ \textcolor{comment}{//do something}
+\}
+\end{DoxyCode}
+
+\end{DoxyNote}
+\mbox{\Hypertarget{class_stereo_camera_a47c0d9ee727f13af5d348db9f217a44b}\label{class_stereo_camera_a47c0d9ee727f13af5d348db9f217a44b}}
+\index{Stereo\+Camera@{Stereo\+Camera}!is\+Opened@{is\+Opened}}
+\index{is\+Opened@{is\+Opened}!Stereo\+Camera@{Stereo\+Camera}}
+\subsubsection{\texorpdfstring{is\+Opened()}{isOpened()}}
+{\footnotesize\ttfamily bool Stereo\+Camera\+::is\+Opened (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}
+
+
+
+get stereo camera running status
+
+detect camera is opened or closed
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em None} & \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+true or false, if camera is opened return true, otherwise return false
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+tell camera running status, it should be called after \hyperlink{class_stereo_camera}{Stereo\+Camera} object initialization
+\begin{DoxyCode}
+\hyperlink{class_stereo_camera}{StereoCamera} cam;
+\textcolor{keywordflow}{if}(cam.\hyperlink{class_stereo_camera_a47c0d9ee727f13af5d348db9f217a44b}{isOpened}())
+ printf(\textcolor{stringliteral}{"Camera is opened!"});
+\end{DoxyCode}
+
+\end{DoxyNote}
+\mbox{\Hypertarget{class_stereo_camera_afb896942fb7fe1ea33c80ec9dcefa6a0}\label{class_stereo_camera_afb896942fb7fe1ea33c80ec9dcefa6a0}}
+\index{Stereo\+Camera@{Stereo\+Camera}!load\+Calib\+Params@{load\+Calib\+Params}}
+\index{load\+Calib\+Params@{load\+Calib\+Params}!Stereo\+Camera@{Stereo\+Camera}}
+\subsubsection{\texorpdfstring{load\+Calib\+Params()}{loadCalibParams()}}
+{\footnotesize\ttfamily bool Stereo\+Camera\+::load\+Calib\+Params (\begin{DoxyParamCaption}\item[{std\+::string}]{file\+Name }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}
+
+
+
+load stereo camera calibration params
+
+calibration paramerters include\+: camera intrinsic matrix, camera distortion coefficient, xi(mei model), rotation matrix, translation vector, rectification image intrinsic matrix, etc.
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em file\+Name} & calibration file name\+: include file path, for example\+: \char`\"{}path\+\_\+to/calib.\+yaml\char`\"{} \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+true or false, if load file successfully return true, otherwise return false
+\end{DoxyReturn}
+\begin{DoxyAttention}{Attention}
+This funtion must be called before \hyperlink{class_stereo_camera_a4e5146c1d33ab5f4f9a3995b93e3cbc5}{start\+Capture()} and after load\+Config(\char`\"{}xxx\char`\"{});
+\end{DoxyAttention}
+\begin{DoxyNote}{Note}
+
+\begin{DoxyCode}
+cam.\hyperlink{class_stereo_camera_afe25245d518e12c6f0a685d7da7a2979}{loadConfig}(\textcolor{stringliteral}{"path\_to/config.yaml"});
+cam.\hyperlink{class_stereo_camera_afb896942fb7fe1ea33c80ec9dcefa6a0}{loadCalibParams}(\textcolor{stringliteral}{"path\_to/calib.yaml"});
+cam.\hyperlink{class_stereo_camera_a4e5146c1d33ab5f4f9a3995b93e3cbc5}{startCapture}();
+\end{DoxyCode}
+
+\end{DoxyNote}
+\mbox{\Hypertarget{class_stereo_camera_afe25245d518e12c6f0a685d7da7a2979}\label{class_stereo_camera_afe25245d518e12c6f0a685d7da7a2979}}
+\index{Stereo\+Camera@{Stereo\+Camera}!load\+Config@{load\+Config}}
+\index{load\+Config@{load\+Config}!Stereo\+Camera@{Stereo\+Camera}}
+\subsubsection{\texorpdfstring{load\+Config()}{loadConfig()}}
+{\footnotesize\ttfamily bool Stereo\+Camera\+::load\+Config (\begin{DoxyParamCaption}\item[{std\+::string}]{file\+Name }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}
+
+
+
+load stereo camera config parameters
+
+parameters include\+: Log\+Level,Threshold,Algorithm,Ip\+Last\+Segment, Device\+Node,Frame\+Size,Rectify\+Frame\+Size,Frame\+Rate, etc.
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em file\+Name} & config name\+: include config path, for example\+: \char`\"{}path\+\_\+to/config.\+yaml\char`\"{} \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+true or false, if load config file successfully return true, otherwise return false
+\end{DoxyReturn}
+\begin{DoxyAttention}{Attention}
+This funtion must be called before \hyperlink{class_stereo_camera_a4e5146c1d33ab5f4f9a3995b93e3cbc5}{start\+Capture()} and after init the camera object.
+\end{DoxyAttention}
+\begin{DoxyNote}{Note}
+
+\begin{DoxyCode}
+cam.\hyperlink{class_stereo_camera_afe25245d518e12c6f0a685d7da7a2979}{loadConfig}(\textcolor{stringliteral}{"path\_to/config.yaml"});
+cam.\hyperlink{class_stereo_camera_a4e5146c1d33ab5f4f9a3995b93e3cbc5}{startCapture}();
+\end{DoxyCode}
+
+\end{DoxyNote}
+\mbox{\Hypertarget{class_stereo_camera_a7611e0d97d57abf36b4fa7dca2a3cfc5}\label{class_stereo_camera_a7611e0d97d57abf36b4fa7dca2a3cfc5}}
+\index{Stereo\+Camera@{Stereo\+Camera}!save\+Calib\+Params@{save\+Calib\+Params}}
+\index{save\+Calib\+Params@{save\+Calib\+Params}!Stereo\+Camera@{Stereo\+Camera}}
+\subsubsection{\texorpdfstring{save\+Calib\+Params()}{saveCalibParams()}}
+{\footnotesize\ttfamily bool Stereo\+Camera\+::save\+Calib\+Params (\begin{DoxyParamCaption}\item[{std\+::string}]{file\+Name = {\ttfamily \char`\"{}stereo\+\_\+camera\+\_\+calibparams.yaml\char`\"{}} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}
+
+
+
+save stereo camera calibration parameters to file
+
+
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em file\+Name} & default name\+: stereo\+\_\+camera\+\_\+calibparams.\+yaml, output file\+: include file path, for example\+: \char`\"{}path\+\_\+to/calib.\+yaml\char`\"{} \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+true or false, if save file successfully return true, otherwise return false
+\begin{DoxyCode}
+cam.\hyperlink{class_stereo_camera_a568930e8b3668361fedad5233ab5ba47}{saveConfig}(\textcolor{stringliteral}{"stereo\_camera\_config.yaml"});
+\end{DoxyCode}
+
+\end{DoxyReturn}
+\mbox{\Hypertarget{class_stereo_camera_a568930e8b3668361fedad5233ab5ba47}\label{class_stereo_camera_a568930e8b3668361fedad5233ab5ba47}}
+\index{Stereo\+Camera@{Stereo\+Camera}!save\+Config@{save\+Config}}
+\index{save\+Config@{save\+Config}!Stereo\+Camera@{Stereo\+Camera}}
+\subsubsection{\texorpdfstring{save\+Config()}{saveConfig()}}
+{\footnotesize\ttfamily bool Stereo\+Camera\+::save\+Config (\begin{DoxyParamCaption}\item[{std\+::string}]{file\+Name = {\ttfamily \char`\"{}stereo\+\_\+camera\+\_\+config.yaml\char`\"{}} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}
+
+
+
+save stereo camera settings to config file
+
+
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em file\+Name} & default name\+: stereo\+\_\+camera\+\_\+config.\+yaml, output config file\+: include file path, for example\+: \char`\"{}path\+\_\+to/config.\+yaml\char`\"{} \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+true or false, if save file successfully return true, otherwise return false
+\begin{DoxyCode}
+cam.\hyperlink{class_stereo_camera_a568930e8b3668361fedad5233ab5ba47}{saveConfig}(\textcolor{stringliteral}{"stereo\_camera\_config.yaml"});
+\end{DoxyCode}
+
+\end{DoxyReturn}
+\mbox{\Hypertarget{class_stereo_camera_a98d7546631507bcede3c9a850e69db7a}\label{class_stereo_camera_a98d7546631507bcede3c9a850e69db7a}}
+\index{Stereo\+Camera@{Stereo\+Camera}!set\+Calib\+Params@{set\+Calib\+Params}}
+\index{set\+Calib\+Params@{set\+Calib\+Params}!Stereo\+Camera@{Stereo\+Camera}}
+\subsubsection{\texorpdfstring{set\+Calib\+Params()}{setCalibParams()}}
+{\footnotesize\ttfamily bool Stereo\+Camera\+::set\+Calib\+Params (\begin{DoxyParamCaption}\item[{std\+::vector$<$ cv\+::\+Mat $>$}]{params\+Array, }\item[{bool}]{flag = {\ttfamily false} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}
+
+
+
+set stereo camera calibration parameters
+
+calibration paramerters include\+: camera intrinsic matrix, camera distortion coefficient, xi(mei model), rotation matrix, translation vector, rectification image intrinsic matrix
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em params\+Array} & arrange Array element as follows\+: intrinsic,distortion,xi,rotation,translation,kfe \\
+\hline
+\mbox{\tt in} & {\em flag} & false\+: set left camera params, true\+: right camera params \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+true or false, if assignment successfully return true, otherwise return false
+\end{DoxyReturn}
+\begin{DoxyAttention}{Attention}
+the order of parameters should be correct
+\end{DoxyAttention}
+\begin{DoxyNote}{Note}
+
+\begin{DoxyCode}
+std::vector leftParamsArray;
+cam.\hyperlink{class_stereo_camera_a98d7546631507bcede3c9a850e69db7a}{setCalibParams}(leftParamsArray);
+\end{DoxyCode}
+
+\end{DoxyNote}
+\mbox{\Hypertarget{class_stereo_camera_adb684170c2180eb2109f9eecd1723c1c}\label{class_stereo_camera_adb684170c2180eb2109f9eecd1723c1c}}
+\index{Stereo\+Camera@{Stereo\+Camera}!set\+Log\+Level@{set\+Log\+Level}}
+\index{set\+Log\+Level@{set\+Log\+Level}!Stereo\+Camera@{Stereo\+Camera}}
+\subsubsection{\texorpdfstring{set\+Log\+Level()}{setLogLevel()}}
+{\footnotesize\ttfamily bool Stereo\+Camera\+::set\+Log\+Level (\begin{DoxyParamCaption}\item[{int}]{level }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}
+
+
+
+set stereo camera ouput log level
+
+log level means that different kind of information will be output
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em level} & \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+true or false, if assignment successfully return true, otherwise return false
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+output information starts with \char`\"{}\+Stereo\+Camera\char`\"{}, it should be called after \hyperlink{class_stereo_camera}{Stereo\+Camera} object initialization
+\begin{DoxyCode}
+cam.\hyperlink{class_stereo_camera_adb684170c2180eb2109f9eecd1723c1c}{setLogLevel}(2); \textcolor{comment}{//debug level }
+\end{DoxyCode}
+
+\end{DoxyNote}
+\mbox{\Hypertarget{class_stereo_camera_ad570580bd5b16ac58831d57ffd23ce5b}\label{class_stereo_camera_ad570580bd5b16ac58831d57ffd23ce5b}}
+\index{Stereo\+Camera@{Stereo\+Camera}!set\+Pos\+Number@{set\+Pos\+Number}}
+\index{set\+Pos\+Number@{set\+Pos\+Number}!Stereo\+Camera@{Stereo\+Camera}}
+\subsubsection{\texorpdfstring{set\+Pos\+Number()}{setPosNumber()}}
+{\footnotesize\ttfamily bool Stereo\+Camera\+::set\+Pos\+Number (\begin{DoxyParamCaption}\item[{int}]{pos\+Number }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}
+
+
+
+set stereo camera position number
+
+position number means that the number of camera location in robot body
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em pos\+Number} & \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+true or false, if assignment successfully return true, otherwise return false
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+face N\+O.\+1, chin N\+O.\+2, left N\+O.\+3, right N\+O.\+4, down N\+O.\+5
+\begin{DoxyCode}
+cam.\hyperlink{class_stereo_camera_ad570580bd5b16ac58831d57ffd23ce5b}{setPosNumber}(2);
+\end{DoxyCode}
+
+\end{DoxyNote}
+\mbox{\Hypertarget{class_stereo_camera_aa28635e45b1d0ade5353a69e2a7175e4}\label{class_stereo_camera_aa28635e45b1d0ade5353a69e2a7175e4}}
+\index{Stereo\+Camera@{Stereo\+Camera}!set\+Raw\+Frame\+Rate@{set\+Raw\+Frame\+Rate}}
+\index{set\+Raw\+Frame\+Rate@{set\+Raw\+Frame\+Rate}!Stereo\+Camera@{Stereo\+Camera}}
+\subsubsection{\texorpdfstring{set\+Raw\+Frame\+Rate()}{setRawFrameRate()}}
+{\footnotesize\ttfamily bool Stereo\+Camera\+::set\+Raw\+Frame\+Rate (\begin{DoxyParamCaption}\item[{int}]{frame\+Rate }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}
+
+
+
+set stereo camera F\+PS (Frames Per Seconds)
+
+for 1856\+X800 F\+PS\+:30, for 928x400 F\+PS\+:30 or 60
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em frame\+Rate} & \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+true or false, if assignment successfully return true, otherwise return false
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+
+\begin{DoxyCode}
+cam.\hyperlink{class_stereo_camera_aa28635e45b1d0ade5353a69e2a7175e4}{setRawFrameRate}(30)
+\end{DoxyCode}
+
+\end{DoxyNote}
+\mbox{\Hypertarget{class_stereo_camera_adb1ed69d226251cd050b1deab0270af8}\label{class_stereo_camera_adb1ed69d226251cd050b1deab0270af8}}
+\index{Stereo\+Camera@{Stereo\+Camera}!set\+Raw\+Frame\+Size@{set\+Raw\+Frame\+Size}}
+\index{set\+Raw\+Frame\+Size@{set\+Raw\+Frame\+Size}!Stereo\+Camera@{Stereo\+Camera}}
+\subsubsection{\texorpdfstring{set\+Raw\+Frame\+Size()}{setRawFrameSize()}}
+{\footnotesize\ttfamily bool Stereo\+Camera\+::set\+Raw\+Frame\+Size (\begin{DoxyParamCaption}\item[{cv\+::\+Size}]{frame\+Size }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}
+
+
+
+set stereo camera frame size
+
+There are two choise\+: 1856\+X800,928x400.
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em frame\+Size} & \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+true or false, if assignment successfully return true, otherwise return false
+\end{DoxyReturn}
+\begin{DoxyAttention}{Attention}
+if do not assign frame\+Size, default size is 1856x800
+\end{DoxyAttention}
+\begin{DoxyNote}{Note}
+
+\begin{DoxyCode}
+cam.\hyperlink{class_stereo_camera_adb1ed69d226251cd050b1deab0270af8}{setRawFrameSize}(cv::Size(1856, 800));
+\end{DoxyCode}
+
+\end{DoxyNote}
+\mbox{\Hypertarget{class_stereo_camera_ac2d8d3a96e0ac426af20a3e88df0167a}\label{class_stereo_camera_ac2d8d3a96e0ac426af20a3e88df0167a}}
+\index{Stereo\+Camera@{Stereo\+Camera}!set\+Rect\+Frame\+Size@{set\+Rect\+Frame\+Size}}
+\index{set\+Rect\+Frame\+Size@{set\+Rect\+Frame\+Size}!Stereo\+Camera@{Stereo\+Camera}}
+\subsubsection{\texorpdfstring{set\+Rect\+Frame\+Size()}{setRectFrameSize()}}
+{\footnotesize\ttfamily bool Stereo\+Camera\+::set\+Rect\+Frame\+Size (\begin{DoxyParamCaption}\item[{cv\+::\+Size}]{frame\+Size }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}
+
+
+
+set rectification image size
+
+this size should keep ratio as camera raw image size, for example\+: raw single frame size\+: 928x800 rectification image size\+: 464x400 or 232x200
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em frame\+Size} & \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+true or false, if assignment successfully return true, otherwise return false
+\end{DoxyReturn}
+\begin{DoxyAttention}{Attention}
+rectification image size must be smaller than camera raw single image size
+\end{DoxyAttention}
+\begin{DoxyNote}{Note}
+
+\begin{DoxyCode}
+cam.\hyperlink{class_stereo_camera_adb1ed69d226251cd050b1deab0270af8}{setRawFrameSize}(cv::Size(464, 400));
+\end{DoxyCode}
+
+\end{DoxyNote}
+\mbox{\Hypertarget{class_stereo_camera_a110ad0dc21cea5bfa5607752fc858163}\label{class_stereo_camera_a110ad0dc21cea5bfa5607752fc858163}}
+\index{Stereo\+Camera@{Stereo\+Camera}!set\+Serial\+Number@{set\+Serial\+Number}}
+\index{set\+Serial\+Number@{set\+Serial\+Number}!Stereo\+Camera@{Stereo\+Camera}}
+\subsubsection{\texorpdfstring{set\+Serial\+Number()}{setSerialNumber()}}
+{\footnotesize\ttfamily bool Stereo\+Camera\+::set\+Serial\+Number (\begin{DoxyParamCaption}\item[{int}]{serial\+Number }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}
+
+
+
+set stereo camera serial number
+
+serial number same as robot serial number
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em serial\+Number} & \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+true or false, if assignment successfully return true, otherwise return false
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+
+\begin{DoxyCode}
+cam.\hyperlink{class_stereo_camera_a110ad0dc21cea5bfa5607752fc858163}{setSerialNumber}(2);
+\end{DoxyCode}
+
+\end{DoxyNote}
+\mbox{\Hypertarget{class_stereo_camera_a4e5146c1d33ab5f4f9a3995b93e3cbc5}\label{class_stereo_camera_a4e5146c1d33ab5f4f9a3995b93e3cbc5}}
+\index{Stereo\+Camera@{Stereo\+Camera}!start\+Capture@{start\+Capture}}
+\index{start\+Capture@{start\+Capture}!Stereo\+Camera@{Stereo\+Camera}}
+\subsubsection{\texorpdfstring{start\+Capture()}{startCapture()}}
+{\footnotesize\ttfamily bool Stereo\+Camera\+::start\+Capture (\begin{DoxyParamCaption}\item[{bool}]{udp\+Flag = {\ttfamily false}, }\item[{bool}]{shm\+Flag = {\ttfamily false} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}
+
+
+
+start stereo camera capture thread
+
+
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em udp\+Flag} & default false, true\+: enable using H264 encode camera frame and send it by gstream udp command \\
+\hline
+\mbox{\tt in} & {\em shm\+Flag} & default false, true\+: enable using share memory to share camera frame \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+true or false, if create capture thread successfully return true, otherwise return false
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+gstreamer send command\+: \char`\"{}appsrc ! videoconvert ! omxh264enc ! video/x-\/h264, stream-\/format=byte-\/stream ! rtph264pay ! udpsink host=192.\+168.\+123.\+S\+E\+G port=host\+Port\char`\"{}. S\+EG is last segment of your recieve board IP, its range from 2$\sim$254,for example\+: 13, host=192.\+168.\+123.\+13. host\+Port is defined by the result of adding camera position number and 9000, for example\+: camera positon number is 5, port=9005. share memory key number is defined by the result of adding camera position number and 9000. This function must be called after camera config or settings finished.
+\begin{DoxyCode}
+cam.\hyperlink{class_stereo_camera_a4e5146c1d33ab5f4f9a3995b93e3cbc5}{startCapture}(\textcolor{keyword}{true}, \textcolor{keyword}{false}); \textcolor{comment}{// support h264 encode frame and send it by udp}
+\end{DoxyCode}
+
+\end{DoxyNote}
+\mbox{\Hypertarget{class_stereo_camera_abb6da9140cb988beb753514e7416032b}\label{class_stereo_camera_abb6da9140cb988beb753514e7416032b}}
+\index{Stereo\+Camera@{Stereo\+Camera}!start\+Stereo\+Compute@{start\+Stereo\+Compute}}
+\index{start\+Stereo\+Compute@{start\+Stereo\+Compute}!Stereo\+Camera@{Stereo\+Camera}}
+\subsubsection{\texorpdfstring{start\+Stereo\+Compute()}{startStereoCompute()}}
+{\footnotesize\ttfamily bool Stereo\+Camera\+::start\+Stereo\+Compute (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}
+
+
+
+start stereo camera computing disparity thread
+
+
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em None} & \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+true or false, if create thread successfully return true, otherwise return false
+\end{DoxyReturn}
+\begin{DoxyAttention}{Attention}
+This function must be called after \hyperlink{class_stereo_camera_a4e5146c1d33ab5f4f9a3995b93e3cbc5}{start\+Capture()};
+\end{DoxyAttention}
+\begin{DoxyNote}{Note}
+
+\begin{DoxyCode}
+cam.\hyperlink{class_stereo_camera_a4e5146c1d33ab5f4f9a3995b93e3cbc5}{startCapture}();
+cam.\hyperlink{class_stereo_camera_abb6da9140cb988beb753514e7416032b}{startStereoCompute}();
+\end{DoxyCode}
+
+\end{DoxyNote}
+\mbox{\Hypertarget{class_stereo_camera_a8c9f54bf349fd4dc5a8ba9fd26f22c31}\label{class_stereo_camera_a8c9f54bf349fd4dc5a8ba9fd26f22c31}}
+\index{Stereo\+Camera@{Stereo\+Camera}!stop\+Capture@{stop\+Capture}}
+\index{stop\+Capture@{stop\+Capture}!Stereo\+Camera@{Stereo\+Camera}}
+\subsubsection{\texorpdfstring{stop\+Capture()}{stopCapture()}}
+{\footnotesize\ttfamily bool Stereo\+Camera\+::stop\+Capture (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}
+
+
+
+stop stereo camera capture thread
+
+
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em None} & \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+true or false, if stop thread successfully return true, otherwise return false
+\end{DoxyReturn}
+\begin{DoxyAttention}{Attention}
+This function must be called after \hyperlink{class_stereo_camera_a4e5146c1d33ab5f4f9a3995b93e3cbc5}{start\+Capture()}.
+\end{DoxyAttention}
+\begin{DoxyNote}{Note}
+
+\begin{DoxyCode}
+cam.\hyperlink{class_stereo_camera_a4e5146c1d33ab5f4f9a3995b93e3cbc5}{startCapture}();
+cam.\hyperlink{class_stereo_camera_abb6da9140cb988beb753514e7416032b}{startStereoCompute}();
+cam.\hyperlink{class_stereo_camera_a3597295e386dfe27474ff0e9567e6d6c}{stopStereoCompute}();
+cam.\hyperlink{class_stereo_camera_a8c9f54bf349fd4dc5a8ba9fd26f22c31}{stopCapture}();
+\end{DoxyCode}
+
+\end{DoxyNote}
+\mbox{\Hypertarget{class_stereo_camera_a3597295e386dfe27474ff0e9567e6d6c}\label{class_stereo_camera_a3597295e386dfe27474ff0e9567e6d6c}}
+\index{Stereo\+Camera@{Stereo\+Camera}!stop\+Stereo\+Compute@{stop\+Stereo\+Compute}}
+\index{stop\+Stereo\+Compute@{stop\+Stereo\+Compute}!Stereo\+Camera@{Stereo\+Camera}}
+\subsubsection{\texorpdfstring{stop\+Stereo\+Compute()}{stopStereoCompute()}}
+{\footnotesize\ttfamily bool Stereo\+Camera\+::stop\+Stereo\+Compute (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}
+
+
+
+stop stereo camera computing disparity thread
+
+
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em None} & \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+true or false, if stop thread successfully return true, otherwise return false
+\end{DoxyReturn}
+\begin{DoxyAttention}{Attention}
+This function must be called after \hyperlink{class_stereo_camera_abb6da9140cb988beb753514e7416032b}{start\+Stereo\+Compute()}
+\end{DoxyAttention}
+\begin{DoxyNote}{Note}
+
+\begin{DoxyCode}
+cam.\hyperlink{class_stereo_camera_abb6da9140cb988beb753514e7416032b}{startStereoCompute}();
+cam.\hyperlink{class_stereo_camera_a3597295e386dfe27474ff0e9567e6d6c}{stopStereoCompute}();
+\end{DoxyCode}
+
+\end{DoxyNote}
+
+
+The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
+\item
+include/\hyperlink{_stereo_camera_common_8hpp}{Stereo\+Camera\+Common.\+hpp}\item
+src/\hyperlink{_stereo_camera_common_8cc}{Stereo\+Camera\+Common.\+cc}\end{DoxyCompactItemize}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/class_stereo_camera__inherit__graph.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/class_stereo_camera__inherit__graph.md5
new file mode 100644
index 0000000..7390a63
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/class_stereo_camera__inherit__graph.md5
@@ -0,0 +1 @@
+73f0bd2a0c72193d410840a870b6b357
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/class_stereo_camera__inherit__graph.pdf b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/class_stereo_camera__inherit__graph.pdf
new file mode 100644
index 0000000..492d92d
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/class_stereo_camera__inherit__graph.pdf differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/class_system_log.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/class_system_log.tex
new file mode 100644
index 0000000..96815a0
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/class_system_log.tex
@@ -0,0 +1,338 @@
+\hypertarget{class_system_log}{}\section{System\+Log Class Reference}
+\label{class_system_log}\index{System\+Log@{System\+Log}}
+\subsection*{Public Member Functions}
+\begin{DoxyCompactItemize}
+\item
+\hyperlink{class_system_log_aad41c68c3a8192ddb646170349023c99}{System\+Log} (std\+::string log\+Name)
+\begin{DoxyCompactList}\small\item\em \hyperlink{class_system_log}{System\+Log} constructor. \end{DoxyCompactList}\item
+void \hyperlink{class_system_log_a21296bb67489848bad6cfa04280fec85}{set\+Log\+Level} (int level)
+\begin{DoxyCompactList}\small\item\em set system ouput log level \end{DoxyCompactList}\item
+void \hyperlink{class_system_log_ac33b9f16ae96885ff7170d209a6af506}{run\+Time\+Error} (const char $\ast$format,...)
+\begin{DoxyCompactList}\small\item\em output running error infomation, color\+: red \end{DoxyCompactList}\item
+void \hyperlink{class_system_log_ac9b085c959e3f97d547c997c2fca2613}{run\+Time\+Info} (const char $\ast$format,...)
+\begin{DoxyCompactList}\small\item\em output running infomation, color\+: green \end{DoxyCompactList}\item
+void \hyperlink{class_system_log_a69d19a4affe470db2b740a1e9a78e6e5}{run\+Time\+Warning} (const char $\ast$format,...)
+\begin{DoxyCompactList}\small\item\em output running warning infomation, color\+: yellow \end{DoxyCompactList}\item
+void \hyperlink{class_system_log_a08dff4b478ed29a39d584d3b7f21ddfb}{debug\+Time\+Warning} (const char $\ast$format,...)
+\begin{DoxyCompactList}\small\item\em output debug warning infomation, color\+: cyan \end{DoxyCompactList}\item
+void \hyperlink{class_system_log_ad79238fdcc9a301093d6fa32884d1ae1}{debug\+Time\+Info} (const char $\ast$format,...)
+\begin{DoxyCompactList}\small\item\em output debug infomation, color\+: white \end{DoxyCompactList}\item
+void \hyperlink{class_system_log_ae1cbe2de51efe22068e2e047396a72dd}{debug\+Time\+Error} (const char $\ast$format,...)
+\begin{DoxyCompactList}\small\item\em output debug error infomation, color\+: magenta \end{DoxyCompactList}\item
+void \hyperlink{class_system_log_a9714a265975472433882962b7449bd45}{save\+Log} (void)
+\begin{DoxyCompactList}\small\item\em save system log to a file, default file name\+: Running.\+txt \end{DoxyCompactList}\item
+void \hyperlink{class_system_log_af41d346f86242f5be187fe2be354347d}{save\+Log\+To\+File} (std\+::string file\+Name)
+\begin{DoxyCompactList}\small\item\em save system log to a designated file \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Constructor \& Destructor Documentation}
+\mbox{\Hypertarget{class_system_log_aad41c68c3a8192ddb646170349023c99}\label{class_system_log_aad41c68c3a8192ddb646170349023c99}}
+\index{System\+Log@{System\+Log}!System\+Log@{System\+Log}}
+\index{System\+Log@{System\+Log}!System\+Log@{System\+Log}}
+\subsubsection{\texorpdfstring{System\+Log()}{SystemLog()}}
+{\footnotesize\ttfamily System\+Log\+::\+System\+Log (\begin{DoxyParamCaption}\item[{std\+::string}]{log\+Name }\end{DoxyParamCaption})}
+
+
+
+\hyperlink{class_system_log}{System\+Log} constructor.
+
+
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em log\+Name} & the name of special system \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+None
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+
+\end{DoxyNote}
+\begin{DoxyAttention}{Attention}
+output information starts with \char`\"{}log\+Name\char`\"{}
+\begin{DoxyCode}
+\end{DoxyCode}
+
+\end{DoxyAttention}
+
+
+\subsection{Member Function Documentation}
+\mbox{\Hypertarget{class_system_log_ae1cbe2de51efe22068e2e047396a72dd}\label{class_system_log_ae1cbe2de51efe22068e2e047396a72dd}}
+\index{System\+Log@{System\+Log}!debug\+Time\+Error@{debug\+Time\+Error}}
+\index{debug\+Time\+Error@{debug\+Time\+Error}!System\+Log@{System\+Log}}
+\subsubsection{\texorpdfstring{debug\+Time\+Error()}{debugTimeError()}}
+{\footnotesize\ttfamily System\+Log\+::debug\+Time\+Error (\begin{DoxyParamCaption}\item[{const char $\ast$}]{format, }\item[{}]{... }\end{DoxyParamCaption})}
+
+
+
+output debug error infomation, color\+: magenta
+
+output format \mbox{[}log\+Name\mbox{]}\mbox{[}D\+E\+B\+U\+G\+\_\+\+E\+R\+R\+OR\mbox{]} info
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em format} & \\
+\hline
+\mbox{\tt in} & {\em ...} & \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+None
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+
+\end{DoxyNote}
+\begin{DoxyAttention}{Attention}
+use it like printf()
+\begin{DoxyCode}
+\end{DoxyCode}
+
+\end{DoxyAttention}
+\mbox{\Hypertarget{class_system_log_ad79238fdcc9a301093d6fa32884d1ae1}\label{class_system_log_ad79238fdcc9a301093d6fa32884d1ae1}}
+\index{System\+Log@{System\+Log}!debug\+Time\+Info@{debug\+Time\+Info}}
+\index{debug\+Time\+Info@{debug\+Time\+Info}!System\+Log@{System\+Log}}
+\subsubsection{\texorpdfstring{debug\+Time\+Info()}{debugTimeInfo()}}
+{\footnotesize\ttfamily System\+Log\+::debug\+Time\+Info (\begin{DoxyParamCaption}\item[{const char $\ast$}]{format, }\item[{}]{... }\end{DoxyParamCaption})}
+
+
+
+output debug infomation, color\+: white
+
+output format \mbox{[}log\+Name\mbox{]}\mbox{[}D\+E\+B\+U\+G\+\_\+\+I\+N\+FO\mbox{]} info
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em format} & \\
+\hline
+\mbox{\tt in} & {\em ...} & \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+None
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+
+\end{DoxyNote}
+\begin{DoxyAttention}{Attention}
+use it like printf()
+\begin{DoxyCode}
+\end{DoxyCode}
+
+\end{DoxyAttention}
+\mbox{\Hypertarget{class_system_log_a08dff4b478ed29a39d584d3b7f21ddfb}\label{class_system_log_a08dff4b478ed29a39d584d3b7f21ddfb}}
+\index{System\+Log@{System\+Log}!debug\+Time\+Warning@{debug\+Time\+Warning}}
+\index{debug\+Time\+Warning@{debug\+Time\+Warning}!System\+Log@{System\+Log}}
+\subsubsection{\texorpdfstring{debug\+Time\+Warning()}{debugTimeWarning()}}
+{\footnotesize\ttfamily System\+Log\+::debug\+Time\+Warning (\begin{DoxyParamCaption}\item[{const char $\ast$}]{format, }\item[{}]{... }\end{DoxyParamCaption})}
+
+
+
+output debug warning infomation, color\+: cyan
+
+output format \mbox{[}log\+Name\mbox{]}\mbox{[}D\+E\+B\+U\+G\+\_\+\+W\+A\+R\+N\+I\+NG\mbox{]} info
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em format} & \\
+\hline
+\mbox{\tt in} & {\em ...} & \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+None
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+
+\end{DoxyNote}
+\begin{DoxyAttention}{Attention}
+use it like printf()
+\begin{DoxyCode}
+\end{DoxyCode}
+
+\end{DoxyAttention}
+\mbox{\Hypertarget{class_system_log_ac33b9f16ae96885ff7170d209a6af506}\label{class_system_log_ac33b9f16ae96885ff7170d209a6af506}}
+\index{System\+Log@{System\+Log}!run\+Time\+Error@{run\+Time\+Error}}
+\index{run\+Time\+Error@{run\+Time\+Error}!System\+Log@{System\+Log}}
+\subsubsection{\texorpdfstring{run\+Time\+Error()}{runTimeError()}}
+{\footnotesize\ttfamily System\+Log\+::run\+Time\+Error (\begin{DoxyParamCaption}\item[{const char $\ast$}]{format, }\item[{}]{... }\end{DoxyParamCaption})}
+
+
+
+output running error infomation, color\+: red
+
+output format \mbox{[}log\+Name\mbox{]}\mbox{[}E\+R\+R\+OR\mbox{]} info
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em format} & \\
+\hline
+\mbox{\tt in} & {\em ...} & \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+None
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+
+\end{DoxyNote}
+\begin{DoxyAttention}{Attention}
+use it like printf()
+\begin{DoxyCode}
+\end{DoxyCode}
+
+\end{DoxyAttention}
+\mbox{\Hypertarget{class_system_log_ac9b085c959e3f97d547c997c2fca2613}\label{class_system_log_ac9b085c959e3f97d547c997c2fca2613}}
+\index{System\+Log@{System\+Log}!run\+Time\+Info@{run\+Time\+Info}}
+\index{run\+Time\+Info@{run\+Time\+Info}!System\+Log@{System\+Log}}
+\subsubsection{\texorpdfstring{run\+Time\+Info()}{runTimeInfo()}}
+{\footnotesize\ttfamily System\+Log\+::run\+Time\+Info (\begin{DoxyParamCaption}\item[{const char $\ast$}]{format, }\item[{}]{... }\end{DoxyParamCaption})}
+
+
+
+output running infomation, color\+: green
+
+output format \mbox{[}log\+Name\mbox{]}\mbox{[}I\+N\+FO\mbox{]} info
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em format} & \\
+\hline
+\mbox{\tt in} & {\em ...} & \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+None
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+
+\end{DoxyNote}
+\begin{DoxyAttention}{Attention}
+use it like printf()
+\begin{DoxyCode}
+\end{DoxyCode}
+
+\end{DoxyAttention}
+\mbox{\Hypertarget{class_system_log_a69d19a4affe470db2b740a1e9a78e6e5}\label{class_system_log_a69d19a4affe470db2b740a1e9a78e6e5}}
+\index{System\+Log@{System\+Log}!run\+Time\+Warning@{run\+Time\+Warning}}
+\index{run\+Time\+Warning@{run\+Time\+Warning}!System\+Log@{System\+Log}}
+\subsubsection{\texorpdfstring{run\+Time\+Warning()}{runTimeWarning()}}
+{\footnotesize\ttfamily System\+Log\+::run\+Time\+Warning (\begin{DoxyParamCaption}\item[{const char $\ast$}]{format, }\item[{}]{... }\end{DoxyParamCaption})}
+
+
+
+output running warning infomation, color\+: yellow
+
+output format \mbox{[}log\+Name\mbox{]}\mbox{[}W\+A\+R\+N\+I\+NG\mbox{]} info
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em format} & \\
+\hline
+\mbox{\tt in} & {\em ...} & \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+None
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+
+\end{DoxyNote}
+\begin{DoxyAttention}{Attention}
+use it like printf()
+\begin{DoxyCode}
+\end{DoxyCode}
+
+\end{DoxyAttention}
+\mbox{\Hypertarget{class_system_log_a9714a265975472433882962b7449bd45}\label{class_system_log_a9714a265975472433882962b7449bd45}}
+\index{System\+Log@{System\+Log}!save\+Log@{save\+Log}}
+\index{save\+Log@{save\+Log}!System\+Log@{System\+Log}}
+\subsubsection{\texorpdfstring{save\+Log()}{saveLog()}}
+{\footnotesize\ttfamily System\+Log\+::save\+Log (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}
+
+
+
+save system log to a file, default file name\+: Running.\+txt
+
+
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em none} & \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+None
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+
+\end{DoxyNote}
+\begin{DoxyAttention}{Attention}
+not implement at this version
+\begin{DoxyCode}
+\end{DoxyCode}
+
+\end{DoxyAttention}
+\mbox{\Hypertarget{class_system_log_af41d346f86242f5be187fe2be354347d}\label{class_system_log_af41d346f86242f5be187fe2be354347d}}
+\index{System\+Log@{System\+Log}!save\+Log\+To\+File@{save\+Log\+To\+File}}
+\index{save\+Log\+To\+File@{save\+Log\+To\+File}!System\+Log@{System\+Log}}
+\subsubsection{\texorpdfstring{save\+Log\+To\+File()}{saveLogToFile()}}
+{\footnotesize\ttfamily System\+Log\+::save\+Log\+To\+File (\begin{DoxyParamCaption}\item[{std\+::string}]{file\+Name }\end{DoxyParamCaption})}
+
+
+
+save system log to a designated file
+
+
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em file\+Name} & \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+None
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+
+\end{DoxyNote}
+\begin{DoxyAttention}{Attention}
+not implement at this version
+\begin{DoxyCode}
+\end{DoxyCode}
+
+\end{DoxyAttention}
+\mbox{\Hypertarget{class_system_log_a21296bb67489848bad6cfa04280fec85}\label{class_system_log_a21296bb67489848bad6cfa04280fec85}}
+\index{System\+Log@{System\+Log}!set\+Log\+Level@{set\+Log\+Level}}
+\index{set\+Log\+Level@{set\+Log\+Level}!System\+Log@{System\+Log}}
+\subsubsection{\texorpdfstring{set\+Log\+Level()}{setLogLevel()}}
+{\footnotesize\ttfamily System\+Log\+::set\+Log\+Level (\begin{DoxyParamCaption}\item[{int}]{level }\end{DoxyParamCaption})}
+
+
+
+set system ouput log level
+
+log level means that different kind of information will be output
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em level} & 1 running information output, 2 running and debug infomation output \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+None
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+
+\end{DoxyNote}
+\begin{DoxyAttention}{Attention}
+
+\begin{DoxyCode}
+\end{DoxyCode}
+
+\end{DoxyAttention}
+
+
+The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
+\item
+include/\hyperlink{_system_log_8hpp}{System\+Log.\+hpp}\end{DoxyCompactItemize}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/class_unitree_camera.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/class_unitree_camera.tex
new file mode 100644
index 0000000..583b289
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/class_unitree_camera.tex
@@ -0,0 +1,221 @@
+\hypertarget{class_unitree_camera}{}\section{Unitree\+Camera Class Reference}
+\label{class_unitree_camera}\index{Unitree\+Camera@{Unitree\+Camera}}
+
+
+Inheritance diagram for Unitree\+Camera\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=163pt]{class_unitree_camera__inherit__graph}
+\end{center}
+\end{figure}
+
+
+Collaboration diagram for Unitree\+Camera\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=163pt]{class_unitree_camera__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{DoxyCompactItemize}
+\item
+\hyperlink{class_unitree_camera_af8a5e0c70f99096ecd378680d2f1ec27}{Unitree\+Camera} ()
+\begin{DoxyCompactList}\small\item\em \hyperlink{class_unitree_camera}{Unitree\+Camera} init unitree stereo camera object for default parameters. \end{DoxyCompactList}\item
+\mbox{\Hypertarget{class_unitree_camera_afe458a0b083d37d8212ddfcbe62cb033}\label{class_unitree_camera_afe458a0b083d37d8212ddfcbe62cb033}}
+{\bfseries Unitree\+Camera} (std\+::string file\+Name)
+\item
+\mbox{\Hypertarget{class_unitree_camera_a0d447525ea7fbcba9b9f892387fc91ee}\label{class_unitree_camera_a0d447525ea7fbcba9b9f892387fc91ee}}
+{\bfseries Unitree\+Camera} (int device\+Node)
+\item
+\hyperlink{class_unitree_camera_aefb112b0fa677221163ddd18ccf08d8c}{$\sim$\+Unitree\+Camera} (void)
+\begin{DoxyCompactList}\small\item\em \hyperlink{class_unitree_camera}{Unitree\+Camera} destructor. \end{DoxyCompactList}\item
+bool \hyperlink{class_unitree_camera_ab056c2e429ec5d91b7e838c18cbd0d73}{update\+Calib\+Params2\+Flash} (std\+::string file\+Name)
+\begin{DoxyCompactList}\small\item\em update camera calibrate parameters \end{DoxyCompactList}\item
+bool \hyperlink{class_unitree_camera_a45e182540ab4bb59b68fb07c23bdd91f}{check\+Firmware\+Version} (std\+::string \&version)
+\begin{DoxyCompactList}\small\item\em check camera\textquotesingle{}s firmware version \end{DoxyCompactList}\item
+bool \hyperlink{class_unitree_camera_abd0fd0e03ac98f90905ea582e4f397a7}{update\+Firmware} (std\+::string file\+Name)
+\begin{DoxyCompactList}\small\item\em update camera\textquotesingle{}s firmware \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Constructor \& Destructor Documentation}
+\mbox{\Hypertarget{class_unitree_camera_af8a5e0c70f99096ecd378680d2f1ec27}\label{class_unitree_camera_af8a5e0c70f99096ecd378680d2f1ec27}}
+\index{Unitree\+Camera@{Unitree\+Camera}!Unitree\+Camera@{Unitree\+Camera}}
+\index{Unitree\+Camera@{Unitree\+Camera}!Unitree\+Camera@{Unitree\+Camera}}
+\subsubsection{\texorpdfstring{Unitree\+Camera()}{UnitreeCamera()}}
+{\footnotesize\ttfamily Unitree\+Camera\+::\+Unitree\+Camera (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}
+
+
+
+\hyperlink{class_unitree_camera}{Unitree\+Camera} init unitree stereo camera object for default parameters.
+
+\hyperlink{class_unitree_camera}{Unitree\+Camera} constructor overload.
+
+default constructor
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em None} & \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+None
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+
+\begin{DoxyCode}
+\hyperlink{class_unitree_camera_af8a5e0c70f99096ecd378680d2f1ec27}{UnitreeCamera}();
+\end{DoxyCode}
+
+\end{DoxyNote}
+This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
+
+use camera config file to init unitree stereo camera
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em file\+Name} & camera config file, include file path, for example\+: $\sim$/test/stereo\+Config.yaml \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+None
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+
+\begin{DoxyCode}
+\hyperlink{class_unitree_camera_af8a5e0c70f99096ecd378680d2f1ec27}{UnitreeCamera}(\textcolor{stringliteral}{"path\_to/config.yaml"});
+\end{DoxyCode}
+
+\end{DoxyNote}
+This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
+
+use camera device node number to init unitree stereo camera
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em device\+Node} & camera device node, for example\+: /dev/video0, camera device node\+: 0 \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+None
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+
+\begin{DoxyCode}
+\hyperlink{class_stereo_camera_a6d9ac42b50dc07f5f846336ffd29e752}{StereoCamera}(0); \textcolor{comment}{// for /dev/video0}
+\end{DoxyCode}
+
+\end{DoxyNote}
+\mbox{\Hypertarget{class_unitree_camera_aefb112b0fa677221163ddd18ccf08d8c}\label{class_unitree_camera_aefb112b0fa677221163ddd18ccf08d8c}}
+\index{Unitree\+Camera@{Unitree\+Camera}!````~Unitree\+Camera@{$\sim$\+Unitree\+Camera}}
+\index{````~Unitree\+Camera@{$\sim$\+Unitree\+Camera}!Unitree\+Camera@{Unitree\+Camera}}
+\subsubsection{\texorpdfstring{$\sim$\+Unitree\+Camera()}{~UnitreeCamera()}}
+{\footnotesize\ttfamily Unitree\+Camera\+::$\sim$\+Unitree\+Camera (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}
+
+
+
+\hyperlink{class_unitree_camera}{Unitree\+Camera} destructor.
+
+release all unitree stereo camera resource
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em None} & \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+None
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+automatically called when \hyperlink{class_unitree_camera}{Unitree\+Camera} object released
+\end{DoxyNote}
+
+
+\subsection{Member Function Documentation}
+\mbox{\Hypertarget{class_unitree_camera_a45e182540ab4bb59b68fb07c23bdd91f}\label{class_unitree_camera_a45e182540ab4bb59b68fb07c23bdd91f}}
+\index{Unitree\+Camera@{Unitree\+Camera}!check\+Firmware\+Version@{check\+Firmware\+Version}}
+\index{check\+Firmware\+Version@{check\+Firmware\+Version}!Unitree\+Camera@{Unitree\+Camera}}
+\subsubsection{\texorpdfstring{check\+Firmware\+Version()}{checkFirmwareVersion()}}
+{\footnotesize\ttfamily bool Unitree\+Camera\+::check\+Firmware\+Version (\begin{DoxyParamCaption}\item[{std\+::string \&}]{version }\end{DoxyParamCaption})}
+
+
+
+check camera\textquotesingle{}s firmware version
+
+
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em version} & firmware version \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+None
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+
+\begin{DoxyCode}
+\end{DoxyCode}
+
+\end{DoxyNote}
+\mbox{\Hypertarget{class_unitree_camera_ab056c2e429ec5d91b7e838c18cbd0d73}\label{class_unitree_camera_ab056c2e429ec5d91b7e838c18cbd0d73}}
+\index{Unitree\+Camera@{Unitree\+Camera}!update\+Calib\+Params2\+Flash@{update\+Calib\+Params2\+Flash}}
+\index{update\+Calib\+Params2\+Flash@{update\+Calib\+Params2\+Flash}!Unitree\+Camera@{Unitree\+Camera}}
+\subsubsection{\texorpdfstring{update\+Calib\+Params2\+Flash()}{updateCalibParams2Flash()}}
+{\footnotesize\ttfamily bool Unitree\+Camera\+::update\+Calib\+Params2\+Flash (\begin{DoxyParamCaption}\item[{std\+::string}]{file\+Name }\end{DoxyParamCaption})}
+
+
+
+update camera calibrate parameters
+
+
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em file\+Name} & calibration parameters file \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+None
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+
+\begin{DoxyCode}
+\end{DoxyCode}
+
+\end{DoxyNote}
+\mbox{\Hypertarget{class_unitree_camera_abd0fd0e03ac98f90905ea582e4f397a7}\label{class_unitree_camera_abd0fd0e03ac98f90905ea582e4f397a7}}
+\index{Unitree\+Camera@{Unitree\+Camera}!update\+Firmware@{update\+Firmware}}
+\index{update\+Firmware@{update\+Firmware}!Unitree\+Camera@{Unitree\+Camera}}
+\subsubsection{\texorpdfstring{update\+Firmware()}{updateFirmware()}}
+{\footnotesize\ttfamily bool Unitree\+Camera\+::update\+Firmware (\begin{DoxyParamCaption}\item[{std\+::string}]{file\+Name }\end{DoxyParamCaption})}
+
+
+
+update camera\textquotesingle{}s firmware
+
+
+\begin{DoxyParams}[1]{Parameters}
+\mbox{\tt in} & {\em file\+Name} & firmware file \\
+\hline
+\mbox{\tt out} & {\em None} & \\
+\hline
+\end{DoxyParams}
+\begin{DoxyReturn}{Returns}
+None
+\end{DoxyReturn}
+\begin{DoxyNote}{Note}
+
+\begin{DoxyCode}
+\end{DoxyCode}
+
+\end{DoxyNote}
+
+
+The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
+\item
+include/\hyperlink{_unitree_camera_s_d_k_8hpp}{Unitree\+Camera\+S\+D\+K.\+hpp}\item
+src/Unitree\+Camera\+S\+D\+K.\+cc\end{DoxyCompactItemize}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/class_unitree_camera__coll__graph.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/class_unitree_camera__coll__graph.md5
new file mode 100644
index 0000000..9dbefd9
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/class_unitree_camera__coll__graph.md5
@@ -0,0 +1 @@
+1d59f91fa0091eca3d93e500505cc98b
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/class_unitree_camera__coll__graph.pdf b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/class_unitree_camera__coll__graph.pdf
new file mode 100644
index 0000000..f52d373
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/class_unitree_camera__coll__graph.pdf differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/class_unitree_camera__inherit__graph.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/class_unitree_camera__inherit__graph.md5
new file mode 100644
index 0000000..4fdf7f8
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/class_unitree_camera__inherit__graph.md5
@@ -0,0 +1 @@
+0012d1ec33f212fdbdec5f18813c12ae
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/class_unitree_camera__inherit__graph.pdf b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/class_unitree_camera__inherit__graph.pdf
new file mode 100644
index 0000000..f52d373
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/class_unitree_camera__inherit__graph.pdf differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_event_dispatcher.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_event_dispatcher.tex
new file mode 100644
index 0000000..ebb7311
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_event_dispatcher.tex
@@ -0,0 +1,67 @@
+\hypertarget{classglwindow_1_1_event_dispatcher}{}\section{glwindow\+:\+:Event\+Dispatcher Class Reference}
+\label{classglwindow_1_1_event_dispatcher}\index{glwindow\+::\+Event\+Dispatcher@{glwindow\+::\+Event\+Dispatcher}}
+
+
+Inheritance diagram for glwindow\+:\+:Event\+Dispatcher\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=216pt]{classglwindow_1_1_event_dispatcher__inherit__graph}
+\end{center}
+\end{figure}
+
+
+Collaboration diagram for glwindow\+:\+:Event\+Dispatcher\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=216pt]{classglwindow_1_1_event_dispatcher__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\Hypertarget{classglwindow_1_1_event_dispatcher_af6bc815caa60cb9c6781db5f0756e414}\label{classglwindow_1_1_event_dispatcher_af6bc815caa60cb9c6781db5f0756e414}}
+{\bfseries Event\+Dispatcher} (const std\+::vector$<$ \hyperlink{structglwindow_1_1_event_handler}{Event\+Handler} $\ast$$>$ \&h)
+\item
+\mbox{\Hypertarget{classglwindow_1_1_event_dispatcher_a101905128b1a416fbd9bf1adab9bcc44}\label{classglwindow_1_1_event_dispatcher_a101905128b1a416fbd9bf1adab9bcc44}}
+bool {\bfseries on\+\_\+key\+\_\+down} (\hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} \&win, int key)
+\item
+\mbox{\Hypertarget{classglwindow_1_1_event_dispatcher_ac75bcbcdd9411c5f84b99764da2206a4}\label{classglwindow_1_1_event_dispatcher_ac75bcbcdd9411c5f84b99764da2206a4}}
+bool {\bfseries on\+\_\+key\+\_\+up} (\hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} \&win, int key)
+\item
+\mbox{\Hypertarget{classglwindow_1_1_event_dispatcher_aeae6ae67e9384d2cec6058fc603d065c}\label{classglwindow_1_1_event_dispatcher_aeae6ae67e9384d2cec6058fc603d065c}}
+bool {\bfseries on\+\_\+text} (\hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} \&win, const char $\ast$text, int len)
+\item
+\mbox{\Hypertarget{classglwindow_1_1_event_dispatcher_ab3484ee0cfdc125d1d25550b3065aa90}\label{classglwindow_1_1_event_dispatcher_ab3484ee0cfdc125d1d25550b3065aa90}}
+bool {\bfseries on\+\_\+button\+\_\+down} (\hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} \&win, int btn, int state, int x, int y)
+\item
+\mbox{\Hypertarget{classglwindow_1_1_event_dispatcher_a0ab408899d7b617c82623596a4f46e67}\label{classglwindow_1_1_event_dispatcher_a0ab408899d7b617c82623596a4f46e67}}
+bool {\bfseries on\+\_\+button\+\_\+up} (\hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} \&win, int btn, int state, int x, int y)
+\item
+\mbox{\Hypertarget{classglwindow_1_1_event_dispatcher_a5669333f26e662e6afdb9aede5d6fd54}\label{classglwindow_1_1_event_dispatcher_a5669333f26e662e6afdb9aede5d6fd54}}
+bool {\bfseries on\+\_\+mouse\+\_\+move} (\hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} \&win, int state, int x, int y)
+\item
+\mbox{\Hypertarget{classglwindow_1_1_event_dispatcher_abdffd623813b637a85568664ac8918f2}\label{classglwindow_1_1_event_dispatcher_abdffd623813b637a85568664ac8918f2}}
+bool {\bfseries on\+\_\+mouse\+\_\+wheel} (\hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} \&win, int state, int x, int y, int dx, int dy)
+\item
+\mbox{\Hypertarget{classglwindow_1_1_event_dispatcher_ac9c42e34d486adaf04fa9e6bba360439}\label{classglwindow_1_1_event_dispatcher_ac9c42e34d486adaf04fa9e6bba360439}}
+bool {\bfseries on\+\_\+resize} (\hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} \&win, int x, int y, int w, int h)
+\item
+\mbox{\Hypertarget{classglwindow_1_1_event_dispatcher_af6e45a1615779b918fd94db1d0c4be32}\label{classglwindow_1_1_event_dispatcher_af6e45a1615779b918fd94db1d0c4be32}}
+bool {\bfseries on\+\_\+close} (\hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} \&win)
+\end{DoxyCompactItemize}
+\subsection*{Public Attributes}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\Hypertarget{classglwindow_1_1_event_dispatcher_ad110818c4668576c63d182e91070fbd7}\label{classglwindow_1_1_event_dispatcher_ad110818c4668576c63d182e91070fbd7}}
+const std\+::vector$<$ \hyperlink{structglwindow_1_1_event_handler}{Event\+Handler} $\ast$ $>$ \& {\bfseries handlers}
+\end{DoxyCompactItemize}
+
+
+The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
+\item
+examples/gl\+Viewer/glwindow.\+hpp\item
+examples/gl\+Viewer/glwindow\+\_\+x11.\+cpp\end{DoxyCompactItemize}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_event_dispatcher__coll__graph.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_event_dispatcher__coll__graph.md5
new file mode 100644
index 0000000..0fe295a
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_event_dispatcher__coll__graph.md5
@@ -0,0 +1 @@
+1bb7c19f671d9dcd269f50236d8d1ccd
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_event_dispatcher__coll__graph.pdf b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_event_dispatcher__coll__graph.pdf
new file mode 100644
index 0000000..7762f35
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_event_dispatcher__coll__graph.pdf differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_event_dispatcher__inherit__graph.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_event_dispatcher__inherit__graph.md5
new file mode 100644
index 0000000..0c3ae0f
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_event_dispatcher__inherit__graph.md5
@@ -0,0 +1 @@
+28845a8b7f220f643a80a9a10fb611c2
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_event_dispatcher__inherit__graph.pdf b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_event_dispatcher__inherit__graph.pdf
new file mode 100644
index 0000000..7762f35
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_event_dispatcher__inherit__graph.pdf differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_g_l_window.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_g_l_window.tex
new file mode 100644
index 0000000..4b32bb6
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_g_l_window.tex
@@ -0,0 +1,115 @@
+\hypertarget{classglwindow_1_1_g_l_window}{}\section{glwindow\+:\+:G\+L\+Window Class Reference}
+\label{classglwindow_1_1_g_l_window}\index{glwindow\+::\+G\+L\+Window@{glwindow\+::\+G\+L\+Window}}
+
+
+Collaboration diagram for glwindow\+:\+:G\+L\+Window\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=276pt]{classglwindow_1_1_g_l_window__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Classes}
+\begin{DoxyCompactItemize}
+\item
+struct \hyperlink{structglwindow_1_1_g_l_window_1_1_scoped_context}{Scoped\+Context}
+\item
+struct \hyperlink{struct_g_l_window_1_1_system_state}{System\+State}
+\end{DoxyCompactItemize}
+\subsection*{Public Member Functions}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\Hypertarget{classglwindow_1_1_g_l_window_af9e5d6539cdf2b606f7f83959cba4d91}\label{classglwindow_1_1_g_l_window_af9e5d6539cdf2b606f7f83959cba4d91}}
+{\bfseries G\+L\+Window} (int w=-\/1, int h=-\/1, const char $\ast$title=0)
+\item
+\mbox{\Hypertarget{classglwindow_1_1_g_l_window_ae10e25d700ab0697b2ed42d66a8e4540}\label{classglwindow_1_1_g_l_window_ae10e25d700ab0697b2ed42d66a8e4540}}
+int {\bfseries width} () const
+\item
+\mbox{\Hypertarget{classglwindow_1_1_g_l_window_aa3ca7cb6e058f1eef4dd769664f98b14}\label{classglwindow_1_1_g_l_window_aa3ca7cb6e058f1eef4dd769664f98b14}}
+int {\bfseries height} () const
+\item
+\mbox{\Hypertarget{classglwindow_1_1_g_l_window_a0791d0c8205ba2c2541903cf258a58f4}\label{classglwindow_1_1_g_l_window_a0791d0c8205ba2c2541903cf258a58f4}}
+bool {\bfseries visible} () const
+\item
+\mbox{\Hypertarget{classglwindow_1_1_g_l_window_a8a3a6133efd40d58e6b083469c286825}\label{classglwindow_1_1_g_l_window_a8a3a6133efd40d58e6b083469c286825}}
+bool {\bfseries alive} () const
+\item
+\mbox{\Hypertarget{classglwindow_1_1_g_l_window_aee36cf4ab449a96fcaa0f01cd382c618}\label{classglwindow_1_1_g_l_window_aee36cf4ab449a96fcaa0f01cd382c618}}
+bool {\bfseries make\+\_\+current} ()
+\item
+\mbox{\Hypertarget{classglwindow_1_1_g_l_window_ad3e8ca520080b92dd961b4d6708a011a}\label{classglwindow_1_1_g_l_window_ad3e8ca520080b92dd961b4d6708a011a}}
+bool {\bfseries push\+\_\+context} ()
+\item
+\mbox{\Hypertarget{classglwindow_1_1_g_l_window_ac3dc676910b6a4f09616e2a3d41ef8ac}\label{classglwindow_1_1_g_l_window_ac3dc676910b6a4f09616e2a3d41ef8ac}}
+void {\bfseries pop\+\_\+context} ()
+\item
+\mbox{\Hypertarget{classglwindow_1_1_g_l_window_a82eaf4b8f8f86ee3cf0cef21aef2a4bd}\label{classglwindow_1_1_g_l_window_a82eaf4b8f8f86ee3cf0cef21aef2a4bd}}
+void {\bfseries swap\+\_\+buffers} ()
+\item
+\mbox{\Hypertarget{classglwindow_1_1_g_l_window_a6e13fa434eb57f3338da78362b225fde}\label{classglwindow_1_1_g_l_window_a6e13fa434eb57f3338da78362b225fde}}
+void {\bfseries set\+\_\+size} (int w, int h)
+\item
+\mbox{\Hypertarget{classglwindow_1_1_g_l_window_aa60bf838a81fafa38120424a25a2adef}\label{classglwindow_1_1_g_l_window_aa60bf838a81fafa38120424a25a2adef}}
+void {\bfseries set\+\_\+position} (int x, int y)
+\item
+\mbox{\Hypertarget{classglwindow_1_1_g_l_window_ae6a1274fab8ba6831681c43964f97a87}\label{classglwindow_1_1_g_l_window_ae6a1274fab8ba6831681c43964f97a87}}
+void {\bfseries set\+\_\+title} (const char $\ast$title)
+\item
+\mbox{\Hypertarget{classglwindow_1_1_g_l_window_a00d9e2f4d0e7d3696e32a38df005299b}\label{classglwindow_1_1_g_l_window_a00d9e2f4d0e7d3696e32a38df005299b}}
+void {\bfseries add\+\_\+handler} (\hyperlink{structglwindow_1_1_event_handler}{Event\+Handler} $\ast$handler)
+\item
+\mbox{\Hypertarget{classglwindow_1_1_g_l_window_a13a72e01ab5ee8926dc401f0231d32d3}\label{classglwindow_1_1_g_l_window_a13a72e01ab5ee8926dc401f0231d32d3}}
+bool {\bfseries remove\+\_\+handler} (\hyperlink{structglwindow_1_1_event_handler}{Event\+Handler} $\ast$handler)
+\item
+\mbox{\Hypertarget{classglwindow_1_1_g_l_window_adc3ad89ccb14a800919947c55f4f8f81}\label{classglwindow_1_1_g_l_window_adc3ad89ccb14a800919947c55f4f8f81}}
+void {\bfseries handle\+\_\+events} ()
+\item
+\mbox{\Hypertarget{classglwindow_1_1_g_l_window_a9a6d66c63bfc4796fd10927da3e3114f}\label{classglwindow_1_1_g_l_window_a9a6d66c63bfc4796fd10927da3e3114f}}
+void {\bfseries destroy} ()
+\item
+\mbox{\Hypertarget{classglwindow_1_1_g_l_window_a1a8c3e1e280e4c5403a478f5229a3320}\label{classglwindow_1_1_g_l_window_a1a8c3e1e280e4c5403a478f5229a3320}}
+void {\bfseries draw\+\_\+text} (double x, double y, const char $\ast$text, int xywh\mbox{[}4\mbox{]}=0)
+\end{DoxyCompactItemize}
+\subsection*{Static Public Member Functions}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\Hypertarget{classglwindow_1_1_g_l_window_a00458901c7cca772aba1e37c7ae11da5}\label{classglwindow_1_1_g_l_window_a00458901c7cca772aba1e37c7ae11da5}}
+static void {\bfseries handle\+\_\+all\+\_\+events} ()
+\end{DoxyCompactItemize}
+\subsection*{Static Protected Member Functions}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\Hypertarget{classglwindow_1_1_g_l_window_a6ec4437b302fad937613bbc7305b54af}\label{classglwindow_1_1_g_l_window_a6ec4437b302fad937613bbc7305b54af}}
+static void {\bfseries add\+\_\+window} (\hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} $\ast$win)
+\item
+\mbox{\Hypertarget{classglwindow_1_1_g_l_window_a20ba7d81fc374904b55ec40e3fb19a52}\label{classglwindow_1_1_g_l_window_a20ba7d81fc374904b55ec40e3fb19a52}}
+static bool {\bfseries remove\+\_\+window} (\hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} $\ast$win)
+\end{DoxyCompactItemize}
+\subsection*{Protected Attributes}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\Hypertarget{classglwindow_1_1_g_l_window_a362305bae97dad5418748841d7691694}\label{classglwindow_1_1_g_l_window_a362305bae97dad5418748841d7691694}}
+\hyperlink{struct_g_l_window_1_1_system_state}{System\+State} $\ast$ {\bfseries sys\+\_\+state}
+\item
+\mbox{\Hypertarget{classglwindow_1_1_g_l_window_a63eb370b84f35a788b4831e7e8ebb883}\label{classglwindow_1_1_g_l_window_a63eb370b84f35a788b4831e7e8ebb883}}
+std\+::vector$<$ \hyperlink{structglwindow_1_1_event_handler}{Event\+Handler} $\ast$ $>$ {\bfseries handlers}
+\item
+\mbox{\Hypertarget{classglwindow_1_1_g_l_window_a1b26b56139bda79015c4acd5082af29b}\label{classglwindow_1_1_g_l_window_a1b26b56139bda79015c4acd5082af29b}}
+\hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} $\ast$ {\bfseries prev\+\_\+active}
+\end{DoxyCompactItemize}
+\subsection*{Static Protected Attributes}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\Hypertarget{classglwindow_1_1_g_l_window_ae9a8057a689a57a27f923bc745de4bf8}\label{classglwindow_1_1_g_l_window_ae9a8057a689a57a27f923bc745de4bf8}}
+static \hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} $\ast$ {\bfseries active\+\_\+context} = 0
+\item
+\mbox{\Hypertarget{classglwindow_1_1_g_l_window_a53cc9ed919e7251c9a33bf5f9197375c}\label{classglwindow_1_1_g_l_window_a53cc9ed919e7251c9a33bf5f9197375c}}
+static std\+::vector$<$ \hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} $\ast$ $>$ {\bfseries all\+\_\+windows}
+\end{DoxyCompactItemize}
+
+
+The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
+\item
+examples/gl\+Viewer/glwindow.\+hpp\item
+examples/gl\+Viewer/glwindow\+\_\+x11.\+cpp\end{DoxyCompactItemize}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_g_l_window__coll__graph.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_g_l_window__coll__graph.md5
new file mode 100644
index 0000000..5b5aebc
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_g_l_window__coll__graph.md5
@@ -0,0 +1 @@
+8d8a2cbfaa89cd6aa1b2fcc0c3c4569d
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_g_l_window__coll__graph.pdf b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_g_l_window__coll__graph.pdf
new file mode 100644
index 0000000..f231d86
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_g_l_window__coll__graph.pdf differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_scene_window.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_scene_window.tex
new file mode 100644
index 0000000..1f1867e
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_scene_window.tex
@@ -0,0 +1,105 @@
+\hypertarget{classglwindow_1_1_scene_window}{}\section{glwindow\+:\+:Scene\+Window Class Reference}
+\label{classglwindow_1_1_scene_window}\index{glwindow\+::\+Scene\+Window@{glwindow\+::\+Scene\+Window}}
+
+
+Inheritance diagram for glwindow\+:\+:Scene\+Window\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=206pt]{classglwindow_1_1_scene_window__inherit__graph}
+\end{center}
+\end{figure}
+
+
+Collaboration diagram for glwindow\+:\+:Scene\+Window\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{classglwindow_1_1_scene_window__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Classes}
+\begin{DoxyCompactItemize}
+\item
+struct \hyperlink{structglwindow_1_1_scene_window_1_1_viewpoint}{Viewpoint}
+\end{DoxyCompactItemize}
+\subsection*{Public Member Functions}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\Hypertarget{classglwindow_1_1_scene_window_a41959b518db30a3ab785492f1ac010fd}\label{classglwindow_1_1_scene_window_a41959b518db30a3ab785492f1ac010fd}}
+{\bfseries Scene\+Window} (int width, int height, const char $\ast$title)
+\item
+\mbox{\Hypertarget{classglwindow_1_1_scene_window_a2e960ccafe493ce9e71418a03bf88301}\label{classglwindow_1_1_scene_window_a2e960ccafe493ce9e71418a03bf88301}}
+void {\bfseries update} ()
+\item
+\mbox{\Hypertarget{classglwindow_1_1_scene_window_af3c36c90d57620298fd2796ced9af848}\label{classglwindow_1_1_scene_window_af3c36c90d57620298fd2796ced9af848}}
+bool {\bfseries start\+\_\+draw} ()
+\item
+\mbox{\Hypertarget{classglwindow_1_1_scene_window_ab0688f7612cdaa8b06b86a3979abcdf4}\label{classglwindow_1_1_scene_window_ab0688f7612cdaa8b06b86a3979abcdf4}}
+void {\bfseries finish\+\_\+draw} ()
+\end{DoxyCompactItemize}
+\subsection*{Public Attributes}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\Hypertarget{classglwindow_1_1_scene_window_a0946d9bab275dab533fe778af5d3ec7a}\label{classglwindow_1_1_scene_window_a0946d9bab275dab533fe778af5d3ec7a}}
+\hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} {\bfseries win}
+\item
+\mbox{\Hypertarget{classglwindow_1_1_scene_window_aac5dd0d07cb2dd42aa044622c6d7de6b}\label{classglwindow_1_1_scene_window_aac5dd0d07cb2dd42aa044622c6d7de6b}}
+\hyperlink{structglwindow_1_1_scene_window_1_1_viewpoint}{Viewpoint} {\bfseries viewpoint}
+\end{DoxyCompactItemize}
+\subsection*{Protected Member Functions}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\Hypertarget{classglwindow_1_1_scene_window_a1482ec985ea436cb29e8da14cf7c55b5}\label{classglwindow_1_1_scene_window_a1482ec985ea436cb29e8da14cf7c55b5}}
+bool {\bfseries on\+\_\+key\+\_\+down} (\hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} \&win, int key)
+\item
+\mbox{\Hypertarget{classglwindow_1_1_scene_window_a75cabfd481bb531d37ee5637c207311e}\label{classglwindow_1_1_scene_window_a75cabfd481bb531d37ee5637c207311e}}
+bool {\bfseries on\+\_\+button\+\_\+down} (\hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} \&win, int btn, int state, int x, int y)
+\item
+\mbox{\Hypertarget{classglwindow_1_1_scene_window_a10c408229e2f6baea755a07e56a28644}\label{classglwindow_1_1_scene_window_a10c408229e2f6baea755a07e56a28644}}
+bool {\bfseries on\+\_\+button\+\_\+up} (\hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} \&win, int btn, int state, int x, int y)
+\item
+\mbox{\Hypertarget{classglwindow_1_1_scene_window_a3c67279c10c4cff40aacac9571091f12}\label{classglwindow_1_1_scene_window_a3c67279c10c4cff40aacac9571091f12}}
+bool {\bfseries on\+\_\+mouse\+\_\+move} (\hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} \&win, int state, int x, int y)
+\item
+\mbox{\Hypertarget{classglwindow_1_1_scene_window_a0186ad496adbcc11ada5ac24f4d7f37d}\label{classglwindow_1_1_scene_window_a0186ad496adbcc11ada5ac24f4d7f37d}}
+bool {\bfseries on\+\_\+mouse\+\_\+wheel} (\hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} \&win, int state, int x, int y, int dx, int dy)
+\item
+\mbox{\Hypertarget{classglwindow_1_1_scene_window_a932e76733ea8d6197ec9453c1ef09553}\label{classglwindow_1_1_scene_window_a932e76733ea8d6197ec9453c1ef09553}}
+bool {\bfseries on\+\_\+resize} (\hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} \&win, int x, int y, int w, int h)
+\end{DoxyCompactItemize}
+\subsection*{Protected Attributes}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\Hypertarget{classglwindow_1_1_scene_window_a7d77c829486011d04815eeb114919d71}\label{classglwindow_1_1_scene_window_a7d77c829486011d04815eeb114919d71}}
+bool {\bfseries dragging}
+\item
+\mbox{\Hypertarget{classglwindow_1_1_scene_window_aeb7b1933324b7e32ef1c27496e398843}\label{classglwindow_1_1_scene_window_aeb7b1933324b7e32ef1c27496e398843}}
+int {\bfseries drag\+\_\+btn}
+\item
+\mbox{\Hypertarget{classglwindow_1_1_scene_window_a92ed7e285bc0c1f72bbe34830c2fa839}\label{classglwindow_1_1_scene_window_a92ed7e285bc0c1f72bbe34830c2fa839}}
+int {\bfseries x0}
+\item
+\mbox{\Hypertarget{classglwindow_1_1_scene_window_a5a7ef8f289c9ef5d4546099724bfff77}\label{classglwindow_1_1_scene_window_a5a7ef8f289c9ef5d4546099724bfff77}}
+int {\bfseries y0}
+\item
+\mbox{\Hypertarget{classglwindow_1_1_scene_window_a261ceaff788f0d6c2d01ca71d2b268c7}\label{classglwindow_1_1_scene_window_a261ceaff788f0d6c2d01ca71d2b268c7}}
+double {\bfseries inv\+\_\+w0}
+\item
+\mbox{\Hypertarget{classglwindow_1_1_scene_window_acb85c5bbf1a1e7152b5518c298e9e6cb}\label{classglwindow_1_1_scene_window_acb85c5bbf1a1e7152b5518c298e9e6cb}}
+double {\bfseries inv\+\_\+h0}
+\item
+\mbox{\Hypertarget{classglwindow_1_1_scene_window_a331e548ff2c83c970ca9ebddcd04581c}\label{classglwindow_1_1_scene_window_a331e548ff2c83c970ca9ebddcd04581c}}
+\hyperlink{structglwindow_1_1_scene_window_1_1_viewpoint}{Viewpoint} {\bfseries vp0}
+\item
+\mbox{\Hypertarget{classglwindow_1_1_scene_window_a93a5025d20cd92db7bf541764fe32b93}\label{classglwindow_1_1_scene_window_a93a5025d20cd92db7bf541764fe32b93}}
+bool {\bfseries drawing}
+\end{DoxyCompactItemize}
+
+
+The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
+\item
+examples/gl\+Viewer/scenewindow.\+hpp\item
+examples/gl\+Viewer/scenewindow.\+cpp\end{DoxyCompactItemize}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_scene_window__coll__graph.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_scene_window__coll__graph.md5
new file mode 100644
index 0000000..d640c14
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_scene_window__coll__graph.md5
@@ -0,0 +1 @@
+87cd063d63fadf3da265a8b3725f151a
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_scene_window__coll__graph.pdf b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_scene_window__coll__graph.pdf
new file mode 100644
index 0000000..7def99c
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_scene_window__coll__graph.pdf differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_scene_window__inherit__graph.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_scene_window__inherit__graph.md5
new file mode 100644
index 0000000..6911b0f
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_scene_window__inherit__graph.md5
@@ -0,0 +1 @@
+e87497ae6fdf6e2fd160bd0e5a158ab8
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_scene_window__inherit__graph.pdf b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_scene_window__inherit__graph.pdf
new file mode 100644
index 0000000..64ba36c
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classglwindow_1_1_scene_window__inherit__graph.pdf differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classinfo__camera___string.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classinfo__camera___string.tex
new file mode 100644
index 0000000..a3431b1
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classinfo__camera___string.tex
@@ -0,0 +1,19 @@
+\hypertarget{classinfo__camera___string}{}\section{info\+\_\+camera\+\_\+\+String Class Reference}
+\label{classinfo__camera___string}\index{info\+\_\+camera\+\_\+\+String@{info\+\_\+camera\+\_\+\+String}}
+\subsection*{Public Attributes}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\Hypertarget{classinfo__camera___string_a534901ae79a44cbd9e298e237fa4fc0f}\label{classinfo__camera___string_a534901ae79a44cbd9e298e237fa4fc0f}}
+char {\bfseries i\+Manufacturer} \mbox{[}M\+A\+X\+\_\+\+P\+A\+TH\mbox{]}
+\item
+\mbox{\Hypertarget{classinfo__camera___string_a7760c615973f721307ccc15d291b82dd}\label{classinfo__camera___string_a7760c615973f721307ccc15d291b82dd}}
+char {\bfseries i\+Product} \mbox{[}M\+A\+X\+\_\+\+P\+A\+TH\mbox{]}
+\item
+\mbox{\Hypertarget{classinfo__camera___string_aa36e331d9d8aa31382774bdd0a22f23e}\label{classinfo__camera___string_aa36e331d9d8aa31382774bdd0a22f23e}}
+char {\bfseries i\+Serial\+Number} \mbox{[}M\+A\+X\+\_\+\+P\+A\+TH\mbox{]}
+\end{DoxyCompactItemize}
+
+
+The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
+\item
+src/camera\+\_\+api.\+h\end{DoxyCompactItemize}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classinfo__camera__os.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classinfo__camera__os.tex
new file mode 100644
index 0000000..42f7c32
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/classinfo__camera__os.tex
@@ -0,0 +1,37 @@
+\hypertarget{classinfo__camera__os}{}\section{info\+\_\+camera\+\_\+os Class Reference}
+\label{classinfo__camera__os}\index{info\+\_\+camera\+\_\+os@{info\+\_\+camera\+\_\+os}}
+\subsection*{Public Attributes}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\Hypertarget{classinfo__camera__os_a3cda29196c1943c0312f89220c635872}\label{classinfo__camera__os_a3cda29196c1943c0312f89220c635872}}
+W\+O\+RD {\bfseries vid}
+\item
+\mbox{\Hypertarget{classinfo__camera__os_a939af1154643fade0a13b89640955244}\label{classinfo__camera__os_a939af1154643fade0a13b89640955244}}
+W\+O\+RD {\bfseries pid}
+\item
+\mbox{\Hypertarget{classinfo__camera__os_a5634876a9841ff0a903a06e224213287}\label{classinfo__camera__os_a5634876a9841ff0a903a06e224213287}}
+W\+O\+RD {\bfseries bcd\+Device}
+\item
+\mbox{\Hypertarget{classinfo__camera__os_a9e417bafcff3ee428bfdf2510047dd80}\label{classinfo__camera__os_a9e417bafcff3ee428bfdf2510047dd80}}
+char {\bfseries device\+ID} \mbox{[}M\+A\+X\+\_\+\+P\+A\+TH\mbox{]}
+\item
+\mbox{\Hypertarget{classinfo__camera__os_a47c4e49f8d85be806ad67a052330483f}\label{classinfo__camera__os_a47c4e49f8d85be806ad67a052330483f}}
+char {\bfseries device} \mbox{[}M\+A\+X\+\_\+\+P\+A\+TH\mbox{]}
+\item
+\mbox{\Hypertarget{classinfo__camera__os_a18e02e7605102fc883644a840c4d000d}\label{classinfo__camera__os_a18e02e7605102fc883644a840c4d000d}}
+B\+Y\+TE {\bfseries ic\+Type}
+\item
+\mbox{\Hypertarget{classinfo__camera__os_a85043a073c9215c6957c2df585d8fcb2}\label{classinfo__camera__os_a85043a073c9215c6957c2df585d8fcb2}}
+uint64\+\_\+t {\bfseries busnum}
+\item
+\mbox{\Hypertarget{classinfo__camera__os_ae82dc3a3a9af8c1b0a6c10b3ac2415bf}\label{classinfo__camera__os_ae82dc3a3a9af8c1b0a6c10b3ac2415bf}}
+uint64\+\_\+t {\bfseries devnum}
+\item
+\mbox{\Hypertarget{classinfo__camera__os_a37e158cee8c551ed73bb67c7647dfed9}\label{classinfo__camera__os_a37e158cee8c551ed73bb67c7647dfed9}}
+char {\bfseries location} \mbox{[}M\+A\+X\+\_\+\+P\+A\+TH\mbox{]}
+\end{DoxyCompactItemize}
+
+
+The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
+\item
+src/camera\+\_\+api.\+h\end{DoxyCompactItemize}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_209c714a154efd8d40a59e92e6a74502.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_209c714a154efd8d40a59e92e6a74502.tex
new file mode 100644
index 0000000..34c605c
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_209c714a154efd8d40a59e92e6a74502.tex
@@ -0,0 +1,2 @@
+\hypertarget{dir_209c714a154efd8d40a59e92e6a74502}{}\section{build/\+C\+Make\+Files/3.14.6/\+Compiler\+IdC Directory Reference}
+\label{dir_209c714a154efd8d40a59e92e6a74502}\index{build/\+C\+Make\+Files/3.\+14.\+6/\+Compiler\+Id\+C Directory Reference@{build/\+C\+Make\+Files/3.\+14.\+6/\+Compiler\+Id\+C Directory Reference}}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_3a56b08581502e42e7c33d229017cb82.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_3a56b08581502e42e7c33d229017cb82.tex
new file mode 100644
index 0000000..d599cb0
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_3a56b08581502e42e7c33d229017cb82.tex
@@ -0,0 +1,5 @@
+\hypertarget{dir_3a56b08581502e42e7c33d229017cb82}{}\section{build/\+C\+Make\+Files/3.14.6 Directory Reference}
+\label{dir_3a56b08581502e42e7c33d229017cb82}\index{build/\+C\+Make\+Files/3.\+14.\+6 Directory Reference@{build/\+C\+Make\+Files/3.\+14.\+6 Directory Reference}}
+\subsection*{Directories}
+\begin{DoxyCompactItemize}
+\end{DoxyCompactItemize}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_4eeb864c4eec08c7d6b9d3b0352cfdde.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_4eeb864c4eec08c7d6b9d3b0352cfdde.tex
new file mode 100644
index 0000000..85fbb68
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_4eeb864c4eec08c7d6b9d3b0352cfdde.tex
@@ -0,0 +1,10 @@
+\hypertarget{dir_4eeb864c4eec08c7d6b9d3b0352cfdde}{}\section{tools Directory Reference}
+\label{dir_4eeb864c4eec08c7d6b9d3b0352cfdde}\index{tools Directory Reference@{tools Directory Reference}}
+Directory dependency graph for tools\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=134pt]{dir_4eeb864c4eec08c7d6b9d3b0352cfdde_dep}
+\end{center}
+\end{figure}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_4eeb864c4eec08c7d6b9d3b0352cfdde_dep.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_4eeb864c4eec08c7d6b9d3b0352cfdde_dep.md5
new file mode 100644
index 0000000..df41d98
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_4eeb864c4eec08c7d6b9d3b0352cfdde_dep.md5
@@ -0,0 +1 @@
+96d321e00c4e5ae1269226ed3cd0f67d
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_4eeb864c4eec08c7d6b9d3b0352cfdde_dep.pdf b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_4eeb864c4eec08c7d6b9d3b0352cfdde_dep.pdf
new file mode 100644
index 0000000..096b840
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_4eeb864c4eec08c7d6b9d3b0352cfdde_dep.pdf differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_4fef79e7177ba769987a8da36c892c5f.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_4fef79e7177ba769987a8da36c892c5f.tex
new file mode 100644
index 0000000..4a061f4
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_4fef79e7177ba769987a8da36c892c5f.tex
@@ -0,0 +1,5 @@
+\hypertarget{dir_4fef79e7177ba769987a8da36c892c5f}{}\section{build Directory Reference}
+\label{dir_4fef79e7177ba769987a8da36c892c5f}\index{build Directory Reference@{build Directory Reference}}
+\subsection*{Directories}
+\begin{DoxyCompactItemize}
+\end{DoxyCompactItemize}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_63772b626f2709090f0bdca0f40827b4.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_63772b626f2709090f0bdca0f40827b4.tex
new file mode 100644
index 0000000..26bf776
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_63772b626f2709090f0bdca0f40827b4.tex
@@ -0,0 +1,2 @@
+\hypertarget{dir_63772b626f2709090f0bdca0f40827b4}{}\section{build/\+C\+Make\+Files Directory Reference}
+\label{dir_63772b626f2709090f0bdca0f40827b4}\index{build/\+C\+Make\+Files Directory Reference@{build/\+C\+Make\+Files Directory Reference}}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_68267d1309a1af8e8297ef4c3efbcdba.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_68267d1309a1af8e8297ef4c3efbcdba.tex
new file mode 100644
index 0000000..ea8cb5a
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_68267d1309a1af8e8297ef4c3efbcdba.tex
@@ -0,0 +1,15 @@
+\hypertarget{dir_68267d1309a1af8e8297ef4c3efbcdba}{}\section{src Directory Reference}
+\label{dir_68267d1309a1af8e8297ef4c3efbcdba}\index{src Directory Reference@{src Directory Reference}}
+Directory dependency graph for src\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=134pt]{dir_68267d1309a1af8e8297ef4c3efbcdba_dep}
+\end{center}
+\end{figure}
+\subsection*{Files}
+\begin{DoxyCompactItemize}
+\item
+file \hyperlink{_stereo_camera_common_8cc}{Stereo\+Camera\+Common.\+cc}
+\begin{DoxyCompactList}\small\item\em This file is part of Unitree\+Camera\+S\+DK, which implement stereo vision algorithm. \end{DoxyCompactList}\end{DoxyCompactItemize}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5
new file mode 100644
index 0000000..2576efc
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5
@@ -0,0 +1 @@
+9c56f5576d0bd1b883527830dcc0dafd
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.pdf b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.pdf
new file mode 100644
index 0000000..05b8935
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.pdf differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_8a35f475ed9d8a5443c1993b236eb8f6.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_8a35f475ed9d8a5443c1993b236eb8f6.tex
new file mode 100644
index 0000000..7d072ab
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_8a35f475ed9d8a5443c1993b236eb8f6.tex
@@ -0,0 +1,2 @@
+\hypertarget{dir_8a35f475ed9d8a5443c1993b236eb8f6}{}\section{build/\+C\+Make\+Files/3.14.6/\+Compiler\+Id\+C\+XX Directory Reference}
+\label{dir_8a35f475ed9d8a5443c1993b236eb8f6}\index{build/\+C\+Make\+Files/3.\+14.\+6/\+Compiler\+Id\+C\+X\+X Directory Reference@{build/\+C\+Make\+Files/3.\+14.\+6/\+Compiler\+Id\+C\+X\+X Directory Reference}}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_8d5e63337d9bc0375b6fa20fd80d83ec.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_8d5e63337d9bc0375b6fa20fd80d83ec.tex
new file mode 100644
index 0000000..1f5432f
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_8d5e63337d9bc0375b6fa20fd80d83ec.tex
@@ -0,0 +1,2 @@
+\hypertarget{dir_8d5e63337d9bc0375b6fa20fd80d83ec}{}\section{examples/gl\+Viewer Directory Reference}
+\label{dir_8d5e63337d9bc0375b6fa20fd80d83ec}\index{examples/gl\+Viewer Directory Reference@{examples/gl\+Viewer Directory Reference}}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_d28a4824dc47e487b107a5db32ef43c4.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_d28a4824dc47e487b107a5db32ef43c4.tex
new file mode 100644
index 0000000..c0e3a0a
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_d28a4824dc47e487b107a5db32ef43c4.tex
@@ -0,0 +1,26 @@
+\hypertarget{dir_d28a4824dc47e487b107a5db32ef43c4}{}\section{examples Directory Reference}
+\label{dir_d28a4824dc47e487b107a5db32ef43c4}\index{examples Directory Reference@{examples Directory Reference}}
+Directory dependency graph for examples\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=244pt]{dir_d28a4824dc47e487b107a5db32ef43c4_dep}
+\end{center}
+\end{figure}
+\subsection*{Directories}
+\begin{DoxyCompactItemize}
+\end{DoxyCompactItemize}
+\subsection*{Files}
+\begin{DoxyCompactItemize}
+\item
+file \hyperlink{example__get_calib_params_file_8cc}{example\+\_\+get\+Calib\+Params\+File.\+cc}
+\begin{DoxyCompactList}\small\item\em This file is part of Unitree\+Camera\+S\+DK. \end{DoxyCompactList}\item
+file \hyperlink{example__get_depth_frame_8cc}{example\+\_\+get\+Depth\+Frame.\+cc}
+\begin{DoxyCompactList}\small\item\em This file is part of Unitree\+Camera\+S\+DK. \end{DoxyCompactList}\item
+file \hyperlink{example__get_point_cloud_8cc}{example\+\_\+get\+Point\+Cloud.\+cc}
+\begin{DoxyCompactList}\small\item\em This file is part of Unitree\+Camera\+S\+DK. \end{DoxyCompactList}\item
+file \hyperlink{example__get_raw_frame_8cc}{example\+\_\+get\+Raw\+Frame.\+cc}
+\begin{DoxyCompactList}\small\item\em This file is part of Unitree\+Camera\+S\+DK. \end{DoxyCompactList}\item
+file \hyperlink{example__get_rect_frame_8cc}{example\+\_\+get\+Rect\+Frame.\+cc}
+\begin{DoxyCompactList}\small\item\em This file is part of Unitree\+Camera\+S\+DK. \end{DoxyCompactList}\end{DoxyCompactItemize}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_d28a4824dc47e487b107a5db32ef43c4_dep.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_d28a4824dc47e487b107a5db32ef43c4_dep.md5
new file mode 100644
index 0000000..60711e1
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_d28a4824dc47e487b107a5db32ef43c4_dep.md5
@@ -0,0 +1 @@
+da4da957ccd48cc377870afce1819bb4
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_d28a4824dc47e487b107a5db32ef43c4_dep.pdf b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_d28a4824dc47e487b107a5db32ef43c4_dep.pdf
new file mode 100644
index 0000000..7230537
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_d28a4824dc47e487b107a5db32ef43c4_dep.pdf differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_d44c64559bbebec7f509842c48db8b23.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_d44c64559bbebec7f509842c48db8b23.tex
new file mode 100644
index 0000000..d7c4a64
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/dir_d44c64559bbebec7f509842c48db8b23.tex
@@ -0,0 +1,11 @@
+\hypertarget{dir_d44c64559bbebec7f509842c48db8b23}{}\section{include Directory Reference}
+\label{dir_d44c64559bbebec7f509842c48db8b23}\index{include Directory Reference@{include Directory Reference}}
+\subsection*{Files}
+\begin{DoxyCompactItemize}
+\item
+file \hyperlink{_stereo_camera_common_8hpp}{Stereo\+Camera\+Common.\+hpp}
+\begin{DoxyCompactList}\small\item\em This file is part of Unitree\+Camera\+S\+DK, which declare stereo camera algorithm A\+P\+Is. \end{DoxyCompactList}\item
+file \hyperlink{_system_log_8hpp}{System\+Log.\+hpp}
+\begin{DoxyCompactList}\small\item\em This file is part of Unitree\+Camera\+S\+DK, which declare the A\+P\+Is of log system. \end{DoxyCompactList}\item
+file \hyperlink{_unitree_camera_s_d_k_8hpp}{Unitree\+Camera\+S\+D\+K.\+hpp}
+\begin{DoxyCompactList}\small\item\em This file is part of Unitree\+Camera\+S\+DK, which declare unitree camera A\+P\+Is. \end{DoxyCompactList}\end{DoxyCompactItemize}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/doxygen.sty b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/doxygen.sty
new file mode 100644
index 0000000..e457acc
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/doxygen.sty
@@ -0,0 +1,503 @@
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{doxygen}
+
+% Packages used by this style file
+\RequirePackage{alltt}
+\RequirePackage{array}
+\RequirePackage{calc}
+\RequirePackage{float}
+\RequirePackage{ifthen}
+\RequirePackage{verbatim}
+\RequirePackage[table]{xcolor}
+\RequirePackage{longtable}
+\RequirePackage{tabu}
+\RequirePackage{tabularx}
+\RequirePackage{multirow}
+
+%---------- Internal commands used in this style file ----------------
+
+\newcommand{\ensurespace}[1]{%
+ \begingroup%
+ \setlength{\dimen@}{#1}%
+ \vskip\z@\@plus\dimen@%
+ \penalty -100\vskip\z@\@plus -\dimen@%
+ \vskip\dimen@%
+ \penalty 9999%
+ \vskip -\dimen@%
+ \vskip\z@skip% hide the previous |\vskip| from |\addvspace|
+ \endgroup%
+}
+
+\newcommand{\DoxyLabelFont}{}
+\newcommand{\entrylabel}[1]{%
+ {%
+ \parbox[b]{\labelwidth-4pt}{%
+ \makebox[0pt][l]{\DoxyLabelFont#1}%
+ \vspace{1.5\baselineskip}%
+ }%
+ }%
+}
+
+\newenvironment{DoxyDesc}[1]{%
+ \ensurespace{4\baselineskip}%
+ \begin{list}{}{%
+ \settowidth{\labelwidth}{20pt}%
+ \setlength{\parsep}{0pt}%
+ \setlength{\itemsep}{0pt}%
+ \setlength{\leftmargin}{\labelwidth+\labelsep}%
+ \renewcommand{\makelabel}{\entrylabel}%
+ }%
+ \item[#1]%
+}{%
+ \end{list}%
+}
+
+\newsavebox{\xrefbox}
+\newlength{\xreflength}
+\newcommand{\xreflabel}[1]{%
+ \sbox{\xrefbox}{#1}%
+ \setlength{\xreflength}{\wd\xrefbox}%
+ \ifthenelse{\xreflength>\labelwidth}{%
+ \begin{minipage}{\textwidth}%
+ \setlength{\parindent}{0pt}%
+ \hangindent=15pt\bfseries #1\vspace{1.2\itemsep}%
+ \end{minipage}%
+ }{%
+ \parbox[b]{\labelwidth}{\makebox[0pt][l]{\textbf{#1}}}%
+ }%
+}
+
+%---------- Commands used by doxygen LaTeX output generator ----------
+
+% Used by ...
+\newenvironment{DoxyPre}{%
+ \small%
+ \begin{alltt}%
+}{%
+ \end{alltt}%
+ \normalsize%
+}
+
+% Used by @code ... @endcode
+\newenvironment{DoxyCode}{%
+ \par%
+ \scriptsize%
+ \begin{alltt}%
+}{%
+ \end{alltt}%
+ \normalsize%
+}
+
+% Used by @example, @include, @includelineno and @dontinclude
+\newenvironment{DoxyCodeInclude}{%
+ \DoxyCode%
+}{%
+ \endDoxyCode%
+}
+
+% Used by @verbatim ... @endverbatim
+\newenvironment{DoxyVerb}{%
+ \footnotesize%
+ \verbatim%
+}{%
+ \endverbatim%
+ \normalsize%
+}
+
+% Used by @verbinclude
+\newenvironment{DoxyVerbInclude}{%
+ \DoxyVerb%
+}{%
+ \endDoxyVerb%
+}
+
+% Used by numbered lists (using '-#' or ... )
+\newenvironment{DoxyEnumerate}{%
+ \enumerate%
+}{%
+ \endenumerate%
+}
+
+% Used by bullet lists (using '-', @li, @arg, or )
+\newenvironment{DoxyItemize}{%
+ \itemize%
+}{%
+ \enditemize%
+}
+
+% Used by description lists (using ... )
+\newenvironment{DoxyDescription}{%
+ \description%
+}{%
+ \enddescription%
+}
+
+% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc
+% (only if caption is specified)
+\newenvironment{DoxyImage}{%
+ \begin{figure}[H]%
+ \begin{center}%
+}{%
+ \end{center}%
+ \end{figure}%
+}
+
+% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc
+% (only if no caption is specified)
+\newenvironment{DoxyImageNoCaption}{%
+ \begin{center}%
+}{%
+ \end{center}%
+}
+
+% Used by @attention
+\newenvironment{DoxyAttention}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @author and @authors
+\newenvironment{DoxyAuthor}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @date
+\newenvironment{DoxyDate}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @invariant
+\newenvironment{DoxyInvariant}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @note
+\newenvironment{DoxyNote}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @post
+\newenvironment{DoxyPostcond}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @pre
+\newenvironment{DoxyPrecond}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @copyright
+\newenvironment{DoxyCopyright}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @remark
+\newenvironment{DoxyRemark}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @return and @returns
+\newenvironment{DoxyReturn}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @since
+\newenvironment{DoxySince}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @see
+\newenvironment{DoxySeeAlso}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @version
+\newenvironment{DoxyVersion}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @warning
+\newenvironment{DoxyWarning}[1]{%
+ \begin{DoxyDesc}{#1}%
+}{%
+ \end{DoxyDesc}%
+}
+
+% Used by @internal
+\newenvironment{DoxyInternal}[1]{%
+ \paragraph*{#1}%
+}{%
+}
+
+% Used by @par and @paragraph
+\newenvironment{DoxyParagraph}[1]{%
+ \begin{list}{}{%
+ \settowidth{\labelwidth}{40pt}%
+ \setlength{\leftmargin}{\labelwidth}%
+ \setlength{\parsep}{0pt}%
+ \setlength{\itemsep}{-4pt}%
+ \renewcommand{\makelabel}{\entrylabel}%
+ }%
+ \item[#1]%
+}{%
+ \end{list}%
+}
+
+% Used by parameter lists
+\newenvironment{DoxyParams}[2][]{%
+ \tabulinesep=1mm%
+ \par%
+ \ifthenelse{\equal{#1}{}}%
+ {\begin{longtabu} spread 0pt [l]{|X[-1,l]|X[-1,l]|}}% name + description
+ {\ifthenelse{\equal{#1}{1}}%
+ {\begin{longtabu} spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + name + desc
+ {\begin{longtabu} spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + type + name + desc
+ }
+ \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]%
+ \hline%
+ \endfirsthead%
+ \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]%
+ \hline%
+ \endhead%
+}{%
+ \end{longtabu}%
+ \vspace{6pt}%
+}
+
+% Used for fields of simple structs
+\newenvironment{DoxyFields}[1]{%
+ \tabulinesep=1mm%
+ \par%
+ \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|X[-1,l]|}%
+ \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
+ \hline%
+ \endfirsthead%
+ \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
+ \hline%
+ \endhead%
+}{%
+ \end{longtabu}%
+ \vspace{6pt}%
+}
+
+% Used for fields simple class style enums
+\newenvironment{DoxyEnumFields}[1]{%
+ \tabulinesep=1mm%
+ \par%
+ \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
+ \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
+ \hline%
+ \endfirsthead%
+ \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
+ \hline%
+ \endhead%
+}{%
+ \end{longtabu}%
+ \vspace{6pt}%
+}
+
+% Used for parameters within a detailed function description
+\newenvironment{DoxyParamCaption}{%
+ \renewcommand{\item}[2][]{\\ \hspace*{2.0cm} ##1 {\em ##2}}%
+}{%
+}
+
+% Used by return value lists
+\newenvironment{DoxyRetVals}[1]{%
+ \tabulinesep=1mm%
+ \par%
+ \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
+ \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
+ \hline%
+ \endfirsthead%
+ \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
+ \hline%
+ \endhead%
+}{%
+ \end{longtabu}%
+ \vspace{6pt}%
+}
+
+% Used by exception lists
+\newenvironment{DoxyExceptions}[1]{%
+ \tabulinesep=1mm%
+ \par%
+ \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
+ \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
+ \hline%
+ \endfirsthead%
+ \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
+ \hline%
+ \endhead%
+}{%
+ \end{longtabu}%
+ \vspace{6pt}%
+}
+
+% Used by template parameter lists
+\newenvironment{DoxyTemplParams}[1]{%
+ \tabulinesep=1mm%
+ \par%
+ \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}%
+ \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
+ \hline%
+ \endfirsthead%
+ \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]%
+ \hline%
+ \endhead%
+}{%
+ \end{longtabu}%
+ \vspace{6pt}%
+}
+
+% Used for member lists
+\newenvironment{DoxyCompactItemize}{%
+ \begin{itemize}%
+ \setlength{\itemsep}{-3pt}%
+ \setlength{\parsep}{0pt}%
+ \setlength{\topsep}{0pt}%
+ \setlength{\partopsep}{0pt}%
+}{%
+ \end{itemize}%
+}
+
+% Used for member descriptions
+\newenvironment{DoxyCompactList}{%
+ \begin{list}{}{%
+ \setlength{\leftmargin}{0.5cm}%
+ \setlength{\itemsep}{0pt}%
+ \setlength{\parsep}{0pt}%
+ \setlength{\topsep}{0pt}%
+ \renewcommand{\makelabel}{\hfill}%
+ }%
+}{%
+ \end{list}%
+}
+
+% Used for reference lists (@bug, @deprecated, @todo, etc.)
+\newenvironment{DoxyRefList}{%
+ \begin{list}{}{%
+ \setlength{\labelwidth}{10pt}%
+ \setlength{\leftmargin}{\labelwidth}%
+ \addtolength{\leftmargin}{\labelsep}%
+ \renewcommand{\makelabel}{\xreflabel}%
+ }%
+}{%
+ \end{list}%
+}
+
+% Used by @bug, @deprecated, @todo, etc.
+\newenvironment{DoxyRefDesc}[1]{%
+ \begin{list}{}{%
+ \renewcommand\makelabel[1]{\textbf{##1}}%
+ \settowidth\labelwidth{\makelabel{#1}}%
+ \setlength\leftmargin{\labelwidth+\labelsep}%
+ }%
+}{%
+ \end{list}%
+}
+
+% Used by parameter lists and simple sections
+\newenvironment{Desc}
+{\begin{list}{}{%
+ \settowidth{\labelwidth}{20pt}%
+ \setlength{\parsep}{0pt}%
+ \setlength{\itemsep}{0pt}%
+ \setlength{\leftmargin}{\labelwidth+\labelsep}%
+ \renewcommand{\makelabel}{\entrylabel}%
+ }
+}{%
+ \end{list}%
+}
+
+% Used by tables
+\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}%
+\newenvironment{TabularC}[1]%
+{\tabulinesep=1mm
+\begin{longtabu} spread 0pt [c]{*#1{|X[-1]}|}}%
+{\end{longtabu}\par}%
+
+\newenvironment{TabularNC}[1]%
+{\begin{tabu} spread 0pt [l]{*#1{|X[-1]}|}}%
+{\end{tabu}\par}%
+
+% Used for member group headers
+\newenvironment{Indent}{%
+ \begin{list}{}{%
+ \setlength{\leftmargin}{0.5cm}%
+ }%
+ \item[]\ignorespaces%
+}{%
+ \unskip%
+ \end{list}%
+}
+
+% Used when hyperlinks are turned off
+\newcommand{\doxyref}[3]{%
+ \textbf{#1} (\textnormal{#2}\,\pageref{#3})%
+}
+
+% Used to link to a table when hyperlinks are turned on
+\newcommand{\doxytablelink}[2]{%
+ \ref{#1}%
+}
+
+% Used to link to a table when hyperlinks are turned off
+\newcommand{\doxytableref}[3]{%
+ \ref{#3}%
+}
+
+% Used by @addindex
+\newcommand{\lcurly}{\{}
+\newcommand{\rcurly}{\}}
+
+% Colors used for syntax highlighting
+\definecolor{comment}{rgb}{0.5,0.0,0.0}
+\definecolor{keyword}{rgb}{0.0,0.5,0.0}
+\definecolor{keywordtype}{rgb}{0.38,0.25,0.125}
+\definecolor{keywordflow}{rgb}{0.88,0.5,0.0}
+\definecolor{preprocessor}{rgb}{0.5,0.38,0.125}
+\definecolor{stringliteral}{rgb}{0.0,0.125,0.25}
+\definecolor{charliteral}{rgb}{0.0,0.5,0.5}
+\definecolor{vhdldigit}{rgb}{1.0,0.0,1.0}
+\definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43}
+\definecolor{vhdllogic}{rgb}{1.0,0.0,0.0}
+\definecolor{vhdlchar}{rgb}{0.0,0.0,0.0}
+
+% Color used for table heading
+\newcommand{\tableheadbgcolor}{lightgray}%
+
+% Version of hypertarget with correct landing location
+\newcommand{\Hypertarget}[1]{\Hy@raisedlink{\hypertarget{#1}{}}}
+
+% Define caption that is also suitable in a table
+\makeatletter
+\def\doxyfigcaption{%
+\refstepcounter{figure}%
+\@dblarg{\@caption{figure}}}
+\makeatother
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_calib_params_file_8cc.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_calib_params_file_8cc.tex
new file mode 100644
index 0000000..433b30c
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_calib_params_file_8cc.tex
@@ -0,0 +1,59 @@
+\hypertarget{example__get_calib_params_file_8cc}{}\section{examples/example\+\_\+get\+Calib\+Params\+File.cc File Reference}
+\label{example__get_calib_params_file_8cc}\index{examples/example\+\_\+get\+Calib\+Params\+File.\+cc@{examples/example\+\_\+get\+Calib\+Params\+File.\+cc}}
+
+
+This file is part of Unitree\+Camera\+S\+DK.
+
+
+{\ttfamily \#include $<$Unitree\+Camera\+S\+D\+K.\+hpp$>$}\newline
+{\ttfamily \#include $<$unistd.\+h$>$}\newline
+Include dependency graph for example\+\_\+get\+Calib\+Params\+File.\+cc\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{example__get_calib_params_file_8cc__incl}
+\end{center}
+\end{figure}
+\subsection*{Functions}
+\begin{DoxyCompactItemize}
+\item
+int \hyperlink{example__get_calib_params_file_8cc_a0ddf1224851353fc92bfbff6f499fa97}{main} (int argc, char $\ast$argv\mbox{[}$\,$\mbox{]})
+\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+This file is part of Unitree\+Camera\+S\+DK.
+
+This example that how to get camera internal parameters \begin{DoxyAuthor}{Author}
+Zhang\+Chunyang
+\end{DoxyAuthor}
+\begin{DoxyDate}{Date}
+2021.\+07.\+31
+\end{DoxyDate}
+\begin{DoxyVersion}{Version}
+1.\+0.\+1
+\end{DoxyVersion}
+\begin{DoxyCopyright}{Copyright}
+Copyright (c) 2020-\/2021, Hangzhou Yushu Technology Stock C\+O.\+L\+TD. All Rights Reserved.
+\end{DoxyCopyright}
+
+
+\subsection{Function Documentation}
+\mbox{\Hypertarget{example__get_calib_params_file_8cc_a0ddf1224851353fc92bfbff6f499fa97}\label{example__get_calib_params_file_8cc_a0ddf1224851353fc92bfbff6f499fa97}}
+\index{example\+\_\+get\+Calib\+Params\+File.\+cc@{example\+\_\+get\+Calib\+Params\+File.\+cc}!main@{main}}
+\index{main@{main}!example\+\_\+get\+Calib\+Params\+File.\+cc@{example\+\_\+get\+Calib\+Params\+File.\+cc}}
+\subsubsection{\texorpdfstring{main()}{main()}}
+{\footnotesize\ttfamily int main (\begin{DoxyParamCaption}\item[{int}]{argc, }\item[{char $\ast$}]{argv\mbox{[}$\,$\mbox{]} }\end{DoxyParamCaption})}
+
+$<$ init \hyperlink{class_unitree_camera}{Unitree\+Camera} object by config file
+
+$<$ get camera open state
+
+$<$ disable image h264 encoding and share memory sharing
+
+$<$ wait parameters initialization finished
+
+$<$ save parameters to output\+\_\+cam\+Calib\+Params.\+yaml
+
+$<$ stop camera capturing
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_calib_params_file_8cc__incl.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_calib_params_file_8cc__incl.md5
new file mode 100644
index 0000000..e10087d
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_calib_params_file_8cc__incl.md5
@@ -0,0 +1 @@
+67eb2f387eec12c5012cf4c981a1c034
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_calib_params_file_8cc__incl.pdf b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_calib_params_file_8cc__incl.pdf
new file mode 100644
index 0000000..4283767
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_calib_params_file_8cc__incl.pdf differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_depth_frame_8cc.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_depth_frame_8cc.tex
new file mode 100644
index 0000000..b62715c
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_depth_frame_8cc.tex
@@ -0,0 +1,61 @@
+\hypertarget{example__get_depth_frame_8cc}{}\section{examples/example\+\_\+get\+Depth\+Frame.cc File Reference}
+\label{example__get_depth_frame_8cc}\index{examples/example\+\_\+get\+Depth\+Frame.\+cc@{examples/example\+\_\+get\+Depth\+Frame.\+cc}}
+
+
+This file is part of Unitree\+Camera\+S\+DK.
+
+
+{\ttfamily \#include $<$Unitree\+Camera\+S\+D\+K.\+hpp$>$}\newline
+{\ttfamily \#include $<$unistd.\+h$>$}\newline
+Include dependency graph for example\+\_\+get\+Depth\+Frame.\+cc\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{example__get_depth_frame_8cc__incl}
+\end{center}
+\end{figure}
+\subsection*{Functions}
+\begin{DoxyCompactItemize}
+\item
+int \hyperlink{example__get_depth_frame_8cc_a0ddf1224851353fc92bfbff6f499fa97}{main} (int argc, char $\ast$argv\mbox{[}$\,$\mbox{]})
+\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+This file is part of Unitree\+Camera\+S\+DK.
+
+This example that how to get depth frame \begin{DoxyAuthor}{Author}
+Zhang\+Chunyang
+\end{DoxyAuthor}
+\begin{DoxyDate}{Date}
+2021.\+07.\+31
+\end{DoxyDate}
+\begin{DoxyVersion}{Version}
+1.\+0.\+1
+\end{DoxyVersion}
+\begin{DoxyCopyright}{Copyright}
+Copyright (c) 2020-\/2021, Hangzhou Yushu Technology Stock C\+O.\+L\+TD. All Rights Reserved.
+\end{DoxyCopyright}
+
+
+\subsection{Function Documentation}
+\mbox{\Hypertarget{example__get_depth_frame_8cc_a0ddf1224851353fc92bfbff6f499fa97}\label{example__get_depth_frame_8cc_a0ddf1224851353fc92bfbff6f499fa97}}
+\index{example\+\_\+get\+Depth\+Frame.\+cc@{example\+\_\+get\+Depth\+Frame.\+cc}!main@{main}}
+\index{main@{main}!example\+\_\+get\+Depth\+Frame.\+cc@{example\+\_\+get\+Depth\+Frame.\+cc}}
+\subsubsection{\texorpdfstring{main()}{main()}}
+{\footnotesize\ttfamily int main (\begin{DoxyParamCaption}\item[{int}]{argc, }\item[{char $\ast$}]{argv\mbox{[}$\,$\mbox{]} }\end{DoxyParamCaption})}
+
+$<$ init \hyperlink{class_unitree_camera}{Unitree\+Camera} object by config file
+
+$<$ get camera open state
+
+$<$ disable image h264 encoding and share memory sharing
+
+$<$ start disparity computing
+
+$<$ get stereo camera depth image
+
+$<$ stop disparity computing
+
+$<$ stop camera capturing
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_depth_frame_8cc__incl.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_depth_frame_8cc__incl.md5
new file mode 100644
index 0000000..9f54db7
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_depth_frame_8cc__incl.md5
@@ -0,0 +1 @@
+e52a261447db464f9974ff6b507528cf
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_depth_frame_8cc__incl.pdf b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_depth_frame_8cc__incl.pdf
new file mode 100644
index 0000000..e95a61c
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_depth_frame_8cc__incl.pdf differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_point_cloud_8cc.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_point_cloud_8cc.tex
new file mode 100644
index 0000000..756a442
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_point_cloud_8cc.tex
@@ -0,0 +1,66 @@
+\hypertarget{example__get_point_cloud_8cc}{}\section{examples/example\+\_\+get\+Point\+Cloud.cc File Reference}
+\label{example__get_point_cloud_8cc}\index{examples/example\+\_\+get\+Point\+Cloud.\+cc@{examples/example\+\_\+get\+Point\+Cloud.\+cc}}
+
+
+This file is part of Unitree\+Camera\+S\+DK.
+
+
+{\ttfamily \#include $<$G\+L/gl.\+h$>$}\newline
+{\ttfamily \#include $<$signal.\+h$>$}\newline
+{\ttfamily \#include $<$cerrno$>$}\newline
+{\ttfamily \#include $<$cfenv$>$}\newline
+{\ttfamily \#include $<$unistd.\+h$>$}\newline
+{\ttfamily \#include \char`\"{}gl\+Viewer/scenewindow.\+hpp\char`\"{}}\newline
+{\ttfamily \#include $<$Unitree\+Camera\+S\+D\+K.\+hpp$>$}\newline
+Include dependency graph for example\+\_\+get\+Point\+Cloud.\+cc\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{example__get_point_cloud_8cc__incl}
+\end{center}
+\end{figure}
+\subsection*{Macros}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\Hypertarget{example__get_point_cloud_8cc_a252571170a109b31218383613dc16295}\label{example__get_point_cloud_8cc_a252571170a109b31218383613dc16295}}
+\#define \hyperlink{example__get_point_cloud_8cc_a252571170a109b31218383613dc16295}{R\+G\+B\+\_\+\+P\+CL}~false
+\begin{DoxyCompactList}\small\item\em Color Point Cloud Enable Flag. \end{DoxyCompactList}\end{DoxyCompactItemize}
+\subsection*{Functions}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\Hypertarget{example__get_point_cloud_8cc_a3ba436e743e30c5f31f98acb33bcd50b}\label{example__get_point_cloud_8cc_a3ba436e743e30c5f31f98acb33bcd50b}}
+void {\bfseries Draw\+Scene} (const std\+::vector$<$ \hyperlink{struct_p_c_l}{P\+C\+L\+Type} $>$ \&pcl\+\_\+vec)
+\item
+\mbox{\Hypertarget{example__get_point_cloud_8cc_a27d13c3979cbbf70959fddbf5cc02bb5}\label{example__get_point_cloud_8cc_a27d13c3979cbbf70959fddbf5cc02bb5}}
+void {\bfseries Draw\+Scene} (const std\+::vector$<$ cv\+::\+Vec3f $>$ \&pcl\+\_\+vec)
+\item
+\mbox{\Hypertarget{example__get_point_cloud_8cc_a35f9ea2056a80a6c96b5c3ef3c19dafd}\label{example__get_point_cloud_8cc_a35f9ea2056a80a6c96b5c3ef3c19dafd}}
+void {\bfseries ctrl\+\_\+c\+\_\+handler} (int s)
+\item
+\mbox{\Hypertarget{example__get_point_cloud_8cc_a0ddf1224851353fc92bfbff6f499fa97}\label{example__get_point_cloud_8cc_a0ddf1224851353fc92bfbff6f499fa97}}
+int {\bfseries main} (int argc, char $\ast$argv\mbox{[}$\,$\mbox{]})
+\end{DoxyCompactItemize}
+\subsection*{Variables}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\Hypertarget{example__get_point_cloud_8cc_ace2ab20fcac45c041999dbe39df5ee4d}\label{example__get_point_cloud_8cc_ace2ab20fcac45c041999dbe39df5ee4d}}
+bool {\bfseries kill\+Signal\+Flag} = false
+\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+This file is part of Unitree\+Camera\+S\+DK.
+
+This example that how to get camera point cloud. \begin{DoxyAuthor}{Author}
+Zhang\+Chunyang
+\end{DoxyAuthor}
+\begin{DoxyDate}{Date}
+2021.\+07.\+31
+\end{DoxyDate}
+\begin{DoxyVersion}{Version}
+1.\+0.\+1
+\end{DoxyVersion}
+\begin{DoxyCopyright}{Copyright}
+Copyright (c) 2020-\/2021, Hangzhou Yushu Technology Stock C\+O.\+L\+TD. All Rights Reserved.
+\end{DoxyCopyright}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_point_cloud_8cc__incl.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_point_cloud_8cc__incl.md5
new file mode 100644
index 0000000..95e6bc9
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_point_cloud_8cc__incl.md5
@@ -0,0 +1 @@
+cbae86784f4960868726ec762da22aab
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_point_cloud_8cc__incl.pdf b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_point_cloud_8cc__incl.pdf
new file mode 100644
index 0000000..50e4eb3
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_point_cloud_8cc__incl.pdf differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_raw_frame_8cc.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_raw_frame_8cc.tex
new file mode 100644
index 0000000..3eaa4e8
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_raw_frame_8cc.tex
@@ -0,0 +1,59 @@
+\hypertarget{example__get_raw_frame_8cc}{}\section{examples/example\+\_\+get\+Raw\+Frame.cc File Reference}
+\label{example__get_raw_frame_8cc}\index{examples/example\+\_\+get\+Raw\+Frame.\+cc@{examples/example\+\_\+get\+Raw\+Frame.\+cc}}
+
+
+This file is part of Unitree\+Camera\+S\+DK.
+
+
+{\ttfamily \#include $<$Unitree\+Camera\+S\+D\+K.\+hpp$>$}\newline
+{\ttfamily \#include $<$unistd.\+h$>$}\newline
+Include dependency graph for example\+\_\+get\+Raw\+Frame.\+cc\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{example__get_raw_frame_8cc__incl}
+\end{center}
+\end{figure}
+\subsection*{Functions}
+\begin{DoxyCompactItemize}
+\item
+int \hyperlink{example__get_raw_frame_8cc_a0ddf1224851353fc92bfbff6f499fa97}{main} (int argc, char $\ast$argv\mbox{[}$\,$\mbox{]})
+\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+This file is part of Unitree\+Camera\+S\+DK.
+
+This example that how to get camera raw frame. \begin{DoxyAuthor}{Author}
+Zhang\+Chunyang
+\end{DoxyAuthor}
+\begin{DoxyDate}{Date}
+2021.\+07.\+31
+\end{DoxyDate}
+\begin{DoxyVersion}{Version}
+1.\+0.\+1
+\end{DoxyVersion}
+\begin{DoxyCopyright}{Copyright}
+Copyright (c) 2020-\/2021, Hangzhou Yushu Technology Stock C\+O.\+L\+TD. All Rights Reserved.
+\end{DoxyCopyright}
+
+
+\subsection{Function Documentation}
+\mbox{\Hypertarget{example__get_raw_frame_8cc_a0ddf1224851353fc92bfbff6f499fa97}\label{example__get_raw_frame_8cc_a0ddf1224851353fc92bfbff6f499fa97}}
+\index{example\+\_\+get\+Raw\+Frame.\+cc@{example\+\_\+get\+Raw\+Frame.\+cc}!main@{main}}
+\index{main@{main}!example\+\_\+get\+Raw\+Frame.\+cc@{example\+\_\+get\+Raw\+Frame.\+cc}}
+\subsubsection{\texorpdfstring{main()}{main()}}
+{\footnotesize\ttfamily int main (\begin{DoxyParamCaption}\item[{int}]{argc, }\item[{char $\ast$}]{argv\mbox{[}$\,$\mbox{]} }\end{DoxyParamCaption})}
+
+$<$ init camera by device node number
+
+$<$ set camera frame size
+
+$<$ set camera frame rate
+
+$<$ start camera capturing
+
+$<$ get camera raw image
+
+$<$ stop camera capturing
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_raw_frame_8cc__incl.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_raw_frame_8cc__incl.md5
new file mode 100644
index 0000000..cbb9ed4
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_raw_frame_8cc__incl.md5
@@ -0,0 +1 @@
+2064d8bf0d893ce2aa7680ebe60a7a4c
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_raw_frame_8cc__incl.pdf b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_raw_frame_8cc__incl.pdf
new file mode 100644
index 0000000..cf46a05
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_raw_frame_8cc__incl.pdf differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_rect_frame_8cc.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_rect_frame_8cc.tex
new file mode 100644
index 0000000..32ee27c
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_rect_frame_8cc.tex
@@ -0,0 +1,69 @@
+\hypertarget{example__get_rect_frame_8cc}{}\section{examples/example\+\_\+get\+Rect\+Frame.cc File Reference}
+\label{example__get_rect_frame_8cc}\index{examples/example\+\_\+get\+Rect\+Frame.\+cc@{examples/example\+\_\+get\+Rect\+Frame.\+cc}}
+
+
+This file is part of Unitree\+Camera\+S\+DK.
+
+
+{\ttfamily \#include $<$Unitree\+Camera\+S\+D\+K.\+hpp$>$}\newline
+{\ttfamily \#include $<$unistd.\+h$>$}\newline
+Include dependency graph for example\+\_\+get\+Rect\+Frame.\+cc\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{example__get_rect_frame_8cc__incl}
+\end{center}
+\end{figure}
+\subsection*{Functions}
+\begin{DoxyCompactItemize}
+\item
+int \hyperlink{example__get_rect_frame_8cc_a0ddf1224851353fc92bfbff6f499fa97}{main} (int argc, char $\ast$argv\mbox{[}$\,$\mbox{]})
+\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+This file is part of Unitree\+Camera\+S\+DK.
+
+This example that how to get depth frame \begin{DoxyAuthor}{Author}
+Zhang\+Chunyang
+\end{DoxyAuthor}
+\begin{DoxyDate}{Date}
+2021.\+07.\+31
+\end{DoxyDate}
+\begin{DoxyVersion}{Version}
+1.\+0.\+1
+\end{DoxyVersion}
+\begin{DoxyCopyright}{Copyright}
+Copyright (c) 2020-\/2021, Hangzhou Yushu Technology Stock C\+O.\+L\+TD. All Rights Reserved.
+\end{DoxyCopyright}
+
+
+\subsection{Function Documentation}
+\mbox{\Hypertarget{example__get_rect_frame_8cc_a0ddf1224851353fc92bfbff6f499fa97}\label{example__get_rect_frame_8cc_a0ddf1224851353fc92bfbff6f499fa97}}
+\index{example\+\_\+get\+Rect\+Frame.\+cc@{example\+\_\+get\+Rect\+Frame.\+cc}!main@{main}}
+\index{main@{main}!example\+\_\+get\+Rect\+Frame.\+cc@{example\+\_\+get\+Rect\+Frame.\+cc}}
+\subsubsection{\texorpdfstring{main()}{main()}}
+{\footnotesize\ttfamily int main (\begin{DoxyParamCaption}\item[{int}]{argc, }\item[{char $\ast$}]{argv\mbox{[}$\,$\mbox{]} }\end{DoxyParamCaption})}
+
+$<$ default 0 -\/$>$ /dev/video0
+
+$<$ default frame size 1856x800
+
+$<$ default camera fps\+: 30
+
+$<$ init camera by device node number
+
+$<$ get camera open state
+
+$<$ set camera frame size
+
+$<$ set camera camera fps
+
+$<$ set camera rectify frame size
+
+$<$ disable image h264 encoding and share memory sharing
+
+$<$ get longlat rectify left,right and fisheye rectify feim
+
+$<$ stop camera capturing
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_rect_frame_8cc__incl.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_rect_frame_8cc__incl.md5
new file mode 100644
index 0000000..c9233ea
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_rect_frame_8cc__incl.md5
@@ -0,0 +1 @@
+60ba75fcc076d436c69bebfd7b2d5c94
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_rect_frame_8cc__incl.pdf b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_rect_frame_8cc__incl.pdf
new file mode 100644
index 0000000..f040d8f
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/example__get_rect_frame_8cc__incl.pdf differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/files.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/files.tex
new file mode 100644
index 0000000..6f516e3
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/files.tex
@@ -0,0 +1,15 @@
+\section{File List}
+Here is a list of all documented files with brief descriptions\+:\begin{DoxyCompactList}
+\item\contentsline{section}{examples/\hyperlink{example__get_calib_params_file_8cc}{example\+\_\+get\+Calib\+Params\+File.\+cc} \\*This file is part of Unitree\+Camera\+S\+DK }{\pageref{example__get_calib_params_file_8cc}}{}
+\item\contentsline{section}{examples/\hyperlink{example__get_depth_frame_8cc}{example\+\_\+get\+Depth\+Frame.\+cc} \\*This file is part of Unitree\+Camera\+S\+DK }{\pageref{example__get_depth_frame_8cc}}{}
+\item\contentsline{section}{examples/\hyperlink{example__get_point_cloud_8cc}{example\+\_\+get\+Point\+Cloud.\+cc} \\*This file is part of Unitree\+Camera\+S\+DK }{\pageref{example__get_point_cloud_8cc}}{}
+\item\contentsline{section}{examples/\hyperlink{example__get_raw_frame_8cc}{example\+\_\+get\+Raw\+Frame.\+cc} \\*This file is part of Unitree\+Camera\+S\+DK }{\pageref{example__get_raw_frame_8cc}}{}
+\item\contentsline{section}{examples/\hyperlink{example__get_rect_frame_8cc}{example\+\_\+get\+Rect\+Frame.\+cc} \\*This file is part of Unitree\+Camera\+S\+DK }{\pageref{example__get_rect_frame_8cc}}{}
+\item\contentsline{section}{examples/gl\+Viewer/{\bfseries glwindow.\+hpp} }{\pageref{glwindow_8hpp}}{}
+\item\contentsline{section}{examples/gl\+Viewer/{\bfseries scenewindow.\+hpp} }{\pageref{scenewindow_8hpp}}{}
+\item\contentsline{section}{include/\hyperlink{_stereo_camera_common_8hpp}{Stereo\+Camera\+Common.\+hpp} \\*This file is part of Unitree\+Camera\+S\+DK, which declare stereo camera algorithm A\+P\+Is }{\pageref{_stereo_camera_common_8hpp}}{}
+\item\contentsline{section}{include/\hyperlink{_system_log_8hpp}{System\+Log.\+hpp} \\*This file is part of Unitree\+Camera\+S\+DK, which declare the A\+P\+Is of log system }{\pageref{_system_log_8hpp}}{}
+\item\contentsline{section}{include/\hyperlink{_unitree_camera_s_d_k_8hpp}{Unitree\+Camera\+S\+D\+K.\+hpp} \\*This file is part of Unitree\+Camera\+S\+DK, which declare unitree camera A\+P\+Is }{\pageref{_unitree_camera_s_d_k_8hpp}}{}
+\item\contentsline{section}{src/{\bfseries camera\+\_\+api.\+h} }{\pageref{camera__api_8h}}{}
+\item\contentsline{section}{src/\hyperlink{_stereo_camera_common_8cc}{Stereo\+Camera\+Common.\+cc} \\*This file is part of Unitree\+Camera\+S\+DK, which implement stereo vision algorithm }{\pageref{_stereo_camera_common_8cc}}{}
+\end{DoxyCompactList}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/hierarchy.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/hierarchy.tex
new file mode 100644
index 0000000..c6af19a
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/hierarchy.tex
@@ -0,0 +1,21 @@
+\section{Class Hierarchy}
+This inheritance list is sorted roughly, but not completely, alphabetically\+:\begin{DoxyCompactList}
+\item \contentsline{section}{\+\_\+\+Device\+\_\+\+Point\+\_\+}{\pageref{struct___device___point__}}{}
+\item \contentsline{section}{glwindow\+:\+:Event\+Handler}{\pageref{structglwindow_1_1_event_handler}}{}
+\begin{DoxyCompactList}
+\item \contentsline{section}{glwindow\+:\+:Event\+Dispatcher}{\pageref{classglwindow_1_1_event_dispatcher}}{}
+\item \contentsline{section}{glwindow\+:\+:Scene\+Window}{\pageref{classglwindow_1_1_scene_window}}{}
+\end{DoxyCompactList}
+\item \contentsline{section}{glwindow\+:\+:G\+L\+Window}{\pageref{classglwindow_1_1_g_l_window}}{}
+\item \contentsline{section}{info\+\_\+camera\+\_\+os}{\pageref{classinfo__camera__os}}{}
+\item \contentsline{section}{info\+\_\+camera\+\_\+\+String}{\pageref{classinfo__camera___string}}{}
+\item \contentsline{section}{P\+CL}{\pageref{struct_p_c_l}}{}
+\item \contentsline{section}{glwindow\+:\+:G\+L\+Window\+:\+:Scoped\+Context}{\pageref{structglwindow_1_1_g_l_window_1_1_scoped_context}}{}
+\item \contentsline{section}{Stereo\+Camera}{\pageref{class_stereo_camera}}{}
+\begin{DoxyCompactList}
+\item \contentsline{section}{Unitree\+Camera}{\pageref{class_unitree_camera}}{}
+\end{DoxyCompactList}
+\item \contentsline{section}{System\+Log}{\pageref{class_system_log}}{}
+\item \contentsline{section}{glwindow\+:\+:G\+L\+Window\+:\+:System\+State}{\pageref{struct_g_l_window_1_1_system_state}}{}
+\item \contentsline{section}{glwindow\+:\+:Scene\+Window\+:\+:Viewpoint}{\pageref{structglwindow_1_1_scene_window_1_1_viewpoint}}{}
+\end{DoxyCompactList}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/index.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/index.tex
new file mode 100644
index 0000000..cf236fa
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/index.tex
@@ -0,0 +1,62 @@
+Unitree Robotics is a energetic start-\/up company that focuses on the development, production and sales of high-\/performance quadruped robots. It has been interviewed by B\+BC and C\+C\+TV, and is one of the earliest company to publicly sell quadruped robots.
+
+The company has an outstanding leadership in developing robot core components, motion control, robot perception, etc.
+
+We attaches great importance to research and development, and thus independently developed the motors, reducers, controllers, and even some sensors of the quadruped robot.
+
+\subsection*{1.\+Overview }
+
+Unitree\+Camera\+S\+DK 1.\+0 is a cross-\/platform library for unitree depth cameras
+
+The S\+DK allows depth and color streaming, and provides intrinsic calibration information. The library also offers pointcloud, depth aligned to color and vise-\/versa.
+
+\subsection*{2.\+Dependencies }
+
+Open\+CV, version\+: equal or lager than 4 Cmake, version\+: 2.\+8
+
+\subsection*{2.\+Build }
+
+
+\begin{DoxyCode}
+cd UnitreeCameraSDK;
+mkdir build; cd build;
+cmake ..; make
+\end{DoxyCode}
+
+
+\subsection*{3.\+Run Examples }
+
+Get Camera Raw Frame\+:
+\begin{DoxyCode}
+cd UnitreeCameraSDK;
+./bin/example\_getRawFrame
+\end{DoxyCode}
+
+
+Get Calibration Parameters File
+\begin{DoxyCode}
+cd UnitreeCameraSDK;
+./bin/example\_getCalibParamsFile
+\end{DoxyCode}
+
+
+Get Rectify Frame
+\begin{DoxyCode}
+cd UnitreeCameraSDK;
+./bin/example\_getRectFrame
+\end{DoxyCode}
+
+
+Get Depth Frame
+\begin{DoxyCode}
+cd UnitreeCameraSDK;
+./bin/example\_getDepthFrame
+\end{DoxyCode}
+
+
+Get Point Cloud\+:
+\begin{DoxyCode}
+cd UnitreeCameraSDK;
+./bin/example\_getPointCloud
+\end{DoxyCode}
+
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/refman.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/refman.tex
new file mode 100644
index 0000000..3a3ea5f
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/refman.tex
@@ -0,0 +1,153 @@
+\documentclass[twoside]{book}
+
+% Packages required by doxygen
+\usepackage{fixltx2e}
+\usepackage{calc}
+\usepackage{doxygen}
+\usepackage[export]{adjustbox} % also loads graphicx
+\usepackage{graphicx}
+\usepackage[utf8]{inputenc}
+\usepackage{makeidx}
+\usepackage{multicol}
+\usepackage{multirow}
+\PassOptionsToPackage{warn}{textcomp}
+\usepackage{textcomp}
+\usepackage[nointegrals]{wasysym}
+\usepackage[table]{xcolor}
+
+% Font selection
+\usepackage[T1]{fontenc}
+\usepackage[scaled=.90]{helvet}
+\usepackage{courier}
+\usepackage{amssymb}
+\usepackage{sectsty}
+\renewcommand{\familydefault}{\sfdefault}
+\allsectionsfont{%
+ \fontseries{bc}\selectfont%
+ \color{darkgray}%
+}
+\renewcommand{\DoxyLabelFont}{%
+ \fontseries{bc}\selectfont%
+ \color{darkgray}%
+}
+\newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}}
+
+% Page & text layout
+\usepackage{geometry}
+\geometry{%
+ a4paper,%
+ top=2.5cm,%
+ bottom=2.5cm,%
+ left=2.5cm,%
+ right=2.5cm%
+}
+\tolerance=750
+\hfuzz=15pt
+\hbadness=750
+\setlength{\emergencystretch}{15pt}
+\setlength{\parindent}{0cm}
+\setlength{\parskip}{3ex plus 2ex minus 2ex}
+\makeatletter
+\renewcommand{\paragraph}{%
+ \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{%
+ \normalfont\normalsize\bfseries\SS@parafont%
+ }%
+}
+\renewcommand{\subparagraph}{%
+ \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{%
+ \normalfont\normalsize\bfseries\SS@subparafont%
+ }%
+}
+\makeatother
+
+% Headers & footers
+\usepackage{fancyhdr}
+\pagestyle{fancyplain}
+\fancyhead[LE]{\fancyplain{}{\bfseries\thepage}}
+\fancyhead[CE]{\fancyplain{}{}}
+\fancyhead[RE]{\fancyplain{}{\bfseries\leftmark}}
+\fancyhead[LO]{\fancyplain{}{\bfseries\rightmark}}
+\fancyhead[CO]{\fancyplain{}{}}
+\fancyhead[RO]{\fancyplain{}{\bfseries\thepage}}
+\fancyfoot[LE]{\fancyplain{}{}}
+\fancyfoot[CE]{\fancyplain{}{}}
+\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }}
+\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }}
+\fancyfoot[CO]{\fancyplain{}{}}
+\fancyfoot[RO]{\fancyplain{}{}}
+\renewcommand{\footrulewidth}{0.4pt}
+\renewcommand{\chaptermark}[1]{%
+ \markboth{#1}{}%
+}
+\renewcommand{\sectionmark}[1]{%
+ \markright{\thesection\ #1}%
+}
+
+% Indices & bibliography
+\usepackage{natbib}
+\usepackage[titles]{tocloft}
+\setcounter{tocdepth}{3}
+\setcounter{secnumdepth}{5}
+\makeindex
+
+% Hyperlinks (required, but should be loaded last)
+\usepackage{ifpdf}
+\ifpdf
+ \usepackage[pdftex,pagebackref=true]{hyperref}
+\else
+ \usepackage[ps2pdf,pagebackref=true]{hyperref}
+\fi
+\hypersetup{%
+ colorlinks=true,%
+ linkcolor=blue,%
+ citecolor=blue,%
+ unicode%
+}
+
+% Custom commands
+\newcommand{\clearemptydoublepage}{%
+ \newpage{\pagestyle{empty}\cleardoublepage}%
+}
+
+\usepackage{caption}
+\captionsetup{labelsep=space,justification=centering,font={bf},singlelinecheck=off,skip=4pt,position=top}
+
+%===== C O N T E N T S =====
+
+\begin{document}
+
+% Titlepage & ToC
+\hypersetup{pageanchor=false,
+ bookmarksnumbered=true,
+ pdfencoding=unicode
+ }
+\pagenumbering{alph}
+\begin{titlepage}
+\vspace*{7cm}
+\begin{center}%
+{\Large Unitree\+Camera\+S\+DK \\[1ex]\large 1.\+0.\+1 }\\
+\vspace*{1cm}
+{\large Generated by Doxygen 1.8.13}\\
+\end{center}
+\end{titlepage}
+\clearemptydoublepage
+\pagenumbering{roman}
+\tableofcontents
+\clearemptydoublepage
+\pagenumbering{arabic}
+\hypersetup{pageanchor=true}
+
+%--- Begin generated contents ---
+\chapter{Introduction}
+\label{index}\hypertarget{index}{}\input{index}
+%--- End generated contents ---
+
+% Index
+\backmatter
+\newpage
+\phantomsection
+\clearemptydoublepage
+\addcontentsline{toc}{chapter}{Index}
+\printindex
+
+\end{document}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/struct___device___point__.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/struct___device___point__.tex
new file mode 100644
index 0000000..b297ac0
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/struct___device___point__.tex
@@ -0,0 +1,86 @@
+\hypertarget{struct___device___point__}{}\section{\+\_\+\+Device\+\_\+\+Point\+\_\+ Struct Reference}
+\label{struct___device___point__}\index{\+\_\+\+Device\+\_\+\+Point\+\_\+@{\+\_\+\+Device\+\_\+\+Point\+\_\+}}
+
+
+Collaboration diagram for \+\_\+\+Device\+\_\+\+Point\+\_\+\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=258pt]{struct___device___point____coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Attributes}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\Hypertarget{struct___device___point___a496ae1b03ae70dcf285608728f19362b}\label{struct___device___point___a496ae1b03ae70dcf285608728f19362b}}
+uint32\+\_\+t {\bfseries u\+\_\+index}
+\item
+\mbox{\Hypertarget{struct___device___point___a2bcc2213d69bdfb85185dd5cba38fb1a}\label{struct___device___point___a2bcc2213d69bdfb85185dd5cba38fb1a}}
+B\+Y\+TE {\bfseries Flash\+Type}
+\item
+\mbox{\Hypertarget{struct___device___point___a1d18be09086b1f8dbce31538658ac969}\label{struct___device___point___a1d18be09086b1f8dbce31538658ac969}}
+B\+Y\+TE {\bfseries I\+S\+P\+\_\+\+ID}
+\item
+\mbox{\Hypertarget{struct___device___point___acc7c595ed1668efdbb9f08991774fde5}\label{struct___device___point___acc7c595ed1668efdbb9f08991774fde5}}
+P\+V\+O\+ID {\bfseries p\+\_\+device}
+\item
+\mbox{\Hypertarget{struct___device___point___ac1cf796ec01fcfe2501de7fd67c1e816}\label{struct___device___point___ac1cf796ec01fcfe2501de7fd67c1e816}}
+H\+\_\+\+Fun\+\_\+\+I\+Pb {\bfseries Falsh\+\_\+R}
+\item
+\mbox{\Hypertarget{struct___device___point___af6be85e4e3087c97bcaf6b211a536fd0}\label{struct___device___point___af6be85e4e3087c97bcaf6b211a536fd0}}
+H\+\_\+\+Fun\+\_\+\+I\+Pb {\bfseries Falsh\+\_\+W}
+\item
+\mbox{\Hypertarget{struct___device___point___a140753f50973b7bd2093b7c5f867401b}\label{struct___device___point___a140753f50973b7bd2093b7c5f867401b}}
+H\+\_\+\+Fun\+\_\+\+Cinfo {\bfseries p\+Info}
+\item
+\mbox{\Hypertarget{struct___device___point___aa62b57c39680137953b3a0231e03b0de}\label{struct___device___point___aa62b57c39680137953b3a0231e03b0de}}
+H\+\_\+\+Fun\+\_\+\+WB {\bfseries Set\+\_\+\+I\+S\+P\+\_\+\+Reg}
+\item
+\mbox{\Hypertarget{struct___device___point___a99da3d517f02c8fbb1ae9dab99e270d9}\label{struct___device___point___a99da3d517f02c8fbb1ae9dab99e270d9}}
+H\+\_\+\+Fun\+\_\+\+W\+Pb {\bfseries Get\+\_\+\+I\+S\+P\+\_\+\+Reg}
+\item
+\mbox{\Hypertarget{struct___device___point___a36efd255ea09b7358384322e7653c507}\label{struct___device___point___a36efd255ea09b7358384322e7653c507}}
+H\+\_\+\+Fun\+\_\+\+B\+WW {\bfseries Set\+\_\+\+Sensor\+\_\+\+Reg}
+\item
+\mbox{\Hypertarget{struct___device___point___ae5c33e5dbbe75a06269a779b46f910e5}\label{struct___device___point___ae5c33e5dbbe75a06269a779b46f910e5}}
+H\+\_\+\+Fun\+\_\+\+B\+W\+Pw {\bfseries Get\+\_\+\+Sensor\+\_\+\+Reg}
+\item
+\mbox{\Hypertarget{struct___device___point___a693ba5a68484207ca9a4dcdb3099ee20}\label{struct___device___point___a693ba5a68484207ca9a4dcdb3099ee20}}
+Input\+\_\+\+G\+P\+I\+O\+\_\+\+Get {\bfseries Input\+\_\+\+Gpio\+\_\+\+Get}
+\item
+\mbox{\Hypertarget{struct___device___point___a2e3c1ab9e67f2f34d7f8b0201763d791}\label{struct___device___point___a2e3c1ab9e67f2f34d7f8b0201763d791}}
+Output\+\_\+\+G\+P\+I\+O\+\_\+\+Set {\bfseries Output\+\_\+\+Gpio\+\_\+set}
+\item
+\mbox{\Hypertarget{struct___device___point___ae626785c21cf9bc3fe9a80a849eb4eb7}\label{struct___device___point___ae626785c21cf9bc3fe9a80a849eb4eb7}}
+Input\+\_\+\+G\+P\+I\+O\+\_\+\+Init {\bfseries Input\+\_\+\+Gpio\+\_\+init}
+\item
+\mbox{\Hypertarget{struct___device___point___ac2ae81539bc4b84bf0aac9662f9f671a}\label{struct___device___point___ac2ae81539bc4b84bf0aac9662f9f671a}}
+Output\+\_\+\+G\+P\+I\+O\+\_\+\+Init {\bfseries Output\+\_\+\+Gpio\+\_\+init}
+\item
+\mbox{\Hypertarget{struct___device___point___ab738d9836087a55b8cd6e7871459c3d0}\label{struct___device___point___ab738d9836087a55b8cd6e7871459c3d0}}
+P\+V\+O\+ID {\bfseries R\+E\+S\+\_\+1}
+\item
+\mbox{\Hypertarget{struct___device___point___a81f92aa0d840a974b6dc6fc63374edbc}\label{struct___device___point___a81f92aa0d840a974b6dc6fc63374edbc}}
+P\+V\+O\+ID {\bfseries R\+E\+S\+\_\+2}
+\item
+\mbox{\Hypertarget{struct___device___point___ae8d95092c51baeefa9cd34d10a18c096}\label{struct___device___point___ae8d95092c51baeefa9cd34d10a18c096}}
+H\+\_\+\+Fun\+\_\+\+Cinfo\+Str {\bfseries p\+Info\+Str}
+\item
+\mbox{\Hypertarget{struct___device___point___ad1b9669faa70672bff64d4df2474c957}\label{struct___device___point___ad1b9669faa70672bff64d4df2474c957}}
+p\+Ex\+ID {\bfseries p\+Exid\+\_\+R}
+\item
+\mbox{\Hypertarget{struct___device___point___aba2eb95e2d194970a759807f8c92b7f0}\label{struct___device___point___aba2eb95e2d194970a759807f8c92b7f0}}
+p\+Ex\+ID {\bfseries p\+Exid\+\_\+W}
+\item
+\mbox{\Hypertarget{struct___device___point___a91ad63e0cee2bee000daffefb913d887}\label{struct___device___point___a91ad63e0cee2bee000daffefb913d887}}
+P\+V\+O\+ID {\bfseries respoint}
+\item
+\mbox{\Hypertarget{struct___device___point___a7bbbb8a7da07390894a0193fd46241d8}\label{struct___device___point___a7bbbb8a7da07390894a0193fd46241d8}}
+p\+C\+U\+S\+T\+O\+M\+E\+R\+Fun {\bfseries p\+Customer}
+\end{DoxyCompactItemize}
+
+
+The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
+\item
+src/camera\+\_\+api.\+h\end{DoxyCompactItemize}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/struct___device___point____coll__graph.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/struct___device___point____coll__graph.md5
new file mode 100644
index 0000000..98295c8
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/struct___device___point____coll__graph.md5
@@ -0,0 +1 @@
+cf67120c2c743b9e9105d9de54dc121a
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/struct___device___point____coll__graph.pdf b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/struct___device___point____coll__graph.pdf
new file mode 100644
index 0000000..f6fe92f
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/struct___device___point____coll__graph.pdf differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/struct_g_l_window_1_1_system_state.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/struct_g_l_window_1_1_system_state.tex
new file mode 100644
index 0000000..33e8b05
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/struct_g_l_window_1_1_system_state.tex
@@ -0,0 +1,52 @@
+\hypertarget{struct_g_l_window_1_1_system_state}{}\section{glwindow\+:\+:G\+L\+Window\+:\+:System\+State Struct Reference}
+\label{struct_g_l_window_1_1_system_state}\index{glwindow\+::\+G\+L\+Window\+::\+System\+State@{glwindow\+::\+G\+L\+Window\+::\+System\+State}}
+\subsection*{Public Member Functions}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\Hypertarget{struct_g_l_window_1_1_system_state_a5c10afc9873e8429448fc085230099a4}\label{struct_g_l_window_1_1_system_state_a5c10afc9873e8429448fc085230099a4}}
+bool {\bfseries init} (int w, int h, const char $\ast$title)
+\item
+\mbox{\Hypertarget{struct_g_l_window_1_1_system_state_a0eccf6dc59ec9e8b062eb8cd56398e60}\label{struct_g_l_window_1_1_system_state_a0eccf6dc59ec9e8b062eb8cd56398e60}}
+void {\bfseries destroy} ()
+\item
+\mbox{\Hypertarget{struct_g_l_window_1_1_system_state_aecbb2620bcb643e4bad1280b5ae5c9f5}\label{struct_g_l_window_1_1_system_state_aecbb2620bcb643e4bad1280b5ae5c9f5}}
+void {\bfseries swap\+\_\+buffers} ()
+\item
+\mbox{\Hypertarget{struct_g_l_window_1_1_system_state_a760021e568f2dc7e0cc5a68fb835321e}\label{struct_g_l_window_1_1_system_state_a760021e568f2dc7e0cc5a68fb835321e}}
+void {\bfseries set\+\_\+title} (const char $\ast$title)
+\item
+\mbox{\Hypertarget{struct_g_l_window_1_1_system_state_ad553d495b4f03b0cb666cb9916ba1180}\label{struct_g_l_window_1_1_system_state_ad553d495b4f03b0cb666cb9916ba1180}}
+bool {\bfseries make\+\_\+current} ()
+\end{DoxyCompactItemize}
+\subsection*{Public Attributes}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\Hypertarget{struct_g_l_window_1_1_system_state_aeb17b154bf55aba75b2f807a2dac47f6}\label{struct_g_l_window_1_1_system_state_aeb17b154bf55aba75b2f807a2dac47f6}}
+Display $\ast$ {\bfseries display}
+\item
+\mbox{\Hypertarget{struct_g_l_window_1_1_system_state_aa2dff48b0d656cb10a97ce6eb7fbee56}\label{struct_g_l_window_1_1_system_state_aa2dff48b0d656cb10a97ce6eb7fbee56}}
+Window {\bfseries window}
+\item
+\mbox{\Hypertarget{struct_g_l_window_1_1_system_state_ab6ba4ef9e4aca634aad36b9e652e6c9f}\label{struct_g_l_window_1_1_system_state_ab6ba4ef9e4aca634aad36b9e652e6c9f}}
+G\+L\+X\+Context {\bfseries context}
+\item
+\mbox{\Hypertarget{struct_g_l_window_1_1_system_state_a6901cb96188585fcf83cf46192ded4b1}\label{struct_g_l_window_1_1_system_state_a6901cb96188585fcf83cf46192ded4b1}}
+Atom {\bfseries delete\+\_\+atom}
+\item
+\mbox{\Hypertarget{struct_g_l_window_1_1_system_state_a8477bec2ff201a8dd407becfd0c104a1}\label{struct_g_l_window_1_1_system_state_a8477bec2ff201a8dd407becfd0c104a1}}
+Cursor {\bfseries cursor}
+\item
+\mbox{\Hypertarget{struct_g_l_window_1_1_system_state_aae54ccdc33e813e058623555d182b963}\label{struct_g_l_window_1_1_system_state_aae54ccdc33e813e058623555d182b963}}
+int {\bfseries width}
+\item
+\mbox{\Hypertarget{struct_g_l_window_1_1_system_state_a3ca4777d7371ae47f53a8dd69690e9c6}\label{struct_g_l_window_1_1_system_state_a3ca4777d7371ae47f53a8dd69690e9c6}}
+int {\bfseries height}
+\item
+\mbox{\Hypertarget{struct_g_l_window_1_1_system_state_a7f931ca36a980cd9ff1c00dacf410dd2}\label{struct_g_l_window_1_1_system_state_a7f931ca36a980cd9ff1c00dacf410dd2}}
+bool {\bfseries visible}
+\end{DoxyCompactItemize}
+
+
+The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
+\item
+examples/gl\+Viewer/glwindow\+\_\+x11.\+cpp\end{DoxyCompactItemize}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/struct_p_c_l.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/struct_p_c_l.tex
new file mode 100644
index 0000000..d18707a
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/struct_p_c_l.tex
@@ -0,0 +1,36 @@
+\hypertarget{struct_p_c_l}{}\section{P\+CL Struct Reference}
+\label{struct_p_c_l}\index{P\+CL@{P\+CL}}
+
+
+this struct is used for R\+GB point cloud capture and display
+
+
+
+
+{\ttfamily \#include $<$Stereo\+Camera\+Common.\+hpp$>$}
+
+\subsection*{Public Attributes}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\Hypertarget{struct_p_c_l_a07c28b7f533724d91ec4a9e461989d8c}\label{struct_p_c_l_a07c28b7f533724d91ec4a9e461989d8c}}
+cv\+::\+Vec3f \hyperlink{struct_p_c_l_a07c28b7f533724d91ec4a9e461989d8c}{pts}
+\begin{DoxyCompactList}\small\item\em points coordinates (x, y, z) \end{DoxyCompactList}\item
+\mbox{\Hypertarget{struct_p_c_l_a6555550c790378b130273dd6ae3a2158}\label{struct_p_c_l_a6555550c790378b130273dd6ae3a2158}}
+cv\+::\+Vec3b \hyperlink{struct_p_c_l_a6555550c790378b130273dd6ae3a2158}{clr}
+\begin{DoxyCompactList}\small\item\em points color (b, g, r) \end{DoxyCompactList}\end{DoxyCompactItemize}
+
+
+\subsection{Detailed Description}
+this struct is used for R\+GB point cloud capture and display
+
+pts for point coordinates (x, y, z), clr for point color (b, g, r) \begin{DoxyNote}{Note}
+point cloud simple type
+\end{DoxyNote}
+\begin{DoxyAttention}{Attention}
+point data element type float, color data element type uchar
+\end{DoxyAttention}
+
+
+The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
+\item
+include/\hyperlink{_stereo_camera_common_8hpp}{Stereo\+Camera\+Common.\+hpp}\end{DoxyCompactItemize}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/structglwindow_1_1_event_handler.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/structglwindow_1_1_event_handler.tex
new file mode 100644
index 0000000..544321a
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/structglwindow_1_1_event_handler.tex
@@ -0,0 +1,47 @@
+\hypertarget{structglwindow_1_1_event_handler}{}\section{glwindow\+:\+:Event\+Handler Struct Reference}
+\label{structglwindow_1_1_event_handler}\index{glwindow\+::\+Event\+Handler@{glwindow\+::\+Event\+Handler}}
+
+
+Inheritance diagram for glwindow\+:\+:Event\+Handler\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=350pt]{structglwindow_1_1_event_handler__inherit__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\Hypertarget{structglwindow_1_1_event_handler_a6f2084a1cbe2ec67360f07f7cacee5b8}\label{structglwindow_1_1_event_handler_a6f2084a1cbe2ec67360f07f7cacee5b8}}
+virtual bool {\bfseries on\+\_\+key\+\_\+down} (\hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} \&win, int key)
+\item
+\mbox{\Hypertarget{structglwindow_1_1_event_handler_aed85ba8a37b8403ffe5d89ee5d2e765c}\label{structglwindow_1_1_event_handler_aed85ba8a37b8403ffe5d89ee5d2e765c}}
+virtual bool {\bfseries on\+\_\+key\+\_\+up} (\hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} \&win, int key)
+\item
+\mbox{\Hypertarget{structglwindow_1_1_event_handler_a2dc8861119889a5ece73ffdb09439b18}\label{structglwindow_1_1_event_handler_a2dc8861119889a5ece73ffdb09439b18}}
+virtual bool {\bfseries on\+\_\+text} (\hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} \&win, const char $\ast$text, int len)
+\item
+\mbox{\Hypertarget{structglwindow_1_1_event_handler_adeb34bb7c2eb4357496bf4d8fcda53df}\label{structglwindow_1_1_event_handler_adeb34bb7c2eb4357496bf4d8fcda53df}}
+virtual bool {\bfseries on\+\_\+button\+\_\+down} (\hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} \&win, int btn, int state, int x, int y)
+\item
+\mbox{\Hypertarget{structglwindow_1_1_event_handler_a2801b252ae6ddc96595bc262354ca789}\label{structglwindow_1_1_event_handler_a2801b252ae6ddc96595bc262354ca789}}
+virtual bool {\bfseries on\+\_\+button\+\_\+up} (\hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} \&win, int btn, int state, int x, int y)
+\item
+\mbox{\Hypertarget{structglwindow_1_1_event_handler_a5f016ad6546c1413845a1a3b6c66bad9}\label{structglwindow_1_1_event_handler_a5f016ad6546c1413845a1a3b6c66bad9}}
+virtual bool {\bfseries on\+\_\+mouse\+\_\+move} (\hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} \&win, int state, int x, int y)
+\item
+\mbox{\Hypertarget{structglwindow_1_1_event_handler_ad6373a3f3dd084db5f100e4da12130b8}\label{structglwindow_1_1_event_handler_ad6373a3f3dd084db5f100e4da12130b8}}
+virtual bool {\bfseries on\+\_\+mouse\+\_\+wheel} (\hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} \&win, int state, int x, int y, int dx, int dy)
+\item
+\mbox{\Hypertarget{structglwindow_1_1_event_handler_a32a807fa383e8d0a7395fea38125ea91}\label{structglwindow_1_1_event_handler_a32a807fa383e8d0a7395fea38125ea91}}
+virtual bool {\bfseries on\+\_\+resize} (\hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} \&win, int x, int y, int w, int h)
+\item
+\mbox{\Hypertarget{structglwindow_1_1_event_handler_a0bb4bf3ce84c596f781594219aad8198}\label{structglwindow_1_1_event_handler_a0bb4bf3ce84c596f781594219aad8198}}
+virtual bool {\bfseries on\+\_\+close} (\hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} \&win)
+\end{DoxyCompactItemize}
+
+
+The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
+\item
+examples/gl\+Viewer/glwindow.\+hpp\end{DoxyCompactItemize}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/structglwindow_1_1_event_handler__inherit__graph.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/structglwindow_1_1_event_handler__inherit__graph.md5
new file mode 100644
index 0000000..2ef69ce
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/structglwindow_1_1_event_handler__inherit__graph.md5
@@ -0,0 +1 @@
+9925b734b3a5c4dec291fa2913a5e662
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/structglwindow_1_1_event_handler__inherit__graph.pdf b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/structglwindow_1_1_event_handler__inherit__graph.pdf
new file mode 100644
index 0000000..d2492d2
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/structglwindow_1_1_event_handler__inherit__graph.pdf differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/structglwindow_1_1_g_l_window_1_1_scoped_context.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/structglwindow_1_1_g_l_window_1_1_scoped_context.tex
new file mode 100644
index 0000000..b61cd42
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/structglwindow_1_1_g_l_window_1_1_scoped_context.tex
@@ -0,0 +1,29 @@
+\hypertarget{structglwindow_1_1_g_l_window_1_1_scoped_context}{}\section{glwindow\+:\+:G\+L\+Window\+:\+:Scoped\+Context Struct Reference}
+\label{structglwindow_1_1_g_l_window_1_1_scoped_context}\index{glwindow\+::\+G\+L\+Window\+::\+Scoped\+Context@{glwindow\+::\+G\+L\+Window\+::\+Scoped\+Context}}
+
+
+Collaboration diagram for glwindow\+:\+:G\+L\+Window\+:\+:Scoped\+Context\+:
+\nopagebreak
+\begin{figure}[H]
+\begin{center}
+\leavevmode
+\includegraphics[width=276pt]{structglwindow_1_1_g_l_window_1_1_scoped_context__coll__graph}
+\end{center}
+\end{figure}
+\subsection*{Public Member Functions}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\Hypertarget{structglwindow_1_1_g_l_window_1_1_scoped_context_a50c8bb3920c309f393427a712ef92fab}\label{structglwindow_1_1_g_l_window_1_1_scoped_context_a50c8bb3920c309f393427a712ef92fab}}
+{\bfseries Scoped\+Context} (\hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} \&w)
+\end{DoxyCompactItemize}
+\subsection*{Public Attributes}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\Hypertarget{structglwindow_1_1_g_l_window_1_1_scoped_context_a4d650e6dd6b405ea6f6b344b3e98a3af}\label{structglwindow_1_1_g_l_window_1_1_scoped_context_a4d650e6dd6b405ea6f6b344b3e98a3af}}
+\hyperlink{classglwindow_1_1_g_l_window}{G\+L\+Window} \& {\bfseries win}
+\end{DoxyCompactItemize}
+
+
+The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
+\item
+examples/gl\+Viewer/glwindow.\+hpp\end{DoxyCompactItemize}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/structglwindow_1_1_g_l_window_1_1_scoped_context__coll__graph.md5 b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/structglwindow_1_1_g_l_window_1_1_scoped_context__coll__graph.md5
new file mode 100644
index 0000000..6959b03
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/structglwindow_1_1_g_l_window_1_1_scoped_context__coll__graph.md5
@@ -0,0 +1 @@
+b57dad1e1a6242c6ea719e00bd3e8c03
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/structglwindow_1_1_g_l_window_1_1_scoped_context__coll__graph.pdf b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/structglwindow_1_1_g_l_window_1_1_scoped_context__coll__graph.pdf
new file mode 100644
index 0000000..ea83829
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/structglwindow_1_1_g_l_window_1_1_scoped_context__coll__graph.pdf differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/structglwindow_1_1_scene_window_1_1_viewpoint.tex b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/structglwindow_1_1_scene_window_1_1_viewpoint.tex
new file mode 100644
index 0000000..373ed1a
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/doc/latex/structglwindow_1_1_scene_window_1_1_viewpoint.tex
@@ -0,0 +1,23 @@
+\hypertarget{structglwindow_1_1_scene_window_1_1_viewpoint}{}\section{glwindow\+:\+:Scene\+Window\+:\+:Viewpoint Struct Reference}
+\label{structglwindow_1_1_scene_window_1_1_viewpoint}\index{glwindow\+::\+Scene\+Window\+::\+Viewpoint@{glwindow\+::\+Scene\+Window\+::\+Viewpoint}}
+\subsection*{Public Attributes}
+\begin{DoxyCompactItemize}
+\item
+\mbox{\Hypertarget{structglwindow_1_1_scene_window_1_1_viewpoint_a48d71514393c6538f2753b219ec25e1e}\label{structglwindow_1_1_scene_window_1_1_viewpoint_a48d71514393c6538f2753b219ec25e1e}}
+double {\bfseries target} \mbox{[}3\mbox{]}
+\item
+\mbox{\Hypertarget{structglwindow_1_1_scene_window_1_1_viewpoint_a2c4761518908d5af7812a2427275b9da}\label{structglwindow_1_1_scene_window_1_1_viewpoint_a2c4761518908d5af7812a2427275b9da}}
+double {\bfseries azimuth}
+\item
+\mbox{\Hypertarget{structglwindow_1_1_scene_window_1_1_viewpoint_a019ecd110fdfc130d30318e728198718}\label{structglwindow_1_1_scene_window_1_1_viewpoint_a019ecd110fdfc130d30318e728198718}}
+double {\bfseries elevation}
+\item
+\mbox{\Hypertarget{structglwindow_1_1_scene_window_1_1_viewpoint_ab9bf343d65bfd4a4ef814c812ab92136}\label{structglwindow_1_1_scene_window_1_1_viewpoint_ab9bf343d65bfd4a4ef814c812ab92136}}
+double {\bfseries distance}
+\end{DoxyCompactItemize}
+
+
+The documentation for this struct was generated from the following files\+:\begin{DoxyCompactItemize}
+\item
+examples/gl\+Viewer/scenewindow.\+hpp\item
+examples/gl\+Viewer/scenewindow.\+cpp\end{DoxyCompactItemize}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/CMakeLists.txt b/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/CMakeLists.txt
new file mode 100644
index 0000000..4b75364
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/CMakeLists.txt
@@ -0,0 +1,66 @@
+
+add_executable(example_getRawFrame ./example_getRawFrame.cc)
+target_link_libraries(example_getRawFrame ${SDKLIBS})
+
+add_executable(example_getDepthFrame ./example_getDepthFrame.cc)
+target_link_libraries(example_getDepthFrame ${SDKLIBS})
+
+add_executable(example_getRectFrame ./example_getRectFrame.cc)
+target_link_libraries(example_getRectFrame ${SDKLIBS})
+
+add_executable(example_getCalibParamsFile ./example_getCalibParamsFile.cc)
+target_link_libraries(example_getCalibParamsFile ${SDKLIBS})
+
+add_executable(example_putImagetrans ./example_putImagetrans.cc)
+target_link_libraries(example_putImagetrans ${SDKLIBS})
+
+add_executable(example_getimagetrans ./example_getimagetrans.cc)
+target_link_libraries(example_getimagetrans ${SDKLIBS})
+
+# add_executable(example_share ./example_share.cc)
+# target_link_libraries(example_share ${SDKLIBS})
+
+find_package(OpenGL REQUIRED)
+if(OpenGL_FOUND)
+ include_directories(${OPENGL_INCLUDE_DIR})
+ message(STATUS ${OPENGL_INCLUDE_DIR})
+ message(STATUS ${OPENGL_LIBRARIES})
+else()
+ message(WARNING "OpenGL Library Not Found")
+endif()
+
+find_package(GLUT REQUIRED)
+if(GLUT_FOUND)
+ include_directories(${GLUT_INCLUDE_DIR})
+ message(STATUS ${GLUT_INCLUDE_DIR})
+ message(STATUS ${GLUT_LIBRARY})
+else()
+ message(WARNING "GLUT Library Not Found")
+endif()
+
+find_package(X11 REQUIRED)
+if(X11_FOUND)
+ include_directories(${X11_INCLUDE_DIR})
+ message(${X11_INCLUDE_DIR})
+ message(${X11_LIBRARIES})
+else()
+ message(WARNING "X11 Library Not Found")
+endif()
+
+if(X11_FOUND AND OpenGL_FOUND AND GLUT_FOUND)
+ set(ShowPointCloud true)
+ message(STATUS "Point Cloud Example Enabled")
+else()
+ set(ShowPointCloud false)
+ message(WARNING "Point Cloud Example Disabled")
+endif()
+
+if(${ShowPointCloud})
+add_executable(example_getPointCloud ./example_getPointCloud.cc ./glViewer/glwindow_x11.cpp ./glViewer/scenewindow.cpp)
+target_link_libraries(example_getPointCloud ${SDKLIBS} ${OPENGL_LIBRARIES} ${GLUT_LIBRARY} ${X11_LIBRARIES} )
+endif()
+
+
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread")
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/example_getCalibParamsFile.cc b/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/example_getCalibParamsFile.cc
new file mode 100644
index 0000000..afdf0d2
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/example_getCalibParamsFile.cc
@@ -0,0 +1,27 @@
+/**
+ * @file example_getCalibParamsFile.cc
+ * @brief This file is part of UnitreeCameraSDK.
+ * @details This example that how to get camera internal parameters
+ * @author ZhangChunyang
+ * @date 2021.07.31
+ * @version 1.0.1
+ * @copyright Copyright (c) 2020-2021, Hangzhou Yushu Technology Stock CO.LTD. All Rights Reserved.
+ */
+
+#include
+#include
+
+int main(int argc, char *argv[]){
+
+ UnitreeCamera cam("stereo_camera_config.yaml"); ///< init UnitreeCamera object by config file
+ if(!cam.isOpened()) ///< get camera open state
+ exit(EXIT_FAILURE);
+
+ cam.startCapture(); ///< disable image h264 encoding and share memory sharing
+ usleep(100000); ///< wait parameters initialization finished
+ cam.saveCalibParams("output_camCalibParams.yaml"); ///< save parameters to output_camCalibParams.yaml
+ std::cout << cam.getSerialNumber() << " " << cam.getPosNumber() << std::endl;
+ usleep(100000);
+ cam.stopCapture(); ///< stop camera capturing
+ return 0;
+}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/example_getDepthFrame.cc b/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/example_getDepthFrame.cc
new file mode 100644
index 0000000..3eae096
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/example_getDepthFrame.cc
@@ -0,0 +1,42 @@
+/**
+ * @file example_getDepthFrame.cc
+ * @brief This file is part of UnitreeCameraSDK.
+ * @details This example that how to get depth frame
+ * @author SunMingzhe
+ * @date 2021.12.07
+ * @version 1.1.0
+ * @copyright Copyright (c) 2020-2021, Hangzhou Yushu Technology Stock CO.LTD. All Rights Reserved.
+ */
+
+#include
+#include
+
+int main(int argc, char *argv[]){
+
+ UnitreeCamera cam("stereo_camera_config.yaml"); ///< init UnitreeCamera object by config file
+ if(!cam.isOpened()) ///< get camera open state
+ exit(EXIT_FAILURE);
+
+ cam.startCapture(); ///< disable image h264 encoding and share memory sharing
+ cam.startStereoCompute(); ///< start disparity computing
+
+ while(cam.isOpened()){
+ cv::Mat depth;
+ std::chrono::microseconds t;
+ if(!cam.getDepthFrame(depth, true, t)){ ///< get stereo camera depth image
+ usleep(1000);
+ continue;
+ }
+ if(!depth.empty()){
+ cv::imshow("UnitreeCamera-Depth", depth);
+ }
+ char key = cv::waitKey(10);
+ if(key == 27) // press ESC key
+ break;
+ }
+
+ cam.stopStereoCompute(); ///< stop disparity computing
+ cam.stopCapture(); ///< stop camera capturing
+
+ return 0;
+}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/example_getPointCloud.cc b/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/example_getPointCloud.cc
new file mode 100644
index 0000000..0dd9889
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/example_getPointCloud.cc
@@ -0,0 +1,97 @@
+/**
+ * @file example_getPointCloud.cc
+ * @brief This file is part of UnitreeCameraSDK.
+ * @details This example that how to get camera point cloud.
+ * @author ZhangChunyang
+ * @date 2021.07.31
+ * @version 1.0.1
+ * @copyright Copyright (c) 2020-2021, Hangzhou Yushu Technology Stock CO.LTD. All Rights Reserved.
+ */
+
+#include
+#include
+#include
+#include
+#include
+#include "glViewer/scenewindow.hpp"
+#include
+
+#define RGB_PCL true ///< Color Point Cloud Enable Flag
+
+void DrawScene(const std::vector& pcl_vec) {
+ glBegin(GL_POINTS);
+ for (uint i = 0; i < pcl_vec.size(); ++i) {
+ PCLType pcl = pcl_vec[i];
+ glColor3ub(pcl.clr(2), pcl.clr(1), pcl.clr(0));
+ glVertex3f(-pcl.pts(0), -pcl.pts(1), pcl.pts(2));
+ }
+ glEnd();
+}
+
+void DrawScene(const std::vector& pcl_vec) {
+ glBegin(GL_POINTS);
+ for (uint i = 0; i < pcl_vec.size(); ++i) {
+ cv::Vec3f pcl = pcl_vec[i];
+ glColor3ub(255, 255, 0);
+ glVertex3f(-pcl(0), -pcl(1), pcl(2));
+ }
+ glEnd();
+}
+
+bool killSignalFlag = false;
+void ctrl_c_handler(int s){
+ killSignalFlag = true;
+ return ;
+}
+
+int main(int argc, char *argv[]){
+
+ UnitreeCamera cam("stereo_camera_config.yaml");
+ if(!cam.isOpened())
+ exit(EXIT_FAILURE);
+
+ cam.startCapture();
+ cam.startStereoCompute();
+
+ struct sigaction sigIntHandler;
+ sigIntHandler.sa_handler = ctrl_c_handler;
+ sigemptyset(&sigIntHandler.sa_mask);
+ sigIntHandler.sa_flags = 0;
+ sigaction(SIGINT, &sigIntHandler, NULL);
+
+ std::cout << cam.getSerialNumber() << " " << cam.getPosNumber() << std::endl;
+
+ glwindow::SceneWindow scene(960, 720, "Panorama 3D Scene");
+
+ while(cam.isOpened()){
+
+ if(killSignalFlag){
+ break;
+ }
+
+ std::chrono::microseconds t;
+#if RGB_PCL
+ std::vector pcl_vec;
+ if(!cam.getPointCloud(pcl_vec, t)){
+ usleep(1000);
+ continue;
+ }
+#else
+ std::vector pcl_vec;
+ if(!cam.getPointCloud(pcl_vec, t)){
+ usleep(1000);
+ continue;
+ }
+#endif
+ if (scene.win.alive()) {
+ if (scene.start_draw()) {
+ DrawScene(pcl_vec);
+ scene.finish_draw();
+ }
+ }
+ }
+
+ cam.stopStereoCompute();
+ cam.stopCapture();
+ return 0;
+}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/example_getRawFrame.cc b/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/example_getRawFrame.cc
new file mode 100644
index 0000000..987cb41
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/example_getRawFrame.cc
@@ -0,0 +1,63 @@
+/**
+ * @file example_getRawFrame.cc
+ * @brief This file is part of UnitreeCameraSDK.
+ * @details This example that how to get camera raw frame.
+ * @author ZhangChunyang
+ * @date 2021.07.31
+ * @version 1.0.1
+ * @copyright Copyright (c) 2020-2021, Hangzhou Yushu Technology Stock CO.LTD. All Rights Reserved.
+ */
+
+#include
+#include
+
+int main(int argc, char *argv[]){
+
+ int deviceNode = 0; // default 0 -> /dev/video0
+ cv::Size frameSize(1856, 800); // defalut image size: 1856 X 800
+ int fps = 30;
+
+ if(argc >= 2){
+ deviceNode = std::atoi(argv[1]);
+ if(argc >= 4){
+ frameSize = cv::Size(std::atoi(argv[2]), std::atoi(argv[3]));
+ }
+ if(argc >=5)
+ fps = std::atoi(argv[4]);
+ }
+
+ UnitreeCamera cam(deviceNode); ///< init camera by device node number
+ if(!cam.isOpened())
+ exit(EXIT_FAILURE);
+
+ cam.setRawFrameSize(frameSize); ///< set camera frame size
+ cam.setRawFrameRate(fps); ///< set camera frame rate
+
+ std::cout << "Device Position Number:" << cam.getPosNumber() << std::endl;
+
+ cam.startCapture(); ///< start camera capturing
+
+ while(cam.isOpened())
+ {
+
+ cv::Mat frame;
+ std::chrono::microseconds t;
+ if(!cam.getRawFrame(frame, t)){ ///< get camera raw image
+ usleep(1000);
+ continue;
+ }
+
+ cv::Mat left,right;
+ frame(cv::Rect(0, 0, frame.size().width/2, frame.size().height)).copyTo(right);
+ frame(cv::Rect(frame.size().width/2,0, frame.size().width/2, frame.size().height)).copyTo(left);
+ cv::hconcat(left, right, frame);
+ cv::imshow("UnitreeCamera_Left-Right", frame);
+ char key = cv::waitKey(10);
+ if(key == 27) // press ESC key
+ break;
+ }
+
+ cam.stopCapture(); ///< stop camera capturing
+
+ return 0;
+}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/example_getRectFrame.cc b/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/example_getRectFrame.cc
new file mode 100644
index 0000000..b9000e4
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/example_getRectFrame.cc
@@ -0,0 +1,60 @@
+/**
+ * @file example_getRectFrame.cc
+ * @brief This file is part of UnitreeCameraSDK.
+ * @details This example that how to get depth frame
+ * @author ZhangChunyang
+ * @date 2021.07.31
+ * @version 1.0.1
+ * @copyright Copyright (c) 2020-2021, Hangzhou Yushu Technology Stock CO.LTD. All Rights Reserved.
+ */
+
+#include
+#include
+
+int main(int argc, char *argv[]){
+
+ int deviceNode = 0; ///< default 0 -> /dev/video0
+ cv::Size frameSize(1856, 800); ///< default frame size 1856x800
+ int fps = 30; ///< default camera fps: 30
+
+ if(argc >= 2){
+ deviceNode = std::atoi(argv[1]);
+ if(argc >= 4){
+ frameSize = cv::Size(std::atoi(argv[2]), std::atoi(argv[3]));
+ }
+ if(argc >=5)
+ fps = std::atoi(argv[4]);
+ }
+
+ UnitreeCamera cam("stereo_camera_config.yaml"); ///< init camera by device node number
+ if(!cam.isOpened()) ///< get camera open state
+ exit(EXIT_FAILURE);
+
+ cam.setRawFrameSize(frameSize); ///< set camera frame size
+ cam.setRawFrameRate(fps); ///< set camera camera fps
+ cam.setRectFrameSize(cv::Size(frameSize.width >> 2, frameSize.height >> 1)); ///< set camera rectify frame size
+ cam.startCapture(); ///< disable image h264 encoding and share memory sharing
+
+ usleep(500000);
+ while(cam.isOpened()){
+ cv::Mat left,right;
+ if(!cam.getRectStereoFrame(left,right)){ ///< get rectify left,right frame
+ usleep(1000);
+ continue;
+ }
+
+ cv::Mat stereo;
+ // cv::flip(left,left, -1);
+ // cv::flip(right,right, -1);
+ cv::hconcat(left, right, stereo);
+ cv::flip(stereo,stereo, -1);
+ cv::imshow("Longlat_Rect", stereo);
+ char key = cv::waitKey(10);
+ if(key == 27) // press ESC key
+ break;
+ }
+
+ cam.stopCapture(); ///< stop camera capturing
+
+ return 0;
+}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/example_getimagetrans.cc b/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/example_getimagetrans.cc
new file mode 100644
index 0000000..9d21905
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/example_getimagetrans.cc
@@ -0,0 +1,62 @@
+/**
+ * @file example_getRectFrame.cc
+ * @brief This file is part of UnitreeCameraSDK.
+ * @details This example that how to Transmission picture
+ * @author SunMingzhe
+ * @date 2021.12.07
+ * @version 1.1.0
+ * @copyright Copyright (c) 2020-2021, Hangzhou Yushu Technology Stock CO.LTD. All Rights Reserved.
+ */
+
+/*
+接收端:
+方法概述:采用定向udp方法接收图片,在应用其之前,需要先发送图片,例子:example_putImagetrans.cc
+端口9201~9205分别对应前方,下巴,左,右,腹部
+本机ip需要是192.168.123.IpLastSegment,IpLastSegment被设置在发送端cofigure yaml-
+*/
+
+/*
+listener
+Introduction: This program uses directed UDP methods to get pictures,whitch requires sending pictures on other programs. for example:example_putImagetrans.cc
+port:9201~9205 -> Front,chin,left,right,abdomen
+local ip must be set to 192.168.123.IpLastSegment and IpLastSegment musb be set in cofigure yaml
+*/
+
+/*
+local ip config
+ip 192.168.123.IpLastSegment
+netmask 255.255.255.0
+gateway 192.168.123.1
+*/
+
+
+
+#include
+#include
+int main(int argc,char** argv)
+{
+ std::string IpLastSegment = "15";
+ int cam = 1;
+ if (argc>=2)
+ cam = std::atoi(argv[1]);
+ std::string udpstrPrevData = "udpsrc address=192.168.123."+ IpLastSegment + " port=";
+ //端口:前方,下巴,左,右,腹部
+ std::array udpPORT = std::array{9201, 9202, 9203, 9204, 9205};
+ std::string udpstrBehindData = " ! application/x-rtp,media=video,encoding-name=H264 ! rtph264depay ! h264parse ! omxh264dec ! videoconvert ! appsink";
+ std::string udpSendIntegratedPipe = udpstrPrevData + std::to_string(udpPORT[cam-1]) + udpstrBehindData;
+ std::cout<<"udpSendIntegratedPipe:"<> frame;
+ if(frame.empty())
+ break;
+ imshow("video", frame);
+ cv::waitKey(20);
+ }
+ cap.release();//释放资源
+ return 0;
+}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/example_putImagetrans.cc b/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/example_putImagetrans.cc
new file mode 100644
index 0000000..71b5cdf
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/example_putImagetrans.cc
@@ -0,0 +1,118 @@
+/**
+ * @file example_getRectFrame.cc
+ * @brief This file is part of UnitreeCameraSDK.
+ * @details This example that how to Transmission picture
+ * @author SunMingzhe
+ * @date 2021.12.07
+ * @version 1.1.0
+ * @copyright Copyright (c) 2020-2021, Hangzhou Yushu Technology Stock CO.LTD. All Rights Reserved.
+ */
+
+#include
+#include
+
+
+/*
+发送端:
+方法概述:采用udp方法输出图片,传输方式已写入程序,由StereoCameraCommon::startCapture(true,false)中第一个参数控制定向udp传输,当其为true时打开udp264硬编码传输模式
+参数:配置文件中IpLastSegment是接收端ip,接收端地址必须是192.168.123.IpLastSegment。
+ 配置文件中Transmode决定传输模式
+ 配置文件中Transrate决定传输速率,限制了传输速率小于图片速率
+ 端口9201~9205分别对应前方,下巴,左,右,腹部
+ 启动自定义图传时需使用kill.sh文件关闭Unitree/autostart/02camerarosnode程序来解除相机占用,Unitree/autostart/04imageai来释放算力。
+ (也可使用以下几条指令
+ ps -A | grep point | awk '{print $1}' | xargs kill -9
+ ps -aux|grep mqttControlNode|grep -v grep|head -n 1|awk '{print $2}'|xargs kill -9
+ ps -aux|grep live_human_pose|grep -v grep|head -n 1|awk '{print $2}'|xargs kill -9
+ )
+传输图片模式:由配置文件中Transmode决定,该值只可通过读取配置文件方式写入
+0:传输左目原始图片
+1:传输双目原始图片
+2:传输左目畸变校正后图片,视野范围角度可调60~140
+3:传输双目畸变校正后图片
+※※※注意,双目图的最后的左右目输出位置是反的。左目->右图,右目->左图
+4:不建议使用!!,Depthmode = 2时 可输出深度图和对应左目图片,不建议使用。
+*/
+
+/*
+sender:
+Introduction: This program uses directed UDP methods to output pictures, transfer method written in programs. StereoCameraCommon::startCapture(true,false) the first parameter is a switch.
+parameter:IpLastSegment is listener ip. listener ip:192.168.123.IpLastSegment
+ Transrate(config yaml) Transmission rate.it must lower than FrameRate
+ port:9201~9205 -> Front,chin,left,right,abdomen
+ If you start this file, you must bash "kill.sh" to turn off automatic startup program. "Unitree/autostart/02camerarosnode/kill.sh" and "Unitree/autostart/04imageai/kill.sh".
+ (You can also use the following instructions:
+ ps -A | grep point | awk '{print $1}' | xargs kill -9
+ ps -aux|grep mqttControlNode|grep -v grep|head -n 1|awk '{print $2}'|xargs kill -9
+ ps -aux|grep live_human_pose|grep -v grep|head -n 1|awk '{print $2}'|xargs kill -9
+ )
+Transfer picture mode: Decided by Transmode in the configuration yaml, which only writes in programs by reading the configuration yaml.
+0:ori left
+1:ori stereo
+2:rect left
+3:rect stereo
+※※※warning:The last left and right output position of the stereo picture is reversed left cam-> right picture right cam -> left picture
+4:Not recommended for use!!,set Depthmode = 2 , rect left && depthimage
+*/
+
+/*
+local ip config
+ip 192.168.123.x
+netmask 255.255.255.0
+gateway 192.168.123.1
+*/
+int main(int argc, char *argv[])
+{
+
+ UnitreeCamera cam("trans_rect_config.yaml"); ///< init camera by device node number
+ if(!cam.isOpened()) ///< get camera open state
+ exit(EXIT_FAILURE);
+ cam.startCapture(true,false); ///< disable share memory sharing and able image h264 encoding
+
+ usleep(500000);
+ while(cam.isOpened())
+ {
+ cv::Mat left,right,feim;
+ if(!cam.getRectStereoFrame(left,right))
+ {
+ usleep(1000);
+ continue;
+ }
+ char key = cv::waitKey(10);
+ if(key == 27) // press ESC key
+ break;
+ }
+
+ cam.stopCapture(); ///< stop camera capturing
+
+ return 0;
+}
+/*
+int main(int argc, char *argv[])
+{
+
+ UnitreeCamera cam("trans_rect_config.yaml"); ///< init camera by device node number
+ if(!cam.isOpened()) ///< get camera open state
+ exit(EXIT_FAILURE);
+
+ cam.startCapture(true,false); ///< disable share memory sharing and able image h264 encoding
+
+ usleep(500000);
+ while(cam.isOpened())
+ {
+ cv::Mat frame;
+ std::chrono::microseconds t;
+ if(!cam.getRawFrame(frame, t)){ ///< get camera raw image
+ usleep(1000);
+ continue;
+ }
+ char key = cv::waitKey(10);
+ if(key == 27) // press ESC key
+ break;
+ }
+
+ cam.stopCapture(); ///< stop camera capturing
+
+ return 0;
+}
+*/
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/example_share.cc b/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/example_share.cc
new file mode 100644
index 0000000..339101c
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/example_share.cc
@@ -0,0 +1,29 @@
+#include
+#include
+
+int main(int argc, char *argv[])
+{
+
+ UnitreeCamera cam("trans_rect_config.yaml"); ///< init camera by device node number
+ if(!cam.isOpened()) ///< get camera open state
+ exit(EXIT_FAILURE);
+ cam.startCapture(false, true);
+
+ usleep(500000);
+ while(cam.isOpened())
+ {
+ cv::Mat left,right,feim;
+ if(!cam.getRectStereoFrame(left,right))
+ {
+ usleep(1000);
+ continue;
+ }
+ char key = cv::waitKey(10);
+ if(key == 27) // press ESC key
+ break;
+ }
+
+ cam.stopCapture(); ///< stop camera capturing
+
+ return 0;
+}
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/glViewer/glwindow.hpp b/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/glViewer/glwindow.hpp
new file mode 100644
index 0000000..a4ee236
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/glViewer/glwindow.hpp
@@ -0,0 +1,124 @@
+// Copyright (c) Ethan Eade, https://bitbucket.org/ethaneade/glwindow
+
+#pragma once
+
+#include
+
+namespace glwindow {
+
+ namespace ButtonEvent {
+ enum Buttons {
+ LEFT=1, MIDDLE=2, RIGHT=4, WHEEL=8,
+ MODKEY_CTRL=16, MODKEY_SHIFT=32,
+ };
+ };
+
+ namespace KeyCode {
+ enum Codes {
+ BACKSPACE=0x8,
+ TAB=0x9,
+ ENTER=0xD,
+ ESCAPE=0x1B,
+ DEL=0x7F,
+
+ SHIFT=0xFF00,
+ CTRL,
+ ALT,
+ SUPER,
+ CAPSLOCK,
+ LEFT,
+ UP,
+ RIGHT,
+ DOWN,
+ };
+ };
+
+
+ class GLWindow;
+
+ struct EventHandler
+ {
+ public:
+ virtual ~EventHandler() {}
+ virtual bool on_key_down(GLWindow& win, int key) { return false; }
+ virtual bool on_key_up(GLWindow& win, int key) { return false; }
+ virtual bool on_text(GLWindow& win, const char *text, int len) { return false; }
+ virtual bool on_button_down(GLWindow& win, int btn, int state, int x, int y) { return false; }
+ virtual bool on_button_up(GLWindow& win, int btn, int state, int x, int y) { return false; }
+ virtual bool on_mouse_move(GLWindow& win, int state, int x, int y) { return false; }
+ virtual bool on_mouse_wheel(GLWindow& win, int state, int x, int y, int dx, int dy) { return false; }
+ virtual bool on_resize(GLWindow& win, int x, int y, int w, int h) { return false; }
+ virtual bool on_close(GLWindow& win) { return false; }
+ };
+
+ // Dispatches to each handler in reverse order until one returns true
+ class EventDispatcher : public EventHandler
+ {
+ public:
+ const std::vector &handlers;
+ EventDispatcher(const std::vector &h) :
+ handlers(h) {}
+ bool on_key_down(GLWindow& win, int key);
+ bool on_key_up(GLWindow& win, int key);
+ bool on_text(GLWindow& win, const char *text, int len);
+ bool on_button_down(GLWindow& win, int btn, int state, int x, int y);
+ bool on_button_up(GLWindow& win, int btn, int state, int x, int y);
+ bool on_mouse_move(GLWindow& win, int state, int x, int y);
+ bool on_mouse_wheel(GLWindow& win, int state, int x, int y, int dx, int dy);
+ bool on_resize(GLWindow& win, int x, int y, int w, int h);
+ bool on_close(GLWindow& win);
+ };
+
+ class GLWindow
+ {
+ public:
+ GLWindow(int w=-1, int h=-1, const char *title=0);
+ virtual ~GLWindow();
+
+ int width() const;
+ int height() const;
+ bool visible() const;
+ bool alive() const;
+
+ bool make_current();
+ bool push_context();
+ void pop_context();
+
+ struct ScopedContext {
+ GLWindow &win;
+ ScopedContext(GLWindow &w) : win(w) {
+ win.push_context();
+ }
+ ~ScopedContext() {
+ win.pop_context();
+ }
+ };
+
+ void swap_buffers();
+
+ void set_size(int w, int h);
+ void set_position(int x, int y);
+
+ void set_title(const char* title);
+
+ void add_handler(EventHandler* handler);
+ bool remove_handler(EventHandler *handler);
+ void handle_events();
+ static void handle_all_events();
+
+ void destroy();
+
+ void draw_text(double x, double y, const char *text, int xywh[4]=0);
+ protected:
+ struct SystemState;
+ SystemState *sys_state;
+
+ std::vector handlers;
+ GLWindow *prev_active;
+
+ static GLWindow *active_context;
+ static std::vector all_windows;
+ static void add_window(GLWindow *win);
+ static bool remove_window(GLWindow *win);
+ };
+}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/glViewer/glwindow_x11.cpp b/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/glViewer/glwindow_x11.cpp
new file mode 100644
index 0000000..ec661f1
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/glViewer/glwindow_x11.cpp
@@ -0,0 +1,518 @@
+// Copyright (c) Ethan Eade, https://bitbucket.org/ethaneade/glwindow
+
+#include "glwindow.hpp"
+
+#include
+#include
+#include
+#include
+
+using namespace glwindow;
+
+std::vector GLWindow::all_windows;
+
+void GLWindow::add_window(GLWindow *win)
+{
+ all_windows.push_back(win);
+}
+
+bool GLWindow::remove_window(GLWindow *win)
+{
+ for (size_t i=0; ihandle_events();
+}
+
+GLWindow *GLWindow::active_context = 0;
+
+bool GLWindow::push_context()
+{
+ prev_active = active_context;
+ return make_current();
+}
+
+void GLWindow::pop_context()
+{
+ if (active_context != this)
+ return;
+
+ if (prev_active) {
+ prev_active->make_current();
+ } else {
+ active_context = 0;
+ }
+}
+
+void GLWindow::add_handler(EventHandler* handler)
+{
+ handlers.push_back(handler);
+}
+
+bool GLWindow::remove_handler(EventHandler* handler)
+{
+ std::vector::reverse_iterator it;
+ for (it = handlers.rbegin(); it != handlers.rend(); ++it) {
+ if (*it == handler) {
+ handlers.erase(it.base());
+ return true;
+ }
+ }
+ return false;
+}
+
+bool EventDispatcher::on_key_down(GLWindow& win, int key) {
+ for (int i=handlers.size()-1; i>=0; --i)
+ if (handlers[i]->on_key_down(win, key))
+ return true;
+ return false;
+}
+bool EventDispatcher::on_key_up(GLWindow& win, int key) {
+ for (int i=handlers.size()-1; i>=0; --i)
+ if (handlers[i]->on_key_up(win, key))
+ return true;
+ return false;
+}
+bool EventDispatcher::on_text(GLWindow& win, const char *text, int len) {
+ for (int i=handlers.size()-1; i>=0; --i)
+ if (handlers[i]->on_text(win, text, len))
+ return true;
+ return false;
+}
+
+bool EventDispatcher::on_button_down(GLWindow& win, int btn, int state, int x, int y) {
+ for (int i=handlers.size()-1; i>=0; --i)
+ if (handlers[i]->on_button_down(win, btn, state, x, y))
+ return true;
+ return false;
+}
+
+bool EventDispatcher::on_button_up(GLWindow& win, int btn, int state, int x, int y) {
+ for (int i=handlers.size()-1; i>=0; --i)
+ if (handlers[i]->on_button_up(win, btn, state, x, y))
+ return true;
+ return false;
+}
+
+bool EventDispatcher::on_mouse_move(GLWindow& win, int state, int x, int y) {
+ for (int i=handlers.size()-1; i>=0; --i)
+ if (handlers[i]->on_mouse_move(win, state, x, y))
+ return true;
+ return false;
+}
+
+bool EventDispatcher::on_mouse_wheel(GLWindow& win, int state, int x, int y, int dx, int dy) {
+ for (int i=handlers.size()-1; i>=0; --i)
+ if (handlers[i]->on_mouse_wheel(win, state, x, y, dx, dy))
+ return true;
+ return false;
+}
+
+bool EventDispatcher::on_resize(GLWindow &win, int x, int y, int w, int h) {
+ for (int i=handlers.size()-1; i>=0; --i)
+ if (handlers[i]->on_resize(win, x, y, w, h))
+ return true;
+ return false;
+}
+
+bool EventDispatcher::on_close(GLWindow &win) {
+ for (int i=handlers.size()-1; i>=0; --i)
+ if (handlers[i]->on_close(win))
+ return true;
+ return false;
+}
+
+static XVisualInfo *makeVisualInfo(Display *display)
+{
+ int visualAttributes[] = {
+ GLX_RED_SIZE, 8,
+ GLX_GREEN_SIZE, 8,
+ GLX_BLUE_SIZE, 8,
+ GLX_DEPTH_SIZE, 16,
+ GLX_STENCIL_SIZE, 8,
+ GLX_RGBA,
+ GLX_DOUBLEBUFFER,
+ None
+ };
+ XVisualInfo *vi = glXChooseVisual(display, DefaultScreen(display), visualAttributes);
+ return vi;
+}
+
+static Window makeWindow(Display *display, XVisualInfo *vi, int width, int height)
+{
+ Window rootWindow = RootWindow(display, vi->screen);
+
+ XSetWindowAttributes attributes;
+ attributes.border_pixel = 0;
+ attributes.colormap = XCreateColormap(display, rootWindow, vi->visual, AllocNone);
+ attributes.event_mask = (KeyPressMask | KeyReleaseMask |
+ ButtonPressMask | ButtonReleaseMask |
+ PointerMotionMask |
+ VisibilityChangeMask |
+ StructureNotifyMask |
+ ExposureMask);
+
+ Window window = XCreateWindow(display,
+ rootWindow,
+ 0, 0, width, height,
+ 0, vi->depth,
+ InputOutput,
+ vi->visual,
+ CWBorderPixel | CWColormap | CWEventMask,
+ &attributes);
+ return window;
+}
+
+struct GLWindow::SystemState
+{
+ Display* display;
+ Window window;
+ GLXContext context;
+ Atom delete_atom;
+ Cursor cursor;
+
+ int width, height;
+ bool visible;
+
+ SystemState() {
+ display = 0;
+ window = 0;
+ width = 0;
+ height = 0;
+ visible = false;
+ }
+ ~SystemState() {
+ if (!display)
+ return;
+
+ if (context) {
+ destroy();
+
+ glXMakeCurrent(display, None, 0);
+ glXDestroyContext(display, context);
+ }
+
+ XCloseDisplay(display);
+ }
+
+ bool init(int w, int h, const char *title)
+ {
+ display = XOpenDisplay(0);
+ if (!display)
+ return false;
+ XVisualInfo *vi = makeVisualInfo(display);
+ if (!vi)
+ return false;
+
+ context = glXCreateContext(display, vi, 0, True);
+ if (!context)
+ return false;
+
+ width = w;
+ height = h;
+ window = makeWindow(display, vi, width, height);
+ if (!window)
+ return false;
+
+ XStoreName(display, window, title);
+
+ {
+ XClassHint classHint;
+ classHint.res_name = const_cast(title);
+ char classname[] = "glwindow";
+ classHint.res_class = classname;
+ XSetClassHint(display, window, &classHint);
+ XMapWindow(display, window);
+ }
+
+ XEvent ev;
+ do {
+ XNextEvent(display, &ev);
+ } while (ev.type != MapNotify);
+
+ visible = true;
+ delete_atom = XInternAtom(display, "WM_DELETE_WINDOW", True);
+ XSetWMProtocols(display, window, &delete_atom, 1);
+
+ cursor = XCreateFontCursor(display, ' ');
+ return true;
+ }
+
+ void destroy()
+ {
+ if (window) {
+ XUnmapWindow(display, window);
+ XDestroyWindow(display, window);
+ window = 0;
+ }
+ }
+
+ void swap_buffers()
+ {
+ if (window) {
+ glXSwapBuffers(display, window);
+ }
+ }
+
+ void set_title(const char *title)
+ {
+ if (window) {
+ XStoreName(display, window, title);
+ }
+ }
+
+ bool make_current()
+ {
+ if (!window)
+ return false;
+ glXMakeCurrent(display, window, context);
+ return true;
+ }
+};
+
+GLWindow::GLWindow(int w, int h, const char *title)
+{
+ sys_state = new SystemState();
+ sys_state->init(w, h, title);
+ all_windows.push_back(this);
+}
+
+GLWindow::~GLWindow()
+{
+ for (size_t i=0; iwidth;
+}
+
+int GLWindow::height() const
+{
+ return sys_state->height;
+}
+
+bool GLWindow::visible() const
+{
+ return sys_state->visible;
+}
+
+bool GLWindow::alive() const
+{
+ return 0 != sys_state->window;
+}
+
+bool GLWindow::make_current()
+{
+ if (!sys_state->make_current())
+ return false;
+
+ active_context = this;
+ return true;
+}
+
+void GLWindow::swap_buffers()
+{
+ sys_state->swap_buffers();
+}
+
+void GLWindow::set_size(int w, int h)
+{
+ if (!alive())
+ return;
+
+ XWindowChanges c;
+ c.width = w;
+ c.height = h;
+ XConfigureWindow(sys_state->display,
+ sys_state->window,
+ CWWidth | CWHeight,
+ &c);
+}
+
+void GLWindow::set_position(int x, int y)
+{
+ if (!alive())
+ return;
+
+ XWindowChanges c;
+ c.x = x;
+ c.y = y;
+ XConfigureWindow(sys_state->display,
+ sys_state->window,
+ CWX | CWY,
+ &c);
+}
+
+void GLWindow::set_title(const char* title)
+{
+ if (!alive())
+ return;
+
+ sys_state->set_title(title);
+}
+
+static int convert_button_state(unsigned int state)
+{
+ int s = 0;
+ if (state & Button1Mask) s |= ButtonEvent::LEFT;
+ if (state & Button2Mask) s |= ButtonEvent::MIDDLE;
+ if (state & Button3Mask) s |= ButtonEvent::RIGHT;
+ if (state & ControlMask) s |= ButtonEvent::MODKEY_CTRL;
+ if (state & ShiftMask) s |= ButtonEvent::MODKEY_SHIFT;
+ return s;
+}
+
+static int convert_button(int button)
+{
+ switch (button) {
+ case Button1: return ButtonEvent::LEFT;
+ case Button2: return ButtonEvent::MIDDLE;
+ case Button3: return ButtonEvent::RIGHT;
+ default: return 0;
+ }
+}
+
+static int convert_keycode(int key)
+{
+ switch (key) {
+ case XK_BackSpace: return KeyCode::BACKSPACE;
+ case XK_Tab: return KeyCode::TAB;
+ case XK_Return: return KeyCode::ENTER;
+ case XK_Shift_L: return KeyCode::SHIFT;
+ case XK_Shift_R: return KeyCode::SHIFT;
+ case XK_Control_L: return KeyCode::CTRL;
+ case XK_Control_R: return KeyCode::CTRL;
+ case XK_Alt_L: return KeyCode::ALT;
+ case XK_Alt_R: return KeyCode::ALT;
+ case XK_Super_L: return KeyCode::SUPER;
+ case XK_Super_R: return KeyCode::SUPER;
+ case XK_Caps_Lock: return KeyCode::CAPSLOCK;
+ case XK_Delete: return KeyCode::DEL;
+ case XK_Escape: return KeyCode::ESCAPE;
+ case XK_Left: return KeyCode::LEFT;
+ case XK_Up: return KeyCode::UP;
+ case XK_Right: return KeyCode::RIGHT;
+ case XK_Down: return KeyCode::DOWN;
+ }
+ return key;
+}
+
+void GLWindow::handle_events()
+{
+ if (!alive())
+ return;
+
+ XEvent event;
+ KeySym key;
+ const int text_size = 64;
+ char text[text_size];
+ int len;
+ EventDispatcher dispatcher(handlers);
+
+ int btn, state;
+
+ while (XPending(sys_state->display))
+ {
+ XNextEvent(sys_state->display, &event);
+ //std::cerr << "event " << event.type << std::endl;
+ switch (event.type) {
+ case ButtonPress:
+ state = convert_button_state(event.xbutton.state);
+ if (event.xbutton.button == Button4) {
+ // MouseWheel down
+ dispatcher.on_mouse_wheel(*this, state, event.xbutton.x, event.xbutton.y, 0, 1);
+ } else if (event.xbutton.button == Button5) {
+ // MouseWheel up
+ dispatcher.on_mouse_wheel(*this, state, event.xbutton.x, event.xbutton.y, 0, -1);
+ } else {
+ btn = convert_button(event.xbutton.button);
+ dispatcher.on_button_down(*this, btn, state, event.xbutton.x, event.xbutton.y);
+ }
+ break;
+
+ case ButtonRelease:
+ if (event.xbutton.button == Button4 ||
+ event.xbutton.button == Button5)
+ break;
+ btn = convert_button(event.xbutton.button);
+ state = convert_button_state(event.xbutton.state);
+ dispatcher.on_button_up(*this, btn, state, event.xbutton.x, event.xbutton.y);
+ break;
+
+ case MotionNotify:
+ state = convert_button_state(event.xbutton.state);
+ dispatcher.on_mouse_move(*this, state, event.xmotion.x, event.xmotion.y);
+ break;
+
+ case KeyPress:
+ len = XLookupString(&event.xkey, text, text_size-1, &key, 0);
+ dispatcher.on_key_down(*this, convert_keycode(key));
+ if (len > 0) {
+ text[len] = 0;
+ dispatcher.on_text(*this, text, len);
+ }
+ break;
+
+ case KeyRelease:
+ XLookupString(&event.xkey, 0, 0, &key, 0);
+ dispatcher.on_key_up(*this, convert_keycode(key));
+ break;
+
+ case ConfigureNotify:
+ sys_state->width = event.xconfigure.width;
+ sys_state->height = event.xconfigure.height;
+ dispatcher.on_resize(*this, event.xconfigure.x, event.xconfigure.y,
+ sys_state->width, sys_state->height);
+ break;
+
+ case VisibilityNotify:
+ if (event.xvisibility.state == VisibilityFullyObscured)
+ sys_state->visible = false;
+ else
+ sys_state->visible = true;
+ break;
+
+ case DestroyNotify:
+ //std::cerr << "DestroyNotify" << std::endl;
+ //sys_state->window = 0;
+ break;
+
+ case Expose:
+ //std::cerr << "Expose" << std::endl;
+ break;
+
+ case ClientMessage:
+ if (event.xclient.data.l[0] == (int)sys_state->delete_atom) {
+ if (!dispatcher.on_close(*this))
+ destroy();
+ }
+ break;
+
+ default:
+ break;
+ }
+ }
+}
+
+void GLWindow::destroy()
+{
+ sys_state->destroy();
+}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/glViewer/scenewindow.cpp b/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/glViewer/scenewindow.cpp
new file mode 100644
index 0000000..2b6e854
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/glViewer/scenewindow.cpp
@@ -0,0 +1,181 @@
+// Copyright (c) Ethan Eade, https://bitbucket.org/ethaneade/glwindow
+
+#include "scenewindow.hpp"
+#include
+#include
+#include
+
+using namespace glwindow;
+
+SceneWindow::SceneWindow(int width, int height, const char *title)
+ : win(width, height, title)
+{
+ dragging = false;
+ drawing = false;
+ win.add_handler(this);
+}
+
+SceneWindow::~SceneWindow()
+{
+}
+
+void SceneWindow::update()
+{
+ win.handle_events();
+}
+
+SceneWindow::Viewpoint::Viewpoint()
+{
+ target[0] = -0.05;
+ target[1] = -0.75;
+ target[2] = 0.;
+ azimuth = 0.;
+ elevation = 0.0;
+ distance = 8.0;
+}
+
+static void set_viewpoint(const SceneWindow::Viewpoint &vp)
+{
+ const double RAD_TO_DEG = 180.0 / 3.141592653589793;
+ glTranslated(0,0,vp.distance);
+ glRotated(vp.elevation * RAD_TO_DEG, 1, 0, 0);
+ glRotated(vp.azimuth * RAD_TO_DEG, 0, 1, 0);
+ glTranslated(-vp.target[0], -vp.target[1], -vp.target[2]);
+}
+
+bool SceneWindow::start_draw()
+{
+ if (!win.alive() || drawing)
+ return false;
+
+ drawing = true;
+
+ win.push_context();
+ glPushAttrib(GL_COLOR_BUFFER_BIT | GL_CURRENT_BIT | GL_ENABLE_BIT);
+
+ glViewport(0, 0, win.width(), win.height());
+ double aspect = (double)win.width() / (double)std::max(win.height(),1);
+
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ double znear = 0.01;
+ double zfar = 100.0;
+ double fy = 0.6 * znear;
+ double fx = aspect * fy;
+ glFrustum(-fx,fx,-fy,fy, znear, zfar);
+
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ glScaled(1, -1, -1);
+
+ set_viewpoint(viewpoint);
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ glEnable(GL_DEPTH_TEST);
+ glDepthFunc(GL_LEQUAL);
+ glDisable(GL_LIGHTING);
+
+ glEnable(GL_BLEND);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+
+ return true;
+}
+
+
+void SceneWindow::finish_draw()
+{
+ if (!drawing)
+ return;
+
+ glPopAttrib();
+ glFlush();
+ win.swap_buffers();
+ win.handle_events();
+
+ win.pop_context();
+ drawing = false;
+}
+
+bool SceneWindow::on_key_down(GLWindow& win, int key)
+{
+ return true;
+}
+
+bool SceneWindow::on_button_down(GLWindow& win, int btn, int state, int x, int y)
+{
+ if (dragging)
+ return false;
+
+ //std::cerr << "down " << btn << std::endl;
+ drag_btn = btn;
+ x0 = x;
+ y0 = y;
+ vp0 = viewpoint;
+ inv_w0 = 1.0 / win.width();
+ inv_h0 = 1.0 / win.height();
+ dragging = true;
+
+ return true;
+}
+
+bool SceneWindow::on_button_up(GLWindow& win, int btn, int state, int x, int y)
+{
+ //std::cerr << "up " << btn << std::endl;
+ dragging = false;
+ return true;
+}
+
+bool SceneWindow::on_mouse_move(GLWindow& win, int state, int x, int y)
+{
+ int idx = x - x0;
+ int idy = y - y0;
+ double dx = idx * inv_w0;
+ double dy = idy * inv_w0;
+
+ //std::cerr << dx << ", " << dy << std::endl;
+
+ if (!dragging)
+ return false;
+
+ if (drag_btn == ButtonEvent::LEFT) {
+ viewpoint.azimuth = vp0.azimuth - dx * 4.0;
+ viewpoint.elevation = vp0.elevation + dy * 4.0;
+ return true;
+ } else if (drag_btn == ButtonEvent::RIGHT) {
+ viewpoint.distance = ::exp(dy * 4.0) * vp0.distance;
+ return true;
+ } else if (drag_btn == ButtonEvent::MIDDLE) {
+ double sa = ::sin(-vp0.azimuth);
+ double ca = ::cos(-vp0.azimuth);
+ double se = ::sin(vp0.elevation);
+ double ce = ::cos(vp0.elevation);
+
+ double tx = -idx * 0.003;
+ double ty = -idy * 0.003;
+
+ double dtx = ca * tx - se*sa*ty;
+ double dty = ce * ty;
+ double dtz = -sa*tx - se*ca*ty;
+ double r = vp0.distance;
+
+ viewpoint.target[0] = vp0.target[0] + r*dtx;
+ viewpoint.target[1] = vp0.target[1] + r*dty;
+ viewpoint.target[2] = vp0.target[2] + r*dtz;
+ return true;
+ }
+
+ return false;
+}
+
+bool SceneWindow::on_mouse_wheel(GLWindow& win, int state, int x, int y, int dx, int dy)
+{
+ viewpoint.distance *= ::exp(dy * -0.08);
+ return true;
+}
+
+bool SceneWindow::on_resize(GLWindow& win, int x, int y, int w, int h)
+{
+ return false;
+}
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/glViewer/scenewindow.hpp b/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/glViewer/scenewindow.hpp
new file mode 100644
index 0000000..6984f1c
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/examples/glViewer/scenewindow.hpp
@@ -0,0 +1,49 @@
+// Copyright (c) Ethan Eade, https://bitbucket.org/ethaneade/glwindow
+
+#pragma once
+
+#include "glwindow.hpp"
+
+namespace glwindow
+{
+
+ class SceneWindow : public EventHandler
+ {
+ public:
+
+ struct Viewpoint
+ {
+ double target[3];
+ double azimuth, elevation, distance;
+ Viewpoint();
+ };
+
+ SceneWindow(int width, int height, const char *title);
+ virtual ~SceneWindow();
+
+ void update();
+
+ bool start_draw();
+ void finish_draw();
+
+ GLWindow win;
+ Viewpoint viewpoint;
+
+ protected:
+ bool on_key_down(GLWindow& win, int key);
+ bool on_button_down(GLWindow& win, int btn, int state, int x, int y);
+ bool on_button_up(GLWindow& win, int btn, int state, int x, int y);
+ bool on_mouse_move(GLWindow& win, int state, int x, int y);
+ bool on_mouse_wheel(GLWindow& win, int state, int x, int y, int dx, int dy);
+ bool on_resize(GLWindow& win, int x, int y, int w, int h);
+
+ bool dragging;
+ int drag_btn;
+ int x0, y0;
+ double inv_w0, inv_h0;
+ Viewpoint vp0;
+
+ bool drawing;
+ };
+
+}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/include/StereoCameraCommon.hpp b/src/Robot/go1_guide/nano/UnitreecameraSDK/include/StereoCameraCommon.hpp
new file mode 100644
index 0000000..e0efce2
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/include/StereoCameraCommon.hpp
@@ -0,0 +1,659 @@
+/**
+ * @file StereoCameraCommon.hpp
+ * @brief This file is part of UnitreeCameraSDK, which declare stereo camera algorithm APIs.
+ * @details image capture, image rectification, disparity computation, depth image and point cloud generation
+ * @author SunMingzhe
+ * @date 2021.12.1
+ * @version 1.1.0
+ * @copyright Copyright (c)2020-2021, Hangzhou Yushu Technology Stock CO.LTD. All Rights Reserved.
+ * Use of this source code is governed by the MPL-2.0 license, see LICENSE.
+ * @ref ZhangChunyang v1.0.1
+ */
+#ifndef __STEREO_CAMERA_COMMOM_HPP__
+#define __STEREO_CAMERA_COMMOM_HPP__
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include "SystemLog.hpp"
+
+/**
+ * @struct PCL
+ * @brief this struct is used for rendering point cloud by RGB color
+ * @details pts for point coordinates (x, y, z), clr for point color (b, g, r)
+ * @note point cloud simple type
+ * @attention point data element type float, color data element type uchar
+ */
+typedef struct PCL {
+ cv::Vec3f pts; ///< points coordinates (x, y, z)
+ cv::Vec3b clr; ///< points color (b, g, r)
+}PCLType;
+/**
+ * @class StereoCamera
+ * @brief this class provide the APIs of the algorithm and opration method of stereo cameras
+ * @details this class is the base of UnitreeCameraSDK, it includes many functions, such as
+ * camera frame capturing, image rectification, disparity computation, generating point cloud and etc.
+ */
+class StereoCamera
+{
+private:
+ typedef struct TimeFrame{
+ cv::Mat data1; ///< frame data
+ cv::Mat data2; ///< frame data
+ std::chrono::microseconds timeStamp; ///< time since 1970-01-01 00:00:00, unit is microseconds(10^-6 s)
+ }TimeFrameType;
+private:
+ int m_radius = 0;
+ int m_algorithm = 0;
+ int m_logLevel = 1;
+ int m_deviceNode = 0;
+ int m_posNumber = 0;
+ int m_serialNumber = 0;
+ int m_threshold = 120;
+ float m_frameRate = 30.0;
+ int m_ipLastSegment = 15;
+
+ bool m_shareMemSupport = false;
+ bool m_udpH264Support = false;
+ bool m_isOpened = false;
+ bool m_isCompute = false;
+ float maxdepth = 1;
+ float mindepth = 0.05;
+
+ int m_transmode = -1;
+ double m_transrate = 0;
+ double m_hfov = 90;
+ double default_pfov = 90;
+ double default_fov = 222;
+ double default_llfov = 180;
+ int m_depthmode = 1;
+
+ cv::VideoWriter gstWriter;
+
+ cv::Size m_frameSize;
+ cv::Size m_rectSize;
+
+ TimeFrameType m_stampFrame, m_dispFrame;
+
+ cv::Mat m_leftXi,m_leftRotation,m_leftIntrinsic,m_leftDistortion;
+ cv::Mat m_rightXi,m_rightRotation,m_rightIntrinsic,m_rightDistortion;
+ cv::Mat m_translation;
+
+ cv::Mat m_kfe, m_fmap[2][2], m_lmap[2][2], m_lagerFmap[2];
+
+ SystemLog *m_log = nullptr;
+ std::string m_logName = "StereoCamera";
+
+ std::mutex m_capLock, m_dispLock;
+ std::condition_variable m_capTrigger, m_dispTrigger;
+
+ cv::VideoCapture *m_videoCap = nullptr;
+
+ std::thread *m_capWorker = nullptr;
+ std::thread *m_dispWorker = nullptr;
+
+
+public:
+ /**
+ * @fn StereoCamera
+ * @brief StereoCamera
+ * @details default constructor
+ * @param[in] None
+ * @param[out] None
+ * @return None
+ * @note initialize StereoCamera object by default settings
+ * @code
+ * StereoCamera *pCam = new StereoCamera(); // or StereoCamera cam;
+ * @endcode
+ */
+ StereoCamera(void);
+ /**
+ * @fn StereoCamera
+ * @brief StereoCamera constructor
+ * @details use camera config file to init stereo camera
+ * @param[in] fileName camera config file, include file path, for example: ~/test/stereoConfig.yaml
+ * @param[out] None
+ * @return None
+ * @note initialize StereoCamera object by settings from configure file
+ * @code
+ * StereoCamera("path_to/config.yaml");
+ * @endcode
+ */
+ StereoCamera(std::string fileName);
+ /**
+ * @overload
+ * @fn StereoCamera
+ * @brief StereoCamera constructor overload
+ * @details use camera device node number to initialize stereo camera object
+ * @param[in] deviceNode camera device node, for example: /dev/video0, camera device node: 0
+ * @param[out] None
+ * @return None
+ * @note initialize StereoCamera object by device node number
+ * @code
+ * StereoCamera(0); // for /dev/video0
+ * @endcode
+ */
+ StereoCamera(int deviceNode);
+ /**
+ * @fn ~StereoCamera()
+ * @brief StereoCamera destructor
+ * @details release all stereo camera resource
+ * @param[in] None
+ * @param[out] None
+ * @return None
+ * @note automatically called when StereoCamera object released
+ */
+ virtual ~StereoCamera();
+
+public:
+ /**
+ * @fn isOpened
+ * @brief get stereo camera running status
+ * @details detect camera is opened or closed
+ * @param[in] None
+ * @param[out] None
+ * @return true or false, if camera is opened return true, otherwise return false
+ * @note tell camera running status, it should be called after StereoCamera object initialization
+ * @code
+ * StereoCamera cam;
+ * if(cam.isOpened())
+ * printf("Camera is opened!");
+ * @endcode
+ */
+ virtual bool isOpened(void);
+ /**
+ * @fn setLogLevel
+ * @brief set stereo camera ouput log level
+ * @details log level means that different kind of information will be output
+ * @param[in] level
+ * @param[out] None
+ * @return true or false, if assignment successfully return true, otherwise return false
+ * @note output information starts with "StereoCamera", it should be called after StereoCamera object initialization
+ * @code
+ * cam.setLogLevel(2); //debug level
+ * @endcode
+ */
+ virtual bool setLogLevel(int level);
+ /**
+ * @fn setPosNumber
+ * @brief set stereo camera position number
+ * @details position number means that the number of camera location in robot body
+ * @param[in] posNumber
+ * @param[out] None
+ * @return true or false, if assignment successfully return true, otherwise return false
+ * @note face NO.1, chin NO.2, left NO.3, right NO.4, down NO.5
+ * @code
+ * cam.setPosNumber(2);
+ * @endcode
+ */
+ virtual bool setPosNumber(int posNumber);
+ /**
+ * @fn setSerialNumber
+ * @brief set stereo camera serial number
+ * @details serial number same as robot serial number
+ * @param[in] serialNumber
+ * @param[out] None
+ * @return true or false, if assignment successfully return true, otherwise return false
+ * @note
+ * @code
+ * cam.setSerialNumber(2);
+ * @endcode
+ */
+ virtual bool setSerialNumber(int serialNumber);
+ /**
+ * @fn setRawFrameRate
+ * @brief set stereo camera FPS (Frames Per Seconds)
+ * @details for 1856X800 FPS:30, for 928x400 FPS:30 or 60
+ * @param[in] frameRate
+ * @param[out] None
+ * @return true or false, if assignment successfully return true, otherwise return false
+ * @note
+ * @code
+ * cam.setRawFrameRate(30)
+ * @endcode
+ */
+ virtual bool setRawFrameRate(int frameRate);
+ /**
+ * @fn setRawFrameSize
+ * @brief set stereo camera frame size
+ * @details There are two choise: 1856X800,928x400.
+ * @param[in] frameSize
+ * @param[out] None
+ * @return true or false, if assignment successfully return true, otherwise return false
+ * @attention if do not assign frameSize, default size is 1856x800
+ * @note
+ * @code
+ * cam.setRawFrameSize(cv::Size(1856, 800));
+ * @endcode
+ */
+ virtual bool setRawFrameSize(cv::Size frameSize);
+ /**
+ * @fn setRectFrameSize
+ * @brief set rectification image size
+ * @details this size should keep ratio as camera raw image size, for example: raw single frame size: 928x800
+ * rectification image size: 464x400 or 232x200
+ * @param[in] frameSize
+ * @param[out] None
+ * @return true or false, if assignment successfully return true, otherwise return false
+ * @attention rectification image size must be smaller than camera raw single image size
+ * @note
+ * @code
+ * cam.setRawFrameSize(cv::Size(464, 400));
+ * @endcode
+ */
+ virtual bool setRectFrameSize(cv::Size frameSize);
+ /**
+ * @fn setCalibParams
+ * @brief set stereo camera calibration parameters
+ * @details calibration paramerters include: camera intrinsic matrix,
+ * camera distortion coefficient, xi(mei model), rotation matrix, translation vector, rectification image intrinsic matrix
+ * @param[in] paramsArray arrange Array element as follows: intrinsic,distortion,xi,rotation,translation,kfe
+ * @param[in] flag false: set left camera params, true: right camera params
+ * @param[out] None
+ * @return true or false, if assignment successfully return true, otherwise return false
+ * @attention the order of parameters should be correct
+ * @note
+ * @code
+ * std::vector leftParamsArray;
+ * cam.setCalibParams(leftParamsArray);
+ * @endcode
+ */
+ virtual bool setCalibParams(std::vector paramsArray, bool flag = false);
+ /**
+ * @fn getLogLevel
+ * @brief get log system output level
+ * @details
+ * @param[in] None
+ * @param[out] None
+ * @return log level
+ * @note 1: output runtime information, 2: output runtime infomation and debug information
+ * @code
+ * int LogLevel = cam.getLogLevel();
+ * @endcode
+ */
+ virtual int getLogLevel(void) const;
+ /**
+ * @fn getDeviceNode
+ * @brief get camera device node
+ * @details
+ * @param[in] None
+ * @param[out] None
+ * @return device node number
+ * @note for example: /dev/video2, device node number is 2, the return value of function is 2.
+ * @code
+ * int nodeNumber = cam.getDeviceNode();
+ * @endcode
+ */
+ virtual int getDeviceNode(void) const;
+ /**
+ * @fn getPosNumber
+ * @brief get stereo camera device node
+ * @details
+ * @param[in] None
+ * @param[out] None
+ * @return positon number
+ * @note face NO.1, chin NO.2, left NO.3, right NO.4, down NO.5
+ * @code
+ * int posNum = cam.getPosNumber();
+ * @endcode
+ */
+ virtual int getPosNumber(void) const;
+ /**
+ * @fn getSerialNumber
+ * @brief get stereo camera serial number
+ * @details this number is same as robot serial number
+ * @param[in] None
+ * @param[out] None
+ * @return robot serial number
+ * @note
+ * @code
+ * int seiralNumber = cam.getSerialNumber();
+ * @endcode
+ */
+ virtual int getSerialNumber(void) const;
+ /**
+ * @fn getRawFrameRate
+ * @brief get stereo camera capture frame rate
+ * @details
+ * @param[in] None
+ * @param[out] None
+ * @return current stereo camera fps.
+ * @code
+ * float fps = getRawFrameRate();
+ * @endcode
+ */
+ virtual float getRawFrameRate(void) const;
+ /**
+ * @fn getRawFrameSize
+ * @brief get stereo camera frame size
+ * @details
+ * @param[in] None
+ * @param[out] None
+ * @return frame size.
+ * @code
+ * cv::Size fSize = cam.getRawFrameSize();
+ * @endcode
+ */
+ virtual cv::Size getRawFrameSize(void) const;
+ /**
+ * @fn getRawFrame
+ * @brief get stereo camera raw frame
+ * @details
+ * @param[in] None
+ * @param[out] frame raw frame, include left and right image
+ * @param[out] timeStamp raw frame time stamp
+ * @return true or false, if frame is not empty, return true, otherwise return false.
+ * @note
+ * @code
+ * cv::Mat frame;
+ * std::chrono::microseconds timeStamp
+ * cam.getRawFrame(frame, timeStamp);
+ * @endcode
+ */
+ virtual bool getRawFrame(cv::Mat &frame, std::chrono::microseconds &timeStamp);
+ /**
+ * @fn getStereoFrame
+ * @brief get stereo camera left and right image
+ * @details
+ * @param[in] None
+ * @param[out] left left image
+ * @param[out] right right image
+ * @param[out] timeStamp frame time stamp
+ * @return true or false, if left and right images are not empty, return true, otherwise return false.
+ * @attention This funtion must be called after startCapture().
+ * @note
+ * @code
+ * cam.startCapture();
+ * cv::Mat left, right;
+ * std::chrono::microseconds timeStamp;
+ * if(cam.getRawFrame(left,right, timeStamp)){
+ * //do something
+ * }
+ * @endcode
+ */
+ virtual bool getStereoFrame(cv::Mat &left, cv::Mat &right, std::chrono::microseconds &timeStamp);
+ /**
+ * @fn getDepthFrame
+ * @brief get stereo camera depth image
+ * @details
+ * @param[in] color true: depth is color image, false:depth is gray image
+ * @param[out] depth left image
+ * @param[out] timeStamp frame time stamp
+ * @return true or false, if depth image is not empty, return true, otherwise return false.
+ * @attention This funtion must be called after startCapture().
+ * @note
+ * @code
+ * cam.startCapture();
+ * cam.startStereoCompute();
+ * cv::Mat depth;
+ * std::chrono::microseconds timeStamp;
+ * if(cam.getPointCloud(depth, true, timeStamp)){
+ * //do something
+ * }
+ * @endcode
+ */
+ virtual bool getDepthFrame(cv::Mat& depth, bool color, std::chrono::microseconds &timeStamp);
+ /**
+ * @fn getPointCloud
+ * @brief get a stereo camera point cloud frame
+ * @details A point cloud is a dataset of points in a coordinate frame.
+ * @param[in] None
+ * @param[out] pcl point cloud, which element has 3D coordinates information (x, y, z)
+ * @param[out] timeStamp poind cloud time stamp
+ * @return true or false, if point cloud size bigger than 0, return true, otherwise return false.
+ * @attention This funtion must be called after startCapture() and startStereoCompute()
+ * @note
+ * @code
+ * cam.startCapture();
+ * cam.startStereoCompute();
+ * std::vector pcl;
+ * std::chrono::microseconds timeStamp;
+ * if(cam.getPointCloud(pcl, timeStamp)){
+ * //do something
+ * }
+ * @endcode
+ */
+
+
+ virtual void getDepthFrame(cv::Mat& dispf, cv::Mat& depth);
+
+ virtual bool getPointCloud(std::vector &pcl, std::chrono::microseconds &timeStamp);
+ /**
+ * @overload
+ * @fn getPointCloud
+ * @brief get a stereo camera point cloud frame
+ * @details A point cloud is a dataset of points in a coordinate frame.
+ * @param[in] None
+ * @param[out] pcl point cloud, which element has 3D coordinates information (x, y, z) and color information (B, G, R)
+ * @param[out] timeStamp poind cloud time stamp
+ * @return true or false, if point cloud size bigger than 0, return true, otherwise return false.
+ * @attention This funtion must be called after startCapture() and startStereoCompute()
+ * @note
+ * @code
+ * cam.startCapture();
+ * cam.startStereoCompute();
+ * std::vector pcl;
+ * std::chrono::microseconds timeStamp;
+ * if(cam.getPointCloud(pcl, timeStamp)){
+ * //do something
+ * }
+ * @endcode
+ */
+ virtual bool getPointCloud(std::vector& pcl, std::chrono::microseconds& timeStamp);
+ /**
+ * @fn getCalibParams
+ * @brief get stereo camera calibration paramerters
+ * @details calibration paramerters include: camera intrinsic matrix,
+ * camera distortion coefficient, xi(mei model), rotation matrix, translation vector, rectification image intrinsic matrix
+ * @param[in] flag default false, false: get left camera parameters, true: get right camera parameters.
+ * @param[out] paramsArray arrange Array element as follows: intrinsic,distortion,xi,rotation,translation,kfe
+ * @return true or false, if assignment successfully return true, otherwise return false
+ * @attention This funtion must be called after startCapture()
+ * @note
+ * @code
+ * cam.startCapture();
+ * std::vector paramsArray;
+ * if(cam.getCalibParams(paramsArray)){
+ * //do something
+ * }
+ * @endcode
+ */
+ virtual bool getCalibParams(std::vector ¶msArray, bool flag = false);
+ /**
+ * @fn getRectStereoFrame
+ * @brief get stereo camera rectification image
+ * @details
+ * @param[in] None
+ * @param[out] left rect left image, use LONGLAT
+ * @param[out] right rect right image, use LONGLAT
+ * @param[out] feim rect left image, use PERSPECTIVE
+ * @return true or false, if left, right and feim are not empty return true, otherwise return false
+ * @attention This funtion must be called after startCapture()
+ * @note
+ * @code
+ * cam.startCapture();
+ * left, right, feim;
+ * if(cam.getRectStereoFrame(left, right, feim)){
+ * //do something
+ * }
+ * @endcode
+ */
+ virtual bool getRectStereoFrame(cv::Mat &left, cv::Mat &right, cv::Mat &feim);
+ /**
+ * @fn getRectStereoFrame
+ * @brief get stereo camera rectification image
+ * @details
+ * @param[in] None
+ * @param[out] left rect left image, use PERSPECTIVE
+ * @param[out] right rect right image, use PERSPECTIVE
+ * @return true or false, if left, right are not empty return true, otherwise return false
+ * @attention This funtion must be called after startCapture()
+ * @note
+ * @code
+ * cam.startCapture();
+ * left, right;
+ * if(cam.getRectStereoFrame(left, right)){
+ * //do something
+ * }
+ * @endcode
+ */
+ virtual bool getRectStereoFrame(cv::Mat &left, cv::Mat &right);
+ /**
+ * @overload
+ * @fn getRectStereoFrame
+ * @brief get stereo camera rectification image
+ * @details
+ * @param[in] None
+ * @param[out] left rect left image, use LONGLAT
+ * @param[out] right rect right image, use LONGLAT
+ * @param[out] feim rect left image, use PERSPECTIVE
+ * @param[out] timeStamp images timeStamp
+ * @return true or false, if left, right and feim are not empty return true, otherwise return false
+ * @attention This funtion must be called after startCapture()
+ * @note
+ * @code
+ * cam.startCapture();
+ * cv::Mat left, right, feim;
+ * if(cam.getRectStereoFrame(left, right, feim)){
+ * //do something
+ * }
+ * @endcode
+ */
+ virtual bool getRectStereoFrame(cv::Mat &left, cv::Mat &right, cv::Mat &feim, std::chrono::microseconds &timeStamp);
+ /**
+ * @fn loadConfig
+ * @brief load stereo camera config parameters
+ * @details parameters include: LogLevel,Threshold,Algorithm,IpLastSegment,
+ * DeviceNode,FrameSize,RectifyFrameSize,FrameRate, etc.
+ * @param[in] fileName config name: include config path, for example: "path_to/config.yaml"
+ * @param[out] None
+ * @return true or false, if load config file successfully return true, otherwise return false
+ * @attention This funtion must be called before startCapture() and after init the camera object.
+ * @note
+ * @code
+ * cam.loadConfig("path_to/config.yaml");
+ * cam.startCapture();
+ * @endcode
+ */
+ virtual bool loadConfig(std::string fileName);
+ /**
+ * @fn loadCalibParams
+ * @brief load stereo camera calibration params
+ * @details calibration paramerters include: camera intrinsic matrix,
+ * camera distortion coefficient, xi(mei model), rotation matrix, translation vector, rectification image intrinsic matrix, etc.
+ * @param[in] fileName calibration file name: include file path, for example: "path_to/calib.yaml"
+ * @param[out] None
+ * @return true or false, if load file successfully return true, otherwise return false
+ * @attention This funtion must be called before startCapture() and after loadConfig("xxx");
+ * @note
+ * @code
+ * cam.loadConfig("path_to/config.yaml");
+ * cam.loadCalibParams("path_to/calib.yaml");
+ * cam.startCapture();
+ * @endcode
+ */
+ virtual bool loadCalibParams(std::string fileName);
+ /**
+ * @fn saveConfig
+ * @brief save stereo camera settings to config file
+ * @details
+ * @param[in] fileName default name: stereo_camera_config.yaml,
+ * output config file: include file path, for example: "path_to/config.yaml"
+ * @param[out] None
+ * @return true or false, if save file successfully return true, otherwise return false
+ * @code
+ * cam.saveConfig("stereo_camera_config.yaml");
+ * @endcode
+ */
+ virtual bool saveConfig(std::string fileName = "stereo_camera_config.yaml");
+ /**
+ * @fn saveCalibParams
+ * @brief save stereo camera calibration parameters to file
+ * @details
+ * @param[in] fileName default name: stereo_camera_calibparams.yaml,
+ * output file: include file path, for example: "path_to/calib.yaml"
+ * @param[out] None
+ * @return true or false, if save file successfully return true, otherwise return false
+ * @code
+ * cam.saveConfig("stereo_camera_config.yaml");
+ * @endcode
+ */
+ virtual bool saveCalibParams(std::string fileName = "stereo_camera_calibparams.yaml");
+ /**
+ * @fn startCapture
+ * @brief start stereo camera capture thread
+ * @details
+ * @param[in] udpFlag default false, true: enable using H264 encode camera frame and send it by gstream udp command
+ * @param[in] shmFlag default false, true: enable using share memory to share camera frame
+ * @param[out] None
+ * @return true or false, if create capture thread successfully return true, otherwise return false
+ * @note
+ * gstreamer send command: "appsrc ! videoconvert ! omxh264enc ! video/x-h264, stream-format=byte-stream ! rtph264pay ! udpsink host=192.168.123.SEG port=hostPort".
+ * SEG is last segment of your recieve board IP, its range from 2~254,for example: 13, host=192.168.123.13.
+ * hostPort is defined by the result of adding camera position number and 9000, for example: camera positon number is 5, port=9005.
+ * share memory key number is defined by the result of adding camera position number and 9000.
+ * This function must be called after camera config or settings finished.
+ * @code
+ * cam.startCapture(true, false); // support h264 encode frame and send it by udp
+ * @endcode
+ */
+ virtual bool startCapture(bool udpFlag = false, bool shmFlag = false);
+ /**
+ * @fn startStereoCompute
+ * @brief start stereo camera computing disparity thread
+ * @details
+ * @param[in] None
+ * @param[out] None
+ * @return true or false, if create thread successfully return true, otherwise return false
+ * @attention This function must be called after startCapture();
+ * @note
+ * @code
+ * cam.startCapture();
+ * cam.startStereoCompute();
+ * @endcode
+ */
+ virtual bool startStereoCompute(void);
+ /**
+ * @fn stopStereoCompute
+ * @brief stop stereo camera computing disparity thread
+ * @details
+ * @param[in] None
+ * @param[out] None
+ * @return true or false, if stop thread successfully return true, otherwise return false
+ * @attention This function must be called after startStereoCompute()
+ * @note
+ * @code
+ * cam.startStereoCompute();
+ * cam.stopStereoCompute();
+ * @endcode
+ */
+ virtual bool stopStereoCompute(void);
+ /**
+ * @fn stopCapture
+ * @brief stop stereo camera capture thread
+ * @details
+ * @param[in] None
+ * @param[out] None
+ * @return true or false, if stop thread successfully return true, otherwise return false
+ * @attention This function must be called after startCapture().
+ * @note
+ * @code
+ * cam.startCapture();
+ * cam.startStereoCompute();
+ * cam.stopStereoCompute();
+ * cam.stopCapture();
+ * @endcode
+ */
+ virtual bool stopCapture(void);
+
+
+
+};
+
+
+
+
+#endif //__STEREO_CAMERA_COMMOM_HPP__
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/include/SystemLog.hpp b/src/Robot/go1_guide/nano/UnitreecameraSDK/include/SystemLog.hpp
new file mode 100644
index 0000000..3d3492e
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/include/SystemLog.hpp
@@ -0,0 +1,168 @@
+/**
+ * @file SystemLog.hpp
+ * @brief This file is part of UnitreeCameraSDK, which declare the APIs of log system.
+ * @details The log system is used for unified management of the output information of the special system.
+ * @author ZhangChunyang
+ * @date 2021.07.31
+ * @version 1.0.1
+ * @copyright Copyright (c)2020-2021, Hangzhou Yushu Technology Stock CO.LTD. All Rights Reserved.
+ */
+
+#ifndef __SYSTEMLOG_HPP__
+#define __SYSTEMLOG_HPP__
+
+#include
+#include
+#include
+
+class SystemLog
+{
+private:
+ int m_logLevel;
+ bool m_isSave;
+ std::string m_logName;
+ std::string m_logFileName;
+
+public:
+ /**
+ * @fn SystemLog
+ * @brief SystemLog constructor
+ * @details
+ * @param[in] logName the name of special system
+ * @param[out] None
+ * @return None
+ * @note
+ * @attention output information starts with "logName"
+ * @code
+ * @endcode
+ */
+ SystemLog(std::string logName);
+
+public:
+ /**
+ * @fn setLogLevel
+ * @brief set system ouput log level
+ * @details log level means that different kind of information will be output
+ * @param[in] level 1 running information output, 2 running and debug infomation output
+ * @param[out] None
+ * @return None
+ * @note
+ * @attention
+ * @code
+ * @endcode
+ */
+ void setLogLevel(int level);
+ /**
+ * @fn runTimeError
+ * @brief output running error infomation, color: red
+ * @details output format [logName][ERROR] info
+ * @param[in] format
+ * @param[in] ...
+ * @param[out] None
+ * @return None
+ * @note
+ * @attention use it like printf()
+ * @code
+ * @endcode
+ */
+ void runTimeError(const char *format,...);
+ /**
+ * @fn runTimeInfo
+ * @brief output running infomation, color: green
+ * @details output format [logName][INFO] info
+ * @param[in] format
+ * @param[in] ...
+ * @param[out] None
+ * @return None
+ * @note
+ * @attention use it like printf()
+ * @code
+ * @endcode
+ */
+ void runTimeInfo(const char *format,...);
+ /**
+ * @fn runTimeWarning
+ * @brief output running warning infomation, color: yellow
+ * @details output format [logName][WARNING] info
+ * @param[in] format
+ * @param[in] ...
+ * @param[out] None
+ * @return None
+ * @note
+ * @attention use it like printf()
+ * @code
+ * @endcode
+ */
+ void runTimeWarning(const char *format,...);
+ /**
+ * @fn debugTimeWarning
+ * @brief output debug warning infomation, color: cyan
+ * @details output format [logName][DEBUG_WARNING] info
+ * @param[in] format
+ * @param[in] ...
+ * @param[out] None
+ * @return None
+ * @note
+ * @attention use it like printf()
+ * @code
+ * @endcode
+ */
+ void debugTimeWarning(const char *format,...);
+ /**
+ * @fn debugTimeInfo
+ * @brief output debug infomation, color: white
+ * @details output format [logName][DEBUG_INFO] info
+ * @param[in] format
+ * @param[in] ...
+ * @param[out] None
+ * @return None
+ * @note
+ * @attention use it like printf()
+ * @code
+ * @endcode
+ */
+ void debugTimeInfo(const char *format,...);
+ /**
+ * @fn debugTimeError
+ * @brief output debug error infomation, color: magenta
+ * @details output format [logName][DEBUG_ERROR] info
+ * @param[in] format
+ * @param[in] ...
+ * @param[out] None
+ * @return None
+ * @note
+ * @attention use it like printf()
+ * @code
+ * @endcode
+ */
+ void debugTimeError(const char *format,...);
+ /**
+ * @fn saveLog
+ * @brief save system log to a file, default file name: Running.txt
+ * @details
+ * @param[in] none
+ * @param[out] None
+ * @return None
+ * @note
+ * @attention not implement at this version
+ * @code
+ * @endcode
+ */
+ void saveLog(void);
+ /**
+ * @fn saveLogToFile
+ * @brief save system log to a designated file
+ * @details
+ * @param[in] fileName
+ * @param[out] None
+ * @return None
+ * @note
+ * @attention not implement at this version
+ * @code
+ * @endcode
+ */
+ void saveLogToFile(std::string fileName) ;
+};
+
+
+#endif //__SYSTEMLOG_HPP__
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/include/UnitreeCameraSDK.hpp b/src/Robot/go1_guide/nano/UnitreecameraSDK/include/UnitreeCameraSDK.hpp
new file mode 100644
index 0000000..0d53fc7
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/include/UnitreeCameraSDK.hpp
@@ -0,0 +1,158 @@
+
+/**
+ * @file UnitreeCameraSDK.hpp
+ * @brief This file is part of UnitreeCameraSDK, which declare unitree camera APIs.
+ * @details class UnitreeCamera inherits the APIs of class StereoCamera
+ * image capture, image rectification, disparity computation, depth image and point cloud generation
+ * update camera firmware, flash camera parameters to camera
+ * @author ZhangChunyang
+ * @date 2021.07.31
+ * @version 1.0.1
+ * @copyright Copyright (c) 2020-2021, Hangzhou Yushu Technology Stock CO.LTD. All Rights Reserved.
+ */
+
+#ifndef __UNITREE_CAMERA_SDK_HPP__
+#define __UNITREE_CAMERA_SDK_HPP__
+
+#include "StereoCameraCommon.hpp"
+
+class UnitreeCamera : public StereoCamera
+{
+private:
+ std::string m_logName = "UnitreeCameraSDK";
+ SystemLog *m_log = nullptr;
+
+public:
+ /**
+ * @fn UnitreeCamera
+ * @brief UnitreeCamera init unitree stereo camera object for default parameters
+ * @details default constructor
+ * @param[in] None
+ * @param[out] None
+ * @return None
+ * @note
+ * @code
+ * UnitreeCamera();
+ * @endcode
+ */
+ UnitreeCamera();
+ /**
+ * @overload
+ * @fn UnitreeCamera
+ * @brief UnitreeCamera constructor overload
+ * @details use camera config file to init unitree stereo camera
+ * @param[in] fileName camera config file, include file path, for example: ~/test/stereoConfig.yaml
+ * @param[out] None
+ * @return None
+ * @note
+ * @code
+ * UnitreeCamera("path_to/config.yaml");
+ * @endcode
+ */
+ UnitreeCamera(std::string fileName);
+ /**
+ * @overload
+ * @fn UnitreeCamera
+ * @brief UnitreeCamera constructor overload
+ * @details use camera device node number to init unitree stereo camera
+ * @param[in] deviceNode camera device node, for example: /dev/video0, camera device node: 0
+ * @param[out] None
+ * @return None
+ * @note
+ * @code
+ * StereoCamera(0); // for /dev/video0
+ * @endcode
+ */
+ UnitreeCamera(int deviceNode);
+ /**
+ * @fn ~UnitreeCamera
+ * @brief UnitreeCamera destructor
+ * @details release all unitree stereo camera resource
+ * @param[in] None
+ * @param[out] None
+ * @return None
+ * @note automatically called when UnitreeCamera object released
+ */
+ ~UnitreeCamera(void);
+
+public:
+ /**
+ * @fn updateCalibParams2Flash
+ * @brief update camera calibrate parameters
+ * @details
+ * @param[in] fileName calibration parameters file
+ * @param[out] None
+ * @return None
+ * @note
+ * @code
+ * @endcode
+ */
+ bool updateCalibParams2Flash(std::string fileName);
+ /**
+ * @fn checkFirmwareVersion
+ * @brief check camera's firmware version
+ * @details
+ * @param[in] version firmware version
+ * @param[out] None
+ * @return None
+ * @note
+ * @code
+ * @endcode
+ */
+ bool checkFirmwareVersion(std::string &version);
+ /**
+ * @fn updateFirmware
+ * @brief update camera's firmware
+ * @details
+ * @param[in] fileName firmware file
+ * @param[out] None
+ * @return None
+ * @note
+ * @code
+ * @endcode
+ */
+ bool updateFirmware(std::string fileName);
+
+private:
+ /**
+ * @fn loadInternalCalibParams
+ * @brief
+ * @details
+ * @param[in] None
+ * @param[out] None
+ * @return None
+ * @note
+ * @code
+ * @endcode
+ */
+ bool loadInternalCalibParams(void);
+};
+
+/**
+ * @fn getRotationMatrix
+ * @brief Obtain transformation matrix that can express the rotation of an Euler angle of the coordinate system around a coordinate axis
+ * @details
+ * @param[in] axis frame axis name, default 'x'
+ * @param[in] theta Euler angle
+ * @param[out] None
+ * @return 3x3 rotation matrix
+ * @note
+ * @code
+ * @endcode
+ */
+cv::Mat getRotationMatrix(int axis = 'x', float theta = 0.0);
+/**
+ * @fn getTranslationMatrix
+ * @brief transformation matrix that can express the moving coordinate system relative to the base coordinate system
+ * @details
+ * @param[in] axis frame axis name, default 'x'
+ * @param[in] theta Euler angle
+ * @param[out] None
+ * @return 3x3 rotation matrix
+ * @note
+ * @code
+ * @endcode
+ */
+cv::Mat getTranslationMatrix(int axis = 'x', float theta = 0.0, cv::Mat vec = cv::Mat());
+
+#endif
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/lib/amd64/libsystemlog.a b/src/Robot/go1_guide/nano/UnitreecameraSDK/lib/amd64/libsystemlog.a
new file mode 100644
index 0000000..dce42af
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/lib/amd64/libsystemlog.a differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/lib/amd64/libtstc_V4L2_xu_camera.a b/src/Robot/go1_guide/nano/UnitreecameraSDK/lib/amd64/libtstc_V4L2_xu_camera.a
new file mode 100644
index 0000000..5318d4d
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/lib/amd64/libtstc_V4L2_xu_camera.a differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/lib/amd64/libunitree_camera.a b/src/Robot/go1_guide/nano/UnitreecameraSDK/lib/amd64/libunitree_camera.a
new file mode 100644
index 0000000..db869fb
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/lib/amd64/libunitree_camera.a differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/lib/arm64/libsystemlog.a b/src/Robot/go1_guide/nano/UnitreecameraSDK/lib/arm64/libsystemlog.a
new file mode 100644
index 0000000..43b6858
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/lib/arm64/libsystemlog.a differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/lib/arm64/libtstc_V4L2_xu_camera.a b/src/Robot/go1_guide/nano/UnitreecameraSDK/lib/arm64/libtstc_V4L2_xu_camera.a
new file mode 100644
index 0000000..49dcc74
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/lib/arm64/libtstc_V4L2_xu_camera.a differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/lib/arm64/libunitree_camera.a b/src/Robot/go1_guide/nano/UnitreecameraSDK/lib/arm64/libunitree_camera.a
new file mode 100644
index 0000000..2eb5c19
Binary files /dev/null and b/src/Robot/go1_guide/nano/UnitreecameraSDK/lib/arm64/libunitree_camera.a differ
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/src/CMakeLists.txt b/src/Robot/go1_guide/nano/UnitreecameraSDK/src/CMakeLists.txt
new file mode 100644
index 0000000..0e54c8a
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/src/CMakeLists.txt
@@ -0,0 +1,40 @@
+
+add_executable(putimagetrans ./putimagetrans.cc)
+target_link_libraries(putimagetrans ${SDKLIBS})
+
+add_executable(getimagetrans ./getimagetrans.cc)
+target_link_libraries(getimagetrans ${SDKLIBS})
+
+
+find_package(OpenGL REQUIRED)
+if(OpenGL_FOUND)
+ include_directories(${OPENGL_INCLUDE_DIR})
+ message(STATUS ${OPENGL_INCLUDE_DIR})
+ message(STATUS ${OPENGL_LIBRARIES})
+else()
+ message(WARNING "OpenGL Library Not Found")
+endif()
+
+find_package(GLUT REQUIRED)
+if(GLUT_FOUND)
+ include_directories(${GLUT_INCLUDE_DIR})
+ message(STATUS ${GLUT_INCLUDE_DIR})
+ message(STATUS ${GLUT_LIBRARY})
+else()
+ message(WARNING "GLUT Library Not Found")
+endif()
+
+find_package(X11 REQUIRED)
+if(X11_FOUND)
+ include_directories(${X11_INCLUDE_DIR})
+ message(${X11_INCLUDE_DIR})
+ message(${X11_LIBRARIES})
+else()
+ message(WARNING "X11 Library Not Found")
+endif()
+
+
+
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread")
+
+
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/src/getimagetrans.cc b/src/Robot/go1_guide/nano/UnitreecameraSDK/src/getimagetrans.cc
new file mode 100644
index 0000000..9270f40
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/src/getimagetrans.cc
@@ -0,0 +1,47 @@
+/**
+ * @file example_getRectFrame.cc
+ * @brief This file is part of UnitreeCameraSDK.
+ * @details This example that how to Transmission picture
+ * @author SunMingzhe
+ * @date 2021.12.07
+ * @version 1.1.0
+ * @copyright Copyright (c) 2020-2021, Hangzhou Yushu Technology Stock CO.LTD. All Rights Reserved.
+ */
+
+/*
+接收端:
+方法概述:采用定向udp方法接收图片,在应用其之前,需要先发送图片,例子:example_putImagetrans.cc
+端口9201~9205分别对应前方,下巴,左,右,腹部
+本机ip需要是192.168.123.IpLastSegment,IpLastSegment被设置在发送端cofigure yaml-
+*/
+
+
+#include
+#include
+int main(int argc,char** argv)
+{
+ std::string IpLastSegment = "15";
+ int cam = 1;
+ if (argc>=2)
+ cam = std::atoi(argv[1]);
+ std::string udpstrPrevData = "udpsrc address=192.168.123."+ IpLastSegment + " port=";
+ //端口:前方,下巴,左,右,腹部
+ std::array udpPORT = std::array{9201, 9202, 9203, 9204, 9205};
+ std::string udpstrBehindData = " ! application/x-rtp,media=video,encoding-name=H264 ! rtph264depay ! h264parse ! omxh264dec ! videoconvert ! appsink";
+ std::string udpSendIntegratedPipe = udpstrPrevData + std::to_string(udpPORT[cam-1]) + udpstrBehindData;
+ std::cout<<"udpSendIntegratedPipe:"<> frame;
+ if(frame.empty())
+ break;
+ imshow("video", frame);
+ cv::waitKey(20);
+ }
+ cap.release();//释放资源
+ return 0;
+}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/src/putimagetrans.cc b/src/Robot/go1_guide/nano/UnitreecameraSDK/src/putimagetrans.cc
new file mode 100644
index 0000000..9257ac4
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/src/putimagetrans.cc
@@ -0,0 +1,108 @@
+/**
+ * @file example_getRectFrame.cc
+ * @brief This file is part of UnitreeCameraSDK.
+ * @details This example that how to Transmission picture
+ * @author SunMingzhe
+ * @date 2021.12.07
+ * @version 1.1.0
+ * @copyright Copyright (c) 2020-2021, Hangzhou Yushu Technology Stock CO.LTD. All Rights Reserved.
+ */
+
+
+/*
+发送端:
+方法概述:采用udp方法输出图片,传输方式已写入程序,由StereoCameraCommon::startCapture(true,false)中第一个参数控制定向udp传输,当其为true时打开udp264硬编码传输模式
+参数:配置文件中IpLastSegment是接收端ip,接收端地址必须是192.168.123.IpLastSegment。
+ 配置文件中Transmode决定传输模式
+ 配置文件中Transrate决定传输速率,限制了传输速率小于图片速率
+ 端口9201~9205分别对应前方,下巴,左,右,腹部
+ 启动自定义图传时需使用kill.sh文件关闭Unitree/autostart/02camerarosnode程序来解除相机占用,Unitree/autostart/04imageai来释放算力。
+ (也可使用以下几条指令
+ ps -A | grep point | awk '{print $1}' | xargs kill -9
+ ps -aux|grep mqttControlNode|grep -v grep|head -n 1|awk '{print $2}'|xargs kill -9
+ ps -aux|grep live_human_pose|grep -v grep|head -n 1|awk '{print $2}'|xargs kill -9
+ )
+传输图片模式:由配置文件中Transmode决定,该值只可通过读取配置文件方式写入
+0:传输左目原始图片
+1:传输双目原始图片
+2:传输左目畸变校正后图片,视野范围角度可调60~140
+3:传输双目畸变校正后图片
+※※※注意,双目图的最后的左右目输出位置是反的。左目->右图,右目->左图
+4:不建议使用!!,Depthmode = 2时 可输出深度图和对应左目图片,不建议使用。
+*/
+
+
+#include
+#include
+
+int main(int argc, char *argv[])
+{
+ int cam_num = 1;
+ if (argc>=2)
+ cam_num = std::atoi(argv[1]);
+
+ // int cam_num = 1; // 1,2 the number of cameras used
+ // nano_id dev_id port_id 位置
+ // 13 0 9202 下巴
+ // 13 1 9201 前方
+ // 14 0 9203 左方
+ // 14 1 9204 右方
+ // 15 0 9205 腹部(默认)
+ int cam_id = 0; // the id of the camera used if cam_num is 1
+ if (cam_num == 1){
+ UnitreeCamera cam("trans_rect_config_"+ std::to_string(cam_id) +".yaml"); ///< init camera by device node number
+ if(!cam.isOpened()) ///< get camera open state
+ exit(EXIT_FAILURE);
+ cam.startCapture(true,false); ///< disable share memory sharing and able image h264 encoding
+
+ usleep(500000);
+ while(cam.isOpened())
+ {
+ cv::Mat left,right,feim;
+ if(!cam.getRectStereoFrame(left,right))
+ {
+
+ usleep(1000);
+ continue;
+ }
+ char key = cv::waitKey(1);
+ if(key == 27) // press ESC key
+ break;
+ }
+
+ cam.stopCapture(); ///< stop camera capturing
+ }
+ else {
+ UnitreeCamera cam1("trans_rect_config_0.yaml");
+ UnitreeCamera cam2("trans_rect_config_1.yaml");
+ if(!cam1.isOpened())
+ exit(EXIT_FAILURE);
+ if(!cam2.isOpened())
+ exit(EXIT_FAILURE);
+ cam1.startCapture(true,false);
+ cam2.startCapture(true,false);
+
+ usleep(500000);
+ while(cam1.isOpened())
+ {
+ cv::Mat left1,right1,feim1,left2,right2,feim2;
+ if(!cam1.getRectStereoFrame(left1,right1))
+ {
+ usleep(500);
+ continue;
+ }
+ if(!cam2.getRectStereoFrame(left2,right2))
+ {
+ usleep(500);
+ continue;
+ }
+ char key = cv::waitKey(1);
+ if(key == 27) // press ESC key
+ break;
+ }
+
+
+ }
+
+ return 0;
+}
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/stereo_camera_config.yaml b/src/Robot/go1_guide/nano/UnitreecameraSDK/stereo_camera_config.yaml
new file mode 100644
index 0000000..b5c70d7
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/stereo_camera_config.yaml
@@ -0,0 +1,78 @@
+%YAML:1.0
+---
+# unimportant
+LogLevel: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 1. ]
+# unimportant
+Threshold: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 190. ]
+# unimportant. It is recommended not to change
+Algorithm: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [1. ]
+#UDP address for image transfer 192.168.123.IpLastSegment
+IpLastSegment: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 15. ]
+#DeviceNode
+DeviceNode: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 0. ]
+#fov (perspective 60~140)
+hFov: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 90. ]
+#image size ([1856.,800.] or [928.,400.])
+FrameSize: !!opencv-matrix
+ rows: 1
+ cols: 2
+ dt: d
+ data: [928.,400.]
+# [232.,200.] [464.,400.] [928.,800.]
+RectifyFrameSize: !!opencv-matrix
+ rows: 1
+ cols: 2
+ dt: d
+ data: [464.,400.]
+#FrameRate
+FrameRate: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 3e+01 ]
+#0 ori img - right 1 ori img - stereo 2 rect img - right 3 rect img - stereo -1 不传图
+Transmode: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ -1. ]
+#Transmission rate
+Transrate: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 3e+01 ]
+# unimportant
+Depthmode: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 1. ]
+Reserved: !!opencv-matrix
+ rows: 3
+ cols: 3
+ dt: d
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/trans_rect_config.yaml b/src/Robot/go1_guide/nano/UnitreecameraSDK/trans_rect_config.yaml
new file mode 100644
index 0000000..db182b8
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/trans_rect_config.yaml
@@ -0,0 +1,79 @@
+%YAML:1.0
+---
+# [pls dont change] The log level
+LogLevel: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 1. ]
+# [pls dont change] The threshold is applied to detecd point cloud
+Threshold: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 190. ]
+#[pls dont change] it's a switch for a algorithm in the process of computing stereo disparity
+Algorithm: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [1. ]
+#UDP address for image transfer 192.168.123.IpLastSegment
+IpLastSegment: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 15. ]
+#DeviceNode
+DeviceNode: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 0. ]
+#fov (perspective 60~140)
+hFov: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 90. ]
+#image size ([1856,800] or [928,400])
+FrameSize: !!opencv-matrix
+ rows: 1
+ cols: 2
+ dt: d
+ data: [ 1856., 800. ]
+#rectified frame size
+RectifyFrameSize: !!opencv-matrix
+ rows: 1
+ cols: 2
+ dt: d
+ data: [ 928., 800. ]
+#FrameRate, it gives the limitation for transmission rate(FPS)
+FrameRate: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 3e+01 ]
+#0 ori img - right 1 ori img - stereo 2 rect img - right 3 rect img - stereo -1 不传图
+Transmode: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 0. ]
+#Transmission rate(FPS) in the UDP transmitting process. <= FrameRate
+Transrate: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 3e+01 ]
+# [pls dont change] It's a switch in distortion process of fisheye camera. 1 represents “Longitude and latitude expansion of fisheye camera”; 2 represnets "Perspective distortion correction".
+Depthmode: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 1. ]
+ # empty reserved IO
+Reserved: !!opencv-matrix
+ rows: 3
+ cols: 3
+ dt: d
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/trans_rect_config_0.yaml b/src/Robot/go1_guide/nano/UnitreecameraSDK/trans_rect_config_0.yaml
new file mode 100644
index 0000000..e0faf07
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/trans_rect_config_0.yaml
@@ -0,0 +1,78 @@
+%YAML:1.0
+---
+# unimportant
+LogLevel: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 1. ]
+# unimportant
+Threshold: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 190. ]
+# unimportant. It is recommended not to change
+Algorithm: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [1. ]
+#UDP address for image transfer 192.168.123.IpLastSegment
+IpLastSegment: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 15. ]
+#DeviceNode
+DeviceNode: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 0. ]
+#fov (perspective 60~140)
+hFov: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 120. ]
+#image size ([1856,800] or [928,400])
+FrameSize: !!opencv-matrix
+ rows: 1
+ cols: 2
+ dt: d
+ data: [ 928., 400. ]
+#
+RectifyFrameSize: !!opencv-matrix
+ rows: 1
+ cols: 2
+ dt: d
+ data: [ 928., 800. ]
+#FrameRate
+FrameRate: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 3e+01 ]
+#0 ori img - right 1 ori img - stereo 2 rect img - right 3 rect img - stereo -1 不传图
+Transmode: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 2. ]
+#Transmission rate
+Transrate: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 3e+01 ]
+# unimportant
+Depthmode: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 1. ]
+Reserved: !!opencv-matrix
+ rows: 3
+ cols: 3
+ dt: d
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/trans_rect_config_1.yaml b/src/Robot/go1_guide/nano/UnitreecameraSDK/trans_rect_config_1.yaml
new file mode 100644
index 0000000..49641f1
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/trans_rect_config_1.yaml
@@ -0,0 +1,78 @@
+%YAML:1.0
+---
+# unimportant
+LogLevel: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 1. ]
+# unimportant
+Threshold: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 190. ]
+# unimportant. It is recommended not to change
+Algorithm: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [1. ]
+#UDP address for image transfer 192.168.123.IpLastSegment
+IpLastSegment: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 15. ]
+#DeviceNode
+DeviceNode: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 1. ]
+#fov (perspective 60~140)
+hFov: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 90. ]
+#image size ([1856,800] or [928,400])
+FrameSize: !!opencv-matrix
+ rows: 1
+ cols: 2
+ dt: d
+ data: [ 1856., 800. ]
+#
+RectifyFrameSize: !!opencv-matrix
+ rows: 1
+ cols: 2
+ dt: d
+ data: [ 928., 800. ]
+#FrameRate
+FrameRate: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 2e+01 ]
+#0 ori img - right 1 ori img - stereo 2 rect img - right 3 rect img - stereo -1 不传图
+Transmode: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 2. ]
+#Transmission rate
+Transrate: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 2e+01 ]
+# unimportant
+Depthmode: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 1. ]
+Reserved: !!opencv-matrix
+ rows: 3
+ cols: 3
+ dt: d
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/UnitreecameraSDK/version.txt b/src/Robot/go1_guide/nano/UnitreecameraSDK/version.txt
new file mode 100644
index 0000000..992977a
--- /dev/null
+++ b/src/Robot/go1_guide/nano/UnitreecameraSDK/version.txt
@@ -0,0 +1 @@
+v1.1.0
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/kill.sh b/src/Robot/go1_guide/nano/kill.sh
new file mode 100644
index 0000000..4bccc18
--- /dev/null
+++ b/src/Robot/go1_guide/nano/kill.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+ps -aux | grep point_cloud_node | awk '{print $2}' | xargs kill -9
+ps -aux | grep mqttControlNode | awk '{print $2}' | xargs kill -9
+ps -aux | grep live_human_pose | awk '{print $2}' | xargs kill -9
+ps -aux | grep example_point | awk '{print $2}' | xargs kill -9
diff --git a/src/Robot/go1_guide/nano/picture_processing.py b/src/Robot/go1_guide/nano/picture_processing.py
new file mode 100644
index 0000000..0cf7496
--- /dev/null
+++ b/src/Robot/go1_guide/nano/picture_processing.py
@@ -0,0 +1,128 @@
+import cv2
+import numpy as np
+# from capture import USBCamera
+
+# def saveFrame():
+# capture = USBCamera("/dev/video0")
+# frame = capture.getFrame()
+# cv2.imwrite('capture.png', frame)
+
+
+# import numpy as np
+# import glob
+# size = [480,400]
+# def get_K_and_D(checkerboard, imgsPath):
+# CHECKERBOARD = checkerboard
+# subpix_criteria = (cv2.TERM_CRITERIA_EPS+cv2.TERM_CRITERIA_MAX_ITER, 30, 0.1)
+# calibration_flags = cv2.fisheye.CALIB_RECOMPUTE_EXTRINSIC+cv2.fisheye.CALIB_CHECK_COND+cv2.fisheye.CALIB_FIX_SKEW
+# objp = np.zeros((1, CHECKERBOARD[0]*CHECKERBOARD[1], 3), np.float32)
+# objp[0,:,:2] = np.mgrid[0:CHECKERBOARD[0], 0:CHECKERBOARD[1]].T.reshape(-1, 2)
+# _img_shape = None
+# objpoints = []
+# imgpoints = []
+# images = glob.glob(imgsPath + '/*.png')
+# for fname in images:
+# img = cv2.imread(fname)
+# img = cv2.resize(img, size)
+# if _img_shape == None:
+# _img_shape = img.shape[:2]
+# else:
+# assert _img_shape == img.shape[:2], "All images must share the same size."
+
+# gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
+# ret, corners = cv2.findChessboardCorners(gray, CHECKERBOARD,cv2.CALIB_CB_ADAPTIVE_THRESH+cv2.CALIB_CB_FAST_CHECK+cv2.CALIB_CB_NORMALIZE_IMAGE)
+# if ret == True:
+# objpoints.append(objp)
+# cv2.cornerSubPix(gray,corners,(3,3),(-1,-1),subpix_criteria)
+# imgpoints.append(corners)
+# N_OK = len(objpoints)
+# K = np.zeros((3, 3))
+# D = np.zeros((4, 1))
+# rvecs = [np.zeros((1, 1, 3), dtype=np.float64) for i in range(N_OK)]
+# tvecs = [np.zeros((1, 1, 3), dtype=np.float64) for i in range(N_OK)]
+# rms, _, _, _, _ = \
+# cv2.fisheye.calibrate(
+# objpoints,
+# imgpoints,
+# gray.shape[::-1],
+# K,
+# D,
+# rvecs,
+# tvecs,
+# calibration_flags,
+# (cv2.TERM_CRITERIA_EPS+cv2.TERM_CRITERIA_MAX_ITER, 30, 1e-6)
+# )
+# DIM = _img_shape[::-1]
+# print("Found " + str(N_OK) + " valid images for calibration")
+# print("DIM=" + str(_img_shape[::-1]))
+# print("K=np.array(" + str(K.tolist()) + ")")
+# print("D=np.array(" + str(D.tolist()) + ")")
+# return DIM, K, D
+
+
+# def OpenCVFisheyeImageUndistortion(img):
+ # cv::Mat img, undistortImg
+ # cv::Matx33d K, P
+ # cv::Vec4d D
+ # cv::Mat mapX, mapY
+
+ # K(0, 0) = 348.52; K(0, 1) = 0; K(0, 2) = 640.19
+ # K(1, 0) = 0; K(1, 1) = 348.52; K(1, 2) = 358.56
+ # K(2, 0) = 0; K(2, 1) = 0; K(2, 2) = 1
+
+ # D(0) = 0.066258
+ # D(1) = 0.039769
+ # D(2) = -0.026906
+ # D(3) = 0.003342
+
+ # P = K
+ # P(0, 0) /= 1.5
+ # P(1, 1) /= 1.5
+
+ # K = [[348.52, 0, 640.19],
+ # [0, 348.52, 358.56],
+ # [0, 0, 1]]
+ # D = [0.066258, 0.039769, -0.026906, 0.003342]
+ # cv2.initUndistortRectifyMap(K, D, cv::Matx33d::eye(), P, cv::Size(img.cols, img.rows), CV_16SC2, mapX, mapY)
+
+ # cv::remap(img, undistortImg, mapX, mapY, CV_INTER_LINEAR)
+ # cv::imshow("src", img)
+ # cv::imshow("corrected", undistortImg)
+
+
+
+# DIM = (480, 400)
+# K = np.array([[122.87238744667862, 0.0, 220.28343964853087],
+# [0.0, 120.60935347262523, 203.74634232157828],
+# [0.0, 0.0, 1.0]])
+# D = np.array([[0.06701341388742599], [0.1906721369775406], [-0.2568929474339438], [0.09063021944980182]])
+DIM = (640,480)
+K = np.array([[182.2034195269173, 0.0, 248.72241643510006],
+ [0.0, 200.88841301751464, 195.87207910703572],
+ [0.0, 0.0, 1.0]])
+D = np.array([[0.12236488620142214], [-0.053849293887633265], [0.03508527000849206], [-0.011661429257952398]])
+
+def undistort(img, DIM=DIM, K=K, D=D):
+ # img = cv2.resize(img, DIM)
+ map1, map2 = cv2.fisheye.initUndistortRectifyMap(K, D, np.eye(3), K, DIM,cv2.CV_16SC2)
+ undistorted_img = cv2.remap(img, map1, map2, interpolation=cv2.INTER_LINEAR,borderMode=cv2.BORDER_CONSTANT)
+ return undistorted_img
+
+
+def get_img_middle(img, size=[640,480]):
+ top = int((img.shape[0] - size[1]) / 2)
+ bottom = top + size[1]
+ left = int((img.shape[1] - size[0]) / 2)
+ right = left + size[0]
+ return img[top:bottom, left:right]
+
+
+
+
+if __name__ == "__main__":
+ capture = USBCamera("/dev/video0")
+ frame = capture.getFrame()
+ frame = cv2.resize(frame, DIM)
+ map1, map2 = cv2.fisheye.initUndistortRectifyMap(K, D, np.eye(3), K, DIM,cv2.CV_16SC2)
+ undistorted_img = cv2.remap(img, map1, map2, interpolation=cv2.INTER_LINEAR,borderMode=cv2.BORDER_CONSTANT)
+ cv2.imwrite('unfisheyeImage.png', undistorted_img)
\ No newline at end of file
diff --git a/src/Robot/go1_guide/nano/start.sh b/src/Robot/go1_guide/nano/start.sh
new file mode 100644
index 0000000..1ead534
--- /dev/null
+++ b/src/Robot/go1_guide/nano/start.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+ps -aux | grep point_cloud_node | awk '{print $2}' | xargs kill -9
+ps -aux | grep mqttControlNode | awk '{print $2}' | xargs kill -9
+ps -aux | grep live_human_pose | awk '{print $2}' | xargs kill -9
+ps -aux | grep example_point | awk '{print $2}' | xargs kill -9
+
+python3 webcamera.py
+# ./UnitreecameraSDK/bins/putimagetrans 2
diff --git a/src/Robot/go1_guide/nano/templates/index.html b/src/Robot/go1_guide/nano/templates/index.html
new file mode 100644
index 0000000..44cc5ce
--- /dev/null
+++ b/src/Robot/go1_guide/nano/templates/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+ Video Streaming
+
+
+
+
+
+
+
+
diff --git a/src/Robot/go1_guide/nano/trans_rect_config_0.yaml b/src/Robot/go1_guide/nano/trans_rect_config_0.yaml
new file mode 100644
index 0000000..36e1784
--- /dev/null
+++ b/src/Robot/go1_guide/nano/trans_rect_config_0.yaml
@@ -0,0 +1,78 @@
+%YAML:1.0
+---
+# unimportant
+LogLevel: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 1. ]
+# unimportant
+Threshold: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 190. ]
+# unimportant. It is recommended not to change
+Algorithm: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [1. ]
+#UDP address for image transfer 192.168.123.IpLastSegment
+IpLastSegment: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 15. ]
+#DeviceNode
+DeviceNode: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 0. ]
+#fov (perspective 60~140)
+hFov: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 120. ]
+#image size ([1856,800] or [928,400])
+FrameSize: !!opencv-matrix
+ rows: 1
+ cols: 2
+ dt: d
+ data: [ 928., 400. ]
+#
+RectifyFrameSize: !!opencv-matrix
+ rows: 1
+ cols: 2
+ dt: d
+ data: [ 928., 800. ]
+#FrameRate
+FrameRate: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 3e+01 ]
+#0 ori img - right 1 ori img - stereo 2 rect img - right 3 rect img - stereo -1 不传图
+Transmode: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 2. ]
+#Transmission rate
+Transrate: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 3e+01 ]
+# unimportant
+Depthmode: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 1. ]
+Reserved: !!opencv-matrix
+ rows: 3
+ cols: 3
+ dt: d
diff --git a/src/Robot/go1_guide/nano/trans_rect_config_1.yaml b/src/Robot/go1_guide/nano/trans_rect_config_1.yaml
new file mode 100644
index 0000000..8733c6e
--- /dev/null
+++ b/src/Robot/go1_guide/nano/trans_rect_config_1.yaml
@@ -0,0 +1,78 @@
+%YAML:1.0
+---
+# unimportant
+LogLevel: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 1. ]
+# unimportant
+Threshold: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 190. ]
+# unimportant. It is recommended not to change
+Algorithm: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [1. ]
+#UDP address for image transfer 192.168.123.IpLastSegment
+IpLastSegment: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 15. ]
+#DeviceNode
+DeviceNode: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 1. ]
+#fov (perspective 60~140)
+hFov: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 90. ]
+#image size ([1856,800] or [928,400])
+FrameSize: !!opencv-matrix
+ rows: 1
+ cols: 2
+ dt: d
+ data: [ 1856., 800. ]
+#
+RectifyFrameSize: !!opencv-matrix
+ rows: 1
+ cols: 2
+ dt: d
+ data: [ 928., 800. ]
+#FrameRate
+FrameRate: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 2e+01 ]
+#0 ori img - right 1 ori img - stereo 2 rect img - right 3 rect img - stereo -1 不传图
+Transmode: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 2. ]
+#Transmission rate
+Transrate: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 2e+01 ]
+# unimportant
+Depthmode: !!opencv-matrix
+ rows: 1
+ cols: 1
+ dt: d
+ data: [ 1. ]
+Reserved: !!opencv-matrix
+ rows: 3
+ cols: 3
+ dt: d
diff --git a/src/Robot/go1_guide/nano/webcamera.py b/src/Robot/go1_guide/nano/webcamera.py
new file mode 100644
index 0000000..72afb23
--- /dev/null
+++ b/src/Robot/go1_guide/nano/webcamera.py
@@ -0,0 +1,65 @@
+
+from flask import Flask, render_template, Response
+import cv2
+from picture_processing import get_img_middle #, undistort
+
+raw_size = [928,800]
+rect_size = [400,300]
+rect_size_ = (640,480)
+vid0 = cv2.VideoCapture("/dev/video0")
+vid1 = cv2.VideoCapture("/dev/video1")
+vid0.set(cv2.CAP_PROP_FRAME_WIDTH, raw_size[0])
+vid0.set(cv2.CAP_PROP_FRAME_HEIGHT, raw_size[1])
+vid1.set(cv2.CAP_PROP_FRAME_WIDTH, raw_size[0])
+vid1.set(cv2.CAP_PROP_FRAME_HEIGHT, raw_size[1])
+
+def get_frame(n):
+ if n==0:
+ frame = vid0.read()[1]
+ # frame = undistort(frame)
+ frame = get_img_middle(frame, rect_size)
+ frame = cv2.resize(frame, rect_size_)
+ return frame
+ if n==1:
+ frame = vid1.read()[1]
+ # frame = undistort(frame)
+ frame = get_img_middle(frame, rect_size)
+ frame = cv2.resize(frame, rect_size_)
+ return frame
+
+def get_frame_byte(n):
+ img = get_frame(n)
+ return cv2.imencode('.jpg', img)[1].tobytes()
+
+
+app = Flask(__name__)
+
+@app.route('/')
+def index():
+ """Video streaming home page."""
+ return render_template('index.html')
+
+
+def gen(n):
+ """Video streaming generator function."""
+ yield b'--frame\r\n'
+ while True:
+ frame = get_frame_byte(n)
+ yield b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n--frame\r\n'
+
+
+@app.route('/video1')
+def video1():
+ """Video streaming route. Put this in the src attribute of an img tag."""
+ return Response(gen(1),
+ mimetype='multipart/x-mixed-replace; boundary=frame')
+
+@app.route('/video2')
+def video2():
+ """Video streaming route. Put this in the src attribute of an img tag."""
+ return Response(gen(0),
+ mimetype='multipart/x-mixed-replace; boundary=frame')
+
+
+if __name__ == '__main__':
+ app.run(host='192.168.123.13', port=5000, threaded=True)
diff --git a/src/Robot/go1_guide/predict.py b/src/Robot/go1_guide/predict.py
new file mode 100644
index 0000000..8c1ef07
--- /dev/null
+++ b/src/Robot/go1_guide/predict.py
@@ -0,0 +1,277 @@
+from core.Camera import Camera, Camera_virtual
+
+import codecs
+import os
+import time
+import json
+import yaml
+from functools import reduce
+import multiprocessing
+
+from PIL import Image
+import cv2
+import numpy as np
+import paddle
+from paddle.inference import Config
+from paddle.inference import create_predictor
+
+import sys
+sys.path.append('PaddleDetection')
+from deploy.python.preprocess import Resize, NormalizeImage, Permute, PadStride #, preprocess
+from deploy.python.utils import argsparser, Timer, get_current_memory_mb
+
+
+class PredictConfig():
+ """set config of preprocess, postprocess and visualize
+ Args:
+ model_dir (str): root path of model.yml
+ """
+
+ def __init__(self, model_dir):
+ # parsing Yaml config for Preprocess
+ deploy_file = os.path.join(model_dir, 'infer_cfg.yml')
+ with open(deploy_file) as f:
+ yml_conf = yaml.safe_load(f)
+ self.arch = yml_conf['arch']
+ self.preprocess_infos = yml_conf['Preprocess']
+ self.min_subgraph_size = yml_conf['min_subgraph_size']
+ self.labels = yml_conf['label_list']
+ self.mask = False
+ self.use_dynamic_shape = yml_conf['use_dynamic_shape']
+ if 'mask' in yml_conf:
+ self.mask = yml_conf['mask']
+ self.tracker = None
+ if 'tracker' in yml_conf:
+ self.tracker = yml_conf['tracker']
+ if 'NMS' in yml_conf:
+ self.nms = yml_conf['NMS']
+ if 'fpn_stride' in yml_conf:
+ self.fpn_stride = yml_conf['fpn_stride']
+ self.print_config()
+
+ def print_config(self):
+ print('%s: %s' % ('Model Arch', self.arch))
+ for op_info in self.preprocess_infos:
+ print('--%s: %s' % ('transform op', op_info['type']))
+
+
+
+def load_predictor(model_dir):
+ config = Config(
+ os.path.join(model_dir, 'model.pdmodel'),
+ os.path.join(model_dir, 'model.pdiparams'))
+ # initial GPU memory(M), device ID
+ config.enable_use_gpu(2000, 0)
+ # optimize graph and fuse op
+ config.switch_ir_optim(True)
+ # disable print log when predict
+ config.disable_glog_info()
+ # enable shared memory
+ config.enable_memory_optim()
+ # disable feed, fetch OP, needed by zero_copy_run
+ config.switch_use_feed_fetch_ops(False)
+ predictor = create_predictor(config)
+ return predictor, config
+
+
+
+def create_inputs(imgs, im_info):
+ inputs = {}
+
+ im_shape = []
+ scale_factor = []
+ for e in im_info:
+ im_shape.append(np.array((e['im_shape'], )).astype('float32'))
+ scale_factor.append(np.array((e['scale_factor'], )).astype('float32'))
+
+ origin_scale_factor = np.concatenate(scale_factor, axis=0)
+
+ imgs_shape = [[e.shape[1], e.shape[2]] for e in imgs]
+ max_shape_h = max([e[0] for e in imgs_shape])
+ max_shape_w = max([e[1] for e in imgs_shape])
+ padding_imgs = []
+ padding_imgs_shape = []
+ padding_imgs_scale = []
+ for img in imgs:
+ im_c, im_h, im_w = img.shape[:]
+ padding_im = np.zeros(
+ (im_c, max_shape_h, max_shape_w), dtype=np.float32)
+ padding_im[:, :im_h, :im_w] = np.array(img, dtype=np.float32)
+ padding_imgs.append(padding_im)
+ padding_imgs_shape.append(
+ np.array([max_shape_h, max_shape_w]).astype('float32'))
+ rescale = [float(max_shape_h) / float(im_h), float(max_shape_w) / float(im_w)]
+ padding_imgs_scale.append(np.array(rescale).astype('float32'))
+ inputs['image'] = np.stack(padding_imgs, axis=0)
+ inputs['im_shape'] = np.stack(padding_imgs_shape, axis=0)
+ inputs['scale_factor'] = origin_scale_factor
+ return inputs
+
+
+class Detector(object):
+
+ def __init__(self,
+ pred_config,
+ model_dir,
+ device='CPU',
+ run_mode='paddle',
+ batch_size=1,
+ trt_min_shape=1,
+ trt_max_shape=1280,
+ trt_opt_shape=640,
+ trt_calib_mode=False,
+ cpu_threads=1,
+ enable_mkldnn=False):
+ self.pred_config = pred_config
+ self.predictor, self.config = load_predictor(model_dir)
+ # self.det_times = Timer()
+ self.cpu_mem, self.gpu_mem, self.gpu_util = 0, 0, 0
+ self.preprocess_ops = self.get_ops()
+
+ def get_ops(self):
+ preprocess_ops = []
+ for op_info in self.pred_config.preprocess_infos:
+ new_op_info = op_info.copy()
+ op_type = new_op_info.pop('type')
+ preprocess_ops.append(eval(op_type)(**new_op_info))
+ return preprocess_ops
+
+
+ def predict(self, inputs):
+ # preprocess
+ input_names = self.predictor.get_input_names()
+ for i in range(len(input_names)):
+ input_tensor = self.predictor.get_input_handle(input_names[i])
+ input_tensor.copy_from_cpu(inputs[input_names[i]])
+
+ np_boxes, np_boxes_num = [], []
+
+ # model_prediction
+ self.predictor.run()
+ np_boxes.clear()
+ np_boxes_num.clear()
+ output_names = self.predictor.get_output_names()
+ num_outs = int(len(output_names) / 2)
+
+
+ for out_idx in range(num_outs):
+ np_boxes.append(
+ self.predictor.get_output_handle(output_names[out_idx])
+ .copy_to_cpu())
+ np_boxes_num.append(
+ self.predictor.get_output_handle(output_names[
+ out_idx + num_outs]).copy_to_cpu())
+
+ np_boxes, np_boxes_num = np.array(np_boxes[0]), np.array(np_boxes_num[0])
+ return dict(boxes=np_boxes, boxes_num=np_boxes_num)
+
+
+
+
+def predict_image(detector, image_list, threshold):
+ c_results = {"result": []}
+
+ for index in range(len(image_list)):
+ # 检测模型图像预处理
+ input_im_lst = []
+ input_im_info_lst = []
+
+ def decode_image(im, im_info):
+ im_info['im_shape'] = np.array(im.shape[:2], dtype=np.float32)
+ im_info['scale_factor'] = np.array([1., 1.], dtype=np.float32)
+ return im_info
+
+ def preprocess(im, preprocess_ops):
+ # process image by preprocess_ops
+ im_info = {
+ 'scale_factor': np.array(
+ [1., 1.], dtype=np.float32),
+ 'im_shape': None,
+ }
+ im_info = decode_image(im, im_info)
+ for operator in preprocess_ops:
+ im, im_info = operator(im, im_info)
+ return im, im_info
+
+ im = image_list[index]
+ im, im_info = preprocess(im, detector.preprocess_ops)
+
+
+ input_im_lst.append(im)
+ input_im_info_lst.append(im_info)
+ inputs = create_inputs(input_im_lst, input_im_info_lst)
+
+
+ # 检测模型预测结果
+ det_results = detector.predict(inputs)
+
+ # 检测模型写结果
+ im_bboxes_num = det_results['boxes_num'][0]
+
+ if im_bboxes_num > 0:
+ bbox_results = det_results['boxes'][0:im_bboxes_num, 2:]
+ id_results = det_results['boxes'][0:im_bboxes_num, 0]
+ score_results = det_results['boxes'][0:im_bboxes_num, 1]
+
+ for idx in range(im_bboxes_num):
+ if float(score_results[idx]) >= threshold:
+ c_results["result"].append({"type": int(id_results[idx]) + 1,
+ "x": float(bbox_results[idx][0]),
+ "y": float(bbox_results[idx][1]),
+ "width": float(bbox_results[idx][2]) - float(bbox_results[idx][0]),
+ "height": float(bbox_results[idx][3]) - float(bbox_results[idx][1]),
+ "segmentation": []})
+
+ return c_results
+
+def draw_box(img, boxes):
+ for box in boxes:
+ print((int(box['x']),int(box['y'])), (int(box['x']+box['width']),int(box['y']+box['height'])))
+ # cv2.rectangle(img, (int(box['x']),int(box['y'])), (int(box['x']+box['width']),int(box['y']+box['height'])), (10, 10, 240), 1)
+ cv2.putText(img, str(box['type']), (10,10), cv2.FONT_HERSHEY_SIMPLEX, 2, (200,30,30), 1)
+ return img
+
+if __name__ == '__main__':
+ det_model_path = "model/picodet_l_416_coco_lcnet/"
+ camera = Camera_virtual(path_imgs='./images') # /home/unitree/go1_guide/images0
+ paddle.enable_static()
+ pred_config = PredictConfig(det_model_path)
+ detector = Detector(pred_config, det_model_path)
+ threshold = 0.41 #0.05
+ while True:
+ start_time = time.time()
+ frame = camera.getframe()
+ c_results = predict_image(detector, [frame], threshold)
+ curr_time = time.time()
+
+ exec_time = curr_time - start_time
+ if exec_time: fps = 1.0/exec_time
+ else: fps = 00.00
+ # print("FPS: %.2f time: %.2f ms" % (fps, (1000*exec_time)))
+
+ frame = draw_box(frame, c_results['result'])
+ cv2.namedWindow('test', 0)
+ cv2.imshow('test', frame)
+
+ waitkey = cv2.waitKey(1)
+ if waitkey==ord('q'): break
+ if waitkey==ord(' '):
+ camera.nextframe()
+ cv2.destroyAllWindows()
+
+
+
+
+
+class predicter():
+ def __init__(self, det_model_path='model/picodet_l_416_coco_lcnet/', threshold=0.41):
+ paddle.enable_static()
+ pred_config = PredictConfig(det_model_path)
+ self.detector = Detector(pred_config, det_model_path)
+ self.threshold = threshold
+
+ def predict(self, img, draw=False):
+ c_results = predict_image(self.detector, [img], self.threshold)
+ if draw:
+ img = draw_box(img, c_results['result'])
+ return c_results
diff --git a/src/Robot/go1_guide/raspberrypi/server_robotcontrol.py b/src/Robot/go1_guide/raspberrypi/server_robotcontrol.py
new file mode 100644
index 0000000..b76ba6d
--- /dev/null
+++ b/src/Robot/go1_guide/raspberrypi/server_robotcontrol.py
@@ -0,0 +1,81 @@
+import socket
+import threading
+import json
+
+from unitree_python_sdk import Unitree_Robot_High
+unitree_robot = Unitree_Robot_High()
+
+clients = {}
+
+class client(object):
+ def __init__(self, socket, addr, username):
+ self.addr = addr[0]
+ self.port = addr[1]
+ self.username = username
+ self.socket = socket
+
+ def send(self, msg):
+ self.socket.send(msg)
+
+ def recv(self, mtu=1024):
+ try:
+ data = self.socket.recv(mtu)
+ if not data:
+ return False
+ return data
+ except:
+ return False
+
+ def close(self):
+ try:
+ self.socket.close()
+ return True
+ except:
+ return False
+
+ def id(self):
+ return '{0}:{1}'.format(self.addr, self.port)
+
+
+def new_client(c):
+ try:
+ while True:
+ data = c.recv()
+ if not data:
+ break
+ else:
+ data = json.loads(data)
+ # print(data)
+ unitree_robot.execute(data[0], # mode
+ data[1], # gaitType
+ data[2], # speedLevel
+ data[3], # footRaiseHeight
+ data[4], # bodyHeight
+ data[5], # euler
+ data[6], # velocity
+ data[7], # yawSpeed
+ data[8]) # reserve
+
+ except socket.error as e:
+ print('({0})Socket error: {1}'.format(c.id(), e))
+ except Exception as e:
+ print('({0})Other exception: {1}'.format(c.id(), e))
+ finally:
+ print('({0})Client leave.'.format(c.id()))
+ c.close()
+ clients.pop(c.id())
+
+
+s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+address = ('192.168.123.161', 8000)
+s.bind(address)
+s.listen(16)
+print('Listening...')
+
+while True:
+ conn, addr = s.accept()
+ c = client(conn, addr, '')
+ clients[c.id()] = c
+ t = threading.Thread(target=new_client, args=(c,))
+ t.start()
+ print('({0})Client entry.'.format(c.id()))
diff --git a/src/Robot/go1_guide/raspberrypi/start.sh b/src/Robot/go1_guide/raspberrypi/start.sh
new file mode 100644
index 0000000..a63f373
--- /dev/null
+++ b/src/Robot/go1_guide/raspberrypi/start.sh
@@ -0,0 +1 @@
+python3 server_robotcontrol.py
diff --git a/src/Robot/go1_guide/raspberrypi/unitree.py b/src/Robot/go1_guide/raspberrypi/unitree.py
new file mode 100644
index 0000000..127e772
--- /dev/null
+++ b/src/Robot/go1_guide/raspberrypi/unitree.py
@@ -0,0 +1,27 @@
+HIGHLEVEL = 0xee
+LOWLEVEL = 0xff
+
+FR_ = 0 # leg index
+FL_ = 1
+RR_ = 2
+RL_ = 3
+
+FR_0 = 0 # joint index
+FR_1 = 1
+FR_2 = 2
+
+FL_0 = 3
+FL_1 = 4
+FL_2 = 5
+
+RR_0 = 6
+RR_1 = 7
+RR_2 = 8
+
+RL_0 = 9
+RL_1 = 10
+RL_2 = 11
+
+calibration_forwardspeed = 0.0
+calibration_sidespeed = 0.0
+calibration_rotatespeed = 0.0
\ No newline at end of file
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/.gitignore b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/.gitignore
new file mode 100644
index 0000000..a2cafc9
--- /dev/null
+++ b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/.gitignore
@@ -0,0 +1,4 @@
+build
+
+*.o
+.vscode
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/CMakeLists.txt b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/CMakeLists.txt
new file mode 100644
index 0000000..6319159
--- /dev/null
+++ b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/CMakeLists.txt
@@ -0,0 +1,45 @@
+cmake_minimum_required(VERSION 2.8.3)
+project(unitree_legged_sdk)
+
+include_directories(include)
+
+add_compile_options(-std=c++14)
+
+# check arch and os
+message("-- CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}")
+if("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "x86_64.*")
+ set(ARCH amd64)
+endif()
+if("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "aarch64.*")
+ set(ARCH arm64)
+endif()
+
+link_directories(lib/cpp/${ARCH})
+set(EXTRA_LIBS -pthread libunitree_legged_sdk.so)
+
+set(CMAKE_CXX_FLAGS "-O3 -fPIC")
+
+# one pc one process
+add_executable(example_position example/example_position.cpp)
+target_link_libraries(example_position ${EXTRA_LIBS})
+
+add_executable(example_velocity example/example_velocity.cpp)
+target_link_libraries(example_velocity ${EXTRA_LIBS})
+
+add_executable(example_torque example/example_torque.cpp)
+target_link_libraries(example_torque ${EXTRA_LIBS})
+
+add_executable(example_walk example/example_walk.cpp)
+target_link_libraries(example_walk ${EXTRA_LIBS})
+
+add_executable(example_joystick example/example_joystick.cpp)
+target_link_libraries(example_joystick ${EXTRA_LIBS})
+
+
+# install
+install(TARGETS
+ example_position example_velocity example_torque example_walk example_joystick
+ DESTINATION bin/unitree)
+install(DIRECTORY lib/cpp/${ARCH}/
+ DESTINATION lib/unitree
+ USE_SOURCE_PERMISSIONS)
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/LICENSE b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/LICENSE
new file mode 100644
index 0000000..a612ad9
--- /dev/null
+++ b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/LICENSE
@@ -0,0 +1,373 @@
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+ means each individual or legal entity that creates, contributes to
+ the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+ means the combination of the Contributions of others (if any) used
+ by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+ means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+ means Source Code Form to which the initial Contributor has attached
+ the notice in Exhibit A, the Executable Form of such Source Code
+ Form, and Modifications of such Source Code Form, in each case
+ including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+ means
+
+ (a) that the initial Contributor has attached the notice described
+ in Exhibit B to the Covered Software; or
+
+ (b) that the Covered Software was made available under the terms of
+ version 1.1 or earlier of the License, but not also under the
+ terms of a Secondary License.
+
+1.6. "Executable Form"
+ means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+ means a work that combines Covered Software with other material, in
+ a separate file or files, that is not Covered Software.
+
+1.8. "License"
+ means this document.
+
+1.9. "Licensable"
+ means having the right to grant, to the maximum extent possible,
+ whether at the time of the initial grant or subsequently, any and
+ all of the rights conveyed by this License.
+
+1.10. "Modifications"
+ means any of the following:
+
+ (a) any file in Source Code Form that results from an addition to,
+ deletion from, or modification of the contents of Covered
+ Software; or
+
+ (b) any new file in Source Code Form that contains any Covered
+ Software.
+
+1.11. "Patent Claims" of a Contributor
+ means any patent claim(s), including without limitation, method,
+ process, and apparatus claims, in any patent Licensable by such
+ Contributor that would be infringed, but for the grant of the
+ License, by the making, using, selling, offering for sale, having
+ made, import, or transfer of either its Contributions or its
+ Contributor Version.
+
+1.12. "Secondary License"
+ means either the GNU General Public License, Version 2.0, the GNU
+ Lesser General Public License, Version 2.1, the GNU Affero General
+ Public License, Version 3.0, or any later versions of those
+ licenses.
+
+1.13. "Source Code Form"
+ means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+ means an individual or a legal entity exercising rights under this
+ License. For legal entities, "You" includes any entity that
+ controls, is controlled by, or is under common control with You. For
+ purposes of this definition, "control" means (a) the power, direct
+ or indirect, to cause the direction or management of such entity,
+ whether by contract or otherwise, or (b) ownership of more than
+ fifty percent (50%) of the outstanding shares or beneficial
+ ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+ Licensable by such Contributor to use, reproduce, make available,
+ modify, display, perform, distribute, and otherwise exploit its
+ Contributions, either on an unmodified basis, with Modifications, or
+ as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+ for sale, have made, import, and otherwise transfer either its
+ Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+ or
+
+(b) for infringements caused by: (i) Your and any other third party's
+ modifications of Covered Software, or (ii) the combination of its
+ Contributions with other software (except as part of its Contributor
+ Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+ its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+ Form, as described in Section 3.1, and You must inform recipients of
+ the Executable Form how they can obtain a copy of such Source Code
+ Form by reasonable means in a timely manner, at a charge no more
+ than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+ License, or sublicense it under different terms, provided that the
+ license for the Executable Form does not attempt to limit or alter
+ the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+* *
+* 6. Disclaimer of Warranty *
+* ------------------------- *
+* *
+* Covered Software is provided under this License on an "as is" *
+* basis, without warranty of any kind, either expressed, implied, or *
+* statutory, including, without limitation, warranties that the *
+* Covered Software is free of defects, merchantable, fit for a *
+* particular purpose or non-infringing. The entire risk as to the *
+* quality and performance of the Covered Software is with You. *
+* Should any Covered Software prove defective in any respect, You *
+* (not any Contributor) assume the cost of any necessary servicing, *
+* repair, or correction. This disclaimer of warranty constitutes an *
+* essential part of this License. No use of any Covered Software is *
+* authorized under this License except under this disclaimer. *
+* *
+************************************************************************
+
+************************************************************************
+* *
+* 7. Limitation of Liability *
+* -------------------------- *
+* *
+* Under no circumstances and under no legal theory, whether tort *
+* (including negligence), contract, or otherwise, shall any *
+* Contributor, or anyone who distributes Covered Software as *
+* permitted above, be liable to You for any direct, indirect, *
+* special, incidental, or consequential damages of any character *
+* including, without limitation, damages for lost profits, loss of *
+* goodwill, work stoppage, computer failure or malfunction, or any *
+* and all other commercial damages or losses, even if such party *
+* shall have been informed of the possibility of such damages. This *
+* limitation of liability shall not apply to liability for death or *
+* personal injury resulting from such party's negligence to the *
+* extent applicable law prohibits such limitation. Some *
+* jurisdictions do not allow the exclusion or limitation of *
+* incidental or consequential damages, so this exclusion and *
+* limitation may not apply to You. *
+* *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+ This Source Code Form is subject to the terms of the Mozilla Public
+ License, v. 2.0. If a copy of the MPL was not distributed with this
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+---------------------------------------------------------
+
+ This Source Code Form is "Incompatible With Secondary Licenses", as
+ defined by the Mozilla Public License, v. 2.0.
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/README.md b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/README.md
new file mode 100644
index 0000000..eb8b612
--- /dev/null
+++ b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/README.md
@@ -0,0 +1,37 @@
+# v3.8.0
+The unitree_legged_sdk is mainly used for communication between PC and Controller board.
+It also can be used in other PCs with UDP.
+
+### Notice
+support robot: Go1
+
+not support robot: Laikago, Aliengo, A1. (Check release [v3.3.1](https://github.com/unitreerobotics/unitree_legged_sdk/releases/tag/v3.3.1) for support)
+
+### Dependencies
+* [Unitree](https://www.unitree.com/go1_update)
+```bash
+Legged_sport >= v1.36.0
+firmware H0.1.7 >= v0.1.35
+ H0.1.9 >= v0.1.35
+```
+* [Boost](http://www.boost.org) (version 1.5.4 or higher)
+* [CMake](http://www.cmake.org) (version 2.8.3 or higher)
+* [g++](https://gcc.gnu.org/) (version 8.3.0 or higher)
+
+
+### Build
+```bash
+mkdir build
+cd build
+cmake ../
+make
+```
+
+### Run
+
+#### Cpp
+Run examples with 'sudo' for memory locking.
+
+#### Python
+##### arm
+change `sys.path.append('../lib/python/amd64')` to `sys.path.append('../lib/python/arm64')`
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example/example_joystick.cpp b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example/example_joystick.cpp
new file mode 100644
index 0000000..45d113c
--- /dev/null
+++ b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example/example_joystick.cpp
@@ -0,0 +1,82 @@
+/************************************************************************
+Copyright (c) 2020, Unitree Robotics.Co.Ltd. All rights reserved.
+Use of this source code is governed by the MPL-2.0 license, see LICENSE.
+************************************************************************/
+
+#include "unitree_legged_sdk/unitree_legged_sdk.h"
+#include "unitree_legged_sdk/joystick.h"
+#include
+#include
+#include
+
+using namespace UNITREE_LEGGED_SDK;
+
+class Custom
+{
+public:
+ Custom(uint8_t level):
+ safe(LeggedType::Go1),
+ udp(level, 8090, "192.168.123.10", 8007){
+ udp.InitCmdData(cmd);
+ }
+ void UDPSend();
+ void UDPRecv();
+ void RobotControl();
+
+ Safety safe;
+ UDP udp;
+ LowCmd cmd = {0};
+ LowState state = {0};
+ xRockerBtnDataStruct _keyData;
+ int motiontime = 0;
+ float dt = 0.002; // 0.001~0.01
+};
+
+void Custom::UDPRecv()
+{
+ udp.Recv();
+}
+
+void Custom::UDPSend()
+{
+ udp.Send();
+}
+
+void Custom::RobotControl()
+{
+ motiontime++;
+ udp.GetRecv(state);
+
+ memcpy(&_keyData, &state.wirelessRemote[0], 40);
+
+ if((int)_keyData.btn.components.A == 1){
+ std::cout << "The key A is pressed, and the value of lx is " << _keyData.lx << std::endl;
+ }
+
+ safe.PowerProtect(cmd, state, 1);
+ udp.SetSend(cmd);
+}
+
+int main(void)
+{
+ std::cout << "Communication level is set to LOW-level." << std::endl
+ << "WARNING: Make sure the robot is hung up." << std::endl
+ << "Press Enter to continue..." << std::endl;
+ std::cin.ignore();
+
+ Custom custom(LOWLEVEL);
+ // InitEnvironment();
+ LoopFunc loop_control("control_loop", custom.dt, boost::bind(&Custom::RobotControl, &custom));
+ LoopFunc loop_udpSend("udp_send", custom.dt, 3, boost::bind(&Custom::UDPSend, &custom));
+ LoopFunc loop_udpRecv("udp_recv", custom.dt, 3, boost::bind(&Custom::UDPRecv, &custom));
+
+ loop_udpSend.start();
+ loop_udpRecv.start();
+ loop_control.start();
+
+ while(1){
+ sleep(10);
+ };
+
+ return 0;
+}
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example/example_position.cpp b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example/example_position.cpp
new file mode 100644
index 0000000..3051928
--- /dev/null
+++ b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example/example_position.cpp
@@ -0,0 +1,163 @@
+/*****************************************************************
+ Copyright (c) 2020, Unitree Robotics.Co.Ltd. All rights reserved.
+******************************************************************/
+
+#include "unitree_legged_sdk/unitree_legged_sdk.h"
+#include
+#include
+#include
+#include
+
+using namespace std;
+using namespace UNITREE_LEGGED_SDK;
+
+class Custom
+{
+public:
+ Custom(uint8_t level):
+ safe(LeggedType::Go1),
+ udp(level, 8090, "192.168.123.10", 8007) {
+ udp.InitCmdData(cmd);
+ }
+ void UDPRecv();
+ void UDPSend();
+ void RobotControl();
+
+ Safety safe;
+ UDP udp;
+ LowCmd cmd = {0};
+ LowState state = {0};
+ float qInit[3]={0};
+ float qDes[3]={0};
+ float sin_mid_q[3] = {0.0, 1.2, -2.0};
+ float Kp[3] = {0};
+ float Kd[3] = {0};
+ double time_consume = 0;
+ int rate_count = 0;
+ int sin_count = 0;
+ int motiontime = 0;
+ float dt = 0.002; // 0.001~0.01
+};
+
+void Custom::UDPRecv()
+{
+ udp.Recv();
+}
+
+void Custom::UDPSend()
+{
+ udp.Send();
+}
+
+double jointLinearInterpolation(double initPos, double targetPos, double rate)
+{
+ double p;
+ rate = std::min(std::max(rate, 0.0), 1.0);
+ p = initPos*(1-rate) + targetPos*rate;
+ return p;
+}
+
+void Custom::RobotControl()
+{
+ motiontime++;
+ udp.GetRecv(state);
+ // printf("%d %f\n", motiontime, state.motorState[FR_2].q);
+ printf("%d %f %f\n", motiontime, state.motorState[FR_1].q, state.motorState[FR_1].dq);
+
+ // gravity compensation
+ cmd.motorCmd[FR_0].tau = -0.65f;
+ cmd.motorCmd[FL_0].tau = +0.65f;
+ cmd.motorCmd[RR_0].tau = -0.65f;
+ cmd.motorCmd[RL_0].tau = +0.65f;
+
+ // if( motiontime >= 100){
+ if( motiontime >= 0){
+ // first, get record initial position
+ // if( motiontime >= 100 && motiontime < 500){
+ if( motiontime >= 0 && motiontime < 10){
+ qInit[0] = state.motorState[FR_0].q;
+ qInit[1] = state.motorState[FR_1].q;
+ qInit[2] = state.motorState[FR_2].q;
+ }
+ // second, move to the origin point of a sine movement with Kp Kd
+ // if( motiontime >= 500 && motiontime < 1500){
+ if( motiontime >= 10 && motiontime < 400){
+ rate_count++;
+ double rate = rate_count/200.0; // needs count to 200
+ Kp[0] = 5.0; Kp[1] = 5.0; Kp[2] = 5.0;
+ Kd[0] = 1.0; Kd[1] = 1.0; Kd[2] = 1.0;
+ // Kp[0] = 20.0; Kp[1] = 20.0; Kp[2] = 20.0;
+ // Kd[0] = 2.0; Kd[1] = 2.0; Kd[2] = 2.0;
+
+ qDes[0] = jointLinearInterpolation(qInit[0], sin_mid_q[0], rate);
+ qDes[1] = jointLinearInterpolation(qInit[1], sin_mid_q[1], rate);
+ qDes[2] = jointLinearInterpolation(qInit[2], sin_mid_q[2], rate);
+ }
+ double sin_joint1, sin_joint2;
+ // last, do sine wave
+ if( motiontime >= 400){
+ sin_count++;
+ sin_joint1 = 0.6 * sin(3*M_PI*sin_count/1000.0);
+ sin_joint2 = -0.6 * sin(1.8*M_PI*sin_count/1000.0);
+ qDes[0] = sin_mid_q[0];
+ qDes[1] = sin_mid_q[1];
+ qDes[2] = sin_mid_q[2] + sin_joint2;
+ // qDes[2] = sin_mid_q[2];
+ }
+
+ cmd.motorCmd[FR_0].q = qDes[0];
+ cmd.motorCmd[FR_0].dq = 0;
+ cmd.motorCmd[FR_0].Kp = Kp[0];
+ cmd.motorCmd[FR_0].Kd = Kd[0];
+ cmd.motorCmd[FR_0].tau = -0.65f;
+
+ cmd.motorCmd[FR_1].q = qDes[1];
+ cmd.motorCmd[FR_1].dq = 0;
+ cmd.motorCmd[FR_1].Kp = Kp[1];
+ cmd.motorCmd[FR_1].Kd = Kd[1];
+ cmd.motorCmd[FR_1].tau = 0.0f;
+
+ cmd.motorCmd[FR_2].q = qDes[2];
+ cmd.motorCmd[FR_2].dq = 0;
+ cmd.motorCmd[FR_2].Kp = Kp[2];
+ cmd.motorCmd[FR_2].Kd = Kd[2];
+ cmd.motorCmd[FR_2].tau = 0.0f;
+
+ }
+
+ if(motiontime > 10){
+ safe.PositionLimit(cmd);
+ int res1 = safe.PowerProtect(cmd, state, 1);
+ // You can uncomment it for position protection
+ // int res2 = safe.PositionProtect(cmd, state, 10);
+ if(res1 < 0) exit(-1);
+ }
+
+ udp.SetSend(cmd);
+
+}
+
+
+int main(void)
+{
+ std::cout << "Communication level is set to LOW-level." << std::endl
+ << "WARNING: Make sure the robot is hung up." << std::endl
+ << "Press Enter to continue..." << std::endl;
+ std::cin.ignore();
+
+ Custom custom(LOWLEVEL);
+ // InitEnvironment();
+ LoopFunc loop_control("control_loop", custom.dt, boost::bind(&Custom::RobotControl, &custom));
+ LoopFunc loop_udpSend("udp_send", custom.dt, 3, boost::bind(&Custom::UDPSend, &custom));
+ LoopFunc loop_udpRecv("udp_recv", custom.dt, 3, boost::bind(&Custom::UDPRecv, &custom));
+
+ loop_udpSend.start();
+ loop_udpRecv.start();
+ loop_control.start();
+
+ while(1){
+ sleep(10);
+ };
+
+ return 0;
+}
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example/example_torque.cpp b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example/example_torque.cpp
new file mode 100644
index 0000000..d3967c1
--- /dev/null
+++ b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example/example_torque.cpp
@@ -0,0 +1,94 @@
+/*****************************************************************
+ Copyright (c) 2020, Unitree Robotics.Co.Ltd. All rights reserved.
+******************************************************************/
+
+#include "unitree_legged_sdk/unitree_legged_sdk.h"
+#include
+#include
+#include
+
+using namespace UNITREE_LEGGED_SDK;
+
+class Custom
+{
+public:
+ Custom(uint8_t level):
+ safe(LeggedType::Go1),
+ udp(level, 8090, "192.168.123.10", 8007){
+ udp.InitCmdData(cmd);
+ }
+ void UDPSend();
+ void UDPRecv();
+ void RobotControl();
+
+ Safety safe;
+ UDP udp;
+ LowCmd cmd = {0};
+ LowState state = {0};
+ int motiontime = 0;
+ float dt = 0.002; // 0.001~0.01
+};
+
+void Custom::UDPRecv()
+{
+ udp.Recv();
+}
+
+void Custom::UDPSend()
+{
+ udp.Send();
+}
+
+void Custom::RobotControl()
+{
+ motiontime++;
+ udp.GetRecv(state);
+ // printf("%d\n", motiontime);
+ // gravity compensation
+ cmd.motorCmd[FR_0].tau = -0.65f;
+ cmd.motorCmd[FL_0].tau = +0.65f;
+ cmd.motorCmd[RR_0].tau = -0.65f;
+ cmd.motorCmd[RL_0].tau = +0.65f;
+
+ if( motiontime >= 500){
+ float torque = (0 - state.motorState[FR_1].q)*10.0f + (0 - state.motorState[FR_1].dq)*1.0f;
+ if(torque > 5.0f) torque = 5.0f;
+ if(torque < -5.0f) torque = -5.0f;
+ // if(torque > 15.0f) torque = 15.0f;
+ // if(torque < -15.0f) torque = -15.0f;
+
+ cmd.motorCmd[FR_1].q = PosStopF;
+ cmd.motorCmd[FR_1].dq = VelStopF;
+ cmd.motorCmd[FR_1].Kp = 0;
+ cmd.motorCmd[FR_1].Kd = 0;
+ cmd.motorCmd[FR_1].tau = torque;
+ }
+ int res = safe.PowerProtect(cmd, state, 1);
+ if(res < 0) exit(-1);
+
+ udp.SetSend(cmd);
+}
+
+int main(void)
+{
+ std::cout << "Communication level is set to LOW-level." << std::endl
+ << "WARNING: Make sure the robot is hung up." << std::endl
+ << "Press Enter to continue..." << std::endl;
+ std::cin.ignore();
+
+ Custom custom(LOWLEVEL);
+ // InitEnvironment();
+ LoopFunc loop_control("control_loop", custom.dt, boost::bind(&Custom::RobotControl, &custom));
+ LoopFunc loop_udpSend("udp_send", custom.dt, 3, boost::bind(&Custom::UDPSend, &custom));
+ LoopFunc loop_udpRecv("udp_recv", custom.dt, 3, boost::bind(&Custom::UDPRecv, &custom));
+
+ loop_udpSend.start();
+ loop_udpRecv.start();
+ loop_control.start();
+
+ while(1){
+ sleep(10);
+ };
+
+ return 0;
+}
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example/example_velocity.cpp b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example/example_velocity.cpp
new file mode 100644
index 0000000..f34cce8
--- /dev/null
+++ b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example/example_velocity.cpp
@@ -0,0 +1,97 @@
+/*****************************************************************
+ Copyright (c) 2020, Unitree Robotics.Co.Ltd. All rights reserved.
+******************************************************************/
+
+#include "unitree_legged_sdk/unitree_legged_sdk.h"
+#include
+#include
+
+using namespace UNITREE_LEGGED_SDK;
+
+class Custom
+{
+public:
+ Custom(uint8_t level):
+ safe(LeggedType::Go1),
+ udp(level, 8090, "192.168.123.10", 8007){
+ udp.InitCmdData(cmd);
+ }
+ void UDPRecv();
+ void UDPSend();
+ void RobotControl();
+
+ Safety safe;
+ UDP udp;
+ LowCmd cmd = {0};
+ LowState state = {0};
+ int Tpi = 0;
+ int motiontime = 0;
+ float dt = 0.002; // 0.001~0.01
+};
+
+void Custom::UDPRecv()
+{
+ udp.Recv();
+}
+
+void Custom::UDPSend()
+{
+ udp.Send();
+}
+
+void Custom::RobotControl()
+{
+ motiontime++;
+ udp.GetRecv(state);
+
+ // gravity compensation
+ cmd.motorCmd[FR_0].tau = -0.65f;
+ cmd.motorCmd[FL_0].tau = +0.65f;
+ cmd.motorCmd[RR_0].tau = -0.65f;
+ cmd.motorCmd[RL_0].tau = +0.65f;
+
+ if( motiontime >= 500){
+ float speed = 2 * sin(3*M_PI*Tpi/1500.0);
+
+ cmd.motorCmd[FR_1].q = PosStopF;
+ cmd.motorCmd[FR_1].dq = speed;
+ cmd.motorCmd[FR_1].Kp = 0;
+ cmd.motorCmd[FR_1].Kd = 4;
+ // cmd.motorCmd[FR_1].Kd = 6;
+ cmd.motorCmd[FR_1].tau = 0.0f;
+ Tpi++;
+ }
+
+ if(motiontime > 10){
+ int res1 = safe.PowerProtect(cmd, state, 1);
+ // You can uncomment it for position protection
+ // int res2 = safe.PositionProtect(cmd, state, 10);
+ if(res1 < 0) exit(-1);
+ }
+
+ udp.SetSend(cmd);
+}
+
+int main(void)
+{
+ std::cout << "Communication level is set to LOW-level." << std::endl
+ << "WARNING: Make sure the robot is hung up." << std::endl
+ << "Press Enter to continue..." << std::endl;
+ std::cin.ignore();
+
+ Custom custom(LOWLEVEL);
+ // InitEnvironment();
+ LoopFunc loop_control("control_loop", custom.dt, boost::bind(&Custom::RobotControl, &custom));
+ LoopFunc loop_udpSend("udp_send", custom.dt, 3, boost::bind(&Custom::UDPSend, &custom));
+ LoopFunc loop_udpRecv("udp_recv", custom.dt, 3, boost::bind(&Custom::UDPRecv, &custom));
+
+ loop_udpSend.start();
+ loop_udpRecv.start();
+ loop_control.start();
+
+ while(1){
+ sleep(10);
+ };
+
+ return 0;
+}
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example/example_walk.cpp b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example/example_walk.cpp
new file mode 100644
index 0000000..46e20d4
--- /dev/null
+++ b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example/example_walk.cpp
@@ -0,0 +1,156 @@
+/*****************************************************************
+ Copyright (c) 2020, Unitree Robotics.Co.Ltd. All rights reserved.
+******************************************************************/
+
+#include "unitree_legged_sdk/unitree_legged_sdk.h"
+#include
+#include
+#include
+#include
+
+using namespace UNITREE_LEGGED_SDK;
+
+class Custom
+{
+public:
+ Custom(uint8_t level):
+ safe(LeggedType::Go1),
+ udp(level, 8090, "192.168.123.161", 8082){
+ udp.InitCmdData(cmd);
+ }
+ void UDPRecv();
+ void UDPSend();
+ void RobotControl();
+
+ Safety safe;
+ UDP udp;
+ HighCmd cmd = {0};
+ HighState state = {0};
+ int motiontime = 0;
+ float dt = 0.002; // 0.001~0.01
+};
+
+
+void Custom::UDPRecv()
+{
+ udp.Recv();
+}
+
+void Custom::UDPSend()
+{
+ udp.Send();
+}
+
+void Custom::RobotControl()
+{
+ motiontime += 2;
+ udp.GetRecv(state);
+ printf("%d %f\n", motiontime, state.imu.quaternion[2]);
+
+ cmd.mode = 0; // 0:idle, default stand 1:forced stand 2:walk continuously
+ cmd.gaitType = 0;
+ cmd.speedLevel = 0;
+ cmd.footRaiseHeight = 0;
+ cmd.bodyHeight = 0;
+ cmd.euler[0] = 0;
+ cmd.euler[1] = 0;
+ cmd.euler[2] = 0;
+ cmd.velocity[0] = 0.0f;
+ cmd.velocity[1] = 0.0f;
+ cmd.yawSpeed = 0.0f;
+ cmd.reserve = 0;
+
+ if(motiontime > 0 && motiontime < 1000){
+ cmd.mode = 1;
+ cmd.euler[0] = -0.3;
+ }
+ if(motiontime > 1000 && motiontime < 2000){
+ cmd.mode = 1;
+ cmd.euler[0] = 0.3;
+ }
+ if(motiontime > 2000 && motiontime < 3000){
+ cmd.mode = 1;
+ cmd.euler[1] = -0.2;
+ }
+ if(motiontime > 3000 && motiontime < 4000){
+ cmd.mode = 1;
+ cmd.euler[1] = 0.2;
+ }
+ if(motiontime > 4000 && motiontime < 5000){
+ cmd.mode = 1;
+ cmd.euler[2] = -0.2;
+ }
+ if(motiontime > 5000 && motiontime < 6000){
+ cmd.mode = 1;
+ cmd.euler[2] = 0.2;
+ }
+ if(motiontime > 6000 && motiontime < 7000){
+ cmd.mode = 1;
+ cmd.bodyHeight = -0.2;
+ }
+ if(motiontime > 7000 && motiontime < 8000){
+ cmd.mode = 1;
+ cmd.bodyHeight = 0.1;
+ }
+ if(motiontime > 8000 && motiontime < 9000){
+ cmd.mode = 1;
+ cmd.bodyHeight = 0.0;
+ }
+ if(motiontime > 9000 && motiontime < 11000){
+ cmd.mode = 5;
+ }
+ if(motiontime > 11000 && motiontime < 13000){
+ cmd.mode = 6;
+ }
+ if(motiontime > 13000 && motiontime < 14000){
+ cmd.mode = 0;
+ }
+ if(motiontime > 14000 && motiontime < 18000){
+ cmd.mode = 2;
+ cmd.gaitType = 2;
+ cmd.velocity[0] = 0.4f; // -1 ~ +1
+ cmd.yawSpeed = 2;
+ cmd.footRaiseHeight = 0.1;
+ // printf("walk\n");
+ }
+ if(motiontime > 18000 && motiontime < 20000){
+ cmd.mode = 0;
+ cmd.velocity[0] = 0;
+ }
+ if(motiontime > 20000 && motiontime < 24000){
+ cmd.mode = 2;
+ cmd.gaitType = 1;
+ cmd.velocity[0] = 0.2f; // -1 ~ +1
+ cmd.bodyHeight = 0.1;
+ // printf("walk\n");
+ }
+ if(motiontime>24000 ){
+ cmd.mode = 1;
+ }
+
+ udp.SetSend(cmd);
+}
+
+int main(void)
+{
+ std::cout << "Communication level is set to HIGH-level." << std::endl
+ << "WARNING: Make sure the robot is standing on the ground." << std::endl
+ << "Press Enter to continue..." << std::endl;
+ std::cin.ignore();
+
+ Custom custom(HIGHLEVEL);
+ // InitEnvironment();
+ LoopFunc loop_control("control_loop", custom.dt, boost::bind(&Custom::RobotControl, &custom));
+ LoopFunc loop_udpSend("udp_send", custom.dt, 3, boost::bind(&Custom::UDPSend, &custom));
+ LoopFunc loop_udpRecv("udp_recv", custom.dt, 3, boost::bind(&Custom::UDPRecv, &custom));
+
+ loop_udpSend.start();
+ loop_udpRecv.start();
+ loop_control.start();
+
+ while(1){
+ sleep(10);
+ };
+
+ return 0;
+}
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example_py/example_position.py b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example_py/example_position.py
new file mode 100644
index 0000000..ddd2dd4
--- /dev/null
+++ b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example_py/example_position.py
@@ -0,0 +1,118 @@
+#!/usr/bin/python
+
+import sys
+import time
+import math
+import numpy as np
+
+sys.path.append('../lib/python/amd64')
+import robot_interface as sdk
+
+def jointLinearInterpolation(initPos, targetPos, rate):
+
+ rate = np.fmin(np.fmax(rate, 0.0), 1.0)
+ p = initPos*(1-rate) + targetPos*rate
+ return p
+
+
+if __name__ == '__main__':
+
+ d = {'FR_0':0, 'FR_1':1, 'FR_2':2,
+ 'FL_0':3, 'FL_1':4, 'FL_2':5,
+ 'RR_0':6, 'RR_1':7, 'RR_2':8,
+ 'RL_0':9, 'RL_1':10, 'RL_2':11 }
+ PosStopF = math.pow(10,9)
+ VelStopF = 16000.0
+ HIGHLEVEL = 0xee
+ LOWLEVEL = 0xff
+ sin_mid_q = [0.0, 1.2, -2.0]
+ dt = 0.002
+ qInit = [0, 0, 0]
+ qDes = [0, 0, 0]
+ sin_count = 0
+ rate_count = 0
+ Kp = [0, 0, 0]
+ Kd = [0, 0, 0]
+
+ udp = sdk.UDP(LOWLEVEL, 8080, "192.168.123.10", 8007)
+ safe = sdk.Safety(sdk.LeggedType.Go1)
+
+ cmd = sdk.LowCmd()
+ state = sdk.LowState()
+ udp.InitCmdData(cmd)
+
+ Tpi = 0
+ motiontime = 0
+ while True:
+ time.sleep(0.002)
+ motiontime += 1
+
+ # print(motiontime)
+ # print(state.imu.rpy[0])
+
+
+ udp.Recv()
+ udp.GetRecv(state)
+
+ if( motiontime >= 0):
+
+ # first, get record initial position
+ if( motiontime >= 0 and motiontime < 10):
+ qInit[0] = state.motorState[d['FR_0']].q
+ qInit[1] = state.motorState[d['FR_1']].q
+ qInit[2] = state.motorState[d['FR_2']].q
+
+ # second, move to the origin point of a sine movement with Kp Kd
+ if( motiontime >= 10 and motiontime < 400):
+ rate_count += 1
+ rate = rate_count/200.0 # needs count to 200
+ Kp = [5, 5, 5]
+ Kd = [1, 1, 1]
+ # Kp = [20, 20, 20]
+ # Kd = [2, 2, 2]
+
+ qDes[0] = jointLinearInterpolation(qInit[0], sin_mid_q[0], rate)
+ qDes[1] = jointLinearInterpolation(qInit[1], sin_mid_q[1], rate)
+ qDes[2] = jointLinearInterpolation(qInit[2], sin_mid_q[2], rate)
+
+ # last, do sine wave
+ freq_Hz = 1
+ # freq_Hz = 5
+ freq_rad = freq_Hz * 2* math.pi
+ t = dt*sin_count
+ if( motiontime >= 400):
+ sin_count += 1
+ # sin_joint1 = 0.6 * sin(3*M_PI*sin_count/1000.0)
+ # sin_joint2 = -0.9 * sin(3*M_PI*sin_count/1000.0)
+ sin_joint1 = 0.6 * math.sin(t*freq_rad)
+ sin_joint2 = -0.9 * math.sin(t*freq_rad)
+ qDes[0] = sin_mid_q[0]
+ qDes[1] = sin_mid_q[1] + sin_joint1
+ qDes[2] = sin_mid_q[2] + sin_joint2
+
+
+ cmd.motorCmd[d['FR_0']].q = qDes[0]
+ cmd.motorCmd[d['FR_0']].dq = 0
+ cmd.motorCmd[d['FR_0']].Kp = Kp[0]
+ cmd.motorCmd[d['FR_0']].Kd = Kd[0]
+ cmd.motorCmd[d['FR_0']].tau = -0.65
+
+ cmd.motorCmd[d['FR_1']].q = qDes[1]
+ cmd.motorCmd[d['FR_1']].dq = 0
+ cmd.motorCmd[d['FR_1']].Kp = Kp[1]
+ cmd.motorCmd[d['FR_1']].Kd = Kd[1]
+ cmd.motorCmd[d['FR_1']].tau = 0.0
+
+ cmd.motorCmd[d['FR_2']].q = qDes[2]
+ cmd.motorCmd[d['FR_2']].dq = 0
+ cmd.motorCmd[d['FR_2']].Kp = Kp[2]
+ cmd.motorCmd[d['FR_2']].Kd = Kd[2]
+ cmd.motorCmd[d['FR_2']].tau = 0.0
+ # cmd.motorCmd[d['FR_2']].tau = 2 * sin(t*freq_rad)
+
+
+ if(motiontime > 10):
+ safe.PowerProtect(cmd, state, 1)
+
+ udp.SetSend(cmd)
+ udp.Send()
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example_py/example_torque.py b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example_py/example_torque.py
new file mode 100644
index 0000000..97e5e2b
--- /dev/null
+++ b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example_py/example_torque.py
@@ -0,0 +1,70 @@
+#!/usr/bin/python
+
+import sys
+import time
+import math
+import numpy as np
+
+sys.path.append('../lib/python/amd64')
+import robot_interface as sdk
+
+
+if __name__ == '__main__':
+
+ d = {'FR_0':0, 'FR_1':1, 'FR_2':2,
+ 'FL_0':3, 'FL_1':4, 'FL_2':5,
+ 'RR_0':6, 'RR_1':7, 'RR_2':8,
+ 'RL_0':9, 'RL_1':10, 'RL_2':11 }
+ PosStopF = math.pow(10,9)
+ VelStopF = 16000.0
+ HIGHLEVEL = 0xee
+ LOWLEVEL = 0xff
+ dt = 0.002
+ sin_count = 0
+
+ udp = sdk.UDP(LOWLEVEL, 8080, "192.168.123.10", 8007)
+ safe = sdk.Safety(sdk.LeggedType.Go1)
+
+ cmd = sdk.LowCmd()
+ state = sdk.LowState()
+ udp.InitCmdData(cmd)
+
+ Tpi = 0
+ motiontime = 0
+ while True:
+ time.sleep(0.002)
+ motiontime += 1
+
+ # freq_Hz = 1
+ freq_Hz = 2
+ # freq_Hz = 5;
+ freq_rad = freq_Hz * 2* math.pi
+ # t = dt*sin_count
+
+ # print(motiontime)
+ # print(state.imu.rpy[0])
+
+
+ udp.Recv()
+ udp.GetRecv(state)
+
+ if( motiontime >= 500):
+ sin_count += 1
+ torque = (0 - state.motorState[d['FR_1']].q)*10.0 + (0 - state.motorState[d['FR_1']].dq)*1.0
+ # torque = (0 - state.motorState[d['FR_1']].q)*20.0 + (0 - state.motorState[d['FR_1']].dq)*2.0
+ # torque = 2 * sin(t*freq_rad)
+ torque = np.fmin(np.fmax(torque, -5.0), 5.0)
+ # torque = np.fmin(np.fmax(torque, -15.0), 15.0)
+
+
+ cmd.motorCmd[d['FR_1']].q = PosStopF
+ cmd.motorCmd[d['FR_1']].dq = VelStopF
+ cmd.motorCmd[d['FR_1']].Kp = 0
+ cmd.motorCmd[d['FR_1']].Kd = 0
+ cmd.motorCmd[d['FR_1']].tau = torque
+
+ if(motiontime > 10):
+ safe.PowerProtect(cmd, state, 1)
+
+ udp.SetSend(cmd)
+ udp.Send()
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example_py/example_velocity.py b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example_py/example_velocity.py
new file mode 100644
index 0000000..f170b39
--- /dev/null
+++ b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example_py/example_velocity.py
@@ -0,0 +1,58 @@
+#!/usr/bin/python
+
+import sys
+import time
+import math
+
+sys.path.append('../lib/python/amd64')
+import robot_interface as sdk
+
+
+if __name__ == '__main__':
+
+ d = {'FR_0':0, 'FR_1':1, 'FR_2':2,
+ 'FL_0':3, 'FL_1':4, 'FL_2':5,
+ 'RR_0':6, 'RR_1':7, 'RR_2':8,
+ 'RL_0':9, 'RL_1':10, 'RL_2':11 }
+ PosStopF = math.pow(10,9)
+ VelStopF = 16000.0
+ HIGHLEVEL = 0xee
+ LOWLEVEL = 0xff
+
+ udp = sdk.UDP(LOWLEVEL, 8080, "192.168.123.10", 8007)
+ safe = sdk.Safety(sdk.LeggedType.Go1)
+
+ cmd = sdk.LowCmd()
+ state = sdk.LowState()
+ udp.InitCmdData(cmd)
+
+ Tpi = 0
+ motiontime = 0
+ while True:
+ time.sleep(0.002)
+ motiontime += 1
+
+ # print(motiontime)
+ # print(state.imu.rpy[0])
+
+
+ udp.Recv()
+ udp.GetRecv(state)
+
+ if( motiontime >= 500):
+ speed = 2 * math.sin(3*math.pi*Tpi/2000.0)
+
+ # cmd.motorCmd[d['FL_2']].q = PosStopF
+ cmd.motorCmd[d['FL_2']].q = 0
+ cmd.motorCmd[d['FL_2']].dq = speed
+ cmd.motorCmd[d['FL_2']].Kp = 0
+ cmd.motorCmd[d['FL_2']].Kd = 4
+ cmd.motorCmd[d['FL_2']].tau = 0.0
+
+ Tpi += 1
+
+ if(motiontime > 10):
+ safe.PowerProtect(cmd, state, 1)
+
+ udp.SetSend(cmd)
+ udp.Send()
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example_py/example_walk.py b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example_py/example_walk.py
new file mode 100644
index 0000000..c697c33
--- /dev/null
+++ b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example_py/example_walk.py
@@ -0,0 +1,119 @@
+#!/usr/bin/python
+
+import sys
+import time
+import math
+
+sys.path.append('../lib/python/amd64')
+import robot_interface as sdk
+
+
+if __name__ == '__main__':
+
+ HIGHLEVEL = 0xee
+ LOWLEVEL = 0xff
+
+ udp = sdk.UDP(HIGHLEVEL, 8080, "192.168.123.161", 8082)
+
+ cmd = sdk.HighCmd()
+ state = sdk.HighState()
+ udp.InitCmdData(cmd)
+
+ motiontime = 0
+ while True:
+ time.sleep(0.002)
+ motiontime = motiontime + 1
+
+ udp.Recv()
+ udp.GetRecv(state)
+
+ # print(motiontime)
+ # print(state.imu.rpy[0])
+ # print(motiontime, state.motorState[0].q, state.motorState[1].q, state.motorState[2].q)
+ # print(state.imu.rpy[0])
+
+ cmd.mode = 0 # 0:idle, default stand 1:forced stand 2:walk continuously
+ cmd.gaitType = 0
+ cmd.speedLevel = 0
+ cmd.footRaiseHeight = 0
+ cmd.bodyHeight = 0
+ cmd.euler = [0, 0, 0]
+ cmd.velocity = [0, 0]
+ cmd.yawSpeed = 0.0
+ cmd.reserve = 0
+
+ # cmd.mode = 2
+ # cmd.gaitType = 1
+ # # cmd.position = [1, 0]
+ # # cmd.position[0] = 2
+ # cmd.velocity = [-0.2, 0] # -1 ~ +1
+ # cmd.yawSpeed = 0
+ # cmd.bodyHeight = 0.1
+
+ if(motiontime > 0 and motiontime < 1000):
+ cmd.mode = 1
+ cmd.euler = [-0.3, 0, 0]
+
+ if(motiontime > 1000 and motiontime < 2000):
+ cmd.mode = 1
+ cmd.euler = [0.3, 0, 0]
+
+ if(motiontime > 2000 and motiontime < 3000):
+ cmd.mode = 1
+ cmd.euler = [0, -0.2, 0]
+
+ if(motiontime > 3000 and motiontime < 4000):
+ cmd.mode = 1
+ cmd.euler = [0, 0.2, 0]
+
+ if(motiontime > 4000 and motiontime < 5000):
+ cmd.mode = 1
+ cmd.euler = [0, 0, -0.2]
+
+ if(motiontime > 5000 and motiontime < 6000):
+ cmd.mode = 1
+ cmd.euler = [0.2, 0, 0]
+
+ if(motiontime > 6000 and motiontime < 7000):
+ cmd.mode = 1
+ cmd.bodyHeight = -0.2
+
+ if(motiontime > 7000 and motiontime < 8000):
+ cmd.mode = 1
+ cmd.bodyHeight = 0.1
+
+ if(motiontime > 8000 and motiontime < 9000):
+ cmd.mode = 1
+ cmd.bodyHeight = 0.0
+
+ if(motiontime > 9000 and motiontime < 11000):
+ cmd.mode = 5
+
+ if(motiontime > 11000 and motiontime < 13000):
+ cmd.mode = 6
+
+ if(motiontime > 13000 and motiontime < 14000):
+ cmd.mode = 0
+
+ if(motiontime > 14000 and motiontime < 18000):
+ cmd.mode = 2
+ cmd.gaitType = 2
+ cmd.velocity = [0.4, 0] # -1 ~ +1
+ cmd.yawSpeed = 2
+ cmd.footRaiseHeight = 0.1
+ # printf("walk\n")
+
+ if(motiontime > 18000 and motiontime < 20000):
+ cmd.mode = 0
+ cmd.velocity = [0, 0]
+
+ if(motiontime > 20000 and motiontime < 24000):
+ cmd.mode = 2
+ cmd.gaitType = 1
+ cmd.velocity = [0.2, 0] # -1 ~ +1
+ cmd.bodyHeight = 0.1
+ # printf("walk\n")
+
+
+ udp.SetSend(cmd)
+ udp.Send()
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example_py/test.py b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example_py/test.py
new file mode 100644
index 0000000..2c4272b
--- /dev/null
+++ b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example_py/test.py
@@ -0,0 +1,7 @@
+import unitree_python_sdk
+unitree_robot = unitree_python_sdk.Unitree_Robot_High()
+
+while True:
+ unitree_robot.execute(yawSpeed=1)
+ state = unitree_robot.getState()
+ # print(state.imu.rpy[0])
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example_py/unitree.py b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example_py/unitree.py
new file mode 100644
index 0000000..127e772
--- /dev/null
+++ b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example_py/unitree.py
@@ -0,0 +1,27 @@
+HIGHLEVEL = 0xee
+LOWLEVEL = 0xff
+
+FR_ = 0 # leg index
+FL_ = 1
+RR_ = 2
+RL_ = 3
+
+FR_0 = 0 # joint index
+FR_1 = 1
+FR_2 = 2
+
+FL_0 = 3
+FL_1 = 4
+FL_2 = 5
+
+RR_0 = 6
+RR_1 = 7
+RR_2 = 8
+
+RL_0 = 9
+RL_1 = 10
+RL_2 = 11
+
+calibration_forwardspeed = 0.0
+calibration_sidespeed = 0.0
+calibration_rotatespeed = 0.0
\ No newline at end of file
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example_py/unitree_python_sdk.py b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example_py/unitree_python_sdk.py
new file mode 100644
index 0000000..2645fbc
--- /dev/null
+++ b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/example_py/unitree_python_sdk.py
@@ -0,0 +1,60 @@
+import sys
+# sys.path.append('/home/unitree/go1_guide/unitree_legged_sdk/lib/python/arm64')
+sys.path.append(r'/home/pi/go1_guide/unitree_legged_sdk/lib/python/arm64')
+import robot_interface as sdk
+
+import unitree
+
+class Unitree_Robot_High():
+ def __init__(self):
+ self.udp = sdk.UDP(unitree.HIGHLEVEL, 8080, "192.168.123.161", 8082)
+ self.cmd = sdk.HighCmd()
+ self.state = sdk.HighState()
+ self.udp.InitCmdData(self.cmd)
+
+ self.init_cmd()
+
+ def init_cmd(self):
+ self.cmd.mode = 0 # 0:idle, default stand 1:forced stand 2:walk continuously
+ self.cmd.gaitType = 0
+ self.cmd.speedLevel = 0
+ self.cmd.footRaiseHeight = 0
+ self.cmd.bodyHeight = 0
+ self.cmd.euler = [0, 0, 0]
+ self.cmd.velocity = [0, 0]
+ self.cmd.yawSpeed = 0.0
+ self.cmd.reserve = 0
+
+ def send_UDP(self):
+ self.udp.SetSend(self.cmd)
+ self.udp.Send()
+
+ def execute(self, mode=2, gaitType=0, speedLevel=0,
+ footRaiseHeight=0, bodyHeight=0,
+ euler=[0,0,0], velocity=[0,0], yawSpeed=0.0, reverve=0):
+ self.init_cmd()
+ self.cmd.mode = mode
+ self.cmd.gaitType = gaitType
+ self.cmd.speedLevel = speedLevel
+ self.cmd.footRaiseHeight = footRaiseHeight
+ self.cmd.bodyHeight = bodyHeight
+ self.cmd.euler = euler
+ self.cmd.velocity = velocity
+ self.cmd.yawSpeed = yawSpeed
+ self.cmd.reserve = reverve
+ self.send_UDP()
+
+ # def pose(self, roll, pitch, yaw, bodyHeight):
+ # self.init_cmd()
+ # self.cmd.mode = 1
+ # self.cmd.bodyHeight = bodyHeight
+ # self.cmd.yaw = yaw
+ # self.cmd.pitch = pitch
+ # self.cmd.roll = roll
+ # self.send_UDP()
+
+ def getState(self):
+ self.udp.Recv()
+ self.udp.GetRecv(self.state)
+ return self.state
+
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/a1_const.h b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/a1_const.h
new file mode 100644
index 0000000..84e8436
--- /dev/null
+++ b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/a1_const.h
@@ -0,0 +1,18 @@
+/*****************************************************************
+ Copyright (c) 2020, Unitree Robotics.Co.Ltd. All rights reserved.
+******************************************************************/
+
+#ifndef _UNITREE_LEGGED_A1_H_
+#define _UNITREE_LEGGED_A1_H_
+
+namespace UNITREE_LEGGED_SDK
+{
+ constexpr double a1_Hip_max = 0.802; // unit:radian ( = 46 degree)
+ constexpr double a1_Hip_min = -0.802; // unit:radian ( = -46 degree)
+ constexpr double a1_Thigh_max = 4.19; // unit:radian ( = 240 degree)
+ constexpr double a1_Thigh_min = -1.05; // unit:radian ( = -60 degree)
+ constexpr double a1_Calf_max = -0.916; // unit:radian ( = -52.5 degree)
+ constexpr double a1_Calf_min = -2.7; // unit:radian ( = -154.5 degree)
+}
+
+#endif
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/aliengo_const.h b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/aliengo_const.h
new file mode 100644
index 0000000..12c3138
--- /dev/null
+++ b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/aliengo_const.h
@@ -0,0 +1,18 @@
+/*****************************************************************
+ Copyright (c) 2020, Unitree Robotics.Co.Ltd. All rights reserved.
+******************************************************************/
+
+#ifndef _UNITREE_LEGGED_ALIENGO_H_
+#define _UNITREE_LEGGED_ALIENGO_H_
+
+namespace UNITREE_LEGGED_SDK
+{
+ constexpr double aliengo_Hip_max = 1.047; // unit:radian ( = 60 degree)
+ constexpr double aliengo_Hip_min = -0.873; // unit:radian ( = -50 degree)
+ constexpr double aliengo_Thigh_max = 3.927; // unit:radian ( = 225 degree)
+ constexpr double aliengo_Thigh_min = -0.524; // unit:radian ( = -30 degree)
+ constexpr double aliengo_Calf_max = -0.611; // unit:radian ( = -35 degree)
+ constexpr double aliengo_Calf_min = -2.775; // unit:radian ( = -159 degree)
+}
+
+#endif
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/comm.h b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/comm.h
new file mode 100644
index 0000000..82c594d
--- /dev/null
+++ b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/comm.h
@@ -0,0 +1,216 @@
+/*****************************************************************
+ Copyright (c) 2020, Unitree Robotics.Co.Ltd. All rights reserved.
+******************************************************************/
+
+#ifndef _UNITREE_LEGGED_COMM_H_
+#define _UNITREE_LEGGED_COMM_H_
+
+#include
+#include
+
+namespace UNITREE_LEGGED_SDK
+{
+
+ constexpr int HIGHLEVEL = 0xee;
+ constexpr int LOWLEVEL = 0xff;
+ constexpr int TRIGERLEVEL = 0xf0;
+ constexpr double PosStopF = (2.146E+9f);
+ constexpr double VelStopF = (16000.0f);
+ extern const int HIGH_CMD_LENGTH; // sizeof(HighCmd)
+ extern const int HIGH_STATE_LENGTH; // sizeof(HighState)
+ extern const int LOW_CMD_LENGTH; // shorter than sizeof(LowCmd), bytes compressed LowCmd length
+ extern const int LOW_STATE_LENGTH; // shorter than sizeof(LowState), bytes compressed LowState length
+
+#pragma pack(1)
+
+ typedef struct
+ {
+ uint8_t off; // off 0xA5
+ std::array reserve;
+ } BmsCmd;
+
+ typedef struct
+ {
+ uint8_t version_h;
+ uint8_t version_l;
+ uint8_t bms_status;
+ uint8_t SOC; // SOC 0-100%
+ int32_t current; // mA
+ uint16_t cycle;
+ std::array BQ_NTC; // x1 degrees centigrade
+ std::array MCU_NTC; // x1 degrees centigrade
+ std::array cell_vol; // cell voltage mV
+ } BmsState;
+
+ typedef struct
+ {
+ float x;
+ float y;
+ float z;
+ } Cartesian;
+
+ typedef struct
+ {
+ std::array quaternion; // quaternion, normalized, (w,x,y,z)
+ std::array gyroscope; // angular velocity (unit: rad/s) (raw data)
+ std::array accelerometer; // m/(s2) (raw data)
+ std::array rpy; // euler angle(unit: rad)
+ int8_t temperature;
+ } IMU; // when under accelerated motion, the attitude of the robot calculated by IMU will drift.
+
+ typedef struct
+ {
+ uint8_t r;
+ uint8_t g;
+ uint8_t b;
+ } LED; // foot led brightness: 0~255
+
+ typedef struct
+ {
+ uint8_t mode; // motor working mode
+ float q; // current angle (unit: radian)
+ float dq; // current velocity (unit: radian/second)
+ float ddq; // current acc (unit: radian/second*second)
+ float tauEst; // current estimated output torque (unit: N.m)
+ float q_raw; // current angle (unit: radian)
+ float dq_raw; // current velocity (unit: radian/second)
+ float ddq_raw;
+ int8_t temperature; // current temperature (temperature conduction is slow that leads to lag)
+ std::array reserve;
+ } MotorState; // motor feedback
+
+ typedef struct
+ {
+ uint8_t mode; // desired working mode
+ float q; // desired angle (unit: radian)
+ float dq; // desired velocity (unit: radian/second)
+ float tau; // desired output torque (unit: N.m)
+ float Kp; // desired position stiffness (unit: N.m/rad )
+ float Kd; // desired velocity stiffness (unit: N.m/(rad/s) )
+ std::array reserve;
+ } MotorCmd; // motor control
+
+ typedef struct
+ {
+ std::array head;
+ uint8_t levelFlag;
+ uint8_t frameReserve;
+
+ std::array SN;
+ std::array version;
+ uint16_t bandWidth;
+ IMU imu;
+ std::array motorState;
+ BmsState bms;
+ std::array footForce; // force sensors
+ std::array footForceEst; // force sensors
+ uint32_t tick; // reference real-time from motion controller (unit: us)
+ std::array wirelessRemote; // wireless commands
+ uint32_t reserve;
+
+ uint32_t crc;
+ } LowState; // low level feedback
+
+ typedef struct
+ {
+ std::array head;
+ uint8_t levelFlag;
+ uint8_t frameReserve;
+
+ std::array SN;
+ std::array version;
+ uint16_t bandWidth;
+ std::array motorCmd;
+ BmsCmd bms;
+ std::array wirelessRemote;
+ uint32_t reserve;
+
+ uint32_t crc;
+ } LowCmd; // low level control
+
+ typedef struct
+ {
+ std::array head;
+ uint8_t levelFlag;
+ uint8_t frameReserve;
+
+ std::array SN;
+ std::array version;
+ uint16_t bandWidth;
+ IMU imu;
+ std::array motorState;
+ BmsState bms;
+ std::array footForce;
+ std::array footForceEst;
+ uint8_t mode;
+ float progress;
+ uint8_t gaitType; // 0.idle 1.trot 2.trot running 3.climb stair 4.trot obstacle
+ float footRaiseHeight; // (unit: m, default: 0.08m), foot up height while walking
+ std::array position; // (unit: m), from own odometry in inertial frame, usually drift
+ float bodyHeight; // (unit: m, default: 0.28m),
+ std::array velocity; // (unit: m/s), forwardSpeed, sideSpeed, rotateSpeed in body frame
+ float yawSpeed; // (unit: rad/s), rotateSpeed in body frame
+ std::array rangeObstacle;
+ std::array footPosition2Body; // foot position relative to body
+ std::array footSpeed2Body; // foot speed relative to body
+ std::array wirelessRemote;
+ uint32_t reserve;
+
+ uint32_t crc;
+ } HighState; // high level feedback
+
+ typedef struct
+ {
+ std::array head;
+ uint8_t levelFlag;
+ uint8_t frameReserve;
+
+ std::array SN;
+ std::array version;
+ uint16_t bandWidth;
+ uint8_t mode; // 0. idle, default stand 1. force stand (controlled by dBodyHeight + ypr)
+ // 2. target velocity walking (controlled by velocity + yawSpeed)
+ // 3. target position walking (controlled by position + ypr[0])
+ // 4. path mode walking (reserve for future release)
+ // 5. position stand down.
+ // 6. position stand up
+ // 7. damping mode
+ // 8. recovery stand
+ // 9. backflip
+ // 10. jumpYaw
+ // 11. straightHand
+ // 12. dance1
+ // 13. dance2
+
+ uint8_t gaitType; // 0.idle 1.trot 2.trot running 3.climb stair 4.trot obstacle
+ uint8_t speedLevel; // 0. default low speed. 1. medium speed 2. high speed. during walking, only respond MODE 3
+ float footRaiseHeight; // (unit: m, default: 0.08m), foot up height while walking, delta value
+ float bodyHeight; // (unit: m, default: 0.28m), delta value
+ std::array position; // (unit: m), desired position in inertial frame
+ std::array euler; // (unit: rad), roll pitch yaw in stand mode
+ std::array velocity; // (unit: m/s), forwardSpeed, sideSpeed in body frame
+ float yawSpeed; // (unit: rad/s), rotateSpeed in body frame
+ BmsCmd bms;
+ std::array led;
+ std::array wirelessRemote;
+ uint32_t reserve;
+
+ uint32_t crc;
+ } HighCmd; // high level control
+
+#pragma pack()
+
+ typedef struct
+ {
+ unsigned long long TotalCount; // total loop count
+ unsigned long long SendCount; // total send count
+ unsigned long long RecvCount; // total receive count
+ unsigned long long SendError; // total send error
+ unsigned long long FlagError; // total flag error
+ unsigned long long RecvCRCError; // total reveive CRC error
+ unsigned long long RecvLoseError; // total lose package count
+ } UDPState; // UDP communication state
+
+}
+
+#endif
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/go1_const.h b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/go1_const.h
new file mode 100644
index 0000000..efdbef2
--- /dev/null
+++ b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/go1_const.h
@@ -0,0 +1,18 @@
+/*****************************************************************
+ Copyright (c) 2020, Unitree Robotics.Co.Ltd. All rights reserved.
+******************************************************************/
+
+#ifndef _UNITREE_LEGGED_GO1_H_
+#define _UNITREE_LEGGED_GO1_H_
+
+namespace UNITREE_LEGGED_SDK
+{
+ constexpr double go1_Hip_max = 1.047; // unit:radian ( = 60 degree)
+ constexpr double go1_Hip_min = -1.047; // unit:radian ( = -60 degree)
+ constexpr double go1_Thigh_max = 2.966; // unit:radian ( = 170 degree)
+ constexpr double go1_Thigh_min = -0.663; // unit:radian ( = -38 degree)
+ constexpr double go1_Calf_max = -0.837; // unit:radian ( = -48 degree)
+ constexpr double go1_Calf_min = -2.721; // unit:radian ( = -156 degree)
+}
+
+#endif
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/joystick.h b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/joystick.h
new file mode 100644
index 0000000..6c1cdd2
--- /dev/null
+++ b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/joystick.h
@@ -0,0 +1,44 @@
+/*****************************************************************
+Copyright (c) 2020, Unitree Robotics.Co.Ltd. All rights reserved.
+*****************************************************************/
+#ifndef _UNITREE_LEGGED_JOYSTICK_H_
+#define _UNITREE_LEGGED_JOYSTICK_H_
+
+#include
+// 16b
+typedef union {
+ struct {
+ uint8_t R1 :1;
+ uint8_t L1 :1;
+ uint8_t start :1;
+ uint8_t select :1;
+ uint8_t R2 :1;
+ uint8_t L2 :1;
+ uint8_t F1 :1;
+ uint8_t F2 :1;
+ uint8_t A :1;
+ uint8_t B :1;
+ uint8_t X :1;
+ uint8_t Y :1;
+ uint8_t up :1;
+ uint8_t right :1;
+ uint8_t down :1;
+ uint8_t left :1;
+ } components;
+ uint16_t value;
+} xKeySwitchUnion;
+
+// 40 Byte (now used 24B)
+typedef struct {
+ uint8_t head[2];
+ xKeySwitchUnion btn;
+ float lx;
+ float rx;
+ float ry;
+ float L2;
+ float ly;
+
+ uint8_t idle[16];
+} xRockerBtnDataStruct;
+
+#endif // _UNITREE_LEGGED_JOYSTICK_H_
\ No newline at end of file
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/loop.h b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/loop.h
new file mode 100644
index 0000000..b8e1d4c
--- /dev/null
+++ b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/loop.h
@@ -0,0 +1,61 @@
+/*****************************************************************
+ Copyright (c) 2020, Unitree Robotics.Co.Ltd. All rights reserved.
+******************************************************************/
+
+#ifndef _UNITREE_LEGGED_LOOP_H_
+#define _UNITREE_LEGGED_LOOP_H_
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+namespace UNITREE_LEGGED_SDK
+{
+
+constexpr int THREAD_PRIORITY = 95; // real-time priority
+
+typedef boost::function Callback;
+
+class Loop {
+public:
+ Loop(std::string name, float period, int bindCPU = -1):_name(name), _period(period), _bindCPU(bindCPU) {}
+ ~Loop();
+ void start();
+ void shutdown();
+ virtual void functionCB() = 0;
+
+private:
+ void entryFunc();
+
+ std::string _name;
+ float _period;
+ int _bindCPU;
+ bool _bind_cpu_flag = false;
+ bool _isrunning = false;
+ std::thread _thread;
+};
+
+/*
+ period unit:second
+ bindCPU change the CPU affinity of this thread
+*/
+class LoopFunc : public Loop {
+public:
+ LoopFunc(std::string name, float period, const Callback& _cb)
+ : Loop(name, period), _fp(_cb){}
+ LoopFunc(std::string name, float period, int bindCPU, const Callback& _cb)
+ : Loop(name, period, bindCPU), _fp(_cb){}
+ void functionCB() { (_fp)(); }
+private:
+ boost::function _fp;
+};
+
+
+}
+
+#endif
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/quadruped.h b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/quadruped.h
new file mode 100644
index 0000000..5ffc794
--- /dev/null
+++ b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/quadruped.h
@@ -0,0 +1,50 @@
+/*****************************************************************
+ Copyright (c) 2020, Unitree Robotics.Co.Ltd. All rights reserved.
+******************************************************************/
+
+#ifndef _UNITREE_LEGGED_QUADRUPED_H_
+#define _UNITREE_LEGGED_QUADRUPED_H_
+
+#include
+
+using namespace std;
+
+namespace UNITREE_LEGGED_SDK
+{
+
+enum class LeggedType {
+ Aliengo,
+ A1,
+ Go1,
+ B1
+};
+
+
+string VersionSDK();
+int InitEnvironment(); // memory lock
+
+// definition of each leg and joint
+constexpr int FR_ = 0; // leg index
+constexpr int FL_ = 1;
+constexpr int RR_ = 2;
+constexpr int RL_ = 3;
+
+constexpr int FR_0 = 0; // joint index
+constexpr int FR_1 = 1;
+constexpr int FR_2 = 2;
+
+constexpr int FL_0 = 3;
+constexpr int FL_1 = 4;
+constexpr int FL_2 = 5;
+
+constexpr int RR_0 = 6;
+constexpr int RR_1 = 7;
+constexpr int RR_2 = 8;
+
+constexpr int RL_0 = 9;
+constexpr int RL_1 = 10;
+constexpr int RL_2 = 11;
+
+}
+
+#endif
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/safety.h b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/safety.h
new file mode 100644
index 0000000..59f6297
--- /dev/null
+++ b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/safety.h
@@ -0,0 +1,31 @@
+/*****************************************************************
+ Copyright (c) 2020, Unitree Robotics.Co.Ltd. All rights reserved.
+******************************************************************/
+
+#ifndef _UNITREE_LEGGED_SAFETY_H_
+#define _UNITREE_LEGGED_SAFETY_H_
+
+#include "comm.h"
+#include "quadruped.h"
+
+namespace UNITREE_LEGGED_SDK
+{
+
+class Safety{
+public:
+ Safety(LeggedType type);
+ ~Safety();
+ void PositionLimit(LowCmd&); // only effect under Low Level control in Position mode
+ int PowerProtect(LowCmd&, LowState&, int); /* only effect under Low Level control, input factor: 1~10,
+ means 10%~100% power limit. If you are new, then use 1; if you are familiar,
+ then can try bigger number or even comment this function. */
+ int PositionProtect(LowCmd&, LowState&, double limit = 0.087); // default limit is 5 degree
+private:
+ int WattLimit, Wcount; // Watt. When limit to 100, you can triger it with 4 hands shaking.
+ double Hip_max, Hip_min, Thigh_max, Thigh_min, Calf_max, Calf_min;
+};
+
+
+}
+
+#endif
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/udp.h b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/udp.h
new file mode 100644
index 0000000..05d5525
--- /dev/null
+++ b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/udp.h
@@ -0,0 +1,101 @@
+/*****************************************************************
+ Copyright (c) 2020, Unitree Robotics.Co.Ltd. All rights reserved.
+******************************************************************/
+
+#ifndef _UNITREE_LEGGED_UDP_H_
+#define _UNITREE_LEGGED_UDP_H_
+
+#include "comm.h"
+#include "unitree_legged_sdk/quadruped.h"
+#include
+#include
+
+/*
+ UDP critical configuration:
+
+ 1. initiativeDisconnect: if need disconnection after connected, another ip/port can access after disconnection
+
+ /--- block will block till data come
+ 2. recvType ---- block + timeout will block till data come or timeout
+ \--- non block if no data will return immediately
+
+ /--- Y ip/port will be set later
+ 3. setIpPort:
+ \--- N ip/port not specified, as a server wait for connect
+*/
+
+
+namespace UNITREE_LEGGED_SDK
+{
+
+ constexpr int UDP_CLIENT_PORT = 8080; // local port
+ constexpr int UDP_SERVER_PORT = 8007; // target port
+ constexpr char UDP_SERVER_IP_BASIC[] = "192.168.123.10"; // target IP address
+ constexpr char UDP_SERVER_IP_SPORT[] = "192.168.123.161"; // target IP address
+
+ typedef enum {
+ nonBlock = 0x00,
+ block = 0x01,
+ blockTimeout = 0x02,
+ } RecvEnum;
+
+ // Notice: User defined data(like struct) should add crc(4Byte) at the end.
+ class UDP {
+ public:
+ UDP(uint8_t level, uint16_t localPort, const char* targetIP, uint16_t targetPort); // udp use dafault length according to level
+ UDP(uint16_t localPort, const char* targetIP, uint16_t targetPort,
+ int sendLength, int recvLength, bool initiativeDisconnect = false, RecvEnum recvType = RecvEnum::nonBlock);
+ UDP(uint16_t localPort,
+ int sendLength, int recvLength, bool initiativeDisconnect = false, RecvEnum recvType = RecvEnum::nonBlock, bool setIpPort = false);
+ ~UDP();
+
+ void SetIpPort(const char* targetIP, uint16_t targetPort); // if not indicated at constructor function
+ void SetRecvTimeout(int time); // use in RecvEnum::blockTimeout (unit: ms)
+
+ void SetDisconnectTime(float callback_dt, float disconnectTime); // initiativeDisconnect = true, disconnect for another IP to connect
+ void SetAccessibleTime(float callback_dt, float accessibleTime); // check if can access data
+
+ int Send();
+ int Recv(); // directly save in buffer
+
+ void InitCmdData(HighCmd& cmd);
+ void InitCmdData(LowCmd& cmd);
+ int SetSend(char*);
+ int SetSend(HighCmd&);
+ int SetSend(LowCmd&);
+ void GetRecv(char*);
+ void GetRecv(HighState&);
+ void GetRecv(LowState&);
+
+ UDPState udpState;
+ char* targetIP;
+ uint16_t targetPort;
+ char* localIP;
+ uint16_t localPort;
+ bool accessible = false; // can access or not
+
+ private:
+ void init(uint16_t localPort, const char* targetIP = NULL, uint16_t targetPort = 0);
+
+ int sockFd;
+ bool connected; // udp works with connect() function, rather than server mode
+ int sendLength;
+ int recvLength;
+ int lose_recv;
+
+ char* recvBuf;
+ char* recvAvaliable;
+ char* sendBuf;
+ pthread_mutex_t sendMutex;
+ pthread_mutex_t recvMutex;
+ pthread_mutex_t udpMutex;
+
+ bool nonblock = true;
+ int blockTimeout = -1; // use time out method or not, (unit: ms)
+ bool initiativeDisconnect = false; //
+
+ };
+
+}
+
+#endif
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/unitree_legged_sdk.h b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/unitree_legged_sdk.h
new file mode 100644
index 0000000..074b449
--- /dev/null
+++ b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/include/unitree_legged_sdk/unitree_legged_sdk.h
@@ -0,0 +1,18 @@
+/*****************************************************************
+ Copyright (c) 2020, Unitree Robotics.Co.Ltd. All rights reserved.
+******************************************************************/
+
+#ifndef _UNITREE_LEGGED_SDK_H_
+#define _UNITREE_LEGGED_SDK_H_
+
+#include "comm.h"
+#include "safety.h"
+#include "udp.h"
+#include "loop.h"
+#include "quadruped.h"
+#include "joystick.h"
+#include
+
+#define UT UNITREE_LEGGED_SDK //short name
+
+#endif
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/lib/cpp/amd64/libunitree_legged_sdk.a b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/lib/cpp/amd64/libunitree_legged_sdk.a
new file mode 100644
index 0000000..baa788a
Binary files /dev/null and b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/lib/cpp/amd64/libunitree_legged_sdk.a differ
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/lib/cpp/arm64/libunitree_legged_sdk.a b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/lib/cpp/arm64/libunitree_legged_sdk.a
new file mode 100644
index 0000000..78515e9
Binary files /dev/null and b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/lib/cpp/arm64/libunitree_legged_sdk.a differ
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/lib/python/amd64/robot_interface.cpython-38-x86_64-linux-gnu.so b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/lib/python/amd64/robot_interface.cpython-38-x86_64-linux-gnu.so
new file mode 100644
index 0000000..86775dc
Binary files /dev/null and b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/lib/python/amd64/robot_interface.cpython-38-x86_64-linux-gnu.so differ
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/lib/python/arm64/robot_interface.cpython-37m-aarch64-linux-gnu.so b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/lib/python/arm64/robot_interface.cpython-37m-aarch64-linux-gnu.so
new file mode 100644
index 0000000..d9a30f4
Binary files /dev/null and b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/lib/python/arm64/robot_interface.cpython-37m-aarch64-linux-gnu.so differ
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/lib/python/arm64/robot_interface.cpython-38-aarch64-linux-gnu.so b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/lib/python/arm64/robot_interface.cpython-38-aarch64-linux-gnu.so
new file mode 100644
index 0000000..c13db01
Binary files /dev/null and b/src/Robot/go1_guide/raspberrypi/unitree_legged_sdk/lib/python/arm64/robot_interface.cpython-38-aarch64-linux-gnu.so differ
diff --git a/src/Robot/go1_guide/raspberrypi/unitree_python_sdk.py b/src/Robot/go1_guide/raspberrypi/unitree_python_sdk.py
new file mode 100644
index 0000000..4ec70b6
--- /dev/null
+++ b/src/Robot/go1_guide/raspberrypi/unitree_python_sdk.py
@@ -0,0 +1,60 @@
+import sys
+# sys.path.append('/home/unitree/go1_guide/raspberrypi/unitree_legged_sdk/lib/python/arm64')
+sys.path.append(r'/home/pi/go1_guide/raspberrypi/unitree_legged_sdk/lib/python/arm64')
+import robot_interface as sdk
+
+import unitree
+
+class Unitree_Robot_High():
+ def __init__(self):
+ self.udp = sdk.UDP(unitree.HIGHLEVEL, 8080, "192.168.123.161", 8082)
+ self.cmd = sdk.HighCmd()
+ self.state = sdk.HighState()
+ self.udp.InitCmdData(self.cmd)
+
+ self.init_cmd()
+
+ def init_cmd(self):
+ self.cmd.mode = 0 # 0:idle, default stand 1:forced stand 2:walk continuously
+ self.cmd.gaitType = 0
+ self.cmd.speedLevel = 0
+ self.cmd.footRaiseHeight = 0
+ self.cmd.bodyHeight = 0
+ self.cmd.euler = [0, 0, 0]
+ self.cmd.velocity = [0, 0]
+ self.cmd.yawSpeed = 0.0
+ self.cmd.reserve = 0
+
+ def send_UDP(self):
+ self.udp.SetSend(self.cmd)
+ self.udp.Send()
+
+ def execute(self, mode=2, gaitType=0, speedLevel=0,
+ footRaiseHeight=0, bodyHeight=0,
+ euler=[0,0,0], velocity=[0,0], yawSpeed=0.0, reverve=0):
+ self.init_cmd()
+ self.cmd.mode = mode
+ self.cmd.gaitType = gaitType
+ self.cmd.speedLevel = speedLevel
+ self.cmd.footRaiseHeight = footRaiseHeight
+ self.cmd.bodyHeight = bodyHeight
+ self.cmd.euler = euler
+ self.cmd.velocity = velocity
+ self.cmd.yawSpeed = yawSpeed
+ self.cmd.reserve = reverve
+ self.send_UDP()
+
+ # def pose(self, roll, pitch, yaw, bodyHeight):
+ # self.init_cmd()
+ # self.cmd.mode = 1
+ # self.cmd.bodyHeight = bodyHeight
+ # self.cmd.yaw = yaw
+ # self.cmd.pitch = pitch
+ # self.cmd.roll = roll
+ # self.send_UDP()
+
+ def getState(self):
+ self.udp.Recv()
+ self.udp.GetRecv(self.state)
+ return self.state
+
diff --git a/src/Robot/go1_guide/setup.sh b/src/Robot/go1_guide/setup.sh
new file mode 100644
index 0000000..1dbd223
--- /dev/null
+++ b/src/Robot/go1_guide/setup.sh
@@ -0,0 +1,5 @@
+## install PaddleDetection
+git clone https://gitee.com/PaddlePaddle/PaddleDetection.git
+cd ~/PaddleDetection
+pip install -r requirements.txt
+python setup.py install
diff --git a/src/Robot/go1_guide/test.py b/src/Robot/go1_guide/test.py
new file mode 100644
index 0000000..4b811b1
--- /dev/null
+++ b/src/Robot/go1_guide/test.py
@@ -0,0 +1,17 @@
+import cv2
+from core.Camera import Camera
+
+vedio = Camera('http://192.168.123.13:5000/video1')
+
+t = 5
+while True:
+ frame = vedio.getframe()
+ # cv2.imshow('test', frame)
+
+ t -= 1
+ if not t:
+ cv2.imwrite('test.jpg', frame)
+ break
+
+ waitkey = cv2.waitKey(1)
+ if waitkey == ord('q'): break
diff --git a/src/Robot/unilidar_sdk/.VSCodeCounter/2024-06-17_19-42-01/details.md b/src/Robot/unilidar_sdk/.VSCodeCounter/2024-06-17_19-42-01/details.md
new file mode 100644
index 0000000..a238746
--- /dev/null
+++ b/src/Robot/unilidar_sdk/.VSCodeCounter/2024-06-17_19-42-01/details.md
@@ -0,0 +1,62 @@
+# Details
+
+Date : 2024-06-17 19:42:01
+
+Directory d:\\Administrator\\Desktop\\unilidar_sdk
+
+Total : 47 files, 6250 codes, 1726 comments, 1144 blanks, all 9120 lines
+
+[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
+
+## Files
+| filename | language | code | comment | blank | total |
+| :--- | :--- | ---: | ---: | ---: | ---: |
+| [README.md](/README.md) | Markdown | 19 | 0 | 9 | 28 |
+| [unitree_lidar_ros2/src/unitree_lidar_ros2/README.md](/unitree_lidar_ros2/src/unitree_lidar_ros2/README.md) | Markdown | 60 | 0 | 24 | 84 |
+| [unitree_lidar_ros2/src/unitree_lidar_ros2/include/unitree_lidar_ros2.h](/unitree_lidar_ros2/src/unitree_lidar_ros2/include/unitree_lidar_ros2.h) | C++ | 113 | 16 | 44 | 173 |
+| [unitree_lidar_ros2/src/unitree_lidar_ros2/launch/launch.py](/unitree_lidar_ros2/src/unitree_lidar_ros2/launch/launch.py) | Python | 24 | 13 | 4 | 41 |
+| [unitree_lidar_ros2/src/unitree_lidar_ros2/package.xml](/unitree_lidar_ros2/src/unitree_lidar_ros2/package.xml) | XML | 20 | 0 | 5 | 25 |
+| [unitree_lidar_ros2/src/unitree_lidar_ros2/rviz/view.rviz](/unitree_lidar_ros2/src/unitree_lidar_ros2/rviz/view.rviz) | YAML | 168 | 0 | 1 | 169 |
+| [unitree_lidar_ros2/src/unitree_lidar_ros2/src/unitree_lidar_ros2_node.cpp](/unitree_lidar_ros2/src/unitree_lidar_ros2/src/unitree_lidar_ros2_node.cpp) | C++ | 9 | 3 | 2 | 14 |
+| [unitree_lidar_ros/src/unitree_lidar_ros/README.md](/unitree_lidar_ros/src/unitree_lidar_ros/README.md) | Markdown | 58 | 0 | 24 | 82 |
+| [unitree_lidar_ros/src/unitree_lidar_ros/config/config.yaml](/unitree_lidar_ros/src/unitree_lidar_ros/config/config.yaml) | YAML | 16 | 9 | 6 | 31 |
+| [unitree_lidar_ros/src/unitree_lidar_ros/include/unitree_lidar_ros.h](/unitree_lidar_ros/src/unitree_lidar_ros/include/unitree_lidar_ros.h) | C++ | 123 | 27 | 36 | 186 |
+| [unitree_lidar_ros/src/unitree_lidar_ros/launch/run.launch](/unitree_lidar_ros/src/unitree_lidar_ros/launch/run.launch) | XML | 6 | 0 | 5 | 11 |
+| [unitree_lidar_ros/src/unitree_lidar_ros/launch/run_without_rviz.launch](/unitree_lidar_ros/src/unitree_lidar_ros/launch/run_without_rviz.launch) | XML | 5 | 1 | 5 | 11 |
+| [unitree_lidar_ros/src/unitree_lidar_ros/package.xml](/unitree_lidar_ros/src/unitree_lidar_ros/package.xml) | XML | 34 | 0 | 11 | 45 |
+| [unitree_lidar_ros/src/unitree_lidar_ros/rviz/view.rviz](/unitree_lidar_ros/src/unitree_lidar_ros/rviz/view.rviz) | YAML | 169 | 0 | 1 | 170 |
+| [unitree_lidar_ros/src/unitree_lidar_ros/src/unitree_lidar_ros_node.cpp](/unitree_lidar_ros/src/unitree_lidar_ros/src/unitree_lidar_ros_node.cpp) | C++ | 14 | 6 | 6 | 26 |
+| [unitree_lidar_sdk/HowToParsePointCloudAndIMUDataFromMavLinkMessages.md](/unitree_lidar_sdk/HowToParsePointCloudAndIMUDataFromMavLinkMessages.md) | Markdown | 147 | 0 | 27 | 174 |
+| [unitree_lidar_sdk/README.md](/unitree_lidar_sdk/README.md) | Markdown | 148 | 0 | 47 | 195 |
+| [unitree_lidar_sdk/examples/example_lidar.cpp](/unitree_lidar_sdk/examples/example_lidar.cpp) | C++ | 107 | 10 | 23 | 140 |
+| [unitree_lidar_sdk/examples/example_lidar_udp.cpp](/unitree_lidar_sdk/examples/example_lidar_udp.cpp) | C++ | 120 | 10 | 27 | 157 |
+| [unitree_lidar_sdk/examples/unilidar_publisher_udp.cpp](/unitree_lidar_sdk/examples/unilidar_publisher_udp.cpp) | C++ | 118 | 9 | 25 | 152 |
+| [unitree_lidar_sdk/examples/unilidar_subcriber_udp.py](/unitree_lidar_sdk/examples/unilidar_subcriber_udp.py) | Python | 71 | 7 | 17 | 95 |
+| [unitree_lidar_sdk/examples/unilidar_subscriber_udp.cpp](/unitree_lidar_sdk/examples/unilidar_subscriber_udp.cpp) | C++ | 84 | 4 | 15 | 103 |
+| [unitree_lidar_sdk/include/mavlink/SysMavlink/SysMavlink.h](/unitree_lidar_sdk/include/mavlink/SysMavlink/SysMavlink.h) | C++ | 158 | 18 | 29 | 205 |
+| [unitree_lidar_sdk/include/mavlink/SysMavlink/mavlink.h](/unitree_lidar_sdk/include/mavlink/SysMavlink/mavlink.h) | C++ | 22 | 4 | 9 | 35 |
+| [unitree_lidar_sdk/include/mavlink/SysMavlink/mavlink_msg_config_led_ring_table_packet.h](/unitree_lidar_sdk/include/mavlink/SysMavlink/mavlink_msg_config_led_ring_table_packet.h) | C++ | 181 | 98 | 27 | 306 |
+| [unitree_lidar_sdk/include/mavlink/SysMavlink/mavlink_msg_config_lidar_working_mode.h](/unitree_lidar_sdk/include/mavlink/SysMavlink/mavlink_msg_config_lidar_working_mode.h) | C++ | 116 | 66 | 32 | 214 |
+| [unitree_lidar_sdk/include/mavlink/SysMavlink/mavlink_msg_device_command.h](/unitree_lidar_sdk/include/mavlink/SysMavlink/mavlink_msg_device_command.h) | C++ | 116 | 66 | 32 | 214 |
+| [unitree_lidar_sdk/include/mavlink/SysMavlink/mavlink_msg_device_request_data.h](/unitree_lidar_sdk/include/mavlink/SysMavlink/mavlink_msg_device_request_data.h) | C++ | 116 | 66 | 32 | 214 |
+| [unitree_lidar_sdk/include/mavlink/SysMavlink/mavlink_msg_ret_imu_attitude_data_packet.h](/unitree_lidar_sdk/include/mavlink/SysMavlink/mavlink_msg_ret_imu_attitude_data_packet.h) | C++ | 167 | 90 | 26 | 283 |
+| [unitree_lidar_sdk/include/mavlink/SysMavlink/mavlink_msg_ret_lidar_auxiliary_data_packet.h](/unitree_lidar_sdk/include/mavlink/SysMavlink/mavlink_msg_ret_lidar_auxiliary_data_packet.h) | C++ | 501 | 258 | 47 | 806 |
+| [unitree_lidar_sdk/include/mavlink/SysMavlink/mavlink_msg_ret_lidar_distance_data_packet.h](/unitree_lidar_sdk/include/mavlink/SysMavlink/mavlink_msg_ret_lidar_distance_data_packet.h) | C++ | 165 | 90 | 26 | 281 |
+| [unitree_lidar_sdk/include/mavlink/SysMavlink/mavlink_msg_ret_lidar_time_sync_data.h](/unitree_lidar_sdk/include/mavlink/SysMavlink/mavlink_msg_ret_lidar_time_sync_data.h) | C++ | 132 | 74 | 33 | 239 |
+| [unitree_lidar_sdk/include/mavlink/SysMavlink/mavlink_msg_ret_lidar_version.h](/unitree_lidar_sdk/include/mavlink/SysMavlink/mavlink_msg_ret_lidar_version.h) | C++ | 168 | 90 | 34 | 292 |
+| [unitree_lidar_sdk/include/mavlink/SysMavlink/testsuite.h](/unitree_lidar_sdk/include/mavlink/SysMavlink/testsuite.h) | C++ | 877 | 19 | 131 | 1,027 |
+| [unitree_lidar_sdk/include/mavlink/SysMavlink/version.h](/unitree_lidar_sdk/include/mavlink/SysMavlink/version.h) | C++ | 7 | 4 | 4 | 15 |
+| [unitree_lidar_sdk/include/mavlink/checksum.h](/unitree_lidar_sdk/include/mavlink/checksum.h) | C++ | 44 | 37 | 15 | 96 |
+| [unitree_lidar_sdk/include/mavlink/mavlink_conversions.h](/unitree_lidar_sdk/include/mavlink/mavlink_conversions.h) | C++ | 122 | 64 | 27 | 213 |
+| [unitree_lidar_sdk/include/mavlink/mavlink_get_info.h](/unitree_lidar_sdk/include/mavlink/mavlink_get_info.h) | C++ | 60 | 17 | 7 | 84 |
+| [unitree_lidar_sdk/include/mavlink/mavlink_helpers.h](/unitree_lidar_sdk/include/mavlink/mavlink_helpers.h) | C++ | 756 | 284 | 95 | 1,135 |
+| [unitree_lidar_sdk/include/mavlink/mavlink_sha256.h](/unitree_lidar_sdk/include/mavlink/mavlink_sha256.h) | C++ | 163 | 46 | 27 | 236 |
+| [unitree_lidar_sdk/include/mavlink/mavlink_types.h](/unitree_lidar_sdk/include/mavlink/mavlink_types.h) | C++ | 209 | 56 | 37 | 302 |
+| [unitree_lidar_sdk/include/mavlink/protocol.h](/unitree_lidar_sdk/include/mavlink/protocol.h) | C++ | 273 | 21 | 41 | 335 |
+| [unitree_lidar_sdk/include/parse_range_auxiliary_data_to_cloud.h](/unitree_lidar_sdk/include/parse_range_auxiliary_data_to_cloud.h) | C++ | 52 | 17 | 12 | 81 |
+| [unitree_lidar_sdk/include/udp_handler.h](/unitree_lidar_sdk/include/udp_handler.h) | C++ | 30 | 12 | 9 | 51 |
+| [unitree_lidar_sdk/include/unitree_lidar_sdk.h](/unitree_lidar_sdk/include/unitree_lidar_sdk.h) | C++ | 117 | 100 | 36 | 253 |
+| [unitree_lidar_sdk/include/unitree_lidar_sdk_config.h](/unitree_lidar_sdk/include/unitree_lidar_sdk_config.h) | C++ | 4 | 0 | 1 | 5 |
+| [unitree_lidar_sdk/include/unitree_lidar_sdk_pcl.h](/unitree_lidar_sdk/include/unitree_lidar_sdk_pcl.h) | C++ | 61 | 14 | 11 | 86 |
+
+[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
\ No newline at end of file
diff --git a/src/Robot/unilidar_sdk/.VSCodeCounter/2024-06-17_19-42-01/diff-details.md b/src/Robot/unilidar_sdk/.VSCodeCounter/2024-06-17_19-42-01/diff-details.md
new file mode 100644
index 0000000..736bce2
--- /dev/null
+++ b/src/Robot/unilidar_sdk/.VSCodeCounter/2024-06-17_19-42-01/diff-details.md
@@ -0,0 +1,15 @@
+# Diff Details
+
+Date : 2024-06-17 19:42:01
+
+Directory d:\\Administrator\\Desktop\\unilidar_sdk
+
+Total : 0 files, 0 codes, 0 comments, 0 blanks, all 0 lines
+
+[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details
+
+## Files
+| filename | language | code | comment | blank | total |
+| :--- | :--- | ---: | ---: | ---: | ---: |
+
+[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details
\ No newline at end of file
diff --git a/src/Robot/unilidar_sdk/.VSCodeCounter/2024-06-17_19-42-01/diff.csv b/src/Robot/unilidar_sdk/.VSCodeCounter/2024-06-17_19-42-01/diff.csv
new file mode 100644
index 0000000..b7d8d75
--- /dev/null
+++ b/src/Robot/unilidar_sdk/.VSCodeCounter/2024-06-17_19-42-01/diff.csv
@@ -0,0 +1,2 @@
+"filename", "language", "", "comment", "blank", "total"
+"Total", "-", , 0, 0, 0
\ No newline at end of file
diff --git a/src/Robot/unilidar_sdk/.VSCodeCounter/2024-06-17_19-42-01/diff.md b/src/Robot/unilidar_sdk/.VSCodeCounter/2024-06-17_19-42-01/diff.md
new file mode 100644
index 0000000..4f78f41
--- /dev/null
+++ b/src/Robot/unilidar_sdk/.VSCodeCounter/2024-06-17_19-42-01/diff.md
@@ -0,0 +1,19 @@
+# Diff Summary
+
+Date : 2024-06-17 19:42:01
+
+Directory d:\\Administrator\\Desktop\\unilidar_sdk
+
+Total : 0 files, 0 codes, 0 comments, 0 blanks, all 0 lines
+
+[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md)
+
+## Languages
+| language | files | code | comment | blank | total |
+| :--- | ---: | ---: | ---: | ---: | ---: |
+
+## Directories
+| path | files | code | comment | blank | total |
+| :--- | ---: | ---: | ---: | ---: | ---: |
+
+[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md)
\ No newline at end of file
diff --git a/src/Robot/unilidar_sdk/.VSCodeCounter/2024-06-17_19-42-01/diff.txt b/src/Robot/unilidar_sdk/.VSCodeCounter/2024-06-17_19-42-01/diff.txt
new file mode 100644
index 0000000..781072f
--- /dev/null
+++ b/src/Robot/unilidar_sdk/.VSCodeCounter/2024-06-17_19-42-01/diff.txt
@@ -0,0 +1,22 @@
+Date : 2024-06-17 19:42:01
+Directory : d:\Administrator\Desktop\unilidar_sdk
+Total : 0 files, 0 codes, 0 comments, 0 blanks, all 0 lines
+
+Languages
++----------+------------+------------+------------+------------+------------+
+| language | files | code | comment | blank | total |
++----------+------------+------------+------------+------------+------------+
++----------+------------+------------+------------+------------+------------+
+
+Directories
++------+------------+------------+------------+------------+------------+
+| path | files | code | comment | blank | total |
++------+------------+------------+------------+------------+------------+
++------+------------+------------+------------+------------+------------+
+
+Files
++----------+----------+------------+------------+------------+------------+
+| filename | language | code | comment | blank | total |
++----------+----------+------------+------------+------------+------------+
+| Total | | 0 | 0 | 0 | 0 |
++----------+----------+------------+------------+------------+------------+
\ No newline at end of file
diff --git a/src/Robot/unilidar_sdk/.VSCodeCounter/2024-06-17_19-42-01/results.csv b/src/Robot/unilidar_sdk/.VSCodeCounter/2024-06-17_19-42-01/results.csv
new file mode 100644
index 0000000..810bb57
--- /dev/null
+++ b/src/Robot/unilidar_sdk/.VSCodeCounter/2024-06-17_19-42-01/results.csv
@@ -0,0 +1,49 @@
+"filename", "language", "C++", "Python", "Markdown", "XML", "YAML", "comment", "blank", "total"
+"d:\Administrator\Desktop\unilidar_sdk\README.md", "Markdown", 0, 0, 19, 0, 0, 0, 9, 28
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_ros2\src\unitree_lidar_ros2\README.md", "Markdown", 0, 0, 60, 0, 0, 0, 24, 84
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_ros2\src\unitree_lidar_ros2\include\unitree_lidar_ros2.h", "C++", 113, 0, 0, 0, 0, 16, 44, 173
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_ros2\src\unitree_lidar_ros2\launch\launch.py", "Python", 0, 24, 0, 0, 0, 13, 4, 41
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_ros2\src\unitree_lidar_ros2\package.xml", "XML", 0, 0, 0, 20, 0, 0, 5, 25
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_ros2\src\unitree_lidar_ros2\rviz\view.rviz", "YAML", 0, 0, 0, 0, 168, 0, 1, 169
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_ros2\src\unitree_lidar_ros2\src\unitree_lidar_ros2_node.cpp", "C++", 9, 0, 0, 0, 0, 3, 2, 14
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_ros\src\unitree_lidar_ros\README.md", "Markdown", 0, 0, 58, 0, 0, 0, 24, 82
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_ros\src\unitree_lidar_ros\config\config.yaml", "YAML", 0, 0, 0, 0, 16, 9, 6, 31
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_ros\src\unitree_lidar_ros\include\unitree_lidar_ros.h", "C++", 123, 0, 0, 0, 0, 27, 36, 186
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_ros\src\unitree_lidar_ros\launch\run.launch", "XML", 0, 0, 0, 6, 0, 0, 5, 11
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_ros\src\unitree_lidar_ros\launch\run_without_rviz.launch", "XML", 0, 0, 0, 5, 0, 1, 5, 11
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_ros\src\unitree_lidar_ros\package.xml", "XML", 0, 0, 0, 34, 0, 0, 11, 45
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_ros\src\unitree_lidar_ros\rviz\view.rviz", "YAML", 0, 0, 0, 0, 169, 0, 1, 170
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_ros\src\unitree_lidar_ros\src\unitree_lidar_ros_node.cpp", "C++", 14, 0, 0, 0, 0, 6, 6, 26
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\HowToParsePointCloudAndIMUDataFromMavLinkMessages.md", "Markdown", 0, 0, 147, 0, 0, 0, 27, 174
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\README.md", "Markdown", 0, 0, 148, 0, 0, 0, 47, 195
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\examples\example_lidar.cpp", "C++", 107, 0, 0, 0, 0, 10, 23, 140
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\examples\example_lidar_udp.cpp", "C++", 120, 0, 0, 0, 0, 10, 27, 157
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\examples\unilidar_publisher_udp.cpp", "C++", 118, 0, 0, 0, 0, 9, 25, 152
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\examples\unilidar_subcriber_udp.py", "Python", 0, 71, 0, 0, 0, 7, 17, 95
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\examples\unilidar_subscriber_udp.cpp", "C++", 84, 0, 0, 0, 0, 4, 15, 103
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\SysMavlink\SysMavlink.h", "C++", 158, 0, 0, 0, 0, 18, 29, 205
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\SysMavlink\mavlink.h", "C++", 22, 0, 0, 0, 0, 4, 9, 35
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\SysMavlink\mavlink_msg_config_led_ring_table_packet.h", "C++", 181, 0, 0, 0, 0, 98, 27, 306
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\SysMavlink\mavlink_msg_config_lidar_working_mode.h", "C++", 116, 0, 0, 0, 0, 66, 32, 214
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\SysMavlink\mavlink_msg_device_command.h", "C++", 116, 0, 0, 0, 0, 66, 32, 214
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\SysMavlink\mavlink_msg_device_request_data.h", "C++", 116, 0, 0, 0, 0, 66, 32, 214
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\SysMavlink\mavlink_msg_ret_imu_attitude_data_packet.h", "C++", 167, 0, 0, 0, 0, 90, 26, 283
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\SysMavlink\mavlink_msg_ret_lidar_auxiliary_data_packet.h", "C++", 501, 0, 0, 0, 0, 258, 47, 806
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\SysMavlink\mavlink_msg_ret_lidar_distance_data_packet.h", "C++", 165, 0, 0, 0, 0, 90, 26, 281
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\SysMavlink\mavlink_msg_ret_lidar_time_sync_data.h", "C++", 132, 0, 0, 0, 0, 74, 33, 239
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\SysMavlink\mavlink_msg_ret_lidar_version.h", "C++", 168, 0, 0, 0, 0, 90, 34, 292
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\SysMavlink\testsuite.h", "C++", 877, 0, 0, 0, 0, 19, 131, 1027
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\SysMavlink\version.h", "C++", 7, 0, 0, 0, 0, 4, 4, 15
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\checksum.h", "C++", 44, 0, 0, 0, 0, 37, 15, 96
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\mavlink_conversions.h", "C++", 122, 0, 0, 0, 0, 64, 27, 213
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\mavlink_get_info.h", "C++", 60, 0, 0, 0, 0, 17, 7, 84
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\mavlink_helpers.h", "C++", 756, 0, 0, 0, 0, 284, 95, 1135
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\mavlink_sha256.h", "C++", 163, 0, 0, 0, 0, 46, 27, 236
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\mavlink_types.h", "C++", 209, 0, 0, 0, 0, 56, 37, 302
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\protocol.h", "C++", 273, 0, 0, 0, 0, 21, 41, 335
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\parse_range_auxiliary_data_to_cloud.h", "C++", 52, 0, 0, 0, 0, 17, 12, 81
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\udp_handler.h", "C++", 30, 0, 0, 0, 0, 12, 9, 51
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\unitree_lidar_sdk.h", "C++", 117, 0, 0, 0, 0, 100, 36, 253
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\unitree_lidar_sdk_config.h", "C++", 4, 0, 0, 0, 0, 0, 1, 5
+"d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\unitree_lidar_sdk_pcl.h", "C++", 61, 0, 0, 0, 0, 14, 11, 86
+"Total", "-", 5305, 95, 432, 65, 353, 1726, 1144, 9120
\ No newline at end of file
diff --git a/src/Robot/unilidar_sdk/.VSCodeCounter/2024-06-17_19-42-01/results.json b/src/Robot/unilidar_sdk/.VSCodeCounter/2024-06-17_19-42-01/results.json
new file mode 100644
index 0000000..b13b4cb
--- /dev/null
+++ b/src/Robot/unilidar_sdk/.VSCodeCounter/2024-06-17_19-42-01/results.json
@@ -0,0 +1 @@
+{"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/examples/unilidar_subscriber_udp.cpp":{"language":"C++","code":84,"comment":4,"blank":15},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/examples/unilidar_publisher_udp.cpp":{"language":"C++","code":118,"comment":9,"blank":25},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/examples/unilidar_subcriber_udp.py":{"language":"Python","code":71,"comment":7,"blank":17},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/examples/example_lidar_udp.cpp":{"language":"C++","code":120,"comment":10,"blank":27},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/examples/example_lidar.cpp":{"language":"C++","code":107,"comment":10,"blank":23},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/include/unitree_lidar_sdk_pcl.h":{"language":"C++","code":61,"comment":14,"blank":11},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/include/unitree_lidar_sdk.h":{"language":"C++","code":117,"comment":100,"blank":36},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/include/unitree_lidar_sdk_config.h":{"language":"C++","code":4,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/include/udp_handler.h":{"language":"C++","code":30,"comment":12,"blank":9},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/include/parse_range_auxiliary_data_to_cloud.h":{"language":"C++","code":52,"comment":17,"blank":12},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/include/mavlink/protocol.h":{"language":"C++","code":273,"comment":21,"blank":41},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/include/mavlink/mavlink_types.h":{"language":"C++","code":209,"comment":56,"blank":37},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/include/mavlink/mavlink_helpers.h":{"language":"C++","code":756,"comment":284,"blank":95},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/include/mavlink/mavlink_sha256.h":{"language":"C++","code":163,"comment":46,"blank":27},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/include/mavlink/checksum.h":{"language":"C++","code":44,"comment":37,"blank":15},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/include/mavlink/mavlink_get_info.h":{"language":"C++","code":60,"comment":17,"blank":7},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/include/mavlink/mavlink_conversions.h":{"language":"C++","code":122,"comment":64,"blank":27},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/include/mavlink/SysMavlink/mavlink_msg_ret_lidar_time_sync_data.h":{"language":"C++","code":132,"comment":74,"blank":33},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/include/mavlink/SysMavlink/mavlink_msg_ret_imu_attitude_data_packet.h":{"language":"C++","code":167,"comment":90,"blank":26},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/include/mavlink/SysMavlink/mavlink_msg_device_request_data.h":{"language":"C++","code":116,"comment":66,"blank":32},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/include/mavlink/SysMavlink/mavlink_msg_device_command.h":{"language":"C++","code":116,"comment":66,"blank":32},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/include/mavlink/SysMavlink/mavlink_msg_ret_lidar_auxiliary_data_packet.h":{"language":"C++","code":501,"comment":258,"blank":47},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/include/mavlink/SysMavlink/mavlink_msg_ret_lidar_distance_data_packet.h":{"language":"C++","code":165,"comment":90,"blank":26},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/include/mavlink/SysMavlink/testsuite.h":{"language":"C++","code":877,"comment":19,"blank":131},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/include/mavlink/SysMavlink/version.h":{"language":"C++","code":7,"comment":4,"blank":4},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/include/mavlink/SysMavlink/SysMavlink.h":{"language":"C++","code":158,"comment":18,"blank":29},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/include/mavlink/SysMavlink/mavlink_msg_config_led_ring_table_packet.h":{"language":"C++","code":181,"comment":98,"blank":27},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/src/unitree_lidar_ros2_node.cpp":{"language":"C++","code":9,"comment":3,"blank":2},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/include/mavlink/SysMavlink/mavlink_msg_config_lidar_working_mode.h":{"language":"C++","code":116,"comment":66,"blank":32},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/include/mavlink/SysMavlink/mavlink.h":{"language":"C++","code":22,"comment":4,"blank":9},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/include/mavlink/SysMavlink/mavlink_msg_ret_lidar_version.h":{"language":"C++","code":168,"comment":90,"blank":34},"file:///d%3A/Administrator/Desktop/unilidar_sdk/README.md":{"language":"Markdown","code":19,"comment":0,"blank":9},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/src/unitree_lidar_ros_node.cpp":{"language":"C++","code":14,"comment":6,"blank":6},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/package.xml":{"language":"XML","code":34,"comment":0,"blank":11},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/HowToParsePointCloudAndIMUDataFromMavLinkMessages.md":{"language":"Markdown","code":147,"comment":0,"blank":27},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/include/unitree_lidar_ros.h":{"language":"C++","code":123,"comment":27,"blank":36},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/config/config.yaml":{"language":"YAML","code":16,"comment":9,"blank":6},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_sdk/README.md":{"language":"Markdown","code":148,"comment":0,"blank":47},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/package.xml":{"language":"XML","code":20,"comment":0,"blank":5},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/launch/run_without_rviz.launch":{"language":"XML","code":5,"comment":1,"blank":5},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/include/unitree_lidar_ros2.h":{"language":"C++","code":113,"comment":16,"blank":44},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/launch/launch.py":{"language":"Python","code":24,"comment":13,"blank":4},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/rviz/view.rviz":{"language":"YAML","code":169,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/launch/run.launch":{"language":"XML","code":6,"comment":0,"blank":5},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/README.md":{"language":"Markdown","code":60,"comment":0,"blank":24},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/rviz/view.rviz":{"language":"YAML","code":168,"comment":0,"blank":1},"file:///d%3A/Administrator/Desktop/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/README.md":{"language":"Markdown","code":58,"comment":0,"blank":24}}
\ No newline at end of file
diff --git a/src/Robot/unilidar_sdk/.VSCodeCounter/2024-06-17_19-42-01/results.md b/src/Robot/unilidar_sdk/.VSCodeCounter/2024-06-17_19-42-01/results.md
new file mode 100644
index 0000000..d5fc140
--- /dev/null
+++ b/src/Robot/unilidar_sdk/.VSCodeCounter/2024-06-17_19-42-01/results.md
@@ -0,0 +1,51 @@
+# Summary
+
+Date : 2024-06-17 19:42:01
+
+Directory d:\\Administrator\\Desktop\\unilidar_sdk
+
+Total : 47 files, 6250 codes, 1726 comments, 1144 blanks, all 9120 lines
+
+Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
+
+## Languages
+| language | files | code | comment | blank | total |
+| :--- | ---: | ---: | ---: | ---: | ---: |
+| C++ | 33 | 5,305 | 1,696 | 958 | 7,959 |
+| Markdown | 5 | 432 | 0 | 131 | 563 |
+| YAML | 3 | 353 | 9 | 8 | 370 |
+| Python | 2 | 95 | 20 | 21 | 136 |
+| XML | 4 | 65 | 1 | 26 | 92 |
+
+## Directories
+| path | files | code | comment | blank | total |
+| :--- | ---: | ---: | ---: | ---: | ---: |
+| . | 47 | 6,250 | 1,726 | 1,144 | 9,120 |
+| . (Files) | 1 | 19 | 0 | 9 | 28 |
+| unitree_lidar_ros | 8 | 425 | 43 | 94 | 562 |
+| unitree_lidar_ros2 | 6 | 394 | 32 | 80 | 506 |
+| unitree_lidar_ros2\\src | 6 | 394 | 32 | 80 | 506 |
+| unitree_lidar_ros2\\src\\unitree_lidar_ros2 | 6 | 394 | 32 | 80 | 506 |
+| unitree_lidar_ros2\\src\\unitree_lidar_ros2 (Files) | 2 | 80 | 0 | 29 | 109 |
+| unitree_lidar_ros2\\src\\unitree_lidar_ros2\\include | 1 | 113 | 16 | 44 | 173 |
+| unitree_lidar_ros2\\src\\unitree_lidar_ros2\\launch | 1 | 24 | 13 | 4 | 41 |
+| unitree_lidar_ros2\\src\\unitree_lidar_ros2\\rviz | 1 | 168 | 0 | 1 | 169 |
+| unitree_lidar_ros2\\src\\unitree_lidar_ros2\\src | 1 | 9 | 3 | 2 | 14 |
+| unitree_lidar_ros\\src | 8 | 425 | 43 | 94 | 562 |
+| unitree_lidar_ros\\src\\unitree_lidar_ros | 8 | 425 | 43 | 94 | 562 |
+| unitree_lidar_ros\\src\\unitree_lidar_ros (Files) | 2 | 92 | 0 | 35 | 127 |
+| unitree_lidar_ros\\src\\unitree_lidar_ros\\config | 1 | 16 | 9 | 6 | 31 |
+| unitree_lidar_ros\\src\\unitree_lidar_ros\\include | 1 | 123 | 27 | 36 | 186 |
+| unitree_lidar_ros\\src\\unitree_lidar_ros\\launch | 2 | 11 | 1 | 10 | 22 |
+| unitree_lidar_ros\\src\\unitree_lidar_ros\\rviz | 1 | 169 | 0 | 1 | 170 |
+| unitree_lidar_ros\\src\\unitree_lidar_ros\\src | 1 | 14 | 6 | 6 | 26 |
+| unitree_lidar_sdk | 32 | 5,412 | 1,651 | 961 | 8,024 |
+| unitree_lidar_sdk (Files) | 2 | 295 | 0 | 74 | 369 |
+| unitree_lidar_sdk\\examples | 5 | 500 | 40 | 107 | 647 |
+| unitree_lidar_sdk\\include | 25 | 4,617 | 1,611 | 780 | 7,008 |
+| unitree_lidar_sdk\\include (Files) | 5 | 264 | 143 | 69 | 476 |
+| unitree_lidar_sdk\\include\\mavlink | 20 | 4,353 | 1,468 | 711 | 6,532 |
+| unitree_lidar_sdk\\include\\mavlink (Files) | 7 | 1,627 | 525 | 249 | 2,401 |
+| unitree_lidar_sdk\\include\\mavlink\\SysMavlink | 13 | 2,726 | 943 | 462 | 4,131 |
+
+Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
\ No newline at end of file
diff --git a/src/Robot/unilidar_sdk/.VSCodeCounter/2024-06-17_19-42-01/results.txt b/src/Robot/unilidar_sdk/.VSCodeCounter/2024-06-17_19-42-01/results.txt
new file mode 100644
index 0000000..ff0e90a
--- /dev/null
+++ b/src/Robot/unilidar_sdk/.VSCodeCounter/2024-06-17_19-42-01/results.txt
@@ -0,0 +1,101 @@
+Date : 2024-06-17 19:42:01
+Directory : d:\Administrator\Desktop\unilidar_sdk
+Total : 47 files, 6250 codes, 1726 comments, 1144 blanks, all 9120 lines
+
+Languages
++----------+------------+------------+------------+------------+------------+
+| language | files | code | comment | blank | total |
++----------+------------+------------+------------+------------+------------+
+| C++ | 33 | 5,305 | 1,696 | 958 | 7,959 |
+| Markdown | 5 | 432 | 0 | 131 | 563 |
+| YAML | 3 | 353 | 9 | 8 | 370 |
+| Python | 2 | 95 | 20 | 21 | 136 |
+| XML | 4 | 65 | 1 | 26 | 92 |
++----------+------------+------------+------------+------------+------------+
+
+Directories
++----------------------------------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
+| path | files | code | comment | blank | total |
++----------------------------------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
+| . | 47 | 6,250 | 1,726 | 1,144 | 9,120 |
+| . (Files) | 1 | 19 | 0 | 9 | 28 |
+| unitree_lidar_ros | 8 | 425 | 43 | 94 | 562 |
+| unitree_lidar_ros2 | 6 | 394 | 32 | 80 | 506 |
+| unitree_lidar_ros2\src | 6 | 394 | 32 | 80 | 506 |
+| unitree_lidar_ros2\src\unitree_lidar_ros2 | 6 | 394 | 32 | 80 | 506 |
+| unitree_lidar_ros2\src\unitree_lidar_ros2 (Files) | 2 | 80 | 0 | 29 | 109 |
+| unitree_lidar_ros2\src\unitree_lidar_ros2\include | 1 | 113 | 16 | 44 | 173 |
+| unitree_lidar_ros2\src\unitree_lidar_ros2\launch | 1 | 24 | 13 | 4 | 41 |
+| unitree_lidar_ros2\src\unitree_lidar_ros2\rviz | 1 | 168 | 0 | 1 | 169 |
+| unitree_lidar_ros2\src\unitree_lidar_ros2\src | 1 | 9 | 3 | 2 | 14 |
+| unitree_lidar_ros\src | 8 | 425 | 43 | 94 | 562 |
+| unitree_lidar_ros\src\unitree_lidar_ros | 8 | 425 | 43 | 94 | 562 |
+| unitree_lidar_ros\src\unitree_lidar_ros (Files) | 2 | 92 | 0 | 35 | 127 |
+| unitree_lidar_ros\src\unitree_lidar_ros\config | 1 | 16 | 9 | 6 | 31 |
+| unitree_lidar_ros\src\unitree_lidar_ros\include | 1 | 123 | 27 | 36 | 186 |
+| unitree_lidar_ros\src\unitree_lidar_ros\launch | 2 | 11 | 1 | 10 | 22 |
+| unitree_lidar_ros\src\unitree_lidar_ros\rviz | 1 | 169 | 0 | 1 | 170 |
+| unitree_lidar_ros\src\unitree_lidar_ros\src | 1 | 14 | 6 | 6 | 26 |
+| unitree_lidar_sdk | 32 | 5,412 | 1,651 | 961 | 8,024 |
+| unitree_lidar_sdk (Files) | 2 | 295 | 0 | 74 | 369 |
+| unitree_lidar_sdk\examples | 5 | 500 | 40 | 107 | 647 |
+| unitree_lidar_sdk\include | 25 | 4,617 | 1,611 | 780 | 7,008 |
+| unitree_lidar_sdk\include (Files) | 5 | 264 | 143 | 69 | 476 |
+| unitree_lidar_sdk\include\mavlink | 20 | 4,353 | 1,468 | 711 | 6,532 |
+| unitree_lidar_sdk\include\mavlink (Files) | 7 | 1,627 | 525 | 249 | 2,401 |
+| unitree_lidar_sdk\include\mavlink\SysMavlink | 13 | 2,726 | 943 | 462 | 4,131 |
++----------------------------------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
+
+Files
++----------------------------------------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+
+| filename | language | code | comment | blank | total |
++----------------------------------------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+
+| d:\Administrator\Desktop\unilidar_sdk\README.md | Markdown | 19 | 0 | 9 | 28 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_ros2\src\unitree_lidar_ros2\README.md | Markdown | 60 | 0 | 24 | 84 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_ros2\src\unitree_lidar_ros2\include\unitree_lidar_ros2.h | C++ | 113 | 16 | 44 | 173 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_ros2\src\unitree_lidar_ros2\launch\launch.py | Python | 24 | 13 | 4 | 41 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_ros2\src\unitree_lidar_ros2\package.xml | XML | 20 | 0 | 5 | 25 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_ros2\src\unitree_lidar_ros2\rviz\view.rviz | YAML | 168 | 0 | 1 | 169 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_ros2\src\unitree_lidar_ros2\src\unitree_lidar_ros2_node.cpp | C++ | 9 | 3 | 2 | 14 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_ros\src\unitree_lidar_ros\README.md | Markdown | 58 | 0 | 24 | 82 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_ros\src\unitree_lidar_ros\config\config.yaml | YAML | 16 | 9 | 6 | 31 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_ros\src\unitree_lidar_ros\include\unitree_lidar_ros.h | C++ | 123 | 27 | 36 | 186 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_ros\src\unitree_lidar_ros\launch\run.launch | XML | 6 | 0 | 5 | 11 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_ros\src\unitree_lidar_ros\launch\run_without_rviz.launch | XML | 5 | 1 | 5 | 11 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_ros\src\unitree_lidar_ros\package.xml | XML | 34 | 0 | 11 | 45 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_ros\src\unitree_lidar_ros\rviz\view.rviz | YAML | 169 | 0 | 1 | 170 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_ros\src\unitree_lidar_ros\src\unitree_lidar_ros_node.cpp | C++ | 14 | 6 | 6 | 26 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\HowToParsePointCloudAndIMUDataFromMavLinkMessages.md | Markdown | 147 | 0 | 27 | 174 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\README.md | Markdown | 148 | 0 | 47 | 195 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\examples\example_lidar.cpp | C++ | 107 | 10 | 23 | 140 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\examples\example_lidar_udp.cpp | C++ | 120 | 10 | 27 | 157 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\examples\unilidar_publisher_udp.cpp | C++ | 118 | 9 | 25 | 152 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\examples\unilidar_subcriber_udp.py | Python | 71 | 7 | 17 | 95 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\examples\unilidar_subscriber_udp.cpp | C++ | 84 | 4 | 15 | 103 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\SysMavlink\SysMavlink.h | C++ | 158 | 18 | 29 | 205 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\SysMavlink\mavlink.h | C++ | 22 | 4 | 9 | 35 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\SysMavlink\mavlink_msg_config_led_ring_table_packet.h | C++ | 181 | 98 | 27 | 306 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\SysMavlink\mavlink_msg_config_lidar_working_mode.h | C++ | 116 | 66 | 32 | 214 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\SysMavlink\mavlink_msg_device_command.h | C++ | 116 | 66 | 32 | 214 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\SysMavlink\mavlink_msg_device_request_data.h | C++ | 116 | 66 | 32 | 214 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\SysMavlink\mavlink_msg_ret_imu_attitude_data_packet.h | C++ | 167 | 90 | 26 | 283 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\SysMavlink\mavlink_msg_ret_lidar_auxiliary_data_packet.h | C++ | 501 | 258 | 47 | 806 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\SysMavlink\mavlink_msg_ret_lidar_distance_data_packet.h | C++ | 165 | 90 | 26 | 281 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\SysMavlink\mavlink_msg_ret_lidar_time_sync_data.h | C++ | 132 | 74 | 33 | 239 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\SysMavlink\mavlink_msg_ret_lidar_version.h | C++ | 168 | 90 | 34 | 292 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\SysMavlink\testsuite.h | C++ | 877 | 19 | 131 | 1,027 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\SysMavlink\version.h | C++ | 7 | 4 | 4 | 15 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\checksum.h | C++ | 44 | 37 | 15 | 96 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\mavlink_conversions.h | C++ | 122 | 64 | 27 | 213 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\mavlink_get_info.h | C++ | 60 | 17 | 7 | 84 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\mavlink_helpers.h | C++ | 756 | 284 | 95 | 1,135 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\mavlink_sha256.h | C++ | 163 | 46 | 27 | 236 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\mavlink_types.h | C++ | 209 | 56 | 37 | 302 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\mavlink\protocol.h | C++ | 273 | 21 | 41 | 335 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\parse_range_auxiliary_data_to_cloud.h | C++ | 52 | 17 | 12 | 81 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\udp_handler.h | C++ | 30 | 12 | 9 | 51 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\unitree_lidar_sdk.h | C++ | 117 | 100 | 36 | 253 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\unitree_lidar_sdk_config.h | C++ | 4 | 0 | 1 | 5 |
+| d:\Administrator\Desktop\unilidar_sdk\unitree_lidar_sdk\include\unitree_lidar_sdk_pcl.h | C++ | 61 | 14 | 11 | 86 |
+| Total | | 6,250 | 1,726 | 1,144 | 9,120 |
++----------------------------------------------------------------------------------------------------------------------------------+----------+------------+------------+------------+------------+
\ No newline at end of file
diff --git a/src/Robot/unilidar_sdk/.gitignore b/src/Robot/unilidar_sdk/.gitignore
new file mode 100644
index 0000000..48f5967
--- /dev/null
+++ b/src/Robot/unilidar_sdk/.gitignore
@@ -0,0 +1,12 @@
+unitree_lidar_ros/build
+unitree_lidar_ros/devel
+unitree_lidar_ros/.catkin_workspace
+unitree_lidar_ros/src/CMakeLists.txt
+
+
+unitree_lidar_ros2/build
+unitree_lidar_ros2/install
+unitree_lidar_ros2/log
+
+unitree_lidar_sdk/bin
+unitree_lidar_sdk/build
\ No newline at end of file
diff --git a/src/Robot/unilidar_sdk/LICENSE b/src/Robot/unilidar_sdk/LICENSE
new file mode 100644
index 0000000..d1febdc
--- /dev/null
+++ b/src/Robot/unilidar_sdk/LICENSE
@@ -0,0 +1,29 @@
+BSD 3-Clause License
+
+Copyright (c) 2016-2023 HangZhou YuShu TECHNOLOGY CO.,LTD. ("Unitree Robotics")
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/src/Robot/unilidar_sdk/README.md b/src/Robot/unilidar_sdk/README.md
new file mode 100644
index 0000000..b3299b8
--- /dev/null
+++ b/src/Robot/unilidar_sdk/README.md
@@ -0,0 +1,28 @@
+# Unilidar SDK
+
+## Introduction
+This repository is a SDK for [Unitree L1 LiDAR](https://www.unitree.com/LiDAR).
+
+You can use the code interfaces in this repository to obtain point cloud data and IMU data measured in our lidar, as well as configure related parameters.
+
+We provide three commonly used interfaces for our LiDAR:
+- if you prefer to use the original **C++ SDK** directly, you can refer to [README.md](./unitree_lidar_sdk/README.md);
+- if you want to use **ROS**, you can refer to [README.md](./unitree_lidar_ros/src/unitree_lidar_ros/README.md);
+- if you are developing with the latest **ROS2**, you can refer to [README.md](./unitree_lidar_ros2/src/unitree_lidar_ros2/README.md).
+
+
+## Coordinate System Definition
+The reference frame definition is illustrated in the following figure, which satisfies the right-hand coordinate system definition.
+
+The origin of the lidar frame, which is used to represent coordinates of each point in a pointcloud, is located at the center of the bottom mounting surface of the lidar.
+- Its +X axis is in the opposite direction of the outgoing cable.
+- Its +Y axis is in the the direction obtained by rotating the +X axis counterclockwise by 90 degrees.
+- And its +Z axis is vertically upward.
+
+The IMU frame's axes are aligned and parallel to the directions of the point cloud coordinate system. The XYZ coordinates of its origin in the lidar frame is [-0.007698, -0.014655, 0.00667] in meters.
+
+You can also go to our [official website](https://www.unitree.com/download) for further technical details of our lidar.
+
+
+
+
\ No newline at end of file
diff --git a/src/Robot/unilidar_sdk/docs/lidar.png b/src/Robot/unilidar_sdk/docs/lidar.png
new file mode 100644
index 0000000..09b2c73
Binary files /dev/null and b/src/Robot/unilidar_sdk/docs/lidar.png differ
diff --git a/src/Robot/unilidar_sdk/docs/lidar_frame_definition.jpg b/src/Robot/unilidar_sdk/docs/lidar_frame_definition.jpg
new file mode 100644
index 0000000..ea76da4
Binary files /dev/null and b/src/Robot/unilidar_sdk/docs/lidar_frame_definition.jpg differ
diff --git a/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/CMakeLists.txt b/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/CMakeLists.txt
new file mode 100644
index 0000000..a40fc8c
--- /dev/null
+++ b/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/CMakeLists.txt
@@ -0,0 +1,61 @@
+cmake_minimum_required(VERSION 2.8.3)
+project(unitree_lidar_ros)
+
+set(CMAKE_BUILD_TYPE "Release")
+set(CMAKE_CXX_FLAGS "-std=c++14")
+set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb -llz4")
+set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall -DNDEBUG -llz4")
+
+find_package(PCL REQUIRED QUIET)
+
+find_package(catkin REQUIRED COMPONENTS
+ tf
+ roscpp
+ rospy
+ rosparam
+ pcl_conversions
+ std_msgs
+ sensor_msgs
+ geometry_msgs
+ nav_msgs
+ message_generation
+ visualization_msgs
+ roslib
+)
+
+catkin_package(
+ INCLUDE_DIRS include
+ DEPENDS PCL
+
+ CATKIN_DEPENDS
+ rosparam
+ std_msgs
+ nav_msgs
+ geometry_msgs
+ sensor_msgs
+ message_runtime
+ message_generation
+ visualization_msgs
+)
+
+include_directories(
+ include
+ ${catkin_INCLUDE_DIRS}
+ ${PCL_INCLUDE_DIRS}
+ ../../../unitree_lidar_sdk/include
+)
+
+link_directories(
+ lib
+ ${PCL_LIBRARY_DIRS}
+ ../../../unitree_lidar_sdk/lib/${CMAKE_SYSTEM_PROCESSOR}
+)
+
+set(EXTRA_LIBS
+ ${catkin_LIBRARIES}
+ ${PCL_LIBRARIES}
+ libunitree_lidar_sdk.a
+)
+
+add_executable(unitree_lidar_ros_node src/unitree_lidar_ros_node.cpp)
+target_link_libraries(unitree_lidar_ros_node ${EXTRA_LIBS})
\ No newline at end of file
diff --git a/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/README.md b/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/README.md
new file mode 100644
index 0000000..7112c10
--- /dev/null
+++ b/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/README.md
@@ -0,0 +1,82 @@
+# Unitree Lidar ROS
+
+## Introduction
+This package is a ROS package, which is specially used for running Unitree LiDAR products.
+
+
+The functions that this package can provide includes:
+- Parse the raw data transmitted from the lidar hardware, and convert it into pointcloud and IMU data
+- Publish the pointcloud data to a ROS topic
+- Publish the IMU data to a ROS topic
+- In addition, we provide a yaml file to configure the relevant parameters of the lidar.
+
+## Dependency
+The dependencies include `PCL` and `ROS`.
+
+We have verified that this package can successfully run under this environment:
+- `Ubuntu 20.04`
+- `ROS noetic`
+- `PCL-1.10`
+- `unitree_lidar_sdk`
+
+You are suggested to configure an environment like this to run this package.
+
+
+## Configuration
+
+Connect your lidar to your computer with a USB cable, then confirm your serial port name for lidar:
+```
+$ ls /dev/ttyUSB*
+/dev/ttyUSB0
+```
+
+The default serial port name is `/dev/ttyUSB0`.
+If it is not the default one, you need to modify the configuration in `unitree_lidar_ros/config/config.yaml`
+and change the `port` name to yours. For example
+```
+# Serial Port
+port: "/dev/ttyYourUSBPortName"
+```
+
+You can leave other parameters in the configuration file with their default value.
+
+If you have special needs such as changing the cloud topic name or IMU topic name, you are allowed to configure them in the configuration file as well.
+
+The defalut cloud topic and its frame name is:
+- topic: "unilidar/cloud"
+- frame: "unilidar_lidar"
+
+The defalut IMU topic and its frame name is:
+- topic: "unilidar/imu"
+- frame: "unilidar_imu"
+
+## Build
+You can just build this ROS package as follows:
+- Clone the repository
+```
+git clone https://github.com/unitreerobotics/unilidar_sdk.git
+```
+
+- Compile
+```
+cd unilidar_sdk/unitree_lidar_ros
+
+catkin_make
+```
+
+
+## Run
+Then you need to source this ROS packege environment and then directly run the launch file:
+```
+source devel/setup.bash
+
+roslaunch unitree_lidar_ros run.launch
+```
+
+In the Rviz window, you will see our lidar pointcloud like this:
+
+
+
+You can change the `Fixed Frame` to the imu frame `unilidar_imu`, so that you can view the IMU quaternion vector:
+
+
\ No newline at end of file
diff --git a/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/config/config.yaml b/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/config/config.yaml
new file mode 100644
index 0000000..f3c96f4
--- /dev/null
+++ b/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/config/config.yaml
@@ -0,0 +1,31 @@
+####################################################
+# lidar sdk configuration
+####################################################
+
+# Initialization Type
+initialize_type: 1 # 1-Serial, 2-UDP
+
+# Serial Port
+port: "/dev/ttyUSB0" # default: "/dev/ttyUSB0"
+
+# UDP Port
+lidar_port: 6101
+lidar_ip: "10.10.10.10"
+local_port: 6201
+local_ip: "10.10.10.100"
+
+# Calibration
+rotate_yaw_bias: 0 # default: 0 in degree
+range_scale: 0.001 # default: 0.001 in meters
+range_bias: 0 # default: 0 in meters
+range_max: 50 # default: 50 in meters
+range_min: 0.0 # default: 0 in meters
+
+# PointCloud
+cloud_frame: "unilidar_lidar" # default: "unilidar_lidar"
+cloud_topic: "unilidar/cloud" # default: "unilidar/cloud"
+cloud_scan_num: 18 # default: 18
+
+# IMU
+imu_frame: "unilidar_imu" # default: "unilidar_imu"
+imu_topic: "unilidar/imu" # default: "unilidar/imu"
\ No newline at end of file
diff --git a/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/docs/cloud.png b/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/docs/cloud.png
new file mode 100644
index 0000000..b782037
Binary files /dev/null and b/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/docs/cloud.png differ
diff --git a/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/docs/imu.png b/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/docs/imu.png
new file mode 100644
index 0000000..345c29b
Binary files /dev/null and b/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/docs/imu.png differ
diff --git a/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/include/unitree_lidar_ros.h b/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/include/unitree_lidar_ros.h
new file mode 100644
index 0000000..1dd9cda
--- /dev/null
+++ b/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/include/unitree_lidar_ros.h
@@ -0,0 +1,186 @@
+/**********************************************************************
+ Copyright (c) 2020-2023, Unitree Robotics.Co.Ltd. All rights reserved.
+***********************************************************************/
+
+#pragma once
+
+// ROS
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+// PCL
+#include
+
+// Eigen
+#include
+#include
+
+#include "unitree_lidar_sdk_pcl.h"
+
+/**
+ * @brief Publish a pointcloud
+ *
+ * @param thisPub
+ * @param thisCloud
+ * @param thisStamp
+ * @param thisFrame
+ * @return sensor_msgs::PointCloud2
+ */
+inline sensor_msgs::PointCloud2 publishCloud(
+ ros::Publisher *thisPub,
+ pcl::PointCloud::Ptr thisCloud,
+ ros::Time thisStamp,
+ std::string thisFrame)
+{
+ sensor_msgs::PointCloud2 tempCloud;
+ pcl::toROSMsg(*thisCloud, tempCloud);
+ tempCloud.header.stamp = thisStamp;
+ tempCloud.header.frame_id = thisFrame;
+ if (thisPub->getNumSubscribers() != 0)
+ thisPub->publish(tempCloud);
+ return tempCloud;
+}
+
+/**
+ * @brief Unitree Lidar SDK Node
+ */
+class UnitreeLidarSDKNode{
+protected:
+
+ // ROS
+ ros::NodeHandle nh_;
+ ros::Publisher pub_pointcloud_raw_;
+ ros::Publisher pub_imu_;
+ tf::TransformBroadcaster tfbc1_;
+
+ // Unitree Lidar Reader
+ UnitreeLidarReader* lsdk_;
+
+ // Config params
+ std::string port_;
+
+ double rotate_yaw_bias_;
+ double range_scale_;
+ double range_bias_;
+ double range_max_;
+ double range_min_;
+
+ std::string cloud_frame_;
+ std::string cloud_topic_;
+ int cloud_scan_num_;
+
+ std::string imu_frame_;
+ std::string imu_topic_;
+
+ int initialize_type_;
+ int local_port_;
+ std::string local_ip_;
+ int lidar_port_;
+ std::string lidar_ip_;
+
+public:
+
+ UnitreeLidarSDKNode(ros::NodeHandle nh){
+
+ // Load config parameters
+ nh.param("/unitree_lidar_ros_node/initialize_type", initialize_type_, 1);
+
+ nh.param("/unitree_lidar_ros_node/port", port_, std::string("/dev/ttyUSB0"));
+
+ nh.param("/unitree_lidar_ros_node/lidar_port", lidar_port_, 6101);
+ nh.param("/unitree_lidar_ros_node/lidar_ip", lidar_ip_, std::string("10.10.10.10"));
+ nh.param("/unitree_lidar_ros_node/local_port", local_port_, 6201);
+ nh.param("/unitree_lidar_ros_node/local_ip", local_ip_, std::string("10.10.10.100"));
+
+ nh.param("/unitree_lidar_ros_node/rotate_yaw_bias", rotate_yaw_bias_, 0.0);
+ nh.param("/unitree_lidar_ros_node/range_scale", range_scale_, 0.001);
+ nh.param("/unitree_lidar_ros_node/range_bias", range_bias_, 0.0);
+ nh.param("/unitree_lidar_ros_node/range_max", range_max_, 50.0);
+ nh.param("/unitree_lidar_ros_node/range_min", range_min_, 0.0);
+
+ nh.param("/unitree_lidar_ros_node/cloud_frame", cloud_frame_, std::string("unilidar_lidar"));
+ nh.param("/unitree_lidar_ros_node/cloud_topic", cloud_topic_, std::string("unilidar/cloud"));
+ nh.param("/unitree_lidar_ros_node/cloud_scan_num", cloud_scan_num_, 18);
+ nh.param("/unitree_lidar_ros_node/imu_frame", imu_frame_, std::string("unilidar_imu"));
+ nh.param("/unitree_lidar_ros_node/imu_topic", imu_topic_, std::string("unilidar/imu"));
+
+ // Initialize UnitreeLidarReader
+ lsdk_ = createUnitreeLidarReader();
+
+ if (initialize_type_ == 1){
+ lsdk_->initialize(cloud_scan_num_, port_, 2000000, rotate_yaw_bias_,
+ range_scale_, range_bias_, range_max_, range_min_);
+ }
+ else if (initialize_type_ == 2){
+ lsdk_->initializeUDP(cloud_scan_num_, lidar_port_, lidar_ip_, local_port_, local_ip_,
+ rotate_yaw_bias_, range_scale_, range_bias_, range_max_, range_min_);
+ }
+
+
+ lsdk_->setLidarWorkingMode(NORMAL);
+
+ // ROS
+ nh_ = nh;
+ pub_pointcloud_raw_ = nh.advertise (cloud_topic_, 100);
+ pub_imu_ = nh.advertise (imu_topic_, 1000);
+ }
+
+ ~UnitreeLidarSDKNode(){
+ }
+
+ /**
+ * @brief Run once
+ */
+ bool run(){
+ MessageType result = lsdk_->runParse();
+ pcl::PointCloud::Ptr cloudOut( new pcl::PointCloud() );
+
+ if (result == IMU){
+ auto & imu = lsdk_->getIMU();
+ sensor_msgs::Imu imuMsg;
+ imuMsg.header.frame_id = imu_frame_;
+ imuMsg.header.stamp = ros::Time::now().fromSec(imu.stamp);
+
+ imuMsg.orientation.x = imu.quaternion[0];
+ imuMsg.orientation.y = imu.quaternion[1];
+ imuMsg.orientation.z = imu.quaternion[2];
+ imuMsg.orientation.w = imu.quaternion[3];
+
+ imuMsg.angular_velocity.x = imu.angular_velocity[0];
+ imuMsg.angular_velocity.y = imu.angular_velocity[1];
+ imuMsg.angular_velocity.z = imu.angular_velocity[2];
+
+ imuMsg.linear_acceleration.x = imu.linear_acceleration[0];
+ imuMsg.linear_acceleration.y = imu.linear_acceleration[1];
+ imuMsg.linear_acceleration.z = imu.linear_acceleration[2];
+
+ pub_imu_.publish(imuMsg);
+
+ return true;
+ }
+ else if (result == POINTCLOUD){
+ auto &cloud = lsdk_->getCloud();
+ transformUnitreeCloudToPCL(cloud, cloudOut);
+ publishCloud(&pub_pointcloud_raw_, cloudOut, ros::Time::now().fromSec(cloud.stamp), cloud_frame_);
+
+ return true;
+ }else{
+ return false;
+ }
+
+ }
+};
\ No newline at end of file
diff --git a/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/launch/run.launch b/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/launch/run.launch
new file mode 100644
index 0000000..aab1954
--- /dev/null
+++ b/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/launch/run.launch
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/launch/run_without_rviz.launch b/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/launch/run_without_rviz.launch
new file mode 100644
index 0000000..d3be6f1
--- /dev/null
+++ b/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/launch/run_without_rviz.launch
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/package.xml b/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/package.xml
new file mode 100644
index 0000000..a5e90d3
--- /dev/null
+++ b/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/package.xml
@@ -0,0 +1,44 @@
+
+
+ unitree_lidar_ros
+ 1.0.0
+ Unitree Lidar SDK for ROS
+
+ Luke Meng
+
+ TODO
+
+ Luke Meng
+
+ catkin
+
+ roscpp
+ roscpp
+ rospy
+ rospy
+ rosparam
+ rosparam
+
+ tf
+ tf
+
+ pcl_conversions
+ pcl_conversions
+
+ std_msgs
+ std_msgs
+ sensor_msgs
+ sensor_msgs
+ geometry_msgs
+ geometry_msgs
+ nav_msgs
+ nav_msgs
+ visualization_msgs
+ visualization_msgs
+
+ message_generation
+ message_generation
+ message_runtime
+ message_runtime
+
+
diff --git a/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/rviz/view.rviz b/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/rviz/view.rviz
new file mode 100644
index 0000000..ab99a45
--- /dev/null
+++ b/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/rviz/view.rviz
@@ -0,0 +1,169 @@
+Panels:
+ - Class: rviz/Displays
+ Help Height: 78
+ Name: Displays
+ Property Tree Widget:
+ Expanded:
+ - /Global Options1
+ - /Status1
+ - /PointCloud21
+ - /PointCloud21/Autocompute Value Bounds1
+ - /Imu1
+ Splitter Ratio: 0.4941176474094391
+ Tree Height: 787
+ - Class: rviz/Selection
+ Name: Selection
+ - Class: rviz/Tool Properties
+ Expanded:
+ - /2D Pose Estimate1
+ - /2D Nav Goal1
+ - /Publish Point1
+ Name: Tool Properties
+ Splitter Ratio: 0.5886790156364441
+ - Class: rviz/Views
+ Expanded:
+ - /Current View1
+ Name: Views
+ Splitter Ratio: 0.5
+ - Class: rviz/Time
+ Name: Time
+ SyncMode: 0
+ SyncSource: PointCloud2
+Preferences:
+ PromptSaveOnExit: true
+Toolbars:
+ toolButtonStyle: 2
+Visualization Manager:
+ Class: ""
+ Displays:
+ - Alpha: 0.5
+ Cell Size: 1
+ Class: rviz/Grid
+ Color: 160; 160; 164
+ Enabled: true
+ Line Style:
+ Line Width: 0.029999999329447746
+ Value: Lines
+ Name: Grid
+ Normal Cell Count: 0
+ Offset:
+ X: 0
+ Y: 0
+ Z: 0
+ Plane: XY
+ Plane Cell Count: 50
+ Reference Frame:
+ Value: true
+ - Alpha: 1
+ Class: rviz/Axes
+ Enabled: true
+ Length: 1
+ Name: Axes
+ Radius: 0.05000000074505806
+ Reference Frame:
+ Show Trail: false
+ Value: true
+ - Alpha: 1
+ Autocompute Intensity Bounds: true
+ Autocompute Value Bounds:
+ Max Value: 3.2763965129852295
+ Min Value: -9.93529056358966e-07
+ Value: true
+ Axis: Z
+ Channel Name: intensity
+ Class: rviz/PointCloud2
+ Color: 255; 255; 255
+ Color Transformer: AxisColor
+ Decay Time: 1
+ Enabled: true
+ Invert Rainbow: false
+ Max Color: 255; 255; 255
+ Min Color: 0; 0; 0
+ Name: PointCloud2
+ Position Transformer: XYZ
+ Queue Size: 100
+ Selectable: true
+ Size (Pixels): 3
+ Size (m): 0.009999999776482582
+ Style: Points
+ Topic: /unilidar/cloud
+ Unreliable: false
+ Use Fixed Frame: true
+ Use rainbow: true
+ Value: true
+ - Alpha: 1
+ Class: rviz_plugin_tutorials/Imu
+ Color: 204; 51; 204
+ Enabled: true
+ History Length: 1
+ Name: Imu
+ Queue Size: 10
+ Topic: /unilidar/imu
+ Unreliable: false
+ Value: true
+ Enabled: true
+ Global Options:
+ Background Color: 48; 48; 48
+ Default Light: true
+ Fixed Frame: unilidar_lidar
+ Frame Rate: 30
+ Name: root
+ Tools:
+ - Class: rviz/Interact
+ Hide Inactive Objects: true
+ - Class: rviz/MoveCamera
+ - Class: rviz/Select
+ - Class: rviz/FocusCamera
+ - Class: rviz/Measure
+ - Class: rviz/SetInitialPose
+ Theta std deviation: 0.2617993950843811
+ Topic: /initialpose
+ X std deviation: 0.5
+ Y std deviation: 0.5
+ - Class: rviz/SetGoal
+ Topic: /move_base_simple/goal
+ - Class: rviz/PublishPoint
+ Single click: true
+ Topic: /clicked_point
+ Value: true
+ Views:
+ Current:
+ Class: rviz/Orbit
+ Distance: 12.665559768676758
+ Enable Stereo Rendering:
+ Stereo Eye Separation: 0.05999999865889549
+ Stereo Focal Distance: 1
+ Swap Stereo Eyes: false
+ Value: false
+ Field of View: 0.7853981852531433
+ Focal Point:
+ X: -0.04773467779159546
+ Y: -0.033093128353357315
+ Z: 0.6606433987617493
+ Focal Shape Fixed Size: false
+ Focal Shape Size: 0.05000000074505806
+ Invert Z Axis: false
+ Name: Current View
+ Near Clip Distance: 0.009999999776482582
+ Pitch: 1.5697963237762451
+ Target Frame:
+ Yaw: 3.135389804840088
+ Saved: ~
+Window Geometry:
+ Displays:
+ collapsed: false
+ Height: 1016
+ Hide Left Dock: false
+ Hide Right Dock: true
+ QMainWindow State: 000000ff00000000fd0000000400000000000001560000039efc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d0000039e000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f0000021efc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000003b0000021e000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e100000197000000030000073e00000039fc0100000002fb0000000800540069006d006500000000000000073e000003bc00fffffffb0000000800540069006d00650100000000000004500000000000000000000005e20000039e00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
+ Selection:
+ collapsed: false
+ Time:
+ collapsed: false
+ Tool Properties:
+ collapsed: false
+ Views:
+ collapsed: true
+ Width: 1854
+ X: 1986
+ Y: 27
diff --git a/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/src/unitree_lidar_ros_node.cpp b/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/src/unitree_lidar_ros_node.cpp
new file mode 100644
index 0000000..aa7f05a
--- /dev/null
+++ b/src/Robot/unilidar_sdk/unitree_lidar_ros/src/unitree_lidar_ros/src/unitree_lidar_ros_node.cpp
@@ -0,0 +1,26 @@
+/**********************************************************************
+ Copyright (c) 2020-2023, Unitree Robotics.Co.Ltd. All rights reserved.
+***********************************************************************/
+
+#include "unitree_lidar_ros.h"
+
+using namespace unitree_lidar_sdk;
+
+int main(int argc, char **argv)
+{
+ // ROS
+ ros::init(argc, argv, "unitree_lidar");
+ ros::NodeHandle nh;
+
+ UnitreeLidarSDKNode node(nh);
+ // ros::Rate rate(2000);
+
+ while (nh.ok())
+ {
+ ros::spinOnce();
+ node.run();
+ // rate.sleep();
+ }
+
+ return 0;
+}
\ No newline at end of file
diff --git a/src/Robot/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/CMakeLists.txt b/src/Robot/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/CMakeLists.txt
new file mode 100644
index 0000000..55366de
--- /dev/null
+++ b/src/Robot/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/CMakeLists.txt
@@ -0,0 +1,63 @@
+cmake_minimum_required(VERSION 3.5)
+project(unitree_lidar_ros2)
+
+# Default to C99
+if(NOT CMAKE_C_STANDARD)
+ set(CMAKE_C_STANDARD 99)
+endif()
+
+# Default to C++14
+if(NOT CMAKE_CXX_STANDARD)
+ set(CMAKE_CXX_STANDARD 14)
+endif()
+
+if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ add_compile_options(-Wall -Wextra -Wpedantic)
+endif()
+
+find_package(ament_cmake REQUIRED)
+find_package(rclcpp REQUIRED)
+find_package(std_msgs REQUIRED)
+find_package(sensor_msgs REQUIRED)
+find_package(pcl_conversions REQUIRED)
+find_package(PCL REQUIRED)
+
+include_directories(
+ ${PCL_INCLUDE_DIRS}
+ include
+ ../../../unitree_lidar_sdk/include
+)
+
+link_directories(
+ ${PCL_LIBRARY_DIRS}
+ ../../../unitree_lidar_sdk/lib/${CMAKE_SYSTEM_PROCESSOR}
+)
+
+add_definitions(${PCL_DEFINITIONS})
+
+add_executable(unitree_lidar_ros2_node src/unitree_lidar_ros2_node.cpp)
+
+target_link_libraries( unitree_lidar_ros2_node
+ ${Boost_SYSTEM_LIBRARY}
+ ${PCL_LIBRARIES}
+ libunitree_lidar_sdk.a
+)
+
+ament_target_dependencies(
+ unitree_lidar_ros2_node
+ rclcpp std_msgs
+ sensor_msgs
+ pcl_conversions
+)
+
+install(TARGETS
+unitree_lidar_ros2_node
+ DESTINATION lib/${PROJECT_NAME}
+)
+
+# install rviz file and launch file
+install(FILES rviz/view.rviz launch/launch.py
+ DESTINATION share/${PROJECT_NAME}
+)
+
+ament_package()
diff --git a/src/Robot/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/README.md b/src/Robot/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/README.md
new file mode 100644
index 0000000..602b018
--- /dev/null
+++ b/src/Robot/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/README.md
@@ -0,0 +1,84 @@
+# Unitree Lidar ROS2
+
+## Introduction
+This package is a ROS2 package, which is specially used for running Unitree LiDAR products.
+
+
+The functions that this package can provide includes:
+- Parse the raw data transmitted from the lidar hardware, and convert it into pointcloud and IMU data
+- Publish the pointcloud data to a ROS2 topic
+- Publish the IMU data to a ROS2 topic
+- In addition, you can configure the relevant parameters of the lidar in the `launch.py`.
+
+## Dependency
+The dependencies include `PCL` and `ROS2`.
+
+We have verified that this package can successfully run under this environment:
+- `Ubuntu 20.04`
+- `ROS2 foxy`
+- `PCL-1.10`
+- `unitree_lidar_sdk`
+
+You are suggested to configure an environment like this to run this package.
+
+## Configuration
+
+Connect your lidar to your computer with a USB cable, then confirm your serial port name for lidar:
+```
+$ ls /dev/ttyUSB*
+/dev/ttyUSB0
+```
+
+The default serial port name is `/dev/ttyUSB0`.
+If it is not the default one, you need to modify the configuration in `unitree_lidar_ros2/launch/launch.py`
+and change the `port` parameter to yours. For example
+```
+{'port': '/dev/ttyUSB0'},
+```
+
+You can leave other parameters in the configuration file with their default value.
+
+If you have special needs such as changing the cloud topic name or IMU topic name, you are allowed to configure them in the `launch.py` file as well.
+
+The defalut cloud topic and its frame name is:
+- topic: "unilidar/cloud"
+- frame: "unilidar_lidar"
+
+The defalut IMU topic and its frame name is:
+- topic: "unilidar/imu"
+- frame: "unilidar_imu"
+
+## Build
+
+You can just build this ROS2 package as follows:
+- Download
+```
+git clone https://github.com/unitreerobotics/unilidar_sdk.git
+```
+
+- Compile
+```
+cd unilidar_sdk/unitree_lidar_ros2
+
+colcon build
+```
+
+## Run
+
+Then you need to source this ROS packege environment and then directly run the launch.py file:
+```
+source install/setup.bash
+
+ros2 launch unitree_lidar_ros2 launch.py
+```
+
+To visualize our cloud in Rviz2, you need to run:
+```
+rviz2 -d src/unitree_lidar_ros2/rviz/view.rviz
+```
+
+In the Rviz window, you will see our lidar pointcloud like this:
+
+
+
+You can change the `Fixed Frame` to the imu frame `unilidar_imu`, so that you can view the IMU quaternion vector.
\ No newline at end of file
diff --git a/src/Robot/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/docs/cloud.png b/src/Robot/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/docs/cloud.png
new file mode 100644
index 0000000..faeb1c0
Binary files /dev/null and b/src/Robot/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/docs/cloud.png differ
diff --git a/src/Robot/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/include/unitree_lidar_ros2.h b/src/Robot/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/include/unitree_lidar_ros2.h
new file mode 100644
index 0000000..4f05d61
--- /dev/null
+++ b/src/Robot/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/include/unitree_lidar_ros2.h
@@ -0,0 +1,173 @@
+/**********************************************************************
+ Copyright (c) 2020-2023, Unitree Robotics.Co.Ltd. All rights reserved.
+***********************************************************************/
+
+#pragma once
+
+#define BOOST_BIND_NO_PLACEHOLDERS
+
+#include
+#include "iostream"
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+#include
+
+#include "sensor_msgs/msg/point_cloud2.hpp"
+#include "sensor_msgs/msg/imu.hpp"
+#include "std_msgs/msg/header.hpp"
+
+#include "rclcpp/rclcpp.hpp"
+#include "rclcpp/time.hpp"
+
+#include "unitree_lidar_sdk_pcl.h"
+
+using std::placeholders::_1;
+
+class UnitreeLidarSDKNode : public rclcpp::Node
+{
+public:
+
+ explicit UnitreeLidarSDKNode(const rclcpp::NodeOptions &options = rclcpp::NodeOptions());
+
+ ~UnitreeLidarSDKNode(){};
+
+ void timer_callback();
+
+protected:
+
+ // ROS
+ rclcpp::Publisher::SharedPtr pub_cloud_;
+ rclcpp::Publisher::SharedPtr pub_imu_;
+ rclcpp::TimerBase::SharedPtr timer_;
+
+ // Unitree Lidar Reader
+ UnitreeLidarReader* lsdk_;
+
+ // Config params
+ std::string port_;
+
+ double rotate_yaw_bias_;
+ double range_scale_;
+ double range_bias_;
+ double range_max_;
+ double range_min_;
+
+ std::string cloud_frame_;
+ std::string cloud_topic_;
+ int cloud_scan_num_;
+
+ std::string imu_frame_;
+ std::string imu_topic_;
+};
+
+///////////////////////////////////////////////////////////////////
+
+UnitreeLidarSDKNode::UnitreeLidarSDKNode(const rclcpp::NodeOptions& options)
+ : Node("unitre_lidar_sdk_node", options)
+{
+ // load config parameters
+ declare_parameter("port", "/dev/ttyUSB0");
+
+ declare_parameter("rotate_yaw_bias", 0);
+ declare_parameter("range_scale", 0.001);
+ declare_parameter("range_bias", 0);
+ declare_parameter("range_max", 50);
+ declare_parameter("range_min", 0);
+
+ declare_parameter("cloud_frame", "unilidar_lidar");
+ declare_parameter("cloud_topic", "unilidar/cloud");
+ declare_parameter("cloud_scan_num", 18);
+
+ declare_parameter("imu_frame", "unilidar_imu");
+ declare_parameter("imu_topic", "unilidar/imu");
+
+
+ port_ = get_parameter("port").as_string();
+
+ rotate_yaw_bias_ = get_parameter("rotate_yaw_bias").as_double();
+ range_scale_ = get_parameter("range_scale").as_double();
+ range_bias_ = get_parameter("range_bias").as_double();
+ range_max_ = get_parameter("range_max").as_double();
+ range_min_ = get_parameter("range_min").as_double();
+
+ cloud_frame_ = get_parameter("cloud_frame").as_string();
+ cloud_topic_ = get_parameter("cloud_topic").as_string();
+ cloud_scan_num_ = get_parameter("cloud_scan_num").as_int();
+
+ imu_frame_ = get_parameter("imu_frame").as_string();
+ imu_topic_ = get_parameter("imu_topic").as_string();
+
+ // std::cout << "port_ = " << port_
+ // << ", cloud_topic_ = " << cloud_topic_
+ // << ", cloud_scan_num_ = " << cloud_scan_num_
+ // << std::endl;
+
+ // Initialize UnitreeLidarReader
+ lsdk_ = createUnitreeLidarReader();
+ lsdk_->initialize(cloud_scan_num_, port_, 2000000, rotate_yaw_bias_,
+ range_scale_, range_bias_, range_max_, range_min_);
+
+ // ROS2
+ pub_cloud_ = this->create_publisher(cloud_topic_, 10);
+ pub_imu_ = this->create_publisher(imu_topic_, 10);
+ timer_ = this->create_wall_timer(std::chrono::milliseconds(1), std::bind(&UnitreeLidarSDKNode::timer_callback, this));
+}
+
+void UnitreeLidarSDKNode::timer_callback()
+{
+ MessageType result = lsdk_->runParse();
+ static pcl::PointCloud::Ptr cloudOut(new pcl::PointCloud());
+
+ // RCLCPP_INFO(this->get_logger(), "result = %d", result);
+
+ if (result == IMU)
+ {
+ auto &imu = lsdk_->getIMU();
+
+ rclcpp::Time timestamp(
+ static_cast(imu.stamp),
+ static_cast((imu.stamp - static_cast(imu.stamp) ) * 1e9));
+
+ sensor_msgs::msg::Imu imuMsg;
+ imuMsg.header.frame_id = imu_frame_;
+ imuMsg.header.stamp = timestamp;
+
+ imuMsg.orientation.x = imu.quaternion[0];
+ imuMsg.orientation.y = imu.quaternion[1];
+ imuMsg.orientation.z = imu.quaternion[2];
+ imuMsg.orientation.w = imu.quaternion[3];
+
+ imuMsg.angular_velocity.x = imu.angular_velocity[0];
+ imuMsg.angular_velocity.y = imu.angular_velocity[1];
+ imuMsg.angular_velocity.z = imu.angular_velocity[2];
+
+ imuMsg.linear_acceleration.x = imu.linear_acceleration[0];
+ imuMsg.linear_acceleration.y = imu.linear_acceleration[1];
+ imuMsg.linear_acceleration.z = imu.linear_acceleration[2];
+
+ pub_imu_->publish(imuMsg);
+ }
+ else if (result == POINTCLOUD)
+ {
+ // RCLCPP_INFO(this->get_logger(), "POINTCLOUD");
+ auto &cloud = lsdk_->getCloud();
+ transformUnitreeCloudToPCL(cloud, cloudOut);
+
+ rclcpp::Time timestamp(
+ static_cast(cloud.stamp),
+ static_cast((cloud.stamp - static_cast(cloud.stamp) ) * 1e9));
+
+ sensor_msgs::msg::PointCloud2 cloud_msg;
+ pcl::toROSMsg(*cloudOut, cloud_msg);
+ cloud_msg.header.frame_id = cloud_frame_;
+ cloud_msg.header.stamp = timestamp;
+
+ pub_cloud_->publish(cloud_msg);
+ }
+}
\ No newline at end of file
diff --git a/src/Robot/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/launch/__pycache__/launch.cpython-38.pyc b/src/Robot/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/launch/__pycache__/launch.cpython-38.pyc
new file mode 100644
index 0000000..1078e14
Binary files /dev/null and b/src/Robot/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/launch/__pycache__/launch.cpython-38.pyc differ
diff --git a/src/Robot/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/launch/launch.py b/src/Robot/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/launch/launch.py
new file mode 100644
index 0000000..9d64163
--- /dev/null
+++ b/src/Robot/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/launch/launch.py
@@ -0,0 +1,41 @@
+import os
+import subprocess
+
+from launch import LaunchDescription
+from launch_ros.actions import Node
+
+def generate_launch_description():
+ # Run unitree lidar
+ node1 = Node(
+ package='unitree_lidar_ros2',
+ executable='unitree_lidar_ros2_node',
+ name='unitree_lidar_ros2_node',
+ output='screen',
+ parameters= [
+ {'port': '/dev/ttyUSB0'},
+ {'rotate_yaw_bias': 0.0},
+ {'range_scale': 0.001},
+ {'range_bias': 0.0},
+ {'range_max': 50.0},
+ {'range_min': 0.0},
+ {'cloud_frame': "unilidar_lidar"},
+ {'cloud_topic': "unilidar/cloud"},
+ {'cloud_scan_num': 18},
+ {'imu_frame': "unilidar_imu"},
+ {'imu_topic': "unilidar/imu"}]
+ )
+
+ # # Run Rviz
+ # package_path = subprocess.check_output(['ros2', 'pkg', 'prefix', 'unitree_lidar_ros2']).decode('utf-8').rstrip()
+ # rviz_config_file = os.path.join(package_path, 'share', 'unitree_lidar_ros2', 'view.rviz')
+ # print("rviz_config_file = " + rviz_config_file)
+ # rviz_node = Node(
+ # package='rviz2',
+ # executable='rviz2',
+ # name='rviz2',
+ # arguments=['-d', rviz_config_file],
+ # output='log'
+ # )
+ # return LaunchDescription([node1, rviz_node])
+
+ return LaunchDescription([node1])
\ No newline at end of file
diff --git a/src/Robot/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/package.xml b/src/Robot/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/package.xml
new file mode 100644
index 0000000..7520c2e
--- /dev/null
+++ b/src/Robot/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/package.xml
@@ -0,0 +1,24 @@
+
+
+
+ unitree_lidar_ros2
+ 0.0.0
+ unitree lidar ros2
+ jo
+ GPLv3
+
+ ament_cmake
+
+ ament_lint_auto
+ ament_lint_common
+
+ rclcpp
+ std_msgs
+ sensor_msgs
+ pcl_conversions
+ pcl
+
+
+ ament_cmake
+
+
diff --git a/src/Robot/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/rviz/view.rviz b/src/Robot/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/rviz/view.rviz
new file mode 100644
index 0000000..571f304
--- /dev/null
+++ b/src/Robot/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/rviz/view.rviz
@@ -0,0 +1,168 @@
+Panels:
+ - Class: rviz_common/Displays
+ Help Height: 78
+ Name: Displays
+ Property Tree Widget:
+ Expanded:
+ - /Global Options1
+ - /PointCloud21
+ - /PointCloud21/Topic1
+ Splitter Ratio: 0.5
+ Tree Height: 787
+ - Class: rviz_common/Selection
+ Name: Selection
+ - Class: rviz_common/Tool Properties
+ Expanded:
+ - /2D Goal Pose1
+ - /Publish Point1
+ Name: Tool Properties
+ Splitter Ratio: 0.5886790156364441
+ - Class: rviz_common/Views
+ Expanded:
+ - /Current View1
+ Name: Views
+ Splitter Ratio: 0.5
+Visualization Manager:
+ Class: ""
+ Displays:
+ - Alpha: 0.5
+ Cell Size: 1
+ Class: rviz_default_plugins/Grid
+ Color: 160; 160; 164
+ Enabled: true
+ Line Style:
+ Line Width: 0.029999999329447746
+ Value: Lines
+ Name: Grid
+ Normal Cell Count: 0
+ Offset:
+ X: 0
+ Y: 0
+ Z: 0
+ Plane: XY
+ Plane Cell Count: 20
+ Reference Frame:
+ Value: true
+ - Class: rviz_default_plugins/Axes
+ Enabled: true
+ Length: 1
+ Name: Axes
+ Radius: 0.10000000149011612
+ Reference Frame:
+ Value: true
+ - Alpha: 1
+ Autocompute Intensity Bounds: true
+ Autocompute Value Bounds:
+ Max Value: 3.1814634799957275
+ Min Value: -1.352985577796062e-06
+ Value: true
+ Axis: Z
+ Channel Name: intensity
+ Class: rviz_default_plugins/PointCloud2
+ Color: 239; 41; 41
+ Color Transformer: AxisColor
+ Decay Time: 1
+ Enabled: true
+ Invert Rainbow: false
+ Max Color: 255; 255; 255
+ Max Intensity: 4096
+ Min Color: 0; 0; 0
+ Min Intensity: 0
+ Name: PointCloud2
+ Position Transformer: XYZ
+ Selectable: true
+ Size (Pixels): 3
+ Size (m): 0.009999999776482582
+ Style: Points
+ Topic:
+ Depth: 5
+ Durability Policy: Volatile
+ Filter size: 10
+ History Policy: Keep Last
+ Reliability Policy: Reliable
+ Value: /unilidar/cloud
+ Use Fixed Frame: true
+ Use rainbow: true
+ Value: true
+ Enabled: true
+ Global Options:
+ Background Color: 48; 48; 48
+ Fixed Frame: unilidar_lidar
+ Frame Rate: 30
+ Name: root
+ Tools:
+ - Class: rviz_default_plugins/Interact
+ Hide Inactive Objects: true
+ - Class: rviz_default_plugins/MoveCamera
+ - Class: rviz_default_plugins/Select
+ - Class: rviz_default_plugins/FocusCamera
+ - Class: rviz_default_plugins/Measure
+ Line color: 128; 128; 0
+ - Class: rviz_default_plugins/SetInitialPose
+ Covariance x: 0.25
+ Covariance y: 0.25
+ Covariance yaw: 0.06853891909122467
+ Topic:
+ Depth: 5
+ Durability Policy: Volatile
+ History Policy: Keep Last
+ Reliability Policy: Reliable
+ Value: /initialpose
+ - Class: rviz_default_plugins/SetGoal
+ Topic:
+ Depth: 5
+ Durability Policy: Volatile
+ History Policy: Keep Last
+ Reliability Policy: Reliable
+ Value: /goal_pose
+ - Class: rviz_default_plugins/PublishPoint
+ Single click: true
+ Topic:
+ Depth: 5
+ Durability Policy: Volatile
+ History Policy: Keep Last
+ Reliability Policy: Reliable
+ Value: /clicked_point
+ Transformation:
+ Current:
+ Class: rviz_default_plugins/TF
+ Value: true
+ Views:
+ Current:
+ Class: rviz_default_plugins/Orbit
+ Distance: 11.65039348602295
+ Enable Stereo Rendering:
+ Stereo Eye Separation: 0.05999999865889549
+ Stereo Focal Distance: 1
+ Swap Stereo Eyes: false
+ Value: false
+ Focal Point:
+ X: 0
+ Y: 0
+ Z: 0
+ Focal Shape Fixed Size: true
+ Focal Shape Size: 0.05000000074505806
+ Invert Z Axis: false
+ Name: Current View
+ Near Clip Distance: 0.009999999776482582
+ Pitch: 1.5697963237762451
+ Target Frame: map
+ Value: Orbit (rviz_default_plugins)
+ Yaw: 3.1399855613708496
+ Saved: ~
+Window Geometry:
+ Displays:
+ collapsed: false
+ Height: 1016
+ Hide Left Dock: false
+ Hide Right Dock: true
+ QMainWindow State: 000000ff00000000fd0000000400000000000001560000039efc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d0000039e000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f0000039efc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000003d0000039e000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004420000003efc0100000002fb0000000800540069006d00650100000000000004420000000000000000fb0000000800540069006d00650100000000000004500000000000000000000005e20000039e00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
+ Selection:
+ collapsed: false
+ Tool Properties:
+ collapsed: false
+ Views:
+ collapsed: true
+ Width: 1854
+ X: 1986
+ Y: 27
diff --git a/src/Robot/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/src/unitree_lidar_ros2_node.cpp b/src/Robot/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/src/unitree_lidar_ros2_node.cpp
new file mode 100644
index 0000000..cb5ab6c
--- /dev/null
+++ b/src/Robot/unilidar_sdk/unitree_lidar_ros2/src/unitree_lidar_ros2/src/unitree_lidar_ros2_node.cpp
@@ -0,0 +1,14 @@
+/**********************************************************************
+ Copyright (c) 2020-2023, Unitree Robotics.Co.Ltd. All rights reserved.
+***********************************************************************/
+
+#include "unitree_lidar_ros2.h"
+
+int main(int argc, char *argv[])
+{
+ const rclcpp::NodeOptions options;
+ rclcpp::init(argc, argv);
+ rclcpp::spin(std::make_shared());
+ rclcpp::shutdown();
+ return 0;
+}
\ No newline at end of file
diff --git a/src/Robot/unilidar_sdk/unitree_lidar_sdk/CMakeLists.txt b/src/Robot/unilidar_sdk/unitree_lidar_sdk/CMakeLists.txt
new file mode 100644
index 0000000..8f6158d
--- /dev/null
+++ b/src/Robot/unilidar_sdk/unitree_lidar_sdk/CMakeLists.txt
@@ -0,0 +1,34 @@
+cmake_minimum_required(VERSION 3.0)
+project(unitree_lidar_sdk)
+
+set(CMAKE_BUILD_TYPE "Release")
+set(CMAKE_CXX_FLAGS "-std=c++14")
+set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb")
+set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall -DNDEBUG")
+
+include_directories(include)
+
+link_directories(lib/${CMAKE_SYSTEM_PROCESSOR})
+
+SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
+set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib/${CMAKE_SYSTEM_PROCESSOR})
+
+add_executable(example_lidar
+ examples/example_lidar.cpp
+)
+target_link_libraries(example_lidar libunitree_lidar_sdk.a )
+
+add_executable(example_lidar_udp
+ examples/example_lidar_udp.cpp
+)
+target_link_libraries(example_lidar_udp libunitree_lidar_sdk.a )
+
+add_executable(unilidar_publisher_udp
+ examples/unilidar_publisher_udp.cpp
+)
+target_link_libraries(unilidar_publisher_udp libunitree_lidar_sdk.a )
+
+add_executable(unilidar_subscriber_udp
+ examples/unilidar_subscriber_udp.cpp
+)
+target_link_libraries(unilidar_subscriber_udp libunitree_lidar_sdk.a )
\ No newline at end of file
diff --git a/src/Robot/unilidar_sdk/unitree_lidar_sdk/HowToParsePointCloudAndIMUDataFromMavLinkMessages.md b/src/Robot/unilidar_sdk/unitree_lidar_sdk/HowToParsePointCloudAndIMUDataFromMavLinkMessages.md
new file mode 100644
index 0000000..f3dcd83
--- /dev/null
+++ b/src/Robot/unilidar_sdk/unitree_lidar_sdk/HowToParsePointCloudAndIMUDataFromMavLinkMessages.md
@@ -0,0 +1,174 @@
+# How To Parse Cloud and IMU data from MavLink messages
+
+## MavLink Usage
+
+If you need to directly parse data from the serial port to obtain point cloud and IMU data, you need to parse the serial data byte-by-byte according to the MavLink protocol to obtain a complete message frame.
+
+For specific guidance, you can refer to the official examples provided by MavLink.
+- https://mavlink.io/en/getting_started/
+
+## Parsing IMU Data
+The format of the IMU MavLink data structure is defined in the following file:
+- `mavlink/SysMavlink/mavlink_msg_ret_imu_attitude_data_packet.h`
+
+The IMU data structure is defined as:
+```c
+typedef struct __mavlink_ret_imu_attitude_data_packet_t {
+ float quaternion[4]; /*< Quaternion Array.*/
+ float angular_velocity[3]; /*< Three-axis angular velocity values.*/
+ float linear_acceleration[3]; /*< Three-axis acceleration values.*/
+ uint16_t packet_id; /*< Data packet ID.*/
+} mavlink_ret_imu_attitude_data_packet_t;
+```
+
+Where:
+- `quaternion[4]` represents the quaternion of the IMU.
+- `angular_velocity[3]` represents the angular velocity of the IMU along the xyz axes.
+- `linear_acceleration[3]` represents the linear acceleration of the IMU along the xyz axes.
+- `packet_id` is the ID of this frame of the message, which can be used to determine the continuity of message transmission.
+
+
+## Parsing Cloud Data
+
+The message format definition related to point cloud parsing includes two files:
+- `mavlink_msg_ret_lidar_auxiliary_data_packet.h`
+- `mavlink_msg_ret_lidar_distance_data_packet.h`
+
+Among them,
+- the former contains information about the reflectance of a laser beam,
+- while the latter contains information about the range and angle of a laser beam.
+- They are matched with each other based on whether their `packet_id` is equal.
+
+The data structure of auxiliary data is defined as:
+```cpp
+typedef struct __mavlink_ret_lidar_auxiliary_data_packet_t {
+ uint32_t lidar_sync_delay_time; /*< Delay time of upper computer communication(us).*/
+ uint32_t time_stamp_s_step; /*< LiDAR operational timestamp in seconds.*/
+ uint32_t time_stamp_us_step; /*< LiDAR operational timestamp in microsecond .*/
+ uint32_t sys_rotation_period; /*< LiDAR low-speed motor rotation period in microsecond .*/
+ uint32_t com_rotation_period; /*< LiDAR high-speed motor rotation period in microsecond .*/
+ float com_horizontal_angle_start; /*< The first data in the current data packet is the horizontal angle,Distance data applicable to RET_LIDAR_DISTANCE_DATA_PACKET data packet and reflectivity data of RET_LIDAR_AUXILIARY_DATA_PACKET data packet.*/
+ float com_horizontal_angle_step; /*< Angle interval between two adjacent data in the horizontal direction.*/
+ float sys_vertical_angle_start; /*< The vertical angle of the first data in the current data packet.*/
+ float sys_vertical_angle_span; /*< The angular span between adjacent data in the vertical direction of the current data packet.*/
+ float apd_temperature; /*< APD temperature value*/
+ float dirty_index; /*< Protective cover dirt detection index*/
+ float imu_temperature; /*< IMU temperature value*/
+ float up_optical_q; /*< Up optical communication quality.*/
+ float down_optical_q; /*< Downlink optical communication quality.*/
+ float apd_voltage; /*< APD voltage value.*/
+ float imu_angle_x_offset; /*< IMU x-axis installation angle error.*/
+ float imu_angle_y_offset; /*< IMU y-axis installation angle error.*/
+ float imu_angle_z_offset; /*< IMU z-axis installation angle error.*/
+ float b_axis_dist; /*< Laser calibration b distance compensation.*/
+ float theta_angle; /*< Laser calibration theta angle compensation.*/
+ float ksi_angle; /*< Laser calibration ksi angle compensation.*/
+ uint16_t packet_id; /*< Data packet ID.*/
+ uint16_t payload_size; /*< Data packet payload size.*/
+ uint8_t lidar_work_status; /*< LiDAR operational state indicator.*/
+ uint8_t reflect_data[120]; /*< reflectivity data*/
+} mavlink_ret_lidar_auxiliary_data_packet_t;
+```
+
+The data structure of distance data is defined as:
+```cpp
+typedef struct __mavlink_ret_lidar_distance_data_packet_t {
+ uint16_t packet_id; /*< Data packet ID.*/
+ uint16_t packet_cnt; /*< Data packet count.*/
+ uint16_t payload_size; /*< Data packet payload size.*/
+ uint8_t point_data[240]; /*< Data packet distance data.*/
+} mavlink_ret_lidar_distance_data_packet_t;
+```
+
+Among them,
+- The array, `reflect_data[120]`, stores the reflection intensity of 120 points accordingly.
+- The array, `point_data[240]`, stores the distance information of 120 points on a laser beam:
+ - Each point's distance is represented in `uint16_t` format and occupies two bytes.
+ - For example, `point_data[0]` and `point_data[1]` represent the distance of the first point, where `point_data[0]` holds the lower byte, and `point_data[1]` holds the higher byte.
+ - If the distance of a point equals 0, that point is invalid and should be jumped.
+
+Assuming that we have parsed a frame of `mavlink_ret_lidar_auxiliary_data_packet_t` data and a matching frame of `mavlink_ret_lidar_distance_data_packet_t` message, we can obtain the point cloud's XYZ coordinates by parsing these two frames. Here is a C++ function example for reference:
+
+```c
+/**
+ * @file parse_range_auxiliary_data_to_cloud.h
+ * @date 2023-07-27
+ */
+
+#pragma once
+#include "mavlink/SysMavlink/mavlink.h"
+#include
+#include
+
+/**
+ * @brief Parse A Range And An Auxiliary Data To A Point Cloud
+ *
+ * @param auxiliaryData
+ * @param rangeData
+ * @param scanCloud Array elements are x, y, z, intensity respectively
+ * @return true
+ * @return false
+ */
+bool parseRangeAuxiliaryDataToCloud(
+ const mavlink_ret_lidar_auxiliary_data_packet_t &auxiliaryData,
+ const mavlink_ret_lidar_distance_data_packet_t &rangeData,
+ std::vector> &scanCloud
+ ){
+
+ // check packet id match
+ if (auxiliaryData.packet_id != rangeData.packet_id){
+ return false;
+ }
+
+ // parse data
+ float rotate_yaw_bias = 0;
+ float range_scale = 0.001;
+ float z_bias = 0.0445;
+ int points_num_of_scan = 120;
+ float bias_laser_beam_ = auxiliaryData.b_axis_dist / 1000;
+
+ float sin_theta = sin(auxiliaryData.theta_angle);
+ float cos_theta = cos(auxiliaryData.theta_angle);
+ float sin_ksi = sin(auxiliaryData.ksi_angle);
+ float cos_ksi = cos(auxiliaryData.ksi_angle);
+
+ float pitch_cur = auxiliaryData.sys_vertical_angle_start * M_PI / 180.0;
+ float pitch_step = auxiliaryData.sys_vertical_angle_span * M_PI / 180.0;
+ float yaw_cur = (auxiliaryData.com_horizontal_angle_start + rotate_yaw_bias) * M_PI / 180.0;
+ float yaw_step = auxiliaryData.com_horizontal_angle_step / points_num_of_scan * M_PI / 180.0;
+
+ uint16_t range;
+ float range_float;
+
+ std::array point;
+ for (int i = 0, j = 0; j < points_num_of_scan;
+ i += 2, j += 1,
+ pitch_cur += pitch_step, yaw_cur += yaw_step)
+ {
+ // Calculate point range in float type
+ range = (rangeData.point_data[i + 1] << 8);
+ range = range | rangeData.point_data[i];
+ if (range == 0){
+ continue;
+ }
+ range_float = range_scale * range;
+
+ // Transform this point to XYZ coordinate
+ float&& sin_alpha = sin(pitch_cur);
+ float&& cos_alpha = cos(pitch_cur);
+ float&& sin_beta = sin(yaw_cur);
+ float&& cos_beta = cos(yaw_cur);
+
+ float&& A = (-cos_theta * sin_ksi + sin_theta * sin_alpha * cos_ksi) * range_float + bias_laser_beam_;
+ float&& B = cos_alpha * cos_ksi * range_float;
+
+ point[0] = cos_beta * A - sin_beta * B; // x
+ point[1] = sin_beta * A + cos_beta * B; // y
+ point[2] = (sin_theta * sin_ksi + cos_theta * sin_alpha * cos_ksi) * range_float + z_bias; // z
+ point[3] = auxiliaryData.reflect_data[j];
+ scanCloud.push_back(point);
+ }
+
+ return true;
+}
+```
\ No newline at end of file
diff --git a/src/Robot/unilidar_sdk/unitree_lidar_sdk/README.md b/src/Robot/unilidar_sdk/unitree_lidar_sdk/README.md
new file mode 100644
index 0000000..52c5041
--- /dev/null
+++ b/src/Robot/unilidar_sdk/unitree_lidar_sdk/README.md
@@ -0,0 +1,195 @@
+# Unitree Lidar SDK
+
+## Introduction
+This package is a cmake package, which is specially used for running `Unitree LiDAR L1`.
+
+The functions that this package can provide includes:
+- Parse the raw data transmitted from the lidar hardware, and convert it into pointcloud and IMU data
+- Get the pointcloud data
+- Get the IMU data
+
+The output pointcloud defaultly uses a self-defined data type so that this SDK doesn't rely too much on external dependencies. In other case,
+- if you are used to use [Point Cloud Library](https://pointclouds.org/), you can use the header `unitree_lidar_sdk_pcl.h` to transform our pointcloud to PCL format;
+- if you wish to directly use a [ROS](https://www.ros.org/) package, you are also able to utilize our ROS pacakge for this lidar.
+
+## Dependency
+We have verified that this package can successfully run under this environment:
+- `Ubuntu 20.04`
+
+This SDK hardly depends on any external dependencies.
+But if you want to use PCL cloud format, you need to install one.
+
+## Configure
+
+Connect your lidar to your computer with a USB cable, then confirm your serial port name for lidar:
+```
+$ ls /dev/ttyUSB*
+/dev/ttyUSB0
+```
+
+The default serial port name is `/dev/ttyUSB0`.
+If it is not the default one, you need to modify the configuration parameter in `example_lidar.cpp`.
+
+## Build
+
+You can build this program as a cmake project:
+```
+cd unitree_lidar_sdk
+
+mkdir build
+
+cd build
+
+cmake .. && make -j2
+```
+
+## Run
+Directly run the example:
+```
+../bin/example_lidar
+```
+
+The output is like this:
+```
+$ ../bin/example_lidar
+lidar firmware version = 0.3.2+230511
+lidar sdk version = 1.0.3
+
+Dirty Percentage = 5.145833 %
+Dirty Percentage = 4.166667 %
+Dirty Percentage = 4.166667 %
+
+Turn on all the LED lights ...
+Turn off all the LED lights ...
+Set LED mode to: FORWARD_SLOW ...
+Set LED mode to: REVERSE_SLOW ...
+Set LED mode to: SIXSTAGE_BREATHING ...
+
+Set Lidar working mode to: NORMAL_MODE ...
+
+An IMU msg is parsed!
+ stamp = 1683874160.559222, id = 729
+ quaternion (x, y, z, w) = [0.0131, -0.0091, 0.6888, -0.7225]
+
+An IMU msg is parsed!
+ stamp = 1683874160.564979, id = 121
+ quaternion (x, y, z, w) = [0.0102, -0.0093, 0.7099, -0.7018]
+
+An IMU msg is parsed!
+ stamp = 1683874160.568425, id = 122
+ quaternion (x, y, z, w) = [0.0118, -0.0096, 0.7099, -0.7018]
+
+An IMU msg is parsed!
+ stamp = 1683874160.573472, id = 123
+ quaternion (x, y, z, w) = [0.0126, -0.0093, 0.7098, -0.7018]
+
+An IMU msg is parsed!
+ stamp = 1683874160.577348, id = 124
+ quaternion (x, y, z, w) = [0.0128, -0.0093, 0.7099, -0.7018]
+
+A Cloud msg is parsed!
+ stamp = 1683874145.535888, id = 1
+ cloud size = 278
+ first 10 points (x,y,z,intensity,time,ring) =
+ (-0.029885, -0.136897, 0.000448, 88.000000, 0.000000, 0)
+ (-0.035384, -0.171399, 0.005140, 91.000000, 0.000023, 0)
+ (-0.043000, -0.219542, 0.012437, 127.000000, 0.000046, 0)
+ (-0.054879, -0.294965, 0.024572, 132.000000, 0.000069, 0)
+ (-0.055288, -0.301204, 0.033170, 106.000000, 0.000093, 0)
+ (-0.054542, -0.300348, 0.041173, 101.000000, 0.000116, 0)
+ (-0.053764, -0.299285, 0.049148, 99.000000, 0.000139, 0)
+ (-0.056123, -0.318406, 0.060981, 92.000000, 0.000162, 0)
+ (-0.055230, -0.316827, 0.069422, 91.000000, 0.000185, 0)
+ (-0.051257, -0.294854, 0.072849, 128.000000, 0.000208, 0)
+ ...
+```
+
+Here, we print the first 10 points of the pointcloud message and the quaternion of the IMU message.
+
+**Notice**:
+- In Ubuntu, accessing a serial port device requires the appropriate permissions. If your C++ program does not have sufficient permissions to access the serial port device, you will get a **"Permission denied"** error.
+- To solve this error, you can use the following command to add the current user to the dialout group:
+```
+sudo usermod -a -G dialout $USER
+```
+- After adding the user to the dialout group, you need to log out and log back in for the changes to take effect.
+
+
+## How To Parse Point Cloud From MavLink Messages
+
+If you want to parse point cloud from MavLink Messages which are acquired from serial directly, you can refer to this document.
+- [HowToParsePointCloudAndIMUDataFromMavLinkMessages.md](./doc/HowToParsePointCloudAndIMUDataFromMavLinkMessages.md)
+
+## Version History
+
+### v1.0.0 (2023.05.04)
+- Support firmware version: 0.3.1
+
+### v1.0.1 (2023.05.05)
+- Support firmware version: 0.3.1
+- Add support of setting lidar working mode, e.g. `NORMAL_MODE` and `STANDBY_MODE`
+- Add support of LED lights
+
+### v1.0.2 (2023.05.11)
+- Support firmware version: 0.3.2
+
+### v1.0.3 (2023.05.12)
+- Support firmware version: 0.3.2
+- Add support of getting the percentage of removed dirty points
+
+### v1.0.4 (2023.05.30)
+- Support firmware version: 1.0.1
+
+### v1.0.5 (2023.06.05)
+- Support firmware version: 1.0.1
+- Update default `rotate_yaw_bias` to calibrated value `-38.5` degree.
+- Update `README.md` with notice to solve the "Permission denied" error while opening serial port.
+
+### v1.0.6 (2023.06.19)
+- Support firmware version: 1.0.1
+- Modify the `initialize()` function to check whether the specified serial port exist. If the serial port name does not exist, initialization fails and `return -1` rather than throw out an error unexpectedly。
+- Add z bias to lidar basis plane
+
+### v1.0.7 (2023.06.21)
+- Support firmware version: 1.0.1
+- Add coordinate system definition in readme
+- Modified readme of `unitree_lidar_ros` and `unitree_lidar_ros2`
+
+### v1.0.8 (2023.06.28)
+- Support firmware version: 1.0.1
+- Solve the dependency problem --- `cannot find -llz4`
+- Add mavlink headers for optional use
+
+### v1.0.9 (2023.06.30)
+- Support firmware version: 1.0.1
+- Delete the date postfix of firmware version
+- Improve support of setting lidar working mode, which can switch between `NORMAL_MODE` and `STANDBY_MODE`
+
+### v1.0.10 (2023.07.17)
+- Support firmware version: 1.0.1
+- Add a UDP publisher written in C++, which can publish lidar data to a specified IP address and port
+- Add a UDP subscriber example written in C++, which is able to subscibe scan and imu data mentioned above
+- Add a UDP subscriber example written in Python, which is able to subscibe scan and imu data mentioned above
+- Add a compiled install package for Windows user, though which you can acquire lidar data in windows.
+
+### v1.0.11 (2023.07.27)
+- Add a instruction document for how to parse point cloud and imu data from mavlink messages directly.
+- The document is `HowToParsePointCloudAndIMUDataFromMavLinkMessages.md`
+
+### v1.0.12 (2023.09.20)
+- Add support of UDP interface, which can parse original bytes from a specified UDP port and send commands to lidar ip and port.
+- Update `unitree_lidar_ros`
+
+### v1.0.13 (2023.10.09)
+- Modify the serial port reading method in `unitree_lidar_sdk`. It will block when you call `runParse()` function, waiting for the serial port to have bytes and then reading the data once.
+- Support Serial-to-UDP adapter board
+
+### v1.0.14 (2023.10.30)
+- Repair occasional segmentation fault when using serial-to-udp board.
+
+### v1.0.15 (2024.01.04)
+- Modify default lidar and local ip address in `example_lidar_udp.cpp`
+
+### v1.0.16 (2024.02.18)
+- Add a function to close UDP connection
+- Set the timeout to 1 second for `initializeUDP()`
\ No newline at end of file
diff --git a/src/Robot/unilidar_sdk/unitree_lidar_sdk/examples/example_lidar.cpp b/src/Robot/unilidar_sdk/unitree_lidar_sdk/examples/example_lidar.cpp
new file mode 100644
index 0000000..a46aa1f
--- /dev/null
+++ b/src/Robot/unilidar_sdk/unitree_lidar_sdk/examples/example_lidar.cpp
@@ -0,0 +1,140 @@
+/**********************************************************************
+ Copyright (c) 2020-2023, Unitree Robotics.Co.Ltd. All rights reserved.
+***********************************************************************/
+
+#include "unitree_lidar_sdk.h"
+
+using namespace unitree_lidar_sdk;
+
+int main(){
+
+ // Initialize Lidar Object
+ UnitreeLidarReader* lreader = createUnitreeLidarReader();
+ int cloud_scan_num = 18;
+ std::string port_name = "/dev/ttyUSB0";
+
+ if ( lreader->initialize(cloud_scan_num, port_name) ){
+ printf("Unilidar initialization failed! Exit here!\n");
+ exit(-1);
+ }else{
+ printf("Unilidar initialization succeed!\n");
+ }
+
+ // Set Lidar Working Mode
+ printf("Set Lidar working mode to: STANDBY ... \n");
+ lreader->setLidarWorkingMode(STANDBY);
+ sleep(1);
+
+ printf("Set Lidar working mode to: NORMAL ... \n");
+ lreader->setLidarWorkingMode(NORMAL);
+ sleep(1);
+
+ printf("\n");
+
+ // Print Lidar Version
+ while(true){
+ if (lreader->runParse() == VERSION){
+ printf("lidar firmware version = %s\n", lreader->getVersionOfFirmware().c_str() );
+ break;
+ }
+ usleep(500);
+ }
+ printf("lidar sdk version = %s\n\n", lreader->getVersionOfSDK().c_str());
+ sleep(2);
+
+ // Check lidar dirty percentange
+ int count_percentage = 0;
+ while(true){
+ if( lreader->runParse() == AUXILIARY){
+ printf("Dirty Percentage = %f %%\n", lreader->getDirtyPercentage());
+ if (++count_percentage > 2){
+ break;
+ }
+ if (lreader->getDirtyPercentage() > 10){
+ printf("The protection cover is too dirty! Please clean it right now! Exit here ...\n");
+ exit(0);
+ }
+ }
+ usleep(500);
+ }
+ printf("\n");
+ sleep(2);
+
+ // Set LED
+ printf("Turn on all the LED lights ...\n");
+ uint8_t led_table[45];
+ for (int i=0; i < 45; i++){
+ led_table[i] = 0xFF;
+ }
+ lreader->setLEDDisplayMode(led_table);
+ sleep(2);
+
+ printf("Turn off all the LED lights ...\n");
+ for (int i=0; i < 45; i++){
+ led_table[i] = 0x00;
+ }
+ lreader->setLEDDisplayMode(led_table);
+ sleep(2);
+
+ printf("Set LED mode to: FORWARD_SLOW ...\n");
+ lreader->setLEDDisplayMode(FORWARD_SLOW);
+ sleep(2);
+
+ printf("Set LED mode to: REVERSE_SLOW ...\n");
+ lreader->setLEDDisplayMode(REVERSE_SLOW);
+ sleep(2);
+
+ printf("Set LED mode to: SIXSTAGE_BREATHING ...\n");
+ lreader->setLEDDisplayMode(SIXSTAGE_BREATHING);
+
+ printf("\n");
+ sleep(2);
+
+ // Parse PointCloud and IMU data
+ MessageType result;
+ std::string version;
+ while (true)
+ {
+ result = lreader->runParse(); // You need to call this function at least 1500Hz
+
+ switch (result)
+ {
+ case NONE:
+ break;
+
+ case IMU:
+ printf("An IMU msg is parsed!\n");
+ printf("\tstamp = %f, id = %d\n", lreader->getIMU().stamp, lreader->getIMU().id);
+ printf("\tquaternion (x, y, z, w) = [%.4f, %.4f, %.4f, %.4f]\n",
+ lreader->getIMU().quaternion[0], lreader->getIMU().quaternion[1],
+ lreader->getIMU().quaternion[2], lreader->getIMU().quaternion[3]);
+ printf("\ttimedelay (us) = %d\n\n", lreader->getTimeDelay());
+ break;
+
+ case POINTCLOUD:
+ printf("A Cloud msg is parsed! \n");
+ printf("\tstamp = %f, id = %d\n", lreader->getCloud().stamp, lreader->getCloud().id);
+ printf("\tcloud size = %ld, ringNum = %d\n", lreader->getCloud().points.size(), lreader->getCloud().ringNum);
+ printf("\tfirst 10 points (x,y,z,intensity,time,ring) = \n");
+ for (int i = 0; i< 10; i++){ // print the first 10 points
+ printf("\t (%f, %f, %f, %f, %f, %d)\n",
+ lreader->getCloud().points[i].x,
+ lreader->getCloud().points[i].y,
+ lreader->getCloud().points[i].z,
+ lreader->getCloud().points[i].intensity,
+ lreader->getCloud().points[i].time,
+ lreader->getCloud().points[i].ring);
+ }
+ printf("\t ...\n");
+ printf("\ttimedelay (us) = %d\n\n", lreader->getTimeDelay());
+ break;
+
+ default:
+ break;
+ }
+
+ // usleep(500);
+ }
+
+ return 0;
+}
\ No newline at end of file
diff --git a/src/Robot/unilidar_sdk/unitree_lidar_sdk/examples/example_lidar_udp.cpp b/src/Robot/unilidar_sdk/unitree_lidar_sdk/examples/example_lidar_udp.cpp
new file mode 100644
index 0000000..5ca796c
--- /dev/null
+++ b/src/Robot/unilidar_sdk/unitree_lidar_sdk/examples/example_lidar_udp.cpp
@@ -0,0 +1,157 @@
+/**********************************************************************
+ Copyright (c) 2020-2023, Unitree Robotics.Co.Ltd. All rights reserved.
+***********************************************************************/
+
+#include "unitree_lidar_sdk.h"
+
+using namespace unitree_lidar_sdk;
+
+int main(int argc, char *argv[]){
+
+ // Initialize Lidar Object
+ UnitreeLidarReader* lreader = createUnitreeLidarReader();
+
+ std::string lidar_ip = "192.168.1.62";
+ std::string local_ip = "192.168.1.2";
+
+ unsigned short lidar_port = 6101;
+ unsigned short local_port = 6201;
+
+ if (argc == 3)
+ {
+ lidar_port = std::atoi(argv[1]);
+ local_port = std::atoi(argv[2]);
+ }else{
+ std::cout << "Usage: ./example_lidar_udp " << std::endl;
+ return 0;
+ }
+
+ std::cout << "lidar_port = " << lidar_port << std::endl;
+
+ if ( lreader->initializeUDP(18, lidar_port, lidar_ip, local_port, local_ip) ){
+ printf("Unilidar initialization failed! Exit here!\n");
+ exit(-1);
+ }else{
+ printf("Unilidar initialization succeed!\n");
+ }
+
+ // Set Lidar Working Mode
+ printf("Set Lidar working mode to: STANDBY ... \n");
+ lreader->setLidarWorkingMode(STANDBY);
+ sleep(1);
+
+ printf("Set Lidar working mode to: NORMAL ... \n");
+ lreader->setLidarWorkingMode(NORMAL);
+ sleep(1);
+
+ printf("\n");
+
+ // Print Lidar Version
+ while(true){
+ MessageType msgType = lreader->runParse();
+ printf("msgType = %d\n", (int) msgType);
+ if (msgType == VERSION){
+ printf("lidar firmware version = %s\n", lreader->getVersionOfFirmware().c_str() );
+ break;
+ }
+ usleep(500);
+ }
+ printf("lidar sdk version = %s\n\n", lreader->getVersionOfSDK().c_str());
+ sleep(2);
+
+ // Check lidar dirty percentange
+ int count_percentage = 0;
+ while(true){
+ if( lreader->runParse() == AUXILIARY){
+ printf("Dirty Percentage = %f %%\n", lreader->getDirtyPercentage());
+ if (++count_percentage > 2){
+ break;
+ }
+ if (lreader->getDirtyPercentage() > 10){
+ printf("The protection cover is too dirty! Please clean it right now! Exit here ...\n");
+ exit(0);
+ }
+ }
+ usleep(500);
+ }
+ printf("\n");
+ sleep(2);
+
+ // Set LED
+ printf("Turn on all the LED lights ...\n");
+ uint8_t led_table[45];
+ for (int i=0; i < 45; i++){
+ led_table[i] = 0xFF;
+ }
+ lreader->setLEDDisplayMode(led_table);
+ sleep(2);
+
+ printf("Turn off all the LED lights ...\n");
+ for (int i=0; i < 45; i++){
+ led_table[i] = 0x00;
+ }
+ lreader->setLEDDisplayMode(led_table);
+ sleep(2);
+
+ printf("Set LED mode to: FORWARD_SLOW ...\n");
+ lreader->setLEDDisplayMode(FORWARD_SLOW);
+ sleep(2);
+
+ printf("Set LED mode to: REVERSE_SLOW ...\n");
+ lreader->setLEDDisplayMode(REVERSE_SLOW);
+ sleep(2);
+
+ printf("Set LED mode to: SIXSTAGE_BREATHING ...\n");
+ lreader->setLEDDisplayMode(SIXSTAGE_BREATHING);
+
+ printf("\n");
+ sleep(2);
+
+ // Parse PointCloud and IMU data
+ MessageType result;
+ std::string version;
+ while (true)
+ {
+ result = lreader->runParse(); // You need to call this function at least 1500Hz
+
+ switch (result)
+ {
+ case NONE:
+ break;
+
+ case IMU:
+ printf("An IMU msg is parsed!\n");
+ printf("\tstamp = %f, id = %d\n", lreader->getIMU().stamp, lreader->getIMU().id);
+ printf("\tquaternion (x, y, z, w) = [%.4f, %.4f, %.4f, %.4f]\n",
+ lreader->getIMU().quaternion[0], lreader->getIMU().quaternion[1],
+ lreader->getIMU().quaternion[2], lreader->getIMU().quaternion[3]);
+ printf("\ttimedelay (us) = %d\n\n", lreader->getTimeDelay());
+ break;
+
+ case POINTCLOUD:
+ printf("A Cloud msg is parsed! \n");
+ printf("\tstamp = %f, id = %d\n", lreader->getCloud().stamp, lreader->getCloud().id);
+ printf("\tcloud size = %ld, ringNum = %d\n", lreader->getCloud().points.size(), lreader->getCloud().ringNum);
+ printf("\tfirst 10 points (x,y,z,intensity,time,ring) = \n");
+ for (int i = 0; i< 10; i++){ // print the first 10 points
+ printf("\t (%f, %f, %f, %f, %f, %d)\n",
+ lreader->getCloud().points[i].x,
+ lreader->getCloud().points[i].y,
+ lreader->getCloud().points[i].z,
+ lreader->getCloud().points[i].intensity,
+ lreader->getCloud().points[i].time,
+ lreader->getCloud().points[i].ring);
+ }
+ printf("\t ...\n");
+ printf("\ttimedelay (us) = %d\n\n", lreader->getTimeDelay());
+ break;
+
+ default:
+ break;
+ }
+
+ // usleep(500);
+ }
+
+ return 0;
+}
\ No newline at end of file
diff --git a/src/Robot/unilidar_sdk/unitree_lidar_sdk/examples/unilidar_publisher_udp.cpp b/src/Robot/unilidar_sdk/unitree_lidar_sdk/examples/unilidar_publisher_udp.cpp
new file mode 100644
index 0000000..aa1d872
--- /dev/null
+++ b/src/Robot/unilidar_sdk/unitree_lidar_sdk/examples/unilidar_publisher_udp.cpp
@@ -0,0 +1,151 @@
+/**********************************************************************
+ Copyright (c) 2020-2023, Unitree Robotics.Co.Ltd. All rights reserved.
+***********************************************************************/
+#include
+#include "unitree_lidar_sdk.h"
+#include "udp_handler.h"
+using namespace unitree_lidar_sdk;
+
+int main(int argc, char *argv[])
+{
+ // Config from terminal
+ std::string serial_port;
+ std::string destination_ip;
+ unsigned short destination_port;
+
+ if (argc == 2)
+ {
+ serial_port = argv[1];
+ destination_ip = "127.0.0.1";
+ destination_port = 12345;
+ }
+ else if (argc == 4)
+ {
+ serial_port = argv[1];
+ destination_ip = argv[2];
+ destination_port = std::atoi(argv[3]);
+ }
+ else
+ {
+
+ std::cout << "usage 1: this_executable " << std::endl;
+ std::cout << "usage 2: this_executable " << std::endl;
+ std::cout << " where the default sever_ip = 127.0.0.1, = 12345" << std::endl;
+
+ std::cout << "Input Serial Port: ";
+ std::cin >> serial_port;
+
+ std::cout << "Input Destination IP: ";
+ std::cin >> destination_ip;
+
+ std::cout << "Input Destination Port: ";
+ std::cin >> destination_port;
+ }
+
+ std::cout << "Unilidar Configuration: "
+ << "\n\tserial_port = " << serial_port
+ << "\n\tdestination_ip = " << destination_ip
+ << "\n\tdestination_port = " << destination_port
+ << std::endl;
+
+ // Initialize Lidar Object
+ UnitreeLidarReader *lreader = createUnitreeLidarReader();
+ int cloud_scan_num = 1;
+ if (lreader->initialize(cloud_scan_num, serial_port))
+ {
+ printf("Unilidar initialization failed! Exit here!\n");
+ exit(-1);
+ }
+ else
+ {
+ printf("Unilidar initialization succeed!\n");
+ }
+
+ // Set Lidar Working Mode
+ printf("Set Lidar working mode to: NORMAL ... \n");
+ lreader->setLidarWorkingMode(NORMAL);
+
+ // Print Lidar Version
+ while (true)
+ {
+ if (lreader->runParse() == VERSION)
+ {
+ printf("lidar firmware version = %s\n", lreader->getVersionOfFirmware().c_str());
+ break;
+ }
+ usleep(500);
+ }
+ printf("lidar sdk version = %s\n", lreader->getVersionOfSDK().c_str());
+
+ // UDP
+ UDPHandler client;
+ client.CreateSocket();
+
+ // Parse PointCloud and IMU data
+ MessageType result;
+ std::string version;
+ PointCloudUnitree cloudMsg;
+ ScanUnitree scanMsg;
+ char buffer[10000];
+ uint32_t length = 0;
+ bool imuMsgSent = false;
+ bool scanMsgSent = false;
+ uint32_t imuMsgType = 101;
+ uint32_t scanMsgType = 102;
+
+ printf("Data type size: \n");
+ printf("\tsizeof(PointUnitree) = %ld\n", sizeof(PointUnitree));
+ printf("\tsizeof(ScanUnitree) = %ld\n", sizeof(ScanUnitree));
+ printf("\tsizeof(IMUUnitree) = %ld\n", sizeof(IMUUnitree));
+
+ while (true)
+ {
+ result = lreader->runParse(); // You need to call this function at least 1500Hz
+
+ switch (result)
+ {
+ case NONE:
+ break;
+
+ case IMU:
+ length = dataStructToUDPBuffer(lreader->getIMU(), imuMsgType, buffer);
+ client.Send(buffer, length, (char *)destination_ip.c_str(), destination_port); // 发送数据
+
+ if (imuMsgSent == false)
+ {
+ imuMsgSent = true;
+ printf("IMU message is sending!\n");
+ printf("\tData format: | uint32_t msgType | uint32_t dataSize | IMUUnitree data |\n");
+ printf("\tMsgType = %d, SentSize=%d, DataSize = %ld\n", imuMsgType, length, sizeof(IMUUnitree));
+ }
+
+ break;
+
+ case POINTCLOUD:
+ cloudMsg = lreader->getCloud();
+ scanMsg.id = cloudMsg.id;
+ scanMsg.stamp = cloudMsg.stamp;
+ scanMsg.validPointsNum = cloudMsg.points.size();
+ memcpy(scanMsg.points, cloudMsg.points.data(), cloudMsg.points.size() * sizeof(PointUnitree));
+
+ length = dataStructToUDPBuffer(scanMsg, scanMsgType, buffer);
+ client.Send(buffer, length, (char *)destination_ip.c_str(), destination_port); // 发送数据
+
+ if (scanMsgSent == false)
+ {
+ scanMsgSent = true;
+ printf("Scan message is sending!\n");
+ printf("\tData format: | uint32_t msgType| uint32_t dataSize | ScanUnitree data |\n");
+ printf("\tMsgType = %d, SentSize=%d, DataSize = %ld\n", scanMsgType, length, sizeof(ScanUnitree));
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ usleep(500);
+ }
+
+ return 0;
+}
diff --git a/src/Robot/unilidar_sdk/unitree_lidar_sdk/examples/unilidar_subcriber_udp.py b/src/Robot/unilidar_sdk/unitree_lidar_sdk/examples/unilidar_subcriber_udp.py
new file mode 100644
index 0000000..c26fed0
--- /dev/null
+++ b/src/Robot/unilidar_sdk/unitree_lidar_sdk/examples/unilidar_subcriber_udp.py
@@ -0,0 +1,94 @@
+import socket
+import struct
+
+# IP and Port
+UDP_IP = "0.0.0.0"
+UDP_PORT = 12345
+
+# Point Type
+class PointUnitree:
+ def __init__(self, x, y, z, intensity, time, ring):
+ self.x = x
+ self.y = y
+ self.z = z
+ self.intensity = intensity
+ self.time = time
+ self.ring = ring
+
+# Scan Type
+class ScanUnitree:
+ def __init__(self, stamp, id, validPointsNum, points):
+ self.stamp = stamp
+ self.id = id
+ self.validPointsNum = validPointsNum
+ self.points = points
+
+# IMU Type
+class IMUUnitree:
+ def __init__(self, stamp, id, quaternion, angular_velocity, linear_acceleration):
+ self.stamp = stamp
+ self.id = id
+ self.quaternion = quaternion
+ self.angular_velocity = angular_velocity
+ self.linear_acceleration = linear_acceleration
+
+# Create UDP socket
+sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+sock.bind((UDP_IP, UDP_PORT))
+
+# Calculate Struct Sizes
+imuDataStr = "=dI4f3f3f"
+imuDataSize = struct.calcsize(imuDataStr)
+
+pointDataStr = "=fffffI"
+pointSize = struct.calcsize(pointDataStr)
+
+scanDataStr = "=dII" + 120 * "fffffI"
+scanDataSize = struct.calcsize(scanDataStr)
+
+print("pointSize = " +str(pointSize) + ", scanDataSize = " + str(scanDataSize) + ", imuDataSize = " + str(imuDataSize))
+
+while True:
+ # Recv data
+ data, addr = sock.recvfrom(10000)
+ print(f"Received data from {addr[0]}:{addr[1]}")
+
+ msgType = struct.unpack("=I", data[:4])[0]
+ print("msgType =", msgType)
+
+ if msgType == 101: # IMU Message
+ length = struct.unpack("=I", data[4:8])[0]
+ imuData = struct.unpack(imuDataStr, data[8:8+imuDataSize])
+ imuMsg = IMUUnitree(imuData[0], imuData[1], imuData[2:6], imuData[6:9], imuData[9:12])
+
+ print("An IMU msg is parsed!")
+ print("\tstamp =", imuMsg.stamp, "id =", imuMsg.id)
+ print("\tquaternion (x, y, z, w) =", imuMsg.quaternion)
+ print("\tangular velocity =", imuMsg.angular_velocity)
+ print("\tlinear acceleration =", imuMsg.linear_acceleration)
+ print("\n")
+
+ elif msgType == 102: # Scan Message
+ length = struct.unpack("=I", data[4:8])[0]
+ stamp = struct.unpack("=d", data[8:16])[0]
+ id = struct.unpack("=I", data[16:20])[0]
+ validPointsNum = struct.unpack("=I", data[20:24])[0]
+ scanPoints = []
+ pointStartAddr = 24
+ for i in range(validPointsNum):
+ pointData = struct.unpack(pointDataStr, data[pointStartAddr: pointStartAddr+pointSize])
+ pointStartAddr = pointStartAddr + pointSize
+ point = PointUnitree(*pointData)
+ scanPoints.append(point)
+ scanMsg = ScanUnitree(stamp, id, validPointsNum, scanPoints)
+
+ print("A Scan msg is parsed!")
+ print("\tstamp =", scanMsg.stamp, "id =", scanMsg.id)
+ print("\tScan size =", scanMsg.validPointsNum)
+ print("\tfirst 10 points (x, y, z, intensity, time, ring) =")
+ for i in range(min(10, scanMsg.validPointsNum)):
+ point = scanMsg.points[i]
+ print("\t", point.x, point.y, point.z, point.intensity, point.time, point.ring)
+ print("\n")
+
+sock.close()
diff --git a/src/Robot/unilidar_sdk/unitree_lidar_sdk/examples/unilidar_subscriber_udp.cpp b/src/Robot/unilidar_sdk/unitree_lidar_sdk/examples/unilidar_subscriber_udp.cpp
new file mode 100644
index 0000000..ce7a358
--- /dev/null
+++ b/src/Robot/unilidar_sdk/unitree_lidar_sdk/examples/unilidar_subscriber_udp.cpp
@@ -0,0 +1,103 @@
+/**********************************************************************
+ Copyright (c) 2020-2023, Unitree Robotics.Co.Ltd. All rights reserved.
+***********************************************************************/
+
+#include "unitree_lidar_sdk.h"
+
+#include "udp_handler.h"
+#include
+#include