EusLisp tutorial

About

EusLispは, ロボットプログラミングのための様々な機能を持ったLispライク処理系です.

このチュートリアルは, 他の言語ではある程度経験があるが, EusLispについては全くの初心者に向けて記述しています.

言語仕様や一歩進んだ使い方について,より詳しく知りたい時は, 本家のドキュメントを参照してください.

ロボット工学に関する知識はロボット工学の教科書を参照してください.

EusLispの特徴

  • ロボットプログラミングに特化した開発環境です.
  • その根底には充実した三次元幾何ライブラリがあります.
  • OpenHRP,ROSとのブリッジを持ち,それらに対応した多数のロボットが動かせます.

Install

ROSがインストールされていることが前提となります. ROS/Installationを参考にインストールしてください. また,wstool,catkin-toolsもあわせてインストールすると便利です.

sudo apt-get install python-wstool python-catkin-tools

インストール終了後,catkinのワークスペースを作ってください. 例えば以下のようにします.

mkdir ~/catkin_ws
cd ~/catkin_ws
wstool init src
catkin init
catkin build
source ~/catkin_ws/devel/setup.bash

ROSをインストールしてあり,手動でインストールする場合

ros-<ROS_DISTRO>-roseusというパッケージが提供されています. indigoの場合,以下のようにインストールできます.

sudo apt-get install ros-indigo-roseus

また,本チュートリアルで紹介するロボットモデルを利用するためには, rtmros_commonのインストールを行なってください.

sudo apt-get install ros-indigo-hrpsys-ros-bridge ros-indigo-euscollada ros-indigo-pr2eus

および,catkinのワークスペースにrtmros_tutorialsをダウンロードしてください.

cd <catkin_ws>/src
wstool set rtm-ros-robotics/rtmros_tutorials https://github.com/start-jsk/rtmros_tutorials.git --git
wstool update rtm-ros-robotics/rtmros_tutorials
cd rtm-ros-robotics/rtmros_tutorials/hrpsys_ros_bridge_tutorials
catkin bt

インストーラを利用して最初からインストールする場合

jsk_commonを利用することで, ros, hrpsys, euslispを含む 様々なロボットプログラミングツールをインストールできます.

Basic Usage

インタプリタ起動

euslispはインタプリタを用いて動作させることが基本です. rosをインストールした環境であれば,通常はroseusを使いましょう.

  • 最低限の機能を起動
eusgl
  • irteus拡張 + GUIを読み込んで起動
irteusgl
  • irteusgl + rosインタフェースを読み込んで起動
roseus

euslispのインタプリタはreadlineに対応していないため

  • 履歴をたどることができない
  • カーソルキーが使えない

という問題点があります. これらを解決するため,emacs shellの利用を推奨しています. emacsを起動し,M-x shellとすると,emacs shellが利用できます. emacs shellの上では,M-pで履歴をたどれるほか, カーソルキーで移動できる, バッファに実行結果をためておけるなど,多数の利点があります.

インタプリタの使い方

euslispインタプリタは 大小文字の区別なし,一番外側の()はなくても良い という仕様になっています.

例えば

(+ 1 2)

+ 1 2

は同じです.ただし,入れ子になる場合は()を書きましょう.

+ (- 3 2) 1

また,変数への代入はsetqを使います.

(setq a (+ 1 2))

前回の実行結果を参照するには*を使いましょう.

(+ 1 2)

としたあとに,

(setq a *)

とすると,前回実行結果の3が代入されます. 同様に**で前々回,***で前々々回の結果を参照できます.

終了方法はexitです.

(exit)

プログラムの書き方

プログラムは拡張子.lのファイルに記述していきます. euslispはインタプリタに読ませるスクリプトとしてこのファイルを解釈します. コンパイルやエントリーポイント(いわゆるmain関数)はなく, ファイルの中身をそのままインタプリタ上でタイプすることと同じです.

例えば,test.lというファイルにプログラムを記述した場合,

roseus test.l

としてインタプリタごと起動するか, インタプリタを先に起動しておいて,その上で

(load "test.l")

としましょう.