Advanced Robot Control System 4.1 and 4.2
FRONT PAGE

ここで紹介しているARCS4.1と4.2は古いので、最新版の ARCS Ver.5.1-SF を使って下さい! (2015/09/30追記)

コレは何?/What is this?

LinuxとRTAIを使ってリアルタイム空間上でアクチュエータを制御できるソフトウェア
CUIなのにランレベル3で動くのに先進を謳うロボット制御システム(ARCS あーくす?)
ARCSによって円滑に実験が進められるようになり,論文締切が間近に迫る貴方の強い味方になるでしょう
(ちなみに、RTAIでなくとも、リアルタイムスレッドの部分を書き換えれば何でも使えるはずです)
This software, which is called "Advanced Robot Control System" or "ARCS", controls actuators mounted on your robots by using Linux and RTAI realtime operating system.

注意:"segmentation fault" が発生する場合、グラフの描画が悪さをしています。グラフプロット部分をコメントアウトするか、GRUBのVGAモードを 791 (意味は1024x768 16bit)にして下さい。(13/10/04追記)
最新バージョンでFIXしました。(16bit色&32bit色に両対応、画面設定に追従するようにしましたが、
画面解像度は1024x768以上に設定して下さい) (2013/10/21追記)



画面/Screenshot

拡大



ダウンロード/Download

ソースコード一式は以下からダウンロードできます。
You can download the source code of ARCS.

ARCS4.1-REV.20110721-A.zip

ARCS4.2-REV.20131021-A.zip (Latest Version!!)

g++/gcc で動作確認済みです。 RTAIの他に,フレームバッファ,curses,math等々が必要です。 (事情により各種オブザーバのソースは非公開です)
We confirmed that this source code was normally compiled and linked using g++/gcc. In order to use this program, you need frame buffer, curses, and math libraries. (For some reasons, we are not able to publish the source code of the observers.)



更新情報/Change Log

ARCS4.2-REV.20131021-A :
・グラフ描画を16bit色、32bit色に両対応し、非対応色の場合に出ていた "segmentation fault" をFIX
 (相変わらず1024x768以上でないと正常に表示されません、これは仕様です)
・データ保存の残り時間が今まで表示されていなかったので、STORAGE の欄に時間を表示するように追加修正
・データ保存の残り時間をパーセントで表示するように追加修正
・データ保存時間がゼロになったら、「DATA STORAGE」が消灯すように修正
・コメント文の誤記、誤字を修正
・なぜかFrameGraphicsクラスとGraphPlot2DクラスがARCS名前空間に入っていなかったのでこれも修正
・グラフの横軸更新時間が20秒で固定されていたのを、自由に設定できるように修正
 (Parameters.hhの73、91行目の GRAPH_A_RST_TIME、GRAPH_B_RST_TIME で"グラフ毎に"変えることができます)



主な機能/Functions

・マルチリアルタイムスレッドの生成・周期実行・破棄
・測定データの出力(CSV形式及びTAB区切りDAT形式対応)
・アクチュエータパラメータ(位置,電流,推力等)のリアルタイム表示(CUIでもOK)
・任意変数のリアルタイム波形描画(CUIでもOK)
・任意変数値のリアルタイム表示(CUIでもOK)
・実際の制御周期の計測と表示(CUIでもOK)
・実際の計算消費時間の計測と表示(CUIでもOK)
・D/Aコンバータ,A/Dコンバータ,エンコーダカウンタとのインターフェースクラス
・モーションコントロールクラス群(積分器,擬似微分器,各種制御器,補償器,フィルタ等)
・様々なクラス(リングバッファ,統計処理等)
- Generation, periodical execution, and disposal of multi-realtime thread.
- Writing operation of measured data in the experiment.
- Display of status of actuators (position, current, force, and so on) in real time.
- Plot of waveform of optional variables in real time (you can use this function based on a CUI).
- Display of optional variables in real time.
- Display of actual measured control periods.
- Display of computational time.
- Interfaces class for DACs, ADCs, and encoder counters.
- Motion control class (Integrators, Differentiators, Controllers and Regulators, Compensators, Filters, and so on).
- Other class (Ring buffers, statistical operations).



必要環境/Hardware and Software Requirements

必要環境は以下の通りです。
The hardware and software requirements of ARCS are as follows:

Hardware:Multi-Core CPU, Display(1024x768, 16bits colors)
Software:Linux 2.6, RTAI 3.7 or 3.8, Framebuffer, C/C++ standard library.

既知のバグ/Bug

・一部のシングルコアのCPUにおいて,リアルタイムスレッドが一つしか立ち上がらない現象が報告されています
- In the case of certain single core CPU, ARCS 4.1 cannot generate multiple realtime thread.



将来付加される予定の機能/Future work

・Ethernet上での任意変数値のリアルタイム送受信
・等高線グラフ,カラーマップ,3次元ワイヤフレームの描画(CUIでもOK)
・静止画,動画データの表示(CUIでもOK)
・画像認識クラス
- Realtime communication for transmitting optional variables by using Ethernet (we are testing now).
- Contour map, color map, 3D wire frames (on a CUI).
- Picture images and video images will be projected on a CUI screen (we are testing now).
- Implementation of image recognition class.



リアルタイム制御/Realtime control

・RTAIを用いてユーザ空間上で計算をハードリアルタイムで実行する。
・計算量やインターフェースによるが,制御周期は100μsで動作可能。
- Using RTAI, your required computation is performed on user space.
- In our lab, the control period is set to 100 micro seconds. (the period time depends on performances).



使い方/How to Use

1. 制御プログラムの実装/How to implement your tasks
 ・実装したいプログラムを,"ControlFunctions.cc" に書きこむ。
 - In order to implement your tasks, you can write your C/C++ code to "ControlFunctions.cc".

2. コンパイル&リンク/How to compile and link


 ・初めてコンパイルするときは「make all」コマンドを使用すること
 ・「ControlFunctions.cc」や「Parameters.hh」を変更した場合は,「make」コマンドでコンパイル&リンク
 ・「lib/」 以下のファイルを変更した場合は,「make all」コマンドを使用すること
 ・「警告: array subscript is above array bounds」が出るが,これはRTAIの方のソースなので問題なし
 ・何か様子がおかしいときは、「make clean」や「make libclean」をしてみる
 - If you changed "ControlFunctions.cc" and/or "Parameters.hh", you can use "make" command to compile and link.
 - You should type "make all" when you revise the files in "lib/".
 - You can ignore the warning text "warning: array subscript is above array bounds," because it is source code of RTAI.

3. 実行/How to execute


 ・「./ARCS」と打つと,以下のような画面が現れる
 - Type "./ARCS", then ARCS screen shown as the figure below appears.

拡大


4. 実験開始/How to start
 ・「START」でエンターキーを押して実験開始! あなたの思い通りに動くよう,健闘を祈ります!
 - To start the experiment, you select "START" on the screen, and press enter. Good luck and God's speed !


 ・もし何もせずに,終了したい場合は「EXIT」を選んでエンターを押す
 - If you want to exit, you select "EXIT", and press enter.


5. 実験終了/How to stop

拡大

 ・モータの作動を停止する場合は,エンターを押す
 - To stop your robots, please press enter key.


6. 実験データの保存と終了/How to save and exit


 ・測定データを保存したい場合は,「SAVE and EXIT」を選ぶ
 - Please select "SAVE and EXIT" and press enter key if you would like to store measured data to disk.
 ・CSVファイルかDATファイルが生成されるはずです
 - The CSV/DAT file, which is measurement data in the experiment, is generated.


 ・別に測定データを保存したくないときは,「DISCARD and EXIT」を選ぶ
 - If you want to discard the data stored to the temporal memory, please select "DISCARD and EXIT" as shown in the above figure, and then press enter.



構造/Structure

・基本的なファイル構造は以下の図の通り
- The fundamental structure of ARCS is shown in the figure below.





クラスおよび関数一覧/List of Class and Functions

・クラスおよび関数一覧は以下を参照
- You can see the list of the class and functions of ARCS.

クラスおよび関数一覧/List of Class and Functions


ファイル/Files

 ARCS4.1-REV.20110721-A/
	ARCS			実行可能ファイル/Executable File.
	ARCS.cc			本体(main関数を含む)/The main code including main function.
	ARCSscreen.cc		画面表示ソースコード/The source code for projecting ARCS screen.
	ARCSscreen.hh		画面表示ヘッダファイル/The header file for above.
	ControlFunctions.cc	制御ソースコード(周期実行関数を含む)/The control source code including periodic functions.
				アクチュエータの制御プログラムはここに書く
	ControlFunctions.hh	制御ヘッダファイル/The header file for the above code.
	Makefile		メイクファイル/Makefile
	Parameters.hh		定数・変数格納用ヘッダ/The header file for storing constant or variable value.
				制御周期,換算ゲイン,CSV/DATファイル名,等々の設定はここに書く
	ReadMe.txt		私を読んで/Read Me
	lib			色々なクラスが詰まったディレクトリ/The source and header files exist in this directory.
	makefile.depend		依存関係記述用/For dependencies.
 ARCS4.1-REV.20110721-A/lib/
	AccObsrv.cc		加速度オブザーバ(非公開)/Acceleration Observer(closed function).
	AccObsrv.hh		
	ActuatorSim.cc		アクチュエータシミュレータ/Actuator Simulator.
	ActuatorSim.hh		
	DataStorage.cc		測定データ保存クラス/Measurement Data Storage Class.
	DataStorage.hh		
	Differentiator.cc	疑似微分器/Pseudo Differentiator.
	Differentiator.hh	
	Differentiator2.cc	2次疑似微分器/2nd-order Pseudo Differentiator.
	Differentiator2.hh	
	DistObsrv.cc		1次形外乱オブザーバ(非公開)/1st-order Disturbance Observer(closed function)
	DistObsrv.hh		
	DistObsrv2.cc		2次形外乱オブザーバ(非公開)/2nd-order Disturbance Observer(closed function)
	DistObsrv2.hh		
	FrameGraphics.cc	フレームバッファ描画クラス/Framebuffer Display Class.
	FrameGraphics.hh	
	GraphPlot2D.cc		グラフ描画クラス/2D Plot Class.
	GraphPlot2D.hh		
	HighPassFilter.cc	1次高域通過濾波器/1st-order HPF.
	HighPassFilter.hh	
	HighPassFilter2.cc	2次高域通過濾波器/2nd-order HPF.
	HighPassFilter2.hh	
	Integrator.cc		1次積分器/1st-order Integrator.
	Integrator.hh		
	Integrator2.cc		2次積分器/2nd-order Integrator.
	Integrator2.hh		
	kbhit.cc		キーボード押下検出/Key Detector
	kbhit.hh		
	Limiter.cc		リミッタ/Limitter
	Limiter.hh		
	LowPassFilter.cc	1次低域通過濾波器/1st-order LPF.
	LowPassFilter.hh	
	LowPassFilter2.cc	2次低域通過濾波器/2nd-order LPF.
	LowPassFilter2.hh	
	Makefile		メイクファイル/Makefile
	makefile.depend		依存関係ファイル/The dependencies description for make.
	NotchFilter.cc		ノッチフィルタ/Notchfilter(BEF)
	NotchFilter.hh		
	PCI-3133.cc		A/Dコンバータインターフェースクラス/Interface Class for ADCs.
	PCI-3133.hh		
	PCI-3340.cc		D/Aコンバータインターフェースクラス/Interface Class for DACs.
	PCI-3340.hh		
	PCI-6205.cc		エンコーダカウンタインターフェースクラス/Interface Class for Encoder Counters.
	PCI-6205.hh		
	PDcontroller.cc		PD制御器/PD controller.
	PDcontroller.hh		
	PhaseLeadLag.cc		位相補償器/Phase compensator.
	PhaseLeadLag.hh		
	PIcontroller.cc		PI制御器/PI controller.
	PIcontroller.hh		
	PIDcontroller.cc	PID制御器/PID controller.
	PIDcontroller.hh	
	Quarry.cc		Quarry行列/Quarry Matrix.
	Quarry.hh		
	RingBuffer.cc		リングバッファ/Ring buffer.
	RingBuffer.hh		
	RTAItask.cc		RTAIタスク生成クラス/RTAI Task Generation Class.
	RTAItask.hh		
	RTAIthread.cc		RTAIスレッド生成クラス/RTAI Thread Generation Class.
	RTAIthread.hh		
	Statistics.cc		統計処理/Statistics Functions.
	Statistics.hh		
	TimeDelay.cc		遅延生成クラス/Time Delay Generation Class.
	TimeDelay.hh		


試験環境/Experimental Setup

試験環境は以下の通りです。
The experimental setup in the test of ARCS is as follows:

Hardware:Intel Core i7 870 @ 2.93 GHz, Gigabyte P55-UD3R, Intel SSD X25-M
Software:Fedora 12 64bit, kernel-2.6.32.2, rtai-3.8

上記で動作を確認しています。
We confirmed that ARCS is capable of operating normally in this situation.



ライセンス/Licenses

Copyright (C) 2011-2013 Yuki YOKOKURA
This program is free software;
you can redistribute it and/or modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 3 of the License, or any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details <http://www.gnu.org/licenses/>.
Besides, you can negotiate about other options of licenses instead of GPL.
If you would like to get other licenses, please contact us<yokokura@vos.nagaokaut.ac.jp>.



小話

最近は、テレビやらネットメディアやらでARCSの画面がチラチラッと映ったりして、嬉しい限りですね!(2013/10/21)







- 116287 -

研究室の横の倉庫 - Side Warehouse of Laboratory
Copyright(C), Side Warehouse, All rights reserved.