Compare commits

..

No commits in common. "master" and "devel-s210a" have entirely different histories.

583 changed files with 16433 additions and 174680 deletions

View File

@ -1,11 +0,0 @@
module.exports = {
extends: ['@commitlint/config-conventional'],
rules: {
'type-enum': [2, 'always', [
"feat", "fix", "docs", "style", "refactor", "perf", "test", "build", "ci", "chore", "revert"
]],
'scope-empty': [2, 'never'],
'subject-full-stop': [0, 'never'],
'subject-case': [0, 'never']
}
};

6
.gitignore vendored
View File

@ -7,8 +7,6 @@ _build/
_install/ _install/
_output/ _output/
/docs/_doxygen/
/get-pip.py /get-pip.py
/*INFO* /*INFO*
@ -18,15 +16,11 @@ _output/
/plugins/ /plugins/
/3rdparty/ceres/
/3rdparty/opencv/ /3rdparty/opencv/
/pkginfo.sh /pkginfo.sh
/*.nsi /*.nsi
/*.exe /*.exe
/node_modules/
/package-lock.json
# ros # ros
/wrappers/ros/build /wrappers/ros/build

7
.gitmodules vendored Normal file
View File

@ -0,0 +1,7 @@
[submodule "test/gtest"]
path = test/gtest
url = https://github.com/google/googletest.git
[submodule "tools/linter"]
path = tools/linter
url = https://github.com/slightech/linter.git
branch = slightech

View File

@ -14,7 +14,7 @@
cmake_minimum_required(VERSION 3.0) cmake_minimum_required(VERSION 3.0)
project(mynteye VERSION 2.5.0 LANGUAGES C CXX) project(mynteye VERSION 2.2.2 LANGUAGES C CXX)
include(cmake/Common.cmake) include(cmake/Common.cmake)
@ -22,8 +22,6 @@ if(NOT CMAKE_DEBUG_POSTFIX)
set(CMAKE_DEBUG_POSTFIX d) set(CMAKE_DEBUG_POSTFIX d)
endif() endif()
LIST(APPEND CMAKE_MODULE_PATH cmake)
# options # options
include(cmake/Option.cmake) include(cmake/Option.cmake)
@ -57,10 +55,12 @@ macro(target_link_threads NAME)
target_compile_options(PUBLIC ${NAME} "-pthread") target_compile_options(PUBLIC ${NAME} "-pthread")
endif() endif()
if(CMAKE_THREAD_LIBS_INIT) if(CMAKE_THREAD_LIBS_INIT)
target_link_libraries(${NAME} PUBLIC "${CMAKE_THREAD_LIBS_INIT}") target_link_libraries(${NAME} "${CMAKE_THREAD_LIBS_INIT}")
endif() endif()
endmacro() endmacro()
LIST(APPEND CMAKE_MODULE_PATH cmake)
include(CMakePackageConfigHelpers) include(CMakePackageConfigHelpers)
# config # config
@ -94,18 +94,6 @@ if(OS_WIN)
) )
endif() endif()
# rpath
set(CMAKE_MACOSX_RPATH 1)
set(MYNTEYE_CMAKE_RPATH "")
if(WITH_OPENCV)
list(APPEND MYNTEYE_CMAKE_RPATH ${OpenCV_LIB_PATH})
endif()
if(MYNTEYE_CMAKE_RPATH)
message(STATUS "RPATH: ${MYNTEYE_CMAKE_RPATH}")
set(CMAKE_INSTALL_RPATH "${MYNTEYE_CMAKE_RPATH}")
endif()
# targets # targets
add_definitions(-DMYNTEYE_EXPORTS) add_definitions(-DMYNTEYE_EXPORTS)
@ -118,7 +106,6 @@ set_outdir(
) )
## main ## main
if(WITH_GLOG) if(WITH_GLOG)
add_executable(main src/main.cc) add_executable(main src/main.cc)
target_link_libraries(main glog::glog) target_link_libraries(main glog::glog)
@ -128,30 +115,10 @@ if(WITH_GLOG)
) )
endif() endif()
## camera_models
if(WITH_CAM_MODELS)
include_directories(
include
${CMAKE_CURRENT_BINARY_DIR}/include
src/mynteye/api/camera_models
src/mynteye
)
add_library(camera_models STATIC
src/mynteye/api/camera_models/camera.cc
src/mynteye/api/camera_models/equidistant_camera.cc
src/mynteye/api/camera_models/util/gpl.cc
)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
endif()
## libmynteye ## libmynteye
if(NOT WITH_GLOG AND NOT OS_WIN) if(NOT WITH_GLOG AND NOT OS_WIN)
set(__MINIGLOG_FLAGS "-Wno-unused-parameter -Wno-format -Wno-return-type -Wno-comment") set(__MINIGLOG_FLAGS "-Wno-unused-parameter -Wno-format -Wno-return-type")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${__MINIGLOG_FLAGS}") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${__MINIGLOG_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${__MINIGLOG_FLAGS}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${__MINIGLOG_FLAGS}")
unset(__MINIGLOG_FLAGS) unset(__MINIGLOG_FLAGS)
@ -165,7 +132,15 @@ endif()
if(OS_WIN) if(OS_WIN)
set(UVC_SRC src/mynteye/uvc/win/uvc-wmf.cc) set(UVC_SRC src/mynteye/uvc/win/uvc-wmf.cc)
elseif(OS_MAC) elseif(OS_MAC)
add_compile_options(-x objective-c++ -Wno-unused-command-line-argument -Wno-missing-method-return-type -Wno-sign-compare) add_compile_options(-x objective-c++)
## INCLUDE_DIRECTORIES(src/mynteye/uvc/macosx)
## INCLUDE_DIRECTORIES(src/mynteye/uvc/macosx/VVUVCKit)
## aux_source_directory(src/mynteye/uvc/macosx/VVUVCKit/ MAC_VVUVCKIT_SRC_LIST)
## aux_source_directory(src/mynteye/uvc/macosx/USBBusProber/ MAC_USBBUSPROBER_SRC_LIST)
## add_library(usbBusProber SHARED ${MAC_USBBUSPROBER_SRC_LIST})
## set_target_properties(usbBusProber PROPERTIES FRAMEWORK TRUE )
## add_library(vvuvckit SHARED ${MAC_VVUVCKIT_SRC_LIST})
## set_target_properties(vvuvckit PROPERTIES FRAMEWORK TRUE )
INCLUDE_DIRECTORIES(src/mynteye/uvc/macosx/USBBusProber.framework/Headers) INCLUDE_DIRECTORIES(src/mynteye/uvc/macosx/USBBusProber.framework/Headers)
INCLUDE_DIRECTORIES(src/mynteye/uvc/macosx/VVUVCKit.framework/Headers) INCLUDE_DIRECTORIES(src/mynteye/uvc/macosx/VVUVCKit.framework/Headers)
@ -176,6 +151,11 @@ elseif(OS_MAC)
set(UVC_SRC src/mynteye/uvc/macosx/CameraEngine.cpp src/mynteye/uvc/macosx/AVfoundationCamera.mm src/mynteye/uvc/macosx/uvc-vvuvckit.cc ) set(UVC_SRC src/mynteye/uvc/macosx/CameraEngine.cpp src/mynteye/uvc/macosx/AVfoundationCamera.mm src/mynteye/uvc/macosx/uvc-vvuvckit.cc )
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -framework CoreFoundation -framework AVFoundation -framework IOKit -framework AppKit -framework Cocoa -framework CoreMedia -framework CoreData -framework Foundation -framework CoreVideo ${__MACUVCLOG_FLAGS}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -framework CoreFoundation -framework AVFoundation -framework IOKit -framework AppKit -framework Cocoa -framework CoreMedia -framework CoreData -framework Foundation -framework CoreVideo ${__MACUVCLOG_FLAGS}")
find_package(libuvc REQUIRED)
set(UVC_LIB ${libuvc_LIBRARIES})
include_directories(${libuvc_INCLUDE_DIRS})
elseif(OS_LINUX) elseif(OS_LINUX)
set(UVC_SRC src/mynteye/uvc/linux/uvc-v4l2.cc) set(UVC_SRC src/mynteye/uvc/linux/uvc-v4l2.cc)
else() else()
@ -187,19 +167,12 @@ set(MYNTEYE_SRCS
src/mynteye/types.cc src/mynteye/types.cc
src/mynteye/util/files.cc src/mynteye/util/files.cc
src/mynteye/util/strings.cc src/mynteye/util/strings.cc
src/mynteye/device/channel/bytes.cc src/mynteye/device/channels.cc
src/mynteye/device/channel/channels.cc
src/mynteye/device/channel/file_channel.cc
src/mynteye/device/config.cc src/mynteye/device/config.cc
src/mynteye/device/context.cc src/mynteye/device/context.cc
src/mynteye/device/device.cc src/mynteye/device/device.cc
src/mynteye/device/device_s.cc
src/mynteye/device/motions.cc src/mynteye/device/motions.cc
src/mynteye/device/standard/channels_adapter_s.cc
src/mynteye/device/standard/device_s.cc
src/mynteye/device/standard/streams_adapter_s.cc
src/mynteye/device/standard2/channels_adapter_s2.cc
src/mynteye/device/standard2/device_s2.cc
src/mynteye/device/standard2/streams_adapter_s2.cc
src/mynteye/device/streams.cc src/mynteye/device/streams.cc
src/mynteye/device/types.cc src/mynteye/device/types.cc
src/mynteye/device/utils.cc src/mynteye/device/utils.cc
@ -210,23 +183,13 @@ if(WITH_API)
src/mynteye/api/dl.cc src/mynteye/api/dl.cc
src/mynteye/api/processor.cc src/mynteye/api/processor.cc
src/mynteye/api/synthetic.cc src/mynteye/api/synthetic.cc
src/mynteye/api/processor/rectify_processor.cc
src/mynteye/api/processor/disparity_processor.cc src/mynteye/api/processor/disparity_processor.cc
src/mynteye/api/processor/disparity_normalized_processor.cc src/mynteye/api/processor/disparity_normalized_processor.cc
src/mynteye/api/processor/root_camera_processor.cc
src/mynteye/api/processor/rectify_processor_ocv.cc
src/mynteye/api/correspondence.cc
src/mynteye/api/version_checker.cc
src/mynteye/api/data_tools.cc
)
if(WITH_CAM_MODELS)
list(APPEND MYNTEYE_SRCS
src/mynteye/api/processor/depth_processor.cc src/mynteye/api/processor/depth_processor.cc
src/mynteye/api/processor/points_processor.cc src/mynteye/api/processor/points_processor.cc
src/mynteye/api/processor/rectify_processor.cc
) )
endif() endif()
endif()
if(NOT WITH_GLOG) if(NOT WITH_GLOG)
list(APPEND MYNTEYE_SRCS src/mynteye/miniglog.cc) list(APPEND MYNTEYE_SRCS src/mynteye/miniglog.cc)
endif() endif()
@ -241,16 +204,12 @@ endif()
if(WITH_GLOG) if(WITH_GLOG)
list(APPEND MYNTEYE_LINKLIBS glog::glog) list(APPEND MYNTEYE_LINKLIBS glog::glog)
endif() endif()
#message(STATUS "MYNTEYE_LINKLIBS: ${MYNTEYE_LINKLIBS}") #message(STATUS "MYNTEYE_LINKLIBS: ${MYNTEYE_LINKLIBS}")
add_library(${MYNTEYE_NAME} SHARED ${MYNTEYE_SRCS}) add_library(${MYNTEYE_NAME} SHARED ${MYNTEYE_SRCS})
target_link_libraries(${MYNTEYE_NAME} PUBLIC ${MYNTEYE_LINKLIBS}) target_link_libraries(${MYNTEYE_NAME} ${MYNTEYE_LINKLIBS})
if(OS_MAC) if(OS_MAC)
target_link_libraries(${MYNTEYE_NAME} PUBLIC ${OSX_EXTRA_LIBS} ) target_link_libraries( ${MYNTEYE_NAME} ${OSX_EXTRA_LIBS} )
endif()
if(WITH_CAM_MODELS)
target_link_libraries(${MYNTEYE_NAME} PRIVATE camera_models)
endif() endif()
target_link_threads(${MYNTEYE_NAME}) target_link_threads(${MYNTEYE_NAME})
@ -290,7 +249,6 @@ install(FILES
${CMAKE_CURRENT_SOURCE_DIR}/include/mynteye/device/callbacks.h ${CMAKE_CURRENT_SOURCE_DIR}/include/mynteye/device/callbacks.h
${CMAKE_CURRENT_SOURCE_DIR}/include/mynteye/device/context.h ${CMAKE_CURRENT_SOURCE_DIR}/include/mynteye/device/context.h
${CMAKE_CURRENT_SOURCE_DIR}/include/mynteye/device/device.h ${CMAKE_CURRENT_SOURCE_DIR}/include/mynteye/device/device.h
${CMAKE_CURRENT_SOURCE_DIR}/include/mynteye/device/types.h
${CMAKE_CURRENT_SOURCE_DIR}/include/mynteye/device/utils.h ${CMAKE_CURRENT_SOURCE_DIR}/include/mynteye/device/utils.h
DESTINATION ${MYNTEYE_CMAKE_INCLUDE_DIR}/device DESTINATION ${MYNTEYE_CMAKE_INCLUDE_DIR}/device
) )

36
Jenkinsfile vendored
View File

@ -16,10 +16,7 @@ pipeline {
steps { steps {
echo "WORKSPACE: ${env.WORKSPACE}" echo "WORKSPACE: ${env.WORKSPACE}"
echo 'apt-get ..' echo 'apt-get ..'
sh ''' sh 'apt-get update'
apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
apt-get update
'''
} }
} }
stage('Init') { stage('Init') {
@ -42,21 +39,24 @@ pipeline {
sh '. /opt/ros/kinetic/setup.sh; make install SUDO=' sh '. /opt/ros/kinetic/setup.sh; make install SUDO='
} }
} }
stage('Test') {
steps {
echo 'make test ..'
sh '. /opt/ros/kinetic/setup.sh; make test SUDO='
}
}
stage('Samples') { stage('Samples') {
steps { steps {
echo 'make samples ..' echo 'make samples ..'
sh '. /opt/ros/kinetic/setup.sh; make samples SUDO=' sh '. /opt/ros/kinetic/setup.sh; make samples SUDO='
} }
} }
/*
stage('Tools') { stage('Tools') {
steps { steps {
echo 'make tools ..' echo 'make tools ..'
sh '. /opt/ros/kinetic/setup.sh; make tools SUDO=' sh '. /opt/ros/kinetic/setup.sh; make tools SUDO='
} }
} }
*/
stage('ROS') { stage('ROS') {
steps { steps {
echo 'make ros ..' echo 'make ros ..'
@ -82,36 +82,22 @@ pipeline {
post { post {
always { always {
echo 'This will always run' echo 'This will always run'
/*
dingTalk accessToken: '7dca6ae9b1b159b8b4b375e858b71f2e6cec8f73fa20d07552d09791261b2344',
imageUrl: 'http://icon-park.com/imagefiles/loading7_gray.gif',
message: '开始构建',
jenkinsUrl: "${JENKINS_URL}"
*/
} }
success { success {
echo 'This will run only if successful' echo 'This will run only if successful'
/*
dingTalk accessToken: '7dca6ae9b1b159b8b4b375e858b71f2e6cec8f73fa20d07552d09791261b2344',
imageUrl: 'http://icons.iconarchive.com/icons/paomedia/small-n-flat/1024/sign-check-icon.png',
message: '构建成功',
jenkinsUrl: "${JENKINS_URL}"
*/
} }
failure { failure {
echo 'This will run only if failed' echo 'This will run only if failed'
dingTalk accessToken: '7dca6ae9b1b159b8b4b375e858b71f2e6cec8f73fa20d07552d09791261b2344', mail to: 'mynteye-ci@slightech.com',
imageUrl: 'http://www.iconsdb.com/icons/preview/soylent-red/x-mark-3-xxl.png', subject: "Failed Pipeline: ${currentBuild.fullDisplayName}",
message: '构建失败', body: "Something is wrong with ${env.BUILD_URL}"
jenkinsUrl: "${JENKINS_URL}"
} }
unstable { unstable {
echo 'This will run only if the run was marked as unstable' echo 'This will run only if the run was marked as unstable'
} }
changed { changed {
echo 'This will run only if the state of the Pipeline has changed' echo 'This will run only if the state of the Pipeline has changed'
echo 'For example, if the Pipeline was previously failing but is now successful11' echo 'For example, if the Pipeline was previously failing but is now successful'
} }
} }
} }

127
Makefile
View File

@ -22,14 +22,7 @@ MKFILE_DIR := $(patsubst %/,%,$(dir $(MKFILE_PATH)))
# UNIX: /usr/local # UNIX: /usr/local
# Windows: c:/Program Files/${PROJECT_NAME} # Windows: c:/Program Files/${PROJECT_NAME}
# Options
#
# SUDO: sudo command
#
# e.g. make [TARGET] SUDO=
SUDO ?= sudo SUDO ?= sudo
CMAKE_BUILD_EXTRA_OPTIONS ?=
.DEFAULT_GOAL := all .DEFAULT_GOAL := all
@ -41,34 +34,47 @@ help:
@echo " make init init project" @echo " make init init project"
@echo " make build build project" @echo " make build build project"
@echo " make install install project" @echo " make install install project"
@echo " make test build test and run"
@echo " make samples build samples" @echo " make samples build samples"
@echo " make pkg package sdk(windows)" @echo " make tools build tools"
@echo " make pkg package sdk"
@echo " make ros build ros wrapper" @echo " make ros build ros wrapper"
@echo " make py build python wrapper"
@echo " make clean|cleanall clean generated or useless things" @echo " make clean|cleanall clean generated or useless things"
.PHONY: help .PHONY: help
all: init samples ros all: init samples tools ros
.PHONY: all .PHONY: all
# doc # doc
doc: apidoc apidoc:
apidoc: cleandoc
@$(call echo,Make $@) @$(call echo,Make $@)
@cd docs; make html @# @[ -e ./_install/include ] || $(MAKE) install
@[ -e /usr/local/include/mynteye ] || $(MAKE) install
@$(SH) ./doc/build.sh
opendoc: apidoc opendoc: apidoc
@$(call echo,Make $@) @$(call echo,Make $@)
@$(SH) ./scripts/open.sh docs/_build/html/index.html @$(shell $(SH) ./doc/langs.sh 1); \
for lang in "$${LANGS[@]}"; do \
html=./doc/_output/$$lang/html/index.html; \
[ -f "$$html" ] && $(SH) ./scripts/open.sh $$html; \
done
cleandoc: cleandoc:
@$(call rm,./docs/_build/) @$(call rm,./doc/_output/)
@$(call rm,./docs/_doxygen/)
.PHONY: doc apidoc opendoc cleandoc .PHONY: apidoc opendoc cleandoc
# deps
submodules:
@git submodule update --init
.PHONY: submodules
# init # init
@ -83,16 +89,36 @@ init:
build: build:
@$(call echo,Make $@) @$(call echo,Make $@)
ifeq ($(HOST_OS),Win) ifeq ($(HOST_OS),Win)
@$(call cmake_build,./_build,..,-DCMAKE_INSTALL_PREFIX=$(MKFILE_DIR)/_install $(CMAKE_BUILD_EXTRA_OPTIONS)) @$(call cmake_build,./_build,..,-DCMAKE_INSTALL_PREFIX=$(MKFILE_DIR)/_install)
else else
@$(call cmake_build,./_build,..,$(CMAKE_BUILD_EXTRA_OPTIONS)) @$(call cmake_build,./_build,..)
endif endif
.PHONY: build .PHONY: build
# test
test: submodules install
@$(call echo,Make $@)
@$(call echo,Make gtest,33)
ifeq ($(HOST_OS),Win)
@$(call cmake_build,./test/gtest/_build,..,-Dgtest_force_shared_crt=ON)
else
@$(call cmake_build,./test/gtest/_build)
endif
@$(call echo,Make test,33)
@$(call cmake_build,./test/_build)
ifeq ($(HOST_OS),Win)
@.\\\test\\\_output\\\bin\\\mynteye_test.bat
else
@./test/_output/bin/mynteye_test
endif
.PHONY: test
# install # install
install: uninstall build install: build
@$(call echo,Make $@) @$(call echo,Make $@)
ifeq ($(HOST_OS),Win) ifeq ($(HOST_OS),Win)
ifneq ($(HOST_NAME),MinGW) ifneq ($(HOST_NAME),MinGW)
@ -129,6 +155,14 @@ samples: install
.PHONY: samples .PHONY: samples
# tools
tools: install
@$(call echo,Make $@)
@$(call cmake_build,./tools/_build)
.PHONY: tools
# pkg # pkg
pkg: clean pkg: clean
@ -171,6 +205,43 @@ cleanros:
.PHONY: cleanros .PHONY: cleanros
# python
PBCVT_DIR := wrappers/python/third_party/pyboostcvconverter
$(PBCVT_DIR):
@git clone https://github.com/Algomorph/pyboostcvconverter.git $@
pbcvt: $(PBCVT_DIR)
@$(call cmake_build,$(PBCVT_DIR)/_build,.., \
-DCMAKE_INSTALL_PREFIX=$(MKFILE_DIR)/wrappers/python/_install \
-DPYTHON_DESIRED_VERSION=2.X)
@cd $(PBCVT_DIR)/_build; make install
.PHONY: pbcvt
NPCV_DIR := wrappers/python/third_party/numpy-opencv-converter
$(NPCV_DIR):
@git clone https://github.com/GarrickLin/numpy-opencv-converter.git $@
py: python
python: install $(NPCV_DIR)
@$(call echo,Make $@)
@$(call cmake_build,./wrappers/python/_build)
@cd ./wrappers/python/_build; make install
.PHONY: py python
cleanpy:
@$(call echo,Make $@)
@$(call rm,./wrappers/python/_build/)
@$(call rm,./wrappers/python/_output/)
@$(call rm,./wrappers/python/_install/)
@$(call rm,./$(PBCVT_DIR)/_build/)
.PHONY: cleanpy
# clean # clean
@ -181,10 +252,15 @@ clean:
@$(call rm,./_install/) @$(call rm,./_install/)
@$(call rm,./samples/_build/) @$(call rm,./samples/_build/)
@$(call rm,./samples/_output/) @$(call rm,./samples/_output/)
@$(call rm,./tools/_build/)
@$(call rm,./tools/_output/)
@$(call rm,./test/_build/)
@$(call rm,./test/_output/)
@$(MAKE) cleanlog @$(MAKE) cleanlog
ifeq ($(HOST_OS),Linux) ifeq ($(HOST_OS),Linux)
@$(MAKE) cleanros @$(MAKE) cleanros
endif endif
@$(MAKE) cleanpy
cleanlog: cleanlog:
@$(call rm_f,*INFO*) @$(call rm_f,*INFO*)
@ -193,7 +269,11 @@ cleanlog:
@$(call rm_f,*FATAL*) @$(call rm_f,*FATAL*)
cleanall: clean cleandoc cleanall: clean cleandoc
@$(call rm,./test/gtest/_build/)
@$(call rm,./third_party/glog/_build/)
@$(FIND) . -type f -name ".DS_Store" -print0 | xargs -0 rm -f @$(FIND) . -type f -name ".DS_Store" -print0 | xargs -0 rm -f
@$(call rm,./$(PBCVT_DIR)/)
@$(call rm,./$(NPCV_DIR)/)
.PHONY: clean cleanlog cleanall .PHONY: clean cleanlog cleanall
@ -216,6 +296,11 @@ host:
@echo LDD: $(LDD) @echo LDD: $(LDD)
@echo CMAKE: $(CMAKE) @echo CMAKE: $(CMAKE)
@echo PKGNAME: $(PKGNAME) @echo PKGNAME: $(PKGNAME)
@echo CMAKE_BUILD_EXTRA_OPTIONS: $(CMAKE_BUILD_EXTRA_OPTIONS)
.PHONY: host .PHONY: host
cpplint: submodules
@$(call echo,Make $@)
@$(SH) ./scripts/$@.sh
.PHONY: cpplint

View File

@ -1,6 +1,6 @@
# MYNT® EYE S SDK # MYNT® EYE S SDK
[![](https://img.shields.io/badge/MYNT%20EYE%20S%20SDK-2.5.0-brightgreen.svg?style=flat)](https://github.com/slightech/MYNT-EYE-S-SDK) [![](https://img.shields.io/badge/MYNT%20EYE%20S%20SDK-2.2.2-brightgreen.svg?style=flat)](https://github.com/slightech/MYNT-EYE-S-SDK)
## Overview ## Overview
@ -17,8 +17,11 @@ Please follow the guide doc to install the SDK on different platforms.
## Documentations ## Documentations
* [API Doc](https://github.com/slightech/MYNT-EYE-S-SDK/releases): API reference, some guides and data spec. * [API Doc](https://github.com/slightech/MYNT-EYE-S-SDK/releases): API reference, some guides and data spec.
* en: [![](https://img.shields.io/badge/Download-PDF-blue.svg?style=flat)](https://readthedocs.org/projects/mynt-eye-s-sdk/downloads/pdf/latest/) [![](https://img.shields.io/badge/Download-HTML-blue.svg?style=flat)](https://readthedocs.org/projects/mynt-eye-s-sdk/downloads/htmlzip/latest/) [![](https://img.shields.io/badge/Online-HTML-blue.svg?style=flat)](https://mynt-eye-s-sdk.readthedocs.io/en/latest/) * en: [![](https://img.shields.io/badge/Download-PDF-blue.svg?style=flat)](https://github.com/slightech/MYNT-EYE-S-SDK/files/2683636/mynt-eye-s-sdk-apidoc-2.2.2-en.pdf) [![](https://img.shields.io/badge/Download-HTML-blue.svg?style=flat)](https://github.com/slightech/MYNT-EYE-S-SDK/files/2683637/mynt-eye-s-sdk-apidoc-2.2.2-en.zip) [![](https://img.shields.io/badge/Online-HTML-blue.svg?style=flat)](https://slightech.github.io/MYNT-EYE-S-SDK/)
* zh-Hans: [![](https://img.shields.io/badge/Download-PDF-blue.svg?style=flat)](https://readthedocs.org/projects/mynt-eye-s-sdk-docs-zh-cn/downloads/pdf/latest/) [![](https://img.shields.io/badge/Download-HTML-blue.svg?style=flat)](https://readthedocs.org/projects/mynt-eye-s-sdk-docs-zh-cn/downloads/htmlzip/latest/) [![](https://img.shields.io/badge/Online-HTML-blue.svg?style=flat)](https://mynt-eye-s-sdk-docs-zh-cn.readthedocs.io/zh_CN/latest/) * zh-Hans: [![](https://img.shields.io/badge/Download-PDF-blue.svg?style=flat)](https://github.com/slightech/MYNT-EYE-S-SDK/files/2683638/mynt-eye-s-sdk-apidoc-2.2.2-zh-Hans.pdf) [![](https://img.shields.io/badge/Download-HTML-blue.svg?style=flat)](https://github.com/slightech/MYNT-EYE-S-SDK/files/2683639/mynt-eye-s-sdk-apidoc-2.2.2-zh-Hans.zip) [![](https://img.shields.io/badge/Online-HTML-blue.svg?style=flat)](http://doc.myntai.com/resource/api/mynt-eye-s-sdk-apidoc-2.2.2-zh-Hans/mynt-eye-s-sdk-apidoc-2.2.2-zh-Hans/index.html)
* [Guide Doc](https://github.com/slightech/MYNT-EYE-S-SDK-Guide/releases): How to install and start using the SDK.
* en: [![](https://img.shields.io/badge/Download-PDF-blue.svg?style=flat)](https://github.com/slightech/MYNT-EYE-S-SDK-Guide/files/2683625/mynt-eye-s-sdk-guide-2.2.2-en.pdf) [![](https://img.shields.io/badge/Download-HTML-blue.svg?style=flat)](https://github.com/slightech/MYNT-EYE-S-SDK-Guide/files/2683626/mynt-eye-s-sdk-guide-2.2.2-en.zip) [![](https://img.shields.io/badge/Online-HTML-blue.svg?style=flat)](https://slightech.github.io/MYNT-EYE-S-SDK-Guide/)
* zh-Hans: [![](https://img.shields.io/badge/Download-PDF-blue.svg?style=flat)](https://github.com/slightech/MYNT-EYE-S-SDK-Guide/files/2683627/mynt-eye-s-sdk-guide-2.2.2-zh-Hans.pdf) [![](https://img.shields.io/badge/Download-HTML-blue.svg?style=flat)](https://github.com/slightech/MYNT-EYE-S-SDK-Guide/files/2683628/mynt-eye-s-sdk-guide-2.2.2-zh-Hans.zip) [![](https://img.shields.io/badge/Online-HTML-blue.svg?style=flat)](http://doc.myntai.com/resource/sdk/mynt-eye-s-sdk-guide-2.2.2-zh-Hans/mynt-eye-s-sdk-guide-2.2.2-zh-Hans/index.html)
> Supported languages: `en`, `zh-Hans`. > Supported languages: `en`, `zh-Hans`.
@ -26,7 +29,7 @@ Please follow the guide doc to install the SDK on different platforms.
[MYNTEYE_BOX]: http://doc.myntai.com/mynteye/s/download [MYNTEYE_BOX]: http://doc.myntai.com/mynteye/s/download
Get firmwares from our online disks: [MYNTEYE_BOX][]. Get firmwares from our online disks: [MYNTEYE_BOX][]. The latest version is `2.2.2`.
## Usage ## Usage
@ -53,7 +56,7 @@ Init project, build samples and run someone.
```bash ```bash
make init make init
make samples make samples
./samples/_output/bin/camera_with_junior_device_api ./samples/_output/bin/device/camera_d
``` ```
## Mirrors ## Mirrors

26
cmake/DetectGLog.cmake Normal file
View File

@ -0,0 +1,26 @@
# Copyright 2018 Slightech Co., Ltd. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
include(${CMAKE_CURRENT_LIST_DIR}/IncludeGuard.cmake)
cmake_include_guard()
get_filename_component(__pro_dir ${CMAKE_CURRENT_LIST_DIR} DIRECTORY)
LIST(APPEND CMAKE_PREFIX_PATH ${__pro_dir}/third_party/glog/_build)
find_package(glog REQUIRED)
if(glog_FOUND)
add_definitions(-DWITH_GLOG)
endif()
unset(__pro_dir)

View File

@ -26,13 +26,14 @@ if(OpenCV_FOUND)
#message(STATUS "Found OpenCV: ${OpenCV_VERSION}") #message(STATUS "Found OpenCV: ${OpenCV_VERSION}")
set(WITH_OPENCV TRUE) set(WITH_OPENCV TRUE)
add_definitions(-DWITH_OPENCV)
if(OpenCV_VERSION VERSION_LESS 3.0) if(OpenCV_VERSION VERSION_LESS 3.0)
set(WITH_OPENCV2 TRUE) add_definitions(-DWITH_OPENCV2)
elseif(OpenCV_VERSION VERSION_LESS 4.0) elseif(OpenCV_VERSION VERSION_LESS 4.0)
set(WITH_OPENCV3 TRUE) add_definitions(-DWITH_OPENCV3)
else() else()
set(WITH_OPENCV4 TRUE) add_definitions(-DWITH_OPENCV4)
endif() endif()
list(FIND OpenCV_LIBS "opencv_world" __index) list(FIND OpenCV_LIBS "opencv_world" __index)
@ -40,35 +41,12 @@ if(${__index} GREATER -1)
set(WITH_OPENCV_WORLD TRUE) set(WITH_OPENCV_WORLD TRUE)
endif() endif()
if(NOT OpenCV_LIB_PATH)
list(LENGTH OpenCV_INCLUDE_DIRS __length)
if(${__length} GREATER 0)
list(GET OpenCV_INCLUDE_DIRS 0 __include_dir)
string(REGEX REPLACE "include.*$" "lib" __lib_dir "${__include_dir}")
find_library(__opencv_lib
NAMES opencv_core3 opencv_core opencv_world
PATHS "${__lib_dir}" "${__lib_dir}/x86_64-linux-gnu"
NO_DEFAULT_PATH)
#message(STATUS "__opencv_lib: ${__opencv_lib}")
if(__opencv_lib)
get_filename_component(OpenCV_LIB_PATH "${__opencv_lib}" DIRECTORY)
else()
set(OpenCV_LIB_PATH "${__lib_dir}")
endif()
#message(STATUS "OpenCV_LIB_PATH: ${OpenCV_LIB_PATH}")
endif()
endif()
if(MSVC OR MSYS OR MINGW) if(MSVC OR MSYS OR MINGW)
get_filename_component(OpenCV_LIB_SEARCH_PATH "${OpenCV_LIB_PATH}/../bin" ABSOLUTE) get_filename_component(OpenCV_LIB_SEARCH_PATH "${OpenCV_LIB_PATH}/../bin" ABSOLUTE)
else() else()
set(OpenCV_LIB_SEARCH_PATH "${OpenCV_LIB_PATH}") set(OpenCV_LIB_SEARCH_PATH "${OpenCV_LIB_PATH}")
endif() endif()
include_directories(
${OpenCV_INCLUDE_DIRS}
)
else() else()
set(WITH_OPENCV FALSE) set(WITH_OPENCV FALSE)

View File

@ -23,8 +23,6 @@ include(${CMAKE_CURRENT_LIST_DIR}/Utils.cmake)
option(WITH_API "Build with API layer, need OpenCV" ON) option(WITH_API "Build with API layer, need OpenCV" ON)
option(WITH_DEVICE_INFO_REQUIRED "Build with device info required" ON) option(WITH_DEVICE_INFO_REQUIRED "Build with device info required" ON)
option(WITH_CAM_MODELS "Build with more camera models, WITH_API must be ON" ON)
# 3rdparty components # 3rdparty components
option(WITH_BOOST "Include Boost support" ON) option(WITH_BOOST "Include Boost support" ON)
@ -34,22 +32,23 @@ option(WITH_BOOST "Include Boost support" ON)
option(WITH_GLOG "Include glog support" OFF) option(WITH_GLOG "Include glog support" OFF)
# packages # packages
if(WITH_API) if(WITH_API)
include(${CMAKE_CURRENT_LIST_DIR}/DetectOpenCV.cmake) include(${CMAKE_CURRENT_LIST_DIR}/DetectOpenCV.cmake)
if(WITH_OPENCV4)
set(WITH_CAM_MODELS OFF)
endif() endif()
else()
# Disable WITH_CAM_MODELS if WITH_API is OFF if(WITH_DEVICE_INFO_REQUIRED)
set(WITH_CAM_MODELS OFF) add_definitions(-DWITH_DEVICE_INFO_REQUIRED)
endif() endif()
if(WITH_BOOST) if(WITH_BOOST)
find_package(Boost QUIET COMPONENTS filesystem) find_package(Boost COMPONENTS filesystem)
if(Boost_FOUND) if(Boost_FOUND)
set(Boost_VERSION_STRING "${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}") set(Boost_VERSION_STRING "${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}")
set(WITH_FILESYSTEM TRUE) set(WITH_FILESYSTEM TRUE)
set(WITH_BOOST_FILESYSTEM TRUE) set(WITH_BOOST_FILESYSTEM TRUE)
add_definitions(-DWITH_FILESYSTEM)
add_definitions(-DWITH_BOOST_FILESYSTEM)
endif() endif()
endif() endif()
@ -57,11 +56,13 @@ if(NOT WITH_FILESYSTEM)
if(MSVC OR MSYS OR MINGW) # win if(MSVC OR MSYS OR MINGW) # win
set(WITH_FILESYSTEM TRUE) set(WITH_FILESYSTEM TRUE)
set(WITH_NATIVE_FILESYSTEM TRUE) set(WITH_NATIVE_FILESYSTEM TRUE)
add_definitions(-DWITH_FILESYSTEM)
add_definitions(-DWITH_NATIVE_FILESYSTEM)
endif() endif()
endif() endif()
if(WITH_GLOG) if(WITH_GLOG)
find_package(glog REQUIRED) include(${CMAKE_CURRENT_LIST_DIR}/DetectGLog.cmake)
endif() endif()
find_package(CUDA QUIET) find_package(CUDA QUIET)
@ -119,8 +120,6 @@ endif()
status(" WITH_DEVICE_INFO_REQUIRED: ${WITH_DEVICE_INFO_REQUIRED}") status(" WITH_DEVICE_INFO_REQUIRED: ${WITH_DEVICE_INFO_REQUIRED}")
status(" WITH_CAM_MODELS: ${WITH_CAM_MODELS}")
status(" WITH_BOOST: ${WITH_BOOST}") status(" WITH_BOOST: ${WITH_BOOST}")
if(WITH_BOOST) if(WITH_BOOST)
if(Boost_FOUND) if(Boost_FOUND)

View File

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 52 KiB

83
doc/build.sh Executable file
View File

@ -0,0 +1,83 @@
#!/usr/bin/env bash
# Copyright 2018 Slightech Co., Ltd. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# _VERBOSE_=1
# _TEST_=1
BASE_DIR=$(cd "$(dirname "$0")" && pwd)
ROOT_DIR=$(realpath "$BASE_DIR/..")
SCRIPTS_DIR="$ROOT_DIR/scripts"
source "$SCRIPTS_DIR/common/echo.sh"
source "$SCRIPTS_DIR/common/mkdir.sh"
source "$SCRIPTS_DIR/common/detect.sh"
_detect "doxygen"
_detect "pdflatex" 1
source "$BASE_DIR/langs.sh"
DOXYFILE="api.doxyfile"
OUTPUT="$BASE_DIR/_output"
# \usepackage{CJKutf8}
# \begin{document}
# \begin{CJK}{UTF8}{gbsn}
# ...
# \end{CJK}
# \end{document}
_texcjk() {
tex="$1"; shift;
_echo_in "add cjk to $tex"
sed -i "" -E $'s/^\\\\begin{document}$/\\\\usepackage{CJKutf8}\\\n\\\\begin{document}\\\n\\\\begin{CJK}{UTF8}{gbsn}/g' $tex
sed -i "" -E $'s/^\\\\end{document}$/\\\\end{CJK}\\\n\\\\end{document}/g' $tex
}
for lang in "${LANGS[@]}"; do
_echo_s "Build doc $lang"
[ -d "$BASE_DIR/$lang" ] || continue
cd "$BASE_DIR/$lang"
if [ -f "$DOXYFILE" ]; then
_mkdir "$OUTPUT/$lang"
_echo_i "doxygen $DOXYFILE"
doxygen $DOXYFILE
version=`cat $DOXYFILE | grep -m1 "^PROJECT_NUMBER\s*=" | \
sed -E "s/^.*=[[:space:]]*(.*)[[:space:]]*$/\1/g"`
# html
if [ -d "$OUTPUT/$lang/html" ]; then
dirname="mynt-eye-s-sdk-apidoc"; \
[ -n "$version" ] && dirname="$dirname-$version"; \
dirname="$dirname-$lang"
cd "$OUTPUT/$lang"
[ -d "$dirname" ] && rm -rf "$dirname"
mv "html" "$dirname" && zip -r "$dirname.zip" "$dirname"
fi
# latex
if [ $pdflatex_FOUND ] && [ -f "$OUTPUT/$lang/latex/Makefile" ]; then
_echo_in "doxygen make latex"
filename="mynt-eye-s-sdk-apidoc"; \
[ -n "$version" ] && filename="$filename-$version"; \
filename="$filename-$lang.pdf"
cd "$OUTPUT/$lang/latex" && _texcjk refman.tex && make
[ -f "refman.pdf" ] && mv "refman.pdf" "../$filename"
fi
_echo_d "doxygen completed"
else
_echo_e "$DOXYFILE not found"
fi
done

View File

@ -38,27 +38,27 @@ PROJECT_NAME = "MYNT EYE S SDK"
# could be handy for archiving the generated documentation or if some version # could be handy for archiving the generated documentation or if some version
# control system is used. # control system is used.
PROJECT_NUMBER = 2.5.0 PROJECT_NUMBER = 2.2.2
# Using the PROJECT_BRIEF tag one can provide an optional one line description # Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a # for a project that appears at the top of each page and should give viewer a
# quick idea about the purpose of the project. Keep the description short. # quick idea about the purpose of the project. Keep the description short.
PROJECT_BRIEF = https://www.myntai.com/mynteye/standard PROJECT_BRIEF = http://www.myntai.com/mynteye/standard
# With the PROJECT_LOGO tag one can specify a logo or an icon that is included # With the PROJECT_LOGO tag one can specify a logo or an icon that is included
# in the documentation. The maximum height of the logo should not exceed 55 # in the documentation. The maximum height of the logo should not exceed 55
# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
# the logo to the output directory. # the logo to the output directory.
PROJECT_LOGO = PROJECT_LOGO = ../static/images/icon.png
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
# into which the generated documentation will be written. If a relative path is # into which the generated documentation will be written. If a relative path is
# entered, it will be relative to the location where doxygen was started. If # entered, it will be relative to the location where doxygen was started. If
# left blank the current directory will be used. # left blank the current directory will be used.
OUTPUT_DIRECTORY = _doxygen OUTPUT_DIRECTORY = ../_output/en
# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- # If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
# directories (in 2 levels) under the output directory of each output format and # directories (in 2 levels) under the output directory of each output format and
@ -791,7 +791,17 @@ WARN_LOGFILE =
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
# Note: If this tag is empty the current directory is searched. # Note: If this tag is empty the current directory is searched.
INPUT = ../include/mynteye INPUT = mainpage.md \
specs_data.md \
spec_hardware_info.md \
spec_image_params.md \
spec_imu_params.md \
spec_image_data.md \
spec_imu_data.md \
specs_ctrl.md \
spec_control_api.md \
spec_control_channel.md \
/usr/local/include/mynteye
# This tag can be used to specify the character encoding of the source files # This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
@ -928,7 +938,7 @@ EXAMPLE_RECURSIVE = NO
# that contain images that are to be included in the documentation (see the # that contain images that are to be included in the documentation (see the
# \image command). # \image command).
IMAGE_PATH = IMAGE_PATH = ../static/images
# The INPUT_FILTER tag can be used to specify a program that doxygen should # The INPUT_FILTER tag can be used to specify a program that doxygen should
# invoke to filter for each input file. Doxygen will invoke the filter program # invoke to filter for each input file. Doxygen will invoke the filter program
@ -1105,7 +1115,7 @@ IGNORE_PREFIX =
# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output # If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
# The default value is: YES. # The default value is: YES.
GENERATE_HTML = NO GENERATE_HTML = YES
# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
@ -1175,7 +1185,7 @@ HTML_STYLESHEET =
# list). For an example see the documentation. # list). For an example see the documentation.
# This tag requires that the tag GENERATE_HTML is set to YES. # This tag requires that the tag GENERATE_HTML is set to YES.
HTML_EXTRA_STYLESHEET = HTML_EXTRA_STYLESHEET = ../static/custom.css
# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
# other source files which should be copied to the HTML output directory. Note # other source files which should be copied to the HTML output directory. Note
@ -1657,7 +1667,7 @@ EXTRA_SEARCH_MAPPINGS =
# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output. # If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
# The default value is: YES. # The default value is: YES.
GENERATE_LATEX = NO GENERATE_LATEX = YES
# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
@ -1937,7 +1947,7 @@ MAN_LINKS = NO
# captures the structure of the code including all documentation. # captures the structure of the code including all documentation.
# The default value is: NO. # The default value is: NO.
GENERATE_XML = YES GENERATE_XML = NO
# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a # The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
@ -2092,8 +2102,7 @@ INCLUDE_FILE_PATTERNS =
PREDEFINED = DOXYGEN_WORKING \ PREDEFINED = DOXYGEN_WORKING \
"MYNTEYE_BEGIN_NAMESPACE=namespace mynteye {" \ "MYNTEYE_BEGIN_NAMESPACE=namespace mynteye {" \
"MYNTEYE_END_NAMESPACE=}" \ "MYNTEYE_END_NAMESPACE=}"
"MYNTEYE_API=" "LAST="
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
# tag can be used to specify a list of macro names that should be expanded. The # tag can be used to specify a list of macro names that should be expanded. The

11
doc/en/mainpage.md Normal file
View File

@ -0,0 +1,11 @@
# MYNT EYE S SDK {#mainpage}
* <a class="el" href="annotated.html">API Classes</a>
* <a class="el" href="modules.html">API Modules</a>
* \link enumerations Enumerations\endlink
* \link datatypes Datatypes\endlink
* \link utils Utiliities\endlink
* \link calibration Intrinsics & Extrinsics\endlink
* <span style="font-weight:bold">Device Specifications</span>
* @subpage specs_data
* @subpage specs_ctrl

View File

@ -0,0 +1,26 @@
# Control Protocols {#spec_control_api}
There are two control modes, one is through UVC standard protocol, the other is through UVC custom protocol with extension unit.
## Standard Protocol
| Name | Field | Bytes | Default | Min | Max | Stored | Flash Address | Note |
| :--- | :---- | :---- | :------ | :-- | :-- | :----- | :------------ | :--- |
| Gain | gain | 2 | 24 | 0 | 48 | √ | 0x12 | valid if manual-exposure |
| Brightness | brightness/exposure_time | 2 | 120 | 0 | 240 | √ | 0x14 | valid if manual-exposure |
| Contrast | contrast/black_level_calibration | 2 | 127 | 0 | 255 | √ | 0x10 | valid if manual-exposure |
## Custom Protocol
| Name | Field | Bytes | Default | Min | Max | Stored | Flash Address | Channel | Note |
| :--- | :---- | :---- | :------ | :-- | :-- | :----- | :------------ | :------ | :----- |
| Frame rate | frame_rate | 2 | 25 | 10 | 60 | √ | 0x21 | XU_CAM_CTRL | values: {10,15,20,25,30,35,40,45,50,55,60} |
| IMU frequency | imu_frequency | 2 | 200 | 100 | 500 | √ | 0x23 | XU_CAM_CTRL | values: {100,200,250,333,500} |
| Exposure mode | exposure_mode | 1 | 0 | 0 | 1 | √ | 0x0F | XU_CAM_CTRL | 0: enable auto-exposure; 1: manual-exposure |
| Max gain | max_gain | 2 | 48 | 0 | 48 | √ | 0x1D | XU_CAM_CTRL | valid if auto-exposure |
| Max exposure time | max_exposure_time | 2 | 240 | 0 | 240 | √ | 0x1B | XU_CAM_CTRL | valid if auto-exposure |
| Desired brightness | desired_brightness | 2 | 192 | 0 | 255 | √ | 0x19 | XU_CAM_CTRL | valid if auto-exposure |
| IR control | ir_control | 1 | 0 | 0 | 160 | × | - | XU_CAM_CTRL | |
| HDR mode | hdr_mode | 1 | 0 | 0 | 1 | √ | 0x1F | XU_CAM_CTRL | 0: 10-bit; 1: 12-bit |
| Zero drift calibration | zero_drift_calibration | | - | - | - | × | - | XU_HALF_DUPLEX | |
| Erase chip | erase_chip | | - | - | - | × | - | XU_HALF_DUPLEX | |

View File

@ -0,0 +1,53 @@
# Control Channels {#spec_control_channel}
| Name | Field | Address | Bandwidth | Node |
| :----- | :----- | :----- | :----- | :----- |
| Camera control channel | XU_CAM_CTRL_CHANNEL | 1 | 3 | |
| Half-Duplex channel | XU_HALF_DUPLEX_CHANNEL | 2 | 20 | |
| IMU write channel | XU_IMUDATA_WRITE_CHANNEL | 3 | 5 | |
| IMU read channel | XU_IMUDATA_READ_CHANNEL | 4 | 2000 | |
| File channel | XU_FILE_CHANNEL | 5 | 2000 | |
## Camera Control Channel
The channel provides get, set and query (min, max, default).
## Half-Duplex Channel
The channel only provides set, such as zero drift correction.
## IMU Channel
The channel is used to request and response IMU data, see @ref spec_imu_data.
## File Channel
The channel is used to read and write device information, image params, and IMU params.
| Name | Header | Size | File | Checksum |
| :--- | :- | :--- | :--- | :-------- |
| Bytes | 1 | 2 | - | 1 |
| Type | uint8_t | uint16_t | - | uint8_t |
| Description | Flags | Content size | Content data | Checksum, XOR of all content bytes |
| Header Bit Subscript | Description |
| :------------------- | :---------- |
| 0 | Device information |
| 1 | Image params |
| 2 | IMU params |
| 3~6 | Undefined |
| 7 | 0: Get; 1: Set |
### File Content Packet
| Name | ID | Size | Content |
| :--- | :- | :--- | :------ |
| Bytes | 1 | 2 | - |
| Type | uint8_t | uint16_t | - |
| Description | Content ID | Content size | Content data |
| File | ID | Max Size |
| :--- | :- | :------- |
| Device information | 1 | 250 |
| Image params | 2 | 250 |
| IMU params | 4 | 500 |

View File

@ -0,0 +1,14 @@
# Device Information {#spec_hardware_info}
| Name | Field | Fixed Value | USB Descriptor | UVC Extension Unit | Bytes | Note |
| :----- | :----- | :-------- | :-------------- | :----------------- | :-------- | :----- |
| VID | vid | 0x04B4 | √ | × | 2 | |
| PID | pid | 0x00F9 | √ | × | 2 | |
| Device name | name | MYNT-EYE-? | √ | √ Get | 16 | MYNT-EYE-S1000 |
| Serial number | serial_number | - | √ | √ Get | 16 | |
| Firmware version | firmware_version | - | √ | √ Get | 2 | major,minor |
| Hardware version | hardware_version | - | × | √ Get | 3 | major,minor,flag |
| Spec version | spec_version | - | × | √ Get | 2 | major,minor |
| Lens type | lens_type | - | × | √ Get/Set | 4 | vendor(2),product(2); default: 0 |
| IMU type | imu_type | - | × | √ Get/Set | 4 | vendor(2),product(2); default: 0 |
| Nominal baseline | nominal_baseline | - | × | √ Get/Set | 2 | unit: mm; default: 0 |

20
doc/en/spec_image_data.md Normal file
View File

@ -0,0 +1,20 @@
# Image Data {#spec_image_data}
| Name | Field | Unit | Bytes | Note |
| :----- | :----- | :----- | :-------- | :----- |
| Frame ID | frame_id | - | 2 | uint16_t; [0,65535] |
| Timestamp | timestamp | 10 us | 4 | uint32_t |
| Exposure Time | exposure_time | 10 us | 2 | uint16_t |
## Image Packet
| Name | Header | Size | Frame ID | Timestamp | Exposure Time | Checksum |
| :--- | :----- | :--- | :------- | :-------- | :------------ | :------- |
| Bytes | 1 | 1 | 2 | 4 | 2 | 1 |
| Type | uint8_t | uint8_t | uint16_t | uint32_t | uint16_t | uint8_t |
| Description | 0x3B | 0x08, content size | Frame ID | Timestamp | Exposure time | Checksum, XOR of all content bytes |
* The image packet will be dropped, if checksum is incorrect.
* The accuracy of the time unit: 0.01 ms / 10 us.
* The timestamp could indicate 11.9 hours, it will accumulate again after overflow.
* The timestamp accumulation starts from the time of power-on, instead of opening.

View File

@ -0,0 +1,23 @@
# Image Params {#spec_image_params}
## Image Intrinsics
| Name | Field | Unit | Bytes | Note |
| :----- | :----- | :----- | :-------- | :----- |
| Image width | width | px | 2 | uint16_t; [0,65535] |
| Image height | height | px | 2 | uint16_t; [0,65535] |
| Focal length | fx | - | 8 | double |
| ^ | fy | - | 8 | double |
| Principal point | cx | - | 8 | double |
| ^ | cy | - | 8 | double |
| Distortion model | model | - | 1 | uint8_t; pinhole,... |
| Distortion coefficients | coeffs[5] | - | 40 | double; k1,k2,p1,p2,k3 |
## Image Extrinsics
Transformation matrix from left image to right image.
| Name | Field | Unit | Bytes | Note |
| :----- | :----- | :----- | :-------- | :----- |
| Rotation matrix | rotation[3][3] | - | 72 | double |
| Translation vector | translation[3] | - | 24 | double |

42
doc/en/spec_imu_data.md Normal file
View File

@ -0,0 +1,42 @@
# IMU Data {#spec_imu_data}
## IMU Request Packet
| Name | Header | Serial Number |
| :--- | :----- | :------------ |
| Bytes | 1 | 4 |
| Type | uint8_t | uint32_t |
| Description | 0x5A | First request should be 0, otherwise the last one |
## IMU Response Packet
The IMU response packet contains multiple IMU packets, and each IMU packet contains multiple IMU segments.
| Name | Header | State | Size | IMU Packets | Checksum |
| :--- | :----- | :---- | :--- | :---------- | :------- |
| Bytes | 1 | 1 | 2 | ... | 1 |
| Type | uint8_t | uint8_t | uint16_t | - | uint8_t |
| Description | 0x5B | 0 is success, others are failed | Content size | IMU packets | Checksum, XOR of all content bytes |
### IMU Packet
The IMU packet is an array of IMU datas.
| Name | Serial Number | Timestamp | Count | IMU Datas |
| :--- | :------------ | :-------- | :---- | :-------- |
| Bytes | 4 | 4 | 1 | ... |
| Type | uint32_t | uint32_t | uint8_t | - |
| Description | Serial number | IMU basic timestamp | The number of IMU datas | IMU datas |
### IMU Segment
| Name | Offset | Frame ID | Accelerometer | Temperature | Gyroscope |
| :--- | :----- | :------- | :------------ | :---------- | :-------- |
| Bytes | 2 | 2 | 6 | 2 | 6 |
| Type | int16_t | uint16_t | int16_t * 3 | int16_t | int16_t * 3 |
| Description | The timestamp offset | Image frame ID | Accel x,y,z values | IMU temperature | Gyro x,y,z values |
* Formula for converting the accel & gyro values to real ones: **real = data * range / 0x10000** .
* ``accel`` default ``range`` is **8 g**, ``gyro`` default ``range`` is **1000 deg/s**.
* Formula for converting the temperature to real value: **real = data / ratio + offset** .
* default ``ratio`` is **326.8**, default ``offset`` is **25℃**.

23
doc/en/spec_imu_params.md Normal file
View File

@ -0,0 +1,23 @@
# IMU Params {#spec_imu_params}
## IMU Intrinsics
| Name | Field | Unit | Bytes | Note |
| :----- | :----- | :----- | :-------- | :----- |
| Scale matrix | acc_scale[3][3] | - | 72 | double |
| ^ | gyro_scale[3][3] | - | 72 | double |
| Zero-drift | acc_drift[3] | - | 24 | double |
| ^ | gyro_drift[3] | - | 24 | double |
| Noise density | acc_noise[3] | - | 24 | double |
| ^ | gyro_noise[3] | - | 24 | double |
| Random walk | acc_bias[3] | - | 24 | double |
| ^ | gyro_bias[3] | - | 24 | double |
## IMU Extrinsics
Transformation matrix from left image to IMU.
| Name | Field | Unit | Bytes | Note |
| :----- | :----- | :----- | :-------- | :----- |
| Rotation matrix | rotation[3][3] | - | 72 | double |
| Translation vector | translation[3] | - | 24 | double |

4
doc/en/specs_ctrl.md Normal file
View File

@ -0,0 +1,4 @@
# Device Control Specification {#specs_ctrl}
* @subpage spec_control_api
* @subpage spec_control_channel

7
doc/en/specs_data.md Normal file
View File

@ -0,0 +1,7 @@
# Device Data Specification {#specs_data}
* @subpage spec_hardware_info
* @subpage spec_image_params
* @subpage spec_imu_params
* @subpage spec_image_data
* @subpage spec_imu_data

20
doc/langs.sh Normal file
View File

@ -0,0 +1,20 @@
#!/usr/bin/env bash
# Copyright 2018 Slightech Co., Ltd. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
LANGS=(
en
zh-Hans
)
[ $# -gt 0 ] && echo "LANGS=(${LANGS[@]})"

3
doc/static/custom.css vendored Normal file
View File

@ -0,0 +1,3 @@
#projectlogo img {
margin: 1em 0.5em 1em 1em;
}

BIN
doc/static/images/icon.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
doc/static/images/imu_analytics.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
doc/static/images/make_install.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
doc/static/images/stamp_analytics.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

2497
doc/zh-Hans/api.doxyfile Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,44 @@
# 编译 on Linux {#guide_build_linux}
> Ubuntu 16.04, Ubuntu 14.04
## 获取代码
```bash
git clone https://github.com/slightech/MYNT-EYE-S-SDK.git
```
## 准备依赖
```bash
cd mynt-eye-s-sdk/
make init
```
### [OpenCV](https://opencv.org/)
编译前可在系统终端Windows 命令提示符)里如下指定 OpenCV 路径,其为 `OpenCVConfig.cmake` 目录:
```bash
# Linux, macOS
export OpenCV_DIR=~/opencv
# Windows
set OpenCV_DIR=C:\opencv
```
## 编译代码
```bash
make install
```
结果:
![make install](make_install.png)
\latexonly
\includegraphics[width=0.6\textwidth,keepaspectratio]{make_install.png}
\endlatexonly
> CMake 如何引入编译好的库,可参考 `samples/CMakeLists.txt` 里的配置。

View File

@ -0,0 +1,113 @@
# 编译 on Windows {#guide_build_win}
> Windows 10
## 前提条件
* [Git](https://git-scm.com/downloads),用于获取代码。
* [CMake](https://cmake.org/download/),用于构建编译。
* [Doxygen](http://www.stack.nl/~dimitri/doxygen/download.html),用于生成文档。
最终命令提示符Command Prompt, cmd里可找到如下命令
```cmd
>cmake --version
cmake version 3.10.1
>git --version
git version 2.11.1.windows.1
>doxygen --version
1.8.13
```
* [Visual Studio](https://www.visualstudio.com/)
* [Visual Studio 2015](https://my.visualstudio.com/Downloads?q=Visual Studio 2015)
* [Visual Studio 2017](https://my.visualstudio.com/Downloads?q=Visual Studio 2017)
* [Windows 10 SDK](https://developer.microsoft.com/en-US/windows/downloads/windows-10-sdk)
以 Visual Studio 2015 举例,请在系统环境变量 `PATH` 里添加上如下路径:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin
C:\Program Files (x86)\MSBuild\14.0\Bin
最终命令提示符Command Prompt, cmd里可找到如下命令
```cmd
>cl
Microsoft (R) C/C++ Optimizing Compiler Version 19.00.24215.1 for x86
>link
Microsoft (R) Incremental Linker Version 14.00.24215.1
>lib
Microsoft (R) Library Manager Version 14.00.24215.1
>msbuild
Microsoft (R) 生成引擎版本 14.0.25420.1
```
* [MSYS2](http://www.msys2.org/)
* [国内镜像](https://lug.ustc.edu.cn/wiki/mirrors/help/msys2)
* [pacman](https://wiki.archlinux.org/index.php/pacman)
打开 MSYS2 MSYS ,然后执行:
```msys
$ pacman -Syu
$ pacman -S make
```
并在系统环境变量 `PATH` 里添加上如下路径:
C:\msys64\usr\bin
最终命令提示符Command Prompt, cmd里可找到如下命令
```cmd
>make --version
GNU Make 4.2.1
```
## 获取代码
```cmd
>git clone https://github.com/slightech/MYNT-EYE-S-SDK.git
```
## 准备依赖
```cmd
>cd mynt-eye-s-sdk
>make init
Make init
Init deps
Install cmd: pacman -S
Install deps: git clang-format
pacman -S clang-format (not exists)
error: target not found: clang-format
pip install --upgrade autopep8 cpplint pylint requests
...
Init git hooks
ERROR: clang-format-diff is not installed!
Expect cmake version >= 3.0
cmake version 3.10.1
```
### [OpenCV](https://opencv.org/)
编译前可在系统终端Windows 命令提示符)里如下指定 OpenCV 路径,其为 `OpenCVConfig.cmake` 目录:
```bash
# Linux, macOS
export OpenCV_DIR=~/opencv
# Windows
set OpenCV_DIR=C:\opencv
```
## 编译代码
```cmd
>make install
```

6
doc/zh-Hans/guide_log.md Normal file
View File

@ -0,0 +1,6 @@
# 日志 {#guide_log}
日志系统用的 `glog` ,通用配置在头文件 `logger.h` 里。
* 日志文件会存储在当前工作目录, `make cleanlog` 可以清理。
* 如果需要打开详细日志,请取消 `logger.h` 里注释的 `FLAGS_v = 2;` ,重新编译。

View File

@ -0,0 +1,13 @@
# OpenCV 依赖 {#guide_opencv}
SDK 提供了三层接口,其 OpenCV 依赖情况如下:
* `api` 上层接口,依赖 OpenCV 。
* `device`,中间层接口,不依赖 OpenCV 。
* `uvc`,底层接口,不依赖 OpenCV 。
如果不想使用 OpenCV ,你可编辑 `<sdk>/cmake/Option.cmake` 里的 `WITH_API` 选项,设为 `OFF` 就能关闭 `api` 层代码编译:
```cmake
option(WITH_API "Build with API layer, need OpenCV" ON)
```

30
doc/zh-Hans/guide_ros.md Normal file
View File

@ -0,0 +1,30 @@
# ROS 封装 {#guide_ros}
ROS 封装实现在 ``<sdk>/wrappers/ros`` 目录。
## 依赖
* [ROS](http://www.ros.org/) 环境。
## 编译
```bash
cd <sdk>
make ros
```
## 运行
运行发布节点,
```bash
source wrappers/ros/devel/setup.bash
roslaunch mynt_eye_ros_wrapper mynteye.launch
```
运行发布节点,同时打开 RViz 预览图像,
```bash
source wrappers/ros/devel/setup.bash
roslaunch mynt_eye_ros_wrapper display.launch
```

View File

@ -0,0 +1,46 @@
# 样例 {#guide_samples}
样例在 `<sdk>/samples` 目录,其提供了不同接口层的使用范例。
## 依赖
* [OpenCV](https://opencv.org/),用于显示图像。
* 编译前可在系统终端Windows 命令提示符)里如下指定 OpenCV 路径,其为 `OpenCVConfig.cmake` 目录:
```bash
# Linux, macOS
export OpenCV_DIR=~/opencv
# Windows
set OpenCV_DIR=C:\opencv
```
## 编译
```bash
make samples
```
## 运行
运行 `api` 层接口样例,显示图像并输出 IMU 。
```bash
./samples/_output/bin/api/camera_a
# Windows
.\samples\_output\bin\api\camera_a.bat
```
运行 `device` 层接口样例,显示图像并输出 IMU 。
```bash
./samples/_output/bin/device/camera_d
# Windows
.\samples\_output\bin\device\camera_d.bat
```
## 结语
更多样例的说明,请见 `samples/README.md`

View File

@ -0,0 +1,73 @@
# 工具 {#guide_tools}
工具在 `<sdk>/tools` 目录,其提供一些有用的脚本和程序。
## 依赖
* [OpenCV](https://opencv.org/),部分工具需要。
* 编译前可在系统终端Windows 命令提示符)里如下指定 OpenCV 路径,其为 `OpenCVConfig.cmake` 目录:
```bash
# Linux, macOS
export OpenCV_DIR=~/opencv
# Windows
set OpenCV_DIR=C:\opencv
```
* Python 第三方库,脚本需要。
```bash
cd tools/
sudo pip install -r requirements.txt
```
## 编译
```bash
make tools
```
## 录制数据集
```bash
./tools/_output/bin/dataset/record
# Windows
.\tools\_output\bin\dataset\record.bat
```
默认录制进 `dataset` 目录,加参数可指定该目录。
## 分析数据集
分析 IMU 数据,
```bash
python tools/analytics/imu_analytics.py -i dataset -c tools/config/mynteye/mynteye_config.yaml \
-al=-1.2,1.2 -gl= -gdu=d -gsu=d -kl=
```
![imu analytics](imu_analytics.png)
\latexonly
\includegraphics[width=0.6\textwidth,keepaspectratio]{imu_analytics.png}
\endlatexonly
分析图像 & IMU 时间戳,
```bash
python tools/analytics/stamp_analytics.py -i dataset -c tools/config/mynteye/mynteye_config.yaml
```
![stamp analytics](stamp_analytics.png)
\latexonly
\includegraphics[width=0.6\textwidth,keepaspectratio]{stamp_analytics.png}
\endlatexonly
> 如果用 ROS ,分析脚本也支持 ROS Bag 格式。
## 结语
设备信息读写、校验码等更多工具的说明,请见 `tools/README.md`

9
doc/zh-Hans/guides.md Normal file
View File

@ -0,0 +1,9 @@
# SDK 指导 {#guides}
* @subpage guide_build_linux
* @subpage guide_build_win
* @subpage guide_samples
* @subpage guide_tools
* @subpage guide_log
* @subpage guide_opencv
* @subpage guide_ros

11
doc/zh-Hans/mainpage.md Normal file
View File

@ -0,0 +1,11 @@
# MYNT EYE S SDK {#mainpage}
* <a class="el" href="annotated.html">API 类</a>
* <a class="el" href="modules.html">API 模块</a>
* \link enumerations 枚举类型\endlink
* \link datatypes 数据类型\endlink
* \link utils 工具函数\endlink
* \link calibration 内参与外参\endlink
* <span style="font-weight:bold">设备说明</span>
* @subpage specs_data
* @subpage specs_ctrl

View File

@ -0,0 +1,27 @@
# 控制 API 说明 {#spec_control_api}
控制有两种实现方式,一是通过 UVC 标准协议,二是通过 UVC 拓展通道自定义协议。
## 标准协议
| 名称 | 字段 | 字节数 | 默认值 | 最小值 | 最大值 | 是否储存 | Flash 地址 | 说明 |
| :----- | :----- | :-------- | :-------- | :-------- | :-------- | :----------- | :----------- | :----- |
| 亮度 | brightness | 2 | 192 | 0 | 255 | √ | 0x14 | 关闭自动曝光,手动设定的参数 |
> UVC 标准协议实现的控制,有现成的 API 进行 Get & Set ,包括 Min, Max, Default 。
## 自定义协议
| 名称 | 字段 | 字节数 | 默认值 | 最小值 | 最大值 | 是否储存 | Flash 地址 | 所属通道 | 通道地址 | 说明 |
| :----- | :----- | :-------- | :-------- | :-------- | :-------- | :----------- | :----------- | :----------- | :----------- | :----- |
| 曝光模式 | exposure_mode | 1 | 0 | 0 | 1 | √ | 0x0F | XU_CAM_CTRL | 0x0100 | 0开启自动曝光 1关闭 |
| 最大增益 | max_gain | 2 | 8 | 0 | 255 | √ | 0x1D | XU_CAM_CTRL | 0x0100 | 开始自动曝光,可设定的阈值 |
| 最大曝光时间 | max_exposure_time | 2 | 333 | 0 | 1000 | √ | 0x1B | XU_CAM_CTRL | 0x0100 | 开始自动曝光,可设定的阈值 |
| 期望亮度 | desired_brightness | 2 | 122 | 1 | 255 | √ | 0x19 | XU_CAM_CTRL | 0x0100 | |
| 擦除芯片 | erase_chip | | - | - | - | × | - | XU_HALF_DUPLEX | 0x0200 | |
| 最小曝光时间 | min_exposure_time | 2 | 0 | 0 | 1000 | √ | - | XU_CAM_CTRL | 0x0100 | 开始自动曝光,可设定的阈值 |
| 加速度计量程 | accelerometer_range | 2 | 12 | 6 | 48 | √ | - | XU_CAM_CTRL | 0x0100 | |
| 陀螺仪量程 | gyroscope_range | 2 | 1000 | 250 | 4000 | √ | - | XU_CAM_CTRL | 0x0100 | |
| 加速度计低通滤波 | accelerometer_low_pass_filter | 2 | 2 | 0 | 2 | √ | - | XU_CAM_CTRL | 0x0100 | |
| 陀螺仪低通滤波 | gyroscope__low_pass_filter | 2 | 64 | 23 | 64 | √ | - | XU_CAM_CTRL | 0x0100 | |

View File

@ -0,0 +1,53 @@
# 拓展通道说明 {#spec_control_channel}
| 名称 | 字段 | 地址 | 带宽 | 说明 |
| :----- | :----- | :----- | :----- | :----- |
| 相机控制通道 | XU_CAM_CTRL_CHANNEL | 1 | 3 | |
| 半双工通道 | XU_HALF_DUPLEX_CHANNEL | 2 | 20 | |
| IMU 请求通道 | XU_IMUDATA_WRITE_CHANNEL | 3 | 5 | |
| IMU 响应通道 | XU_IMUDATA_READ_CHANNEL | 4 | 2000 | |
| 文件通道 | XU_FILE_CHANNEL | 5 | 2000 | |
## 相机控制通道
相机控制通道是那些需要 Get & Set & Query 的控制通道,其中 Query 细分为 Min, Max, Default 。
## 半双工通道
半双工通道是那些仅需 Set 的控制通道,如请求零漂矫正。
## IMU 通道
用来请求和响应 IMU 数据的通道,可参见 @ref spec_imu_data 。
## 文件通道
用来读写硬件信息、图像参数、 IMU 参数的通道。
| Name | Header | Size | File | Checksum |
| :--- | :----- | :--- | :--- | :-------- |
| 字节数 | 1 | 2 | - | 1 |
| 类型 | uint8_t | uint16_t | - | uint8_t |
| 描述 | 标识 | 文件内容大小 | 文件内容 | 校验码(文件内容所有字节异或) |
| Header Bit Subscript | Description |
| :------------------- | :---------- |
| 0 | 硬件信息 |
| 1 | 图像参数 |
| 2 | IMU 参数 |
| 3~6 | 未定义 |
| 7 | 0: Get; 1: Set |
### 文件内容包
| Name | ID | Size | Content |
| :--- | :- | :--- | :------ |
| 字节数 | 1 | 2 | - |
| 类型 | uint8_t | uint16_t | - |
| 描述 | 内容 ID | 内容大小 | 内容 |
| File | ID | Max Size |
| :--- | :- | :------- |
| 硬件信息 | 1 | 250 |
| 图像参数 | 2 | 404 |
| IMU 参数 | 4 | 500 |

View File

@ -0,0 +1,17 @@
# 硬件信息说明 {#spec_hardware_info}
| 名称 | 字段 | 固定值 | 描述符获取 | 拓展通道获取 | 字节数 | 说明 |
| :----- | :----- | :-------- | :-------------- | :----------------- | :-------- | :----- |
| VID | vid | 0x04B4 | √ | × | 2 | |
| PID | pid | 0x00F9 | √ | × | 2 | |
| 设备名称 | name | MYNT-EYE-? | √ | √ Get | 16 | MYNT-EYE-S1000 |
| 序列号 | serial_number | - | √ | √ Get | 16 | |
| 固件版本 | firmware_version | - | √ | √ Get | 2 | major,minor |
| 硬件版本 | hardware_version | - | × | √ Get | 3 | major,minor,flag |
| 协议版本 | spec_version | - | × | √ Get | 2 | major,minor |
| 镜头类型 | lens_type | - | × | √ Get/Set | 4 | vendor(2),product(2) ,未 Set 默认 0 |
| IMU 类型 | imu_type | - | × | √ Get/Set | 4 | vendor(2),product(2) ,未 Set 默认 0 |
| 基线长度 | nominal_baseline | - | × | √ Get/Set | 2 | 单位 mm ,未 set 默认 0 |
* 描述符获取:指通用 USB 设备信息,可用工具查看。
* 拓展通道获取指通过拓展通道UVC Extension Unit问硬件获取到的信息需要读取。

View File

@ -0,0 +1,21 @@
# 图像数据说明 {#spec_image_data}
| 名称 | 字段 | 单位 | 字节数 | 说明 |
| :----- | :----- | :----- | :-------- | :----- |
| 帧 ID | frame_id | - | 2 | uint16_t; [0,65535] |
| 时间戳 | timestamp | 1 us | 8 | uint64_t |
| 曝光时间 | exposure_time | 1 us | 2 | uint16_t |
> 图像数据传输方式:倒序排在图像尾部。
## 图像数据包
| Name | Header | Size | FrameID | Timestamp | ExposureTime | Checksum |
| :--- | :----- | :--- | :------ | :-------- | :----------- | :------- |
| 字节数 | 1 | 1 | 2 | 8 | 2 | 1 |
| 类型 | uint8_t | uint8_t | uint16_t | uint64_t | uint16_t | uint8_t |
| 描述 | 0x3B | 0x10 (数据内容大小) | 帧 ID | 时间戳 | 曝光时间 | 校验码(数据内容所有字节异或) |
* 数据包校验不过,会丢弃该帧。
* 时间的单位精度为: 1 us 。
* 时间累计是从上电时从开始,而不是从打开时开始。

View File

@ -0,0 +1,25 @@
# 图像参数说明 {#spec_image_params}
## 图像内参
| 名称 | 字段 | 单位 | 字节数 | 说明 |
| :----- | :----- | :----- | :-------- | :----- |
| 宽度 | width | px | 2 | uint16_t; [0,65535] |
| 高度 | height | px | 2 | uint16_t; [0,65535] |
| 焦距 | fx | - | 8 | double |
| ^ | fy | - | 8 | double |
| 图像中心 | cx | - | 8 | double |
| ^ | cy | - | 8 | double |
| 畸变模型 | model | - | 1 | uint8_t; pinhole,... |
| 畸变参数 | coeffs[5] | - | 40 | double; k1,k2,p1,p2,k3 |
> 图像分辨率不同,内参不同。多分辨率的话,需有多个内参。
## 图像外参
Left Image 到 Right Image 的变换矩阵。
| 名称 | 字段 | 单位 | 字节数 | 说明 |
| :----- | :----- | :----- | :-------- | :----- |
| 旋转矩阵 | rotation[3][3] | - | 72 | double |
| 平移矩阵 | translation[3] | - | 24 | double |

View File

@ -0,0 +1,42 @@
# IMU 数据说明 {#spec_imu_data}
## IMU 请求数据包
| Name | Header | Serial Number |
| :--- | :----- | :------------ |
| 字节数 | 1 | 4 |
| 类型 | uint8_t | uint32_t |
| 描述 | 0x5A | 首次请求写 0 ,不然写上次响应数据包最后一个 IMU 包的序列号 |
## IMU 响应数据包
IMU 响应数据包里会包含1个 IMU 包,而每个 IMU 包又带有多个 IMU 段。
| Name | Header | State | Size | IMU Packets | Checksum |
| :--- | :----- | :---- | :--- | :---------- | :------- |
| 字节数 | 1 | 1 | 2 | ... | 1 |
| 类型 | uint8_t | uint8_t | uint16_t | - | uint8_t |
| 描述 | 0x5B | 正常状态为 0 ,否则错误 | 数据内容大小 | 所包含的 IMU 包 | 校验码(数据内容所有字节异或) |
### IMU 包
IMU 包/小包,是一组 IMU 数据。
| Name | Count | IMU Datas |
| :--- | :-----| :-------- |
| 字节数 | 2 | ... |
| 类型 | uint16_t | - |
| 描述 | IMU 段数量 | 所包含的 IMU 段 |
### IMU 段
| Name | Serial Number | Timestamp | flag | Temperature | Accelerometer or Gyroscope |
| :--- | :------------ | :-------- | :----| :----------- | :------------------------- |
| 字节数 | 4 | 8 | 1 | 2 | 6 |
| 类型 | uint32_t | uint64_t | int8_t | int16_t | int16_t * 3 |
| Description | 序列号 | 时间戳 | 指定传感器类型 | IMU 的温度 | 陀螺仪或陀螺仪 x y z 三轴的值 |
* 加速度计和陀螺仪的计量值换算成物理值公式: **real = data * range / 0x10000**
* 加速度计量程默认值为 **12 g** ,陀螺仪量程默认值为 **1000 deg/s**
* 温度计量值换算成物理值公式: **real = data / ratio + offset**
* ``ratio`` 默认值为 **326.8** ``offset`` 默认值为 **25℃**

View File

@ -0,0 +1,23 @@
# IMU 参数说明 {#spec_imu_params}
## IMU 内参
| 名称 | 字段 | 单位 | 字节数 | 说明 |
| :----- | :----- | :----- | :-------- | :----- |
| 比例因子 | acc_scale[3][3] | - | 72 | double |
| ^ | gyro_scale[3][3] | - | 72 | double |
| 零漂 | acc_drift[3] | - | 24 | double |
| ^ | gyro_drift[3] | - | 24 | double |
| 噪声密度 | acc_noise[3] | - | 24 | double |
| ^ | gyro_noise[3] | - | 24 | double |
| 随机游走 | acc_bias[3] | - | 24 | double |
| ^ | gyro_bias[3] | - | 24 | double |
## IMU 外参
Left Image 到 IMU 的变换矩阵。
| 名称 | 字段 | 单位 | 字节数 | 说明 |
| :----- | :----- | :----- | :-------- | :----- |
| 旋转矩阵 | rotation[3][3] | - | 72 | double |
| 平移矩阵 | translation[3] | - | 24 | double |

View File

@ -0,0 +1,4 @@
# 设备控制说明 {#specs_ctrl}
* @subpage spec_control_api
* @subpage spec_control_channel

View File

@ -0,0 +1,7 @@
# 设备数据说明 {#specs_data}
* @subpage spec_hardware_info
* @subpage spec_image_params
* @subpage spec_imu_params
* @subpage spec_image_data
* @subpage spec_imu_data

View File

@ -1,19 +0,0 @@
# Minimal makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
SOURCEDIR = .
BUILDDIR = _build
# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
.PHONY: help Makefile
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

View File

@ -1,25 +0,0 @@
.. _api:
API
===
API
---
.. doxygenclass:: mynteye::API
:project: mynteyes
:members:
api::StreamData
---------------
.. doxygenstruct:: mynteye::api::StreamData
:project: mynteyes
:members:
api::MotionData
---------------
.. doxygenstruct:: mynteye::api::MotionData
:project: mynteyes
:members:

View File

@ -1,10 +0,0 @@
API DOCS
==============
.. toctree::
api
device
enums
types
utils

View File

@ -1,32 +0,0 @@
.. _device:
Device
======
Device
------
.. doxygenclass:: mynteye::Device
:project: mynteyes
:members:
device::Frame
-------------
.. doxygenclass:: mynteye::device::Frame
:project: mynteyes
:members:
device::StreamData
------------------
.. doxygenstruct:: mynteye::device::StreamData
:project: mynteyes
:members:
device::MotionData
------------------
.. doxygenstruct:: mynteye::device::MotionData
:project: mynteyes
:members:

View File

@ -1,69 +0,0 @@
.. _enums:
Enums
=====
..
.. doxygengroup:: enumerations
:project: mynteyes
Model
-----
.. doxygenenum:: mynteye::Model
:project: mynteyes
Stream
------
.. doxygenenum:: mynteye::Stream
:project: mynteyes
Capabilities
------------
.. doxygenenum:: mynteye::Capabilities
:project: mynteyes
Info
----
.. doxygenenum:: mynteye::Info
:project: mynteyes
Option
------
.. doxygenenum:: mynteye::Option
:project: mynteyes
Source
------
.. doxygenenum:: mynteye::Source
:project: mynteyes
AddOns
------
.. doxygenenum:: mynteye::AddOns
:project: mynteyes
Format
------
.. doxygenenum:: mynteye::Format
:project: mynteyes
CalibrationModel
----------------
.. doxygenenum:: mynteye::CalibrationModel
:project: mynteyes
DisparityComputingMethod
------------------------
.. doxygenenum:: mynteye::DisparityComputingMethod
:project: mynteyes

View File

@ -1,77 +0,0 @@
.. _types:
Types
=====
OptionInfo
----------
.. doxygenstruct:: mynteye::OptionInfo
:project: mynteyes
:members:
Resolution
----------
.. doxygenstruct:: mynteye::Resolution
:project: mynteyes
:members:
StreamRequest
-------------
.. doxygenstruct:: mynteye::StreamRequest
:project: mynteyes
:members:
Intrinsics
----------
IntrinsicsPinhole
~~~~~~~~~~~~~~~~~
.. doxygenstruct:: mynteye::IntrinsicsPinhole
:project: mynteyes
:members:
IntrinsicsEquidistant
~~~~~~~~~~~~~~~~~~~~~
.. doxygenstruct:: mynteye::IntrinsicsEquidistant
:project: mynteyes
:members:
ImuIntrinsics
~~~~~~~~~~~~~
.. doxygenstruct:: mynteye::ImuIntrinsics
:project: mynteyes
:members:
MotionIntrinsics
~~~~~~~~~~~~~~~~~
.. doxygenstruct:: mynteye::MotionIntrinsics
:project: mynteyes
:members:
Extrinsics
----------
.. doxygenstruct:: mynteye::Extrinsics
:project: mynteyes
:members:
ImgData
-------
.. doxygenstruct:: mynteye::ImgData
:project: mynteyes
:members:
ImuData
-------
.. doxygenstruct:: mynteye::ImuData
:project: mynteyes
:members:

View File

@ -1,34 +0,0 @@
.. _utils:
Utils
=====
select
------
.. doxygenfunction:: select
:project: mynteyes
select_request
--------------
.. doxygenfunction:: select_request
:project: mynteyes
get_real_exposure_time
----------------------
.. doxygenfunction:: get_real_exposure_time
:project: mynteyes
get_sdk_root_dir
----------------
.. doxygenfunction:: get_sdk_root_dir
:project: mynteyes
get_sdk_install_dir
-------------------
.. doxygenfunction:: get_sdk_install_dir
:project: mynteyes

View File

@ -1,194 +0,0 @@
# -*- coding: utf-8 -*-
#
# Configuration file for the Sphinx documentation builder.
#
# This file does only contain a selection of the most common options. For a
# full list see the documentation:
# http://www.sphinx-doc.org/en/master/config
# -- Path setup --------------------------------------------------------------
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
# import os
# import sys
# sys.path.insert(0, os.path.abspath('.'))
# -- Project information -----------------------------------------------------
project = 'MYNT® EYE S SDK'
copyright = '2019, MYNTAI'
author = 'MYNTAI'
# The short X.Y version
version = '2.5.0'
# The full version, including alpha/beta/rc tags
release = version
# -- General configuration ---------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#
# needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
'breathe',
]
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
#
# source_suffix = ['.rst', '.md']
source_suffix = '.rst'
# The master toctree document.
master_doc = 'index'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#
# This is also used if you do content translation via gettext catalogs.
# Usually you set "language" from the command line for these cases.
language = 'en'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This pattern also affects html_static_path and html_extra_path.
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = None
# on_rtd is whether we are on readthedocs.org
import os
on_rtd = os.environ.get('READTHEDOCS', None) == 'True'
import subprocess
subprocess.call('doxygen', shell=True)
# -- Options for HTML output -------------------------------------------------
if not on_rtd: # only import and set the theme if we're building docs locally
import sphinx_rtd_theme
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
# html_theme = 'alabaster'
html_theme = 'sphinx_rtd_theme'
html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#
# html_theme_options = {}
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
# html_static_path = ['_static']
# Custom sidebar templates, must be a dictionary that maps document names
# to template names.
#
# The default sidebars (for documents that don't match any pattern) are
# defined by theme itself. Builtin themes are using these templates by
# default: ``['localtoc.html', 'relations.html', 'sourcelink.html',
# 'searchbox.html']``.
#
# html_sidebars = {}
# otherwise, readthedocs.org uses their theme by default, so no need to specify it
# -- Options for HTMLHelp output ---------------------------------------------
# Output file base name for HTML help builder.
htmlhelp_basename = 'MYNTEYESSDKdoc'
# -- Options for LaTeX output ------------------------------------------------
latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
#
# 'papersize': 'letterpaper',
# The font size ('10pt', '11pt' or '12pt').
#
# 'pointsize': '10pt',
# Additional stuff for the LaTeX preamble.
#
# 'preamble': '',
# Latex figure (float) alignment
#
# 'figure_align': 'htbp',
}
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(master_doc, 'MYNTEYESSDK.tex', 'MYNT® EYE S SDK Documentation',
'MYNTAI', 'manual'),
]
# -- Options for manual page output ------------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
(master_doc, 'mynteyessdk', 'MYNT® EYE S SDK Documentation',
[author], 1)
]
# -- Options for Texinfo output ----------------------------------------------
# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
(master_doc, 'MYNTEYESSDK', 'MYNT® EYE S SDK Documentation',
author, 'MYNTEYESSDK', 'One line description of project.',
'Miscellaneous'),
]
# -- Options for Epub output -------------------------------------------------
# Bibliographic Dublin Core info.
epub_title = project
# The unique identifier of the text. This can be a ISBN number
# or the project homepage.
#
# epub_identifier = ''
# A unique identification for the text.
#
# epub_uid = ''
# A list of files that should not be packed into the epub file.
epub_exclude_files = ['search.html']
# -- Extension configuration -------------------------------------------------
breathe_projects = { 'mynteyes': '_doxygen/xml' }

View File

@ -1,7 +0,0 @@
# libmynteye configuration
#
# 1) Copy this file to: /etc/ld.so.conf.d/libmynteye.conf
# 2) Run this cmd in Terminal: sudo /sbin/ldconfig
/usr/local/cuda/lib64
$HOME/opencv-3.4.1/lib

Binary file not shown.

Before

Width:  |  Height:  |  Size: 295 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 470 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 718 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 403 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 306 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 470 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 484 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 489 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 467 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 492 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 382 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 496 KiB

View File

@ -1,27 +0,0 @@
.. MYNT® EYE S SDK documentation master file, created by
sphinx-quickstart on Mon Mar 11 08:59:35 2019.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
MYNT® EYE S SDK
===============
.. toctree::
:titlesonly:
:maxdepth: 2
src/product/contents
src/sdk/contents
src/firmware/contents
src/tools/contents
src/slam/contents
api/contents
src/support/contents
..
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

View File

@ -1,35 +0,0 @@
@ECHO OFF
pushd %~dp0
REM Command file for Sphinx documentation
if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-build
)
set SOURCEDIR=.
set BUILDDIR=_build
if "%1" == "" goto help
%SPHINXBUILD% >NUL 2>NUL
if errorlevel 9009 (
echo.
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
echo.installed, then set the SPHINXBUILD environment variable to point
echo.to the full path of the 'sphinx-build' executable. Alternatively you
echo.may add the Sphinx directory to PATH.
echo.
echo.If you don't have Sphinx installed, grab it from
echo.http://sphinx-doc.org/
exit /b 1
)
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
goto end
:help
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
:end
popd

View File

@ -1,327 +0,0 @@
mynt-eye-s-sdk
├── 3rdparty
│   └── eigen3 matrix 3rd lib
├── cmake
│   ├── Common.cmake cmake common macro
│   ├── DetectCXX11.cmake
│   ├── DetectOpenCV.cmake
│   ├── FindCUDA
│   │   ├── make2cmake.cmake
│   │   ├── parse_cubin.cmake
│   │   └── run_nvcc.cmake
│   ├── FindCUDA.cmake
│   ├── IncludeGuard.cmake
│   ├── Option.cmake include(DetectOpenCV.cmake)
│   ├── TargetArch.cmake
│   ├── templates
│   └── Utils.cmake include(Common.cmake)
├── CMakeLists.txt
├── docs
│   ├── api
│   ├── conf.py sdkHtml config
│   ├── files
│   ├── images
│   │   ├── firmware
│   │   ├── product
│   │   ├── project
│   │   │   └── vs2017
│   │   ├── sdk
│   │   │   └── tools
│   │   └── tools
│   ├── Makefile sdkHtml Makefile
│   └── src
│   ├── firmware
│   ├── log
│   ├── product
│   ├── sdk
│   │   ├── control
│   │   ├── data
│   │   └── project
│   ├── slam
│   ├── support
│   └── wrapper
├── include
│   ├── deprecated
│   │   └── mynteye
│   │   ├── api.h x
│   │   ├── callbacks.h x
│   │   ├── context.h x
│   │   ├── device.h x
│   │   ├── files.h x
│   │   ├── glog_init.h x
│   │   ├── object.h x
│   │   ├── plugin.h x
│   │   ├── strings.h x
│   │   ├── times.h x
│   │   └── utils.h x
│   └── mynteye
│   ├── api
│   │   ├── api.h user api(mynteye.h types.h opencv2*)
│   │   ├── object.h img formats transform(mynteye.h opencv2*)
│   │   └── plugin.h plugin process in&out(mynteye.h opencv2*)
│   ├── device
│   │   ├── callbacks.h processor data callback(mynteye.h mynteye/types.h)
│   │   ├── context.h detect uvc device(mynteye.h)
│   │   ├── device.h imu-->motions & camera-->streams(mynteye.h callbacks.h device/types.h)
│   │   ├── types.h img & imu_data types(mynteye.h mynteye/types.h)
│   │   └── utils.h user help(mynteye.h mynteye/types.h)
│   ├── global.h os adapter
│   ├── logger.h message output
│   ├── miniglog.h google miniglog
│ ├── mynteye.h.in api version(global.h)
│   ├── types.h all types(mynteye.h)
│   └── util
│   ├── files.h (mynteye.h)
│   ├── strings.h (mynteye.h)
│   └── times.h (mynteye.h)
├── Makefile
├── samples
│   ├── camera_with_junior_device_api.cc (device.h utils.h times.h)
│   ├── camera_with_senior_api.cc (api.h times.h)
│   ├── CMakeLists.txt samples build
│   ├── config
│   │   ├── S1030
│   │   │   └── deprecated
│   │   └── S210A
│   │   └── deprecated
│   ├── ctrl_auto_exposure.cc (api.h)
│   ├── ctrl_framerate.cc (api.h times.h)
│   ├── ctrl_iic_address.cc (api.h)
│   ├── ctrl_imu_low_pass_filter.cc (api.h times.h)
│   ├── ctrl_imu_range.cc (api.h times.h)
│   ├── ctrl_infrared.cc
│   ├── ctrl_manual_exposure.cc
│   ├── ctrl_sync_timestamp.cc
│   ├── dataset.cc
│   ├── dataset.h
│   ├── device_writer.cc
│   ├── device_writer.h
│   ├── get_data_without_select.cc
│   ├── get_depth_and_points.cc
│   ├── get_depth.cc
│   ├── get_depth_with_region.cc
│   ├── get_device_info.cc
│   ├── get_disparity.cc
│   ├── get_from_callbacks.cc
│   ├── get_img_params.cc
│   ├── get_imu.cc
│   ├── get_imu_correspondence.cc
│   ├── get_imu_params.cc
│   ├── get_stereo_rectified.cc
│   ├── get_with_plugin.cc
│   ├── record.cc
│   ├── save_all_infos.cc
│   ├── save_single_image.cc
│   ├── simple_demo independent demo
│   │   ├── project_cmake
│   │   │   ├── CMakeLists.txt linux build
│   │   │   └── mynteye_demo.cc
│   │   └── project_vs2017 windows vs
│   │   ├── images
│   │   └── mynteyes_demo
│   │   └── mynteyes_demo
│   │   ├── stdafx.h
│   │   └── targetver.h
│   ├── util_cv.cc (util_cv.h device/utils.h)
│   ├── util_cv.h cv painter(mynteye/types.h)
│   ├── util_pcl.cc (util_pcl.h)
│   ├── util_pcl.h pcl cloud points viewer
│   ├── uvc_camera.cc
│   ├── write_device_info.cc
│   ├── write_img_params.cc
│   └── write_imu_params.cc
├── scripts
│   ├── common
│   └── win
│   ├── cmake
│   │   ├── mynteye-targets.cmake
│   │   └── mynteye-targets-release.cmake
│   └── nsis
│   └── Include
├── src
│   ├── main.cc
│   └── mynteye
│   ├── api
│   │   ├── api.cc (correspondence.h dl.h plugin.h ...)
│   │   ├── camera_models
│   │   │   ├── camera.cc (camera.h)
│   │   │   ├── camera.h camera base(eigen3* opencv2* mynteye.h)
│   │   │   ├── equidistant_camera.cc (equidistant_camera.h)
│   │   │   ├── equidistant_camera.h KB projection model(opencv2* camera.h)
│   │   │   ├── gpl.cc
│   │   │   └── gpl.h
│   │   ├── correspondence.cc (correspondence.h device.h)
│   │   ├── correspondence.h stream control(api.h callbacks.h)
│   │   ├── data_tools.cc (data_tools.h)
│   │   ├── data_tools.h api<--data<-->obj(object.h api.h device.h)
│   │   ├── dl.cc (dl.h)
│   │   ├── dl.h dynamic loading(mynteye.h)
│   │   ├── processor root-->rectify-->disparity(norm)-->depth-->points
│   │   │   ├── depth_processor.cc (depth_Processor.h)
│   │   │   ├── depth_processor.h (processor.h types.h rectify_processor.h)
│   │   │   ├── depth_processor_ocv.cc (depth_processor_ocv.h)
│   │   │   ├── depth_processor_ocv.h output cv::Mat(processor.h)
│   │   │   ├── disparity_normalized_processor.cc (opencv2* disparity_normalized_processor.h)
│   │   │   ├── disparity_normalized_processor.h (processor.h)
│   │   │   ├── disparity_processor.cc (opencv2* disparity_processor.h)
│   │   │   ├── disparity_processor.h (mynteye/types.h processor.h)
│   │   │   ├── points_processor.cc (opencv2* points_processor.h)
│   │   │   ├── points_processor.h (mynteye/types.h processor.h)
│   │   │   ├── points_processor_ocv.cc
│   │   │   ├── points_processor_ocv.h
│   │   │   ├── rectify_processor.cc (opencv2* rectify_processor.h)
│   │   │   ├── rectify_processor.h (equidistant_camera.h ...)
│   │   │   ├── rectify_processor_ocv.cc
│   │   │   ├── rectify_processor_ocv.h
│   │   │   ├── root_camera_processor.cc (opencv2* synthetic.h device.h data_tools.h)
│   │   │   └── root_camera_processor.h (opencv2* processor.h)
│   │   ├── processor.cc (strings.h times.h data_tools.h)
│   │   ├── processor.h processor base(synthetic.h mynteye.h object.h)
│   │   ├── synthetic.cc (*processor.h object.h plugin.h device.h data_tools.h)
│   │   ├── synthetic.h synthetic pipeline(api.h)
│   │   ├── version_checker.cc
│   │   └── version_checker.h
│   ├── device
│   │   ├── async_callback.h asynchronous data translate
│   │   ├── async_callback_impl.h derived
│   │   ├── channel
│   │   │   ├── bytes.cc
│   │   │   ├── bytes.h <--uint8_t data-->
│   │   │   ├── channels.cc
│   │   │   ├── channels.h channels control api
│   │   │   ├── def.h data packet
│   │   │   ├── file_channel.cc
│   │   │   └── file_channel.h data parser
│   │   ├── config.cc
│   │   ├── config.h config lists
│   │   ├── context.cc create context
│   │   ├── device.cc device class
│   │   ├── motions.cc
│   │   ├── motions.h imu motions
│   │   ├── standard standard device s
│   │   │   ├── channels_adapter_s.cc
│   │   │   ├── channels_adapter_s.h
│   │   │   ├── device_s.cc
│   │   │   ├── device_s.h
│   │   │   ├── streams_adapter_s.cc
│   │   │   └── streams_adapter_s.h
│   │   ├── standard2 standard device s2
│   │   │   ├── channels_adapter_s2.cc
│   │   │   ├── channels_adapter_s2.h
│   │   │   ├── device_s2.cc
│   │   │   ├── device_s2.h
│   │   │   ├── streams_adapter_s2.cc
│   │   │   └── streams_adapter_s2.h
│   │   ├── streams.cc
│   │   ├── streams.h camera streams
│   │   ├── types.cc to string
│   │   └── utils.cc user helper
│   ├── miniglog.cc
│   ├── types.cc device,streams,option...types str
│   ├── util
│   │   ├── files.cc
│   │   └── strings.cc
│   └── uvc
│ 
├── tools
│   ├── _build
│   │   ├── CMakeCache.txt
│   │   ├── CMakeFiles
│   │   │   ├── 3.5.1
│   │   │   │   ├── CMakeCCompiler.cmake
│   │   │   │   ├── CMakeCXXCompiler.cmake
│   │   │   │   ├── CMakeDetermineCompilerABI_C.bin
│   │   │   │   ├── CMakeDetermineCompilerABI_CXX.bin
│   │   │   │   ├── CMakeSystem.cmake
│   │   │   │   ├── CompilerIdC
│   │   │   │   │   └── CMakeCCompilerId.c
│   │   │   │   └── CompilerIdCXX
│   │   │   │   └── CMakeCXXCompilerId.cpp
│   │   │   ├── CMakeDirectoryInformation.cmake
│   │   │   ├── CMakeOutput.log
│   │   │   ├── CMakeTmp
│   │   │   ├── Makefile2
│   │   │   └── Makefile.cmake
│   │   ├── cmake_install.cmake
│   │   ├── dataset
│   │   │   ├── CMakeFiles
│   │   │   │   ├── CMakeDirectoryInformation.cmake
│   │   │   │   └── record2.dir
│   │   │   │   ├── cmake_clean.cmake
│   │   │   │   └── DependInfo.cmake
│   │   │   ├── cmake_install.cmake
│   │   │   └── Makefile
│   │   ├── Makefile
│   │   └── writer
│   │   ├── CMakeFiles
│   │   │   ├── CMakeDirectoryInformation.cmake
│   │   │   ├── device_info_writer.dir
│   │   │   │   ├── cmake_clean.cmake
│   │   │   │   └── DependInfo.cmake
│   │   │   ├── device_writer.dir
│   │   │   │   ├── cmake_clean.cmake
│   │   │   │   ├── cmake_clean_target.cmake
│   │   │   │   └── DependInfo.cmake
│   │   │   ├── img_params_writer.dir
│   │   │   │   ├── cmake_clean.cmake
│   │   │   │   └── DependInfo.cmake
│   │   │   ├── imu_params_writer.dir
│   │   │   │   ├── cmake_clean.cmake
│   │   │   │   └── DependInfo.cmake
│   │   │   └── save_all_infos.dir
│   │   │   ├── cmake_clean.cmake
│   │   │   └── DependInfo.cmake
│   │   ├── cmake_install.cmake
│   │   └── Makefile
│   ├── linter
│   └── _output
│   ├── bin
│   │   ├── dataset
│   │   └── writer
│   └── lib
│   └── writer
└── wrappers
├── android
│  
├── python
│   ├── CMakeLists.txt
│   ├── samples
│   │   ├── mynteye.py
│   │   └── util
│   │   ├── cv_painter.py
│   │   └── __init__.py
│   ├── src
│   │   └── mynteye_py.cc
│   └── third_party
│   └── array
│   ├── array_indexing_suite.hpp
│   └── array_ref.hpp
└── ros
└── src
└── mynt_eye_ros_wrapper
├── CMakeLists.txt
├── config
│   ├── device
│   ├── laserscan
│   ├── process
│   ├── slam
│   └── sub
│   ├── device_1
│   ├── device_2
│   ├── process_1
│   └── process_2
├── launch
│   ├── laserscan
│   ├── slam
│   └── sub
├── mesh
├── rviz
├── scripts
│   └── get_device_info.py
├── src
│   ├── configuru.hpp
│   ├── wrapper_node.cc
│   └── wrapper_nodelet.cc
└── srv

View File

@ -1,5 +0,0 @@
breathe>=4.13
restructuredtext-lint>=1.3.0
Sphinx>=2.0.1
sphinx-intl>=0.9.11
sphinx-rtd-theme>=0.4.2

View File

@ -1,38 +0,0 @@
.. _firmware_applicable:
Firmware and SDK compatibility
==============================
============================ ========================
S1030 Firmwares SDK Version
============================ ========================
MYNTEYE-S1030-2.7.0.img 2.5.0 (2.5.0 ~ latest)
MYNTEYE-S1030-2.5.0.img 2.4.0 (2.4.0 ~ 2.5.0)
MYNTEYE_S_2.4.0.img 2.3.4 (2.3.4 ~ 2.3.9)
MYNTEYE_S_2.3.0.img 2.3.0 (2.2.2-rc1 ~ 2.3.3)
MYNTEYE_S_2.2.2.img 2.3.0 (2.2.2-rc1 ~ 2.3.0)
MYNTEYE_S_2.0.0_rc.img 2.0.0-rc (2.0.0-rc ~ 2.0.0-rc2)
MYNTEYE_S_2.0.0_rc2.img 2.0.0-rc2 (2.0.0-rc ~ 2.0.0-rc2)
MYNTEYE_S_2.0.0_rc1.img 2.0.0-rc1
MYNTEYE_S_2.0.0_rc0.img 2.0.0-rc0 (2.0.0-rc1 ~ 2.0.0-alpha1)
MYNTEYE_S_2.0.0_alpha1.1.img 2.0.0-alpha1 (2.0.0-rc1 ~ 2.0.0-alpha1)
MYNTEYE_S_2.0.0_alpha1.img 2.0.0-alpha1 (2.0.0-rc1 ~ 2.0.0-alpha1)
MYNTEYE_S_2.0.0_alpha0.img 2.0.0-alpha0
============================ ========================
============================ ===========================
S21X0 Firmwares SDK Version
============================ ===========================
MYNTEYE-S21X0-2.1.0.img 2.5.0 (2.5.0 ~ latest)
MYNTEYE-S21X0-1.4.0.img 2.4.2(2.4.2 ~ 2.5.0)
MYNTEYE-S2100-1.3.2.img 2.4.0(2.4.0 ~ 2.4.1)
MYNTEYE_S2100_1.2.img 2.3.5(2.3.5 ~ 2.3.9)
MYNTEYE_S2100_1.1.img 2.3.4
============================ ===========================
.. attention::
Please CONFIRM your device model and use CORRECT firmware.
``Firmwares`` indicates the firmware file name. It's in `MYNTEYE_BOX(Download Link) <http://doc.myntai.com/mynteye/s/download>`_ in the ``Firmwares`` directory.
``SDK Version`` indicates the version of the SDK that the firmware is adapted to, and the range of available versions are indicated in parentheses.

View File

@ -1,9 +0,0 @@
FIRMWARE
==================
.. toctree::
:maxdepth: 2
fw_info
fw_update
fw_changelog

View File

@ -1,50 +0,0 @@
Change Log
==================
.. toctree::
:maxdepth: 2
2019-11-25
-------------------
S1030 Main Chip Firmware: MYNTEYE-S1030-2.7.0.img
1. Fix some issues
S21X0 Main Chip Firmware: MYNTEYE-S21X0-2.1.0.img
1. Update protocol version
2. Fix and optimize some other issues
2019-09-09
-------------------
S21X0 Main Chip Firmware: MYNTEYE-S21X0-1.4.0.img
1. Support 2110 device.
2019-08-09
-------------------
S1030 Main Chip Firmware: MYNTEYE-S1030-2.5.0.img
1. Optimize the synchronization of image and imu
2. Not save the camera control parameters
3. Fix the overexplosion problem at low resolution
4. Fix USB 2.0 first open failure problem
5. Add automatic recovery function when updating wrong firmware
S2100 Main Chip Firmware: MYNTEYE-S2100-1.3.2.img
1. Optimize the synchronization of image and imu
2. Not save the camera control parameters
3. Optimize IMU low-pass filter default values
4. Optimize the exposure time calculation method, the maximum exposure time is limited to 66.5ms
5. Add automatic recovery function when updating wrong firmware
6. Fix and optimize some other issues
S2100 Auxiliary Chip Firmware: MYNTEYE-S2100-auxiliary-chip-1.4.2.bin
1. Time synchronization adds uart interface, io interruption judgement
2. Time synchronization i2c interface adds whoami, read timestamp and median filter open state interface
3. Fix and optimize some other issues

View File

@ -1,9 +0,0 @@
.. _fw_info:
Firmware Description
==================
.. toctree::
:maxdepth: 2
applicable

View File

@ -1,10 +0,0 @@
.. _fw_update:
Firmware Update
==================
.. toctree::
:maxdepth: 2
update_main_chip
update_auxiliary_chip

Some files were not shown because too many files have changed in this diff Show More