eeros_architecture:hal:config_ros
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
eeros_architecture:hal:config_ros [2017/12/14 17:33] – graf | eeros_architecture:hal:config_ros [2018/01/18 15:54] – [Additional Arguments] graf | ||
---|---|---|---|
Line 11: | Line 11: | ||
| additionalArguments | string | see table below | | | additionalArguments | string | see table below | | ||
+ | ===== Additional Arguments ===== | ||
The '' | The '' | ||
Line 17: | Line 18: | ||
| msgType | string | message type | | | msgType | string | message type | | ||
| dataField | string | data member of message | | | dataField | string | data member of message | | ||
- | | callOne | boolean | ???? | | + | | callOne | boolean | newest availabe message is fetched (false), oldest not yet read message is fetched (true) |
| queueSize | int | size of buffer, default = 1000 | | | queueSize | int | size of buffer, default = 1000 | | ||
| useEerosSystemTime | boolean | use system time or timestamp of message | | | useEerosSystemTime | boolean | use system time or timestamp of message | | ||
Line 26: | Line 27: | ||
</ | </ | ||
+ | ===== Implemented Message Types ===== | ||
+ | The table below shows all currently implemented message types and associated data fields. If your desired message type is not implemented yet, you can easily implement it yourself, see below. | ||
- | In table \ref{tableImplementedMsgTypes} are all currently implemented message types and associated data fields. | + | ^ type ^ msgType ^ dataField ^ |
+ | | AnalogIn | std_msgs:: | ||
+ | | ::: | sensor_msgs:: | ||
+ | | ::: | ::: | angle_max | | ||
+ | | ::: | ::: | angle_increment | | ||
+ | | ::: | ::: | time_increment | | ||
+ | | ::: | ::: | scan_time | | ||
+ | | ::: | ::: | range_min | | ||
+ | | ::: | ::: | range_max | | ||
+ | | AnalogOut | std_msgs:: | ||
+ | | ::: | sensor_msgs:: | ||
+ | | ::: | ::: | angle_max | | ||
+ | | ::: | ::: | angle_increment | | ||
+ | | ::: | ::: | time_increment | | ||
+ | | ::: | ::: | scan_time | | ||
+ | | ::: | ::: | range_min | | ||
+ | | ::: | ::: | range_max | | ||
+ | | DigIn | std_msgs:: | ||
+ | | DigOut | std_msgs:: | ||
- | If your desired message type is not implemented yet, you can easily implement it yourself. | + | You can find a complete example, including a *.json file, in the [[getting_started: |
- | See chapter \ref{sectionImplementMsgType} for a guide to implement additional message types and data fields in \textit{ros-eeros}. | ||
- | |||
- | |||
- | \begin{table}[] | ||
- | |||
- | \centering | ||
- | |||
- | \caption{Currently implemented message types in ros-eeros} | ||
- | |||
- | \label{tableImplementedMsgTypes} | ||
- | |||
- | \begin{tabular}{lll} | ||
- | |||
- | \cline{2-3} | ||
- | |||
- | HAL type & msgType | ||
- | |||
- | AnalogIn | ||
- | |||
- | & sensor\_msgs:: | ||
- | |||
- | & & angle\_max | ||
- | |||
- | & & angle\_increment \\ | ||
- | |||
- | & & time\_increment | ||
- | |||
- | & & scan\_time | ||
- | |||
- | & & range\_min | ||
- | |||
- | & & range\_max | ||
- | |||
- | AnalogOut & std\_msgs:: | ||
- | |||
- | & sensor\_msgs:: | ||
- | |||
- | & & angle\_max | ||
- | |||
- | & & angle\_increment \\ | ||
- | |||
- | & & time\_increment | ||
- | |||
- | & & scan\_time | ||
- | |||
- | & & range\_min | ||
- | |||
- | & & range\_max | ||
- | |||
- | DigIn & sensor\_msgs:: | ||
- | |||
- | DigOut | ||
- | |||
- | \end{tabular} | ||
- | |||
- | \end{table} | ||
- | |||
- | |||
- | |||
- | You can find a complete example, including a *.json file, in the eeros framework (/ | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | \subsection{How to use} | ||
- | |||
- | Refere to the documentation of the EEROS HAL\footnote{http:// | ||
- | |||
- | |||
- | |||
- | First initialize the HAL in your main function: | ||
- | |||
- | \lstset{language=c} | ||
- | |||
- | \begin{lstlisting} | ||
- | |||
- | ... | ||
- | |||
- | int main(int argc, char **argv) { | ||
- | |||
- | ... | ||
- | |||
- | // HAL | ||
- | |||
- | // //////////////////////////////////////////////////////////////////////// | ||
- | |||
- | HAL& hal = HAL:: | ||
- | |||
- | hal.readConfigFromFile(& | ||
- | |||
- | ... | ||
- | |||
- | \end{lstlisting} | ||
- | |||
- | |||
- | |||
- | Add the header file to your control system: | ||
- | |||
- | \lstset{language=c} | ||
- | |||
- | \begin{lstlisting} | ||
- | |||
- | #include < | ||
- | |||
- | \end{lstlisting} | ||
- | |||
- | |||
- | |||
- | You can now declare \textit{PeripheralInputs} and \textit{PeripheralOutputs}: | ||
- | |||
- | \lstset{language=c} | ||
- | |||
- | \begin{lstlisting} | ||
- | |||
- | PeripheralInput< | ||
- | |||
- | PeripheralInput< | ||
- | |||
- | PeripheralOutput< | ||
- | |||
- | PeripheralOutput< | ||
- | |||
- | \end{lstlisting} | ||
- | |||
- | |||
- | |||
- | Call the constructor of the peripheral IOs with the \textit{signalID} used in the *.json file | ||
- | |||
- | \begin{lstlisting} | ||
- | |||
- | class MyControlSystem { | ||
- | |||
- | public: | ||
- | |||
- | MyControlSystem(double ts, ros:: | ||
- | |||
- | dt(ts), | ||
- | |||
- | ... | ||
- | |||
- | analogIn0(" | ||
- | |||
- | digitalIn0(" | ||
- | |||
- | analogOut0(" | ||
- | |||
- | digitalOut0(" | ||
- | |||
- | ... | ||
- | |||
- | } |
eeros_architecture/hal/config_ros.txt · Last modified: 2023/02/27 14:44 by ursgraf