Q&A

外付けカメラの画像が取れません

MacBook(Mac OS X)でWebカメラをUSB接続したとき、iSightが優先されてしまって外付けカメラの画像が取れないことがあります。

このような場合、USBポートを変えると解決します。

また、同じくMac OS Xで2台以上のカメラを接続した場合に、Cameraサービスを2つ以上起動しても同じカメラの画像しか取れないことがあります。

このような場合、リアルタイム性があまり必要ないほうのカメラについては別のWindows PCで撮像を取得し、これをUDPパケットに分割してMac OS Xに送れるコードがあるので、それを使ってみることをお勧めします。コードはCapturePackedUDPServer.javaCapturePackedUDPClient.javaにあります。(ワークショップ当日までにサンプルプロジェクトに含めるようにしておきます。)

オリジナルのマーカーは使えますか?

はい。

tipsから、マーカーファイルを一から作れるサービスにアクセスできるので試してみてください。

コードの違う場所で初期化したカメラを使いたいです

例えばmain関数のあるクラス内で初期化したCameraサービスを、違うクラス内で呼び出して使いたいとします。

class A {
	public static main(String[] args){
		Camera c = new Camera();
	}
}
 
class B {
	public B() {
		Camera c = null; // ?
		c.getImage();
	}
}

Cameraサービスを初期化したクラスのstaticなメンバ変数にサービスのインスタンスを代入しておいてもよいのですが、Materealは初期化済みサービスの一覧を持っているので、次のようなコードが使えます。

class B {
	public B() {
		Camera c = Camera camera = Matereal.getInstance.lookForService(Camera.class);
		c.getImage();
	}
}

他のロボットが使いたいのですが

hardwareに記載のあるロボットならすぐに使えます。対応していないロボットでも、ロボットクラスを書けば使えるようになります。ご相談ください。

お渡ししたNoopy 1台では済まない(例えばロボット同士のインタラクションがある)アプリケーションを開発する場合は、必要に応じてロボットを追加でお貸しします。

センサポートの値を直接読みたいのですが

MaterealのAnalogSensorクラスが使えます。

利用例がサンプルコードのNoopyWithAnalogSensorExtension.javaにありますので、参考にしていただければと思います。当方では加速度センサ、温度センサ(サーミスタ)、距離センサ、ベンドセンサで動作確認が取れています。

Noopyのファームウェアをいじることはできますか?

はい。

NoopyボードはArduinoベース(Arduino Pro Mini 328 3.3V 8MHz)なので、ファームウェアを書き換えるにはArduinoの開発環境が必要です。ご連絡いただければ、ファームウェアのソースコードのダウンロードURLをお教えします。