Advanced Robot Control System 4.1 and 4.2

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

コレは何?/What is this?

CUIなのにランレベル3で動くのに先進を謳うロボット制御システム(ARCS あーくす?)
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追記)
画面解像度は1024x768以上に設定して下さい) (2013/10/21追記)




You can download the source code of ARCS. (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
・データ保存の残り時間が今まで表示されていなかったので、STORAGE の欄に時間を表示するように追加修正
・データ保存時間がゼロになったら、「DATA STORAGE」が消灯すように修正
 (Parameters.hhの73、91行目の GRAPH_A_RST_TIME、GRAPH_B_RST_TIME で"グラフ毎に"変えることができます)


- 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.


- In the case of certain single core CPU, ARCS 4.1 cannot generate multiple realtime thread.

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

- 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

- 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
 ・実装したいプログラムを,"" に書きこむ。
 - In order to implement your tasks, you can write your C/C++ code to "".

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

 ・初めてコンパイルするときは「make all」コマンドを使用すること
 ・「lib/」 以下のファイルを変更した場合は,「make all」コマンドを使用すること
 ・「警告: array subscript is above array bounds」が出るが,これはRTAIの方のソースなので問題なし
 ・何か様子がおかしいときは、「make clean」や「make libclean」をしてみる
 - If you changed "" 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

 - 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 !

 - 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.
 - 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.


- 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


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

試験環境/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-, rtai-3.8

We confirmed that ARCS is capable of operating normally in this situation.


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 <>.
Besides, you can negotiate about other options of licenses instead of GPL.
If you would like to get other licenses, please contact us<>.



- 146233 -

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