├── LICENSE ├── Paper_Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors.pdf ├── Posture_fall_detection_demo.mp4 ├── README.md ├── common.py ├── data ├── lyingdown_testing.csv ├── lyingdown_training.csv ├── sitting_testing.csv ├── sitting_training.csv ├── standing_testing.csv └── standing_training.csv ├── images ├── fallDetectionSystem.png ├── kinectSkeleton.png └── kinectSkeletonFeatures.png ├── main.py ├── postureDetection_LSTM.h5 └── skeletonTracking ├── Debug └── skeletonTracking.pdb ├── skeletonTracking.sln ├── skeletonTracking ├── Debug │ ├── main.obj │ ├── skeletonTracking.log │ ├── skeletonTracking.tlog │ │ ├── CL.command.1.tlog │ │ ├── CL.read.1.tlog │ │ ├── CL.write.1.tlog │ │ ├── link-cvtres.read.1.tlog │ │ ├── link-cvtres.write.1.tlog │ │ ├── link-rc.read.1.tlog │ │ ├── link-rc.write.1.tlog │ │ ├── link.command.1.tlog │ │ ├── link.read.1.tlog │ │ ├── link.write.1.tlog │ │ └── skeletonTracking.lastbuildstate │ ├── vc140.idb │ └── vc140.pdb ├── main.cpp ├── skeletonTracking.vcxproj ├── skeletonTracking.vcxproj.filters ├── skeletonTracking.vcxproj.user └── x64 │ ├── Debug │ ├── main.obj │ ├── server.obj │ ├── skeletonTracking.Build.CppClean.log │ ├── skeletonTracking.log │ ├── skeletonTracking.tlog │ │ ├── CL.command.1.tlog │ │ ├── CL.read.1.tlog │ │ ├── CL.write.1.tlog │ │ ├── link.command.1.tlog │ │ ├── link.read.1.tlog │ │ ├── link.write.1.tlog │ │ └── skeletonTracking.lastbuildstate │ ├── vc140.idb │ └── vc140.pdb │ └── Release │ ├── main.obj │ ├── skeletonTracking.log │ ├── skeletonTracking.tlog │ ├── CL.command.1.tlog │ ├── CL.read.1.tlog │ ├── CL.write.1.tlog │ ├── link.command.1.tlog │ ├── link.read.1.tlog │ ├── link.write.1.tlog │ └── skeletonTracking.lastbuildstate │ └── vc140.pdb └── x64 ├── Debug ├── skeletonTracking.exe ├── skeletonTracking.ilk └── skeletonTracking.pdb └── Release ├── skeletonTracking.iobj ├── skeletonTracking.ipdb └── skeletonTracking.pdb /LICENSE: -------------------------------------------------------------------------------- 1 | THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. 2 | 3 | BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. 4 | 5 | 1. Definitions 6 | 7 | "Adaptation" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered an Adaptation for the purpose of this License. 8 | "Collection" means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(f) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined above) for the purposes of this License. 9 | "Distribute" means to make available to the public the original and copies of the Work through sale or other transfer of ownership. 10 | "Licensor" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License. 11 | "Original Author" means, in the case of a literary or artistic work, the individual, individuals, entity or entities who created the Work or if no individual or entity can be identified, the publisher; and in addition (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in, interpret or otherwise perform literary or artistic works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal entity who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organization that transmits the broadcast. 12 | "Work" means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary, scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or artistic work. 13 | "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. 14 | "Publicly Perform" means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images. 15 | "Reproduce" means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium. 16 | 2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws. 17 | 18 | 3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: 19 | 20 | to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections; and, 21 | to Distribute and Publicly Perform the Work including as incorporated in Collections. 22 | The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats, but otherwise you have no rights to make Adaptations. Subject to 8(f), all rights not expressly granted by Licensor are hereby reserved, including but not limited to the rights set forth in Section 4(d). 23 | 24 | 4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: 25 | 26 | You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required by Section 4(c), as requested. 27 | You may not exercise any of the rights granted to You in Section 3 above in any manner that is primarily intended for or directed toward commercial advantage or private monetary compensation. The exchange of the Work for other copyrighted works by means of digital file-sharing or otherwise shall not be considered to be intended for or directed toward commercial advantage or private monetary compensation, provided there is no payment of any monetary compensation in connection with the exchange of copyrighted works. 28 | If You Distribute, or Publicly Perform the Work or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing entity, journal) for attribution ("Attribution Parties") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work. The credit required by this Section 4(c) may be implemented in any reasonable manner; provided, however, that in the case of a Collection, at a minimum such credit will appear, if a credit for all contributing authors of Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties. 29 | For the avoidance of doubt: 30 | 31 | Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; 32 | Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License if Your exercise of such rights is for a purpose or use which is otherwise than noncommercial as permitted under Section 4(b) and otherwise waives the right to collect royalties through any statutory or compulsory licensing scheme; and, 33 | Voluntary License Schemes. The Licensor reserves the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License that is for a purpose or use which is otherwise than noncommercial as permitted under Section 4(b). 34 | Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the Original Author's honor or reputation. 35 | 36 | 5. Representations, Warranties and Disclaimer 37 | 38 | UNLESS OTHERWISE MUTUALLY AGREED BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. 39 | 40 | 6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 41 | 42 | 7. Termination 43 | 44 | This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. 45 | Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above. 46 | 47 | 8. Miscellaneous 48 | 49 | Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. 50 | If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. 51 | No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. 52 | This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You. 53 | The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law. 54 | -------------------------------------------------------------------------------- /Paper_Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/Paper_Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors.pdf -------------------------------------------------------------------------------- /Posture_fall_detection_demo.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/Posture_fall_detection_demo.mp4 -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Posture and Fall Detection System Using 3D Motion Sensors 2 | This work presents a supervised learning approach for training a posture detection classifier, and implementing a fall detection system using the posture classification results as inputs with a Microsoft Kinect v2 sensor. The Kinect v2 skeleton tracking provides 3D depth coordinates for 25 body parts. We use these depth coordinates to extract seven features consisting of the height of the subject and six angles between certain body parts. These features are then fed into a fully connected neural network that outputs one of three considered postures for the subject: standing, sitting, or lying down. An average classification rate of over 99.30% for all three postures was achieved on test data consisting of multiple subjects where the subjects were not even facing the Kinect depth camera most of the time and were located in different locations. These results show the feasibility to classify human postures with the proposed setup independently of the location of the subject in the room and orientation to the 3D sensor. 3 | 4 | **SYSTEM DEMO** 5 | Please watch the *Posture_fall_detection_demo.mp4* video to get a sense of the posture and fall detection system. 6 | 7 | **RUN INSTRUCTIONS: (WINDOWS)** 8 | 1- Download the Kinect SDK 2.0 as per the official website https://www.microsoft.com/en-ca/download/details.aspx?id=44561 9 | 2- Download Visual studio 2015 and open the solution *skeletonTracking/skeletonTracking.sln* then run the code. 10 | 3- Run main.py with Python3. 11 | 12 | **EXPLANATION OF TRAINING/TESTING DATA** 13 | The figure below illustrates six of the seven training/testing features for all three postures (standing, sitting, and lying down), named as follows: Left hip angle (1), right hip angle (2), left knee angle (3), right knee angle (4), chest angle(5), and chest-knee angle (6). The seventh feature is the height of the person computed by taking the Y-position of the head and subtracting the lower Y-position value of the right and left foot from it. 14 | ![Alt text](images/kinectSkeletonFeatures.png?raw=true "Visualization of six of the seven features that will be used for posture classification in the Kinect Skeleton.") 15 | 16 | **EXPERIMENTAL SETUP** 17 | Six people of different heights and shapes were asked to participate in the data collection phase, which consisted of four one-minute rounds, where in each round, the subject was allowed to either move or stay in a fixed posture: that is standing for one minutes, sitting for one minutes, and lying down for one minutes. The Kinect V2 sensor has a frame rate of 30 frames per second, thus 1800 frames for each one-minute round per subject per posture were collected which led to about 9000 training frames per posture in total. 18 | 19 | **LINK TO PAPER** 20 | The paper can be read from the *Paper_Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors.pdf* file. 21 | 22 | **LINKS TO OUR LABS** 23 | - http://health-devices.eecs.uottawa.ca/ 24 | - http://carg.site.uottawa.ca/ 25 | 26 | **LINKS TO SIMILAR WORKS** 27 | - https://pdfs.semanticscholar.org/b8ac/6f5f1a3362f83aef7c75b0b75ab09e17a3c1.pdf 28 | - http://journals.sagepub.com/doi/full/10.5772/62163 29 | - https://ieeexplore.ieee.org/document/4373773/?reload=true 30 | - http://download.atlantis-press.com/php/download_paper.php?id=25866362 31 | -------------------------------------------------------------------------------- /common.py: -------------------------------------------------------------------------------- 1 | import sqlite3 2 | import numpy as np 3 | 4 | class common(object): 5 | 6 | def connect(self): 7 | conn = sqlite3.connect("data/fallDetection.db", isolation_level=None, check_same_thread=False) 8 | c = conn.cursor() 9 | return c, conn 10 | 11 | def disconnect(self, c, conn): 12 | c.close() 13 | conn.close() 14 | return 15 | 16 | # Copies training and testing data from the files to the database 17 | def setUpTrainingTestingDatabase(self): 18 | c, conn = common.connect(self) 19 | c.execute('CREATE TABLE IF NOT EXISTS standing_training(height real, leftHipAngle real, rightHipAngle real, leftKneeAngle real, RightKneeAngle real, chestAngle real, chestKneeAngle real);') 20 | print('0') 21 | file = open('data/files/joints_training_data_standing.txt','r')#joints_testing_data_standing.txt','r') 22 | inp = file.read().splitlines() 23 | inp = [float(i) for i in inp] 24 | for i in range(int(len(inp)/7)): 25 | data = inp[(i*7):(i*7)+7] 26 | c.execute("INSERT INTO standing_training VALUES(?,?,?,?,?,?,?);",(data[0],data[1],data[2],data[3],data[4],data[5],data[6])) 27 | c.execute('CREATE TABLE IF NOT EXISTS standing_testing(height real, leftHipAngle real, rightHipAngle real, leftKneeAngle real, RightKneeAngle real, chestAngle real, chestKneeAngle real);') 28 | print('1') 29 | file = open('data/files/joints_data_standing_testing.txt','r')#joints_testing_data_standing.txt','r') 30 | inp = file.read().splitlines() 31 | inp = [float(i) for i in inp] 32 | for i in range(int(len(inp)/7)): 33 | data = inp[(i*7):(i*7)+7] 34 | c.execute("INSERT INTO standing_testing VALUES(?,?,?,?,?,?,?);",(data[0],data[1],data[2],data[3],data[4],data[5],data[6])) 35 | c.execute('CREATE TABLE IF NOT EXISTS sitting_training(height real, leftHipAngle real, rightHipAngle real, leftKneeAngle real, RightKneeAngle real, chestAngle real, chestKneeAngle real);') 36 | print('2') 37 | file = open('data/files/joints_training_data_sitting.txt','r') 38 | inp = file.read().splitlines() 39 | inp = [float(i) for i in inp] 40 | for i in range(int(len(inp)/7)): 41 | data = inp[(i*7):(i*7)+7] 42 | c.execute("INSERT INTO sitting_training VALUES(?,?,?,?,?,?,?);",(data[0],data[1],data[2],data[3],data[4],data[5],data[6])) 43 | c.execute('CREATE TABLE IF NOT EXISTS sitting_testing(height real, leftHipAngle real, rightHipAngle real, leftKneeAngle real, RightKneeAngle real, chestAngle real, chestKneeAngle real);') 44 | print('3') 45 | file = open('data/files/joints_testing_data_sitting.txt','r') 46 | inp = file.read().splitlines() 47 | inp = [float(i) for i in inp] 48 | for i in range(int(len(inp)/7)): 49 | data = inp[(i*7):(i*7)+7] 50 | c.execute("INSERT INTO sitting_testing VALUES(?,?,?,?,?,?,?);",(data[0],data[1],data[2],data[3],data[4],data[5],data[6])) 51 | c.execute('CREATE TABLE IF NOT EXISTS laying_training(height real, leftHipAngle real, rightHipAngle real, leftKneeAngle real, RightKneeAngle real, chestAngle real, chestKneeAngle real);') 52 | print('4') 53 | file = open('data/files/joints_training_data_laying_down.txt','r') 54 | inp = file.read().splitlines() 55 | inp = [float(i) for i in inp] 56 | for i in range(int(len(inp)/7)): 57 | data = inp[(i*7):(i*7)+7] 58 | c.execute("INSERT INTO laying_training VALUES(?,?,?,?,?,?,?);",(data[0],data[1],data[2],data[3],data[4],data[5],data[6])) 59 | c.execute('CREATE TABLE IF NOT EXISTS laying_testing(height real, leftHipAngle real, rightHipAngle real, leftKneeAngle real, RightKneeAngle real, chestAngle real, chestKneeAngle real);') 60 | print('5') 61 | file = open('data/files/joints_testing_data_laying_down.txt','r') 62 | inp = file.read().splitlines() 63 | inp = [float(i) for i in inp] 64 | for i in range(int(len(inp)/7)): 65 | data = inp[(i*7):(i*7)+7] 66 | c.execute("INSERT INTO laying_testing VALUES(?,?,?,?,?,?,?);",(data[0],data[1],data[2],data[3],data[4],data[5],data[6])) 67 | c.execute('CREATE TABLE IF NOT EXISTS bending_training(height real, leftHipAngle real, rightHipAngle real, leftKneeAngle real, RightKneeAngle real, chestAngle real, chestKneeAngle real);') 68 | print('6') 69 | file = open('data/files/joints_training_data_bending.txt','r') 70 | inp = file.read().splitlines() 71 | inp = [float(i) for i in inp] 72 | for i in range(int(len(inp)/7)): 73 | data = inp[(i*7):(i*7)+7] 74 | c.execute("INSERT INTO bending_training VALUES(?,?,?,?,?,?,?);",(data[0],data[1],data[2],data[3],data[4],data[5],data[6])) 75 | c.execute('CREATE TABLE IF NOT EXISTS bending_testing(height real, leftHipAngle real, rightHipAngle real, leftKneeAngle real, RightKneeAngle real, chestAngle real, chestKneeAngle real);') 76 | print('7') 77 | file = open('data/files/joints_testing_data_bending.txt','r') 78 | inp = file.read().splitlines() 79 | inp = [float(i) for i in inp] 80 | for i in range(int(len(inp)/7)): 81 | data = inp[(i*7):(i*7)+7] 82 | c.execute("INSERT INTO bending_testing VALUES(?,?,?,?,?,?,?);",(data[0],data[1],data[2],data[3],data[4],data[5],data[6])) 83 | c.execute('CREATE TABLE IF NOT EXISTS realTimeData(height real, leftHipAngle real, rightHipAngle real, leftKneeAngle real, RightKneeAngle real, chestAngle real, chestKneeAngle real, xfoot real, zfoot real);') 84 | print('end..') 85 | c.execute('DELETE FROM realTimeData;') 86 | common.disconnect(self, c, conn) 87 | return 88 | 89 | def getTrainingData(self): 90 | c, conn = common.connect(self) 91 | x_train = [] 92 | y_train = [] 93 | inp = c.execute('SELECT * from standing_training;').fetchall() 94 | for row in inp: 95 | x_temp = np.random.rand(1,7) 96 | y_temp = np.random.rand(1, 4) 97 | x_temp[0] = list(row) 98 | y_temp[0] = [1,0,0,0] 99 | x_train.append(x_temp) 100 | y_train.append(y_temp) 101 | inp = c.execute('SELECT * from sitting_training;').fetchall() 102 | for row in inp: 103 | x_temp = np.random.rand(1,7) 104 | y_temp = np.random.rand(1, 4) 105 | x_temp[0] = list(row) 106 | y_temp[0] = [0,1,0,0] 107 | x_train.append(x_temp) 108 | y_train.append(y_temp) 109 | inp = c.execute('SELECT * from laying_training;').fetchall() 110 | for row in inp: 111 | x_temp = np.random.rand(1,7) 112 | y_temp = np.random.rand(1, 4) 113 | x_temp[0] = list(row) 114 | y_temp[0] = [0,0,1,0] 115 | x_train.append(x_temp) 116 | y_train.append(y_temp) 117 | # inp = c.execute('SELECT * from bending_training;').fetchall() 118 | # for row in inp: 119 | # x_temp = np.random.rand(1,7) 120 | # y_temp = np.random.rand(1, 4) 121 | # x_temp[0] = list(row) 122 | # y_temp[0] = [0,0,0,1] 123 | # x_train.append(x_temp) 124 | # y_train.append(y_temp) 125 | common.disconnect(self, c, conn) 126 | return x_train, y_train 127 | return 128 | 129 | def getTestingData(self): 130 | c, conn = common.connect(self) 131 | x_test = [] 132 | y_test = [] 133 | inp = c.execute('SELECT * from standing_testing;').fetchall() 134 | for row in inp: 135 | x_temp = np.random.rand(1,7) 136 | y_temp = np.random.rand(1, 4) 137 | x_temp[0] = list(row) 138 | y_temp[0] = [1,0,0,0] 139 | x_test.append(x_temp) 140 | y_test.append(y_temp) 141 | inp = c.execute('SELECT * from sitting_testing;').fetchall() 142 | for row in inp: 143 | x_temp = np.random.rand(1,7) 144 | y_temp = np.random.rand(1, 4) 145 | x_temp[0] = list(row) 146 | y_temp[0] = [0,1,0,0] 147 | x_test.append(x_temp) 148 | y_test.append(y_temp) 149 | inp = c.execute('SELECT * from laying_testing;').fetchall() 150 | for row in inp: 151 | x_temp = np.random.rand(1,7) 152 | y_temp = np.random.rand(1, 4) 153 | x_temp[0] = list(row) 154 | y_temp[0] = [0,0,1,0] 155 | x_test.append(x_temp) 156 | y_test.append(y_temp) 157 | # inp = c.execute('SELECT * from bending_testing;').fetchall() 158 | # for row in inp: 159 | # x_temp = np.random.rand(1,7) 160 | # y_temp = np.random.rand(1, 4) 161 | # x_temp[0] = list(row) 162 | # y_temp[0] = [0,0,0,1] 163 | # x_test.append(x_temp) 164 | # y_test.append(y_temp) 165 | common.disconnect(self, c, conn) 166 | return x_test, y_test 167 | 168 | # def getTestingData(): 169 | # x_train = [] 170 | # y_train = [] 171 | # file = open('data/joints_data_standing_testing.txt','r')#joints_testing_data_standing.txt','r') 172 | # inp = file.read().splitlines() 173 | # inp = [float(i) for i in inp] 174 | # for i in range(int(len(inp)/7)): 175 | # x_temp = np.random.rand(1,7) 176 | # y_temp = np.random.rand(1, 4) 177 | # x_temp[0] = inp[(i*7):(i*7)+7] 178 | # y_temp[0] = [1,0,0,0] 179 | # x_train.append(x_temp) 180 | # y_train.append(y_temp) 181 | # file.close() 182 | # file = open('data/joints_testing_data_sitting.txt','r') 183 | # inp = file.read().splitlines() 184 | # inp = [float(i) for i in inp] 185 | # for i in range(int(len(inp)/7)): 186 | # x_temp = np.random.rand(1,7) 187 | # y_temp = np.random.rand(1, 4) 188 | # x_temp[0] = inp[(i*7):(i*7)+7] 189 | # y_temp[0] = [0,1,0,0] 190 | # x_train.append(x_temp) 191 | # y_train.append(y_temp) 192 | # file.close() 193 | # file = open('data/joints_testing_data_laying_down.txt','r') 194 | # inp = file.read().splitlines() 195 | # inp = [float(i) for i in inp] 196 | # for i in range(int(len(inp)/7)): 197 | # x_temp = np.random.rand(1,7) 198 | # y_temp = np.random.rand(1, 4) 199 | # x_temp[0] = inp[(i*7):(i*7)+7] 200 | # y_temp[0] = [0,0,1,0] 201 | # x_train.append(x_temp) 202 | # y_train.append(y_temp) 203 | # file.close() 204 | # # file = open('data/joints_testing_data_bending.txt','r') 205 | # # inp = file.read().splitlines() 206 | # # inp = [float(i) for i in inp] 207 | # # for i in range(int(len(inp)/7)): 208 | # # x_temp = np.random.rand(1,7) 209 | # # y_temp = np.random.rand(1, 4) 210 | # # x_temp[0] = inp[(i*7):(i*7)+7] 211 | # # y_temp[0] = [0,0,0,1] 212 | # # x_train.append(x_temp) 213 | # # y_train.append(y_temp) 214 | # # file.close() 215 | # return x_train, y_train 216 | 217 | #normalize data 218 | #take origin point in data 219 | #look at paper. box strategy 220 | #normalize data again to make the x, y, and z the same height at different depths. 221 | # def getTrainingData(): 222 | # x_train = [] 223 | # y_train = [] 224 | # file = open('data/joints_training_data_standing.txt','r') 225 | # inp = file.read().splitlines() 226 | # inp = [float(i) for i in inp] 227 | # for i in range(int(len(inp)/7)): 228 | # x_temp = np.random.rand(1,7) 229 | # y_temp = np.random.rand(1, 4) 230 | # x_temp[0] = inp[(i*7):(i*7)+7] 231 | # y_temp[0] = [1,0,0,0] 232 | # x_train.append(x_temp) 233 | # y_train.append(y_temp) 234 | # file.close() 235 | # file = open('data/joints_training_data_sitting.txt','r') 236 | # inp = file.read().splitlines() 237 | # inp = [float(i) for i in inp] 238 | # for i in range(int(len(inp)/7)): 239 | # x_temp = np.random.rand(1,7) 240 | # y_temp = np.random.rand(1, 4) 241 | # x_temp[0] = inp[(i*7):(i*7)+7] 242 | # y_temp[0] = [0,1,0,0] 243 | # x_train.append(x_temp) 244 | # y_train.append(y_temp) 245 | # file.close() 246 | # file = open('data/joints_training_data_laying_down.txt','r') 247 | # inp = file.read().splitlines() 248 | # inp = [float(i) for i in inp] 249 | # for i in range(int(len(inp)/7)): 250 | # x_temp = np.random.rand(1,7) 251 | # y_temp = np.random.rand(1, 4) 252 | # x_temp[0] = inp[(i*7):(i*7)+7] 253 | # y_temp[0] = [0,0,1,0] 254 | # x_train.append(x_temp) 255 | # y_train.append(y_temp) 256 | # file.close() 257 | # file = open('data/joints_training_data_bending.txt','r') #bending 258 | # inp = file.read().splitlines() 259 | # inp = [float(i) for i in inp] 260 | # for i in range(int(len(inp)/7)): 261 | # x_temp = np.random.rand(1,7) 262 | # y_temp = np.random.rand(1, 4) 263 | # x_temp[0] = inp[(i*7):(i*7)+7] 264 | # y_temp[0] = [0,0,0,1] 265 | # x_train.append(x_temp) 266 | # y_train.append(y_temp) 267 | # return x_train, y_train 268 | # 269 | # def getTestingData(): 270 | # x_train = [] 271 | # y_train = [] 272 | # file = open('data/joints_testing_standing_data.txt','r') 273 | # inp = file.read().splitlines() 274 | # inp = [float(i) for i in inp] 275 | # for i in range(int(len(inp)/45)): 276 | # x_temp = np.random.rand(1,45) 277 | # y_temp = np.random.rand(1, 4) 278 | # x_temp[0] = inp[(i*45):(i*45)+45] 279 | # y_temp[0] = [1,0,0,0] 280 | # x_train.append(x_temp) 281 | # y_train.append(y_temp) 282 | # file.close() 283 | # file = open('data/joints_testing_sitting_data.txt','r') 284 | # inp = file.read().splitlines() 285 | # inp = [float(i) for i in inp] 286 | # for i in range(int(len(inp)/45)): 287 | # x_temp = np.random.rand(1,45) 288 | # y_temp = np.random.rand(1, 4) 289 | # x_temp[0] = inp[(i*45):(i*45)+45] 290 | # y_temp[0] = [0,1,0,0] 291 | # x_train.append(x_temp) 292 | # y_train.append(y_temp) 293 | # file.close() 294 | # # file = open('data/joints_testing_laying_data.txt','r') 295 | # # inp = file.read().splitlines() 296 | # # inp = [float(i) for i in inp] 297 | # # for i in range(int(len(inp)/45)): 298 | # # x_temp = np.random.rand(1,45) 299 | # # y_temp = np.random.rand(1, 4) 300 | # # x_temp[0] = inp[(i*45):(i*45)+45] 301 | # # y_temp[0] = [0,0,1,0] 302 | # # x_train.append(x_temp) 303 | # # y_train.append(y_temp) 304 | # # file.close() 305 | # file = open('data/joints_testing_others_data.txt','r') 306 | # inp = file.read().splitlines() 307 | # inp = [float(i) for i in inp] 308 | # for i in range(int(len(inp)/7)): 309 | # x_temp = np.random.rand(1,7) 310 | # y_temp = np.random.rand(1, 4) 311 | # x_temp[0] = inp[(i*7):(i*7)+7] 312 | # y_temp[0] = [0,0,0,1] 313 | # x_train.append(x_temp) 314 | # y_train.append(y_temp) 315 | # file.close() 316 | # return x_train, y_train 317 | -------------------------------------------------------------------------------- /data/lyingdown_testing.csv: -------------------------------------------------------------------------------- 1 | height,leftHipAngle,rightHipAngle,leftKneeAngle,RightKneeAngle,chestAngle,chestKneeAngle 2 | 0.254936,79.4465,133.422,139.475,93.8695,139.168,132.198 3 | 0.250654,79.4795,132.854,145.004,93.7315,139.383,132.132 4 | 0.253702,79.4543,132.787,144.931,93.7289,139.191,132.227 5 | 0.253115,79.4184,133.067,144.923,93.7732,139.194,132.274 6 | 0.252948,79.4202,133.079,144.897,93.7764,139.171,132.311 7 | 0.252814,79.4113,133.091,145.105,93.1604,139.168,132.299 8 | 0.25277,79.4069,133.047,139.335,92.9104,139.18,132.239 9 | 0.253864,79.385,132.858,139.625,92.4805,139.219,132.182 10 | 0.248894,79.4198,133.104,139.668,92.7955,139.78,131.68 11 | 0.248945,79.4969,133.552,139.631,92.6551,139.772,131.653 12 | 0.249876,79.3569,132.924,139.683,92.661,139.644,131.737 13 | 0.248419,79.3521,132.898,139.731,93.0848,139.34,132.221 14 | 0.248327,79.3917,132.738,139.875,93.5302,139.267,132.369 15 | 0.248699,79.4274,132.945,139.766,95.0938,139.239,132.318 16 | 0.247105,79.4149,132.666,139.552,95.9935,139.358,132.179 17 | 0.247544,79.4105,132.623,139.398,96.8028,139.344,132.186 18 | 0.247126,79.3945,132.691,139.218,97.7094,139.126,132.589 19 | 0.248628,79.397,132.405,138.658,99.0668,139.124,132.626 20 | 0.250115,79.4268,133.179,138.751,99.5289,139.095,132.548 21 | 0.250755,78.8216,130.469,138.912,99.8192,139.073,132.591 22 | 0.249839,78.8617,130.75,139.192,99.9376,139.087,132.608 23 | 0.24977,78.8908,130.835,137.717,97.4004,139.088,132.587 24 | 0.248358,79.1488,131.973,140.794,97.4281,139.085,132.581 25 | 0.247881,79.175,131.714,149.486,97.3531,139.079,132.655 26 | 0.247404,79.3957,132.745,143.23,97.4234,139.075,132.614 27 | 0.246463,79.4401,132.323,142.284,97.4996,139.124,132.538 28 | 0.246914,79.4397,132.33,135.34,98.5043,139.142,132.548 29 | 0.247666,79.4467,132.355,144.604,99.9926,139.147,132.574 30 | 0.248873,79.4493,132.446,144.57,101.281,139.097,132.651 31 | 0.250876,79.4542,132.636,136.934,101.45,139.086,132.635 32 | 0.252447,79.4766,132.628,137.115,101.837,138.973,132.893 33 | 0.251341,79.3653,132.83,136.901,101.923,139.572,132.081 34 | 0.253123,79.3752,132.813,136.977,102.02,139.557,132.029 35 | 0.254987,79.3596,132.762,136.975,102.127,139.453,132.094 36 | 0.255446,79.3568,132.734,136.973,102.135,139.427,132.108 37 | 0.256074,79.3618,132.786,136.998,102.127,139.412,132.087 38 | 0.25409,79.3027,132.619,136.753,103.249,139.519,131.887 39 | 0.255242,79.2958,132.422,136.877,102.656,139.517,131.921 40 | 0.256952,79.3021,132.481,136.717,103.059,139.644,131.754 41 | 0.257482,79.3927,133.112,136.678,103.299,139.583,131.79 42 | 0.259108,79.4195,133.264,136.875,103.583,139.458,132.022 43 | 0.260808,79.3998,133.239,136.898,102.476,139.281,132.225 44 | 0.262075,79.3757,132.604,136.988,102.731,139.137,132.511 45 | 0.262596,79.3968,132.951,136.918,102.847,139.12,132.473 46 | 0.263865,79.3544,132.553,137.042,102.765,139.166,132.476 47 | 0.264889,79.353,132.626,136.849,102.762,139.169,132.453 48 | 0.263325,79.2978,132.381,136.588,103.725,138.938,132.788 49 | 0.263851,79.295,132.468,136.274,103.981,138.992,132.686 50 | 0.264676,79.251,132.183,136.201,104.24,138.848,132.906 51 | 0.264376,79.2184,130.499,136.004,107.114,138.851,132.552 52 | 0.264456,79.2763,129.318,135.857,99.6022,138.922,132.753 53 | 0.266178,79.2248,130.085,135.74,106.426,138.933,132.496 54 | 0.219676,79.2236,142.708,135.625,151.516,138.949,132.593 55 | 0.219193,73.2704,143.906,140.204,153.389,138.757,137.878 56 | 0.275983,73.3287,132.26,139.967,144.877,138.806,137.947 57 | 0.269036,69.9184,125.825,138.051,158.981,139.29,138.965 58 | 0.268234,69.5973,127.147,137.894,159.305,139.686,137.389 59 | 0.267913,69.2207,126.705,137.871,159.423,139.765,136.951 60 | 0.267833,68.6885,126.266,137.552,159.565,139.786,136.706 61 | 0.267537,68.7343,126.055,137.514,159.647,139.786,136.586 62 | 0.268077,68.7055,126.367,137.417,159.676,140.007,135.978 63 | 0.263552,68.7808,111.991,137.689,123.374,140.008,130.053 64 | 0.278927,71.2959,109,140.055,124.529,139.929,130.087 65 | 0.260188,74.9654,110.093,132.227,124.143,139.997,130.217 66 | 0.267085,75.7183,110.051,132.251,108.467,140.02,130.487 67 | 0.267193,76.4542,109.949,132.324,108.174,140.02,130.804 68 | 0.267045,76.9246,109.97,132.373,108.42,140.046,130.868 69 | 0.266295,77.3484,109.991,132.392,108.622,139.689,131.528 70 | 0.265258,77.9201,109.808,132.659,108.745,139.788,131.529 71 | 0.264962,77.5909,109.87,132.524,106.639,139.855,131.243 72 | 0.264918,77.4855,110.265,132.43,105.962,139.885,130.995 73 | 0.264844,77.3673,110.088,132.342,105.466,139.878,130.929 74 | 0.266375,84.4619,116.984,137.115,113.95,138.631,140.452 75 | 0.275753,86.2268,106.389,137.806,115.425,136.086,150.006 76 | 0.261104,75.1946,102.742,132.686,134.709,138.087,148.25 77 | 0.261431,73.318,111.038,133.645,120.265,138.376,149.252 78 | 0.265261,74.1072,112.701,136.346,107.719,138.389,137.827 79 | 0.265235,79.8357,103.945,128.926,109.488,138.794,135.539 80 | 0.26491,79.8683,107.816,129.411,108.128,138.632,137.69 81 | 0.265012,81.5777,105.228,128.263,109.011,138.646,135.586 82 | 0.264623,79.3685,107.017,136.062,108.203,138.567,136.896 83 | 0.264837,81.4627,104.724,128.716,109.088,138.71,135.633 84 | 0.263904,78.5699,105.002,131.093,107.051,138.615,137.308 85 | 0.264087,83.1867,107.788,128.725,108.683,138.787,135.149 86 | 0.263708,79.3948,108.215,124.051,106.583,138.564,133.519 87 | 0.263638,82.8173,109.593,117.021,107.319,138.826,131.657 88 | 0.263325,82.4226,108.306,121.667,106.122,138.949,131.283 89 | 0.263066,82.5058,107.762,121.602,106.217,138.992,131.34 90 | 0.263087,82.8543,107.612,121.334,100.544,138.885,131.571 91 | 0.262737,77.1321,103.387,123.933,100.421,138.76,133.869 92 | 0.262969,83.6395,107.132,132.705,104.045,138.87,136.95 93 | 0.262758,78.2596,102.187,134.257,102.235,138.556,138.686 94 | 0.262969,82.9007,106.754,132.754,109.201,139.002,136.961 95 | 0.264091,78.8298,106.059,123.422,107.376,139.027,132.502 96 | 0.26448,82.6423,104.996,131.092,106.905,139.062,136.133 97 | 0.264412,80.7613,105.329,122.992,105.613,138.476,133.91 98 | 0.264207,79.506,107.597,134.224,104.746,138.457,139.439 99 | 0.264194,78.8138,107.485,134.553,104.402,138.495,139.568 100 | 0.264507,78.0734,107.319,140.771,103.802,138.346,140.098 101 | 0.264258,77.7723,105.704,141.015,106.862,138.317,140.291 102 | 0.264373,77.2668,106.77,141.252,108.521,138.061,140.686 103 | 0.263534,77.111,106.042,141.35,106.798,138.055,140.544 104 | 0.263375,76.9247,106.134,141.39,106.285,138.061,140.496 105 | 0.26167,76.5963,105.984,154.102,105.476,138.054,140.387 106 | 0.259101,76.4611,105.868,154.246,104.952,138.106,140.429 107 | 0.258451,75.8707,105.768,154.453,105.112,138.195,140.166 108 | 0.259705,74.531,108.633,133.633,99.839,138.203,143.518 109 | 0.25762,74.3398,109.12,154.016,100.79,138.217,138.906 110 | 0.254678,78.9109,109.688,145.328,102.54,138.607,137.13 111 | 0.254067,75.5524,114.314,150.755,100.728,138.455,139.953 112 | 0.256718,74.1216,114.173,151.162,103.52,138.459,133.955 113 | 0.255963,76.6178,113.322,146.911,102.572,138.291,132.417 114 | 0.25571,76.6944,112.609,145.844,103.079,138.391,131.543 115 | 0.255274,77.2706,112.87,145.481,103.547,138.604,131.003 116 | 0.255099,77.839,113.342,145.506,104.125,138.69,130.884 117 | 0.25512,78.191,113.577,145.474,104.538,138.854,130.591 118 | 0.25581,78.2713,114.26,145.525,104.807,138.857,130.459 119 | 0.256005,78.3231,114.03,145.515,105.097,138.926,130.421 120 | 0.255846,79.3749,113.981,132.691,105.195,138.944,123.839 121 | 0.256434,79.0664,112.72,132.56,101.385,139.048,124.324 122 | 0.25553,78.8555,112.408,132.547,103.149,139.054,124.062 123 | 0.254653,79.4755,118.02,112.865,106.068,139.074,125.357 124 | 0.25913,79.378,120.952,115.434,107.274,139.042,127.521 125 | 0.254032,82.7159,127.627,121.594,106.148,139.801,125.601 126 | 0.256553,82.5997,129.508,124.574,107.092,140.232,125.649 127 | 0.257743,82.0198,128.53,123.879,107.539,140.261,125.021 128 | 0.253069,81.8248,128.908,123.565,107.753,141.139,123.982 129 | 0.256253,81.7452,128.943,123.444,107.959,140.914,124.114 130 | 0.256711,81.6721,128.804,123.419,107.926,140.935,124.01 131 | 0.257903,81.5175,127.737,123.018,107.819,140.878,123.782 132 | 0.258716,81.5081,128.215,123.603,108.094,140.816,124.062 133 | 0.259083,81.4633,127.998,123.937,108.13,140.798,124.18 134 | 0.260575,81.4771,127.966,124.409,108.296,140.748,124.429 135 | 0.260535,81.4709,128.294,124.578,107.642,140.743,124.511 136 | 0.260507,81.5202,128.685,124.515,108.021,140.719,124.42 137 | 0.260388,81.502,128.928,124.167,108.047,140.647,124.19 138 | 0.260289,81.432,127.917,123.8,107.891,140.611,124.031 139 | 0.260012,81.4436,128.74,124.256,108.235,140.639,124.264 140 | 0.259952,81.472,128.878,124.349,108.328,140.657,124.323 141 | 0.260026,81.46,128.867,124.146,108.292,140.576,124.26 142 | 0.259577,81.4487,128.609,123.953,108.196,140.609,124.102 143 | 0.259479,81.4223,128.415,123.805,108.139,140.581,124.02 144 | 0.257269,81.4245,128.46,123.816,108.211,141.08,123.518 145 | 0.257278,81.3453,127.582,123.31,107.992,141.023,123.29 146 | 0.257833,81.297,127.157,123.288,107.957,140.986,123.325 147 | 0.258399,81.2388,126.748,123.203,107.886,140.923,123.324 148 | 0.26041,81.2985,128.603,124.157,108.373,140.879,123.794 149 | 0.258299,81.3446,128.674,123.824,108.284,141.109,123.409 150 | 0.258538,81.3673,128.76,123.8,108.258,141.09,123.399 151 | 0.259003,81.3562,128.636,123.564,108.216,141.049,123.294 152 | 0.26214,81.3507,128.15,123.498,108.645,140.787,123.726 153 | 0.263106,81.3509,127.931,123.526,109.354,140.771,123.845 154 | 0.262452,81.318,128.03,122.652,109.497,141.004,123.285 155 | 0.263047,81.2659,127.468,122.505,109.639,140.916,123.374 156 | 0.264768,81.2615,127.427,121.818,109.779,140.748,123.497 157 | 0.265996,81.2724,127.23,121.903,109.932,140.612,123.688 158 | 0.266312,81.278,127.238,121.874,110.149,140.565,123.787 159 | 0.268428,81.3088,127.574,122.035,110.212,140.553,123.846 160 | 0.268521,81.2064,126.842,121.901,110.246,140.557,123.926 161 | 0.269188,81.4341,127.244,123.362,110.781,140.641,124.943 162 | 0.260334,81.5259,127.462,123.242,110.833,142.067,124.363 163 | 0.260476,81.94,128.752,123.224,110.975,142.192,124.321 164 | 0.279421,81.9295,128.145,123.092,121.897,142.127,124.468 165 | 0.259793,82.3561,131.349,123.329,111.859,142.108,124.82 166 | 0.260424,82.3859,132.054,123.373,111.61,142.127,124.94 167 | 0.26061,82.3195,133.089,124,111.625,142.149,125.102 168 | 0.259444,82.3382,133.691,123.821,110.996,142.182,125.326 169 | 0.259025,82.3045,134.438,123.871,111.264,142.192,125.432 170 | 0.259438,82.3222,134.704,123.854,110.417,142.24,125.625 171 | 0.258439,82.3267,134.764,123.852,109.812,142.25,125.877 172 | 0.258331,81.2189,128.548,123.715,109.165,142.295,125.915 173 | 0.258672,81.2655,128.687,123.443,108.37,142.233,126.042 174 | 0.25852,81.7571,136.949,124.285,109.372,142.17,126.314 175 | 0.258649,81.3961,134.203,124.116,109.081,142.137,126.402 176 | 0.258408,82.0627,128.085,120.163,107.483,141.75,125.115 177 | 0.257773,82.0975,129.267,119.552,107.361,141.504,124.856 178 | 0.257298,81.9915,129.325,119.381,107.33,141.396,124.693 179 | 0.257201,82.1061,130.094,119.392,107.292,141.355,124.649 180 | 0.256731,82.1327,130.588,119.412,107.498,141.247,124.693 181 | 0.256874,81.1092,137.461,123.808,109.042,141.589,126.429 182 | 0.257175,81.3126,139.688,124.294,109.367,141.672,126.803 183 | 0.257642,81.8823,139.16,123.124,109.095,141.546,126.447 184 | 0.257879,81.8184,141.385,124.137,109.527,141.71,126.934 185 | 0.258681,81.8024,143.918,125.68,110.172,141.856,127.686 186 | 0.258679,82.8993,143.45,122.777,109.091,141.693,125.869 187 | 0.259073,82.5718,134.615,121.077,106.898,141.624,125.537 188 | 0.259651,82.3596,132.812,121.026,107.256,141.506,125.228 189 | 0.259595,82.2563,131.21,120.816,107.214,141.452,125.011 190 | 0.259447,81.6549,126.173,120.285,106.655,141.378,124.86 191 | 0.274037,81.3335,124.213,120.029,118.17,141.329,122.878 192 | 0.273716,80.4497,121.616,118.029,116.562,140.932,117.621 193 | 0.273596,80.3809,121.406,117.206,116.529,140.779,120.038 194 | 0.272618,79.8771,103.992,110.917,115.37,138.981,119.596 195 | 0.271023,85.4495,108.84,104.057,115.336,138.986,115.997 196 | 0.266848,82.1976,109.808,120.141,114.652,138.978,122.097 197 | 0.267735,83.1039,110.982,104.287,115.006,138.953,116.112 198 | 0.267706,82.4789,111.548,104.272,114.71,139.094,116.073 199 | 0.266802,82.4273,114.909,104.813,114.936,139.05,116.325 200 | 0.26617,81.689,114.19,105.923,114.602,139.084,116.993 201 | 0.266279,82.067,117.101,105.942,114.697,139.206,116.918 202 | 0.266183,81.9271,118.513,106.24,114.907,139.068,117.2 203 | 0.265083,79.5194,118.832,100.746,110.779,138.101,111.361 204 | 0.264387,79.5678,118.007,100.692,105.15,138.08,116.729 205 | 0.264697,78.7818,118.074,115.276,104.897,138.124,120.661 206 | 0.264582,81.7832,118.784,96.5523,104.945,138.133,113.674 207 | 0.264813,80.2441,119.401,99.4601,105.045,138.089,114.97 208 | 0.265059,82.1384,132.7,97.7918,106.955,137.299,115.597 209 | 0.26531,82.1292,131.175,98.0666,106.596,137.333,115.657 210 | 0.265047,82.0606,130.861,98.1484,106.541,137.334,115.68 211 | 0.265155,81.6218,125.347,99.0036,106.044,137.339,115.997 212 | 0.264581,81.8156,125.674,110.944,105.451,137.51,118.795 213 | 0.26524,82.1255,125.842,96.1953,105.465,137.58,112.009 214 | 0.264952,73.313,146.015,90.3976,101.562,138.059,110.64 215 | 0.262417,69.25,111.873,99.4974,98.6427,138.57,115.594 216 | 0.259757,78.1268,109.522,92.7417,98.289,138.497,111.676 217 | 0.260478,74.7376,110.744,89.6338,100.254,139.319,108.956 218 | 0.259152,70.834,105.875,88.1213,97.6212,138.796,107.161 219 | 0.258769,77.5814,108.656,88.325,101.745,139.528,107.064 220 | 0.254852,83.8855,118.24,90.2291,100.568,139.382,108.84 221 | 0.255595,65.8198,111.345,88.9016,100.736,139.545,108.61 222 | 0.251088,72.2909,112.449,99.73,97.0486,139.609,113.168 223 | 0.253356,69.4753,109.747,94.8617,99.4711,139.614,112.267 224 | 0.257519,71.1938,110.293,93.4763,98.1483,139.925,111.679 225 | 0.247737,72.8224,111.118,100.087,97.4497,140.1,111.255 226 | 0.248042,72.6864,110.971,99.5095,99.2688,140.196,110.836 227 | 0.247323,73.1077,111.274,99.4821,98.3815,140.215,110.721 228 | 0.247638,72.5647,111.05,99.8541,97.6955,140.024,110.852 229 | 0.247957,73.0305,111.414,99.8844,100.35,140.079,110.691 230 | 0.251995,73.2367,111.687,100.317,99.6975,139.416,111.22 231 | 0.248428,73.1227,111.487,100.324,100.169,139.86,110.884 232 | 0.248644,73.1929,111.484,100.527,100.71,139.919,110.796 233 | 0.25878,83.5794,130.72,101.122,103.962,139.213,111.796 234 | 0.256328,81.2482,121.764,96.1396,103.121,138.98,114.326 235 | 0.267084,78.4464,139.557,93.7892,104.991,137.833,113.968 236 | 0.268415,78.5783,138.769,111.99,105.603,137.896,114.112 237 | 0.269895,79.5788,136.634,95.5955,106.225,137.751,114.862 238 | 0.269517,79.6991,136.737,106.833,106.223,139.023,113.809 239 | 0.271226,79.8946,136.581,100.363,106.391,138.71,113.918 240 | 0.272989,79.9921,136.501,105.438,106.436,138.509,113.973 241 | 0.273368,80.0983,136.531,106.043,106.559,138.493,113.992 242 | 0.274052,80.0499,135.8,106.57,106.621,138.506,114.068 243 | 0.274635,80.1172,136.195,106.67,106.763,138.463,114.096 244 | 0.263623,79.9884,135.328,106.681,105.943,140.734,113.247 245 | 0.263859,79.8489,132.917,105.056,105.359,140.715,113.107 246 | 0.264147,80.603,133.978,103.631,105.166,140.248,112.013 247 | 0.272624,73.8057,135.394,103.095,107.662,138.263,114.291 248 | 0.271441,83.0654,132.306,94.5928,107.166,138.848,114.635 249 | 0.266589,82.5048,135.599,105.911,111.255,137.978,110.897 250 | 0.271299,80.7423,130.571,96.5124,111.201,138.319,111.88 251 | 0.271287,79.9575,127.24,93.383,111.466,140.647,114.308 252 | 0.257755,79.6304,131.884,110.376,112.24,140.948,113.516 253 | 0.273463,80.4486,132.392,114.066,115.388,138.9,117.739 254 | 0.25635,80.1094,131.971,113.938,114.688,142.21,116.289 255 | 0.257065,80.2424,132.902,112.691,114.494,142.129,115.798 256 | 0.257682,79.1897,129.878,108.895,110.482,140.882,111.18 257 | 0.258614,79.0732,129.151,108.597,110.084,140.758,110.655 258 | 0.263638,79.2674,130.913,97.4759,111.651,141.189,112.417 259 | 0.261127,75.9764,137.872,90.3779,113.729,141.74,108.596 260 | 0.259845,77.6963,135.363,94.3727,113.919,141.737,108.759 261 | 0.259718,77.3552,133.981,92.8743,111.572,140.942,106.461 262 | 0.270503,77.703,134.647,93.5189,111.748,138.606,106.963 263 | 0.259749,77.4127,153.15,92.1452,111.92,140.344,105.144 264 | 0.271975,74.8916,149.238,94.5836,113.511,138.647,105.087 265 | 0.342361,75.4622,146.523,42.2295,114.333,138.654,106.084 266 | 0.27329,74.5645,145.66,36.0969,114.491,138.625,106.955 267 | 0.271944,76.2717,142.429,35.8197,114.113,138.536,107.293 268 | 0.27149,76.696,140.514,35.761,113.862,138.495,107.229 269 | 0.269431,76.7262,135.657,34.7188,113.56,138.387,108.38 270 | 0.296878,77.4219,131.536,35.4293,113.379,138.384,108.078 271 | 0.28936,78.7849,130.68,39.6096,113.394,141.538,107.751 272 | 0.307835,78.6265,132.899,36.6114,113.144,143.133,107.302 273 | 0.353077,78.5462,133.933,40.7442,112.94,143.016,107.319 274 | 0.280701,77.9732,135.26,33.7453,112.935,142.811,107.805 275 | 0.303287,78.0685,132.632,35.3996,112.637,142.741,107.952 276 | 0.302496,78.6559,134.338,34.8921,112.702,142.712,107.989 277 | 0.33486,79.9121,139.815,37.862,113.105,142.665,107.997 278 | 0.261206,73.3473,144.33,30.0855,114.523,142.291,110.836 279 | 0.326862,79.2822,142.312,34.1324,114.111,142.02,113.812 280 | 0.282232,78.99,141.931,31.0928,114.09,142.01,112.816 281 | 0.307831,79.8963,141.64,33.318,114.137,141.918,109.75 282 | 0.285353,79.1884,141.789,30.8771,114.108,141.877,114.342 283 | 0.256269,79.2311,139.653,31.7348,113.937,141.87,114.211 284 | 0.259955,79.9649,140.314,30.6418,114.031,141.813,114.319 285 | 0.267482,80.1659,140.813,29.9212,114.133,141.784,114.397 286 | 0.268257,80.2957,142.279,29.4133,114.529,141.7,114.71 287 | 0.268196,80.0842,133.42,29.9518,114.209,141.777,114.815 288 | 0.27378,81.1249,129.603,28.8651,113.786,141.086,122.574 289 | 0.280975,81.378,132.446,29.4331,113.852,139.651,122.826 290 | 0.278482,81.4465,141.253,31.2782,116.252,139.114,119.171 291 | 0.286683,81.3368,140.967,31.3133,115.688,138.656,118.8 292 | 0.269812,81.3863,142.79,31.6166,113.43,140.805,116.547 293 | 0.272212,81.2806,141.928,31.7347,110.136,140.7,116.194 294 | 0.324179,81.347,142.002,31.9996,110.182,142.709,111.481 295 | 0.345648,81.4902,141.516,31.7854,110.527,142.625,111.559 296 | 0.348574,81.5453,141.106,14.7073,113.283,142.451,111.712 297 | 0.414758,81.6227,140.402,39.9749,113.169,142.317,111.991 298 | 0.406711,81.6035,140.224,40.0642,113.213,142.19,112.522 299 | 0.409704,81.4857,138.95,40.3919,113.621,141.912,112.89 300 | 0.412847,81.5678,140.252,40.3709,114.501,142.382,113.33 301 | 0.414425,81.5867,140.121,40.4102,114.592,142.457,113.311 302 | 0.422996,81.8103,139.282,40.7712,115.379,141.531,114.858 303 | 0.418435,81.8191,139.272,35.1497,115.507,141.892,114.823 304 | 0.414296,81.8346,138.799,34.6692,115.34,142.059,114.738 305 | 0.411538,81.7648,137.613,33.9077,114.875,142.072,114.298 306 | 0.419471,81.8443,137.311,34.3631,115.576,141.467,115.171 307 | 0.419289,81.8126,136.149,34.3298,115.161,142.636,113.902 308 | 0.422307,81.8272,135.616,33.1341,115.627,141.529,115.233 309 | 0.416321,81.8051,135.76,33.4165,115.539,142.794,114.242 310 | 0.356547,81.5236,135.303,31.2326,114.308,142.314,116.708 311 | 0.320721,81.2064,135.392,11.2814,112.908,141.997,114.494 312 | 0.358504,81.1548,135.648,33.9224,112.652,141.975,114.099 313 | 0.357485,81.1306,135.793,41.1912,112.526,141.931,113.896 314 | 0.357542,81.0523,135.692,41.1469,112.297,141.916,113.459 315 | 0.357557,80.9917,135.468,41.1284,111.835,141.879,113.175 316 | 0.357754,80.9938,135.546,41.1629,112.141,141.863,113.131 317 | 0.356898,81.0134,135.917,41.0954,111.671,141.924,112.984 318 | 0.356926,81.0107,135.934,41.0872,111.43,141.913,112.939 319 | 0.400701,81.146,136.218,41.2599,112.234,141.049,111.977 320 | 0.357996,81.0807,135.87,41.2455,112.131,142.076,112.91 321 | 0.357644,81.0847,136.481,33.189,111.895,142.106,112.621 322 | 0.362386,80.9837,136.74,34.8457,111.419,142.553,111.479 323 | 0.406494,81.1021,136.849,33.4429,112.204,141.54,110.521 324 | 0.40035,81.1292,137.083,39.6374,112.13,142.968,109.923 325 | 0.341746,81.4125,138.821,31.5942,113.872,141.939,111.602 326 | 0.334811,81.4136,138.763,31.3114,113.749,142.048,111.777 327 | 0.315396,81.3571,138.633,32.1913,112.732,143.503,110.999 328 | 0.432545,81.3707,137.966,39.796,112.407,142.017,111.44 329 | 0.32038,81.2147,137.482,31.9256,111.479,143.727,110.303 330 | 0.343912,81.3179,137.119,31.9448,112.026,141.721,111.129 331 | 0.31337,81.302,137.789,32.0706,111.814,144.099,110.298 332 | 0.312331,81.3327,138.345,32.2985,111.719,144.03,110.07 333 | 0.402472,81.3872,139.081,37.7878,111.7,143.989,109.909 334 | 0.306345,81.3659,139.345,32.4445,111.001,143.967,109.809 335 | 0.312315,81.3191,139.251,16.7495,111.178,143.941,109.722 336 | 0.305895,81.3407,139.729,32.2551,111.203,143.92,109.623 337 | 0.305176,81.3073,139.712,32.3675,111.224,143.878,109.488 338 | 0.304777,81.2628,139.856,32.4473,111.112,143.809,109.27 339 | 0.392205,81.2518,139.824,38.5705,111.111,143.762,109.378 340 | 0.274881,81.1187,139.574,32.8831,110.609,144.148,109.905 341 | 0.366828,80.9912,139.141,37.2794,110.005,143.842,109.097 342 | 0.341415,80.9682,138.757,37.1089,110.206,143.588,109.415 343 | 0.359789,80.926,135.813,37.4438,110.696,142.207,112.306 344 | 0.360294,81.011,135.851,37.6622,111.023,142.176,112.821 345 | 0.342463,80.9919,135.942,37.5916,110.879,142.906,113.006 346 | 0.341113,80.942,135.366,37.6342,110.789,142.83,112.944 347 | 0.325118,80.8254,134.952,37.2034,109.989,145.065,110.715 348 | 0.355892,75.5323,136.489,33.1056,107.52,141.68,115.327 349 | 0.356227,81.2225,130.536,44.6351,107.073,142.683,109.587 350 | 0.333002,83.391,130.15,43.7186,106.727,142.698,105.889 351 | 0.328038,84.2739,129.722,43.9422,106.432,142.699,104.912 352 | 0.302655,84.6191,129.201,43.7116,92.3469,139.737,111.299 353 | 0.300453,85.0689,120.453,44.0238,97.297,140.473,114.294 354 | 0.240185,83.722,128.235,97.7329,98.9155,143.494,106.054 355 | 0.249875,83.689,128.795,94.5013,99.1453,143.144,106.66 356 | 0.255067,83.7801,129.223,95.2905,99.0264,142.738,107.327 357 | 0.254211,84.5729,129.371,92.9909,100.936,142.639,106.405 358 | 0.255326,85.3613,129.712,91.8557,100.332,142.584,106.023 359 | 0.328484,86.2392,138.082,45.2939,112.038,142.263,102.26 360 | 0.292002,83.4405,136.324,46.3084,113.102,141.952,109.443 361 | 0.325735,84.7826,135.569,42.8491,113.792,141.691,109.827 362 | 0.321747,81.4844,106.387,38.3489,92.5554,136.391,138.054 363 | 0.321969,72.5784,128.968,31.436,105.913,138.084,122.301 364 | 0.367394,90.7967,120.428,49.5619,100.955,139.538,127.279 365 | 0.307252,88.6393,122.261,47.0023,101.214,139.719,123.745 366 | 0.354842,83.0045,108.532,42.1583,66.78,138.442,145.291 367 | 0.349265,83.596,108.309,40.326,67.8709,138.482,143.752 368 | 0.348063,84.1275,108.613,40.0236,67.9514,138.521,143.537 369 | 0.347531,84.3616,108.446,39.9534,68.1464,138.517,143.531 370 | 0.347872,84.3883,108.278,39.9941,68.0142,138.525,143.622 371 | 0.349575,84.2591,108.195,41.098,67.9434,138.544,144.78 372 | 0.349345,84.3767,108.172,40.864,68.2733,138.543,144.627 373 | 0.381737,84.8137,108.53,41.2164,69.2562,138.135,142.841 374 | 0.377688,85.1059,114.495,40.1112,115.1,138.203,137.302 375 | 0.356235,85.3089,114.22,39.8613,114.736,138.504,138.542 376 | 0.35508,85.3661,113.997,39.9332,114.49,138.552,138.694 377 | 0.354181,85.3832,113.993,39.9467,114.732,138.588,138.806 378 | 0.355625,85.238,113.652,41.6814,112.969,138.563,140.882 379 | -------------------------------------------------------------------------------- /data/sitting_testing.csv: -------------------------------------------------------------------------------- 1 | height,leftHipAngle,rightHipAngle,leftKneeAngle,RightKneeAngle,chestAngle,chestKneeAngle 2 | 0.955284,122.368,130.8,116.529,124.706,179.132,101.453 3 | 0.952678,122.338,130.905,117.259,125.025,178.68,101.741 4 | 0.988243,121.247,131.556,117.763,123.94,178.301,101.78 5 | 0.98464,119.346,131.758,118.907,123.843,178.243,101.782 6 | 0.97566,118.791,131.869,119.591,124.092,178.031,101.996 7 | 0.976264,118.835,131.664,120.22,124.153,177.727,102.317 8 | 0.976196,118.932,131.439,120.411,124.44,177.407,102.624 9 | 0.977279,119.048,131.197,120.537,124.582,177.203,102.812 10 | 0.977512,119.263,130.752,120.715,128.284,177.114,102.925 11 | 0.977694,119.62,130.109,120.804,128.416,176.997,103.011 12 | 0.976656,119.927,129.406,120.75,128.498,177.041,102.906 13 | 0.971342,119.905,129.282,122.042,128.332,177.076,102.807 14 | 0.980054,119.938,129.01,119.001,128.39,177.034,102.743 15 | 0.981197,120.079,128.513,118.09,128.479,177.159,102.409 16 | 0.976481,120.107,128.297,120.142,128.701,177.214,102.25 17 | 0.974901,120.086,128.221,120.603,128.773,177.292,102.051 18 | 0.974236,120.431,128.226,120.515,128.799,177.297,101.901 19 | 0.973497,122.766,128.044,119.919,128.233,177.172,101.175 20 | 0.969112,122.629,128.042,121.645,128.264,177.205,101.243 21 | 0.961347,123.312,127.986,124.053,128.32,177.148,101.167 22 | 0.955607,122.691,128.062,125.564,129.754,177.221,101.104 23 | 0.94167,122.023,128.048,128.492,130.972,177.305,101.021 24 | 0.926877,121.789,128.08,130.344,131.197,177.348,100.828 25 | 0.922522,121.32,127.841,130.826,132.2,177.34,100.875 26 | 0.92153,120.677,127.912,130.967,132.516,177.358,100.964 27 | 0.921221,120.448,128.188,130.974,132.626,177.305,101.003 28 | 0.921323,120.364,128.099,130.984,129.267,177.358,101.015 29 | 0.921648,120.251,128.255,131.062,132.094,177.364,101.06 30 | 0.921488,119.99,128.427,131.175,132.133,177.441,100.989 31 | 0.921561,119.847,128.673,131.398,132.114,177.601,100.826 32 | 0.918579,119.85,128.677,131.547,128.038,177.788,100.597 33 | 0.914492,119.773,128.779,131.837,128.541,177.876,100.566 34 | 0.912663,119.699,128.898,131.999,128.784,177.961,100.495 35 | 0.911931,119.669,128.952,131.899,131.96,178.005,100.505 36 | 0.910285,119.68,128.942,131.806,131.778,178.067,100.441 37 | 0.909944,119.647,128.919,131.747,131.677,178.034,100.559 38 | 0.909639,119.547,129.012,131.804,126.778,177.91,100.797 39 | 0.909338,119.444,129.148,131.943,129.13,177.722,101.123 40 | 0.909405,119.221,129.666,132.122,129.378,177.455,101.498 41 | 0.909366,119.187,129.761,132.294,127.543,177.217,101.836 42 | 0.906528,119.114,129.804,132.682,132.786,177.069,102.06 43 | 0.900811,119.021,129.925,132.603,132.729,176.937,102.118 44 | 0.895135,119.025,130.072,132.477,132.72,176.836,102.254 45 | 0.888984,118.631,130.222,132.463,132.633,176.902,102.284 46 | 0.884542,118.185,130.366,132.289,132.63,177.043,102.252 47 | 0.88573,118.341,130.304,131.566,132.455,177.143,102.193 48 | 0.888687,118.32,130.229,130.75,132.01,177.261,102.12 49 | 0.895132,118.257,130.201,129.501,130.671,177.398,102.032 50 | 0.91092,118.714,130.232,126.814,123.356,177.659,101.756 51 | 0.91567,119.101,130.302,126.2,122.369,177.89,101.473 52 | 0.919353,119.856,130.254,125.443,122.962,178.144,101.149 53 | 0.921489,120.335,130.268,124.884,122.89,178.26,100.976 54 | 0.922198,120.653,130.214,124.531,122.281,178.361,100.845 55 | 0.927371,121.009,130.097,123.924,116.569,178.36,100.811 56 | 0.923412,121.176,130.027,123.363,118.946,178.328,100.773 57 | 0.925482,121.488,129.88,122.184,117.749,178.204,100.817 58 | 0.928742,121.556,129.962,120.421,117.324,178.126,100.683 59 | 0.929969,121.497,130.207,119.564,118.008,177.987,100.678 60 | 0.929928,121.529,130.405,118.768,118.174,177.859,100.582 61 | 0.931429,121.642,131.014,117.528,117.518,177.548,100.101 62 | 0.931577,121.25,131.555,116.579,114.8,177.297,99.6083 63 | 0.932946,121.08,131.825,115.74,116.299,177.168,99.4555 64 | 0.932277,121.011,131.762,115.533,115.57,177.135,99.1272 65 | 0.930014,120.888,131.858,115.3,114.609,177.191,98.7657 66 | 0.926592,120.662,131.848,115.193,111.924,177.46,98.1497 67 | 0.923624,120.57,131.869,114.67,111.12,177.946,97.4868 68 | 0.921127,120.031,132.171,113.584,110.991,178.793,96.2031 69 | 1.01634,109.19,136.727,107.971,121.847,179.837,95.1042 70 | 1.01291,107.299,138.544,107.525,110.562,179.298,95.0806 71 | 1.00617,107.833,138.458,107.624,111.688,179.234,94.9477 72 | 1.00176,108.766,138.324,107.736,111.225,179.503,94.608 73 | 1.01686,109.893,138.297,107.166,102.015,179.527,94.3701 74 | 1.00641,111.457,137.26,107.884,107.115,179.222,94.2172 75 | 1.00748,113.636,135.319,107.687,106.936,179.252,94.1692 76 | 1.01008,115.589,133.352,108.418,106.846,179.719,94.0637 77 | 1.09505,114.732,138.843,106.925,111.308,179.092,100.761 78 | 1.09746,115.168,138.364,107.241,108.866,178.89,100.657 79 | 1.09329,115.816,137.622,107.127,108.143,178.714,100.43 80 | 1.08801,116.073,136.801,106.976,107.033,178.509,100.324 81 | 1.08398,116.217,136.699,107.109,106.946,178.294,100.434 82 | 1.08216,116.386,136.498,106.991,106.623,178.146,100.46 83 | 1.08044,117.179,135.9,106.833,106.292,178.029,100.319 84 | 1.08054,118.28,135.316,106.069,106.447,177.958,100.289 85 | 1.08091,120.511,134.501,105.742,106.21,177.786,100.278 86 | 1.08129,122.57,133.67,105.552,106.555,177.628,100.37 87 | 1.08245,123.37,133.04,105.507,106.982,177.537,100.479 88 | 1.07375,125.155,129.071,104.582,111.83,179.503,99.9155 89 | 1.07063,124.41,128.851,104.372,111.033,179.317,99.7924 90 | 1.0647,124.055,128.485,103.354,110.609,177.705,99.475 91 | 1.06654,124.398,128.197,103.793,110.341,177.416,99.379 92 | 1.06971,125.3,127.973,102.793,110.244,177.17,99.3054 93 | 1.07076,126.611,127.466,103.875,110.391,178.186,99.2505 94 | 1.06509,128.079,127.023,103.968,112.003,179.841,99.3243 95 | 1.07219,127.268,125.366,107.429,108.085,178.67,98.1629 96 | 1.07237,126.828,125.983,107.428,107.687,178.649,98.1632 97 | 1.07305,126.596,126.674,107.21,108.365,178.624,98.2058 98 | 1.07489,126.203,127.393,107.115,108.571,178.655,98.3675 99 | 1.07602,126.275,127.442,106.866,109.138,178.898,98.676 100 | 1.07935,125.828,128.149,106.688,108.837,179.03,98.9382 101 | 1.07972,125.433,128.681,106.571,109.288,179.118,99.1734 102 | 1.08134,125.034,129.155,106.469,108.794,179.181,99.2593 103 | 1.08119,124.898,129.2,106.46,109.063,179.016,99.3966 104 | 1.08034,124.692,129.198,106.599,109.542,178.823,99.5095 105 | 1.07729,124.812,128.951,106.719,109.612,178.61,99.5492 106 | 1.07164,124.618,128.295,106.945,109.471,177.879,99.4451 107 | 1.06661,125.033,127.547,107.019,109.335,177.788,99.3924 108 | 1.06276,125.887,126.683,107.066,109.871,177.623,99.2531 109 | 1.06396,125.91,126.201,107.589,109.589,177.593,99.0542 110 | 1.06874,125.624,126.007,107.441,108.802,177.61,98.8662 111 | 1.07151,125.166,126.464,107.71,109.633,177.684,98.7155 112 | 1.07688,124.756,126.424,107.917,110.464,177.819,98.6165 113 | 1.08289,124.16,126.779,108.174,110.715,178.448,98.4118 114 | 1.08756,123.828,127.203,108.34,109.741,179.294,98.4305 115 | 1.11905,122.817,128.75,98.867,98.0119,179.811,97.689 116 | 1.11959,122.485,129.363,103.508,97.3314,179.464,97.6805 117 | 1.12365,122.666,129.589,95.776,96.1572,179.497,98.0122 118 | 1.12364,122.432,130.599,95.9636,95.1484,179.139,98.0134 119 | 1.12361,122.03,131.462,96.2931,94.2119,178.905,98.2237 120 | 1.12335,120.985,132.082,99.9593,93.7812,178.735,98.343 121 | 1.12218,120.383,132.784,102.784,91.0187,178.621,98.5201 122 | 1.12226,120.176,133.365,103.926,90.9094,178.545,98.7444 123 | 1.11966,119.807,134.361,104.887,90.7834,178.745,99.174 124 | 1.11604,119.314,134.881,105.424,91.6852,178.989,99.5165 125 | 1.11399,118.922,135.431,105.775,93.0669,179.088,99.8577 126 | 1.11022,118.606,135.829,106.453,92.9136,178.903,100.131 127 | 1.1145,118.964,135.98,98.9388,92.709,178.775,100.343 128 | 1.1182,119.287,135.403,98.7721,92.4013,178.832,100.476 129 | 1.12226,119.407,135.64,98.9636,93.2289,178.563,99.9947 130 | 1.12499,122.829,133.387,98.9181,87.7311,178.307,99.7913 131 | 1.12457,124.212,132.491,98.7775,90.009,178.279,99.856 132 | 1.1197,124.263,131.948,105.823,90.8492,178.124,99.3986 133 | 1.1134,123.667,131.859,105.101,92.2723,177.957,98.3336 134 | 1.1158,124.009,132.34,96.4106,91.562,177.966,98.2007 135 | 1.11337,124.837,132.256,105.547,95.0584,178.118,98.4119 136 | 1.11129,125.275,132.894,105.369,105.983,178.28,98.298 137 | 1.10853,125.58,133.633,106.265,105.959,178.446,98.029 138 | 1.10153,124.945,134.552,106.437,106.243,178.638,97.5954 139 | 1.09645,123.51,135.628,106.199,106.705,178.839,97.4365 140 | 1.09004,123.482,136.243,105.479,106.773,179.013,97.225 141 | 1.07831,109.403,139.127,105.902,110.318,179.719,96.8982 142 | 1.0893,110.686,136.136,104.832,105.506,179.376,97.6737 143 | 1.0894,110.437,136.462,104.718,105.047,179,97.7235 144 | 1.08897,109.942,136.703,104.474,103.393,179.029,97.6946 145 | 1.08679,110.066,136.991,103.783,102.501,178.648,98.0813 146 | 1.08186,110.28,136.927,103.507,101.699,178.502,98.1375 147 | 1.08163,109.691,136.915,102.967,96.9646,178.448,98.0908 148 | 1.0776,108.745,137.316,102.79,98.8824,178.355,98.0431 149 | 1.07668,107.825,138.315,102.497,99.8677,178.046,98.3096 150 | 1.07547,107.576,138.546,102.565,99.8596,178.056,98.0521 151 | 1.07713,107.429,138.606,102.271,99.0536,178.142,98.1376 152 | 1.08382,108.007,138.234,102.643,92.7703,178.446,98.3322 153 | 1.08763,108.937,137.165,103.326,92.6698,179.245,98.5504 154 | 1.08974,142.382,96.3532,106.711,93.155,179.276,99.1544 155 | 1.08813,142.457,97.2102,104.775,93.4358,179.091,98.84 156 | 1.07759,144.125,98.7366,102.069,93.506,179.023,98.015 157 | 1.07157,145.26,101.428,100.752,92.659,179.017,97.2181 158 | 1.07872,145.972,103.631,104.137,91.5799,179.117,97.6924 159 | 1.0778,146.187,105.931,109.088,90.5479,179.244,97.7785 160 | 1.07778,146.44,107.7,110.984,90.7093,179.492,97.8898 161 | 1.07582,145.452,111.114,110.987,90.9966,179.745,97.3421 162 | 1.08275,109.454,136.489,113.286,97.771,178.568,103.659 163 | 1.06083,110.647,135.284,113.548,108.511,178.563,104.203 164 | 1.0564,111.005,134.611,113.667,108.45,178.268,104.79 165 | 1.05088,110.477,135.142,114.381,108.664,176.703,107.405 166 | 1.04287,109.981,135.454,114.358,109.075,177.162,106.782 167 | 1.03143,109.631,136.043,115.025,109.38,173.692,111.792 168 | 1.01948,109.524,136.444,115.505,109.682,173.182,112.581 169 | 1.00301,109.392,137.171,116.342,110.085,171.557,114.563 170 | 0.992463,109.7,137.193,116.462,108.724,171.552,114.525 171 | 0.988984,110.091,137.233,116.603,108.87,171.185,114.916 172 | 0.980191,110.483,137.42,116.451,109.076,166.006,121.856 173 | 0.993511,110.912,137.437,116.29,104.608,166.664,121.007 174 | 0.943937,108.534,137.477,117.37,112.287,168.697,116.643 175 | 0.959494,109.763,138.808,117.333,111.302,167.674,119.238 176 | 0.964367,110.076,139.292,117.593,111.364,166.957,120.148 177 | 0.966721,110.397,139.277,117.654,111.331,167.068,120.127 178 | 0.959811,110.805,139.408,117.5,112.991,166.855,120.217 179 | 0.960573,111.114,139.618,117.519,113.169,167.059,119.954 180 | 0.964327,111.425,139.667,117.587,112.424,167.235,119.791 181 | 0.96429,111.341,140.389,117.616,112.051,167.425,119.199 182 | 0.966039,111.487,140.318,117.552,111.982,167.579,119.015 183 | 0.967146,111.495,140.23,117.592,112.017,167.7,118.865 184 | 0.968414,111.371,140.266,117.657,112.003,167.811,118.735 185 | 0.969572,111.299,140.6,117.631,111.817,167.948,118.562 186 | 0.970865,111.203,140.622,117.698,111.628,168.049,118.449 187 | 0.974791,111.227,140.6,117.857,110.554,168.118,118.383 188 | 0.976544,111.05,140.646,117.885,109.961,168.126,118.386 189 | 0.976749,110.812,140.716,117.936,109.627,168.184,118.361 190 | 0.955402,109.815,138.113,118.071,108.93,170.819,112.471 191 | 0.951532,109.799,138.09,117.814,109.336,170.92,112.216 192 | 0.960079,109.58,138.094,117.942,106.981,171.051,112.071 193 | 0.986695,109.434,138.181,117.984,98.7195,171.184,111.909 194 | 0.92864,109.192,138.335,117.993,114.008,171.319,111.661 195 | 0.927732,109.138,138.348,118.002,114.092,171.414,111.567 196 | 0.926773,109.13,138.357,118.012,114.141,171.444,111.493 197 | 0.945438,109.159,138.31,117.9,109.425,171.489,111.454 198 | 0.943062,109.181,138.252,117.943,109.993,171.566,111.403 199 | 0.947039,109.11,138.261,118.034,109.332,171.641,111.34 200 | 0.94098,109.161,138.075,118.071,110.739,171.74,111.22 201 | 0.939057,109.054,138.005,118.116,111.047,171.833,111.056 202 | 0.935681,108.95,137.661,118.168,111.179,172.161,110.408 203 | 0.934486,108.953,137.541,118.304,111.309,172.238,110.29 204 | 0.932648,109.017,137.224,118.395,111.592,172.532,110.139 205 | 0.935453,108.877,137.213,118.425,110.087,172.612,109.973 206 | 0.934894,108.636,137.184,118.685,110.118,172.677,109.853 207 | 0.943794,108.606,137.152,118.695,107.791,172.706,109.826 208 | 0.935284,108.734,136.934,118.705,110.013,172.769,109.709 209 | 0.934685,108.92,136.541,118.697,109.909,172.858,109.593 210 | 0.930971,108.862,136.577,118.734,110.938,172.911,109.54 211 | 0.929495,108.855,136.56,118.731,111.155,172.984,109.382 212 | 0.931364,108.828,136.502,118.701,110.685,173.036,109.343 213 | 0.931894,108.799,136.492,118.705,110.464,173.094,109.22 214 | 0.931976,108.671,136.515,118.506,110.392,173.175,109.09 215 | 0.931854,108.563,136.479,118.576,110.337,173.212,109.035 216 | 0.932965,108.73,136.196,118.729,109.642,173.838,108.336 217 | 0.959749,108.71,136.129,118.788,101.46,173.847,108.291 218 | 0.930849,108.762,135.896,118.555,109.766,173.854,108.226 219 | 0.930394,108.738,135.917,118.93,109.763,173.866,108.178 220 | 0.929613,108.772,135.814,118.944,109.794,173.88,108.098 221 | 0.928661,108.836,135.62,119.071,109.904,173.908,108.061 222 | 0.92815,108.829,135.597,119.277,110.009,173.919,107.987 223 | 0.927942,108.771,135.621,119.106,110.053,173.928,107.951 224 | 0.927571,108.705,135.67,119.128,109.983,174.26,107.621 225 | 0.929766,108.647,135.681,119.624,109.484,174.635,107.31 226 | 0.930233,108.638,135.678,119.559,109.335,174.856,107.107 227 | 0.930266,108.644,135.549,119.195,109.08,175.135,106.816 228 | 0.92529,108.748,135.218,119.34,110.279,175.042,106.774 229 | 0.924393,108.865,134.923,119.172,110.252,175.2,106.654 230 | 0.923886,108.896,134.836,119.498,110.274,175.364,106.511 231 | 0.9233,108.872,134.866,119.57,110.251,175.555,106.331 232 | 0.919193,108.837,134.859,119.456,111.109,175.708,106.108 233 | 0.916608,108.861,134.78,119.341,111.69,175.521,106.197 234 | 0.915643,108.844,134.768,119.128,111.975,175.685,106.119 235 | 0.919997,108.831,134.793,119.141,110.405,175.798,106.037 236 | 0.912903,108.827,134.767,119.155,112.408,175.926,105.912 237 | 0.912461,108.879,134.682,119.607,112.329,176.033,105.74 238 | 0.92716,108.792,134.851,119.557,108.05,176.062,105.711 239 | 0.928028,108.757,134.857,120.018,107.663,176.165,105.621 240 | 0.927541,108.811,134.636,120.268,107.508,176.249,105.481 241 | 0.928618,108.787,134.607,120.302,107.02,176.36,105.388 242 | 0.916656,108.822,134.511,120.213,110.009,176.486,105.197 243 | 0.915127,108.914,134.317,120.224,110.07,176.623,105 244 | 0.920377,108.887,134.315,120.448,108.408,176.678,104.969 245 | 0.915309,108.865,134.344,120.99,109.638,176.714,104.925 246 | 0.933693,108.982,134.129,121.071,103.826,176.798,104.767 247 | 0.933196,108.906,134.125,120.013,103.818,176.898,104.697 248 | 0.93279,108.926,134.015,120.285,103.788,176.916,104.678 249 | 0.930534,108.973,133.95,120.367,104.517,176.919,104.669 250 | 0.929613,108.977,133.893,120.444,104.66,176.968,104.561 251 | 0.92947,109.131,133.844,120.438,104.674,176.842,104.646 252 | 0.910148,109.115,133.873,120.399,110.403,176.844,104.649 253 | 0.910177,109.159,133.858,120.828,110.404,176.837,104.669 254 | 0.910154,109.153,133.861,120.79,110.357,176.857,104.619 255 | 0.910882,109.14,133.82,120.493,110.202,176.821,104.651 256 | 0.911911,109.112,133.826,120.776,109.876,176.83,104.638 257 | 0.9122,109.121,133.699,121.039,109.792,176.842,104.609 258 | 0.917566,109.118,133.7,121.289,108.226,176.84,104.612 259 | 0.935913,109.118,133.585,121.437,101.963,176.929,104.496 260 | 0.91495,109.189,133.54,121.416,108.9,176.903,104.526 261 | 0.914944,109.223,133.519,121.361,108.906,176.883,104.553 262 | 0.905968,109.132,133.676,121.31,111.486,176.83,104.607 263 | 0.911833,109.028,133.537,121.324,109.687,177.031,104.37 264 | 0.912278,109.026,133.502,121.315,109.349,177.054,104.3 265 | 0.913907,109.118,133.321,121.321,108.687,177.129,104.203 266 | 0.914286,109.138,133.309,119.97,108.518,177.148,104.185 267 | 0.914977,109.115,133.302,120.432,108.45,177.159,104.166 268 | 0.915475,109.061,133.468,120.46,108.436,177.13,104.212 269 | 0.912309,109.126,133.23,120.225,109.229,177.227,104.124 270 | 0.919057,109.11,133.244,120.232,107.229,177.236,104.104 271 | 0.92067,108.989,133.288,120.134,106.709,177.24,104.073 272 | 0.919017,109.08,133.219,120.469,107.134,177.208,104.082 273 | 0.91375,109.094,133.226,120.543,108.583,177.19,104.09 274 | 0.914669,109.272,133.12,120.606,108.437,177.059,104.267 275 | 0.915613,109.227,133.14,121.009,108.219,177.055,104.272 276 | 0.915675,109.248,133.115,121.072,108.108,177.085,104.221 277 | 0.914557,109.093,133.543,120.61,108.575,177.024,104.289 278 | 0.914294,109.124,133.539,120.796,108.691,176.935,104.379 279 | 0.914922,109.122,133.541,120.855,108.506,176.935,104.385 280 | 0.911596,109.139,133.519,120.857,109.458,176.931,104.393 281 | 0.910449,109.276,133.189,120.636,109.603,177.099,104.208 282 | 0.910492,109.361,133.117,120.69,109.614,177.057,104.278 283 | 0.910149,109.314,133.073,120.786,109.587,177.097,104.173 284 | 0.908519,109.295,133.202,120.825,110.037,177,104.331 285 | 0.908626,109.261,133.271,120.811,110.047,176.986,104.368 286 | 0.908304,109.338,133.173,120.515,110.18,176.957,104.453 287 | 0.909746,109.331,133.192,120.593,109.788,176.941,104.467 288 | 0.903703,109.31,133.173,120.649,111.653,176.943,104.452 289 | 0.903909,109.305,133.166,120.602,111.675,176.906,104.554 290 | 0.905723,109.183,133.251,119.868,111.165,176.962,104.503 291 | 0.905123,109.186,133.246,120.107,111.357,176.956,104.501 292 | 0.907253,109.184,133.265,120.654,110.755,176.998,104.476 293 | 0.90774,109.187,133.258,122.13,110.483,177.07,104.447 294 | 0.908503,109.136,133.36,121.504,109.945,177.337,104.319 295 | 0.904277,109.124,133.444,121.097,110.129,178.019,103.988 296 | 0.944605,104.17,140.167,108.812,80.0923,176.384,93.9789 297 | 0.943764,104.505,139.808,109.034,80.0851,176.71,93.7536 298 | 0.944109,104.862,139.334,108.587,80.0163,177.103,93.5118 299 | 0.942979,104.868,139.181,108.322,79.6364,176.745,94.0032 300 | 0.942856,104.748,138.769,108.005,79.5706,176.617,94.3454 301 | 0.946656,104.382,139.031,108.184,79.0169,177.189,93.752 302 | 0.945891,104.551,138.414,109.05,78.8291,177.359,93.7034 303 | 0.943252,104.467,138.309,107.482,78.4466,177.701,93.1338 304 | 0.941232,104.129,138.451,106.372,78.6134,177.663,93.0443 305 | 0.941252,104.642,137.658,105.983,78.6297,177.688,93.1357 306 | 0.940462,104.585,137.544,105.954,78.9291,177.824,93.108 307 | 0.939771,104.315,138.072,105.72,79.0335,177.731,93.1065 308 | 0.939537,103.955,138.566,118.679,79.0743,177.731,93.0355 309 | 0.9398,103.665,138.862,116.962,79.1867,177.558,93.2467 310 | 0.94057,103.656,139.265,104.98,79.1353,177.503,93.1934 311 | 0.941132,103.552,140.375,104.574,79.0127,177.259,92.7441 312 | 0.940969,105.08,140.637,104.692,79.006,177.174,92.2619 313 | 0.872233,105.666,140.844,112.149,31.9084,177.169,91.6036 314 | 0.871017,106.006,140.477,112.748,31.6761,177.409,91.6207 315 | 0.879764,106.296,140.266,109.345,30.867,177.408,91.5946 316 | 0.880911,107.084,139.792,108.814,30.9898,177.812,91.0666 317 | 0.890403,109.654,137.753,106.26,30.9816,177.921,91.2725 318 | 0.852991,109.586,137.335,116.427,30.6633,177.911,91.0485 319 | 0.873325,109.667,136.184,110.344,30.9052,177.537,91.0424 320 | 0.828245,109.387,136.014,121.038,30.4153,177.368,90.8796 321 | 0.875456,109.391,135.855,107.971,30.8997,177.167,90.8002 322 | 0.875407,109.502,135.644,107.701,30.8523,176.954,90.8104 323 | 0.827701,110.056,135.067,119.824,29.2471,176.522,91.2948 324 | 0.832675,110.508,134.723,118.271,30.9391,176.766,91.1524 325 | 0.83321,110.44,134.651,117.835,29.5726,176.994,90.9837 326 | 0.843613,111.1,134.049,114.743,30.5647,177.024,91.0525 327 | 0.846694,111.079,134.022,114.068,30.4048,177.158,90.9781 328 | 0.848368,111.311,133.83,113.361,29.594,177.22,90.9954 329 | 0.849607,111.481,133.902,112.241,29.9316,177.278,91.1446 330 | 0.848188,111.424,134.12,112.603,29.5494,177.359,91.0607 331 | 0.846781,111.326,134.553,113.137,29.0934,177.447,90.9273 332 | 0.845391,111.427,134.55,113.268,29.982,177.424,90.8675 333 | 0.840266,111.809,134.353,114.12,29.8276,177.58,90.8614 334 | 0.837654,111.621,134.635,114.518,29.7124,177.52,90.8765 335 | 0.835744,112.089,134.219,114.945,29.6442,177.707,90.7817 336 | 0.836366,112.352,134.104,114.507,29.453,177.451,90.8866 337 | 0.831287,112.374,134.505,115.887,29.2197,177.601,90.6052 338 | 0.816966,112.371,134.626,118.92,67.3596,177.938,90.297 339 | 0.83575,112.422,134.643,115.24,66.8873,178.275,89.9834 340 | 0.837688,112.64,134.658,114.555,66.2217,179.563,89.2317 341 | 0.53455,137.3,105.594,178.652,178.272,177.201,81.8062 342 | 0.551322,138.398,105.762,178.564,178.286,176.349,79.14 343 | 0.550658,139.984,104.645,178.55,178.295,175.179,75.8286 344 | 0.540047,140.907,104.201,178.553,178.299,173.843,72.1259 345 | 0.530417,142.365,103.865,178.558,178.299,171.603,67.1245 346 | 0.521127,143.322,103.713,178.568,178.297,167.354,60.8007 347 | 0.496592,144.567,103.204,178.579,178.299,166.539,58.9553 348 | 0.454239,145.229,103.84,178.79,178.309,165.125,54.774 349 | -------------------------------------------------------------------------------- /data/standing_testing.csv: -------------------------------------------------------------------------------- 1 | height,leftHipAngle,rightHipAngle,leftKneeAngle,RightKneeAngle,chestAngle,chestKneeAngle 2 | 1.39822,94.4617,97.3859,166.672,165.29,179.838,171.761 3 | 1.39708,94.4888,97.4033,166.738,165.22,179.828,171.794 4 | 1.39282,94.5569,97.3852,166.886,165.232,179.822,171.816 5 | 1.39307,94.6936,97.3502,166.881,165.133,179.814,171.81 6 | 1.3933,94.8865,97.2665,166.852,165.106,179.807,171.82 7 | 1.39341,95.0285,97.1999,166.828,165.061,179.798,171.818 8 | 1.39738,95.1227,97.077,166.641,165.077,179.792,171.837 9 | 1.39863,95.2251,96.9499,166.658,165.096,179.781,171.845 10 | 1.40448,95.2885,96.9054,166.427,165.076,179.777,171.82 11 | 1.40331,95.3616,96.8581,166.495,165.119,179.769,171.811 12 | 1.40318,95.3957,96.8103,166.512,164.959,179.765,171.812 13 | 1.40546,95.4555,96.7759,166.495,164.932,179.763,171.799 14 | 1.4052,95.5439,96.7168,166.435,164.775,179.765,171.754 15 | 1.40477,95.501,96.6856,166.418,164.857,179.768,171.784 16 | 1.40468,95.5204,96.6178,166.382,165.043,179.767,171.794 17 | 1.4056,95.5541,96.5892,166.274,165.141,179.774,171.732 18 | 1.40607,95.5458,96.6162,166.157,165.13,179.776,171.66 19 | 1.4061,95.5156,96.6807,166.127,165.156,179.789,171.539 20 | 1.4067,95.5106,96.7421,165.957,165.15,179.789,171.434 21 | 1.40269,95.5793,96.7479,165.745,165.191,179.792,171.283 22 | 1.39462,95.6847,96.705,165.956,165.124,179.785,171.145 23 | 1.39627,95.7771,96.6618,165.818,165.107,179.774,171.062 24 | 1.39645,95.934,96.5574,165.607,165.051,179.761,170.999 25 | 1.3968,95.9873,96.4894,165.546,165.086,179.753,170.986 26 | 1.39807,96.0054,96.4741,165.519,165.268,179.744,170.992 27 | 1.40122,96.0999,96.4154,165.401,165.245,179.737,170.947 28 | 1.40176,96.1211,96.3404,165.434,165.28,179.725,170.962 29 | 1.40352,96.1462,96.2886,165.315,165.271,179.72,170.983 30 | 1.40498,96.1401,96.2579,165.323,165.324,179.71,171.025 31 | 1.40482,96.1472,96.2406,165.381,165.197,179.705,171.04 32 | 1.40488,96.1522,96.213,165.373,165.245,179.699,171.072 33 | 1.40602,96.184,96.2027,165.364,165.28,179.69,171.074 34 | 1.40628,96.2392,96.1738,165.202,165.269,179.685,171.071 35 | 1.40673,96.2883,96.1552,165.059,165.312,179.68,171.061 36 | 1.40676,96.3192,96.1383,164.991,165.304,179.674,171.058 37 | 1.40684,96.3287,96.1298,164.982,165.323,179.668,171.069 38 | 1.40728,96.3067,96.1457,164.966,165.318,179.655,171.122 39 | 1.40754,96.3011,96.1423,165.016,165.323,179.649,171.132 40 | 1.40922,96.23,96.1942,165.02,165.242,179.644,171.171 41 | 1.40899,96.2377,96.1813,165.031,165.189,179.641,171.169 42 | 1.40612,96.2482,96.1731,165.133,165.208,179.638,171.167 43 | 1.40701,96.2714,96.1455,165.067,165.218,179.636,171.156 44 | 1.41088,96.3202,96.1422,164.675,165.235,179.633,171.129 45 | 1.41106,96.3489,96.1422,164.614,165.251,179.632,171.111 46 | 1.41124,96.3534,96.1217,164.562,165.284,179.631,171.114 47 | 1.41141,96.3596,96.1258,164.565,165.322,179.631,171.111 48 | 1.40888,96.3256,96.1291,164.712,165.379,179.628,171.13 49 | 1.40457,96.3224,96.1654,164.803,165.316,179.628,171.099 50 | 1.40238,96.315,96.1643,164.968,165.311,179.627,171.109 51 | 1.40453,96.3279,96.1839,164.922,165.264,179.626,171.083 52 | 1.405,96.3908,96.249,164.768,165.122,179.625,170.991 53 | 1.40319,96.4761,96.2826,164.662,165.056,179.625,170.93 54 | 1.40205,96.5424,96.2755,164.633,164.991,179.619,170.932 55 | 1.40165,96.519,96.2873,164.651,165.033,179.618,170.968 56 | 1.40314,96.5028,96.291,164.728,164.978,179.616,170.994 57 | 1.40279,96.4586,96.2876,164.822,164.968,179.614,171.049 58 | 1.40392,96.3653,96.2565,165.08,164.795,179.613,171.139 59 | 1.4059,96.3212,96.2255,165.134,164.757,179.607,171.204 60 | 1.41015,96.323,96.2122,164.988,164.729,179.608,171.203 61 | 1.41043,96.3266,96.1434,164.959,164.852,179.6,171.267 62 | 1.40653,96.3863,96.093,164.974,164.885,179.596,171.258 63 | 1.40303,96.4698,96.0093,164.826,165.002,179.586,171.251 64 | 1.40471,96.5089,95.9443,164.698,165.123,179.578,171.29 65 | 1.40476,96.4329,95.8819,164.692,165.251,179.565,171.392 66 | 1.40687,96.3832,95.8143,164.636,165.342,179.557,171.489 67 | 1.40573,96.3629,95.7985,164.68,165.338,179.549,171.542 68 | 1.40568,96.3272,95.784,164.728,165.268,179.544,171.588 69 | 1.40472,96.3011,95.7905,164.811,165.241,179.533,171.63 70 | 1.4063,96.2932,95.778,164.751,165.232,179.531,171.647 71 | 1.40654,96.2964,95.7495,164.646,165.261,179.526,171.661 72 | 1.40736,96.3536,95.7442,164.421,165.23,179.519,171.632 73 | 1.40685,96.4317,95.6954,164.192,165.304,179.515,171.614 74 | 1.4085,96.4576,95.6163,164.021,165.369,179.507,171.675 75 | 1.40792,96.432,95.62,164.093,165.382,179.524,171.635 76 | 1.40777,96.4282,95.5985,164.157,165.372,179.519,171.669 77 | 1.40766,96.3912,95.5716,164.26,165.382,179.532,171.649 78 | 1.4085,96.3766,95.5055,164.383,165.321,179.529,171.737 79 | 1.40846,96.3849,95.4704,164.425,165.332,179.528,171.759 80 | 1.40771,96.4028,95.4119,164.46,165.389,179.526,171.771 81 | 1.40677,96.4022,95.3775,164.49,165.239,179.526,171.792 82 | 1.40675,96.4419,95.323,164.411,165.346,179.522,171.818 83 | 1.40595,96.4369,95.3186,164.429,165.404,179.52,171.853 84 | 1.40325,96.427,95.2917,164.529,165.462,179.513,171.901 85 | 1.40209,96.4022,95.2535,164.529,165.534,179.512,171.939 86 | 1.40359,96.3261,95.2533,164.538,165.641,179.511,171.996 87 | 1.40718,96.2582,95.2334,164.466,165.704,179.512,172.07 88 | 1.40704,96.2232,95.2186,164.569,165.769,179.511,172.102 89 | 1.40841,96.1927,95.2117,164.601,165.772,179.511,172.124 90 | 1.40922,96.1889,95.1933,164.6,165.792,179.512,172.133 91 | 1.40699,96.202,95.2073,164.636,165.772,179.512,172.112 92 | 1.40645,96.2602,95.2176,164.45,165.754,179.511,172.049 93 | 1.40354,96.2667,95.2175,164.548,165.796,179.505,172.045 94 | 1.4036,96.2654,95.2225,164.499,165.809,179.502,172.054 95 | 1.40366,96.2168,95.2608,164.505,165.819,179.5,172.083 96 | 1.40319,96.1909,95.2975,164.519,165.864,179.514,172.039 97 | 1.40636,96.1616,95.3467,164.338,165.672,179.515,172.024 98 | 1.41289,96.1149,95.4009,164.446,165.563,179.515,172.037 99 | 1.41688,96.0952,95.4247,164.523,165.644,179.516,172.041 100 | 1.417,96.0854,95.4438,164.515,165.721,179.516,172.022 101 | 1.41826,96.1104,95.4273,164.455,165.758,179.517,172.021 102 | 1.40344,96.1865,95.4155,164.566,165.809,179.517,171.998 103 | 1.40372,96.2588,95.3487,164.364,165.907,179.516,171.999 104 | 1.40591,96.2973,95.4191,164.126,165.83,179.517,171.937 105 | 1.40409,96.2927,95.3892,164.203,165.81,179.515,171.958 106 | 1.40491,96.2665,95.3579,164.177,165.87,179.516,171.988 107 | 1.40496,96.2247,95.3519,164.269,165.881,179.515,172.019 108 | 1.40193,96.1618,95.3639,164.394,165.776,179.517,172.042 109 | 1.40202,96.1454,95.3491,164.411,165.836,179.516,172.051 110 | 1.40104,96.1252,95.3484,164.484,165.849,179.515,172.08 111 | 1.40106,96.1267,95.3483,164.476,165.893,179.514,172.084 112 | 1.403,96.1756,95.3376,164.299,165.878,179.514,172.059 113 | 1.40366,96.2746,95.3427,164.098,165.867,179.513,172.012 114 | 1.40298,96.3791,95.3345,163.915,165.992,179.511,171.942 115 | 1.40304,96.401,95.3194,163.941,166.008,179.511,171.951 116 | 1.40299,96.3858,95.3184,163.959,166.069,179.509,171.974 117 | 1.40698,96.3275,95.3392,163.761,166.09,179.508,172.014 118 | 1.40684,96.2225,95.3638,164.019,166.039,179.506,172.082 119 | 1.40609,96.1769,95.3564,164.141,166.005,179.504,172.119 120 | 1.40616,96.1699,95.3472,164.168,166.008,179.502,172.126 121 | 1.4029,96.1881,95.3605,164.341,165.89,179.501,172.131 122 | 1.39932,96.212,95.3543,164.548,165.909,179.501,172.112 123 | 1.40061,96.2557,95.3589,164.437,165.914,179.499,172.091 124 | 1.40524,96.2626,95.3524,164.296,165.906,179.499,172.076 125 | 1.40534,96.2749,95.3493,164.267,166.031,179.492,172.083 126 | 1.40534,96.2515,95.3551,164.293,166.019,179.492,172.085 127 | 1.40121,96.2023,95.4268,164.462,165.911,179.491,172.102 128 | 1.40166,96.2203,95.4148,164.497,165.845,179.485,172.101 129 | 1.40189,96.1502,95.5203,164.567,165.704,179.493,172.087 130 | 1.40357,96.1386,95.563,164.448,165.7,179.494,172.067 131 | 1.404,96.1732,95.5836,164.403,165.597,179.497,171.979 132 | 1.40421,96.1833,95.6247,164.353,165.508,179.499,171.963 133 | 1.40685,96.1939,95.6351,164.298,165.488,179.501,171.94 134 | 1.4061,96.1969,95.6722,164.323,165.466,179.499,171.917 135 | 1.40286,96.1846,95.6807,164.412,165.497,179.502,171.901 136 | 1.40254,96.2003,95.6569,164.418,165.489,179.499,171.887 137 | 1.40239,96.1654,95.6586,164.49,165.499,179.501,171.899 138 | 1.40222,96.1542,95.669,164.498,165.414,179.505,171.858 139 | 1.40049,96.1432,95.6778,164.517,165.421,179.506,171.86 140 | 1.40243,96.1565,95.6849,164.502,165.403,179.505,171.846 141 | 1.40278,96.2315,95.6822,164.414,165.405,179.504,171.795 142 | 1.40313,96.2898,95.6897,164.328,165.39,179.504,171.763 143 | 1.40279,96.3197,95.6897,164.332,165.489,179.504,171.736 144 | 1.40168,96.3259,95.6895,164.347,165.471,179.504,171.741 145 | 1.40261,96.2887,95.7021,164.32,165.487,179.504,171.749 146 | 1.40225,96.1795,95.709,164.589,165.411,179.511,171.77 147 | 1.4014,96.0522,95.7206,164.88,165.372,179.515,171.831 148 | 1.40171,96.0176,95.7106,164.922,165.356,179.516,171.86 149 | 1.40073,96.0552,95.7157,164.841,165.362,179.518,171.822 150 | 1.40075,96.0882,95.7247,164.771,165.384,179.519,171.793 151 | 1.40164,96.1447,95.7304,164.692,165.372,179.522,171.747 152 | 1.40333,96.2431,95.7214,164.603,165.258,179.521,171.695 153 | 1.4024,96.2879,95.7126,164.47,165.268,179.521,171.671 154 | 1.40467,96.3099,95.7091,164.52,165.298,179.521,171.656 155 | 1.40541,96.2848,95.6856,164.57,165.348,179.522,171.674 156 | 1.40521,96.2777,95.6821,164.632,165.287,179.526,171.667 157 | 1.40528,96.2576,95.6843,164.718,165.266,179.529,171.653 158 | 1.40515,96.2359,95.6832,164.781,165.298,179.53,171.641 159 | 1.40547,96.272,95.6787,164.739,165.31,179.531,171.608 160 | 1.40544,96.3263,95.6628,164.675,165.262,179.534,171.557 161 | 1.40561,96.3423,95.6541,164.661,165.235,179.534,171.54 162 | 1.40327,96.3842,95.6551,164.594,165.169,179.535,171.495 163 | 1.40248,96.4157,95.6491,164.541,165.179,179.537,171.474 164 | 1.40252,96.444,95.6806,164.472,165.146,179.539,171.42 165 | 1.40249,96.449,95.6731,164.503,165.167,179.539,171.418 166 | 1.40273,96.4244,95.6673,164.551,165.176,179.54,171.423 167 | 1.40289,96.4095,95.6646,164.623,165.196,179.543,171.427 168 | 1.40339,96.4068,95.6667,164.583,165.189,179.543,171.414 169 | 1.40163,96.4141,95.6673,164.562,165.188,179.544,171.395 170 | 1.39896,96.4453,95.6799,164.583,165.191,179.546,171.355 171 | 1.40022,96.536,95.6883,164.448,165.167,179.547,171.291 172 | 1.40011,96.5848,95.7181,164.344,165.158,179.548,171.246 173 | 1.40057,96.6211,95.7152,164.246,165.268,179.547,171.226 174 | 1.40055,96.6224,95.7249,164.234,165.192,179.548,171.22 175 | 1.40252,96.6188,95.7281,164.249,165.163,179.547,171.201 176 | 1.4027,96.6172,95.7191,164.206,165.17,179.547,171.203 177 | 1.40375,96.6225,95.6967,164.165,165.176,179.55,171.187 178 | 1.40434,96.6266,95.6961,164.122,165.18,179.554,171.162 179 | 1.40303,96.6274,95.6967,164.122,165.175,179.553,171.157 180 | 1.40341,96.6341,95.6962,164.09,165.184,179.553,171.159 181 | 1.40359,96.6707,95.697,164.001,165.181,179.553,171.136 182 | 1.40189,96.6786,95.7056,164.065,165.179,179.552,171.13 183 | 1.40321,96.6774,95.7069,164.063,165.186,179.553,171.126 184 | 1.40382,96.6571,95.7169,164.074,165.143,179.552,171.127 185 | 1.40337,96.6337,95.7037,164.151,165.167,179.55,171.154 186 | 1.39995,96.6116,95.7142,164.265,165.16,179.548,171.159 187 | 1.39938,96.616,95.7118,164.253,165.146,179.547,171.16 188 | 1.39952,96.6142,95.774,164.223,165.151,179.547,171.132 189 | 1.40164,96.6213,95.7756,164.114,165.151,179.546,171.13 190 | 1.40139,96.6422,95.797,163.997,165.135,179.544,171.104 191 | 1.40135,96.61,95.8307,164.025,165.012,179.539,171.125 192 | 1.40042,96.6291,95.8394,164.077,165.038,179.536,171.108 193 | 1.40056,96.6235,95.8614,164.115,165.043,179.535,171.097 194 | 1.40172,96.6484,95.8397,164.164,164.985,179.531,171.099 195 | 1.40452,96.6711,95.8206,164.135,164.962,179.529,171.107 196 | 1.40181,96.6742,95.8112,164.135,164.805,179.526,171.113 197 | 1.40183,96.6942,95.7615,164.156,164.75,179.524,171.123 198 | 1.40206,96.6995,95.7765,164.103,164.738,179.521,171.116 199 | 1.40208,96.7114,95.8034,164.039,164.774,179.517,171.092 200 | 1.4018,96.7206,95.8006,163.994,164.776,179.514,171.083 201 | 1.40304,96.7089,95.7875,163.859,164.813,179.51,171.1 202 | 1.40232,96.7272,95.7433,163.864,164.84,179.505,171.118 203 | 1.40601,96.7106,95.752,163.823,164.764,179.501,171.126 204 | 1.40559,96.6993,95.7308,163.889,164.797,179.497,171.162 205 | 1.40548,96.7115,95.7156,163.909,164.889,179.494,171.169 206 | 1.40605,96.715,95.6994,163.94,164.921,179.488,171.18 207 | 1.40618,96.7312,95.6548,163.893,164.998,179.485,171.193 208 | 1.40593,96.7742,95.5742,163.731,165.08,179.477,171.213 209 | 1.4047,96.7672,95.5473,163.838,165.126,179.473,171.244 210 | 1.40905,96.7558,95.5653,163.618,165.205,179.466,171.254 211 | 1.40358,96.7329,95.5358,163.716,165.293,179.462,171.309 212 | 1.4059,96.7279,95.4943,163.679,165.313,179.456,171.361 213 | 1.40702,96.7409,95.4617,163.645,165.315,179.452,171.372 214 | 1.40705,96.7136,95.4373,163.721,165.406,179.449,171.411 215 | 1.40698,96.6795,95.4252,163.794,165.375,179.448,171.441 216 | 1.40502,96.6646,95.4236,163.891,165.397,179.445,171.462 217 | 1.40333,96.669,95.3864,164.034,165.425,179.44,171.496 218 | 1.40244,96.6782,95.3433,164.07,165.46,179.436,171.514 219 | 1.40332,96.6635,95.313,164.106,165.31,179.434,171.552 220 | 1.40331,96.669,95.3155,164.1,165.277,179.431,171.543 221 | 1.40381,96.6495,95.298,164.114,165.308,179.429,171.57 222 | 1.4045,96.6485,95.2888,164.127,165.322,179.428,171.578 223 | 1.41412,96.5881,95.3013,164.21,165.348,179.428,171.627 224 | 1.41686,96.5763,95.2882,164.222,165.359,179.425,171.644 225 | 1.40476,96.5591,95.2945,164.244,165.357,179.425,171.662 226 | 1.40482,96.5503,95.2899,164.253,165.313,179.425,171.669 227 | 1.41566,96.5417,95.2854,164.258,165.331,179.427,171.615 228 | 1.42404,96.5405,95.2823,164.265,165.333,179.427,171.618 229 | 1.40416,96.5434,95.2732,164.293,165.428,179.426,171.627 230 | 1.40437,96.5239,95.2716,164.338,165.38,179.426,171.644 231 | 1.40425,96.5093,95.2828,164.38,165.354,179.428,171.649 232 | 1.40444,96.5039,95.2854,164.414,165.352,179.428,171.656 233 | 1.40438,96.4828,95.2951,164.457,165.413,179.428,171.663 234 | 1.40577,96.4667,95.3131,164.441,165.42,179.43,171.666 235 | 1.406,96.4497,95.3446,164.485,165.421,179.43,171.677 236 | 1.40552,96.4345,95.3559,164.493,165.415,179.43,171.693 237 | 1.40292,96.4137,95.3854,164.523,165.387,179.43,171.698 238 | 1.40169,96.4034,95.4086,164.656,165.42,179.431,171.692 239 | 1.40165,96.3967,95.4077,164.669,165.424,179.431,171.695 240 | 1.40214,96.3988,95.414,164.678,165.401,179.432,171.683 241 | 1.39898,96.3917,95.4137,164.767,165.388,179.432,171.693 242 | 1.39958,96.4215,95.4157,164.734,165.251,179.435,171.624 243 | 1.4022,96.4723,95.372,164.574,165.207,179.431,171.583 244 | 1.402,96.4912,95.3414,164.609,165.145,179.427,171.576 245 | 1.40202,96.5207,95.3162,164.625,165.14,179.426,171.57 246 | 1.40415,96.5392,95.3097,164.624,165.116,179.425,171.55 247 | 1.40346,96.5608,95.3114,164.612,165.129,179.423,171.533 248 | 1.40407,96.5899,95.2958,164.569,165.138,179.423,171.509 249 | 1.40494,96.5898,95.3071,164.599,165.192,179.425,171.495 250 | 1.4042,96.5914,95.2992,164.605,165.14,179.425,171.488 251 | 1.40371,96.5726,95.3156,164.617,165.218,179.427,171.489 252 | 1.40603,96.5548,95.3391,164.541,165.193,179.433,171.47 253 | 1.41041,96.5372,95.3669,164.644,165.16,179.436,171.467 254 | 1.40743,96.5208,95.3937,164.659,165.125,179.443,171.453 255 | 1.40736,96.4981,95.4243,164.636,165.109,179.448,171.432 256 | 1.40465,96.4937,95.4229,164.738,165.027,179.447,171.442 257 | 1.40465,96.4977,95.4236,164.74,165.011,179.448,171.44 258 | 1.40033,96.4856,95.4359,164.619,164.964,179.449,171.438 259 | 1.40036,96.5088,95.4251,164.625,164.97,179.448,171.447 260 | 1.40301,96.5156,95.401,164.629,164.986,179.448,171.46 261 | 1.40444,96.5327,95.3912,164.598,164.984,179.443,171.461 262 | 1.40336,96.5433,95.3734,164.625,165.006,179.442,171.471 263 | 1.40509,96.5544,95.3497,164.616,165.003,179.437,171.481 264 | 1.40177,96.5585,95.327,164.795,165.033,179.434,171.495 265 | 1.40185,96.5773,95.2851,164.803,165.078,179.427,171.514 266 | 1.40212,96.5926,95.2657,164.726,165.054,179.421,171.52 267 | 1.40219,96.5773,95.2696,164.728,165.046,179.419,171.546 268 | 1.40327,96.589,95.2666,164.693,165.051,179.417,171.556 269 | 1.40059,96.5725,95.2614,164.818,165.096,179.415,171.603 270 | 1.40058,96.6198,95.2218,164.763,165.116,179.41,171.601 271 | 1.40063,96.6481,95.1911,164.762,165.1,179.407,171.623 272 | 1.40449,96.6699,95.1636,164.743,165.11,179.401,171.643 273 | 1.40469,96.64,95.1702,164.766,165.118,179.398,171.671 274 | 1.40497,96.6077,95.1975,164.76,165.146,179.398,171.711 275 | 1.40508,96.6046,95.2169,164.702,165.205,179.395,171.717 276 | 1.40931,96.5872,95.2509,164.641,165.185,179.394,171.733 277 | 1.41126,96.5599,95.2515,164.626,165.186,179.397,171.776 278 | 1.40649,96.5588,95.2355,164.775,165.216,179.4,171.787 279 | 1.40648,96.4962,95.3217,164.784,165.145,179.414,171.797 280 | 1.40659,96.4582,95.3607,164.797,165.193,179.422,171.795 281 | 1.4051,96.4257,95.3803,164.779,165.199,179.431,171.794 282 | 1.40477,96.3418,95.4742,164.842,165.203,179.454,171.811 283 | 1.40436,96.3507,95.4705,164.897,165.224,179.463,171.813 284 | 1.40449,96.2946,95.5197,164.938,165.238,179.483,171.805 285 | 1.40718,96.3011,95.5356,164.881,165.131,179.496,171.781 286 | 1.40769,96.2552,95.5905,164.939,165.061,179.486,171.78 287 | 1.40879,96.1979,95.626,164.95,165.055,179.481,171.764 288 | 1.40839,96.1664,95.6905,165,164.943,179.481,171.722 289 | 1.40358,96.1202,95.7501,165.105,164.929,179.499,171.705 290 | 1.40375,96.1068,95.774,165.146,164.899,179.514,171.713 291 | 1.40368,96.0772,95.8109,165.206,164.883,179.527,171.713 292 | 1.40547,96.0584,95.8686,165.217,164.841,179.539,171.688 293 | 1.40481,96.0491,95.8894,165.204,164.836,179.546,171.677 294 | 1.40688,96.0271,95.9221,165.148,164.814,179.557,171.662 295 | 1.40658,96.02,95.9307,165.17,164.797,179.557,171.666 296 | 1.40682,96.0343,95.9202,165.135,164.852,179.561,171.669 297 | 1.40699,96.0376,95.9242,165.151,164.876,179.561,171.682 298 | 1.40708,96.0383,95.9267,165.193,164.878,179.563,171.687 299 | 1.4038,96.0441,95.9297,165.197,164.852,179.565,171.682 300 | 1.40344,96.0567,95.9421,165.242,164.835,179.571,171.648 301 | 1.40338,96.0537,95.986,165.227,164.868,179.574,171.62 302 | 1.40287,96.089,95.9778,165.189,164.891,179.578,171.584 303 | 1.40932,96.1258,95.9783,164.896,164.912,179.582,171.545 304 | 1.41025,96.1635,95.958,164.839,164.905,179.583,171.519 305 | 1.41071,96.1715,95.9652,164.806,164.952,179.585,171.497 306 | 1.41103,96.2296,95.9434,164.779,164.889,179.59,171.44 307 | 1.40979,96.2081,96.0022,164.803,164.913,179.596,171.419 308 | 1.41052,96.228,96.0293,164.795,164.926,179.603,171.358 309 | 1.41097,96.2308,96.0952,164.734,164.942,179.615,171.282 310 | 1.40657,96.2245,96.1005,164.778,164.918,179.61,171.251 311 | 1.40655,96.2281,96.1169,164.786,164.917,179.609,171.22 312 | 1.40656,96.2345,96.0911,164.77,164.99,179.615,171.215 313 | 1.40683,96.2225,96.1247,164.796,165.05,179.612,171.211 314 | 1.40681,96.2066,96.1454,164.801,165.164,179.61,171.188 315 | 1.40727,96.2422,96.1423,164.72,165.171,179.618,171.145 316 | 1.40993,96.2849,96.1803,164.633,165.114,179.623,171.087 317 | 1.41074,96.285,96.1826,164.64,165.134,179.631,171.092 318 | 1.4109,96.2972,96.2339,164.65,165.087,179.634,171.082 319 | 1.41622,96.2888,96.3043,164.379,164.861,179.646,171.072 320 | 1.41593,96.3069,96.2793,164.443,164.849,179.657,171.107 321 | 1.41489,96.4047,96.13,164.513,164.892,179.663,171.161 322 | 1.41466,96.4851,96.0341,164.662,164.873,179.695,171.14 323 | 1.41274,96.7025,95.8175,164.751,165.024,179.709,171.136 324 | 1.41288,96.8799,95.704,164.723,164.932,179.733,171.098 325 | 1.41097,97.0772,95.4521,164.724,165,179.75,171.038 326 | 1.4094,97.1451,95.3081,164.765,165.111,179.75,171.076 327 | 1.40982,97.1607,95.2555,164.827,165.276,179.721,171.134 328 | 1.41001,97.2565,95.1218,164.921,165.254,179.705,171.163 329 | 1.40985,97.3166,95.1913,164.946,165.106,179.669,171.131 330 | 1.4125,97.455,95.1817,164.846,165.18,179.603,171.068 331 | 1.41227,97.4221,95.2727,164.875,165.143,179.545,171.032 332 | 1.41212,97.518,95.3012,164.759,165.014,179.449,170.942 333 | 1.41226,97.6786,95.5465,164.648,164.748,179.387,170.778 334 | 1.41338,98.2633,95.2521,164.412,164.484,179.509,170.44 335 | 1.41248,98.7893,95.1549,164.229,164.485,179.391,170.12 336 | 1.4095,99.3545,95.0372,164.072,164.529,179.338,169.796 337 | 1.40918,99.7634,95.0707,163.83,164.05,179.261,169.38 338 | 1.4137,100.287,94.8908,163.376,164.228,179.21,169.06 339 | 1.41252,100.466,94.8539,163.427,164.257,179.064,168.846 340 | 1.41243,100.635,94.8651,163.356,164.131,178.981,168.634 341 | 1.41095,100.438,95.0451,163.453,163.987,178.814,168.629 342 | 1.41032,100.229,95.4067,163.487,163.887,178.658,168.666 343 | 1.41014,99.8073,95.8263,163.392,163.698,178.465,168.779 344 | 1.41034,99.5151,96.1174,163.22,163.732,178.367,168.886 345 | 1.41067,99.0966,96.5347,162.805,163.748,178.268,168.807 346 | 1.40429,98.801,96.7799,162.417,163.891,178.164,168.675 347 | 1.40622,98.4531,97.0029,161.095,164.194,178.156,168.32 348 | 1.40513,98.2088,97.1013,159.726,164.532,178.13,167.989 349 | 1.40702,98.1998,96.9761,158.346,164.826,178.238,167.768 350 | 1.40832,98.0668,96.9379,156.73,165.165,178.244,167.345 351 | 1.40835,98.0419,96.8665,155.389,165.44,178.296,166.94 352 | 1.41089,97.9809,96.7692,154.472,165.632,178.336,166.69 353 | 1.40066,97.8451,96.7419,154.981,165.743,178.38,166.463 354 | 1.38856,97.7363,96.5402,155.206,165.967,178.414,166.203 355 | 1.37296,97.2499,96.3078,155.699,166.285,178.434,165.876 356 | 1.36712,97.1189,96.1485,156.239,166.58,178.462,165.522 357 | 1.36793,97.0049,95.9517,158.201,166.748,178.609,165.273 358 | 1.36777,97.1024,95.7703,159.224,166.881,178.669,164.743 359 | 1.36355,97.2818,95.4787,159.316,167.172,178.716,164.251 360 | 1.35817,97.832,95.0866,160.694,167.166,178.752,163.444 361 | 1.3802,98.2944,94.4815,162.086,167.126,178.808,162.981 362 | 1.37825,98.6777,93.7462,162.07,167.328,178.912,162.922 363 | 1.37923,98.6486,93.1324,162.56,167.511,179.009,163.312 364 | 1.37938,98.5633,92.7661,162.244,167.36,179.168,164.096 365 | 1.38059,98.2162,92.2377,161.852,167.337,179.315,165.578 366 | 1.38928,97.3374,91.9963,161.589,167.171,179.476,165.608 367 | 1.39238,96.8067,91.8587,160.655,166.402,179.719,166.491 368 | 1.39857,96.3008,91.9715,159.138,163.486,179.847,166.525 369 | -------------------------------------------------------------------------------- /images/fallDetectionSystem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/images/fallDetectionSystem.png -------------------------------------------------------------------------------- /images/kinectSkeleton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/images/kinectSkeleton.png -------------------------------------------------------------------------------- /images/kinectSkeletonFeatures.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/images/kinectSkeletonFeatures.png -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | import tensorflow as tf 2 | import numpy as np 3 | import os 4 | from time import sleep 5 | from common import common as cm 6 | import queue 7 | import threading 8 | import time 9 | from keras.models import load_model 10 | 11 | UBUNTU = True # False 12 | CLASSIFICATION_OUTPUT_TO_STR = {0: "STANDING", 1: "SITTING", 2: "LYING DOWN", 3: "BENDING"} 13 | fallNum = 0 14 | 15 | lowest_y_point = 1000 16 | 17 | # Threshold of how many meters from the lowest point in the room is acceptable to approve the person is lying down on the ground 18 | M_FROM_FLOOR = 0.25 19 | 20 | objects_per_room = {} 21 | 22 | comm = cm() 23 | 24 | def importFloorData(roomNumber): 25 | filepath = "data/floorplans/" + str(roomNumber) + ".txt" 26 | if (os.path.isfile(filepath)): 27 | file = open(filepath, 'r') 28 | objects_per_room[str(roomNumber)] = [] # This room has a list of objects 29 | objects = file.read().splitlines() 30 | num_objects = int(len(objects) / 4) # Each file has 4 coords 31 | for i in range(num_objects): 32 | objects_per_room[str(roomNumber)].append( 33 | objects[(i * 4):(i * 4) + 4]) # Append the object to the list of objects for that particular room 34 | print("FLOOR OBJECT DATA IMPORTED FOR ROOM #" + str(roomNumber) + "... !") 35 | return 36 | 37 | # deprecated but still usable, isLayingOnTheFloor() is the new implementation 38 | def isWithinGroundRange(x, z, roomNumber): 39 | objects = objects_per_room[str(roomNumber)] # Impoted floor data for that room 40 | for object in objects: 41 | if (x > float(object[0]) and x < float(object[1]) and z > float(object[2]) and z < float(object[3])): # If person is on that object 42 | return False 43 | return True 44 | 45 | 46 | def getLSTMClassification(inputVals): 47 | if (inputVals[0][0] < 0.3): 48 | return "LYING DOWN" 49 | classification_output = model.predict(np.array([tuple(inputVals)]).reshape(1,7,1)) 50 | return CLASSIFICATION_OUTPUT_TO_STR[np.argmax(classification_output,1)[0]] 51 | 52 | def isLayingOnTheFloor(footRightPosY, footLeftPosY): 53 | if ((footRightPosY < (lowest_y_point + M_FROM_FLOOR)) and (footLeftPosY < (lowest_y_point + M_FROM_FLOOR))): 54 | return True 55 | return False 56 | 57 | if __name__ == "__main__": 58 | print("Loading model..") 59 | model = load_model('postureDetection_LSTM.h5') 60 | 61 | # LAUNCH TKINTER UI IF USING WINDOWS 62 | root = "" 63 | labelText = "" 64 | if (not UBUNTU): 65 | from tkinter import Tk, StringVar, Label 66 | 67 | root = Tk() 68 | root.title("POSTURE DETECTION") 69 | root.geometry("400x100") 70 | labelText = StringVar() 71 | labelText.set('Starting...!') 72 | button = Label(root, textvariable=labelText, font=("Helvetica", 40)) 73 | button.pack() 74 | root.update() 75 | 76 | roomNumber = 0 # Room number 0 77 | importFloorData(roomNumber) 78 | 79 | #file = open('data/real_time_joints_data.txt', 'w+') 80 | file = open('real_time_joints_data.txt', 'w+') 81 | index = 0 82 | 83 | # Initialization step 84 | # Extract data from sensor and take the lowest point of foot left & right 85 | while (index < 300): # 3 sec * 10numbers/frame 10frames/sec 86 | lines = file.read().splitlines() 87 | file.seek(0) 88 | if (len(lines) >= index + 10): # if there is new data 89 | index += 10 90 | inp = lines[index - 10:index] # get data for next frame 91 | # Which Y-position is lower? 92 | if (float(inp[7]) < float(inp[8])): # Then use inp[5] because it's the smallest Y-point 93 | if (lowest_y_point > float(inp[7])): 94 | lowest_y_point = float(inp[7]) 95 | else: 96 | if (lowest_y_point > float(inp[8])): 97 | lowest_y_point = float(inp[8]) 98 | 99 | print("LOWEST_Y_POINT === " + str(lowest_y_point)) 100 | 101 | # End of initialization step 102 | #file = open('data/real_time_joints_data.txt', 'w+') 103 | file = open('real_time_joints_data.txt', 'w+') 104 | index = 0 105 | 106 | # Start system 107 | while True: 108 | global posture 109 | lines = file.read().splitlines() 110 | file.seek(0) # move cursor to beggining of file for next loop 111 | if (len(lines) >= index + 10): # if there is new data 112 | index += 10 113 | inp = lines[index - 10:index] # get data for next frame 114 | # index += 20 #10 FPS 115 | inp = [float(i) for i in inp] 116 | inputVals = np.random.rand(1, 7) 117 | inputVals[0] = inp[:7] # Only the first 7 values. The other two values will be used to check the floor plan 118 | posture = getLSTMClassification(inputVals) 119 | if (not UBUNTU): 120 | labelText.set(posture) 121 | root.update() 122 | print(posture) 123 | if (posture == "LYING DOWN"): 124 | if (isLayingOnTheFloor(float(inp[7]), float(inp[8]))): 125 | # timestamps = [] 126 | # timestamps.append(inp[9]) 127 | timestamp = inp[9] 128 | fall = True 129 | allowed = 2 # at least 95% of the time detected as LYING DOWN. 130 | allowed_not_on_floor = 5 131 | for i in range(20): # check LYING DOWN for 2 seconds (10fps*2s = 20 frames) 132 | while (len(lines) < index + 10): 133 | lines = file.read().splitlines() 134 | file.seek(0) # move cursor to beggining of file for next loop 135 | index += 10 136 | inp = lines[index - 10:index] # get data for next frame 137 | # index += 20 #10 FPS 138 | inp = [float(i) for i in inp] 139 | inputVals = np.random.rand(1, 7) 140 | inputVals[0] = inp[:7] 141 | # timestamps.append(inp[9]) 142 | posture = getLSTMClassification(inputVals) 143 | print(posture) 144 | if (not UBUNTU): 145 | labelText.set(posture) 146 | root.update() 147 | if (posture == "LYING DOWN"): # Is the person LYING DOWN on the floor? 148 | print('LYING DOWN') 149 | if (isLayingOnTheFloor(float(inp[7]), float(inp[8])) == False): 150 | if (allowed_not_on_floor == 0): 151 | print("PERSON IS NOT LAYING ON THE FLOOR! No fall..!") 152 | fall = False 153 | break 154 | else: 155 | allowed_not_on_floor -= 1 156 | else: # 10% allowed to not be LYING DOWN (2/20) 157 | if (allowed == 0): 158 | print("PERSON HAS NOT BEEN LAYING ON THE FLOOR FOR MORE THAN 2 SECONDS! No fall..!") 159 | fall = False 160 | break 161 | else: 162 | allowed -= 1 163 | if (fall): 164 | if (not UBUNTU): 165 | labelText.set("FALLEN!") 166 | root.update() 167 | print("--FALLEN!--") 168 | 169 | # You can now reset index=0 and delete the file to restart the While loop from current data. 170 | while posture=="LYING DOWN": # Fallen until detected in another posture 171 | while (len(lines) < index + 10): 172 | lines = file.read().splitlines() 173 | file.seek(0) # move cursor to beggining of file for next loop 174 | index += 10 175 | inp = lines[index - 9:index] # get data for next frame 176 | inp = [float(i) for i in inp] 177 | inputVals = np.random.rand(1, 7) 178 | inputVals[0] = inp[:7] 179 | posture = getLSTMClassification(inputVals) 180 | print(posture) 181 | if posture != "LYING DOWN": 182 | if (not UBUNTU): 183 | labelText.set(posture) 184 | root.update() 185 | file = open('real_time_joints_data.txt', 'w+') 186 | index = 0 187 | if (index > 2500): 188 | # index = 300 189 | file = open('real_time_joints_data.txt', 'w+') 190 | index = 0 191 | 192 | 193 | -------------------------------------------------------------------------------- /postureDetection_LSTM.h5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/postureDetection_LSTM.h5 -------------------------------------------------------------------------------- /skeletonTracking/Debug/skeletonTracking.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/Debug/skeletonTracking.pdb -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "skeletonTracking", "skeletonTracking\skeletonTracking.vcxproj", "{E29680E8-3563-4F52-9CC9-383CDBEDBEC9}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|x64 = Debug|x64 11 | Debug|x86 = Debug|x86 12 | Release|x64 = Release|x64 13 | Release|x86 = Release|x86 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {E29680E8-3563-4F52-9CC9-383CDBEDBEC9}.Debug|x64.ActiveCfg = Debug|x64 17 | {E29680E8-3563-4F52-9CC9-383CDBEDBEC9}.Debug|x64.Build.0 = Debug|x64 18 | {E29680E8-3563-4F52-9CC9-383CDBEDBEC9}.Debug|x86.ActiveCfg = Debug|Win32 19 | {E29680E8-3563-4F52-9CC9-383CDBEDBEC9}.Debug|x86.Build.0 = Debug|Win32 20 | {E29680E8-3563-4F52-9CC9-383CDBEDBEC9}.Release|x64.ActiveCfg = Release|x64 21 | {E29680E8-3563-4F52-9CC9-383CDBEDBEC9}.Release|x64.Build.0 = Release|x64 22 | {E29680E8-3563-4F52-9CC9-383CDBEDBEC9}.Release|x86.ActiveCfg = Release|Win32 23 | {E29680E8-3563-4F52-9CC9-383CDBEDBEC9}.Release|x86.Build.0 = Release|Win32 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | EndGlobal 29 | -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/Debug/main.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/skeletonTracking/Debug/main.obj -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/Debug/skeletonTracking.log: -------------------------------------------------------------------------------- 1 |  main.cpp 2 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\main.cpp(11): warning C4005: 'CURL_STATICLIB': macro redefinition 3 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\main.cpp(11): note: command-line arguments: see previous definition of 'CURL_STATICLIB' 4 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\main.cpp(216): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data 5 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\main.cpp(217): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data 6 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\main.cpp(233): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data 7 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\main.cpp(234): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data 8 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\main.cpp(235): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data 9 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\main.cpp(236): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data 10 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\main.cpp(242): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data 11 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\main.cpp(243): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data 12 | LINK : warning LNK4098: defaultlib 'LIBCMTD' conflicts with use of other libs; use /NODEFAULTLIB:library 13 | main.obj : error LNK2019: unresolved external symbol _GetDefaultKinectSensor@4 referenced in function _main 14 | C:\Program Files\Microsoft SDKs\Kinect\v2.0_1409\Lib\x64\\Kinect20.lib : warning LNK4272: library machine type 'x64' conflicts with target machine type 'X86' 15 | C:\Users\Hamza Qassoud\documents\visual studio 2015\Projects\skeletonTracking\Debug\skeletonTracking.exe : fatal error LNK1120: 1 unresolved externals 16 | -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/Debug/skeletonTracking.tlog/CL.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/skeletonTracking/Debug/skeletonTracking.tlog/CL.command.1.tlog -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/Debug/skeletonTracking.tlog/CL.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/skeletonTracking/Debug/skeletonTracking.tlog/CL.read.1.tlog -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/Debug/skeletonTracking.tlog/CL.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/skeletonTracking/Debug/skeletonTracking.tlog/CL.write.1.tlog -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/Debug/skeletonTracking.tlog/link-cvtres.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/skeletonTracking/Debug/skeletonTracking.tlog/link-cvtres.read.1.tlog -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/Debug/skeletonTracking.tlog/link-cvtres.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/skeletonTracking/Debug/skeletonTracking.tlog/link-cvtres.write.1.tlog -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/Debug/skeletonTracking.tlog/link-rc.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/skeletonTracking/Debug/skeletonTracking.tlog/link-rc.read.1.tlog -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/Debug/skeletonTracking.tlog/link-rc.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/skeletonTracking/Debug/skeletonTracking.tlog/link-rc.write.1.tlog -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/Debug/skeletonTracking.tlog/link.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/skeletonTracking/Debug/skeletonTracking.tlog/link.command.1.tlog -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/Debug/skeletonTracking.tlog/link.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/skeletonTracking/Debug/skeletonTracking.tlog/link.read.1.tlog -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/Debug/skeletonTracking.tlog/link.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/skeletonTracking/Debug/skeletonTracking.tlog/link.write.1.tlog -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/Debug/skeletonTracking.tlog/skeletonTracking.lastbuildstate: -------------------------------------------------------------------------------- 1 | #TargetFrameworkVersion=v4.0:PlatformToolSet=v140:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=8.1 2 | Debug|Win32|C:\Users\Hamza Qassoud\documents\visual studio 2015\Projects\skeletonTracking\| 3 | -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/Debug/vc140.idb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/skeletonTracking/Debug/vc140.idb -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/Debug/vc140.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/skeletonTracking/Debug/vc140.pdb -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | #define PI 3.14159265 10 | 11 | int num_frames = 0; 12 | long long fileName = 0; 13 | 14 | void processBodies(const unsigned int &bodyCount, IBody **bodies); 15 | 16 | template 17 | static inline void safeRelease(Interface *&interfaceToRelease) 18 | { 19 | if (interfaceToRelease != nullptr) { 20 | interfaceToRelease->Release(); 21 | interfaceToRelease = nullptr; 22 | } 23 | } 24 | 25 | int main(int argc, char *argv[]) 26 | { 27 | 28 | IKinectSensor *sensor = nullptr; 29 | IBodyFrameReader *bodyFrameReader = nullptr; 30 | 31 | //Get the default Kinect sensor 32 | HRESULT hr = GetDefaultKinectSensor(&sensor); 33 | 34 | //If the function succeeds, open the sensor 35 | if (SUCCEEDED(hr)) { 36 | std::cout << "Sensor detected!\n"; 37 | hr = sensor->Open(); 38 | 39 | if (SUCCEEDED(hr)) { 40 | //Get a body frame source from which we can get our body frame reader 41 | IBodyFrameSource *bodyFrameSource = nullptr; 42 | hr = sensor->get_BodyFrameSource(&bodyFrameSource); 43 | 44 | if (SUCCEEDED(hr)) { 45 | hr = bodyFrameSource->OpenReader(&bodyFrameReader); 46 | } 47 | 48 | //We're done with bodyFrameSource, so we'll release it 49 | safeRelease(bodyFrameSource); 50 | } 51 | } 52 | 53 | if (sensor == nullptr || FAILED(hr)) { 54 | std::cerr << "Cannot find any sensors.\n"; 55 | return E_FAIL; 56 | } 57 | 58 | while (bodyFrameReader != nullptr) { 59 | IBodyFrame *bodyFrame = nullptr; 60 | hr = bodyFrameReader->AcquireLatestFrame(&bodyFrame); 61 | 62 | if (SUCCEEDED(hr)) { 63 | IBody *bodies[BODY_COUNT] = { 0 }; 64 | hr = bodyFrame->GetAndRefreshBodyData(_countof(bodies), bodies); 65 | 66 | if (SUCCEEDED(hr)) { 67 | if (fileName == 0 || fileName + 60000 < std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count()) { 68 | fileName = std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count(); 69 | } 70 | processBodies(BODY_COUNT, bodies); 71 | //After body processing is done, we're done with our bodies so release them. 72 | for (unsigned int bodyIndex = 0; bodyIndex < _countof(bodies); bodyIndex++) { 73 | safeRelease(bodies[bodyIndex]); 74 | } 75 | 76 | safeRelease(bodyFrame); 77 | } 78 | } 79 | else if (sensor) { 80 | BOOLEAN isSensorAvailable = false; 81 | hr = sensor->get_IsAvailable(&isSensorAvailable); 82 | if (SUCCEEDED(hr) && isSensorAvailable == false) { 83 | std::cerr << "No available sensor is found.\n"; 84 | } 85 | } 86 | else { 87 | std::cerr << "Trouble reading the body frame.\n"; 88 | } 89 | } 90 | 91 | return 0; 92 | } 93 | 94 | void processBodies(const unsigned int &bodyCount, IBody **bodies) 95 | { 96 | 97 | //File where to write the XYZ coords pf the skeleton joints. 98 | std::ofstream dataFile; 99 | //dataFile.open("joints_data_standing.txt", std::ofstream::out | std::ofstream::app); 100 | dataFile.open("real_time_joints_data.txt", std::ofstream::out | std::ofstream::app); 101 | if (!dataFile) { //create file if not exists 102 | dataFile.open("joints_data.txt", std::ofstream::out, std::ofstream::trunc); 103 | } 104 | 105 | //Record 1 minute data in this file 106 | std::ofstream oneMinuteFile; 107 | oneMinuteFile.open("C:\\workspace\\FallDetection\\src\\data\\" + std::to_string(fileName) + ".txt", std::ofstream::out | std::ofstream::app); 108 | if (!oneMinuteFile) { //create file if not exists 109 | oneMinuteFile.open("C:\\workspace\\FallDetection\\src\\data\\" + std::to_string(fileName) + ".txt", std::ofstream::out, std::ofstream::trunc); 110 | } 111 | 112 | for (unsigned int bodyIndex = 0; bodyIndex < bodyCount; bodyIndex++) { 113 | IBody *body = bodies[bodyIndex]; 114 | 115 | //Get the tracking status for the body, if it's not tracked we'll skip it 116 | BOOLEAN isTracked = false; 117 | HRESULT hr = body->get_IsTracked(&isTracked); 118 | if (FAILED(hr) || isTracked == false) { 119 | continue; 120 | } 121 | 122 | //If we're here the body is tracked so lets get the joint properties for this skeleton 123 | Joint joints[JointType_Count]; 124 | hr = body->GetJoints(_countof(joints), joints); 125 | if (SUCCEEDED(hr)) { 126 | if (num_frames % 3 == 0) { //Make it 10FPS instead of 30 (divide ratio of 3) 127 | //Get the 25 skeleton joints! 128 | const CameraSpacePoint &spineBasePos = joints[JointType_SpineBase].Position; 129 | const CameraSpacePoint &spineMidPos = joints[JointType_SpineMid].Position; 130 | const CameraSpacePoint &neckPos = joints[JointType_Neck].Position; 131 | const CameraSpacePoint &headPos = joints[JointType_Head].Position; 132 | const CameraSpacePoint &shoulderLeftPos = joints[JointType_ShoulderLeft].Position; 133 | 134 | const CameraSpacePoint &elbowLeftPos = joints[JointType_ElbowLeft].Position; 135 | const CameraSpacePoint &wristLeftPos = joints[JointType_WristLeft].Position; 136 | const CameraSpacePoint &handLeftPos = joints[JointType_HandLeft].Position; 137 | const CameraSpacePoint &shoulderRightPos = joints[JointType_ShoulderRight].Position; 138 | const CameraSpacePoint &elbowRightPos = joints[JointType_ElbowRight].Position; 139 | 140 | const CameraSpacePoint &wristRightPos = joints[JointType_WristRight].Position; 141 | const CameraSpacePoint &handRightPos = joints[JointType_HandRight].Position; 142 | const CameraSpacePoint &hipLeftPos = joints[JointType_HipLeft].Position; 143 | const CameraSpacePoint &kneeLeftPos = joints[JointType_KneeLeft].Position; 144 | const CameraSpacePoint &ankleLeftPos = joints[JointType_AnkleLeft].Position; 145 | 146 | const CameraSpacePoint &footLeftPos = joints[JointType_FootLeft].Position; 147 | const CameraSpacePoint &hipRightPos = joints[JointType_HipRight].Position; 148 | const CameraSpacePoint &kneeRightPos = joints[JointType_KneeRight].Position; 149 | const CameraSpacePoint &ankleRightPos = joints[JointType_AnkleRight].Position; 150 | const CameraSpacePoint &footRightPos = joints[JointType_FootRight].Position; 151 | 152 | const CameraSpacePoint &spineShoulderPos = joints[JointType_SpineShoulder].Position; 153 | const CameraSpacePoint &handTipLeftPos = joints[JointType_HandTipLeft].Position; 154 | const CameraSpacePoint &thumbLeftPos = joints[JointType_ThumbLeft].Position; 155 | const CameraSpacePoint &handTipRightPos = joints[JointType_HandTipRight].Position; 156 | const CameraSpacePoint &thumbRightPos = joints[JointType_ThumbRight].Position; 157 | 158 | //distances between joints 159 | float a = sqrt(pow(hipLeftPos.X - kneeLeftPos.X, 2) + pow(hipLeftPos.Y - kneeLeftPos.Y, 2) + pow(hipLeftPos.Z - kneeLeftPos.Z, 2)); 160 | float b = sqrt(pow(spineBasePos.X - hipLeftPos.X, 2) + pow(spineBasePos.Y - hipLeftPos.Y, 2) + pow(spineBasePos.Z - hipLeftPos.Z, 2)); 161 | float c = sqrt(pow(spineBasePos.X - kneeLeftPos.X, 2) + pow(spineBasePos.Y - kneeLeftPos.Y, 2) + pow(spineBasePos.Z - kneeLeftPos.Z, 2)); 162 | 163 | float d = sqrt(pow(hipRightPos.X - kneeRightPos.X, 2) + pow(hipRightPos.Y - kneeRightPos.Y, 2) + pow(hipRightPos.Z - kneeRightPos.Z, 2)); 164 | float e = sqrt(pow(spineBasePos.X - hipRightPos.X, 2) + pow(spineBasePos.Y - hipRightPos.Y, 2) + pow(spineBasePos.Z - hipRightPos.Z, 2)); 165 | float f = sqrt(pow(spineBasePos.X - kneeRightPos.X, 2) + pow(spineBasePos.Y - kneeRightPos.Y, 2) + pow(spineBasePos.Z - kneeRightPos.Z, 2)); 166 | 167 | float g = sqrt(pow(hipLeftPos.X - ankleLeftPos.X, 2) + pow(hipLeftPos.Y - ankleLeftPos.Y, 2) + pow(hipLeftPos.Z - ankleLeftPos.Z, 2)); 168 | float h = sqrt(pow(kneeLeftPos.X - ankleLeftPos.X, 2) + pow(kneeLeftPos.Y - ankleLeftPos.Y, 2) + pow(kneeLeftPos.Z - ankleLeftPos.Z, 2)); 169 | 170 | float i = sqrt(pow(hipRightPos.X - ankleRightPos.X, 2) + pow(hipRightPos.Y - ankleRightPos.Y, 2) + pow(hipRightPos.Z - ankleRightPos.Z, 2)); 171 | float j = sqrt(pow(kneeRightPos.X - ankleRightPos.X, 2) + pow(kneeRightPos.Y - ankleRightPos.Y, 2) + pow(kneeRightPos.Z - ankleRightPos.Z, 2)); 172 | 173 | float k = sqrt(pow(kneeLeftPos.X - footLeftPos.X, 2) + pow(kneeLeftPos.Y - footLeftPos.Y, 2) + pow(kneeLeftPos.Z - footLeftPos.Z, 2)); 174 | float l = sqrt(pow(ankleLeftPos.X - footLeftPos.X, 2) + pow(ankleLeftPos.Y - footLeftPos.Y, 2) + pow(ankleLeftPos.Z - footLeftPos.Z, 2)); 175 | 176 | float m = sqrt(pow(kneeRightPos.X - footRightPos.X, 2) + pow(kneeRightPos.Y - footRightPos.Y, 2) + pow(kneeRightPos.Z - footRightPos.Z, 2)); 177 | float n = sqrt(pow(ankleRightPos.X - footRightPos.X, 2) + pow(ankleRightPos.Y - footRightPos.Y, 2) + pow(ankleRightPos.Z - footRightPos.Z, 2)); 178 | 179 | float o = sqrt(pow((0.5*ankleLeftPos.X + 0.5*ankleRightPos.X) - footLeftPos.X, 2) + pow(ankleLeftPos.Z - footLeftPos.Z, 2)); 180 | float p = sqrt(pow((0.5*ankleLeftPos.X + 0.5*ankleRightPos.X) - footRightPos.X, 2) + pow(ankleRightPos.Z - footRightPos.Z, 2)); 181 | float q = sqrt(pow(footLeftPos.X - footRightPos.X, 2) + pow(footLeftPos.Y - footRightPos.Y, 2) + pow(footLeftPos.Z - footRightPos.Z, 2)); 182 | 183 | //remove these 184 | //float r = sqrt(pow(spineMidPos.X - spineBasePos.X, 2) + pow(spineMidPos.Y - spineBasePos.Y, 2) + pow(spineMidPos.Z - spineBasePos.Z, 2)); 185 | //float s = sqrt(pow(spineShoulderPos.X - spineMidPos.X, 2) + pow(spineShoulderPos.Y - spineMidPos.Y, 2) + pow(spineShoulderPos.Z - spineMidPos.Z, 2)); 186 | 187 | float r = sqrt(pow(spineBasePos.X - spineShoulderPos.X, 2) + pow(spineBasePos.Z - spineShoulderPos.Z, 2)); 188 | float s = sqrt(r + pow(spineShoulderPos.Y - spineBasePos.Y, 2)); 189 | float t = sqrt(pow(spineShoulderPos.X - spineBasePos.X, 2) + pow(spineShoulderPos.Y - spineBasePos.Y, 2) + pow(spineShoulderPos.Z - spineBasePos.Z, 2)); 190 | 191 | float u = sqrt(pow(spineShoulderPos.X - ((kneeLeftPos.X + kneeRightPos.X) / 2), 2) + pow(spineShoulderPos.Y - ((kneeLeftPos.Y + kneeRightPos.Y) / 2), 2) + pow(spineShoulderPos.Z - ((kneeLeftPos.Z + kneeRightPos.Z) / 2), 2)); 192 | float v = sqrt(pow(spineBasePos.X - ((kneeLeftPos.X + kneeRightPos.X) / 2), 2) + pow(spineBasePos.Y - ((kneeLeftPos.Y + kneeRightPos.Y) / 2), 2) + pow(spineBasePos.Z - ((kneeLeftPos.Z + kneeRightPos.Z) / 2), 2)); 193 | 194 | //8 features from body joints 195 | float height = headPos.Y - std::fmin(footLeftPos.Y, footRightPos.Y); 196 | float leftHipAngle = acos((pow(a, 2) + pow(b, 2) - pow(c, 2)) / (2 * a*b)) * 180 / PI; //180 - (acos(a/c) *180.0 / PI) - (acos(b/c) *180.0 / PI); 197 | float rightHipAngle = acos((pow(e, 2) + pow(d, 2) - pow(f, 2)) / (2 * e*d)) * 180 / PI; // 180 - (acos(d / f) *180.0 / PI) - (acos(e / f) *180.0 / PI); 198 | float leftKneeAngle = acos((pow(a, 2) + pow(h, 2) - pow(g, 2)) / (2 * a*h)) * 180 / PI; // 180 - (acos(a / g) *180.0 / PI) - (acos(h / g) *180.0 / PI); 199 | float rightKneeAngle = acos((pow(d, 2) + pow(j, 2) - pow(i, 2)) / (2 * d*j)) * 180 / PI; // 180 - (acos(d / i) *180.0 / PI) - (acos(j / i) *180.0 / PI); 200 | 201 | //float leftAnkleAngle = acos((pow(h, 2) + pow(l, 2) - pow(k, 2)) / (2 * h*l)) * 180 / PI; // 180 - (acos(h / k) *180.0 / PI) - (acos(l / k) *180.0 / PI); 202 | //float rightAnkleAngle = acos((pow(j, 2) + pow(n, 2) - pow(m, 2)) / (2 * j*n)) * 180 / PI; // 180 - (acos(j / m) *180.0 / PI) - (acos(n / m) *180.0 / PI); 203 | //float twoFeetAngle = acos((pow(o, 2) + pow(p, 2) - pow(q, 2)) / (2 * o*p)) * 180 / PI; // 180 - (acos(o / q) *180.0 / PI) - (acos(p / q) *180.0 / PI); 204 | 205 | float chestAngle = 180 - (acos((pow(t, 2) + pow(s, 2) - pow(r, 2)) / (2 * t*s)) * 180 / PI); //acos((pow(r, 2) + pow(s, 2) - pow(t, 2)) / (2 * r*s)) * 180 / PI; 206 | float chestKneeAngle = acos((pow(t, 2) + pow(v, 2) - pow(u, 2)) / (2 * t*v)) * 180 / PI; 207 | 208 | //Prints the joints coords in the data file if data is not 'nan' 209 | if (height == height && leftHipAngle == leftHipAngle && rightHipAngle == rightHipAngle && leftKneeAngle == leftKneeAngle 210 | && rightKneeAngle == rightKneeAngle && chestAngle == chestAngle && chestKneeAngle == chestKneeAngle && footRightPos.Y == footRightPos.Y 211 | && footLeftPos.Y == footLeftPos.Y) { 212 | dataFile << height << "\n"; 213 | dataFile << leftHipAngle << "\n"; 214 | dataFile << rightHipAngle << "\n"; 215 | dataFile << leftKneeAngle << "\n"; 216 | dataFile << rightKneeAngle << "\n"; 217 | dataFile << chestAngle << "\n"; 218 | dataFile << chestKneeAngle << "\n"; 219 | //these two are only for the real time application! 220 | dataFile << footRightPos.Y << "\n"; 221 | dataFile << footLeftPos.Y << "\n"; 222 | //frame timestamp 223 | dataFile << std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count() << "\n"; 224 | } 225 | } 226 | num_frames++; //only if succeeded to retrieve body joints! 227 | } 228 | } 229 | dataFile.close(); 230 | } -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/skeletonTracking.vcxproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | Debug 14 | x64 15 | 16 | 17 | Release 18 | x64 19 | 20 | 21 | 22 | {E29680E8-3563-4F52-9CC9-383CDBEDBEC9} 23 | skeletonTracking 24 | 8.1 25 | 26 | 27 | 28 | Application 29 | true 30 | v140 31 | MultiByte 32 | 33 | 34 | Application 35 | false 36 | v140 37 | true 38 | MultiByte 39 | 40 | 41 | Application 42 | true 43 | v140_xp 44 | Unicode 45 | Static 46 | 47 | 48 | Application 49 | false 50 | v140_xp 51 | true 52 | Unicode 53 | Static 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | Level3 77 | Disabled 78 | true 79 | $(KINECTSDK20_DIR)inc;C:\Users\Hamza Qassoud\Documents\Visual Studio 2015\Projects\skeletonTracking\skeletonTracking\curl;%(AdditionalIncludeDirectories) 80 | MultiThreadedDebugDLL 81 | _CONSOLE;_DEBUG;_WIN32;CURL_STATICLIB;%(PreprocessorDefinitions) 82 | 83 | 84 | Console 85 | $(KINECTSDK20_DIR)Lib\x64\;C:\Users\Hamza Qassoud\Documents\Visual Studio 2015\Projects\skeletonTracking\skeletonTracking\curl;%(AdditionalLibraryDirectories) 86 | Kinect20.lib;libcurl_a_debug.lib;%(AdditionalDependencies) 87 | 88 | 89 | 90 | 91 | Level3 92 | Disabled 93 | true 94 | $(KINECTSDK20_DIR)inc;%(AdditionalIncludeDirectories) 95 | MultiThreadedDebug 96 | _DEBUG;_CONSOLE;CURL_STATICLIB;%(PreprocessorDefinitions) 97 | 98 | 99 | $(KINECTSDK20_DIR)Lib\x64\;%(AdditionalLibraryDirectories) 100 | Kinect20.lib;%(AdditionalDependencies) 101 | Console 102 | 103 | 104 | 105 | 106 | Level3 107 | MaxSpeed 108 | true 109 | true 110 | true 111 | 112 | 113 | true 114 | true 115 | 116 | 117 | 118 | 119 | Level3 120 | MaxSpeed 121 | true 122 | true 123 | true 124 | $(KINECTSDK20_DIR)inc;C:\apps\C++libraries\curlpp-0.7.3\include;C:\apps\C++libraries\curl-7.54.1\include;%(AdditionalIncludeDirectories) 125 | CRUL_STATICLIB;%(PreprocessorDefinitions) 126 | MultiThreadedDLL 127 | 128 | 129 | true 130 | true 131 | $(KINECTSDK20_DIR)Lib\x64\;C:\apps\C++libraries\curl-7.54.1\lib\;%(AdditionalLibraryDirectories) 132 | Kinect20.lib;%(AdditionalDependencies) 133 | Console 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/skeletonTracking.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Source Files 20 | 21 | 22 | Source Files 23 | 24 | 25 | -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/skeletonTracking.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/x64/Debug/main.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/skeletonTracking/x64/Debug/main.obj -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/x64/Debug/server.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/skeletonTracking/x64/Debug/server.obj -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/x64/Debug/skeletonTracking.Build.CppClean.log: -------------------------------------------------------------------------------- 1 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\x64\debug\vc140.pdb 2 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\x64\debug\vc140.idb 3 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\x64\debug\main.obj 4 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\x64\debug\skeletontracking.pdb 5 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\x64\debug\skeletontracking.tlog\cl.command.1.tlog 6 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\x64\debug\skeletontracking.tlog\cl.read.1.tlog 7 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\x64\debug\skeletontracking.tlog\cl.write.1.tlog 8 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\x64\debug\skeletontracking.tlog\link-cvtres.read.1.tlog 9 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\x64\debug\skeletontracking.tlog\link-cvtres.write.1.tlog 10 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\x64\debug\skeletontracking.tlog\link-mt.read.1.tlog 11 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\x64\debug\skeletontracking.tlog\link-mt.write.1.tlog 12 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\x64\debug\skeletontracking.tlog\link-rc.read.1.tlog 13 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\x64\debug\skeletontracking.tlog\link-rc.write.1.tlog 14 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\x64\debug\skeletontracking.tlog\link.command.1.tlog 15 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\x64\debug\skeletontracking.tlog\link.read.1.tlog 16 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\x64\debug\skeletontracking.tlog\link.write.1.tlog 17 | -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/x64/Debug/skeletonTracking.log: -------------------------------------------------------------------------------- 1 |  main.cpp 2 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\main.cpp(240): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data 3 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\main.cpp(241): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data 4 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\main.cpp(257): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data 5 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\main.cpp(258): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data 6 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\main.cpp(259): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data 7 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\main.cpp(260): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data 8 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\main.cpp(266): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data 9 | c:\users\hamza qassoud\documents\visual studio 2015\projects\skeletontracking\skeletontracking\main.cpp(267): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data 10 | Generating Code... 11 | Skipping... (no relevant changes detected) 12 | server.cpp 13 | skeletonTracking.vcxproj -> C:\Users\Hamza Qassoud\documents\visual studio 2015\Projects\skeletonTracking\x64\Debug\skeletonTracking.exe 14 | skeletonTracking.vcxproj -> C:\Users\Hamza Qassoud\documents\visual studio 2015\Projects\skeletonTracking\x64\Debug\skeletonTracking.pdb (Partial PDB) 15 | -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/x64/Debug/skeletonTracking.tlog/CL.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/skeletonTracking/x64/Debug/skeletonTracking.tlog/CL.command.1.tlog -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/x64/Debug/skeletonTracking.tlog/CL.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/skeletonTracking/x64/Debug/skeletonTracking.tlog/CL.read.1.tlog -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/x64/Debug/skeletonTracking.tlog/CL.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/skeletonTracking/x64/Debug/skeletonTracking.tlog/CL.write.1.tlog -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/x64/Debug/skeletonTracking.tlog/link.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/skeletonTracking/x64/Debug/skeletonTracking.tlog/link.command.1.tlog -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/x64/Debug/skeletonTracking.tlog/link.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/skeletonTracking/x64/Debug/skeletonTracking.tlog/link.read.1.tlog -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/x64/Debug/skeletonTracking.tlog/link.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/skeletonTracking/x64/Debug/skeletonTracking.tlog/link.write.1.tlog -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/x64/Debug/skeletonTracking.tlog/skeletonTracking.lastbuildstate: -------------------------------------------------------------------------------- 1 | #TargetFrameworkVersion=v4.0:PlatformToolSet=v140_xp:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=8.1 2 | Debug|x64|C:\Users\Hamza Qassoud\documents\visual studio 2015\Projects\skeletonTracking\| 3 | -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/x64/Debug/vc140.idb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/skeletonTracking/x64/Debug/vc140.idb -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/x64/Debug/vc140.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/skeletonTracking/x64/Debug/vc140.pdb -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/x64/Release/main.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/skeletonTracking/x64/Release/main.obj -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/x64/Release/skeletonTracking.log: -------------------------------------------------------------------------------- 1 |  main.cpp 2 | main.cpp(11): warning C4005: 'CRUL_STATICLIB': macro redefinition 3 | main.cpp(11): note: command-line arguments: see previous definition of 'CRUL_STATICLIB' 4 | main.cpp(217): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data 5 | main.cpp(218): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data 6 | main.cpp(234): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data 7 | main.cpp(235): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data 8 | main.cpp(236): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data 9 | main.cpp(237): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data 10 | main.cpp(243): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data 11 | main.cpp(244): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data 12 | main.obj : error LNK2001: unresolved external symbol __imp_curl_easy_perform 13 | main.obj : error LNK2001: unresolved external symbol __imp_curl_global_init 14 | main.obj : error LNK2001: unresolved external symbol __imp_curl_global_cleanup 15 | main.obj : error LNK2001: unresolved external symbol __imp_curl_easy_init 16 | main.obj : error LNK2001: unresolved external symbol __imp_curl_easy_cleanup 17 | main.obj : error LNK2001: unresolved external symbol __imp_curl_easy_setopt 18 | C:\Users\Hamza Qassoud\documents\visual studio 2015\Projects\skeletonTracking\x64\Release\skeletonTracking.exe : fatal error LNK1120: 6 unresolved externals 19 | -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/x64/Release/skeletonTracking.tlog/CL.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/skeletonTracking/x64/Release/skeletonTracking.tlog/CL.command.1.tlog -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/x64/Release/skeletonTracking.tlog/CL.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/skeletonTracking/x64/Release/skeletonTracking.tlog/CL.read.1.tlog -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/x64/Release/skeletonTracking.tlog/CL.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/skeletonTracking/x64/Release/skeletonTracking.tlog/CL.write.1.tlog -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/x64/Release/skeletonTracking.tlog/link.command.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/skeletonTracking/x64/Release/skeletonTracking.tlog/link.command.1.tlog -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/x64/Release/skeletonTracking.tlog/link.read.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/skeletonTracking/x64/Release/skeletonTracking.tlog/link.read.1.tlog -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/x64/Release/skeletonTracking.tlog/link.write.1.tlog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/skeletonTracking/x64/Release/skeletonTracking.tlog/link.write.1.tlog -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/x64/Release/skeletonTracking.tlog/skeletonTracking.lastbuildstate: -------------------------------------------------------------------------------- 1 | #TargetFrameworkVersion=v4.0:PlatformToolSet=v140_xp:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=8.1 2 | Release|x64|C:\Users\Hamza Qassoud\documents\visual studio 2015\Projects\skeletonTracking\| 3 | -------------------------------------------------------------------------------- /skeletonTracking/skeletonTracking/x64/Release/vc140.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/skeletonTracking/x64/Release/vc140.pdb -------------------------------------------------------------------------------- /skeletonTracking/x64/Debug/skeletonTracking.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/x64/Debug/skeletonTracking.exe -------------------------------------------------------------------------------- /skeletonTracking/x64/Debug/skeletonTracking.ilk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/x64/Debug/skeletonTracking.ilk -------------------------------------------------------------------------------- /skeletonTracking/x64/Debug/skeletonTracking.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/x64/Debug/skeletonTracking.pdb -------------------------------------------------------------------------------- /skeletonTracking/x64/Release/skeletonTracking.iobj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/x64/Release/skeletonTracking.iobj -------------------------------------------------------------------------------- /skeletonTracking/x64/Release/skeletonTracking.ipdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/x64/Release/skeletonTracking.ipdb -------------------------------------------------------------------------------- /skeletonTracking/x64/Release/skeletonTracking.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Health-Devices-Research-Group/Posture-and-Fall-Detection-System-Using-3D-Motion-Sensors/219d05eccc4c649f881a8354e5544a42d54c6b26/skeletonTracking/x64/Release/skeletonTracking.pdb --------------------------------------------------------------------------------