質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Socket.IO

Socket.IOはNode.js上で動くライブラリであり、すべてのブラウザとモバイルデバイスでリアルタイムのアプリを作動させる事を目的としています。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Q&A

2回答

444閲覧

socket.ioを用いて、sphero(ロボット)を操作したい

marumori

総合スコア8

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Socket.IO

Socket.IOはNode.js上で動くライブラリであり、すべてのブラウザとモバイルデバイスでリアルタイムのアプリを作動させる事を目的としています。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

0グッド

2クリップ

投稿2017/12/05 09:12

編集2017/12/05 16:01

プログラミング初心者です。

socket.ioを用いて、sphero(球体ロボット)を操作しようと考えています。
そこで、リンク内容を参考にしました。

[コマンドプロンプト] git clone https://github.com/juliancheal/sphero-colour.git cd sphero-colour npm install node app.js
[app.js] var Cylon = require('cylon'); var colour = 0xFF0066; var express = require('express'), app = express(), server = require('http').createServer(app), io = require('socket.io').listen(server); server.listen(8080); // app.get('/', function(req, res){ // res.sendfile(__dirname + '/index.html'); // }); app.use(express.static(__dirname + "/public/")); Cylon.robot({ connection: { name: 'sphero', adaptor: 'sphero', port: 'dev/tty.Sphero-BOO-RN-SPP' }, device: {name: 'sphero', driver: 'sphero'}, work: function(my) { io.sockets.on('connection', function (socket) { socket.on('color', function (data) { colour = parseInt(data,10); console.log(colour); my.sphero.setColor(colour); // console.log(my.sphero.getRGB()); }); }); } }).start(); // for debugging when no sphero present io.sockets.on('connection', function (socket) { socket.on('color', function (data) { colour = parseInt(data,10); console.log(colour); }); });
[エラー] 2017-12-05T09:03:18.809Z : The single-object 'connection' syntax for robots is not valid. 2017-12-05T09:03:18.816Z : Instead, use the multiple-value 'connections' key syntax. 2017-12-05T09:03:18.817Z : Details: http://cylonjs.com/documentation/guides/working-with-robots/ /home/pi/sphero-colour/node_modules/cylon/lib/validator.js:15 throw RobotDSLError; ^ RobotDSLError: Unable to start robot due to a syntax error at die (/home/pi/sphero-colour/node_modules/cylon/lib/validator.js:13:23) at fatal (/home/pi/sphero-colour/node_modules/cylon/lib/validator.js:26:3) at /home/pi/sphero-colour/node_modules/cylon/lib/validator.js:50:7 at Array.map (<anonymous>) at checks.singleObjectSyntax (/home/pi/sphero-colour/node_modules/cylon/lib/validator.js:45:28) at /home/pi/sphero-colour/node_modules/cylon/lib/validator.js:100:5 at Object.iterate [as each] (/home/pi/sphero-colour/node_modules/cylon/lib/utils/helpers.js:82:10) at Object.validate (/home/pi/sphero-colour/node_modules/cylon/lib/validator.js:99:5) at new Robot (/home/pi/sphero-colour/node_modules/cylon/lib/robot.js:32:13) at Object.create [as robot] (/home/pi/sphero-colour/node_modules/cylon/lib/mcp.js:37:13)

ご教授おねがいします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

※直接の答にはなっていないかもしれませんのでご了承ください。
かなり固有な技術トピックのように思いますので、もしかしたらなかなか回答がつきづらいかもしれません。私の方では動作させる環境がありませんので想像と、気がついた部分の指摘のみですが、

[エラー]
2017-12-05T09:03:18.809Z : The single-object 'connection' syntax for robots is not valid.

とあるので、なんとなく’connection’関連の部分に文法エラーの問題があるように思います。質問者様のコード、

JavaScript

1[Cylon.robot({ 2connection: { name: 'sphero', adaptor: 'sphero', port: 'dev/tty.Sphero-BOO-RN-SPP' },

のJSON部分で、port: 'dev/tty.Sphero-BOO-RN-SPP' の部分は、質問者様が参考にされたgithubのソースを見ると、port: '/dev/tty.Sphero-BOO-RN-SPP’となっています。**'dev'の前に'/'が抜けていませんか?**少なくともこの1点は誤りかと思われます。

それと、コードを貼り付けるときはシンタックスハイライトを使用しましょう。コードが見づらいと、それだけ回答もつきづらくなると思います。
質問するときのヒント

投稿2017/12/05 15:39

dodox86

総合スコア9183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

marumori

2017/12/05 15:53

夜遅くに回答をくださり、ありがとうございます。 コードの指摘をして頂きありがとうございます。明日確認をしてみます。 また、解答されるための工夫などご教授いただき感謝します。 早速編集してみます。
marumori

2017/12/06 07:38

”/”を入れて試してみたのですがやはり同じエラーが出てしまいます。 回答者様が言ったように、’connection’部分の文法を変更しましたが。 以下のようなエラーが出てしまいました。 ```app.js Cylon.robot({ connection: { name: 'sphero', adaptor: 'sphero', port: '/dev/tty.Sphero-BOO-RN-SPP' }, device: {name: 'sphero', driver: 'sphero'}, ``` ``` Cylon.robot({ connections: { bluetooth: { adaptor: 'central', uuid:’spheroのUUID’, module: 'cylon-ble'} }, devices: { bb8: { driver: 'bb8', module: 'cylon-sphero-ble'} }, ``` ```error /home/pi/sphero-colour/app.js:23 bluetooth: { adaptor: 'central', uuid:FB:A6:D4:37:86:FE, module: 'cylon-ble'} ^ SyntaxError: Unexpected token : at createScript (vm.js:80:10) at Object.runInThisContext (vm.js:139:10) at Module._compile (module.js:588:28) at Object.Module._extensions..js (module.js:635:10) at Module.load (module.js:545:32) at tryModuleLoad (module.js:508:12) at Function.Module._load (module.js:500:3) at Function.Module.runMain (module.js:665:10) at startup (bootstrap_node.js:187:16) at bootstrap_node.js:607:3 ``` これはそもそも文法がおかしいため出るエラーでしょうか? 動作環境がないので、厳しいとは思いますがご教授おねがいします。
dodox86

2017/12/07 15:35 編集

当方で使える環境に無いままなのですが、質問者様の方で参考にされたgithubリポジトリのソースは適切なのでしょうか。sphero-colourのREADME.md は2014年4月にコミットされたものです。古過ぎる、と言うことはありませんか。例えばもう少し新しい(2015年12月18日)qiitaのこちらの記事https://qiita.com/quetz-design/items/c164f8eab9eaeccb67fd や、CylonのSphero用のサンプルコード https://cylonjs.com/documentation/platforms/sphero/ https://cylonjs.com/documentation/examples/cylon/js/sphero_shakeometer/ を見ると、JSON周りの設定方法が違っているように思います。 Cyronを使うことによる問題なのかどうか切り分けられないのであれば、Cyronは使わず、Spheroの公式のチュートリアルから進めると言うのも手かと思います。https://sphero.docsapp.io/docs/get-started
guest

0

現在のエラーで気になるのは以下で、app.js の23行目でエラーが出ているように思いますが、

JavaScript

1/home/pi/sphero-colour/app.js:23 2bluetooth: { adaptor: 'central', uuid:FB:A6:D4:37:86:FE, module: 'cylon-ble'} 3^ 4 5SyntaxError: Unexpected token :

marumori様ご提示のコードには合致した部分がありませんが、’:’部分が期待しない文字扱いで、SyntaxErrorが起きてます。uuid:FB:A6:D4:37:86:FE はmarumori様がセットされているのでしょうか。"uuid:FB:A6:D4:37:86:FE"と言う記述の仕方が変な気もしますし、UUIDで6バイト相当と言うのもまた変な気がします。

投稿2017/12/07 23:40

編集2017/12/07 23:42
dodox86

総合スコア9183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2017/12/07 23:45

前の回答に追記またはコメントするつもりでしたが誤って新しい回答で投稿してしまいました。回答の流れとしては不適切かもしれませんので低評価としてくださっても結構です。
marumori

2017/12/08 08:10

回答ありがとうございます。 私が扱っているロボットがspheroSPRK+というロボットで、通信の仕様がBLE通信となっています。 なので、cylon.jsでSphero BLE(https://cylonjs.com/documentation/platforms/sphero-ble/)のコードを参考にしました。ロボットは正常に動作します。 当初の目的では、Sphero bb-8をブラウザから動かしてみた(https://liginc.co.jp/238181)を参考に、ブラウザからspheroをコントロールさせるはずでしたが、milkcocoa[リアルタイム通信やIoTデバイスとの連携を簡単に実装できるサービス・ライブラリ]との連携がうまくいきませんでした。(ローカル環境での簡単なチャット機能も作れませんでした…) socket.ioでは簡単なチャット機能が実行できることが分かったので、socket.ioとNode.Jsを用いてSphero SPRK+(BLE)をブラウザから制御したいと思っています。 しかし、socket.ioを実装するコードをどのように書けば、ブラウザから動かせるのかわかりません。 分かりずらいとは思いますが、ご教授いただけたらと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問