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

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

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

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

3回答

13667閲覧

Processingで『NullPointerException』のみ表示されるエラーへの対処法

toboli

総合スコア15

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

0グッド

0クリップ

投稿2018/12/20 16:40

こんにちは。
Processingで書いたコードを実行すると、以下の画像のようにNullPointerExceptionというエラーが出てしまい、困っています。
対処の方法や方向性などをアドバイスいただけないでしょうか。
エラーメッセージ、ソースコードは以下の通りです。

エラーの様子

コンソールの上にこのように表示されるだけです。
このエラーが出るとき、ar = new MultiMarker(this,width,height,"camera_para.dat",NyAR4PsgConfig.CONFIG_PSG);(下記コードのsetup内5行目)に黄色いマーカーがひかれるので、このあたりが原因かと探っています。
イメージ説明

該当のソースコード

ProcessingとArduino(Firmata)を使い、Arduinoに接続したLEDをマウスクリックで点灯させるプログラムを書きました。

processing

1import jp.nyatla.nyar4psg.*; // ARライブラリ 2import processing.video.*; // ビデオライブラリ 3import processing.serial.*; // シリアル通信ライブラリ 4import cc.arduino.*; // Arduinoライブラリ 5import picking.*; 6 7Capture cam; 8MultiMarker ar; 9Arduino arduino; 10Picker picker; 11 12// 使用するピン 13int ledPin = 13; 14 15// マーカに対するLEDの相対位置 (自分で作ったものに合わせて変更してください) 16float[] offset = {19.0, 27.0 ,32.0}; 17 18// 選択されているオブジェクトのID 19int selected_id = 0; 20 21void setup() { 22// 画面サイズとキャプチャの設定 23 size(800,600,P3D); 24 cam = new Capture(this,width,height); 25 26 ar = new MultiMarker(this,width,height,"camera_para.dat",NyAR4PsgConfig.CONFIG_PSG);//エラーでマーカーされる個所 27 ar.addNyIdMarker(0,30); // 30mmのIDマーカを登録(NyId=0) 28 29// Arduinoの準備(ポート番号は自分の環境に合わせて設定してください) 30 arduino = new Arduino(this, Arduino.list()[0], 57600); 31 arduino.pinMode( ledPin, Arduino.OUTPUT ); 32 33// ピッキングの準備 34 picker = new Picker(this); 35} 36 37void draw() { 38 if (cam.available()==false) return; // カメラの用意ができていないときは処理をしない 39 cam.read(); // カメラ画像の読み込み 40 background(0); // 画面の初期化 41 ar.drawBackground(cam); // 背景画像の描画 42 ar.detect(cam); // マーカ認識 43 44 // マーカが認識されていたらピッキング用のオブジェクトを描画する 45 if ( ar.isExistMarker(0) ) { 46 ar.beginTransform(0); 47 picker.start(0); // ピッキング用のIDを付与 48 pushMatrix(); 49 50 // 選択されていたら枠線を描画する 51 if ( 0==selected_id ) { stroke(0,0,0); }//なおす 52 else { noStroke(); } 53 54 // オブジェクトの色を無色透明にする 55 fill(0,0,0,0); 56 57 // LEDのある場所までずらして直方体を描画 58 translate(19.0, 27.0 ,32.0);//上のoffsetけす 59 box(5,5,18); 60 popMatrix(); 61 ar.endTransform(); 62 picker.stop(); 63 } 64 65 // マウスカーソルの下にあるオブジェクトを判定 66 selected_id = picker.get(mouseX, mouseY); 67 mouseClicked(); 68 69} 70 71// オブジェクトの上で左クリックされたらLED点灯 72void mouseClicked() { 73 if ( mouseButton == LEFT && selected_id == 0 ) { 74 arduino.digitalWrite( ledPin, Arduino.HIGH ); 75 }else if( mouseButton == LEFT && selected_id == 0 && ledPin == Arduino.HIGH){ 76 arduino.digitalWrite( ledPin, Arduino.LOW ); 77 } 78}

試したこと

・全角スペースが入っていないかチェックするため、新規で書き直したりもしましたが同じでした。

補足情報(FW/ツールのバージョンなど)
PC環境:windows10です。
Processingバージョン:3.4.0

ご回答いただけたら幸いです。よろしくお願いいたします。

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

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

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

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

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

guest

回答3

0

Null pointer exception(与えられたポインタがNULLなので、どうにもならん例外)ですから、
new MultiMarkerの第5引数のNyAR4PsgConfig.CONFIG_PSGの値が問題なのではないかと思われます。
(thisがNullということはないであろうし、widthとhightは数値なのポインターではない、"camera_para.dat"は文字列なのでNULLポインターではないと考えていくと、NyAR4PsgConfig.CONFIG_PSGが一番怪しい)

とりあえず

ar = new MultiMarker(this,width,height,"camera_para.dat",NyAR4PsgConfig.CONFIG_PSG);

の行の前に、NyAR4PsgConfig.CONFIG_PSGの値を表示するコードを追加して、値を確認してみるのが第一歩かと思います。

投稿2018/12/24 08:52

coco_bauer

総合スコア6915

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

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

0

エラー行に
"camera_para.dat"
というファイル名らしい記述が見えますが、このファイルは適切な場所に存在していますか?

投稿2018/12/23 02:43

thkana

総合スコア7629

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

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

0

i think ar doesn't get reference
make sure param pass correct order or recheck your dat or config file

投稿2018/12/20 18:00

AliHassan

総合スコア351

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問