ruby-freenect 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,149 @@
1
+ module Freenect
2
+
3
+ FREENECT_COUNTS_PER_G = Driver::FREENECT_COUNTS_PER_G
4
+ FREENECT_DEVICE_FLAGS = Driver::FREENECT_DEVICE_FLAGS
5
+ FREENECT_RESOLUTION = Driver::FREENECT_RESOLUTION
6
+ FREENECT_VIDEO_FORMAT = Driver::FREENECT_VIDEO_FORMAT
7
+ FREENECT_DEPTH_FORMAT = Driver::FREENECT_DEPTH_FORMAT
8
+ FREENECT_LED_OPTIONS = Driver::FREENECT_LED_OPTIONS
9
+ FREENECT_TILT_STATUS_CODE = Driver::FREENECT_TILT_STATUS_CODE
10
+ FREENECT_LOGLEVEL = Driver::FREENECT_LOGLEVEL
11
+
12
+ class << self
13
+ def method_missing(meth, *args, &blk)
14
+ Interface.send(meth, *args, &blk)
15
+ end
16
+ def init(*args)
17
+ Context.new(*args)
18
+ end
19
+ end
20
+
21
+ class Context
22
+ include Freenect::Driver
23
+ attr_reader :context
24
+ def initialize
25
+ context_p = FFI::MemoryPointer.new(:pointer)
26
+ freenect_init(context_p, nil)
27
+ @context = context_p.read_pointer
28
+ end
29
+ def get_device_count
30
+ freenect_num_devices(context)
31
+ end
32
+ def close
33
+ freenect_shutdown(context)
34
+ end
35
+ end
36
+
37
+ class Interface
38
+ extend Freenect::Driver
39
+
40
+ @video_mode, @depth_mode = {}, {}
41
+
42
+ class << self
43
+
44
+ def get_device_count
45
+ context = Freenect::Context.new
46
+ count = context.get_device_count
47
+ context.close; count
48
+ end
49
+
50
+ def get_video_mode_count
51
+ freenect_get_video_mode_count
52
+ end
53
+
54
+ def get_video_mode(mode_id)
55
+ freenect_get_video_mode(mode_id)
56
+ end
57
+
58
+ def get_current_video_mode(idx=0)
59
+ (@video_mode || {})[idx]
60
+ end
61
+
62
+ def find_video_mode(format=:freenect_video_rgb, resolution=:freenect_resolution_medium)
63
+ freenect_find_video_mode(resolution, format)
64
+ end
65
+
66
+ def get_video(video_mode, idx=0)
67
+ video_p, timestamp_p = pointer(:pointer, 1), pointer(:uint32)
68
+ set_current_video_mode(video_mode, idx)
69
+ freenect_sync_get_video(video_p, timestamp_p, idx, Freenect::FREENECT_VIDEO_FORMAT[video_mode[:format][:video_format]])
70
+ video_p.read_pointer.get_bytes(0, video_mode[:bytes])
71
+ end
72
+
73
+ def get_depth_mode_count
74
+ freenect_get_depth_mode_count
75
+ end
76
+
77
+ def get_depth_mode(mode_id)
78
+ freenect_get_depth_mode(mode_id)
79
+ end
80
+
81
+ def get_current_depth_mode(idx=0)
82
+ (@depth_mode || {})[idx]
83
+ end
84
+
85
+ def find_depth_mode(format=:freenect_depth_11bit, resolution=:freenect_resolution_medium)
86
+ freenect_find_depth_mode(resolution, format)
87
+ end
88
+
89
+ def get_depth(depth_mode, idx=0)
90
+ depth_p, timestamp_p = pointer(:pointer, 1), pointer(:uint32)
91
+ set_current_depth_mode(depth_mode, idx)
92
+ freenect_sync_get_depth(depth_p, timestamp_p, idx, Freenect::FREENECT_DEPTH_FORMAT[depth_mode[:format][:depth_format]])
93
+ depth_p.read_pointer.get_bytes(0, depth_mode[:bytes])
94
+ end
95
+
96
+ def set_tilt(angle, idx=0)
97
+ freenect_sync_set_tilt_degs(angle, idx)
98
+ end
99
+
100
+ def get_tilt(tilt_state=nil, idx=0)
101
+ tilt_state ||= get_tilt_state(idx)
102
+ freenect_get_tilt_degs(tilt_state)
103
+ end
104
+
105
+ def get_tilt_status(tilt_state=nil, idx=0)
106
+ tilt_state ||= get_tilt_state(idx)
107
+ freenect_get_tilt_status(tilt_state)
108
+ end
109
+
110
+ def get_tilt_state(idx=0)
111
+ state_ptr = pointer(:pointer)
112
+ freenect_sync_get_tilt_state(state_ptr, idx)
113
+ FreenectRawTiltState.new(state_ptr.get_pointer(0))
114
+ end
115
+
116
+ def get_acceleration(tilt_state=nil, idx=0)
117
+ tilt_state ||= get_tilt_state(idx)
118
+ xacc = pointer(:double)
119
+ yacc = pointer(:double)
120
+ zacc = pointer(:double)
121
+ freenect_get_mks_accel(tilt_state, xacc, yacc, zacc)
122
+ {:x=>xacc.read_double, :y=>yacc.read_double, :z=>zacc.read_double}
123
+ end
124
+
125
+ def set_led(led_option, idx=0)
126
+ freenect_sync_set_led(Freenect::FREENECT_LED_OPTIONS[led_option], idx)
127
+ end
128
+
129
+ def stop
130
+ freenect_sync_stop()
131
+ end
132
+
133
+ private
134
+
135
+ def set_current_video_mode(video_mode, idx)
136
+ (@video_mode ||={})[idx] = video_mode
137
+ end
138
+
139
+ def set_current_depth_mode(depth_mode, idx)
140
+ (@depth_mode ||= {})[idx] = depth_mode
141
+ end
142
+
143
+ def pointer(*args)
144
+ FFI::MemoryPointer.new(*args)
145
+ end
146
+
147
+ end
148
+ end
149
+ end
@@ -0,0 +1,56 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "ruby-freenect"
8
+ s.version = "0.0.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Troy Stribling"]
12
+ s.date = "2012-01-02"
13
+ s.description = "Ruby bindings for the libfreenect Kinect driver"
14
+ s.extra_rdoc_files = [
15
+ "LICENSE.txt",
16
+ "README.rdoc"
17
+ ]
18
+ s.files = [
19
+ ".gems",
20
+ ".rvmrc",
21
+ "LICENSE.txt",
22
+ "README.rdoc",
23
+ "Rakefile",
24
+ "VERSION",
25
+ "examples/depth.rb",
26
+ "examples/ir.rb",
27
+ "examples/kinect.rb",
28
+ "examples/led.rb",
29
+ "examples/tilt.rb",
30
+ "examples/tools.rb",
31
+ "examples/video.rb",
32
+ "freenect4r.gemspec",
33
+ "lib/freenect.rb",
34
+ "lib/freenect/driver.rb",
35
+ "lib/freenect/freenect.rb",
36
+ "ruby-freenect.gemspec"
37
+ ]
38
+ s.homepage = "https://github.com/troystribling/freenect4r"
39
+ s.rdoc_options = ["--title", "FFI Freenect", "--main", "README.rdoc", "--line-numbers"]
40
+ s.require_paths = ["lib"]
41
+ s.rubygems_version = "1.8.10"
42
+ s.summary = "Ruby bindings for the libfreenect Kinect driver"
43
+
44
+ if s.respond_to? :specification_version then
45
+ s.specification_version = 3
46
+
47
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
48
+ s.add_runtime_dependency(%q<ffi>, [">= 1.0.11"])
49
+ else
50
+ s.add_dependency(%q<ffi>, [">= 1.0.11"])
51
+ end
52
+ else
53
+ s.add_dependency(%q<ffi>, [">= 1.0.11"])
54
+ end
55
+ end
56
+
metadata ADDED
@@ -0,0 +1,80 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ruby-freenect
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Troy Stribling
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-01-02 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: ffi
16
+ requirement: &81131700 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 1.0.11
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *81131700
25
+ description: Ruby bindings for the libfreenect Kinect driver
26
+ email:
27
+ executables: []
28
+ extensions: []
29
+ extra_rdoc_files:
30
+ - LICENSE.txt
31
+ - README.rdoc
32
+ files:
33
+ - .gems
34
+ - .rvmrc
35
+ - LICENSE.txt
36
+ - README.rdoc
37
+ - Rakefile
38
+ - VERSION
39
+ - examples/depth.rb
40
+ - examples/ir.rb
41
+ - examples/kinect.rb
42
+ - examples/led.rb
43
+ - examples/tilt.rb
44
+ - examples/tools.rb
45
+ - examples/video.rb
46
+ - freenect4r.gemspec
47
+ - lib/freenect.rb
48
+ - lib/freenect/driver.rb
49
+ - lib/freenect/freenect.rb
50
+ - ruby-freenect.gemspec
51
+ homepage: https://github.com/troystribling/freenect4r
52
+ licenses: []
53
+ post_install_message:
54
+ rdoc_options:
55
+ - --title
56
+ - FFI Freenect
57
+ - --main
58
+ - README.rdoc
59
+ - --line-numbers
60
+ require_paths:
61
+ - lib
62
+ required_ruby_version: !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ! '>='
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ required_rubygems_version: !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ! '>='
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ requirements: []
75
+ rubyforge_project:
76
+ rubygems_version: 1.8.10
77
+ signing_key:
78
+ specification_version: 3
79
+ summary: Ruby bindings for the libfreenect Kinect driver
80
+ test_files: []