Top / Javaでプログラミングをしてみる / プログラムの実行方法

3 プログラムの実行方法

本章では、Eclpseの使用方法について説明します。

3-1 サンプルソースのインポート

本項目では、ダウンロードしたサンプルソースをEclipseにインポートし、編集やビルドが行える状態に設定します。

1)Eclipseを起動し、メニューバーの「ファイル(F)」の「インポート(I)…」を選択し、インポートのダイアログを開きます。

image019.png



2)「一般」の「既存プロジェクトをワークスペースへ」を選択し、「次へ」を選択します。

image020.png



3)「アーカイブ・ファイルの選択」を選択し、「参照」ボタンを選択します。

image021.png




4)ダウンロードした「SotaSample_○○.zip」を選択し開きます。

image022.png




5)プロジェクトに「SotaSample」が追加され、チェックがついていることを確認してから「完了」を選択します。

image023.png




以上でサンプルソースのインポートが完了となります。

3-2 プログラムの転送

EclipseのAntを用いてプログラムを本製品へ転送します。

1) パッケージ・エクスプローラーより、「send.xml」を右クリックし、「実行」の「Ant ビルド」を選択します。

image024.png



しばらくすると、コンソール上にビルド内容が表示され、「Ant Input Request」ウインドウが表示されるので、転送先に合わせたものを選択し「OK」を選択します。

・Rpi… Raspberry Pi搭載のロボット

・Edison… Edison搭載のロボット

image025.png



2) 転送先のIPアドレスを入力し、「OK」をクリックします。本製品のIPアドレスを調べる方法につきましては、設定モードをご参照ください。

image026.png



以上で「SotaSample」の転送が完了となります。

3-3 プログラムの実行

転送したプログラムを本製品のコンソール上で実行する方法を説明します。

まず、本製品へログインします。ログインの方法は、各ロボットの取扱説明書をご参照ください。

ログイン後、以下のコマンドを入力し、ディレクトリを移動します。

cd SotaSample/bin


次に以下のコマンドを入力し、スクリプトファイルに実行権限を付加します。

sudo chmod +x *.sh

※Edison版では「sudo」は必要ありません

以下のコマンドを入力することで、プログラムが実行されます。

./java_run jp/vstone/sample/MotionSample


 ※最後は「MotionSample.class」ではなく「MotionSample」であることにご注意ください

3-4 サンプルプログラムの説明

A) 「MotionSample.java」

サーボモータの動作・LEDの点灯、音声ファイルの再生を行うプログラムです。

package jp.vstone.sample;
import java.awt.Color;

import jp.vstone.RobotLib.*;
/**
* VSMDを使用し、モーション再生・音声再生するサンプル
* @author Vstone
*
*/
public class MotionSample {
	  static final String TAG = "MotionSample";
	  public static void main(String args){
		  CRobotUtil.Log(TAG, "Start " +TAG); 
		  CRobotPose pose;
		  //VSMDと通信ソケット・メモリアクセス用クラス
		  CRobotMem mem = new CRobotMem();
		  //Sota用モーション制御クラス
		  CSotaMotion motion = new CSotaMotion(mem);
		  
		  if(mem.Connect()){
			  //Sota仕様にVSMDを初期化
			   motion.InitRobot_Sota();
			  
			  CRobotUtil.Log(TAG, "Rev. " + mem.FirmwareRev.get());
			  
			  //サーボモータを現在位置でトルクOnにする
			  CRobotUtil.Log(TAG, "Servo On");
			  motion.ServoOn();
			  
			  //すべての軸を動作
			  pose = new CRobotPose();
			  pose.SetPose(new Byte {1 ,2 ,3 ,4 ,5 ,6 ,7 ,8} //id
			  , new Short {0 ,-900,0 ,900 ,0 ,0 ,0 ,0} //target
			  pos
			  );
			  //LEDを点灯(左目:赤、右目:赤、口:Max、電源ボタン:赤)
			  pose.setLED_Sota(Color.RED, Color.RED, 255, Color.RED);
			  
			  //遷移時間1000msecで動作開始。
			  CRobotUtil.Log(TAG, "play:" + motion.play(pose,1000));
			 
			  //補間完了まで待つ
			  motion.waitEndinterpAll();
			  //一部の軸を指定して動作
			  //CSotaMotionの定数を利用してID指定する場合
			  pose = new CRobotPose();
			  pose.SetPose(new Byte
			 {CSotaMotion.SV_HEAD_R, CSotaMotion.SV_L_SHOULDER,CSotaMotion.SV_L_ELBOW,CSotaMotion.SV_R_ELBOW} //id
			  , new Short{200, 700 ,-200,200} //target
			 pos
			  );
			 
			  pose.setLED_Sota(Color.GREEN,Color.GREEN,255, Color.GREEN);
			  motion.play(pose,1000);
			  motion.waitEndinterpAll();
			  
			  //音声ファイル再生
			  //raw Waveファイルのみ対応
			  CPlayWave.PlayWave("sound/cursor10.wav");
			  CRobotUtil.wait(2000);
			 
			  pose = new CRobotPose();
			  pose.SetPose(new Byte {1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 //id
			  , new Short{0 ,-900 ,0 ,900 ,0 ,0 ,0 ,0} //target pos
			  );
			  pose.setLED_Sota(Color.BLUE,Color.BLUE,255, Color.BLUE);
			  motion.play(pose,1000);
			  motion.waitEndinterpAll();
			  
			  //サーボモータのトルクオフ
			  CRobotUtil.Log(TAG, "Servo Off");
			  motion.ServoOff();
		  }
	  }
}




  • jp.vstone.RobotLib.CRobotPose

    サーボモータの制御の設定や、LEDの制御の設定を行うクラスです。

    ・SetPose(Byte paramArrayOfByte, Short paramArrayOfShort)…各サーボモータを各指定角度へ動かす設定を行います。

    ・setLED_Sota(java.awt.Color eye_L, java.awt.Color eye_R, int mouth, java.awt.Color powerbtn)…SotaでLEDを制御する設定を行う関数です。CommUでは使用ません。

    ・setLED_CommU(java.awt.Color body, int L_cheek, int R_cheek,java.awt.Color powerbtn)…CommUでLEDを制御する設定を行う関数です。Sotaでは使用できません。

    各関数は、次に説明する「CSotaMotion.play」や「CCommUMotion.play」を呼び出すことで初めて動作します。

  • jp.vstone.RobotLib. CSotaMotion

    Sota用の動作制御のクラスです。CommUでは使用できません。

    ・ServoOn()…すべてのサーボモータのトルクをONにします。

    ・ServoOff()…すべてのサーボモータのトルクをOFFにします。

    ・getDefaultIDs()…デフォルトのID配列を取得します。

    ・getReadpose()…サーボモータの現在角度を取得します。戻り値は、現在角度の配列で、getDefaultIDsで得られるID配列に格納されたIDの順に返します。

    ・play(CRobotPose pose, int msec)…CRobotPose.setPoseやCRobotPose.setLED_Sota等で設定された通りにLEDやサーボモータを動作させます。

  • jp.vstone.RobotLib. CCommUMotion

    CommU用の動作制御のクラスです。Sotaでは使用できません。

    ・ServoOn()…すべてのサーボモータのトルクをONにします。

    ・ServoOff()…すべてのサーボモータのトルクをOFFにします。

    ・getDefaultIDs()…デフォルトのID配列を取得します。

    ・getReadpose()…サーボモータの現在角度を取得します。戻り値は、現在角度の配列で、getDefaultIDsで得られるID配列に格納されたIDの順に返します。

    ・play(CRobotPose pose, int msec)…CRobotPose.setPoseやCRobotPose.setLED_CommU等で設定された通りにLEDやサーボモータを動作させます。

3-5 自作によるプログラムの作成方法

本項目では新しくクラスを追加し、「首をかしげる動作」を行うサンプルソースを作成する方法について説明します。

1)パッケージ・エクスプローラーの「jp.vstone.sample」を右クリックし、「新規」の「クラス」を選択します。

image027.png





2)以下のような画面が表示されるので、「名前」に「MotorTest」と入力し、「完了」を選択します。

image028.png



3)「MotorTest.java」の編集画面になるので、下記の内容に編集します。

「MotorTest.java」

package jp.vstone.sample;

import jp.vstone.RobotLib.CRobotMem;
import jp.vstone.RobotLib.CRobotPose;
import jp.vstone.RobotLib.CRobotUtil;
import jp.vstone.RobotLib.CSotaMotion;

public class MotorTest {
	  public static void main(String args){
		  CRobotPose pose = new CRobotPose();
		  //VSMDと通信ソケット・メモリアクセス用クラス
		  CRobotMem mem = new CRobotMem();
		  //Sota用モーション制御クラス
		  CSotaMotion motion = new CSotaMotion(mem);
		 
		  if(mem.Connect()){
			  //VSMDを初期化
			  motion.InitRobot_Sota();
			 //サーボモータを現在位置でトルクOnにする
			  motion.ServoOn();
			 
			  //首ピッチ軸を動作
			  pose.SetPose(new Byte {8} //ID8
			   , new Short {0} //0度
			  );
			  motion.play(pose,1000);
			  motion.waitEndinterpAll();
			  CRobotUtil.wait(2000);
			  pose.SetPose(new Byte {8} //ID8
			  , new Short {-200} //-20度
			  );
			  motion.play(pose,500);
			  motion.waitEndinterpAll();
			  CRobotUtil.wait(500);
			 
			  pose.SetPose(new Byte {8} //ID8
			  , new Short {0} //0度
			  );
			  motion.play(pose,1000);
			  motion.waitEndinterpAll();
			  CRobotUtil.wait(2000);
			 
			  //サーボモータのトルクオフ
			  motion.ServoOff();
		  }
	  }
}


4)コンソールにエラーが表示され、ビルドができない場合があります。その場合はエラーを修正してください。以下にエラーの例を紹介します。

エラー内容①

「トークン "Invalid Character" に構文エラーがあります。このトークンを削除してください」

・コメント文や文字列以外に、全角文字が含まれている可能性があります。削除してください。

エラー内容②

「メソッド InitRobot_SOTA() は型 CSotaMotion で未定義です」

・メソッド名が間違っている可能性があります。正しい名前に編集してください。

(本例では、「InitRobot_SOTA()」ではなく「InitRobot_Sota()」に修正します)

5)編集が終われば、メニューバーの「ファイル(F)」の「保管(S)」を選択して上書き保存します。

以上でプログラムの作成が完了となります。

目次  次のページへ>>