ODE0.10.0に対応しました.
ODE本「簡単!実践!ロボットシミュレーション」に掲載されているソースコードを以下のリンクからダウンロード可能です.
なお,本サンプルプログラムのコンパイル及び実行は自己責任で行ってください.特に,本物のロボットに適用するための安全性などを全く考慮していませんので,そのような用途には向きません.また,教育目的のシミュレータであるため,精度を必要とするような研究の用途にも向きません.あくまで,教育目的とお考えください.著者及び森北出版は本プログラムによって生じたあらゆる結果についての責任を負いかねます.ご了承した方だけダウンロードしてください.まだ十分にテストしきれていないので再配布はお止めください.
また,コンパイルできない,バグがある,あるいは要望などをコメントして頂けるとできる限り対処します.
ODE0.10.0からビルドの方法が少し変更になり,それに伴いStep1からStep9までの全ソースコードをまとめて1つのファイルにしました.上のダウンロード(download)メニューまたは以下のダウンロードからソースコードを入手し,ビルドしてください.コメントは日本語で書いています.
ODE0.10.0用
ODE0.9と0.8用
- ソースコード
- ODE0.9用は1つのファイルにまとまっていません.ここをクリックしてODE本カテゴリから各Step(章)のソースコードをダウンロードしてください.
- コンパイル・実行方法
- pro1-1.zipを例にWindowsユーザとLinux, Mac OS X ユーザに分けて説明します.
- Windowsユーザ
- pro1-1.zipをデスクトップにダウンロードして解凍する.
- pro1-1というフォルダーがデスクトップにできるので,フォルダーごと
C:¥msys¥1.0¥home¥ユーザ名¥src¥ode-0.9¥roboSimuの中に移動する.roboSimuフォルダがない場合は作る. - デスクトップのmsysアイコンをダブルクリックしてターミナルソフトを起動する.これからはターミナルソフト(Windowsのコマンドプロン プトに相当)で以下のコマンドを打ち込んで実行する.$はプロンプト(コマンドを打ち込める状態であることを示す記号)なので,自分では打ち込まない.
- 作業フォルダへ移動
$ cd src/ode-0.9/roboSimu/pro1-1 Enterキーを押す
cdはフォルダを移動するコマンド. - コンパイル(実行形式ファイルを作成)
$ make Enterキーを押す
makeはコンパイルを自動化した便利なコマンド. - 実行可能ファイルの確認
$ ls Enterキーを押す (lsは小文字のエルエス)
lsはフォルダーにあるファイルを表示するコマンド.コンパイルに成功すると拡張子がexeの実行可能ファイルが作成される. - 実 行
$ 実行可能ファイル名 Enterキーを押す
pro1-1の場合はコンパイルに成功するとhello.exeという実行可能なファイルが作成されるので,実行可能ファイル名はhelloとなる.なお,拡張子のexeは付けてもよい.
当然のことながら,エクスプローラなどでexeファイルをダブルクリックしても起動する.慣れるとコマンドを打ち込んだ方が時間の節約になるので,コマンドを打ち込む方がお勧め.
- Linux、Mac OS X ユーザ
- pro1-1.zipを/home/ユーザ名/src/ode-0.9/roboSimuの下にダウンロードする.roboSimuのディレクトリがない場合は作る.
- ターミナルを起動して以下のコマンドを実行する.
- 作業ディレクトリ(フォルダ)へ移動
$ cd /home/ユーザ名/src/ode-0.9/roboSimu Enterキーを押す - 解 凍
$ unzip pro1-1.zip Enterキーを押す - 実行するディレクトリへ移動
$ cd pro1-1 Enterキーを押す - 自分のシステムにあったmakefileをコピーする.
$ cp makefile.linux makefile Enterキーを押す (Linuxな方)
$ cp makefile.osx makefile Enterキーを押す(Macな方) - コンパイル
$ make Enterキーを押す - 実 行
$ ./実行可能ファイル名 Enterキーを押す
pro1-1の場合,実行可能ファイル名はhelloとなる.
でむ
コメント
マツさん,
すみませんリンクが切れていたようです.ご指摘ありがとうございます.
訂正しました.
でむ
はじめまして、数日ほど前からODEを使い始めました。超初心者です。
早速ですが、なぜかソースコードを見ようとすると404エラーが出てしまうのです。理由が分からないでしょうか?
halさん,
コメントありがとうございます.良著といって頂けて目がハート印です.
さて,御質問の件ですが,お使いの環境が良くわからないので外しているかもしれませんが,
全角の文字(スペース含む)が入ってないでしょうか?
gccやg++ではコメント以外に全角文字があるとコンパイルできません.
全角のスペースも表示するようにエディターを変更してください.
コメントをわかりやすいように日本語にしたので,この手の問題が発生する場合があります.
解決しない場合は,お使いの環境を詳しく教えてください.
はじめまして。halと申します。よろしくお願いいたします。
私は常々ロボット制御を勉強したいと思っており、そのきっかけを探していたのですが、あるとき立ち寄った本屋にて偶然本著「ロボットシュミレーション」に出会いました。
他のロボット制御本にはない切り口と分かりやすさから、即購入させていただきました。良著に出会えて喜ばしく思っている次第であります。
さて、本題ですが、
現在インストールを正常に終え、「step1 ODE初体験」の項にて、ボールをバウンドさせようとしています。で、Cソースを変更し、makeを実行しようとしているのですが、どうしてもerrorが出てしまいます。
具体的には以下の通りです。
$ make
g++ -Wall -fno-exceptions -fno-rtti -g -DWIN32 -c hello.cpp -L../../drawstuff/src -L../../ode/src -L/usr/local/lib -I. -I../../include -I/usr/include
hello.cpp:1: error: stray ‘\239’ in program
hello.cpp:1: error: stray ‘\187’ in program
hello.cpp:1: error: stray ‘\191’ in program
make: *** [hello.o] Error 1
Cソースの変更部分を元に戻しても、上記のようにerrorとなってしまいます。pro1-1フォルダ内のbounce.cppを書き換えています。
お恥ずかしながらC言語を扱うようになってからまだ半年程度の素人のため、「何があかんのや~??」と途方にくれています。すみませんがアドバイスよろしくお願いします。
ヌロンさん,
実際見ないとわからないケースが度々あるので,解決してホットしています.
なお,Linuxをお使いの場合は,パソコンのグラフィクスチップにLinuxのグラフィックスドライバーが対応していないと描画速度が非常に遅くなり,空の雲が全くたなびかない場合があります.ODEはゲームの物理計算エンジンに使われているように非常に高速です.その場合は,グラフィクスチップ用のドライバーを探すか,Linuxのドライバーがあるグラフィクスボードに変更する必要があります.
返信ありがとうございました。
>外しているかもしれませんが,/usr/local/libを/etc/ld.so.confに追加し,/sbin/ldconfigを実行してください.
上記のアドバイスでお蔭様で動作するようになりました。
1. ld.so.confに/usr/local/libを1行追加(root)
$ cat etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/lib
2./sbin/ldconfig を実行(root)
3.Pro1-1のhelloを実行(ODEをインストールした一般ユーザ)
$ ./hello
libGL warning: 3D driver claims to not support visual 0x4b
Simulation test environment v0.02
Ctrl-P : pause / unpause (or say `-pause’ on command line).
Ctrl-O : single step when paused.
Ctrl-T : toggle textures (or say `-notex’ on command line).
Ctrl-S : toggle shadows (or say `-noshadow’ on command line).
Ctrl-V : print current viewpoint coordinates (x,y,z,h,p,r).
Ctrl-W : write frames to ppm files: frame/frameNNN.ppm
Ctrl-X : exit.
ヌロン様
外しているかもしれませんが,/usr/local/libを/etc/ld.so.confに追加し,/sbin/ldconfigを実行してください.
ヌロン様
拙著をご購入頂き誠にありがとうございます.
高専生や大学低学年を対象に執筆しましたので,昔プログラムを楽しまれていた方がご購入されることは想定外ですが,うれしい誤算です.どこで拙著の存在を知られたか教えて頂ければ幸いです.
1. TypeKeyIDは以下のサイトへいき,無料アカウントを新規に作成により作成してください.
なお,TypeKeyIDがなくても投稿は可能です.ただし,私が認証するまで投稿が表示されません.
https://www.typekey.com/t/typekey/?lang=ja
2. libraryが見えないようです.
make installはされましたでしょうか?
/usr/local/libにlibode.aとlibode.soがなければいけません.ございますか?
3. 「../../include/ode/config.h:264:1: 警告: “dDOUBLE” が再定義されました」
これは私のミスです.ごめんなさい.警告なのでコンパイルは可能ですが,警告のでないmakefile.linuxにソースコードを入れ替えました.http://demura.net/archives/2007/05/step1.htmlから新しいファイルがインストール可能です.
なお,警告の原因はgcc -Wall -g -DdDOUBLEとdDOUBLEを定義したためです.これは描画用ライブラリdrawstuffのAPIが単精度と倍精度で違うため,倍精度を定義して倍精度用APIを使っていました.今の拙著では,プログラム1.2の4~6行目で単精度と倍精度に対応しているため不要です.新しいファイルをダウンロードしない場合はmakefile.linuxの2行目にある-DdDOUBLEを消してください.
「ロボットシミュレーション」の発刊おめでとうございます。
早速、本、購入させていただきました。
この本を参考にしながら、趣味でロボットシミュレーションを
楽しみたいなと始めたところです。
現場を離れており、最近はプログラムを作ることはありません
が、若いころ結構作っていたので昔の感覚を取り戻しつつのチ
ャレンジ中です。
さて、本題になりますが、
実際にパソコンでトライしてみようと、早速、ホームページを
参考にしながら、サンプルプログラム(Hello、monoBot)を動
かしてみたのですが、うまく動作できませんでした。
どのように対応すれば良いかアドバイスいただけると助かりま
す。
また、http://demura.net/で投稿できるようにするため、TypeKey
ID
の取得方法についてもご教授いただけませんでしょうか。
よろしくお願いいたします。
以下に、実際に行った手順、動作OS、ログを記載いたします。
【手順】
・ODEのインストール
正常にインストールでき、テストプログラムも動作しまし
た
・pro1-1のダウンロードとmake
正常にmakeできたと思われますが、以下のエラーが発生し
ます
error while loading shared libraries: libode.so:
cannot open shared object file: No such file or directory
・pro1-3のダウンロードとmake
pro1-1と同様です。
【動作OS】Linux ディストリビューションFedora Core 6
【ログ】pro-1-3をmakeし、実行したときのログです
$ cd pro1-3
$ ls
makefile makefile.linux makefile.mingw makefile.osx
monoBot.cpp
$ cp makefile.linux makefile
$ make
gcc -Wall -g -DdDOUBLE -c monoBot.cpp -L../../drawstuff
-L../../drawstuff/src -L../../ode/src -L/usr/X11R6/lib
-L/usr/lib -L/usr/local/lib -I. -I../../include
-I/usr/X11R6/include -I/usr/include -I/usr/local/include
../../include/ode/ode.h:28 から include されたファイル中,
monoBot.cpp:6 から:
../../include/ode/config.h:264:1: 警告: “dDOUBLE” が再定
義されました
:1:1: 警告: ここが以前の宣言がある位置です
gcc -Wall -g -DdDOUBLE -o monoBot monoBot.o
-L../../drawstuff -L../../drawstuff/src -L../../ode/src
-L/usr/X11R6/lib -L/usr/lib -L/usr/local/lib -I.
-I../../include -I/usr/X11R6/include -I/usr/include
-I/usr/local/include -lm -lode -ldrawstuff -lGL -lGLU
$ ./monoBot
./monoBot: error while loading shared libraries:
libode.so: cannot open shared object file: No such file or
directory
$ ls
makefile makefile.mingw monoBot monoBot.o
makefile.linux makefile.osx monoBot.cpp