├── .gitattributes
├── .gitignore
├── LICENSE.md
├── README.md
├── crossbar
└── .crossbar
│ ├── config.json
│ ├── key.priv
│ ├── key.pub
│ ├── server.cer
│ ├── server.csr
│ ├── server.p12
│ └── server.pkey
├── deploy
├── backup.sh
├── install.sh
├── run.sh
├── supervisor
│ ├── pack1.conf
│ └── pack2.conf
└── test_numba.sh
├── docs
├── README.md
├── cad
│ └── PackBOT.7z
├── cdr
│ ├── POC.pdf
│ └── SPS.pdf
├── mission
│ └── Design Brief.pdf
└── src
│ ├── assets
│ ├── com.png
│ ├── com.xml
│ ├── head.png
│ ├── head.xml
│ ├── leg1.png
│ ├── leg2.png
│ ├── robot.png
│ ├── servo.png
│ ├── servo.xml
│ ├── table.jpg
│ ├── vector.png
│ ├── vector.xml
│ ├── vector1.png
│ ├── vector1.xml
│ ├── vector2.png
│ └── vector2.xml
│ ├── repair.html
│ ├── repair.md
│ ├── template
│ ├── template.css
│ └── template.html
│ ├── tutorial.html
│ ├── tutorial.md
│ ├── usage.html
│ └── usage.md
├── notebook
├── .ipynb_checkpoints
│ ├── Eye of the Tiger-checkpoint.ipynb
│ ├── Kinematics-checkpoint.ipynb
│ └── Untitled-checkpoint.ipynb
├── Eye of the Tiger.ipynb
├── Kinematics.ipynb
└── Untitled.ipynb
├── presentation
├── __init__.py
├── alpha.mp4
├── alpha.py
├── arc.py
├── dog.mp4
├── dog.py
├── fabrik.py
└── life.gif
├── redboard
├── cerebral
│ ├── cerebral.ino
│ ├── mpu.h
│ ├── quaternionFilter.h
│ └── uv.h
└── kine
│ └── kine.ino
└── src
├── __init__.py
├── agility
├── __init__.py
├── forth
│ ├── in.4th
│ └── out.txt
├── gait.py
├── imu
│ ├── __init__.py
│ └── mpu.py
├── maestro.py
├── main.py
├── pololu
│ ├── __init__.py
│ ├── enumeration.py
│ ├── instruction.py
│ ├── program.py
│ ├── reader.py
│ ├── settings.dat
│ ├── settings.py
│ ├── structure.py
│ └── usc.py
└── tests
│ ├── __init__.py
│ ├── analysis.py
│ ├── com.py
│ ├── com_test.py
│ ├── crawl.py
│ ├── dance.py
│ ├── full.py
│ ├── game.py
│ ├── paragon.py
│ ├── plot.py
│ ├── pose.py
│ ├── single.py
│ ├── speed.py
│ ├── stepper.py
│ ├── test.py
│ └── tiger.mp3
├── ares
├── __init__.py
├── main.py
└── tests
│ ├── rfid
│ ├── __init__.py
│ └── test.py
│ └── test.py
├── cerebral
├── __init__.py
├── database.py
├── logger.py
├── nameserver.py
├── pack1
│ ├── __init__.py
│ ├── commands.py
│ ├── demo.py
│ ├── hippocampus.py
│ ├── main.py
│ ├── server.cer
│ ├── server.csr
│ ├── server.p12
│ ├── server.pkey
│ ├── worker1.py
│ ├── worker2.py
│ └── worker3.py
├── pack2
│ ├── __init__.py
│ ├── commands.py
│ ├── demo.py
│ ├── hippocampus.py
│ ├── main.py
│ ├── server.cer
│ ├── server.csr
│ ├── server.p12
│ ├── server.pkey
│ ├── worker1.py
│ ├── worker2.py
│ └── worker3.py
├── tests
│ ├── __init__.py
│ ├── worker2.py
│ └── worker3.py
└── wolf
│ └── __init__.py
├── eclipse.py
├── finesse
├── __init__.py
├── eclipse.py
├── paragon.py
└── tests
│ ├── 3d.png
│ ├── analysis.png
│ ├── leg1.py
│ └── paragon.py
├── lykos
├── __init__.py
└── apollo.py
├── shared
├── __init__.py
├── alsa.py
├── autoreconnect.py
├── debug.py
├── pid.py
└── timer.py
├── tests
├── __init__.py
├── arc
│ ├── __init__.py
│ └── arc.py
├── audio
│ ├── __init__.py
│ ├── audio.py
│ ├── desktop.ini
│ ├── frequency_estimator.py
│ ├── parabolic.py
│ ├── record.flac
│ ├── record.mp3
│ ├── violin_a.wav
│ └── wol.mp3
├── eclipse.py
├── ik
│ ├── __init__.py
│ ├── fabrik.py
│ └── finesse
│ │ ├── __init__.py
│ │ ├── fabrik.py
│ │ ├── helper.py
│ │ ├── ik.py
│ │ ├── leg1.png
│ │ ├── leg2.png
│ │ ├── leg2.py
│ │ ├── leg3.png
│ │ ├── leg3.py
│ │ ├── out.png
│ │ └── robot.xml
├── main.py
├── multi.py
├── pseudocode.py
├── tests.py
└── vision
│ ├── __init__.py
│ ├── book2.jpg
│ ├── canny.jpg
│ ├── cheetah.mp4
│ ├── color2.jpg
│ ├── common.py
│ ├── floor.jpg
│ ├── orb.py
│ ├── roi.avi
│ ├── roi.jpg
│ ├── roi.py
│ ├── roi_out.jpg
│ ├── shape.jpg
│ ├── shape.py
│ ├── shape_out.jpg
│ └── vision.py
├── theia
├── __init__.py
├── eye.py
├── main.py
├── matcher.py
├── oculus
│ ├── CMakeLists.txt
│ ├── PythonMake.txt
│ ├── README.md
│ └── src
│ │ ├── 3rdparty
│ │ ├── cv_ext
│ │ │ ├── init_box_selector.cpp
│ │ │ ├── init_box_selector.hpp
│ │ │ ├── math_spectrums.cpp
│ │ │ ├── math_spectrums.hpp
│ │ │ ├── psr.hpp
│ │ │ ├── shift.cpp
│ │ │ ├── shift.hpp
│ │ │ ├── tracker_run.cpp
│ │ │ └── tracker_run.hpp
│ │ ├── pbcvt
│ │ │ ├── .gitignore
│ │ │ ├── CMakeLists.txt
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── cmake
│ │ │ │ └── DetectPython.cmake
│ │ │ ├── include
│ │ │ │ └── pyboostcvconverter
│ │ │ │ │ └── pyboostcvconverter.hpp
│ │ │ └── src
│ │ │ │ ├── pyboost_cv2_converter.cpp
│ │ │ │ ├── pyboost_cv3_converter.cpp
│ │ │ │ └── python_module.cpp
│ │ ├── piotr
│ │ │ ├── README.md
│ │ │ ├── gradientMex.hpp
│ │ │ └── src
│ │ │ │ ├── SSE2NEON.h
│ │ │ │ ├── gradientMex.cpp
│ │ │ │ ├── sse.hpp
│ │ │ │ └── wrappers.hpp
│ │ └── rgbd
│ │ │ ├── include
│ │ │ ├── linemod.hpp
│ │ │ ├── normal_lut.i
│ │ │ └── rgbd.hpp
│ │ │ └── src
│ │ │ └── linemod.cpp
│ │ ├── cf_libs
│ │ ├── common
│ │ │ ├── cv_ext.hpp
│ │ │ ├── feature_channels.hpp
│ │ │ ├── gil.hpp
│ │ │ ├── mat_consts.hpp
│ │ │ ├── math_helper.cpp
│ │ │ ├── math_helper.hpp
│ │ │ └── scale_estimator.hpp
│ │ ├── dsst
│ │ │ └── dsst_tracker.hpp
│ │ ├── kcf
│ │ │ └── kcf_tracker.hpp
│ │ └── line2d
│ │ │ └── line2d.hpp
│ │ ├── exports
│ │ ├── dsst_export.cpp
│ │ ├── dsst_export.h
│ │ ├── kcf_export.cpp
│ │ ├── kcf_export.h
│ │ ├── line2d_export.cpp
│ │ └── line2d_export.h
│ │ ├── main
│ │ ├── image_acquisition.cpp
│ │ ├── image_acquisition.hpp
│ │ ├── main_dsst.cpp
│ │ └── main_kcf.cpp
│ │ └── oculus.cpp
├── slam
│ ├── CMakeLists.txt
│ ├── Dependencies.md
│ ├── LICENSE.txt
│ ├── License-gpl.txt
│ ├── README.md
│ ├── Thirdparty
│ │ ├── DBoW2
│ │ │ ├── CMakeLists.txt
│ │ │ ├── LICENSE.txt
│ │ │ ├── README.txt
│ │ │ └── dbow2
│ │ │ │ ├── DBoW2
│ │ │ │ ├── BowVector.cpp
│ │ │ │ ├── BowVector.h
│ │ │ │ ├── FClass.h
│ │ │ │ ├── FORB.cpp
│ │ │ │ ├── FORB.h
│ │ │ │ ├── FeatureVector.cpp
│ │ │ │ ├── FeatureVector.h
│ │ │ │ ├── ScoringObject.cpp
│ │ │ │ ├── ScoringObject.h
│ │ │ │ └── TemplatedVocabulary.h
│ │ │ │ └── DUtils
│ │ │ │ ├── Random.cpp
│ │ │ │ ├── Random.h
│ │ │ │ ├── Timestamp.cpp
│ │ │ │ ├── Timestamp.h
│ │ │ │ └── config.h
│ │ └── g2o
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README.txt
│ │ │ ├── cmake_modules
│ │ │ ├── FindBLAS.cmake
│ │ │ ├── FindEigen3.cmake
│ │ │ └── FindLAPACK.cmake
│ │ │ ├── config.h
│ │ │ ├── config.h.in
│ │ │ ├── g2o
│ │ │ ├── core
│ │ │ │ ├── base_binary_edge.h
│ │ │ │ ├── base_binary_edge.hpp
│ │ │ │ ├── base_edge.h
│ │ │ │ ├── base_multi_edge.h
│ │ │ │ ├── base_multi_edge.hpp
│ │ │ │ ├── base_unary_edge.h
│ │ │ │ ├── base_unary_edge.hpp
│ │ │ │ ├── base_vertex.h
│ │ │ │ ├── base_vertex.hpp
│ │ │ │ ├── batch_stats.cpp
│ │ │ │ ├── batch_stats.h
│ │ │ │ ├── block_solver.h
│ │ │ │ ├── block_solver.hpp
│ │ │ │ ├── cache.cpp
│ │ │ │ ├── cache.h
│ │ │ │ ├── creators.h
│ │ │ │ ├── eigen_types.h
│ │ │ │ ├── estimate_propagator.cpp
│ │ │ │ ├── estimate_propagator.h
│ │ │ │ ├── factory.cpp
│ │ │ │ ├── factory.h
│ │ │ │ ├── g2o_core_api.h
│ │ │ │ ├── hyper_dijkstra.cpp
│ │ │ │ ├── hyper_dijkstra.h
│ │ │ │ ├── hyper_graph.cpp
│ │ │ │ ├── hyper_graph.h
│ │ │ │ ├── hyper_graph_action.cpp
│ │ │ │ ├── hyper_graph_action.h
│ │ │ │ ├── jacobian_workspace.cpp
│ │ │ │ ├── jacobian_workspace.h
│ │ │ │ ├── linear_solver.h
│ │ │ │ ├── marginal_covariance_cholesky.cpp
│ │ │ │ ├── marginal_covariance_cholesky.h
│ │ │ │ ├── matrix_operations.h
│ │ │ │ ├── matrix_structure.cpp
│ │ │ │ ├── matrix_structure.h
│ │ │ │ ├── openmp_mutex.h
│ │ │ │ ├── optimizable_graph.cpp
│ │ │ │ ├── optimizable_graph.h
│ │ │ │ ├── optimization_algorithm.cpp
│ │ │ │ ├── optimization_algorithm.h
│ │ │ │ ├── optimization_algorithm_dogleg.cpp
│ │ │ │ ├── optimization_algorithm_dogleg.h
│ │ │ │ ├── optimization_algorithm_factory.cpp
│ │ │ │ ├── optimization_algorithm_factory.h
│ │ │ │ ├── optimization_algorithm_gauss_newton.cpp
│ │ │ │ ├── optimization_algorithm_gauss_newton.h
│ │ │ │ ├── optimization_algorithm_levenberg.cpp
│ │ │ │ ├── optimization_algorithm_levenberg.h
│ │ │ │ ├── optimization_algorithm_property.h
│ │ │ │ ├── optimization_algorithm_with_hessian.cpp
│ │ │ │ ├── optimization_algorithm_with_hessian.h
│ │ │ │ ├── parameter.cpp
│ │ │ │ ├── parameter.h
│ │ │ │ ├── parameter_container.cpp
│ │ │ │ ├── parameter_container.h
│ │ │ │ ├── robust_kernel.cpp
│ │ │ │ ├── robust_kernel.h
│ │ │ │ ├── robust_kernel_factory.cpp
│ │ │ │ ├── robust_kernel_factory.h
│ │ │ │ ├── robust_kernel_impl.cpp
│ │ │ │ ├── robust_kernel_impl.h
│ │ │ │ ├── solver.cpp
│ │ │ │ ├── solver.h
│ │ │ │ ├── sparse_block_matrix.h
│ │ │ │ ├── sparse_block_matrix.hpp
│ │ │ │ ├── sparse_block_matrix_ccs.h
│ │ │ │ ├── sparse_block_matrix_diagonal.h
│ │ │ │ ├── sparse_block_matrix_test.cpp
│ │ │ │ ├── sparse_optimizer.cpp
│ │ │ │ └── sparse_optimizer.h
│ │ │ ├── solvers
│ │ │ │ ├── linear_solver_dense.h
│ │ │ │ └── linear_solver_eigen.h
│ │ │ ├── stuff
│ │ │ │ ├── color_macros.h
│ │ │ │ ├── macros.h
│ │ │ │ ├── misc.h
│ │ │ │ ├── os_specific.c
│ │ │ │ ├── os_specific.h
│ │ │ │ ├── property.cpp
│ │ │ │ ├── property.h
│ │ │ │ ├── string_tools.cpp
│ │ │ │ ├── string_tools.h
│ │ │ │ ├── timeutil.cpp
│ │ │ │ └── timeutil.h
│ │ │ └── types
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── se3_ops.h
│ │ │ │ ├── se3_ops.hpp
│ │ │ │ ├── se3quat.h
│ │ │ │ ├── sim3.h
│ │ │ │ ├── types_sba.cpp
│ │ │ │ ├── types_sba.h
│ │ │ │ ├── types_seven_dof_expmap.cpp
│ │ │ │ ├── types_seven_dof_expmap.h
│ │ │ │ ├── types_six_dof_expmap.cpp
│ │ │ │ └── types_six_dof_expmap.h
│ │ │ └── license-bsd.txt
│ ├── build.sh
│ ├── cmake_modules
│ │ ├── FindEigen3.cmake
│ │ └── FindPython.cmake
│ ├── data
│ │ ├── ORBSLAM_Example_Video.mp4
│ │ └── Settings_Complete.yaml
│ ├── include
│ │ ├── Converter.h
│ │ ├── Frame.h
│ │ ├── Initializer.h
│ │ ├── KeyFrame.h
│ │ ├── KeyFrameDatabase.h
│ │ ├── LocalMapping.h
│ │ ├── LoopClosing.h
│ │ ├── Map.h
│ │ ├── MapPoint.h
│ │ ├── ORBVocabulary.h
│ │ ├── ORBextractor.h
│ │ ├── ORBmatcher.h
│ │ ├── Optimizer.h
│ │ ├── PnPsolver.h
│ │ ├── Sim3Solver.h
│ │ ├── System.h
│ │ └── Tracking.h
│ ├── python
│ │ ├── include
│ │ │ ├── gil.hpp
│ │ │ └── pyboostcvconverter
│ │ │ │ └── pyboostcvconverter.hpp
│ │ ├── src
│ │ │ ├── debug.cpp
│ │ │ ├── pyboost_cv3_converter.cpp
│ │ │ └── pyslam.cpp
│ │ └── test.py
│ └── src
│ │ ├── Converter.cc
│ │ ├── Frame.cc
│ │ ├── Initializer.cc
│ │ ├── KeyFrame.cc
│ │ ├── KeyFrameDatabase.cc
│ │ ├── LocalMapping.cc
│ │ ├── LoopClosing.cc
│ │ ├── Map.cc
│ │ ├── MapPoint.cc
│ │ ├── ORBextractor.cc
│ │ ├── ORBmatcher.cc
│ │ ├── Optimizer.cc
│ │ ├── PnPsolver.cc
│ │ ├── Sim3Solver.cc
│ │ ├── System.cc
│ │ └── Tracking.cc
├── tests
│ ├── bgsegm
│ │ └── test.py
│ ├── color
│ │ ├── sand1.jpg
│ │ ├── sand2.jpg
│ │ ├── sand3.jpg
│ │ ├── sand4.jpg
│ │ ├── sand5.jpg
│ │ ├── sand6.jpg
│ │ ├── sand7.jpg
│ │ ├── sand8.jpg
│ │ └── test.py
│ ├── detection
│ │ ├── duck.jpg
│ │ ├── face.yaml
│ │ ├── kenneth.yaml
│ │ ├── roi.jpg
│ │ ├── roi.png
│ │ ├── test.py
│ │ └── trainer.py
│ ├── hog
│ │ └── test.py
│ ├── odo
│ │ ├── __init__.py
│ │ └── mono.py
│ ├── stereo
│ │ ├── __init__.py
│ │ ├── left.png
│ │ ├── right.png
│ │ └── test.py
│ └── tracking
│ │ ├── cmt.py
│ │ ├── duck.jpg
│ │ ├── duck.png
│ │ ├── integrate.py
│ │ ├── matching.py
│ │ ├── roi.jpg
│ │ ├── roi.png
│ │ ├── test.py
│ │ └── track.yaml
├── tracker.py
└── util.py
└── zeus
├── phi
├── .gitignore
├── bower.json
├── gulpfile.js
├── main
│ ├── fonts
│ │ ├── lato-v11-latin-700.woff
│ │ ├── lato-v11-latin-700.woff2
│ │ ├── lato-v11-latin-700italic.woff
│ │ ├── lato-v11-latin-700italic.woff2
│ │ ├── lato-v11-latin-italic.woff
│ │ ├── lato-v11-latin-italic.woff2
│ │ ├── lato-v11-latin-regular.woff
│ │ └── lato-v11-latin-regular.woff2
│ ├── html
│ │ ├── index.html
│ │ └── modals
│ │ │ ├── choice.html
│ │ │ ├── com.html
│ │ │ └── speech.html
│ ├── img
│ │ ├── color-bars.jpg
│ │ ├── eclipse.png
│ │ └── paragon.png
│ ├── js
│ │ ├── log.js
│ │ ├── main.js
│ │ ├── menu.js
│ │ ├── modal.js
│ │ ├── pack.js
│ │ ├── rivets.js
│ │ ├── rpc.js
│ │ ├── settings.js
│ │ ├── speech.js
│ │ └── wamp.js
│ └── sass
│ │ └── phi.scss
├── npm-debug.log
├── package.json
├── semantic.json
└── semantic
│ ├── gulpfile.js
│ └── src
│ ├── definitions
│ ├── behaviors
│ │ ├── api.js
│ │ ├── colorize.js
│ │ ├── form.js
│ │ ├── state.js
│ │ ├── visibility.js
│ │ └── visit.js
│ ├── collections
│ │ ├── breadcrumb.less
│ │ ├── form.less
│ │ ├── grid.less
│ │ ├── menu.less
│ │ ├── message.less
│ │ └── table.less
│ ├── elements
│ │ ├── button.less
│ │ ├── container.less
│ │ ├── divider.less
│ │ ├── flag.less
│ │ ├── header.less
│ │ ├── icon.less
│ │ ├── image.less
│ │ ├── input.less
│ │ ├── label.less
│ │ ├── list.less
│ │ ├── loader.less
│ │ ├── rail.less
│ │ ├── reveal.less
│ │ ├── segment.less
│ │ └── step.less
│ ├── globals
│ │ ├── reset.less
│ │ ├── site.js
│ │ └── site.less
│ ├── modules
│ │ ├── accordion.js
│ │ ├── accordion.less
│ │ ├── checkbox.js
│ │ ├── checkbox.less
│ │ ├── dimmer.js
│ │ ├── dimmer.less
│ │ ├── dropdown.js
│ │ ├── dropdown.less
│ │ ├── embed.js
│ │ ├── embed.less
│ │ ├── modal.js
│ │ ├── modal.less
│ │ ├── nag.js
│ │ ├── nag.less
│ │ ├── popup.js
│ │ ├── popup.less
│ │ ├── progress.js
│ │ ├── progress.less
│ │ ├── rating.js
│ │ ├── rating.less
│ │ ├── search.js
│ │ ├── search.less
│ │ ├── shape.js
│ │ ├── shape.less
│ │ ├── sidebar.js
│ │ ├── sidebar.less
│ │ ├── sticky.js
│ │ ├── sticky.less
│ │ ├── tab.js
│ │ ├── tab.less
│ │ ├── transition.js
│ │ └── transition.less
│ └── views
│ │ ├── ad.less
│ │ ├── card.less
│ │ ├── comment.less
│ │ ├── feed.less
│ │ ├── item.less
│ │ └── statistic.less
│ ├── semantic.less
│ ├── site
│ ├── collections
│ │ ├── breadcrumb.overrides
│ │ ├── breadcrumb.variables
│ │ ├── form.overrides
│ │ ├── form.variables
│ │ ├── grid.overrides
│ │ ├── grid.variables
│ │ ├── menu.overrides
│ │ ├── menu.variables
│ │ ├── message.overrides
│ │ ├── message.variables
│ │ ├── table.overrides
│ │ └── table.variables
│ ├── elements
│ │ ├── button.overrides
│ │ ├── button.variables
│ │ ├── container.overrides
│ │ ├── container.variables
│ │ ├── divider.overrides
│ │ ├── divider.variables
│ │ ├── flag.overrides
│ │ ├── flag.variables
│ │ ├── header.overrides
│ │ ├── header.variables
│ │ ├── icon.overrides
│ │ ├── icon.variables
│ │ ├── image.overrides
│ │ ├── image.variables
│ │ ├── input.overrides
│ │ ├── input.variables
│ │ ├── label.overrides
│ │ ├── label.variables
│ │ ├── list.overrides
│ │ ├── list.variables
│ │ ├── loader.overrides
│ │ ├── loader.variables
│ │ ├── rail.overrides
│ │ ├── rail.variables
│ │ ├── reveal.overrides
│ │ ├── reveal.variables
│ │ ├── segment.overrides
│ │ ├── segment.variables
│ │ ├── step.overrides
│ │ └── step.variables
│ ├── globals
│ │ ├── reset.overrides
│ │ ├── reset.variables
│ │ ├── site.overrides
│ │ └── site.variables
│ ├── modules
│ │ ├── accordion.overrides
│ │ ├── accordion.variables
│ │ ├── chatroom.overrides
│ │ ├── chatroom.variables
│ │ ├── checkbox.overrides
│ │ ├── checkbox.variables
│ │ ├── dimmer.overrides
│ │ ├── dimmer.variables
│ │ ├── dropdown.overrides
│ │ ├── dropdown.variables
│ │ ├── embed.overrides
│ │ ├── embed.variables
│ │ ├── modal.overrides
│ │ ├── modal.variables
│ │ ├── nag.overrides
│ │ ├── nag.variables
│ │ ├── popup.overrides
│ │ ├── popup.variables
│ │ ├── progress.overrides
│ │ ├── progress.variables
│ │ ├── rating.overrides
│ │ ├── rating.variables
│ │ ├── search.overrides
│ │ ├── search.variables
│ │ ├── shape.overrides
│ │ ├── shape.variables
│ │ ├── sidebar.overrides
│ │ ├── sidebar.variables
│ │ ├── sticky.overrides
│ │ ├── sticky.variables
│ │ ├── tab.overrides
│ │ ├── tab.variables
│ │ ├── transition.overrides
│ │ └── transition.variables
│ └── views
│ │ ├── ad.overrides
│ │ ├── ad.variables
│ │ ├── card.overrides
│ │ ├── card.variables
│ │ ├── comment.overrides
│ │ ├── comment.variables
│ │ ├── feed.overrides
│ │ ├── feed.variables
│ │ ├── item.overrides
│ │ ├── item.variables
│ │ ├── statistic.overrides
│ │ └── statistic.variables
│ ├── theme.config
│ ├── theme.less
│ └── themes
│ ├── amazon
│ ├── elements
│ │ ├── button.overrides
│ │ └── button.variables
│ └── globals
│ │ └── site.variables
│ ├── basic
│ ├── assets
│ │ └── fonts
│ │ │ ├── icons.eot
│ │ │ ├── icons.svg
│ │ │ ├── icons.ttf
│ │ │ └── icons.woff
│ ├── collections
│ │ ├── table.overrides
│ │ └── table.variables
│ ├── elements
│ │ ├── button.overrides
│ │ ├── button.variables
│ │ ├── icon.overrides
│ │ ├── icon.variables
│ │ ├── step.overrides
│ │ └── step.variables
│ ├── globals
│ │ ├── reset.overrides
│ │ └── reset.variables
│ ├── modules
│ │ ├── progress.overrides
│ │ └── progress.variables
│ └── views
│ │ ├── card.overrides
│ │ └── card.variables
│ ├── bookish
│ └── elements
│ │ ├── header.overrides
│ │ └── header.variables
│ ├── bootstrap3
│ └── elements
│ │ ├── button.overrides
│ │ └── button.variables
│ ├── chubby
│ ├── collections
│ │ ├── form.overrides
│ │ ├── form.variables
│ │ ├── menu.overrides
│ │ └── menu.variables
│ ├── elements
│ │ ├── button.overrides
│ │ ├── button.variables
│ │ ├── header.overrides
│ │ └── header.variables
│ ├── modules
│ │ ├── accordion.overrides
│ │ └── accordion.variables
│ └── views
│ │ ├── comment.overrides
│ │ └── comment.variables
│ ├── classic
│ ├── collections
│ │ ├── table.overrides
│ │ └── table.variables
│ ├── elements
│ │ ├── button.overrides
│ │ ├── button.variables
│ │ ├── header.overrides
│ │ └── header.variables
│ ├── modules
│ │ ├── progress.overrides
│ │ └── progress.variables
│ └── views
│ │ ├── card.overrides
│ │ └── card.variables
│ ├── colored
│ └── modules
│ │ ├── checkbox.overrides
│ │ └── checkbox.variables
│ ├── default
│ ├── assets
│ │ ├── fonts
│ │ │ ├── icons.eot
│ │ │ ├── icons.svg
│ │ │ ├── icons.ttf
│ │ │ ├── icons.woff
│ │ │ └── icons.woff2
│ │ └── images
│ │ │ └── flags.png
│ ├── collections
│ │ ├── breadcrumb.overrides
│ │ ├── breadcrumb.variables
│ │ ├── form.overrides
│ │ ├── form.variables
│ │ ├── grid.overrides
│ │ ├── grid.variables
│ │ ├── menu.overrides
│ │ ├── menu.variables
│ │ ├── message.overrides
│ │ ├── message.variables
│ │ ├── table.overrides
│ │ └── table.variables
│ ├── elements
│ │ ├── button.overrides
│ │ ├── button.variables
│ │ ├── container.overrides
│ │ ├── container.variables
│ │ ├── divider.overrides
│ │ ├── divider.variables
│ │ ├── flag.overrides
│ │ ├── flag.variables
│ │ ├── header.overrides
│ │ ├── header.variables
│ │ ├── icon.overrides
│ │ ├── icon.variables
│ │ ├── image.overrides
│ │ ├── image.variables
│ │ ├── input.overrides
│ │ ├── input.variables
│ │ ├── label.overrides
│ │ ├── label.variables
│ │ ├── list.overrides
│ │ ├── list.variables
│ │ ├── loader.overrides
│ │ ├── loader.variables
│ │ ├── rail.overrides
│ │ ├── rail.variables
│ │ ├── reveal.overrides
│ │ ├── reveal.variables
│ │ ├── segment.overrides
│ │ ├── segment.variables
│ │ ├── step.overrides
│ │ └── step.variables
│ ├── globals
│ │ ├── reset.overrides
│ │ ├── reset.variables
│ │ ├── site.overrides
│ │ └── site.variables
│ ├── modules
│ │ ├── accordion.overrides
│ │ ├── accordion.variables
│ │ ├── chatroom.overrides
│ │ ├── chatroom.variables
│ │ ├── checkbox.overrides
│ │ ├── checkbox.variables
│ │ ├── dimmer.overrides
│ │ ├── dimmer.variables
│ │ ├── dropdown.overrides
│ │ ├── dropdown.variables
│ │ ├── embed.overrides
│ │ ├── embed.variables
│ │ ├── modal.overrides
│ │ ├── modal.variables
│ │ ├── nag.overrides
│ │ ├── nag.variables
│ │ ├── popup.overrides
│ │ ├── popup.variables
│ │ ├── progress.overrides
│ │ ├── progress.variables
│ │ ├── rating.overrides
│ │ ├── rating.variables
│ │ ├── search.overrides
│ │ ├── search.variables
│ │ ├── shape.overrides
│ │ ├── shape.variables
│ │ ├── sidebar.overrides
│ │ ├── sidebar.variables
│ │ ├── sticky.overrides
│ │ ├── sticky.variables
│ │ ├── tab.overrides
│ │ ├── tab.variables
│ │ ├── transition.overrides
│ │ └── transition.variables
│ └── views
│ │ ├── ad.overrides
│ │ ├── ad.variables
│ │ ├── card.overrides
│ │ ├── card.variables
│ │ ├── comment.overrides
│ │ ├── comment.variables
│ │ ├── feed.overrides
│ │ ├── feed.variables
│ │ ├── item.overrides
│ │ ├── item.variables
│ │ ├── statistic.overrides
│ │ └── statistic.variables
│ ├── duo
│ └── elements
│ │ ├── loader.overrides
│ │ └── loader.variables
│ ├── fixed-width
│ ├── collections
│ │ ├── grid.overrides
│ │ └── grid.variables
│ └── modules
│ │ ├── modal.overrides
│ │ └── modal.variables
│ ├── flat
│ ├── collections
│ │ ├── form.overrides
│ │ └── form.variables
│ └── globals
│ │ ├── site.overrides
│ │ └── site.variables
│ ├── github
│ ├── assets
│ │ └── fonts
│ │ │ ├── octicons-local.ttf
│ │ │ ├── octicons.svg
│ │ │ ├── octicons.ttf
│ │ │ └── octicons.woff
│ ├── collections
│ │ ├── breadcrumb.variables
│ │ ├── form.overrides
│ │ ├── form.variables
│ │ ├── grid.variables
│ │ ├── menu.overrides
│ │ ├── menu.variables
│ │ ├── message.overrides
│ │ ├── message.variables
│ │ └── table.variables
│ ├── elements
│ │ ├── button.overrides
│ │ ├── button.variables
│ │ ├── header.variables
│ │ ├── icon.overrides
│ │ ├── icon.variables
│ │ ├── image.variables
│ │ ├── input.overrides
│ │ ├── input.variables
│ │ ├── label.overrides
│ │ ├── label.variables
│ │ ├── segment.overrides
│ │ ├── segment.variables
│ │ ├── step.overrides
│ │ └── step.variables
│ ├── globals
│ │ └── site.variables
│ └── modules
│ │ ├── dropdown.overrides
│ │ ├── dropdown.variables
│ │ └── popup.variables
│ ├── gmail
│ └── collections
│ │ ├── message.overrides
│ │ └── message.variables
│ ├── instagram
│ └── views
│ │ ├── card.overrides
│ │ └── card.variables
│ ├── material
│ ├── collections
│ │ ├── menu.overrides
│ │ └── menu.variables
│ ├── elements
│ │ ├── button.overrides
│ │ ├── button.variables
│ │ ├── header.overrides
│ │ └── header.variables
│ ├── globals
│ │ ├── site.overrides
│ │ └── site.variables
│ └── modules
│ │ ├── dropdown.overrides
│ │ ├── dropdown.variables
│ │ ├── modal.overrides
│ │ └── modal.variables
│ ├── pulsar
│ └── elements
│ │ ├── loader.overrides
│ │ └── loader.variables
│ ├── raised
│ └── elements
│ │ ├── button.overrides
│ │ └── button.variables
│ ├── resetcss
│ └── globals
│ │ ├── reset.overrides
│ │ └── reset.variables
│ ├── round
│ └── elements
│ │ ├── button.overrides
│ │ └── button.variables
│ ├── rtl
│ └── globals
│ │ ├── site.overrides
│ │ └── site.variables
│ ├── striped
│ └── modules
│ │ ├── progress.overrides
│ │ └── progress.variables
│ ├── timeline
│ └── views
│ │ ├── feed.overrides
│ │ └── feed.variables
│ └── twitter
│ └── elements
│ ├── button.overrides
│ └── button.variables
└── tests
├── annyang.min.js
├── autobahn.min.jgz
├── client
├── assets
│ ├── js
│ │ ├── annyang.js
│ │ ├── app.js
│ │ └── main.js
│ └── scss
│ │ ├── _settings.scss
│ │ └── app.scss
├── index.html
└── templates
│ └── home.html
├── jquery-2.2.0.min.js
├── test.html
├── test.js
├── test.py
├── voice.html
├── voice.js
├── zeus.html
└── zeus.js
/.gitattributes:
--------------------------------------------------------------------------------
1 | *.mp4 filter=lfs diff=lfs merge=lfs -text
2 | *.avi filter=lfs -crlf
3 | *.flac filter=lfs -crlf
4 | *.wav filter=lfs -crlf
5 | *.mp3 filter=lfs -crlf
6 | *.pdf filter=lfs diff=lfs merge=lfs -text
7 | *.7z filter=lfs diff=lfs merge=lfs -text
8 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea/
2 | *.pyc
3 | *.pyo
4 | *.pid
5 | *.dat
6 | *.sdf
7 | build/
8 |
9 | # Visual C++ cache files
10 | ipch/
11 | *.aps
12 | *.ncb
13 | *.opendb
14 | *.opensdf
15 | *.sdf
16 | *.cachefile
17 |
18 | # Build results
19 | [Dd]ebug/
20 | [Dd]ebugPublic/
21 | [Rr]elease/
22 | [Rr]eleases/
23 | x64/
24 | x86/
25 | build/
26 | bld/
27 | [Bb]in/
28 | [Oo]bj/
29 |
30 | # Custom pid
31 | *.pid
32 |
33 | # Large file
34 | voc.txt
35 |
36 | # Windows
37 | [Tt]humbs.db
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2015-2016 Eclipse Technologies
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/crossbar/.crossbar/key.priv:
--------------------------------------------------------------------------------
1 | Crossbar.io private key for node authentication - KEEP THIS SAFE!
2 |
3 | creator: bobbyluig@MSI
4 | created-at: 2016-06-05T01:32:39.821Z
5 | public-key-ed25519: c100a6788af6e8320df49ee31d9a089518df262758b56f47b35779c0bd4c8fed
6 | private-key-ed25519: 2b9310f8d86b7f6e8cc31935c535d874ac1edecc6692de4d4695b1d786a335b4
7 |
--------------------------------------------------------------------------------
/crossbar/.crossbar/key.pub:
--------------------------------------------------------------------------------
1 | Crossbar.io public key for node authentication
2 |
3 | creator: bobbyluig@MSI
4 | created-at: 2016-06-05T01:32:39.821Z
5 | public-key-ed25519: c100a6788af6e8320df49ee31d9a089518df262758b56f47b35779c0bd4c8fed
6 |
--------------------------------------------------------------------------------
/crossbar/.crossbar/server.cer:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIIDejCCAmKgAwIBAgIJAOYW2wRwixiTMA0GCSqGSIb3DQEBBQUAMGUxCzAJBgNV
3 | BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMQ8wDQYDVQQHEwZDYXJzb24xHTAb
4 | BgNVBAoTFEVjbGlwc2UgVGVjaG5vbG9naWVzMREwDwYDVQQDEwhDcm9zc2JhcjAe
5 | Fw0xNjA2MDMwNDI3NDhaFw0yNjA2MDQwNDI3NDhaMGUxCzAJBgNVBAYTAlVTMRMw
6 | EQYDVQQIEwpDYWxpZm9ybmlhMQ8wDQYDVQQHEwZDYXJzb24xHTAbBgNVBAoTFEVj
7 | bGlwc2UgVGVjaG5vbG9naWVzMREwDwYDVQQDEwhDcm9zc2JhcjCCASIwDQYJKoZI
8 | hvcNAQEBBQADggEPADCCAQoCggEBAKTgAyhOA+dOv2VJzRc2mOEhyZ++WWfOQJ0h
9 | 2jOpFPk1uXr25oJjzXGCK0q2Jge+iNFGUSqVK010l+9HgD5D+x2v8scB+unypNDV
10 | p9kHPF9oFobOeV1GmzjRnbdZ6MUTA5lEYSOjVQepu6VtPj8gbs4lZDdioSQEfENa
11 | WQFwH90hiZgGxXt1Kq/j/UR/AhwNBPfsEmpujDaf0LNkxPiyPKrssS4MAX+BDRjY
12 | ZX3YtyR2KlhCtSo1TQnxvAVVvvbIbUs3FwCp6tanilLJaESjULNsIw6odreyBcM4
13 | KBc2Q+66XpTu0jIdpO0hs5R2/mMpEuXaSZMfLZHrtu4WXumhS9UCAwEAAaMtMCsw
14 | CQYDVR0TBAIwADARBglghkgBhvhCAQEEBAMCBPAwCwYDVR0PBAQDAgUgMA0GCSqG
15 | SIb3DQEBBQUAA4IBAQAnJFMgeFZZ6LyvmsIi1zBxkcQFvXgrtJ1zTK0QKDcpt+hO
16 | 8bdue/OJZuZTcMN96B0+bcCLq32qtH+KdCCy303LT05v2hyquNiH+N8oRBXLhQ4S
17 | 2WXa+ljGF3dBt8dVTF3pgnSmd+mItmu5o4GaEaCY03Nnlgiq2J8wCkP0lB215NeM
18 | yNdhFdzY7DTxWLxpmXEUUXVnS7UmFwIV0J7Dtyi6mO2hf00E6K5hJlQ3nnwi5KnS
19 | XfIvzffEhgP50sd7UkFF5pcbtvfyc9kI4rbACrzos4qQmjE4BbzA83EC6cpVRO/g
20 | QTv+4lxnarL7Oxg+eJL4uFLEkF0m+K4F7gu621po
21 | -----END CERTIFICATE-----
22 |
--------------------------------------------------------------------------------
/crossbar/.crossbar/server.csr:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE REQUEST-----
2 | MIICqjCCAZICAQAwZTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWEx
3 | DzANBgNVBAcTBkNhcnNvbjEdMBsGA1UEChMURWNsaXBzZSBUZWNobm9sb2dpZXMx
4 | ETAPBgNVBAMTCENyb3NzYmFyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
5 | AQEApOADKE4D506/ZUnNFzaY4SHJn75ZZ85AnSHaM6kU+TW5evbmgmPNcYIrSrYm
6 | B76I0UZRKpUrTXSX70eAPkP7Ha/yxwH66fKk0NWn2Qc8X2gWhs55XUabONGdt1no
7 | xRMDmURhI6NVB6m7pW0+PyBuziVkN2KhJAR8Q1pZAXAf3SGJmAbFe3Uqr+P9RH8C
8 | HA0E9+wSam6MNp/Qs2TE+LI8quyxLgwBf4ENGNhlfdi3JHYqWEK1KjVNCfG8BVW+
9 | 9shtSzcXAKnq1qeKUsloRKNQs2wjDqh2t7IFwzgoFzZD7rpelO7SMh2k7SGzlHb+
10 | YykS5dpJkx8tkeu27hZe6aFL1QIDAQABoAAwDQYJKoZIhvcNAQEFBQADggEBADvc
11 | D8ky8N8d08p0kV4OJxEskx1benh5pD0TTT6CvabQlnGpdeyXdwS8p1+1RuEiRbhK
12 | hRCDn3sM8H/sgVJ+xOeVt34hp6LfaZ0v/YtYQBRP6jHAPPSQcgNjWr5Zxt5SMCFn
13 | PKwW1S3Jjv+BYACBTbSyt1N4p13cIu/cpNe/Abr//0diKu4avcKn3Z2crRFlNtTS
14 | wM8sqFZlMV4Z5IKszkUo7BxzVSRh0aONj8LbYB23Vl9YD297KuqskFTTaJKIVuCr
15 | piDG0E/7uDZ9shUZpe3AhtfFm1kkk81NQEoy4Frt86LbbSWX2M+q4Bj8QIzh8a3F
16 | FQcm2hi70fKK071sgfk=
17 | -----END CERTIFICATE REQUEST-----
18 |
--------------------------------------------------------------------------------
/crossbar/.crossbar/server.p12:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/crossbar/.crossbar/server.p12
--------------------------------------------------------------------------------
/deploy/backup.sh:
--------------------------------------------------------------------------------
1 | ##############################
2 | # Build Numba and dependencies.
3 | ##############################
4 |
5 | # Get oprofile. Needed ONLY by llvmlite 0.9.0. No longer needed in Git repository.
6 | cd ~
7 | apt-get -y install libedit-dev libpopt-dev libiberty-dev binutils-dev
8 | wget http://prdownloads.sourceforge.net/oprofile/oprofile-1.1.0.tar.gz
9 | tar zxvf oprofile-1.1.0.tar.gz
10 | cd oprofile-1.1.0
11 | ./configure
12 | make -j4 && make install
13 | cd ~
14 | rm -rf oprofile-1.1.0 oprofile-1.1.0.tar.gz
15 |
16 | # Build LLVM and install.
17 | cd ~
18 | wget http://llvm.org/releases/3.7.1/llvm-3.7.1.src.tar.xz
19 | tar xf llvm-3.7.1.src.tar.xz
20 | cd llvm-3.7.1.src
21 | mkdir build
22 | cd build
23 | cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="AArch64" -DLLVM_USE_OPROFILE=ON -DPYTHON_EXECUTABLE=/usr/local/bin/python3.5 ..
24 | make -j4 && make install
25 | ldconfig
26 | cd ~
27 | rm -rf llvm-3.7.1.src
28 |
29 | # Install numba.
30 | pip3 install numba
31 |
32 | ######################
33 | # Arduino development.
34 | ######################
35 |
36 | apt-get -y install arduino-core picocom python python-pip python-dev
37 | pip install ino
--------------------------------------------------------------------------------
/deploy/run.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | export PYTHONPATH=$PYTHONPATH:/root/Eclipse/src
4 | date -s "24 MAY 2016 00:00:00"
--------------------------------------------------------------------------------
/deploy/supervisor/pack1.conf:
--------------------------------------------------------------------------------
1 | [program:database]
2 | command = python3 /root/Eclipse/src/cerebral/database.py
3 | environment = PYTHONPATH="/root/Eclipse/src"
4 | autostart = False
5 | autorestart = True
6 |
7 | [program:worker1]
8 | command = python3 /root/Eclipse/src/cerebral/pack1/worker1.py
9 | environment = PYTHONPATH="/root/Eclipse/src"
10 | autostart = False
11 | autorestart = True
12 |
13 | [program:worker2]
14 | command = python3 /root/Eclipse/src/cerebral/pack1/worker2.py
15 | environment = PYTHONPATH="/root/Eclipse/src"
16 | autostart = False
17 | autorestart = True
18 |
19 | [program:worker3]
20 | command = python3 /root/Eclipse/src/cerebral/pack1/worker3.py
21 | environment = PYTHONPATH="/root/Eclipse/src"
22 | autostart = False
23 | autorestart = True
24 |
25 | [program:main]
26 | command = python3 /root/Eclipse/src/cerebral/pack1/main.py
27 | environment = PYTHONPATH="/root/Eclipse/src"
28 | autostart = False
29 | autorestart = True
30 |
31 | [program:demo]
32 | command = python3 /root/Eclipse/src/cerebral/pack1/demo.py
33 | environment = PYTHONPATH="/root/Eclipse/src"
34 | autostart = True
35 | autorestart = False
--------------------------------------------------------------------------------
/deploy/supervisor/pack2.conf:
--------------------------------------------------------------------------------
1 | [program:database]
2 | command = python3 /root/Eclipse/src/cerebral/database.py
3 | environment = PYTHONPATH="/root/Eclipse/src"
4 | autostart = False
5 | autorestart = True
6 |
7 | [program:worker1]
8 | command = python3 /root/Eclipse/src/cerebral/pack2/worker1.py
9 | environment = PYTHONPATH="/root/Eclipse/src"
10 | autostart = False
11 | autorestart = True
12 |
13 | [program:worker2]
14 | command = python3 /root/Eclipse/src/cerebral/pack2/worker2.py
15 | environment = PYTHONPATH="/root/Eclipse/src"
16 | autostart = False
17 | autorestart = True
18 |
19 | [program:worker3]
20 | command = python3 /root/Eclipse/src/cerebral/pack2/worker3.py
21 | environment = PYTHONPATH="/root/Eclipse/src"
22 | autostart = False
23 | autorestart = True
24 |
25 | [program:main]
26 | command = python3 /root/Eclipse/src/cerebral/pack2/main.py
27 | environment = PYTHONPATH="/root/Eclipse/src"
28 | autostart = False
29 | autorestart = True
30 |
31 | [program:demo]
32 | command = python3 /root/Eclipse/src/cerebral/pack2/demo.py
33 | environment = PYTHONPATH="/root/Eclipse/src"
34 | autostart = True
35 | autorestart = False
--------------------------------------------------------------------------------
/deploy/test_numba.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | apt-get -y update && apt-get -y upgrade
4 | apt-get -y install git
5 |
6 | cd ~
7 | apt-get -y install build-essential libssl-dev
8 | wget https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz
9 | tar zxvf Python-3.5.1.tgz
10 | cd Python-3.5.1
11 | ./configure --enable-shared
12 | make -j4 && make install
13 | ldconfig
14 | cd ~
15 | rm -rf Python-3.5.1
16 | rm -f Python-3.5.1.tgz
17 |
18 | cd ~
19 | apt-get -y install libedit-dev libpopt-dev libiberty-dev binutils-dev # llvm-3.7-dev
20 | wget http://prdownloads.sourceforge.net/oprofile/oprofile-1.1.0.tar.gz
21 | tar zxvf oprofile-1.1.0.tar.gz
22 | cd oprofile-1.1.0
23 | ./configure
24 | make -j4 && make install
25 | cd ~
26 | rm -rf oprofile-1.1.0 oprofile-1.1.0.tar.gz
27 |
28 | export NPY_NUM_BUILD_JOBS=4
29 | pip3 install numpy
30 |
31 | apt-get -y install cmake pkg-config
32 |
33 | cd ~
34 | wget http://llvm.org/releases/3.7.1/llvm-3.7.1.src.tar.xz
35 | tar xf llvm-3.7.1.src.tar.xz
36 | cd llvm-3.7.1.src
37 | mkdir build
38 | cd build
39 | cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="AArch64" -DLLVM_USE_OPROFILE=ON -DPYTHON_EXECUTABLE=/usr/local/bin/python3.5 ..
40 | make -j4 && make install
41 | ldconfig
42 | cd ~
43 | rm -rf llvm-3.7.1.src
44 |
45 | pip3 install numba
--------------------------------------------------------------------------------
/docs/README.md:
--------------------------------------------------------------------------------
1 | # Documentation
2 |
3 | Extensive documentation exists for this project. The redesigned final CAD package is available in the `cad` folder. Design review documents are located in the `cdr` folder. Mission specifications are located in the `mission` folder. Repair, usage, and tutorial documents are located in the `src` folder. Pre-built HTML files can be used immediately after cloning with Git LFS support. Building the documentation can be done using `pandoc` with the code below.
4 |
5 | ```bash
6 | pandoc repair.md -o repair.html --template template/template.html --css template/template.css --mathjax --toc --toc-depth 3
7 | pandoc usage.md -o usage.html --template template/template.html --css template/template.css --mathjax --toc --toc-depth 3
8 | pandoc tutorial.md -o tutorial.html --template template/template.html --css template/template.css --mathjax --toc --toc-depth 3 --columns 1000
9 | ```
10 |
--------------------------------------------------------------------------------
/docs/cad/PackBOT.7z:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:62c13d7cd8a45214316f6a913b350999b0691005b429c6c4a589be8e41504ab6
3 | size 32114546
4 |
--------------------------------------------------------------------------------
/docs/cdr/POC.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/docs/cdr/POC.pdf
--------------------------------------------------------------------------------
/docs/cdr/SPS.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/docs/cdr/SPS.pdf
--------------------------------------------------------------------------------
/docs/mission/Design Brief.pdf:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:17d21c252a0bf5995c511383f0b9a9a5a2752d042f91aba056f941f41c06e4e9
3 | size 450775
4 |
--------------------------------------------------------------------------------
/docs/src/assets/com.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/docs/src/assets/com.png
--------------------------------------------------------------------------------
/docs/src/assets/com.xml:
--------------------------------------------------------------------------------
1 | 3ZbPb9owFMf/mhxbkR9QOBZWusMmVeLQ42QSk1h1/CLHFNhf3+f4mTjAYNI6TRoHhL/2e7Y/74eJ0kW9f9asqb5DwWWUjIp9lH6JkiR7mOK3FQ5OSCZjJ5RaFE6Ke2ElfnISR6RuRcHbwUIDII1ohmIOSvHcDDSmNeyGyzYgh7s2rPQ79sIqZ/JcfRWFqZw6HdPxrP6Vi7LyO8cjmlmz/K3UsFW0X5Skm+7jpmvmfdH6tmIF7AIpfUKsGgA921/1fsGlReuxObvlL2aP59Zc0dmuG+CUNXhncktXp3OZg2exq4Thq4bldrzDcEfpvDK1xFGMPzUYZgQoHN7NRig0kgl1pznuMN8IKRcgQeOsAoUe5q3R8Ma9iHyWyxQ/OFOwtrJWnVs6F9eGU1JduFsn0cWeOdTc6AMu8VkYT5wJJeGMhrs+onGWOq0KojmjXGWUROXRcw8SfxDLy1yz21zt3QSm3De25vIFWkEU12AM1IjAL3iUorQTBk7QO5Q+QTulYo11X+9LW5f3a9aK/B60qaAExeQPowVTpT3CpdigUSGQ7om8AWWoRsc4ZHQeyTdI7FMilVE5UKQeKCpBpGZENAxUnBHVP4kUdaprkUIDbDyWxI1aGOb2IOHDKIXkuwKYjrB//Dv8Y9+9CH+czM74U02E+D+hTOLf6D//O/1sQino6Y/Jxd+nT2V2lb4qHu2DiqNcshbbyRD6CZ7gNbBMnTtenL22N+GEl6fsHNyeNM0l7vc+dH+JCe3wAgI3DjKfTDx7fIgGLlrY6pyTVfiOnjjKfMs6BvGkNRmmS27OHHUhOl77UtRw2P8dcMv7v1zp0wc=
--------------------------------------------------------------------------------
/docs/src/assets/head.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/docs/src/assets/head.png
--------------------------------------------------------------------------------
/docs/src/assets/head.xml:
--------------------------------------------------------------------------------
1 | vVZLb9s8EPw1PlbQw4rtY5JG6aEFAuTQr6eCkWiJCKU1KPqR/voszaUkyo7jvD4fDO2Q3F3OjFeeJNf17laxVfULCi4ncVjsJsn3SRwv5gv8NsCTBdJ0aoFSicJCUQ/ci3+cwJDQtSh4623UAFKLlQ/m0DQ81x7GlIKtv20J0q+6YqWr2AP3OZOH6G9R6Mqi85TaM/gPLsrKVY5CWnlg+WOpYN1QvUmcLPcfu1wzl4v2txUrYDuAkhukVQFgZvNU7665NNQ62uy57IXVrm/FG+rt9AFcMgc2TK7p6tSXfnJcaCVYU5roalsJze9XLDdLW1QesUrXEqMIH5dCymuQoDBuoDEnmBRlg6GyZF0p0EwLMNAixJjKc6U5eefIFfYQ9X/LoeZaPeEWOpCkc3uEvJbYaNvrFkXkvmqgWTyjY4y8UnaZe77wgSg7Th/VOkUfKrwyj/WuND+VoEVC2kDzvAo2aHL4m7OaK/Yyk2ihcP9BvNUKHvmIY8OeQO/+ZA9c3kEriOAH0BrqwYZLEkODEe6ENN8+S5tpSAyRNrH7nQzUcSR64tC2j2hDmp/ShjfFpZkWPZetZkqPsIEuBWsrbvKbwBcDZcqyTibMkqGGiJsY63gR3uS/YfDHBEHacc6Lg/E0YhznIVMld3QdF2FAsptcQ5IdprhE4Td+xWPMU4U7ENhLr3GUehpHCyLapWhhrXJOp4az6JVE4zz2xgd59j7obn2WNS6+wBofd8PeAL0fTLATerCEkVkx1c73iWXfm/ZnWMdJEo8kSYMkCpPpdB7P0vlFTCP0TKO9wVOjunH4Xk/FaRAls4Xr2n9VvHCdzzccJT7TcLlkbSvyV/wVhrMsw5Y6l5hdziMDMx2ZNMju11vof5o+7o0yfsO82SmuITfGxq59txsw7P/Q2e39n+bk5hk=
--------------------------------------------------------------------------------
/docs/src/assets/leg1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/docs/src/assets/leg1.png
--------------------------------------------------------------------------------
/docs/src/assets/leg2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/docs/src/assets/leg2.png
--------------------------------------------------------------------------------
/docs/src/assets/robot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/docs/src/assets/robot.png
--------------------------------------------------------------------------------
/docs/src/assets/servo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/docs/src/assets/servo.png
--------------------------------------------------------------------------------
/docs/src/assets/servo.xml:
--------------------------------------------------------------------------------
1 | 1VdRb+o8DP01PHYqLWzwCGNsD/dKk/bpfs+hddtoaVOlYcB+/ezWgXYw2ATb1eWBJieO4xzbcdILb/P1vRFl9lvHoHqBH6974awXBKP+GP8J2DTAYMhAamTcQP0d8CRfgUGf0aWMoeoIWq2VlWUXjHRRQGQ7mDBGr7piiVbdVUuRuhV3wFMk1D76v4xtxtsasnmEP4BMM7dy3+eRhYieU6OXBa/XC8Kk/jXDuXC6WL7KRKxXLSi8Q1qN1qiZWvn6FhRR62hr5s0/GN3abaBg245PwCGa8CLUkrfOdtmN42KVSQtPpYiov0J398JpZnOFvT42E6nUrVbaYL/QBQpNjbbCSl0gMvaxz2uAscABcsDOGmIj70HnYM0GRXhCcDNspnBADbm72nkHl6qhrOWYa8YEx0O6VbzjBBtMy2GKwu+g6AKUhC4aHSXcbVHioqxNiUuxcyhh8o9RAkU8oUTEXqREVcmoy0kzAeK9PDy5/db+3Jbb+3OYAYVB+NJVf2jTvMKjlrjwjt1Rl92+27RTUemliYBntTPshKLROz1WmBTsnp7aBdtdf8orN+d7pZW5A8rcRMnyD3Zc+4HbbDQYifaBodCXRcqDzMwHgzjV8oF/fVYcnOD3k2HyFyJi4NLyI0WXC4nR+SFRKiELzwBqROcZ/QzuKMPaNp/7+MORWFQZifwbue0fLiZfTu3xcT2X8yPfnlp+XO85EisJ0tTJZqjkq1jUAuSkkiypbRtOe8MZImJpNcqQAE0QSqaU+woSUkXlSeKlaMKw1VTYqiaf/6POzBtcqJiNrrtZzIF6opg57Jxi5gpii9xm/jeRaxrzf5TdMdPpThyfLzU/QS9be+wMwltwSU2Z1/fyNs2HWXLoL7EA9Ygsc9FaaGt1jgKKBqbby3jryOLreDitF5tUZfN+IBcK10nkuj7v2J5ZZi09PCa06WAexYV/JfHpkcgiBnMV4YrBPBZW4IfwCr+JAfByWUUeIV4F1kMi5sM+MQcb8PrB6Kqksnjoevg+Vi4QA4MB3w/ck+xAhrFEJwQY+0IIYHf3gGkOu90jMbx7Aw==
--------------------------------------------------------------------------------
/docs/src/assets/table.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/docs/src/assets/table.jpg
--------------------------------------------------------------------------------
/docs/src/assets/vector.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/docs/src/assets/vector.png
--------------------------------------------------------------------------------
/docs/src/assets/vector1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/docs/src/assets/vector1.png
--------------------------------------------------------------------------------
/docs/src/assets/vector1.xml:
--------------------------------------------------------------------------------
1 | rZTPjuIwDIefpseV2maK4AoLzGVPHPacbdImIo2rNGxhnh6ndf8t7KCRpgcUf3Zs92eXiO2q69HxWv0CIU2UxuIasZ9Rmq6TDf4GcOvBW5b1oHRa9CiZwEl/SIIx0YsWslkEegDjdb2EOVgrc79g3Dlol2EFmGXVmpdDxQmccm4e6W8tvKLXyqi9wN+lLtVQOYnJ84fn59LBxVK9KGVF9/Tuig+5KL5RXEA7Q2yPsjoAzBxO1XUnTZB2kK2/d/iPd+zbSUu9fX4BXeHCX24u9OrUl78NWrRKe3mqeR7sFscdsa3ylUErwaMDz70Gi+aPTYyAMkrnJa3Dk646RC0dJVTSuxuG0AXGaF1ofZKY7HYaBtbqkJrNYUWM0/jLMfMkAR5IheeKsNeK4AVcRDS2L7QRvFEy5A1G4x2c5Q4MuC4NOxxifEbPsGghttDGDJEWbChVOi406vcPLsB6+n4yNLnRZRiFkQVq8i2zSFeLWawpw2wUSbx+nMUIvzAMNKfV73yzvxe2vwM=
--------------------------------------------------------------------------------
/docs/src/assets/vector2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/docs/src/assets/vector2.png
--------------------------------------------------------------------------------
/docs/src/assets/vector2.xml:
--------------------------------------------------------------------------------
1 | 1VbPc9o8EP1rfEzHP0ogx0JDevlmMsOh7VG1FlsToWVkEaB/fVb2CsumSeiUTufjwHifpKfVe9q1k2KxOTxYsa3/Qwk6yVN5SIrPSZ7n0xn9e+DYAdlk0gGVVZKhHlipn8BgyuhOSWgGEx2idmo7BEs0Bko3wIS1uB9OW6Me7roVVdixB1al0OfoVyVd3aGzCafn8S+gqjrsnKU88kOUT5XFneH9krxYt79ueCMCF89vaiFxH0HFPclqEYnZP20OC9Be2iBbt275yugpbwuGc3tnwbRb8Sz0js/OibljEAOM/OQ1pajUomlUmRTz2m00ARk9rtE4tnBC4VYLZW4qC2A6KpBnYvfptRDn9gC4AWePNGXfqx5EryPBA2ZBC6eeh/SCza9OdKcdHlHRxnnK9/RjuG98Te84DAwN7mwJvChWccRTzIY80xGPE7YCd8ZDD9Ghe6j16Nd+sTtv2bWvlYPVVpQ+3lN5Dt2y6EgyNBTe0HmLOTOCdcDHudymcP6CyzuUe8pxZGPQNrbxdqRT7NhApDcUyW4vuMFaU+egYP6OOFI0NXhiHzTO4hMsUKNtaYrlMqXfaSR0hrYGlNZhpkHjt6qskIoEHMGjahFaVd4LDWsS5Spm5KwImzFjhsiLLOX+HJtxAv/IDea4sJ+wJq83EzqzPX6jIP0wpZcKA99bIKWTMfAIVlGu4HX2BsU9yE+RS/KHxy5tSvTKacs2vmb/qlGNG0wWCu53O9VZxxulcr1Old1d+ybEJv6PXjJX8+6vvWUo7L84uun9V11x/wI=
--------------------------------------------------------------------------------
/notebook/.ipynb_checkpoints/Untitled-checkpoint.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | ">Test Notebook<"
8 | ]
9 | },
10 | {
11 | "cell_type": "code",
12 | "execution_count": null,
13 | "metadata": {
14 | "collapsed": true
15 | },
16 | "outputs": [],
17 | "source": []
18 | }
19 | ],
20 | "metadata": {
21 | "kernelspec": {
22 | "display_name": "Python 3",
23 | "language": "python",
24 | "name": "python3"
25 | },
26 | "language_info": {
27 | "codemirror_mode": {
28 | "name": "ipython",
29 | "version": 3
30 | },
31 | "file_extension": ".py",
32 | "mimetype": "text/x-python",
33 | "name": "python",
34 | "nbconvert_exporter": "python",
35 | "pygments_lexer": "ipython3",
36 | "version": "3.5.0"
37 | }
38 | },
39 | "nbformat": 4,
40 | "nbformat_minor": 0
41 | }
42 |
--------------------------------------------------------------------------------
/notebook/Untitled.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "# Test Notebook"
8 | ]
9 | },
10 | {
11 | "cell_type": "code",
12 | "execution_count": 1,
13 | "metadata": {
14 | "collapsed": false
15 | },
16 | "outputs": [
17 | {
18 | "data": {
19 | "text/plain": [
20 | "20"
21 | ]
22 | },
23 | "execution_count": 1,
24 | "metadata": {},
25 | "output_type": "execute_result"
26 | }
27 | ],
28 | "source": [
29 | "import numpy as np\n",
30 | "a = np.array([1, 2, 3])\n",
31 | "b = np.array([2, 3, 4])\n",
32 | "np.dot(a, b)"
33 | ]
34 | },
35 | {
36 | "cell_type": "code",
37 | "execution_count": null,
38 | "metadata": {
39 | "collapsed": true
40 | },
41 | "outputs": [],
42 | "source": []
43 | }
44 | ],
45 | "metadata": {
46 | "kernelspec": {
47 | "display_name": "Python 3",
48 | "language": "python",
49 | "name": "python3"
50 | },
51 | "language_info": {
52 | "codemirror_mode": {
53 | "name": "ipython",
54 | "version": 3
55 | },
56 | "file_extension": ".py",
57 | "mimetype": "text/x-python",
58 | "name": "python",
59 | "nbconvert_exporter": "python",
60 | "pygments_lexer": "ipython3",
61 | "version": "3.5.0"
62 | }
63 | },
64 | "nbformat": 4,
65 | "nbformat_minor": 0
66 | }
67 |
--------------------------------------------------------------------------------
/presentation/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/presentation/__init__.py
--------------------------------------------------------------------------------
/presentation/alpha.mp4:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:5dffd21ad1673b2b42d0e65219269eded5aaa26d77652960473f177dd3784268
3 | size 209601
4 |
--------------------------------------------------------------------------------
/presentation/arc.py:
--------------------------------------------------------------------------------
1 | import math
2 |
3 | def find_root(a, c):
4 | return (a*c)**(1/2) / a
5 |
6 |
7 | def length(a, c):
8 | return (2 * (a*c)**(1/2) * (4*a*c+1)**(1/2) + math.asinh(2 * (a*c)**(1/2))) / (2*a)
9 |
10 |
11 | def f1(a, c, l):
12 | '''Returns f(a).'''
13 | return (2 * (a*c)**(1/2) * (4*a*c+1)**(1/2) + math.asinh(2 * (a*c)**(1/2))) - 2*a*l
14 |
15 |
16 | def f2(a, c, l):
17 | '''Returns f'(a).'''
18 | return 2 * ((c * (1/a+4*c))**(1/2) - l)
19 |
20 |
21 | def find_a(c, l):
22 | '''Approximates a using Newton's method.'''
23 |
24 | # The initial guess for a.
25 | a = 1.0
26 |
27 | # The error term.
28 | error = 0
29 |
30 | # Run 30 iterations of Newton's method
31 | for i in range(30):
32 | a1 = a - f1(a, c, l) / f2(a, c, l)
33 | error = abs(a1 - a)
34 | a = a1
35 |
36 | # Convergence completed early.
37 | if error < 3e-10:
38 | return a
39 |
40 | return a
--------------------------------------------------------------------------------
/presentation/dog.mp4:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:c440ba386f4dbc060049b91b3c7daf3643ff93a81cd8f7a69acbf2c78928a95b
3 | size 3909963
4 |
--------------------------------------------------------------------------------
/presentation/life.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/presentation/life.gif
--------------------------------------------------------------------------------
/redboard/cerebral/cerebral.ino:
--------------------------------------------------------------------------------
1 | #include "uv.h"
2 |
3 | int cmd; // Command byte.
4 | UV uv; // UV object.
5 |
6 | // Enumeration for all possible commands.
7 | enum Command {
8 | UV_READ
9 | };
10 |
11 | // Execute the command and write the serial output.
12 | void executeCommand(int cmd)
13 | {
14 | switch (cmd) {
15 | case UV_READ:
16 | uv.update();
17 | uv.writeIntensity();
18 | break;
19 | }
20 | }
21 |
22 | void setup()
23 | {
24 | Serial.begin(9600);
25 |
26 | pinMode(UVOUT, INPUT);
27 | pinMode(REF_3V3, INPUT);
28 | }
29 |
30 | void loop()
31 | {
32 | if (Serial.available() > 0) {
33 | cmd = Serial.read();
34 | executeCommand(cmd);
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/redboard/kine/kine.ino:
--------------------------------------------------------------------------------
1 | /* Sweep
2 | by BARRAGAN
3 | This example code is in the public domain.
4 |
5 | modified 8 Nov 2013
6 | by Scott Fitzgerald
7 | http://www.arduino.cc/en/Tutorial/Sweep
8 | */
9 |
10 | #include
11 |
12 | Servo s1; // create servo object to control a servo
13 | Servo s2;
14 | Servo s3;
15 |
16 | // twelve servo objects can be created on most boards
17 | float a0 = 180 - 40.0;
18 | float b0 = 18.0;
19 | float c0 = 140.0;
20 |
21 | float t1 = 0;
22 | float t2 = 0;
23 | float t3 = 0;
24 |
25 | void setup() {
26 | s1.attach(2);
27 | s2.attach(3);
28 | s3.attach(4);
29 |
30 | Serial.begin(9600);
31 | }
32 |
33 | void loop() {
34 | if (Serial.available() > 12) {
35 | byte buf1[4];
36 | byte buf2[4];
37 | byte buf3[4];
38 | Serial.readBytes(buf1, 4);
39 | Serial.readBytes(buf2, 4);
40 | Serial.readBytes(buf3, 4);
41 |
42 | t1 = *(float*) &buf1;
43 | t2 = *(float*) &buf2;
44 | t3 = *(float*) &buf3;
45 | }
46 |
47 | s1.write(a0 + t1 * -1);
48 | s2.write(b0 + t2);
49 | s3.write(c0 + t3 * -1);
50 | }
51 |
52 |
--------------------------------------------------------------------------------
/src/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/__init__.py
--------------------------------------------------------------------------------
/src/agility/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/agility/__init__.py
--------------------------------------------------------------------------------
/src/agility/forth/in.4th:
--------------------------------------------------------------------------------
1 | # Moves servo in a sine wave between 1 and 2 ms.
2 | begin
3 | 60 64 68 71 74 77 79 80 80 79 78 76 73 70 66 62
4 | 58 54 50 47 44 42 41 40 40 41 43 46 49 52 56
5 | all_frames
6 | repeat
7 |
8 | sub all_frames
9 | begin
10 | depth
11 | while
12 | 100 times
13 | dup
14 | 0 servo
15 | 5 servo
16 | 100 delay
17 | repeat
18 | return
--------------------------------------------------------------------------------
/src/agility/forth/out.txt:
--------------------------------------------------------------------------------
1 | 0000: -- # Moves servo in a sine wave between 1 and 2 ms.
2 | 0000: -- begin
3 | 0000: 041F3C4044474A4D4F50504F4E4C4946423E3A36322F2C2A292828292B2E313438 -- 60 64 68 71 74 77 79 80 80 79 78 76 73 70 66 62
4 | 0021: -- 58 54 50 47 44 42 41 40 40 41 43 46 49 52 56
5 | 0021: 80 -- all_frames
6 | 0022: 060000 -- repeat
7 | 0025: --
8 | 0025: -- sub all_frames
9 | 0025: -- begin
10 | 0025: 0A -- depth
11 | 0026: 073900 -- while
12 | 0029: 02641E -- 100 times
13 | 002C: 0C -- dup
14 | 002D: 02002A -- 0 servo
15 | 0030: 02052A -- 5 servo
16 | 0033: 026408 -- 100 delay
17 | 0036: 062500 -- repeat
18 | 0039: 05 -- return
19 |
20 | Subroutines:
21 | Hex Decimal Address Name
22 | 00 000 0025 ALL_FRAMES
23 |
--------------------------------------------------------------------------------
/src/agility/imu/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/agility/imu/__init__.py
--------------------------------------------------------------------------------
/src/agility/pololu/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/agility/pololu/__init__.py
--------------------------------------------------------------------------------
/src/agility/pololu/settings.dat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/agility/pololu/settings.dat
--------------------------------------------------------------------------------
/src/agility/tests/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/agility/tests/__init__.py
--------------------------------------------------------------------------------
/src/agility/tests/com.py:
--------------------------------------------------------------------------------
1 | from agility.gait import Dynamic
2 | from cerebral.pack1.hippocampus import Android
3 | from agility.main import Agility
4 | import time, math
5 |
6 |
7 | # Robot by reference.
8 | robot = Android.robot
9 | agility = Agility(robot)
10 |
11 | # Gait.
12 | crawl = Dynamic(robot)
13 | gait = crawl.generate(2, 0)
14 |
15 | # Main
16 | # agility.configure()
17 | agility.zero()
18 | # frames, dt = agility.prepare_smoothly(gait)
19 | # agility.execute_forever(frames, dt)
20 |
--------------------------------------------------------------------------------
/src/agility/tests/com_test.py:
--------------------------------------------------------------------------------
1 | from cerebral.pack1.hippocampus import Android
2 | import numpy as np
3 |
4 | robot = Android.robot
5 | body = robot.body
6 |
7 | off = [
8 | np.array([True, False, False, False]),
9 | np.array([False, True, False, False]),
10 | np.array([False, False, True, False]),
11 | np.array([False, False, False, True])
12 | ]
13 |
14 | next_frame = [
15 | np.array([(0, 0, -11), (0, 0, -13), (0, 0, -13), (0, 0, -13)]),
16 | np.array([(0, 0, -13), (0, 0, -11), (0, 0, -13), (0, 0, -13)]),
17 | np.array([(0, 0, -13), (0, 0, -13), (0, 0, -11), (0, 0, -13)]),
18 | np.array([(0, 0, -13), (0, 0, -13), (0, 0, -13), (0, 0, -11)])
19 | ]
20 |
21 | for i in range(4):
22 | body.adjust_crawl(off[i], next_frame[i])
--------------------------------------------------------------------------------
/src/agility/tests/full.py:
--------------------------------------------------------------------------------
1 | from agility.maestro import Maestro, Servo
2 | from agility.main import Agility, Robot, Leg, Servo
3 |
4 | # Define servos.
5 | servo1 = Servo(0, -90, 180, 500, 2500, 150, bias=0, direction=-1)
6 | servo2 = Servo(1, -45, 225, 500, 2500, 150, bias=180, direction=1)
7 | servo3 = Servo(3, -135, 135, 500, 2500, 150, bias=-2, direction=-1)
8 | servo4 = Servo(6, -180, 90, 500, 2500, 150, bias=0, direction=-1)
9 | servo5 = Servo(8, -45, 225, 500, 2500, 150, bias=180, direction=1)
10 | servo6 = Servo(10, -135, 135, 500, 2500, 150, bias=-2, direction=-1)
11 |
12 | # Fake servos
13 | servo7 = Servo(11, -135, 135, 500, 2500, 150, bias=-2, direction=-1)
14 | servo8 = Servo(12, -135, 135, 500, 2500, 150, bias=-2, direction=-1)
15 | servo9 = Servo(13, -135, 135, 500, 2500, 150, bias=-2, direction=-1)
16 | servo10 = Servo(14, -135, 135, 500, 2500, 150, bias=-2, direction=-1)
17 | servo11 = Servo(15, -135, 135, 500, 2500, 150, bias=-2, direction=-1)
18 | servo12 = Servo(16, -135, 135, 500, 2500, 150, bias=-2, direction=-1)
19 |
20 | # Define legs.
21 | leg2 = Leg(servo1, servo2, servo3, (7.5, 7.5))
22 | leg4 = Leg(servo4, servo5, servo6, (7.5, 7.5))
23 |
24 | leg1 = Leg(servo7, servo8, servo9, (7.5, 7.5))
25 | leg3 = Leg(servo10, servo11, servo12, (7.5, 7.5))
26 |
27 | # Define robot.
28 | robot = Robot(leg1, leg2, leg3, leg4)
29 |
30 | # Create agility.
31 | agility = Agility(robot)
32 |
33 | # Do stuff.
34 |
--------------------------------------------------------------------------------
/src/agility/tests/game.py:
--------------------------------------------------------------------------------
1 | from tkinter import *
2 | from threading import Thread, Lock
3 | import math
4 | from agility.gait import Dynamic
5 | from cerebral.pack1.hippocampus import Android
6 | from agility.main import Agility
7 | import time, math
8 |
9 |
10 | # Robot by reference.
11 | robot = Android.robot
12 | agility = Agility(robot)
13 |
14 | # Generic crawl.
15 | crawl = Dynamic(robot)
16 |
17 | # Tkinter.
18 | root = Tk()
19 |
20 | # Define vector.
21 | vector = [0, 0]
22 | v = 0.5
23 | r = math.radians(5)
24 |
25 |
26 | def run_gait():
27 | agility.zero()
28 |
29 | while True:
30 | try:
31 | gait = crawl.generate(*vector)
32 | frames, dt = agility.prepare_smoothly(gait)
33 | agility.execute_frames(frames, dt)
34 | except:
35 | pass
36 |
37 |
38 | def key_down(event):
39 | char = event.char
40 |
41 | if char == 'w':
42 | vector[0] += v
43 | elif char == 's':
44 | vector[0] -= v
45 | elif char == 'a':
46 | vector[1] += r
47 | elif char == 'd':
48 | vector[1] -= r
49 |
50 | print('Target vector:', vector)
51 |
52 |
53 | # Set up tkinter.
54 | frame = Frame(root, width=200, height=200)
55 | root.bind('', key_down)
56 | frame.pack()
57 |
58 | # Set up threading.
59 | thread = Thread(target=run_gait)
60 |
61 | # Start threads.
62 | thread.start()
63 | root.mainloop()
--------------------------------------------------------------------------------
/src/agility/tests/paragon.py:
--------------------------------------------------------------------------------
1 | from agility.maestro import Maestro
2 | from agility.main import Servo
3 | from finesse.paragon import Finesse
4 | import time
5 |
6 | maestro = Maestro()
7 |
8 | # Define servos.
9 | servo1 = Servo(0, 0, 135, 1000, 2300, 120, bias=0, direction=-1)
10 | servo2 = Servo(1, -45, 90, 780, 2100, 120, bias=0, direction=-1)
11 | servo3 = Servo(2, -120, 80, 500, 2500, 120, bias=0, direction=1)
12 | servos = [servo1, servo2, servo3]
13 |
14 |
15 | def goHome():
16 | for servo in servos:
17 | servo.set_target(0)
18 | maestro.set_target(servo)
19 |
20 |
21 | def moveToEuclidean(position, time):
22 | lengths = (1.75, 4, 5, 0.5)
23 | angles = Finesse.inverse_pack(lengths, position)
24 |
25 | if angles is not None:
26 | servo1.set_target(angles[0])
27 | servo2.set_target(angles[1])
28 | servo3.set_target(angles[2])
29 | maestro.end_together(servos, update=True, t=time)
30 | else:
31 | print('Unable to reach position (%s, %s, %s)!' % position)
32 | goHome()
33 |
34 |
35 | def wait():
36 | while maestro.get_moving_state():
37 | time.sleep(0.005)
38 |
39 |
40 | goHome()
41 | time.sleep(2)
42 |
43 | while True:
44 | moveToEuclidean((5, 6, -6), 200)
45 | wait()
46 | moveToEuclidean((0, 6, -6), 1000)
47 | wait()
48 | moveToEuclidean((0, 8, -4), 200)
49 | wait()
--------------------------------------------------------------------------------
/src/agility/tests/plot.py:
--------------------------------------------------------------------------------
1 | import matplotlib.pyplot as plt
2 | import itertools
3 |
4 |
5 | fig = plt.figure()
6 | ax = fig.add_subplot(111)
7 |
8 | body = [[8.625, -7.75], [-7.875, 7.75]]
9 | com = (-0.15476190476190477, 0.0)
10 | closest = (0.093580139372822863, 0.26436411149825845)
11 |
12 | plt.plot(
13 | *zip(*itertools.chain.from_iterable(itertools.combinations(body, 2))),
14 | color='blue', marker='o')
15 | plt.plot(com[0], com[1], color='red', marker='+')
16 | plt.plot(closest[0], closest[1], color='green', marker='o')
17 | plt.axis('equal')
18 |
19 |
20 | plt.show()
--------------------------------------------------------------------------------
/src/agility/tests/pose.py:
--------------------------------------------------------------------------------
1 | from cerebral.pack1.hippocampus import Android
2 | from agility.main import Agility
3 | import numpy as np
4 |
5 |
6 | # Robot by reference.
7 | robot = Android.robot
8 | agility = Agility(robot)
9 |
10 |
11 | agility.zero()
12 |
13 | agility.lift_leg(0, 1, 1000)
--------------------------------------------------------------------------------
/src/agility/tests/speed.py:
--------------------------------------------------------------------------------
1 | from shared.timer import time_it
2 | from agility.maestro import Maestro, Servo
3 | from agility.main import Agility, Leg, LegLocation, Servo
4 |
5 | maestro = Maestro()
6 |
7 | servo1 = Servo(0, -90, 180, 500, 2500, 150, bias=0, direction=-1)
8 | servo2 = Servo(1, -45, 225, 500, 2500, 150, bias=180, direction=1)
9 | servo3 = Servo(3, -135, 135, 500, 2500, 150, bias=-2, direction=-1)
10 |
11 | leg = Leg(servo1, servo2, servo3, (7.5, 7.5), LegLocation.FR)
12 |
13 |
14 | @time_it(10000)
15 | def is_running():
16 | maestro.get_moving_state()
17 |
18 |
19 | @time_it(10000)
20 | def target():
21 | Agility.target_euclidean(leg, (2, 1, 10))
22 |
23 |
24 | @time_it(10000)
25 | def set_and_send():
26 | Agility.target_euclidean(leg, (2, 1, 10))
27 | for servo in leg:
28 | maestro.set_target(servo)
29 |
30 |
31 | data = bytearray(b'\x84\x00J@\x84\x01NE\x84\x03\x11D')
32 |
33 |
34 | @time_it(10000)
35 | def send_only():
36 | maestro.data = data
37 |
38 |
39 | @time_it(10000)
40 | def read_location():
41 | maestro.get_multiple_positions(leg)
42 |
43 |
44 | read_location()
--------------------------------------------------------------------------------
/src/agility/tests/stepper.py:
--------------------------------------------------------------------------------
1 | from agility.maestro import Maestro
2 | from agility.main import Stepper
3 |
4 | stepper = Stepper(0, 1, 200)
5 | maestro = Maestro()
6 | maestro.rotate(stepper, -360, 2000)
--------------------------------------------------------------------------------
/src/agility/tests/test.py:
--------------------------------------------------------------------------------
1 | import serial
2 | import time
3 |
4 | usb = serial.Serial(5, 9600)
5 |
6 | while True:
7 | data = usb.readline()
8 | print(data.decode('ascii').strip())
--------------------------------------------------------------------------------
/src/agility/tests/tiger.mp3:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:2bf7e0b81e82283844601022c07ee389f2df94adad8005ad3fac1b421439ccc5
3 | size 6000000
4 |
--------------------------------------------------------------------------------
/src/ares/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/ares/__init__.py
--------------------------------------------------------------------------------
/src/ares/tests/rfid/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/ares/tests/rfid/__init__.py
--------------------------------------------------------------------------------
/src/ares/tests/rfid/test.py:
--------------------------------------------------------------------------------
1 | import serial
2 | from serial.tools import list_ports
3 | from time import sleep
4 |
5 |
6 | ports = list(list_ports.grep(r'(?i)0403'))
7 | port = ports[0][0]
8 |
9 | reader = serial.Serial(port=port, timeout=0)
10 |
11 | while True:
12 | if reader.inWaiting() >= 16:
13 | data = reader.read(size=16)
14 | data = data.decode()
15 |
16 | # Assert for debugging verification.
17 | assert(data[0] == '\x02')
18 | assert(data[13:] == '\r\n\x03')
19 |
20 | rfid = data[1:13]
21 |
22 | print(rfid)
23 | else:
24 | sleep(0.1)
25 |
--------------------------------------------------------------------------------
/src/ares/tests/test.py:
--------------------------------------------------------------------------------
1 | from ares.main import Ares
2 | from cerebral.pack1.hippocampus import Android
3 |
4 |
5 | camera = Android.camera
6 | robot = Android.robot
7 | info = Android.info
8 |
9 | ares = Ares(robot, camera, info)
10 | data = ares.compute_vector(40000, 30000, 500, -10)
11 | print(data)
--------------------------------------------------------------------------------
/src/cerebral/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/cerebral/__init__.py
--------------------------------------------------------------------------------
/src/cerebral/database.py:
--------------------------------------------------------------------------------
1 | import queue
2 | import Pyro4
3 | from cerebral.nameserver import ports
4 |
5 |
6 | # Configure pyro.
7 | Pyro4.config.SERIALIZERS_ACCEPTED = frozenset(['pickle', 'serpent'])
8 | Pyro4.config.SERIALIZER = 'pickle'
9 |
10 | # Logging queue.
11 | queue = queue.Queue()
12 |
13 |
14 | if __name__ == '__main__':
15 | # Create a daemon.
16 | port = ports['database']
17 | daemon = Pyro4.Daemon('localhost', port)
18 |
19 | # Register all objects.
20 | daemon.register(queue, 'logging')
21 |
22 | # Start event loop.
23 | daemon.requestLoop()
--------------------------------------------------------------------------------
/src/cerebral/logger.py:
--------------------------------------------------------------------------------
1 | import Pyro4
2 | import logging
3 | from logging.handlers import QueueHandler
4 | from cerebral.nameserver import lookup
5 |
6 |
7 | class Handler(QueueHandler):
8 | """
9 | An asynchronous logger using a proxy-based queue.
10 | """
11 |
12 | def prepare(self, record):
13 | # msg = self.format(record)
14 | msg = (record.levelno, record.msg)
15 | return msg
16 |
17 | # Configure pyro.
18 | Pyro4.config.SERIALIZER = 'pickle'
19 |
20 | # Connect to queue.
21 | uri = lookup('database', 'logging')
22 | proxy = Pyro4.Proxy(uri)
23 | proxy._pyroTimeout = 1.0
24 | queue = Pyro4.async(proxy)
25 |
26 | # Configure logging.
27 | logger = logging.getLogger('universe')
28 | handler = Handler(queue)
29 | logger.setLevel(logging.DEBUG)
30 | formatter = logging.Formatter(fmt='%(asctime)s | %(levelname)s | %(message)s', datefmt='%m/%d/%Y %H:%M:%S')
31 | handler.setFormatter(formatter)
32 | logger.addHandler(handler)
--------------------------------------------------------------------------------
/src/cerebral/nameserver.py:
--------------------------------------------------------------------------------
1 | ports = {
2 | 'database': 31337,
3 | 'worker1': 31415,
4 | 'worker2': 27182,
5 | 'worker3': 60221
6 | }
7 |
8 |
9 | def lookup(process, id):
10 | """
11 | Return a Pyro URI based on given ID and process.
12 | :param process: The process name.
13 | :param id: The ID of the desired object.
14 | :return: A URI.
15 | """
16 |
17 | port = ports[process]
18 | uri = 'PYRO:{}@localhost:{}'.format(id, port)
19 |
20 | return uri
--------------------------------------------------------------------------------
/src/cerebral/pack1/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/cerebral/pack1/__init__.py
--------------------------------------------------------------------------------
/src/cerebral/pack1/commands.py:
--------------------------------------------------------------------------------
1 | from enum import IntEnum
2 |
3 |
4 | class Commands:
5 | WALK_FORWARD = 1
6 | DO_PUSHUPS = 2
7 | STAND_UP = 3
8 |
9 | STOP = 5
10 | HOME = 6
11 |
12 | READY = 10
13 |
14 | DONE = 19
15 | SUCCESS = 20
16 | FAILURE = 21
--------------------------------------------------------------------------------
/src/cerebral/pack1/server.cer:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIIDeDCCAmCgAwIBAgIJALSalqAVNEGhMA0GCSqGSIb3DQEBBQUAMGQxCzAJBgNV
3 | BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMQ8wDQYDVQQHEwZDYXJzb24xHTAb
4 | BgNVBAoTFEVjbGlwc2UgVGVjaG5vbG9naWVzMRAwDgYDVQQDEwdET0ctMUU1MB4X
5 | DTE2MDYwMzA0MjQ0MloXDTI2MDYwNDA0MjQ0MlowZDELMAkGA1UEBhMCVVMxEzAR
6 | BgNVBAgTCkNhbGlmb3JuaWExDzANBgNVBAcTBkNhcnNvbjEdMBsGA1UEChMURWNs
7 | aXBzZSBUZWNobm9sb2dpZXMxEDAOBgNVBAMTB0RPRy0xRTUwggEiMA0GCSqGSIb3
8 | DQEBAQUAA4IBDwAwggEKAoIBAQCeSXkUo+hcnoaz/L5HH/08CDF/YqUXAtUmYgRs
9 | 3fdOFnlR9RRwEkQyaN9vHBkOviVfOI6kl2zeIf9FOZtOekM9PsfyUyPq0BphF0RQ
10 | 2IK+Y8wUWFPhKCLZuNAhs/WAoB8Ya3GZOQ9WG4iAkKubOnlBkGkKu9bZHbXfWU59
11 | 0ruoKFmm+z4YcK4OxQdVhboO7EbFhNbY+zgdms0GDjnV0gOyjO03f9vAjOuW1qJh
12 | 7gQgwIpJm5ANFcbj36KpJ4I6xcfCm0OX1EkTZcz+Ix1rx/elNVg5l5JJuQvvkE+S
13 | 6n9Q5UKTHQZDU9DF7E0xsLzWmApacqUG6g5oUIy0ca3F6qqZAgMBAAGjLTArMAkG
14 | A1UdEwQCMAAwEQYJYIZIAYb4QgEBBAQDAgTwMAsGA1UdDwQEAwIFIDANBgkqhkiG
15 | 9w0BAQUFAAOCAQEACNzy2Qw/jxVvqB6MejQZ6jIn0P8DM+L/R8193EAj3mtgottl
16 | Y+PGNV8vIPCwWRyEjUURC4uqyGJoFfW7DOH6bCKaEvrOD9cDmCOH1Tl4YmtfSeMg
17 | 9+UuW+QhCEqwYuiF+I84XIht/Rv6sAWzMk8KBhF8IsMsZ7INWdLFrgjK3wkmT3tF
18 | 2HAwubyJHY6Tlllowpg48an3x6xnlM2ddd0mCyEf5cqX51SwZ3WINNM550ci3mWh
19 | grW1Sb9B94vKt1tiKrZrBtayGv35yDmgLQ0pEjDpuo7WOSk5eq/xH8/HXGyf0f+j
20 | pKb+bsA0/CAYFS5MNgdsPmKCn4pP3qRT+IuYmQ==
21 | -----END CERTIFICATE-----
22 |
--------------------------------------------------------------------------------
/src/cerebral/pack1/server.csr:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE REQUEST-----
2 | MIICqTCCAZECAQAwZDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWEx
3 | DzANBgNVBAcTBkNhcnNvbjEdMBsGA1UEChMURWNsaXBzZSBUZWNobm9sb2dpZXMx
4 | EDAOBgNVBAMTB0RPRy0xRTUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
5 | AQCeSXkUo+hcnoaz/L5HH/08CDF/YqUXAtUmYgRs3fdOFnlR9RRwEkQyaN9vHBkO
6 | viVfOI6kl2zeIf9FOZtOekM9PsfyUyPq0BphF0RQ2IK+Y8wUWFPhKCLZuNAhs/WA
7 | oB8Ya3GZOQ9WG4iAkKubOnlBkGkKu9bZHbXfWU590ruoKFmm+z4YcK4OxQdVhboO
8 | 7EbFhNbY+zgdms0GDjnV0gOyjO03f9vAjOuW1qJh7gQgwIpJm5ANFcbj36KpJ4I6
9 | xcfCm0OX1EkTZcz+Ix1rx/elNVg5l5JJuQvvkE+S6n9Q5UKTHQZDU9DF7E0xsLzW
10 | mApacqUG6g5oUIy0ca3F6qqZAgMBAAGgADANBgkqhkiG9w0BAQUFAAOCAQEAGsgY
11 | 0Dg4tiv+71yNt+7NdMPXLX5YZssIj13E+v/sHcWgLqXDxbKJN10iAT/HpCzlcRt8
12 | sZu8DI0ZATEagaU5GzlnG7DCXMXd6VEqX+YHjOLKhPZ2suodKgesKgX4c04ORmI7
13 | TgcUx31jfP5SR5FzOG2jgqOFk73BhOHUn6wNlZbkBzRnMi74/THQ/GqE8K87PNzR
14 | eqBbb/MJAa26xsADUBLYGDFBzD1Ac/IwHj8lO29xQ7PMn4g/tHcCamC+BXqhK9U0
15 | qjvsKxTwlNowexkYqtU76c5eey2MUKDGypMCVZIKZrINdJWn1hKRVySaObX9MotA
16 | 7MEFQ2rKFBx3jjK1jg==
17 | -----END CERTIFICATE REQUEST-----
18 |
--------------------------------------------------------------------------------
/src/cerebral/pack1/server.p12:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/cerebral/pack1/server.p12
--------------------------------------------------------------------------------
/src/cerebral/pack1/worker3.py:
--------------------------------------------------------------------------------
1 | from cerebral import logger as l
2 |
3 | import Pyro4
4 | import logging
5 | from cerebral.nameserver import ports
6 | from ares.main import RFID
7 |
8 |
9 | # Configure pyro.
10 | Pyro4.config.SERIALIZERS_ACCEPTED = frozenset(['pickle', 'serpent'])
11 | Pyro4.config.SERIALIZER = 'pickle'
12 |
13 | # Logging.
14 | logger = logging.getLogger('universe')
15 |
16 |
17 | class SuperAres:
18 | def __init__(self):
19 | self.rfid = RFID()
20 |
21 | def read(self):
22 | return self.rfid.read()
23 |
24 |
25 | super_ares = SuperAres()
26 |
27 |
28 | if __name__ == '__main__':
29 | # Create a daemon.
30 | port = ports['worker3']
31 | daemon = Pyro4.Daemon('localhost', port)
32 |
33 | # Register all objects.
34 | daemon.register(super_ares, 'super_ares')
35 |
36 | # Log server event.
37 | logger.info('Worker 3 started!')
38 |
39 | # Start event loop.
40 | daemon.requestLoop()
--------------------------------------------------------------------------------
/src/cerebral/pack2/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/cerebral/pack2/__init__.py
--------------------------------------------------------------------------------
/src/cerebral/pack2/commands.py:
--------------------------------------------------------------------------------
1 | from enum import IntEnum
2 |
3 |
4 | class Commands:
5 | WALK_FORWARD = 1
6 | DO_PUSHUPS = 2
7 | STAND_UP = 3
8 |
9 | STOP = 5
10 | HOME = 6
11 |
12 | READY = 10
13 |
14 | DONE = 19
15 | SUCCESS = 20
16 | FAILURE = 21
--------------------------------------------------------------------------------
/src/cerebral/pack2/server.cer:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIIDeDCCAmCgAwIBAgIJAM33BGuhvMHmMA0GCSqGSIb3DQEBBQUAMGQxCzAJBgNV
3 | BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMQ8wDQYDVQQHEwZDYXJzb24xHTAb
4 | BgNVBAoTFEVjbGlwc2UgVGVjaG5vbG9naWVzMRAwDgYDVQQDEwdET0ctNFMxMB4X
5 | DTE2MDYwMzA0MjY1NFoXDTI2MDYwNDA0MjY1NFowZDELMAkGA1UEBhMCVVMxEzAR
6 | BgNVBAgTCkNhbGlmb3JuaWExDzANBgNVBAcTBkNhcnNvbjEdMBsGA1UEChMURWNs
7 | aXBzZSBUZWNobm9sb2dpZXMxEDAOBgNVBAMTB0RPRy00UzEwggEiMA0GCSqGSIb3
8 | DQEBAQUAA4IBDwAwggEKAoIBAQC/pTw6Ovx65bBPVt+mIck0M0kKRnnbuzOe6V1h
9 | Ve/vz1PrPTU1hd+WhRRcFwEcR4Zhd2FsYCyqNByh9DghZ4TMX1a1s9nOKE16Q6Ap
10 | AXnMEtQZt/xw7FQtVvPGR1khqgL0oKnHCx2nv6qDht1TpyCYnlZNlftzK2xFA07k
11 | 13Ob+nY6Bd3LQle5LC11Ue//96ijJxQ7AhZ0shQYV99NTykGqQemjbK+FpDsB8L3
12 | HlHWKPmhsjy09gXhnTYLF5Eaw/MgViRFN4rHLAFo9Wacbxu0W4f007HZ+NcJt8L3
13 | 3Ovz/m0/xR1xP23IXip2BZk8pVTEKkzbZtxRfVCFV7TJEMblAgMBAAGjLTArMAkG
14 | A1UdEwQCMAAwEQYJYIZIAYb4QgEBBAQDAgTwMAsGA1UdDwQEAwIFIDANBgkqhkiG
15 | 9w0BAQUFAAOCAQEAKnXQEZgXNLEsK0Qh1Kh1Wqe+SMCZ1Pn8YGf7uuWl+Tiouo1d
16 | v7i6X/KdFawCgNoltktM4RjKwyFDbS0A+TZqxFABi6wUqcpNVaD7LVNeh7AzHwIh
17 | 29W3onsU5c8SbU3tR+uAUBXkAglOj/0GBNRvT/4PE5VWr/WYzG9GRAKnHgyJIK2q
18 | jLPMiPKIOx8ySZXGgEgWy0ZjTHHnM8dVPI6tyKY527WUECQKeJNDHj0IL65MkNER
19 | rlKZIATRzETZe8cy5URdfMv4j/jZVKFzgZAJW1UeSZOmfYI8z4b/W+g62swvTeJS
20 | EtQYVU0+fb20icEX2AzRCCct+e1uKvZdJDl0RQ==
21 | -----END CERTIFICATE-----
22 |
--------------------------------------------------------------------------------
/src/cerebral/pack2/server.csr:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE REQUEST-----
2 | MIICqTCCAZECAQAwZDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWEx
3 | DzANBgNVBAcTBkNhcnNvbjEdMBsGA1UEChMURWNsaXBzZSBUZWNobm9sb2dpZXMx
4 | EDAOBgNVBAMTB0RPRy00UzEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
5 | AQC/pTw6Ovx65bBPVt+mIck0M0kKRnnbuzOe6V1hVe/vz1PrPTU1hd+WhRRcFwEc
6 | R4Zhd2FsYCyqNByh9DghZ4TMX1a1s9nOKE16Q6ApAXnMEtQZt/xw7FQtVvPGR1kh
7 | qgL0oKnHCx2nv6qDht1TpyCYnlZNlftzK2xFA07k13Ob+nY6Bd3LQle5LC11Ue//
8 | 96ijJxQ7AhZ0shQYV99NTykGqQemjbK+FpDsB8L3HlHWKPmhsjy09gXhnTYLF5Ea
9 | w/MgViRFN4rHLAFo9Wacbxu0W4f007HZ+NcJt8L33Ovz/m0/xR1xP23IXip2BZk8
10 | pVTEKkzbZtxRfVCFV7TJEMblAgMBAAGgADANBgkqhkiG9w0BAQUFAAOCAQEAc15W
11 | 9k9rfFZbqpf/hBPXJ4scKrCUiN4env4MRSyunn34NsaQ+0cmgcGgU/I0Ikg+3VcW
12 | pR30dM/955FxPnu8sCZJdQA+1ZzFS7pbAjMJqMKPrZGNPHf44LRz0IV5T4jedqb4
13 | KLI6OD52daPEhnyO0LsKQr20tJsYWdzLAS9B3G2SCKrnIZZivEhRgSnaYW+pvr3R
14 | tca8UZxqfhtPNcivXj2km2R8hAex0vGCFQ0z8v/6xFsoLwVIOZpoDqHBnu8wLxBC
15 | 7SBH5m/WvOETRTyDc53+m61gPWlio6CBoHd1e0H+Shjc9TVzKDxGJaGUGv/CKbsR
16 | NvE+V+PTBT7CpCr7Tg==
17 | -----END CERTIFICATE REQUEST-----
18 |
--------------------------------------------------------------------------------
/src/cerebral/pack2/server.p12:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/cerebral/pack2/server.p12
--------------------------------------------------------------------------------
/src/cerebral/pack2/worker3.py:
--------------------------------------------------------------------------------
1 | from cerebral import logger as l
2 |
3 | import Pyro4
4 | import logging
5 | from cerebral.nameserver import ports
6 | from ares.main import RFID
7 |
8 |
9 | # Configure pyro.
10 | Pyro4.config.SERIALIZERS_ACCEPTED = frozenset(['pickle', 'serpent'])
11 | Pyro4.config.SERIALIZER = 'pickle'
12 |
13 | # Logging.
14 | logger = logging.getLogger('universe')
15 |
16 |
17 | class SuperAres:
18 | def __init__(self):
19 | self.rfid = RFID()
20 |
21 | def read(self):
22 | return self.rfid.read()
23 |
24 |
25 | super_ares = SuperAres()
26 |
27 |
28 | if __name__ == '__main__':
29 | # Create a daemon.
30 | port = ports['worker3']
31 | daemon = Pyro4.Daemon('localhost', port)
32 |
33 | # Register all objects.
34 | daemon.register(super_ares, 'super_ares')
35 |
36 | # Log server event.
37 | logger.info('Worker 3 started!')
38 |
39 | # Start event loop.
40 | daemon.requestLoop()
--------------------------------------------------------------------------------
/src/cerebral/tests/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/cerebral/tests/__init__.py
--------------------------------------------------------------------------------
/src/cerebral/wolf/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/cerebral/wolf/__init__.py
--------------------------------------------------------------------------------
/src/eclipse.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3.5
2 |
3 | import os
4 | import sys
5 | import socket
6 | from subprocess import Popen
7 | import psutil
8 | import time
9 |
10 | if __name__ == '__main__':
11 | # Get the current directory.
12 | root = os.path.dirname(__file__)
13 |
14 | # Try to determine robot automatically.
15 | hostname = socket.gethostname()
16 |
17 | robots = {
18 | 'DOG-1E5': os.path.join(root, 'cerebral', 'pack', 'eclipse.py'),
19 | 'DOG-4S1': os.path.join(root, 'cerebral', 'dog4', 'eclipse.py'),
20 | 'ALPHA': os.path.join(root, 'cerebral', 'alpha', 'eclipse.py')
21 | }
22 |
23 | file = robots.get(hostname.upper())
24 |
25 | if file is None:
26 | # Unknown hostname. Manually enter host.
27 | print('Unable to determine host system. Please manually indicate the robot type.')
28 | print('Choices: ' + ', '.join(sorted(list(robots.keys()))) + '.')
29 | s = input('> ')
30 |
31 | file = robots.get(s.upper())
32 |
33 | if file is None:
34 | print('Invalid choice "%s".' % s)
35 | sys.exit(0)
36 |
37 | process = Popen([sys.executable, file])
38 |
39 | time.sleep(0.5)
40 |
41 | if not psutil.pid_exists(process.pid):
42 | print('Error. Event loop spawning failed.')
43 |
44 |
--------------------------------------------------------------------------------
/src/finesse/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/finesse/__init__.py
--------------------------------------------------------------------------------
/src/finesse/tests/3d.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/finesse/tests/3d.png
--------------------------------------------------------------------------------
/src/finesse/tests/analysis.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/finesse/tests/analysis.png
--------------------------------------------------------------------------------
/src/finesse/tests/paragon.py:
--------------------------------------------------------------------------------
1 | from math import *
2 | from finesse.paragon import Finesse
3 | import serial, struct, time
4 |
5 |
6 | def kinematics(lengths, pos):
7 | for x in range(0, 3):
8 | pos[x] += 1e-20
9 | l1, l2, l3 = lengths
10 | x, y, z = pos
11 | z+=0.5
12 | z*=-1
13 |
14 | li = ((x ** 2 + y ** 2) ** 0.5) - l1
15 | l4 = (z ** 2 + li ** 2) ** 0.5
16 |
17 | t1 = -atan2(y,x)
18 | t4 = atan2(li,z)
19 | t5 = acos((l4 ** 2 + l2 ** 2 - l3 ** 2) / (2 * l4 * l2))
20 | t2 = (pi / 2) - (t5 + t4)
21 | t3 = (pi) - acos((l2 ** 2 + l3 ** 2 - l4 ** 2) / (2 * l2 * l3))
22 |
23 | return t1, t2, t3
24 |
25 |
26 | def invkinematics(lengths, angles):
27 | t1, t2, t3 = angles
28 | l1, l2, l3 = lengths
29 | i1 = (l2 * cos(t2)) + (l3 * cos(t2 + t3))
30 | x = (i1 + l1) * cos(t1)
31 | y = (i1 + l1) * sin(t1)
32 | z = (l2 * sin(t2)) + (l3 * sin(t2 + t3))
33 | return x, y, z
34 |
35 |
36 | usb = serial.Serial('COM5')
37 | lengths = (1.75, 4, 5, 0.5)
38 | x, y, z = (4, -4, -5)
39 | t = 0
40 | k = 5
41 | r = 3
42 | a = 4
43 |
44 | while True:
45 | target = (x + r * sin(k * t), y, z + (cos(k * t) / abs(cos(k * t))) * (1 - sin(k * t) ** a) ** (1 / a))
46 | t1, t2, t3 = Finesse.inverse_pack(lengths, target)
47 | # print(t1, t2, t3)
48 | data = struct.pack(' 1:
15 | print('%r (%r, %r) | %sx | average %2.3f seconds per run'
16 | % (function.__name__, args, kwargs, count, delta))
17 | else:
18 | print('%r (%r, %r) | %sx | average %2.3f ms per run'
19 | % (function.__name__, args, kwargs, count, delta * 1000))
20 | return function_wrapper
21 | return time_me_decorator
22 |
--------------------------------------------------------------------------------
/src/tests/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/tests/__init__.py
--------------------------------------------------------------------------------
/src/tests/arc/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/tests/arc/__init__.py
--------------------------------------------------------------------------------
/src/tests/arc/arc.py:
--------------------------------------------------------------------------------
1 | import math
2 | from numba import jit
3 | import time, timeit
4 |
5 | def length(a, c):
6 | return (2 * (a*c)**(1/2) * (4*a*c+1)**(1/2) + math.asinh(2 * (a*c)**(1/2))) / (2*a)
7 |
8 |
9 | @jit
10 | def f1(a, c, l):
11 | '''Returns f(a).'''
12 | return (2 * (a*c)**(1/2) * (4*a*c+1)**(1/2) + math.asinh(2 * (a*c)**(1/2))) - 2*a*l
13 |
14 |
15 | @jit
16 | def f2(a, c, l):
17 | '''Returns f'(a).'''
18 | return 2 * ((c * (1/a+4*c))**(1/2) - l)
19 |
20 |
21 | @jit
22 | def find_a(c, l):
23 | '''Approximates a using Newton's method.'''
24 |
25 | # The initial guess for a.
26 | a = 1.0
27 |
28 | # The error term.
29 | error = 0
30 |
31 | # Run 30 iterations of Newton's method
32 | for i in range(30):
33 | a1 = a - f1(a, c, l) / f2(a, c, l)
34 | error = abs(a1 - a)
35 | a = a1
36 |
37 | # Convergence completed early.
38 | if error < 3e-10:
39 | return a
40 |
41 | return a
42 |
43 |
44 | def generate(c, l):
45 | '''Returns a lambda function for quick evaluation of z(x).'''
46 |
47 | a = find_a(c, l)
48 | return lambda x: a * x**2 - c
49 |
50 | l = 5
51 | print('Actual length:', l)
52 |
53 | c = 0.5
54 | a = find_a(c, l)
55 |
56 |
57 | print('Computed a:', a)
58 | guessed = length(a, c)
59 | print('Result length:', guessed)
60 | print('Error:', (guessed-l)/l * 100)
--------------------------------------------------------------------------------
/src/tests/audio/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/tests/audio/__init__.py
--------------------------------------------------------------------------------
/src/tests/audio/desktop.ini:
--------------------------------------------------------------------------------
1 | [ViewState]
2 | Mode=
3 | Vid=
4 | FolderType=Generic
5 |
--------------------------------------------------------------------------------
/src/tests/audio/record.flac:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:3b59ba58ae7e39b38b88f481c338bd7437b149741226317651f21f56572bf4f2
3 | size 664386
4 |
--------------------------------------------------------------------------------
/src/tests/audio/record.mp3:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:a6924bd2e06d917872a960ed33054a576fc1d43aa78eb965ae21fd37aebd9285
3 | size 238328
4 |
--------------------------------------------------------------------------------
/src/tests/audio/violin_a.wav:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:c534a9b138cbcad1bf6a2ae0af625ded432eaeefc4a27229657c83c06dc7b04a
3 | size 487361
4 |
--------------------------------------------------------------------------------
/src/tests/audio/wol.mp3:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:e0bb1cbf3b0d58558459c9b34de5d4971a37dc968772380778c7a58300bd3222
3 | size 3356530
4 |
--------------------------------------------------------------------------------
/src/tests/eclipse.py:
--------------------------------------------------------------------------------
1 | import os
2 | import sys
3 | import socket
4 | from subprocess import Popen
5 |
6 |
7 | def spawn_python(file):
8 | """
9 | Spawn a detached Python process using the same interpreter.
10 | :param file: The Python file name relative to this file's path.
11 | :return: A Popen object representing the opened process.
12 | """
13 |
14 | return Popen([sys.executable, file])
15 |
16 |
17 | if __name__ == '__main__':
18 | #
19 |
20 |
21 | # Change to the correct directory.
22 | os.chdir(os.path.dirname(__file__))
23 |
24 | print(sys.executable)
--------------------------------------------------------------------------------
/src/tests/ik/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/tests/ik/__init__.py
--------------------------------------------------------------------------------
/src/tests/ik/finesse/__init__.py:
--------------------------------------------------------------------------------
1 | __all__ = ['fabrik']
--------------------------------------------------------------------------------
/src/tests/ik/finesse/leg1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/tests/ik/finesse/leg1.png
--------------------------------------------------------------------------------
/src/tests/ik/finesse/leg2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/tests/ik/finesse/leg2.png
--------------------------------------------------------------------------------
/src/tests/ik/finesse/leg3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/tests/ik/finesse/leg3.png
--------------------------------------------------------------------------------
/src/tests/ik/finesse/out.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/tests/ik/finesse/out.png
--------------------------------------------------------------------------------
/src/tests/pseudocode.py:
--------------------------------------------------------------------------------
1 | # Capture image from OpenCV
2 | # Find all contours in the image
3 | for contour in contours:
4 | # Approximate a polygon for the contour
5 | # Count the number of distinct edges
6 | if len(edges) > 15:
7 | # Circle has been detected
8 | elif len(edges) == 4:
9 | # Triangle has been detected
10 | elif len(edges) == 4:
11 | # Rectangle has been detected
12 | elif len(edges) == 5:
13 | # Pentagon has been detected
--------------------------------------------------------------------------------
/src/tests/vision/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/tests/vision/__init__.py
--------------------------------------------------------------------------------
/src/tests/vision/book2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/tests/vision/book2.jpg
--------------------------------------------------------------------------------
/src/tests/vision/canny.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/tests/vision/canny.jpg
--------------------------------------------------------------------------------
/src/tests/vision/cheetah.mp4:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:65dc945b5f0f89c2c997fc57fa25a07287523417aa74679db070d1ad0c17bd15
3 | size 20738441
4 |
--------------------------------------------------------------------------------
/src/tests/vision/color2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/tests/vision/color2.jpg
--------------------------------------------------------------------------------
/src/tests/vision/floor.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/tests/vision/floor.jpg
--------------------------------------------------------------------------------
/src/tests/vision/roi.avi:
--------------------------------------------------------------------------------
1 | version https://git-lfs.github.com/spec/v1
2 | oid sha256:0ccb415dd3268926d43a9b4ec3714145b8ca157b3752f6e6823ee8ae683f7863
3 | size 11521978
4 |
--------------------------------------------------------------------------------
/src/tests/vision/roi.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/tests/vision/roi.jpg
--------------------------------------------------------------------------------
/src/tests/vision/roi_out.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/tests/vision/roi_out.jpg
--------------------------------------------------------------------------------
/src/tests/vision/shape.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/tests/vision/shape.jpg
--------------------------------------------------------------------------------
/src/tests/vision/shape_out.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/tests/vision/shape_out.jpg
--------------------------------------------------------------------------------
/src/theia/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/theia/__init__.py
--------------------------------------------------------------------------------
/src/theia/oculus/src/3rdparty/cv_ext/psr.hpp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bobbyluig/eclipse/ed2d3ed40b878eaddaf8997749fde5a11428964e/src/theia/oculus/src/3rdparty/cv_ext/psr.hpp
--------------------------------------------------------------------------------
/src/theia/oculus/src/3rdparty/pbcvt/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2014 Gregory Kramida
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/src/theia/oculus/src/3rdparty/piotr/README.md:
--------------------------------------------------------------------------------
1 | This module provides the FHOG implementation from
2 | http://vision.ucsd.edu/~pdollar/toolbox/doc/
3 | with an OpenCV integration.
4 |
--------------------------------------------------------------------------------
/src/theia/oculus/src/cf_libs/common/gil.hpp:
--------------------------------------------------------------------------------
1 | #ifndef _GIL_HPP_
2 | #define _GIL_HPP_
3 |
4 | #include
5 |
6 | class releaseGIL {
7 | public:
8 | inline releaseGIL() {
9 | save_state = PyEval_SaveThread();
10 | }
11 |
12 | inline ~releaseGIL() {
13 | PyEval_RestoreThread(save_state);
14 | }
15 | private:
16 | PyThreadState *save_state;
17 | };
18 |
19 | #endif
--------------------------------------------------------------------------------
/src/theia/oculus/src/exports/dsst_export.h:
--------------------------------------------------------------------------------
1 | #ifndef DSST_EXPORT_
2 | #define DSST_EXPORT_
3 |
4 | void DSST_EXPORT();
5 |
6 | #endif
--------------------------------------------------------------------------------
/src/theia/oculus/src/exports/kcf_export.h:
--------------------------------------------------------------------------------
1 | #ifndef KCF_EXPORT_
2 | #define KCF_EXPORT_
3 |
4 | void KCF_EXPORT();
5 |
6 | #endif
--------------------------------------------------------------------------------
/src/theia/oculus/src/exports/line2d_export.h:
--------------------------------------------------------------------------------
1 | #ifndef LINE2D_EXPORT_
2 | #define LINE2D_EXPORT_
3 |
4 | void LINE2D_EXPORT();
5 |
6 | #endif
--------------------------------------------------------------------------------
/src/theia/oculus/src/oculus.cpp:
--------------------------------------------------------------------------------
1 | #define PY_ARRAY_UNIQUE_SYMBOL pbcvt_ARRAY_API
2 |
3 | #include
4 | #include
5 | #include
6 | #include
7 | #include
8 | #include
9 |
10 | #include "kcf_export.h"
11 | #include "dsst_export.h"
12 | #include "line2d_export.h"
13 |
14 | using namespace boost::python;
15 |
16 | static void* init_ar()
17 | {
18 | Py_Initialize();
19 | import_array();
20 |
21 | return NULL;
22 | }
23 |
24 | BOOST_PYTHON_MODULE(oculus)
25 | {
26 | init_ar();
27 | PyEval_InitThreads();
28 | to_python_converter();
30 | pbcvt::matFromNDArrayBoostConverter();
31 |
32 | KCF_EXPORT();
33 | DSST_EXPORT();
34 | LINE2D_EXPORT();
35 | }
--------------------------------------------------------------------------------
/src/theia/slam/LICENSE.txt:
--------------------------------------------------------------------------------
1 | ORB-SLAM2 is released under a GPLv3 license (see License-gpl.txt).
2 | Please see Dependencies.md for a list of all included code and library dependencies which are not property of the authors of ORB-SLAM2.
3 |
4 | For a closed-source version of ORB-SLAM2 for commercial purposes, please contact the authors.
5 |
6 | If you use ORB-SLAM in an academic work, please cite the most relevant publication associated by visiting:
7 | https://github.com/raulmur/ORB_SLAM2
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/theia/slam/Thirdparty/DBoW2/README.txt:
--------------------------------------------------------------------------------
1 | You should have received this DBoW2 version along with ORB-SLAM2 (https://github.com/raulmur/ORB_SLAM2).
2 | See the original DBoW2 library at: https://github.com/dorian3d/DBoW2
3 | All files included in this version are BSD, see LICENSE.txt
4 |
5 | We also use Random.h, Random.cpp, Timestamp.pp and Timestamp.h from DLib/DUtils.
6 | See the original DLib library at: https://github.com/dorian3d/DLib
7 | All files included in this version are BSD, see LICENSE.txt
8 |
--------------------------------------------------------------------------------
/src/theia/slam/Thirdparty/DBoW2/dbow2/DBoW2/FeatureVector.h:
--------------------------------------------------------------------------------
1 | /**
2 | * File: FeatureVector.h
3 | * Date: November 2011
4 | * Author: Dorian Galvez-Lopez
5 | * Description: feature vector
6 | * License: see the LICENSE.txt file
7 | *
8 | */
9 |
10 | #ifndef __D_T_FEATURE_VECTOR__
11 | #define __D_T_FEATURE_VECTOR__
12 |
13 | #include "BowVector.h"
14 | #include