#include <runCtrl.h> #include <urgCtrl.h> #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { try { if (run.connect("COM1") < 0) { printf("RunCtrl::connect: %s\n", run.what()); exit(1); } ...
ただし、プログラム引数に --help を指定する、といった機能や、シミュレータを含むモニタ機能は利用できません。
#include <runCtrl.h> #include <urgCtrl.h> #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { try { runCtrl run; urgCtrl urg; if (run.connect(argc, argv) < 0) { printf("RunCtrl::connect: %s\n", run.what()); exit(1); } if (urg.connect(argc, argv) < 0) { printf("URGCtrl::connect: %s\n", urg.what()); exit(1); } ...
又は、vutils.h の接続関数を用いた場合の記述は以下の通りです。
#include <runCtrl.h> #include <urgCtrl.h> #include <vutils.h> #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { try { runCtrl run; urgCtrl urg; if ((initConnection(&run, argc, argv) < 0) || (initConnection(&urg, argc, argv) < 0)) { exit(1); } ...
「動作確認」 で説明したとおり、プログラムの実行時に --help を指定すると、プログラムの引数に何が指定できるかを確認できます。
この場合、RunCtrl, URGCtrl に接続デバイスを指示する必要がありますので、それぞれ接続デバイスが /dev/ttyUSB0, /dev/ttyACM0 だとした場合、プログラムの実行方法は以下の通りです。
./sample_program --run_port=/dev/ttyUSB0 --urg_port=/dev/ttyACM0
接続デバイスの確認については、「Windows 環境でのシリアルポートの認識について」や「Linux 環境でのシリアルポートの認識について」を参考にして下さい。
defautargs の例
# vxv2 用の指定 #--run_port=/dev/ttyS0 --run_port=/dev/ttyUSB0 --urg_port=/dev/ttyACM0 --urg_handstand
引数は行毎に1つの引数として評価され、# 以降は無視されます。上記の例では、走行制御の接続デバイスとして、/dev/ttyUSB0, 測域センサの接続デバイスとして /dev/ttyACM0 を指定、測域センサの取り付けは、天地が逆になっていることをプログラムに伝えています。
#include <mRunCtrl.h> #include <mURGCtrl.h> #include <vutils.h> #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { try { mRunCtrl run; mURGCtrl urg; if ((initConnection(&run, argc, argv) < 0) || (initConnection(&urg, argc, argv) < 0)) { exit(1); } vmonitor::show(); // シミュレータ画面の起動 ...
実行方法
./sample_program -s
また、シミュレータ実行の場合、測域センサのための環境地図を指定することができます。
環境地図の定義が passage.env の場合
./sample_program -s passage.env
実行結果の例
環境地図で廊下を再現した例
passage.env の内容
(polygon (1500,500) (2100,500) (2100,300) (1500,300) ) (polygon (1500,-1800) (2100,-1800) (2100,-2000) (1500,-2000) ) (polygon (4900,-1900) (5300,-1900) (5300,-2000) (4900,-2000) ) (polygon (5600,-1900) (6000,-1900) (6000,-2000) (5600,-2000) ) (polygon (6300,-1900) (6700,-1900) (6700,-2000) (6300,-2000) ) (polygon (-500,500) (7000,500) ) (polygon (7000,500) (7000,-3500) ) (polygon (-500,-2000) (4500,-2000) ) (polygon (4500,-2000) (4500,-3500) )
passage.env のような環境ファイルは、Tgif や edraw といったドローツールのデータを変換して作成することもできます。 詳しくは、モニタライブラリについてのドキュメントを参考にして下さい。 !!! 未リンク
./sample_program -p
再生に用いたいログファイルのファイル名が logfile.xml 以外の場合、-l <logfile> という形式で指定できます。
ログファイルの名前が logfile_060810.xml の場合
./sample_program -p -l logfile_060810.xml
詳しくは、モニタライブラリについてのドキュメントを参考にして下さい。 !!! 未リンク