artoo-neurosky 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6931d8b72d53dfb498d0cfeb9b72599db2c7edf7
4
+ data.tar.gz: 7271aa5fe9d8d6a9a11e14d45cea120a05971b82
5
+ SHA512:
6
+ metadata.gz: 34cbbb9a0e0c80f5db27f3815bbd01e85613c62d0448161d6e12749a7a0aad9dab17e034654b2fa10df4b454a7358ff514929a9166aab6fef480e6be019f4c7c
7
+ data.tar.gz: b087bbbac9892640535de5ab35ffd10d52a562c77a24234a969b0b9d8d28ae5176e9eb319b9a8675de061f075825382770fad30ebb84d0c7daf5ebf6373be8c1
data/.gitignore ADDED
@@ -0,0 +1,3 @@
1
+ .rvmrc
2
+ .rbx
3
+ pkg
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in artoo-neurosky.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,55 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ artoo-neurosky (0.1.0)
5
+ artoo (>= 1.6.4)
6
+ mindset
7
+
8
+ GEM
9
+ remote: http://rubygems.org/
10
+ specs:
11
+ artoo (1.6.4)
12
+ celluloid (~> 0.15)
13
+ celluloid-io (~> 0.15)
14
+ http (~> 0.5)
15
+ multi_json (~> 1.6)
16
+ pry (~> 0.9)
17
+ rake
18
+ reel (~> 0.4)
19
+ robeaux (~> 0.0.4)
20
+ thor (~> 0.18.1)
21
+ celluloid (0.15.2)
22
+ timers (~> 1.1.0)
23
+ celluloid-io (0.15.0)
24
+ celluloid (>= 0.15.0)
25
+ nio4r (>= 0.5.0)
26
+ coderay (1.1.0)
27
+ http (0.5.0)
28
+ http_parser.rb
29
+ http_parser.rb (0.6.0)
30
+ method_source (0.8.2)
31
+ mindset (0.2)
32
+ multi_json (1.9.2)
33
+ nio4r (1.0.0)
34
+ pry (0.9.12.6)
35
+ coderay (~> 1.0)
36
+ method_source (~> 0.8)
37
+ slop (~> 3.4)
38
+ rake (10.2.2)
39
+ reel (0.4.0)
40
+ celluloid (>= 0.15.1)
41
+ celluloid-io (>= 0.15.0)
42
+ http (>= 0.5.0)
43
+ http_parser.rb (>= 0.6.0.beta.2)
44
+ websocket_parser (>= 0.1.4)
45
+ robeaux (0.0.4)
46
+ slop (3.5.0)
47
+ thor (0.18.1)
48
+ timers (1.1.0)
49
+ websocket_parser (0.1.6)
50
+
51
+ PLATFORMS
52
+ ruby
53
+
54
+ DEPENDENCIES
55
+ artoo-neurosky!
data/LICENSE ADDED
@@ -0,0 +1,13 @@
1
+ Copyright (c) 2012-2014 The Hybrid Group
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
data/README.md ADDED
@@ -0,0 +1,96 @@
1
+ # Artoo Adaptor For Sphero
2
+
3
+ This repository contains the Artoo (http://artoo.io/) adaptor for the Neurosky Mindwave Mobile EEG (http://store.neurosky.com/products/mindwave-mobile).
4
+
5
+ Artoo is a open source framework for robotics using Ruby.
6
+
7
+ For more information abut Artoo, check out our repo at https://github.com/hybridgroup/artoo
8
+
9
+ [![Code Climate](https://codeclimate.com/github/hybridgroup/artoo-neurosky.png)](https://codeclimate.com/github/hybridgroup/artoo-neurosky) [![Build Status](https://travis-ci.org/hybridgroup/artoo-neurosky.png?branch=master)](https://travis-ci.org/hybridgroup/artoo-neurosky)
10
+
11
+ ## Installing
12
+
13
+ ```
14
+ gem install artoo-neurosky
15
+ ```
16
+
17
+ Afterwards you need to install `socat` - for this please run the following command (works on both OSX and Linux):
18
+
19
+ ```
20
+ artoo install socat
21
+ ```
22
+
23
+ ## Using
24
+
25
+ ```ruby
26
+ require 'artoo'
27
+
28
+ connection :neurosky, :adaptor => :neurosky, :port => '/dev/rfcomm0'
29
+ device :neurosky, :driver => :neurosky, :interval => 0.1
30
+
31
+ def handle_eeg(sender, data)
32
+ puts data
33
+ end
34
+
35
+ work do
36
+ puts "Scanning..."
37
+ on neurosky, :eeg => :handle_eeg
38
+ end
39
+ ```
40
+
41
+ ## Connecting to Mindwave
42
+
43
+ ### OSX
44
+
45
+ The main steps are:
46
+ - Pair your computer and the Mindwave
47
+ - Use a socket to serial connection to map a TCP socket to the local unix port
48
+ - Connect to the device via Artoo
49
+
50
+ First pair your computer and Mindwave. You might be prompted for a passcode, if so enter '0000'.
51
+
52
+ Once paired, use the `artoo connect scan` command to find out your connection info:
53
+
54
+ ```
55
+ $ artoo connect scan
56
+ ```
57
+
58
+ Now you are ready to connect to the Mindwave using the socket, in this example port 4567:
59
+
60
+ ```
61
+ artoo connect serial /dev/rfcomm0 4567
62
+ ```
63
+
64
+ ### Ubuntu
65
+
66
+ The main steps are:
67
+ - Pair your computer and the Mindwave
68
+ - Map your device to a unix port
69
+ - Use a socket to serial connection to map a TCP socket to the local unix port
70
+ - Connect to the device via Artoo
71
+
72
+ First pair your computer and Mindwave. You might be prompted for a passcode, if so enter '0000'.
73
+
74
+ Once paired, use the `artoo connect scan` command to find out your connection info:
75
+
76
+ ```
77
+ $ artoo connect scan
78
+ Scanning ...
79
+ 00:06:66:4A:14:99 Mindwave
80
+ ```
81
+
82
+ Next, you need to bind the Mindawave to the system port. In the above example, /dev/rfcomm0. The easiest way to do this is to use the `artoo connect bind` command:
83
+
84
+ ```
85
+ artoo connect bind 00:06:66:4A:14:99 /dev/rfcomm0
86
+ ```
87
+
88
+ Now you are ready to connect to the Sphero using the socket, in this example port 4567:
89
+
90
+ ```
91
+ artoo connect serial /dev/rfcomm0 4567
92
+ ```
93
+
94
+ ### Windows
95
+
96
+ We are currently working with the Celluloid team to add Windows support. Please check back soon!
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require 'rake/testtask'
5
+
6
+ Rake::TestTask.new do |t|
7
+ t.pattern = "test/**/*_test.rb"
8
+ end
9
+
10
+ task :default => :test
@@ -0,0 +1,30 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "artoo-neurosky/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "artoo-neurosky"
7
+ s.version = Artoo::Neurosky::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Ron Evans"]
10
+ s.email = ["artoo@hybridgroup.com"]
11
+ s.homepage = "https://github.com/hybridgroup/artoo-neurosky"
12
+ s.license = "Apache 2.0"
13
+ s.summary = %q{Artoo adaptor and driver for Neurosky}
14
+ s.description = %q{Artoo adaptor and driver for Neurosky}
15
+
16
+ s.rubyforge_project = "artoo-neurosky"
17
+
18
+ s.files = `git ls-files`.split("\n")
19
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
+ s.require_paths = ["lib"]
22
+
23
+ s.add_runtime_dependency 'artoo', '>= 1.6.4'
24
+ s.add_runtime_dependency 'mindset'
25
+ # TODO: add your development dependencies here
26
+ # EXAMPLE:
27
+ # s.add_development_dependency 'minitest', '>= 5.0'
28
+ # s.add_development_dependency 'minitest-happy'
29
+ # s.add_development_dependency 'mocha', '>= 0.14.0'
30
+ end
data/example/eeg.rb ADDED
@@ -0,0 +1,13 @@
1
+ require 'artoo'
2
+
3
+ connection :neurosky, :adaptor => :neurosky, :port => '/dev/rfcomm0'
4
+ device :neurosky, :driver => :neurosky, :interval => 0.1
5
+
6
+ def handle_eeg(sender, data)
7
+ puts data
8
+ end
9
+
10
+ work do
11
+ puts "Scanning..."
12
+ on neurosky, :eeg => :handle_eeg
13
+ end
data/example/neuro.rb ADDED
@@ -0,0 +1,8 @@
1
+ require 'artoo'
2
+
3
+ connection :neurosky, :adaptor => :neurosky, :port => '/dev/rfcomm0'
4
+ device :neurosky, :driver => :neurosky, :interval => 0.5
5
+
6
+ work do
7
+ puts "Scanning..."
8
+ end
@@ -0,0 +1,3 @@
1
+ require 'lib/artoo/adaptors/neurosky'
2
+ require 'lib/artoo/drivers/neurosky'
3
+ require 'lib/artoo-neurosky/version'
@@ -0,0 +1,5 @@
1
+ module Artoo
2
+ module Neurosky
3
+ VERSION = '0.1.0'
4
+ end
5
+ end
@@ -0,0 +1,59 @@
1
+ require 'artoo/adaptors/adaptor'
2
+
3
+ module Artoo
4
+ module Adaptors
5
+ # Connect to a neurosky device
6
+ # @see device documentation for more information
7
+ class Neurosky < Adaptor
8
+ attr_reader :neurosky
9
+
10
+ # Number of retries when connecting
11
+ RETRY_COUNT = 5
12
+
13
+ # Creates a connection with device
14
+ # @return [Boolean]
15
+ def connect
16
+ @retries_left = RETRY_COUNT
17
+ require 'mindset' unless defined?(::Mindset)
18
+ begin
19
+ @neurosky = ::Mindset.connect(connect_to)
20
+ super
21
+ return true
22
+ rescue Errno::EBUSY, Errno::ECONNREFUSED => e
23
+ @retries_left -= 1
24
+ if @retries_left > 0
25
+ retry
26
+ else
27
+ Logger.error e.message
28
+ Logger.error e.backtrace.inspect
29
+ return false
30
+ end
31
+ end
32
+ end
33
+
34
+ # Closes connection with device
35
+ # @return [Boolean]
36
+ def disconnect
37
+ neurosky.disconnect if connected?
38
+ end
39
+
40
+ # Name of device
41
+ # @return [String]
42
+ def name
43
+ "neurosky"
44
+ end
45
+
46
+ # Version of device
47
+ # @return [String]
48
+ def version
49
+ Artoo::Neurosky::VERSION
50
+ end
51
+
52
+ # Uses method missing to call device actions
53
+ # @see device documentation
54
+ def method_missing(method_name, *arguments, &block)
55
+ neurosky.send(method_name, *arguments, &block)
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,68 @@
1
+ require 'artoo/drivers/driver'
2
+
3
+ module Artoo
4
+ module Drivers
5
+ # The neurosky driver behaviors
6
+ class Neurosky < Driver
7
+
8
+ # Start driver and any required connections
9
+ def start_driver
10
+ begin
11
+ every(interval) do
12
+ handle_message_events
13
+ end
14
+
15
+ super
16
+ rescue Exception => e
17
+ Logger.error "Error starting Neurosky driver!"
18
+ Logger.error e.message
19
+ Logger.error e.backtrace.inspect
20
+ end
21
+ end
22
+
23
+ def handle_message_events
24
+ begin
25
+ while true do
26
+ packets = connection.read_packet
27
+ return if packets.empty?
28
+ packets.each { |pkt|
29
+ handle_packet(pkt)
30
+ }
31
+ end
32
+ #rescue ::Mindset::Connection::TimeoutError, Interrupt => e
33
+ #cont = false
34
+ end
35
+ end
36
+
37
+ def handle_packet(packet)
38
+ case
39
+ when packet[:wave]
40
+ publish(event_topic_name("wave"), packet[:wave])
41
+
42
+ when packet[:signal_quality]
43
+ publish(event_topic_name("signal_quality"), packet[:signal_quality])
44
+
45
+ when packet[:attention]
46
+ publish(event_topic_name("attention"), packet[:attention])
47
+
48
+ when packet[:meditation]
49
+ publish(event_topic_name("meditation"), packet[:meditation])
50
+
51
+ when packet[:delta]
52
+ publish(event_topic_name("eeg"), packet)
53
+
54
+ else
55
+ puts packet.inspect
56
+ end
57
+ end
58
+
59
+
60
+ {:signal_quality=>200}
61
+ {:delta=>7023617, :theta=>15294464, :lo_alpha=>15209472, :hi_alpha=>13321984, :lo_beta=>4527616, :hi_beta=>12073472, :lo_gamma=>862464, :mid_gamma=>13637632}
62
+ {:attention=>0}
63
+ {:meditation=>0}
64
+
65
+
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,4 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
2
+ require 'artoo/adaptors/neurosky'
3
+
4
+ # TODO: test for your adaptor goes here...
@@ -0,0 +1,4 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
2
+ require 'artoo/drivers/neurosky'
3
+
4
+ # TODO: test for your driver goes here...
@@ -0,0 +1,5 @@
1
+ require 'artoo/robot'
2
+
3
+ require 'minitest/autorun'
4
+
5
+ Celluloid.logger = nil
metadata ADDED
@@ -0,0 +1,88 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: artoo-neurosky
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Ron Evans
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-04-07 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: artoo
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: 1.6.4
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: 1.6.4
27
+ - !ruby/object:Gem::Dependency
28
+ name: mindset
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: Artoo adaptor and driver for Neurosky
42
+ email:
43
+ - artoo@hybridgroup.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - .gitignore
49
+ - Gemfile
50
+ - Gemfile.lock
51
+ - LICENSE
52
+ - README.md
53
+ - Rakefile
54
+ - artoo-neurosky.gemspec
55
+ - example/eeg.rb
56
+ - example/neuro.rb
57
+ - lib/artoo-neurosky.rb
58
+ - lib/artoo-neurosky/version.rb
59
+ - lib/artoo/adaptors/neurosky.rb
60
+ - lib/artoo/drivers/neurosky.rb
61
+ - test/adaptors/neurosky_adaptor_test.rb
62
+ - test/drivers/neurosky_driver_test.rb
63
+ - test/test_helper.rb
64
+ homepage: https://github.com/hybridgroup/artoo-neurosky
65
+ licenses:
66
+ - Apache 2.0
67
+ metadata: {}
68
+ post_install_message:
69
+ rdoc_options: []
70
+ require_paths:
71
+ - lib
72
+ required_ruby_version: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ required_rubygems_version: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - '>='
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ requirements: []
83
+ rubyforge_project: artoo-neurosky
84
+ rubygems_version: 2.2.1
85
+ signing_key:
86
+ specification_version: 4
87
+ summary: Artoo adaptor and driver for Neurosky
88
+ test_files: []