ARCS6ではVer5.1以前と異なり、下記のようにロボットごとにディレクトリが分かれて、さらにその下層に制御系ごとにディレクトリが分かれる構造になっています。
gitでバージョン管理・複数ロボット・複数制御系で使いやすくするために、REV.200618からディレクトリ構造が大幅に変わりました。 さらに、REV.24080112からは、Makefileが改修され、ディレクトリ構造も少々変わりました。 例えば、新しいロボット&新しい制御系を追加したいときは、一例として、robotディレクトリの配下に、
のようにディレクトリを追加していきます。 これですべてのロボットで同じライブラリを共有しつつ実験装置特有の制御系やドライバ等々は分けられて、研究室内のコードをgitで管理可能です。 機密保持的にマズいロボットの場合では、そのロボのディレクトリを退避&削除してから push すればおk。
コンパイル&実行するときは、
のようにして所望の制御系コードのところまで移動してからメイクします。
ARCS6にはいくつかのコンパイルのモードがあります。 下記の general/BaseCtrl の部分は適宜読み替えて下さい。
該当ロボットの該当制御系のコードまで移動してメイク デップ。
ヘッダファイルの依存関係を調べて、依存関係ファイル Makefile.depが生成されます。 ライブラリに何か追加したときは必ずこれをやってください。 一番最初にコンパイルするときも必ずコレをやってください! もしやらないと、コードを変更しても実行ファイルに反映されないことがあります!! gccはMakefile.depを参照して再度コンパイルが必要か否かを判断するので。
該当ロボットの該当制御系のコードまで移動してメイクして実行。
該当ロボットの該当制御系のコードまで移動してメイク オフラインして実行。
このモードではいつもの ControlFunctions.cc は走らずに OfflineCalculations.cc のみが走るようになっています。 ARCSのライブラリは使いたいけどリアルタイム制御はしたくない、オフラインで何か計算させたい、特定の処理のみデバッグしたいときとかに便利。
該当ロボットの該当制御系のコードまで移動してメイク クリーン。
oファイル、sファイルなどの中間ファイルが削除されます。
該当ロボットの該当制御系のコードまで移動してメイク デバッグしてGDB上で実行。
デバッグ情報が埋め込まれて、GDBが追える程度の最適化でコンパイルされます。 少し時間が掛かります。 その後、下記のように自動でGDBが立ち上がります。
立ち上がったら、gdbのプロンプト上で、
とするとARCSがGDBの上で走ります。 エラーが起きると該当箇所で止まってgdbの画面に戻ります。 ただし、ARCSの画面描画と混じり合ってごちゃまぜ表示になりますが、どこかに (gdb) がいるはず。 そうしたら、
とするとバックトレースされて、どこがオカシイか分かります。
この方法は特に segmentation fault、通称セグフォ、SIGSEGVで困っているときに便利。
quitで終了。
終わったらクリーンしておいてください。
該当ロボットの該当制御系のコードまで移動してメイク アセンブリリスト。
通常のコンパイル&リンクはされずに、sファイルが生成されます。
どういうアセンブリコードになっているのか気になるときに使います。
終わったらクリーンしておいてください。
SWL - The Side Warehouse Laboratory, 横倉研究室 - 技術倉庫
Copyright(C), The Side Warehouse Laboratory, All rights reserved.