lego mindstorms制御プログラムの対話型開発・実...

2
平成15年度未踏ソフトウェア創造事業 Lego MindStorms制御プログラムの対話型開発・実行環境 開発者: 湯淺 太一 XS Lisp で自作ロボットらくらくコントロール Why Lisp? 対話型プログラム開発環境 部品の動作を確認しながらプログラム構築 データ,式,プログラムがすべてS式 小さくても高機能(関数閉包,高階関数,非局所 的脱出,末尾再帰呼出しの最適化,...) ダウンロードサイト http://www.xslisp.com SSXS実行系 XSフロント エンド Windows/Linux XS実行系

Upload: others

Post on 28-Jun-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lego MindStorms制御プログラムの対話型開発・実 …平成15年度未踏ソフトウェア創造事業 Lego MindStorms制御プログラムの対話型開発・実行環境

平成15年度未踏ソフトウェア創造事業

Lego MindStorms制御プログラムの対話型開発・実行環境開発者: 湯淺 太一

XS Lisp で自作ロボットらくらくコントロール

Why Lisp?対話型プログラム開発環境

部品の動作を確認しながらプログラム構築

データ,式,プログラムがすべてS式

小さくても高機能(関数閉包,高階関数,非局所

的脱出,末尾再帰呼出しの最適化,...)ダウンロードサイト

http://www.xslisp.com

S式

S式

XS実行系

XSフロントエンド

Windows/LinuxXS実行系

Page 2: Lego MindStorms制御プログラムの対話型開発・実 …平成15年度未踏ソフトウェア創造事業 Lego MindStorms制御プログラムの対話型開発・実行環境

XSの特徴 プログラム例:障害物回避

対話型プログラム開発環境

read-eval-print ループ対話的に関数を定義,再定義

適切なエラーメッセージとバックトレース表示

関数トレース機能

実行系はRCX 内で自律的に動作オブジェクトの動的割り付け,ごみ集め

末尾再帰的なインタープリタによる実行

プログラムエラーやスタック・バッファオーバーフローに対して頑健

端末機割り込み

ロボット制御に十分なプログラム記述能力

SchemeベースのLisp言語Legoデバイス(モータ,センサ,ランプ等)のためのインターフェイス

イベント待ち,タイマ,非同期イベント割込み

(begin(speed :a (speed :c :max-speed)))(let loop ()

(motor :a (motor :c :forward))(wait-until (or (touched? 2)

(pressed?)))(if (pressed?)

(motor :a (motor :c :off)) (begin

(motor :a (motor :c :back))(sleep 5)(motor(if (= (random 2) 0) :a :c):forward)

(sleep 5)(loop))

)))