Indy Tools
IndySDK에서는 필터, 필터 미분 및 공유메모리 등을 제공하여 사용자가 저수준 제어기를 구성함에 있어서 사용할 수 있는 툴을 제공한다.
필터
필터는 Util/Filter.h 에 작성된 라이브러리를 추가함으로써 사용할 수 있므며 NRMKFoundation 의 명칭공간(namespace)으로 정의되어 있다.
[::Filter]
- Filter class is a parent class of LowPassFilter, FilteredDerivative, FilterLeadLag, and FilterMovingAverage classes
- Filter class includes "filter" and "setTransferFunction"
NRMKFoundation::Filter::filter (refine the signal)
1 |
|
Parameters:
- raw: Raw signal to be filtered
- filtered: Filtered signal
NRMKFoundation::Filter::setTransferFunction (set the type of the filter)
1 |
|
Parameters:
- den: Denominator polynomial coefficients (i.e., den[0] + den[1]*(1/z) + den[2]*(1/z^2)...)
- num: Numerator polynominal coefficients (i.e., num[0] + num[1]*(1/z) + num[2]*(1/z^2)...)
[::LowPassFilter]
1 2 3 4 5 |
|
NRMKFoundation::LowpassFilter::setParam
- Lowpass filter implementing \begin{align} \frac{w}{s+w}, \end{align} where w is the cutoff frequency of lowpass filter.
1 |
|
Parameters:
- sampFreq: Sampling frequency of the control system
- cutOffFreq: Cutoff frequency of the lowpass filter
[::FilteredDerivative]
1 2 3 4 5 |
|
NRMKFoundation::FilteredDerivative::setParam
- Derivative filter implementing \begin{align} \frac{w s}{s+w}, \end{align} where w is the cutoff frequency of the filter.
1 |
|
Parameters:
- sampFreq: Sampling frequency of the control system
- cutOffFreq: Cutoff frequency of the filter
[::FilterLeadLag]
1 2 3 4 5 |
|
NRMKFoundation::FilterLeadLag::setParam
- lead-lag filter implementing \begin{align} \frac{(w_2 w_3/w_1)(s+w_1)}{(s+w_2)(s+w_3)}, \end{align} where \begin{align} w_1 = 2 \pi f_1, \quad w_2=2 \pi f_2, \quad\text{and}\quad w_3 = 2 \pi f_3. \end{align}
1 |
|
Parameters:
- sampFreq: Sampling frequency of control system
- f1, f2, f3: Filtering frequencies defined above
[::FilterMovingAverage]
1 2 3 4 5 |
|
NRMKFoundation::FilterLeadLag::FilterMovingAverage
1 2 3 4 5 6 7 8 9 10 |
|
Parameters:
- _a, _b: Denominator and nominator polynominal coefficients, respectively
공유메모리
공유메모리는 NRMKFramework::ShmemManager 클래스를 이용하여 다룰 수 있다. Robot에 관한 데이터를 공유메모리로 다루기 위해서는 NRMKFramework/Indy/Sharedmemory/SharedData.h에 작성된 라이브러리를 추가 함으로써 사용할 수 있으며 명칭공간 NRMKIndy::SharedData에 구조체로 정의되어 있다. 공유메모리에 대한 자세한 사항은 공유메모리 챕터를 참고하기 바란다.
[::ShmemManager]
NRMKFramework::ShmemManager::readMemory
- Copy a certain size of shared memory (starting from a specific address) to the memory indicated by the pointer (ptrData)
1 |
|
NRMKFramework::ShmemManager::writeMemory
- Copy a certain size of memory indicated by the point (ptrData) to the shared memory (starting from a specific address)
1 |
|
NRMKFramework::ShmemManager::getPtr
- Return the void-type pointer which indicates the absolute address of the relative address defined for a certain data
1 |
|
NRMKFramework::ShmemManager::getPtrObjByAddr
- Return T-type pointer which indicates the absolute address of the relative address defined for a certain data
1 2 3 4 5 |
|
NRMKFramework::ShmemManager::getRefObjByAddr
- Copy the value pointed to by the pointer to a variable defined by reference
1 2 3 4 5 |
|
NRMKFramework::ShmemManager::resetMemory
- Set all data stored in the shared memory to zero
1 |
|
[::SharedData]
공유메모리를 이용해서 사용할 수 있는 데이터의 구조체 항목은 다음과 같다. 자세한 사항은 공유메모리 챕터를 참조하기 바란다.
- RobotRTSharedData: 로봇의 실시간 데이터와 EtherCAT 정보
- RobotControlSharedData: 로봇의 상태변수 (위치, 속도, 토크 등)
- RobotStateSharedData: 로봇 소프트웨어 프로그램의 상태정보
- RobotControlStatusSharedData: 로봇의 제어 상태
- RobotConfigSharedData: 로봇의 설정 값
- RobotEmergencySharedData: 로봇의 최근 에러 데이터
- SmartDIOSharedData: 컨트롤 박스(CB)의 Digital I/O포트에 대한 데이터
- SmartAIOSharedData: 컨트롤 박스(CB)의 Analog I/O포트에 대한 데이터
- EndToolDOSharedData: 엔드툴(EndTool)의 Digital 출력포트에 대한 데이터
- ExtraIOData: 컨트롤 박스의 CAN포트를 통해 획득된 (로보터스사의) F/T 센서 데이터
데이터 전송 및 획득을 위해서 제공되는 라이브러리들은 다음과 같다.
NRMKIndy::SharedData::getDataFunction
1 2 3 |
|
Parameters:
- getDataFunction: 데이터 획득에 사용되는 함수의 명칭 (e.g., getControlData: 로봇의 상태변수를 포함하는 구조체의 객체를 획득, getSmartAIO: 컨트롤 박스(CB)의 Analog I/O 포트에 대한 데이터 획득)
- DataType: "ShredData.h"에 정의된 데이터 구조체
NRMKIndy::SharedData::getPtrDataFunction
1 2 |
|
Parameters:
- getPtrDataFunction: 데이터 획득에 사용되는 함수의 명칭 (e.g., getPtrSmartAIO, getPtrSmartDIO)
- DataType: "SharedData.h"에 정의된 데이터 구조체, DataType에 대한 포인터 변수를 입력을 받고 해당 데이터를 포함하는 공유메모리의 주소를 할당한다.
NRMKIndy::SharedData::setSmartDO
1 2 3 |
|
Parameters:
- doNum: Digital 출력 포트 번호
- doVal: Digital 출력 값, true/false 값으로 설정
- smartDO: 8개 포트에 대한 Digital 출력 값을 나타내는 메모리의 주소 값
NRMKIndy::SharedData::setSmartAO
1 |
|
Parameters:
- aoNum: Analog 출력 포트 번호
- aoVal: Analog 출력 값