法政大学理工学部創生科学科 小林一行研究室 YP-Spur をMATLAB で使うには? YP-Spur は,Linux ベースで開発されているようであるが,Windows でも使えるようなので, ここでは,Windows 版のMATLAB から使う方法を紹介する.YP-Spu

Similar documents
Maple 18 スタンドアロン版インストール手順

インテル® Parallel Studio XE 2019 Composer Edition for Fortran Windows : インストール・ガイド

Microsoft PowerPoint - Borland C++ Compilerの使用方法(v1.1).ppt [互換モード]

Maple 12 Windows版シングルユーザ/ネットワークライセンス

HP Remote Graphics Software Receiver and Sender Installation Guide

本記事では CITS のインストール方法について説明します CITS は macos や Windows Linux など Java がサポートされている OS で動作しますが 本シリーズはコードを書かない方を対象 としているので macos と Windows の両方について解説します 連載目次

Steinberg 社 - VST3 対応シンセサイザービルド環境テンプレート (Windows 版 ) Quick 説明書 はじめにこの度は Steinberg 社 - VST3 対応シンセサイザービルド環境テンプレートをダウンロードして下さり 誠にありがとうございます 本説明書はビルド環境テンプ

NEC COBOL Media V2.0 セットアップカード SL438740B01-1

無償コンパイラ(JDK(Java Development Kit))を用いたJavaプログラムの実行方法

NEC Express5800 シリーズ COBOL Media V1 セットアップカード SL438730B01-2

$ cmake --version $ make --version $ gcc --version 環境が無いあるいはバージョンが古い場合は yum などを用いて導入 最新化を行う 4. 圧縮ファイルを解凍する $ tar xzvf gromacs tar.gz 5. cmake を用

DigiCert EV コード署名証明書 Javaコード 署名手順書

インテル(R) Visual Fortran コンパイラ 10.0

ArcGIS Runtime SDK for WPF インストールガイド (v10.2.5)

インテル® Parallel Studio XE 2017 Composer Edition for Fortran Windows - インストール・ガイド -

GettingStartedTK2

インストール及び設定手手順書 SECTION 1: Maple 2016 のインストール SECTION 2: コンパイラの設定 SECTION 3: コンパイラの設定の確認 SECTION 4: Maple 2016 のアンインストール Windows 64-bit マシンをご使 の場合合は Mi

Microsoft Word - DWR-S01D_Updater_取扱説明書_120514A.doc

<4D F736F F F696E74202D20834A815B836C838B835C815B835882CC95E082AB95FB F4B2E B8CDD8AB B83685D>

PowerPoint プレゼンテーション

オフラインメンテナンス説明書-ver5.0.0

============================================================

インテル® Parallel Studio XE 2019 Composer Edition for Fortran Windows 日本語版 : インストール・ガイド

24th Embarcadero Developer Camp

目次 1 はじめに 製品に含まれるコンポーネント 動作環境... 4 オペレーティング システム... 4 Microsoft Visual Studio* 製品 製品のダウンロード 製品版をインストールする場合 評価版を

SimLab Plugins for SketchUp 評価版インストールおよびアクティベート方法 注意事項 評価版をお使い頂くには 評価用ライセンスでのアクティベートが必要です 評価用ライセンスファイルの取得を行い 手動でアクティベートする必要があります 各 SimLab プラグインは 評価用とし

Hphi実行環境導入マニュアル_v1.1.1

3.Cygwin で日本語を使いたい Cygwin で以下のコマンドを実行すると それ以降 メッセージが日本語になります export LANG=ja_JP.UTF-8 これは 文字コードを日本語の UTF-8 に設定することを意味しています UTF-8 は Cygwin で標準の文字コードで, 多

発環境を準備しよう2 章開Eclipseをインストールしようそれでは Eclipseをセットアップしましょう Eclipseは Eclipse Foundationのサイトからダウンロードできます ダウンロードのページを開くと いく

SLCONFIG の操作 JF1PYE Ⅰ. PC と slconfig の通信設定 Ⅱ. Slconfig の操作 Ⅲ. 端末ソフトによる Command 機能 Ⅳ. slconfig 実行形式プログラムの作成 Ⅴ. 端末ソフト Tera Term のダウンロード インストー

DWR-S01D Updater 取扱説明書 発行日 :2011/2/28

MAC の Horizon Auton インストール方法 Page 1 of 25

ゲームプログラミング講習 第0章 導入

ドライバインストールガイド

Windows AIKを使用したPE2

分割コンパイル (2018 年度 ) 担当 : 笹倉 佐藤 分割コンパイルとは 一つのプログラムのソースを複数のソースファイルに分けてコンパイルすること ある程度大きなプログラムの場合ソースファイルをいくつかに分割して開発するのが普通 1

Windows への opensource COBOL 環境の構築手順 0. 前提条件当手順は Windows へ opensource COBOL 環境を構築する手順である 手順確認時の OS と時期は以下の通りである OS Windows 8.1(64bit) 時期 2018/09 1. 構築手

目次 1. はじめに 本書対象者 PALRO のアプリケーションについて Ubuntu 8.04LTS の入手について Linux 上での開発環境の構築 事前準備 Ubuntu のインストール..

ServerView ESXi CIM Provider VMware vSphere ESXi 6.0 インストールガイド

Red Hat Enterprise Linux 6 Portable SUSE Linux Enterprise Server 9 Portable SUSE Linux Enterprise Server 10 Portable SUSE Linux Enterprise Server 11 P

Microsoft PowerPoint - InfPro_I6.pptx

HeartCore(PHP 版 ) インストール手順について説明いたします なお 本資料は 例として下記内容を前提として説明しております 環境情報 対象 OS: Linux ( ディストリビューション : Red Hat Enterprise Linux Server) APサーバ : Apache

インテル Parallel Studio XE 2017 Composer Edition for Fortran Windows* インストール ガイド Rev (2017/06/08) エクセルソフト株式会社

第 7.0 版 利用履歴管理 ETCPRO5 セットアップマニュアル (Ver5.002) カードリーダモデル変更 ( 表示付き 表示なし ) に伴い 改訂 Windows10 対応に伴い 改訂 参考ホームページサイト :

InstallAwareを使った Delphi/400運用環境の構築

memo

(3) 図 ファイルの展開先 ( 保存場所 ) 指定画面 が表示されます 参照ボタンを押下すると 図 フォルダ指定画面 が表示されるので 保存先を指定し OK ボタン を押下します 図 ファイルの展開先 ( 保存場所 ) 指定画面 の 展開 ボタンを押下します 図

Tebis V3.5 R6 インストールマニュアル 製造ソリューション事業本部 計測製造ソリューション技術部 2013 年 12 月

IRsolution インストール手順書 修正箇所

Microsoft Word - PrivateAccess_UM.docx

厚生労働省版ストレスチェック実施プログラムバージョンアップマニュアル (Ver2.2 から Ver.3.2) 目次 1. プログラム概要 バージョンアップ実施手順 要注意 zip ファイル解凍の準備 Windows によって PC が保護されました と

ここをクリックしてダウンロードする ダウンロードした zip ファイルを解凍する とインストーラが現れます インストーラを 起動してインストールを開始しましょう イ ンストーラの [ Next > ] ボタンを押してい けばインストールできます ライセンスの画面では I accept the ter

ガイダンス

SimLabプラグインは各機能を15回分評価版として試用できます

ADempiere (3.5)

NortonAntiVirus for MicrosoftExchange

ZIPパスワードメールプロフェッショナル版マニュアル

1. はじめに 1.1. 対象アプリケーション このドキュメントでは GeoCoach3D シリーズ 8 のアプリケーションソフトウェアのインストールについて説明 します 以下のアプリケーションが対象です 記号はアプリケーションやインストーラを区別するための文字で す アプリケーション名 記号 バー

電子申請サービス

HeartCoreインストールマニュアル(PHP版)

Intel Integrated Performance Premitives 4.1 Linux

2. Helix 管理者向けセットアップ手順 ( アーキテクチャ共通 ) ここでは Helix 管理者が実施する GUI クライアント日本語パックのセットアップ手順をご説明します Helix 一般ユーザは 3. Helix 一般ユーザ向けセットアップ手順 を実施してください 2.1 セットアップファ

Windows IoT Core と Raspberry Pi 3 での Actian Zen Edge 使用 株式会社エージーテック 2018 年 7 月 5 日

目次 1 はじめに 本文書の概要 PVF ソフトウェアと VISUAL STUDIO PVF ソフトウェアの種類 MICROSOFT VISUAL STUDIO の日本語化について VISUAL STUDIO

Intel MPI Library Linux

SketchUp2017 以上のバージョンからプラグインのインストールや管理を行うための 拡張機能マネージャー が追加され Ruby ファイル (*.rbz) の管理が簡単に行えるようになりました SketchUp2016 以下のバージョンは環境設定の 拡張機能 (Extensions) メニューよ

ServerView ESXi CIM Provider VMware vSphere ESXi 6.5 インストールガイド

03 Podium Walkerのインストール方法およびアンインストール .docx

AutoCAD Mechanical 2009 Service Pack 2 Readme 高品質な製品を提供するため オートデスクは AutoCAD Mechanical 2009 Service Pack 2 をリリースしました この Service Pack は AutoCAD Mechani

ログイン時の ID パスワードは マイページ と同一です インストール前の状態の場合 ログイン後に表示されるページの ライセンス一覧 に該当製品シリアルの表示はされません インストール完了後 ライセンス管理ページご利用シリアルの一覧が表示されます 以上でライセンス管理ページの作成は完了です なお セ

の Install Cygwin now リンクから setup.exe をダウンロードして ダブルクリックしてください Choose A Download Source の項目では Install from Internet を選んで次に進みます Se

Microsoft Word - Win-Outlook.docx

機能仕様書フォーマット

C

ArcGIS Pro 1.1 SDK for .NET インストール ガイド

Transcription:

YP-Spur をMATLAB で使うには? YP-Spur は,Linux ベースで開発されているようであるが,Windows でも使えるようなので, ここでは,Windows 版のMATLAB から使う方法を紹介する.YP-Spur は,Linux ベースなので,MinGW+msys 環境をセットアップする. http://www.mingw.org/wiki/getting_started から, mingw-get-setup.exe をダウンロードし, c: MinGW にインストールする. ここでは, mingw-developer-toolkit mingw32-base mingw32-gcc-g++ msys-base をインストールする. MinGW Library の mingw32-pthreads-w32 も必要である. インストールが終わったら, 環境変数のPATH に C: MinGW bin;c: MinGW msys 1.0 bin を追加する.

YP-Spur のインストール yp-spur-1.13.5 をダウンロード コマンドウィンドウを起動し c: MinGW msys 1.0 msys.bat で実行し, コマンド入力画面を出す. 次に c: MinGW msys 1.0 home ikko の中にコピーしておく. cd yp-spur./configure を実行する. コンパイルエラーが出る場合には, オリジナル #include <pthread.h> を, 以下のファイル全てに適用する. yp-spur-1.14.0 の場合 param.h 修正 #define timespec linux_timespec #include <pthread.h> #undef timespec yp-spur-1.13.5 の場合 utility.c, ypspur-coordinator.c, control_vehicle.c, control_motion.c, param.c, commandad.c, param.h, command.c, command_param.c, command_set.c, command_get.c, command_run.c, communication.c odometory.c, ssm_spur_handler.c また,fork,setsid() は,MinGW ではサポートしていないためコメントアウトする. C: MinGW msys 1.0 msys.bat を実行して, コマンドプロンプトを立ち上げる. cd home/ikko ikko の部分は, ログイン名になる. として実体となるフォルダの C: MinGW msys 1.0 home ikko に,yp-spur をコピーする. cd yp-spur./configure

make としてバイナリを作成する. MEX コンパイラの導入 MinGW を使えるようにするため,Gnumex のサイトhttp://gnumex.sourceforge.net/ から, gnumex2.06.zip をダウンロード, 解凍し,trunk の中身をc: gnumex に入れる. MATLAB は, 管理者権限で起動しないと, 書き込みエラーが出るので注意! >>cd c: gnumex >>gnumex Make options file を作成する. 管理者権限で実行していない場合, アクセスが拒否されるので, 以下のメッセージが出る ので, 手動でコピーする.

C: Users ikko AppData Roaming MathWorks MATLAB R2014b mexopts.bat to the file C: Program Files MATLAB R2014b bin win64 mexopts GNUMEXOPTS.bat C: Users ikko AppData Roaming MathWorks MATLAB R2014b mexopts.stp to the file C: Program Files MATLAB R2014b bin win64 mexopts GNUMEXOPTS.stp 確認のためサンプルをコンパイルしてみる. >> cd examples >> cd gcc >> mex -setup 警告 : 互換性を確保するため古い形式の MEX 構造が提供されていますが MATLAB の将来のバージョンでは削除される予定です 詳細は MEX のリリースノート http://www.mathworks.com/help/matlab/release-notes.html を参照してください Welcome to mex -setup. This utility will help you set up a default compiler. For a list of supported compilers, see http://www.mathworks.com/support/compilers/r2014b/win64.html Please choose your compiler for building MEX-files: Would you like mex to locate installed compilers [y]/n? y Select a compiler: [1] Microsoft Software Development Kit (SDK) 7.1 in C: Program Files (x86) Microsoft Visual Studio 10.0 [2] gcc in C: mingw bin [0] None Compiler: 2 Please verify your choices: Compiler: gcc Location: C: mingw bin >>testgcc で実行できるはずである.

Generic DLL の確認 ( ここはやらなくてもよい ) ここでは,MATLAB からmingw で作成したDLL を呼び出せるかのテストを行ってみる. まずは, 以下のプログラムを用意し,MATLAB のワーキングディレクトリに保存する. test.h #define EXPORT extern "C" declspec(dllexport) EXPORT double abcdlltest(int a, int b); test.cc #include "test.h" EXPORT double abcdlltest(int a, int b) { return (a + b) * 1.23456; } コンパイル方法は, g++ -I. -O2 -Wno-deprecated -c -o test.o test.cc g++ -shared -o abc.dll test.o MATLAB を起動し, まずライブラリを呼び出す. >>loadlibrary('abc.dll','test.h'); つぎに, >> libfunctions abc -full クラス lib.abc に対するメソッド : double abcdlltest(int32, int32) >> data=calllib('abc','abcdlltest',1,2) data = 3.7037 使い終わった場合には, >> unloadlibrary('abc') とすればよい.

yp-spur がコンパイルできている場合には, src.libs のディレクトリに入って include ディレクトリにあるヘッダファィルを全てsrc.libs フォルダ内にコピーしておく. [a,b]=loadlibrary('libypspur_dll.dll','ypspur.h') が使えるようになる.enum 関連はサポートしていないので, ワーニングが出る. もし, それに関連する命令を使いたい場合には, 直接数字を使う. もし, エラーが出る場合には,mex setup を実行し, コンパイラを切り替えて, 再実行してみるとよい. >> libfunctions libypspur_dll クラス lib.libypspur_dll に対するメソッド : YPSpur_adjust_pos YPSpur_near_ang YPSpur_tilt YP_openfree YPSpur_circle YPSpur_near_pos YPSpur_unfreeze YP_set_control_state YPSpur_free YPSpur_orient YPSpur_vel YP_set_io_data YPSpur_freeze YPSpur_over_line YP_get_ad_value YP_set_io_dir YPSpur_get_force YPSpur_set_accel YP_get_error_state YP_set_parameter YPSpur_get_pos YPSpur_set_angaccel YP_get_parameter YP_set_parameter_array YPSpur_get_vel YPSpur_set_angvel YP_get_parameter_array YP_set_wheel_accel YPSpur_init YPSpur_set_pos YP_get_vref YP_set_wheel_vel YPSpur_init_socket YPSpur_set_vel YP_get_wheel_ang YP_wheel_ang YPSpur_initex YPSpur_spin YP_get_wheel_torque YP_wheel_torque YPSpur_isfreeze YPSpur_stop YP_get_wheel_vel YP_wheel_vel YPSpur_line YPSpur_stop_line YP_get_wheel_vref 以下のコマンドを使うと, >> libfunctionsview libypspur_dll

呼び出し方は, >> calllib('libypspur_dll','ypspur_init') ans = -1 とする. [a,b]=loadlibrary('libypspur_md_dll','ypspur-md.h') も可能である. >> libfunctions libypspur_md_dll クラス lib.libypspur_md_dll に対するメソッド :

YPSpur_md_adjust_pos YPSpur_md_init_socket YPSpur_md_set_accel YPSpur_md_tilt YP_md_get_wheel_ang YP_md_set_parameter YPSpur_md_circle YPSpur_md_initex YPSpur_md_set_angaccel YPSpur_md_unfreeze YP_md_get_wheel_torque YP_md_set_parameter_array YPSpur_md_free YPSpur_md_isfreeze YPSpur_md_set_angvel YPSpur_md_vel YP_md_get_wheel_vel YP_md_set_wheel_accel YPSpur_md_freeze YPSpur_md_line YPSpur_md_set_pos YP_md_get_ad_value YP_md_get_wheel_vref YP_md_set_wheel_vel YPSpur_md_get_force YPSpur_md_near_ang YPSpur_md_set_vel YP_md_get_error_state YP_md_openfree YP_md_wheel_ang YPSpur_md_get_pos YPSpur_md_near_pos YPSpur_md_spin YP_md_get_parameter YP_md_set_control_state YP_md_wheel_torque YPSpur_md_get_vel YPSpur_md_orient YPSpur_md_stop YP_md_get_parameter_array YP_md_set_io_data YP_md_wheel_vel YPSpur_md_init YPSpur_md_over_line YPSpur_md_stop_line YP_md_get_vref YP_md_set_io_dir >> libfunctionsview libypspur_md_dll

yp-spur の起動 cd C: MinGW msys 1.0 home ikko yp-spur src.libs とすると,DLL,EXE ファイルができているのでこれを使う. まず,yp_coordinator.exe を起動する. ypspur-coordinator.exe -p M1.param -d COM2 Param は, サイトからダウンロードして予めサイトからダウンロードして同じフォルダに入れておく. COM 番号は,10 以上の場合には,. COM10 などと書く必要があるので, もし,10 以上の番号になってしまった場合には, 変更する必要がある.

サンプルスクリプトの対応 CS_GL=2 C Spur_init( ) Spur_set_vel( 0.2 ); Spur_set_accel( 1.0 ); Spur_set_angvel( M_PI / 2.0 ); Spur_set_angaccel( M_PI / 2.0 ); Spur_set_pos_GL( 0, 0, 0 ); Spur_stop_line_GL( 1.0, 0, 0 ); MATLAB YPSpur_init() YPSpur_set_vel(v) YPSpur_set_accel(v) YPSpur_set_angvel(w) YPSpur_set_angaccel(w) YPSpur_get_pos(2, x,y,th) YPSpur_stop_line(2, x,y,th) Spur_over_line_GL( 1.0-0.005, 0.0, 0.0 ) YPSpur_over_line(2,x,y,th) Spur_spin_GL( M_PI / 2 ); Spur_near_ang_GL( M_PI / 2, M_PI / 18.0 ) YPSpur_spin(2, th) YPSpur_near_ang(2,th,d) Spur_stop_line_GL( 1.0, 0.1, M_PI / 2.0 ); YPSpur_stop_line(2, x,y,th) Spur_stop( ); Spur_free( ); Spur_get_pos_GL( &x, &y, &theta ); YPSpur_stop() YPSpur_free() YPSpur_get_pos(2, x,y,th) MATLAB からの呼び出しは,test_circle で行う YPSpur_init.m if ~libisloaded('libypspur_dll') [yp_a,yp_b]=loadlibrary('libypspur_dll.dll','ypspur.h'); TF_x=0;TF_y=0;TF_th=0; TF_x=libpointer('doublePtr',TF_x); TF_y=libpointer('doublePtr',TF_y); TF_th=libpointer('doublePtr',TF_th); GL=2;LC=3;FS=4; % typedef enum % { % CS_BS = 0, % CS_SP, % CS_GL, % CS_LC, % CS_FS, % CS_BL, % CS_MAX % } YPSpur_cs; calllib('libypspur_dll','ypspur_init'); % 最大速度設定 calllib('libypspur_dll','ypspur_set_vel',2.5);

% 最大加速度設定 calllib('libypspur_dll','ypspur_set_accel',5.0); % 角速度設定 calllib('libypspur_dll','ypspur_set_angvel',pi/2); % 角加速度設定 calllib('libypspur_dll','ypspur_set_angaccel',pi); % 初期位置設定 calllib('libypspur_dll','ypspur_set_pos',gl, 0, 0, 0 ); calllib('libypspur_dll','ypspur_set_pos',lc, 0, 0, 0 ); test_circle.m clear all;close all; YPSpur_init; time1=0;history=[0,0,0];j=1; f=calllib('libypspur_dll','ypspur_circle',2,0,1,-0.5); while(1) time1=time1+0.01; if(time1>0.05) [aa,tf_x,tf_y,tf_th]=calllib('libypspur_dll','ypspur_get_pos',gl,tf_x,tf_ y,tf_th) pos=[tf_x,tf_y,tf_th]; history(j,:)=pos; j=j+1; time1=0; plot(history(:,1),history(:,2)) axis equal; drawnow if(time1>1) ff=calllib('libypspur_dll','ypspur_stop'); break Run_test.c をベースに開発する. if ~libisloaded('libypspur_dll') [yp_a,yp_b]=loadlibrary('libypspur_dll.dll','ypspur.h'); TF_x=0;TF_y=0;TF_th=0; TF_x=libpointer('doublePtr',TF_x); TF_y=libpointer('doublePtr',TF_y); TF_th=libpointer('doublePtr',TF_th);

GL=2;LC=3;FS=4; calllib('libypspur_dll','ypspur_init'); calllib('libypspur_dll','ypspur_set_vel',0.2); calllib('libypspur_dll','ypspur_set_accel',1.0); calllib('libypspur_dll','ypspur_set_angvel',pi/2); calllib('libypspur_dll','ypspur_set_angaccel',pi/2); calllib('libypspur_dll','ypspur_set_pos',gl, 0, 0, 0 ); calllib('libypspur_dll','ypspur_set_pos',lc, 0, 0, 0 ); fprintf('line n'); f=calllib('libypspur_dll','ypspur_stop_line',gl,1.0,0,0); f = calllib('libypspur_dll','ypspur_over_line',gl,1.0-0.005,0,0); fprintf('spin n'); calllib('libypspur_dll','ypspur_spin',gl,pi/2); f = calllib('libypspur_dll','ypspur_near_ang',gl,pi/2,pi/18); calllib('libypspur_dll','ypspur_set_vel',0.3); calllib('libypspur_dll','ypspur_set_accel',1.0); calllib('libypspur_dll','ypspur_set_angvel',pi); calllib('libypspur_dll','ypspur_set_angaccel',pi); f=calllib('libypspur_dll','ypspur_stop_line',gl,1.0,0.1,pi/2); f = calllib('libypspur_dll','ypspur_over_line',gl,1,0.1-0.005,pi/2); fprintf('spin n'); calllib('libypspur_dll','ypspur_spin',gl,pi); f = calllib('libypspur_dll','ypspur_near_ang',gl,pi,pi/18);

fprintf('line n'); f=calllib('libypspur_dll','ypspur_stop_line',gl,0,0.1,pi); f = calllib('libypspur_dll','ypspur_over_line',gl,0+0.005,0.1,pi); fprintf('spin n'); calllib('libypspur_dll','ypspur_spin',gl,-pi/2); f = calllib('libypspur_dll','ypspur_near_ang',gl,-pi/2,pi/18); fprintf('line n'); f=calllib('libypspur_dll','ypspur_stop_line',gl,0,0,-pi/2); f = calllib('libypspur_dll','ypspur_over_line',gl,0,0+0.005,-pi/2); fprintf('spin n'); calllib('libypspur_dll','ypspur_spin',gl,0); f = calllib('libypspur_dll','ypspur_near_ang',gl,0,pi/18); calllib('libypspur_dll','ypspur_stop'); calllib('libypspur_dll','ypspur_free'); [aa,tf_x,tf_y,tf_th] = calllib('libypspur_dll','ypspur_get_pos',gl,tf_x,tf_y,tf_th); fprintf('%f %f %f n',tf_x,tf_y, TF_th * 180.0/pi);