rtc-canopen マニュアルŠび... · 5 1. はじめに...

83
1 RTC-CANopen マニュアル 1.5 RTC-CANopen 0.5.5 対応 2013 03 07 芝浦工業大学 ヒューマン・ロボット・インタラクション研究室

Upload: lehanh

Post on 04-Nov-2018

225 views

Category:

Documents


0 download

TRANSCRIPT

1

RTC-CANopen マニュアル

1.5 版

RTC-CANopen 0.5.5 対応

2013 年 03 月 07 日

芝浦工業大学

ヒューマン・ロボット・インタラクション研究室

2

目次

1. はじめに ................................................................................................................... 5

1.1. 本書の対象者 .................................................................................................... 5

1.2. 関連文書 ............................................................................................................ 5

1.3. 対応デバイス一覧............................................................................................. 5

2. RTC-CANopen........................................................................................................... 6

2.1. RTC-CANopen とは? ....................................................................................... 6

2.2. RT-Middleware とは? ....................................................................................... 6

2.3. CANopen とは? ............................................................................................... 6

2.4. RTC-CANopen の機能 ....................................................................................... 8

2.5. RTC-CANopen のシステム構成 ....................................................................... 8

2.6. Device RTC ...................................................................................................... 10

2.7. Proxy RTC ........................................................................................................ 10

2.8. RTC-CANopen Manager ................................................................................... 10

2.9. PnP Manager ..................................................................................................... 11

2.10. Status Manager ................................................................................................. 11

3. RTC-CANopen の導入方法 .................................................................................... 12

3.1. 動作環境 .......................................................................................................... 12

3.2. RTC-CANopen を利用する上で必要なもの .................................................. 12

3.3. Windows 版の導入手順 ................................................................................... 13

3.3.1. 環境構築 <Windows> .............................................................................. 13

3.4. Linux 版の導入手順 ........................................................................................ 15

3.4.1. RTC-CANopen を利用する上で必要なもの <Linux> ............................ 15

3.4.2. 環境構築 <Linux> ................................................................................... 15

3.5. Eclipse への RTC-CANopen のツールの導入 ................................................. 22

3.6. DCF の作成 ..................................................................................................... 22

3.6.1. マクソンジャパン株式会社の EPOS の場合.......................................... 22

3.6.2. マイコンの DCF を作成する場合 ........................................................... 23

3.7. マイコンにおける DeviceRTC の作成手順.................................................... 27

3.7.1. H8SX1544F マイコン .............................................................................. 27

3.7.2. SH7286 マイコン ..................................................................................... 32

3.8. RTC-CANopen Builder のよる DCF の変換及び XML の作成 ...................... 41

3.9. RTC-CANopen System Editor による RTS の作成 .......................................... 45

3

4. RTC-CANopen の利用方法 .................................................................................... 51

4.1. RTC-CANopen を利用する上での設定 .......................................................... 51

4.1.1. 各 RTC-CANopen Server の RTC に関する conf の設定例<Windows> .. 51

4.1.2. 各 RTC-CANopen Server の RTC に関する conf の設定例<Linux> ........ 53

4.1.3. PosixRealTimeExecutionContext の使用方法 <Linux> ........................... 55

4.1.4. RTC-CANopen を利用した各システムの前準備.................................... 58

4.2. H8SX1544F を用いた Thermometer-Fanmotor System.................................... 59

4.2.1. システム概要 ........................................................................................... 59

4.2.2. ハードウェア構成 ................................................................................... 59

4.2.3. ソフトウェア構成 ................................................................................... 60

4.2.4. 構成されているコンポーネントの詳細説明 ......................................... 61

4.2.5. 利用方法 ................................................................................................... 63

4.3. 小型 RTC-CANopen リファレンスロボット ................................................. 66

4.3.1. システム構成 ........................................................................................... 66

4.3.2. ハードウェア構成 ................................................................................... 67

4.3.3. ソフトウェア構成 ................................................................................... 70

4.3.4. 構成されているコンポーネントの詳細説明 ......................................... 73

4.3.5. ソースコードのビルド ............................................................................ 79

5. トラブルシューティング ...................................................................................... 80

6. ライセンス ............................................................................................................. 82

7. 商標 ......................................................................................................................... 82

8. RT-Component について ......................................................................................... 83

9. 問い合わせ先.......................................................................................................... 83

参考文献.......................................................................................................................... 83

4

RTC-CANopen マニュアルの改訂履歴

版数 改版日 改版内容

1.0 2011/09/20 初版として発行

1.1 2011/11/07 RTC-CANopen 0.5.4 対応

Windows のみ IXXAT 社の CAN インターフェースに対応

Windows 版のマニュアルを追記

DeviceRTC の作成方法(HEW 利用)を追記

EPOS Studio における DCF の設定方法を削除

1.2 2011/11/23 RTC-CANopen の利用手順について追記(4.1.4 章)

1.3 2012/02/23 RTC-CANopen 0.5.5 対応

(RTC-CANopen Manager の一部仕様変更・起動引数の追加)

RTC-CANopen のリリースノートを掲載

1.4 2012/07/18 DeviceRTC に関する記述を修正及び一部追記(SH 系)(3.7 章)

1.5 2013/03/07 Ubuntu12.04 対応

RTC-CANopen のリリースノート

ver 改版日 改版内容

0.5.2 2011/08/26 初回公開版 (Linux のみ対応)

OpenRTM-aist -1.0.x-RELEASE にて動作確認

0.5.3 2011/09/22 Windows への対応

0.5.4 2011/10/17 Ver.0.5.3 での不具合対応

0.5.5 2012/01/21 CiA 標準化に向けた微修正

-RTC-CANopen Manager にノード ID を持たせるように修正

-RTC-CANopen Manager からハートビートを出力に修正

5

1. はじめに

本書はRTC-CANopen及びRTC-CANopenを適用したリファレンス(リファレンスロ

ボット・マイコンを用いたリファレンスシステム)の説明をする.

1.1. 本書の対象者

本書は RT ミドルウェア,及び RTC についての基本知識を有する利用者を対象とし

ている.RT ミドルウェア,RTC については下記を参照のこと.

OpenRTM-aist Official Website[1]:

http://www.is.aist.go.jp/rt/OpenRTM-aist/

1.2. 関連文書

本書に関係する文書を表 1 に示す.特別に版を指定するものを除き,最新版を使用

するものとする.

表 1 関連文書

文章名 文章内容

RTC-CANopen リファレンスロボットマニ

ュアル~ソフトウェア構成~

リファレンスロボットのソフトウェア構成につ

いて記載.

RTC-CANopen リファレンスロボットマニ

ュアル~ハードウェア構成~

リファレンスロボットのハードウェア構成につ

いて記載.

RTC-CANopen リファレンスロボットマニ

ュアル~実行手順~

リファレンスロボットの実行手順について記載.

1.3. 対応デバイス一覧

対応デバイスを表 2 に示す.

表 2 対応デバイス

デバイス名 詳細

PEAK-System 社製 PCAN-USB,PCAN-PC

Card

CAN インターフェース

IXXAT 製 CAN インターフェース

(USB-to-CAN compact)

CAN インターフェース

マクソンジャパン株式会社製 EPOS 24/5 CiA DS-301/DSP-402/DSP-305 準拠

CANopen デバイス

ルネサスエレクトロニクス社製

H8SX/1544F マイコン

車載制御システム向けの 32 ビット CISC マイコ

6

2. RTC-CANopen

2.1. RTC-CANopen とは?

RTC-CANopen とは CANopen という通信規格を RTC にマッピングした

RT-Middleware である.RTC-CANopen は CANopen の DCF というデバイス情報が

記述されたファイルを読み込むことで Ethernet と CAN のインターフェース変換を行

うProxyRTCを自動的に生成する.それによりCANopen製品を容易にRT-Middleware

に導入することが可能となる.

2.2. RT-Middleware とは?

現状のロボット開発は企業独自の仕様に元づいて作成されており,再利用性がなく開

発効率も悪いため普及させるのが困難となる.

この問題を解決するため,開発されたのが RT-Middleware である.RT-Middleware

とはロボットのソフトウェアに共通なインターフェースを持たせることにより,多様な

ロボットシステムを簡単に構築することを可能にしたロボット開発用のプラットフォ

ームである.

2.3. CANopen とは?

RTC-CANopen を知る上でもう一つ欠かせないのが CANopen である.CANopen と

は耐ノイズ性の強化を考慮して設計され,相互接続された機器間のデータ通信に使われ

る規格である CAN をベースとした通信プロトコルである.CANopen は産業機器,輸

送機器及び工場のオートメーションなどで多く用いられている信頼性のあるバスシス

テムと言える.さらに CANopen にはノイズに強いという特徴があるため,移動ロボッ

トにも適している.

図 2-1 CANopen 製品例[2]

また,CANopen は通信層,Object Dictionary,アプリケーション層と分かれている.

そのため,通信層をほかの通信規格である Ethernet,FlexRay に変えることが可能と

なる.

7

図 2-2 CANopen デバイスモデル

CAN では同じバスに接続されている各ノード同士で相互通信が可能となっており.

CAN メッセージという規格に則り通信を行っている.また,オブジェクトディクショ

ナリへのアクセスをする通信を SDO,プロセスデータ通信を PDO と言う.

8

2.4. RTC-CANopen の機能

前の項で説明した RT-Middleware に CANopen 機能を追加したのが RTC-CANopen

となる.RTC-CANopen の機能は以下である.

CANopen 製品を RT-Component として扱うことができ,ハードウェアの再利用性

が向上

RT-Middleware を用いることができるためソフトウェアの再利用性を向上

Status Manager により登録されたコンポーネントの監視が可能

PnP Manager によるコンポーネントの自動接続

2.5. RTC-CANopen のシステム構成

RTC-CANopen のシステムは主に以下の要素からなる.

Device RTC: CANopen 準拠のデバイスを指す.厳密には RT-Component ではない,

以下に示す Proxy RTC により便宜上 RT-Component として扱う.

Proxy RTC: CANopen デバイスと RT-Component のインターフェースは異なるた

め,インターフェース変換を行う.

RTC-CANopen Server: PnP Manager,Status Manager,RTC-CANopen

Manager のことを指す.

図 2-3 RTC-CANopen のシステム構成

9

RTC-CANopen の内部構成と構成するコンポーネントの関係を図 2-4,図 2-5 に示

す.なお,モデル図はモデリング言語である SysML(Systems Modeling Language)[3]

と UML(Unified Modeling Language)[4]を用いている.

図 2-4 RTC-CANopen 内部構成

図 2-5 RTC-CANopen コンポーネント図

PnP Manager,Status Manager,RTC-CANopen Manager については 2.8,2.9,

2.10 で説明する.

10

2.6. Device RTC

DeviceRTC は,組込 MPU 上で動作する軽量 RTC である.DeviceRTC は,CANopen

通信をおこなうためのスレーブノードを持っており,スレーブノードを利用することで,

ProxyRTC との通信を行う.

状態遷移

RTC-CANopen Manager からのコマンド通知を受けて CANopen スレーブノ

ードとしての状態遷移を行う.

ProxyRTC からのコマンド通知に応じて,状態遷移を行う.

データ通信

ProxyRTC より通知された(ProxyRTC の項を参照)入力コンポーネントの

CANopen のメッセージ通信を監視し,インプットとなるデバイスからのデー

タ送信を待ち受ける.

2.7. Proxy RTC

ProxyRTC は,OpenRTM-aist-1.0.0 上の RTC と組込 MPU 上の DeviceRTC とのイ

ンターフェース変換をおこなうための,汎用 PC 上で動作する RTC である.

Ethernet 上の RTC と DeviceRTC とのデータ受け渡しを仲介する.

ユーザは,データの入出力のある RTC に対し,connect を呼び出すことによ

り,コンポーネント間の接続を行う.connectメッセージはProxyRTCで受け,

DeviceRTC へと通知する.

DeviceRTC が Ethernet 上の他の RTC からのデータを必要とする場合,

ProxyRTC は Ethernet 上の RTC からデータを取得し,CANopen の PDO メ

ッセージを使って DeviceRTC に対してデータを送信する.

Ethernet 上の RTC が DeviceRTC の出力するデータを必要とする場合,

ProxyRTC は DeviceRTC の出力する PDO メッセージを受信し,他の RTC に

対してデータ送信を行う.

DeviceRTC の Bootup メッセージにより ObjectDictinary の設定を行う.

2.8. RTC-CANopen Manager

RTC-CANopen Manager は,OpenRTM-aist のフレームワークと CANopen のフレ

ームワークの両方を持ち,上位アプリケーション(PnP Manager,及び Status Manager)

とフレームワークとのインターフェース変換を行うモジュールである.RTC-CANopen

上で発生したイベントを上位アプリケーションへ通知する機能,及び上位アプリケーシ

11

ョンからの要求に応じて,ProxyRTC,DeviceRTC に対して動作要求を行う機能を持

つ.

PnP Manager,Status Manager より動作要求を受け,ProxyRTC,DeviceRTC

に対して動作要求を行う.

DeviceRTC の Bootup メッセージを受信したタイミングで,ProxyRTC のプロ

セスを起動する.

ProxyRTC と DeviceRTC の状態が同期するように状態遷移を行う.

各種異常状態を検出する.

ロボットシステム仕様記述で定義していないデバイスをシステムに接続した

場合,検出することができる.不正デバイス,または不正 ID を検出した場合

は PnP Manager に対して異常通知を行う.

DeviceRTC からの Heartbeat の異常を検出した場合,ネットワークの異常と

みなし,Status Manager に通知する.

2.9. PnP Manager

PnP Manager は,コンポーネントの PnP(プラグアンドプレイ)機能を実現するモジュ

ールであり,システム全体構成の構築,管理を行う.主な働きは以下となる.

ロボットシステム仕様記述(RTS)を読み込み,RTC-CANopen Manager に対し,

サービスポートを通じて設定を行う.

ProxyRTC を含む RTC の状態変化があった場合,Status Manager から通知を受

ける.

システム内の全 RTC が起動したタイミングで,RTC のポート間接続,活性化を行

う.

2.10. Status Manager

Status Manager は,システム上で動作する RTC のステータスデータを収集し,シ

ステム全体の状態監視を行う.

RTC の状態監視を行う.

デバイスの状態監視を行う.

CAN ネットワークの監視を行う.

12

3. RTC-CANopen の導入方法

3.1. 動作環境

RTC-CANopen は PC にて動作する.RTC-CANopen の動作環境を以下に挙げる.

対応 OS:Ubuntu 12.10,Ubuntu 10.04 LTS,Windows XP` ,Windows7

カーネル(Linux):linux-rt

推奨 CPU: Intel Core2Duo 1.6GHz 以上

推奨メモリ:2GB 以上

インターフェース:PC カードスロット,USB

CAN ネットワークインターフェース(Linux):PCAN-PC Card, PCAN-USB

CAN ネットワークインターフェース(Windows):IXXAT 製 USB-to-CAN compact

OpenRTM-aist:OpenRTM-aist-1.0.x-RELEASE (※Ver.1.1 以降ではサポート外)

RTC-CANopen:RTC-CANopen 0.5.5

3.2. RTC-CANopen を利用する上で必要なもの

RTC-CANopen を導入する上で以下のものが必要となる.

RT-Middleware の動作する実行環境(OpenRTM1.0.x-RELEASE の C++版)

CANopen 製品(必要に応じて DCF を作成するツール)

CAN インターフェース

Linux

PeakSystem 株式会社製 PCAN-PC Card または PCAN-USB

Windows

IXXAT 製 CAN インターフェース(USB-to-CAN compact 等)

PC (Windows ,Linux)

Eclipse 用 RTC-CANopen_plugins, RTSystemEditor 及び RTCBuilder

13

3.3. Windows 版の導入手順

Windows 版の導入について述べる.

3.3.1. 環境構築 <Windows>

Windows 環境で RTC-CANopen を実行するためには以下の環境が必要となります.

Microsoft Visual C++ または Visual Studio (2008)

OpenRTM-aist 1.0.0 RELEASE vc9

Python 2.6.6

Libusb-win32

IXXAT VCI3 ドライバ

3.3.1.1. OpenRTM1.0.0RELEASE の C++版のインストール

openrtm.org が提供する Windows 用 msi パッケージ

(OpenRTM-aist-1.0.0-RELEASE_vc9_100212.msi 等)をインストール手順に従ってダ

ウンロードページからダウンロードし,インストールを行う(python 2.6.x も含む).

3.3.1.2. Visual Studio C++ 2008 のインストール

RTC-CANopen を windows 環境でビルドをする為には,Microsoft の Visual C++

2008 または Visual Studio 2008 が必要になります.

3.3.1.3. Libusb-win32 のインストール

RTC-CANopenをビルドするにあたり追加でLibusb-win32のライブラリが必要にな

ります.以下,

http://libusb-win32.sourceforge.net/

http://sourceforge.net/projects/libusb-win32/files/

から,1.2.2.0 の libusb-win32-bin-1.2.2.0.zip をダウンロードしてください.

C¥:RTC-CANopenWork などの適当なフォルダに格納し,展開しておきます.

3.3.1.4. IXXTA の CAN インターフェースドライバのインストール

IXXTA のサポートページ(http://www.ixxat.com/download_vci_v3_en.html)から,

VCI Driver[Vers.3]のドライバをダウンロードし,インストール手順に従ってインスト

ールを行う.本マニュアルでは,VCI V3.4.1 Release にて動作検証を行っている.

14

3.3.1.5. RTC-CANopen のインストール

RTC-CAMopen を導入する上で,CANFestival のインストールを行う.なお,

RTC-CANopenで利用するCANFestivalには手を加えてあるのでRTC-CANopenのデ

ィレクトリ内の CANFestival を用いること.

図 3-1 RTC-CANopen ディレクトリ構成

RTC-CANopen のビルドを行うにあたり,適当なフォルダ(ここではサンプルとして,

C:¥RTC-CANopenWork 配下に)rtc_canopen_v0.5.5 を解凍する.(ver.0.5.5 の場合)

C:¥RTC-CANopenWork¥rtc_canopen_v0.5.5¥src

配下の RtcCanopen.vsprops を開き,以下のように”rtccanopen_path”及び”libusb_path”

の絶対パスを rtc_canopen_v0.5.5 と 3.3.1.3 章で配置したフォルダの場所に変更する.

<UserMacro

Name="rtccanopen_path"

Value=" C:¥RTC-CANopenWork¥rtc_canopen_v0.5.5"

/>

<UserMacro

Name="libusb_path"

Value=" C:¥RTC-CANopenWork¥libusb-win32-bin-1.2.4.0"

/>

設定後,同フォルダにある rtccanopen.sln を visual studio で開き,

ビルド⇒ソリューションのクリーン⇒ソリューションのビルド

を実行する.すべてのビルドが正常に完了すると,

C:¥RTC-CANopenWork¥rtc_canopen_v0.5.5¥bin

配下に各バイナリがフォルダの中に生成されます.

また,dll フォルダにある各種 dll ファイルは RTC-CANopen に必要となるファイルで

す.後に説明する RTC-CANopen を実行する Workフォルダに入れる必要があります.

15

3.4. Linux 版の導入手順

Linux 版の導入について述べる.

3.4.1. RTC-CANopen を利用する上で必要なもの <Linux>

RTC-CANopen を導入する上で以下のものが必要となる.

RT-Middleware の動作する実行環境(OpenRTM1.0.0RELEASE の C++版)

CANopen 製品(必要に応じて DCF を作成するツール)

PeakSystem 株式会社製 PCAN-PC Card または PCAN-USB

PC

Eclipse 用 RTC-CANopen_plugins, RTSystemEditor 及び RTCBuilder

3.4.2. 環境構築 <Linux>

環境構築はインターネットに接続されていることを前提として行う.また,コマンド

は端末(terminal)により実行する.

3.4.2.1. OpenRTM1.0.0RELEASE の C++版のインストール

openrtm.org が提供するインストールスクリプト pkg_install[バージョン番

号]_ubuntu.sh をダウンロードページからダウンロードし,root 権限で実行する.この

スクリプトは,必要なパッケージを順次 apt-get でインストールするものである.

一括インストールスクリプトを使用したインストールの手順

$ wget [pkg_installXXX.sh のダウンロード URL]

$ sudo sh pkg_installXXX_ubuntu.sh

//途中,いくつかの質問をたずねられるので,''y'' あるいは ''Y'' を入力しながら完了させる.

3.4.2.2. Linux-rt カーネルの導入

Ubutu 12.10 の場合,この手順は除く.

[1] リアルタイムカーネルパッケージをインストールする

$ sudo apt-get update

$ sudo apt-get install linux-rt

[2] 再起動する.

カーネル選択メニューが表示されない場合 ⇒ [3]へ

表示される場合は 2.6.31-11-rt を選択 ⇒ [6]へ

16

[3] startupmanager をインストールする

「システム > システム管理 > Synaptic パッケージ・マネージャ」から,以下の操作

を行う.

- 1.再読込ボタンを押下する

- 2.startupmanager を選択してインストール指定する

- 3.適用ボタンを押下する

[4] 「システム > システム管理 > StartUp-Manager」から,以下の操作を行う.

- 1.起動オプションタブで,デフォルトのオペレーティングシステムから

「Ubuntu, Linux 2.6.31-11-rt」を選択する.

- 2.閉じるボタンを押下する.

[5] 再起動する

[6] カーネルを確認する

$ uname -r

2.6.31-11-rt

[7] Kernel ヘッダのシンボリックリンクを作成する

$ cd /usr/src

$ sudo ln -s linux-headers-2.6.31-11-rt linux

※linux-rt-headers-2.6.31-11 では×.必ず…-rt.

※RTC の ExecutionContext を PosixRealTimeExecutionContext に変更する方法は以

下を参照

http://sites.google.com/site/roboticstools/

17

3.4.2.3. CAN ネットワークインターフェースの導入

PCAN PC Card, PCAN-USB ドライバのインストール手順を示す.

[1] g++をインストールする

「システム > Synaptic パッケージ・マネージャ」から,以下の操作を行う.

- 1.再読込ボタンを押下する

- 2.g++を選択してインストール指定する

- 3.適用ボタンを押下する

[2] PCAN-PC Card の最新ドライバをダウンロードする

http://p103112.typo3server.info/fileadmin/media/linux/index.htm

- peak-linux-driver.7.2.tar.gz

[3] PCAN-PC Card, PCAN-USB のドライバをインストールする

$sudo apt-get install libpopt-dev libstdc++6

$ tar -zxvf peak-linux-driver.7.2.tar.gz

$ cd ./peak-linux-driver-7.2

$ make clean

$ make

$ sudo make install

$ sudo modprobe pcan

[4] 確認

PCAN-PC Card または PCAN-USB を差し込むと,ランプが点灯する.

また,以下のように表示されれば正常に動作している(PCAN-PC Card の場合).

$ tail /var/log/messages

Jan 30 15:30:47 p1117-laptop kernel: [ 8061.040079] pcmcia_socket pcmcia_socket0: pccard: PCMCIA

card inserted into slot 0

Jan 30 15:30:47 p1117-laptop kernel: [ 8061.040285] pcmcia 0.0: pcmcia: registering new device

pcmcia0.0

Jan 30 15:30:47 p1117-laptop kernel: [ 8061.042093] pcan: PEAK PC_CAN_CARD 001 A1

Jan 30 15:30:47 p1117-laptop kernel: [ 8061.094286] pcan: pccard device minor 40 found

Jan 30 15:30:47 p1117-laptop kernel: [ 8061.094642] pcan: registered netdevice can0 for pcan pccard

hw (minor 40)

Jan 30 15:30:47 p1117-laptop kernel: [ 8061.106612] pcan: pccard device minor 41 found

Jan 30 15:30:47 p1117-laptop kernel: [ 8061.111125] pcan: registered netdevice can1 for pcan pccard

hw (minor 41)

18

Jan 30 15:30:47 p1117-laptop kernel: [ 8061.111165] pcan: pccard firmware 1.5

$ cat /proc/pcan

*------------ PEAK-Systems CAN interfaces (www.peak-system.com) -------------

*-------------------------- Release_20091117_n ----------------------------

*------------- [mod] [isa] [pci] [dng] [par] [usb] [pcc] [net] --------------

*--------------------- 2 interfaces @ major 249 found -----------------------

*n -type- ndev --base-- irq --btr- --read-- --write- --irqs-- -errors- status

40 pccard can0 00004100 003 0x001c 00000000 00000000 00000000 00000000 0x0000

41 pccard can1 00004120 003 0x001c 00000000 00000000 00000000 00000000 0x0000

3.4.2.4. SocketCan のインストール

[1] socketcan をダウンロードする

http://developer.berlios.de/projects/socketcan

- SVN revision 1070(09/10/15)を使用

[2] socketcan をインストールする.

$ cd ./socketcan/kernel/2.6

$ make

$ sudo mkdir /lib/modules/2.6.31-14-generic/socketcan

$ sudo find -name ¥*.ko | xargs sudo install -t /lib/modules/2.6.31-14-generic/socketcan

$ sudo depmod 2.6.31-14-generic

[3] PCAN-PC Card または PCAN-USB を差し込む

[4] テストアプリを実行する

can0, can1 の起動

$ sudo ifconfig can0 up

$ sudo ifconfig can1 up

⇒PCAN-PC Card のランプが点滅する.

can0 側で read 待ち

$ cd ./2.6.31-14-generic/test

$ ./canecho can0 -v

$ interface = can0, family = 29, type = 3, proto = 1

19

can1 側で write

$ cd ./2.6.31-14-generic/test

$ ./tst-raw-sendto -i can0

⇒以下の frame が送信される

can_id: 123

can_dlc: 3

data[0]: 0x11

data[1]: 0x22

data[2]: 0x33

can0 側で read 結果が表示される

$ 123: [3] 11 22 33

3.4.2.5. RTC-CANopen のインストール

RTC-CAMopen を導入する上で,CANFestival のインストールを行う.なお,

RTC-CANopenで利用するCANFestivalには手を加えてあるのでRTC-CANopenのデ

ィレクトリ内の CANFestival を用いること.

図 3-2 RTC-CANopen ディレクトリ構成

RTC-CANopen/lib/apache-log4cxx-0.10.0 に移動する.その後,以下のコマンドを実

行する.

$ sudo apt-get install libaprutil1-dev

$ chmod +x configure

$./configure

$ make

$ sudo make install

20

RTC-CANopen/lib/xerces-c-3.1.1 に移動し,以下のコマンドを入力する.

$ chmod +x configure config/pretty-make

$./configure

$ make

$ sudo make install

RTC-CANopen/lib/canfestival-3 に移動する.その後,以下のコマンドを入力する.

$ make

$ sudo make install

RTC-CANopen/src に移動する.以下のコマンドで RTC-CANopen のビルドとイン

ストールを実行する.

$ make

$ make install

RTC-CANopen/bin 配下にバイナリが格納される.

21

3.4.2.6. CAN インターフェースの設定

[1] CAN デバイスへのビットレートの設定

以下のコマンドで,起動する CAN デバイス名(ndev)と番号(n)を確認する.下記は

can0(n:40)を起動する場合.

$ cat /proc/pcan

*------------ PEAK-Systems CAN interfaces (www.peak-system.com) -------------

*-------------------------- Release_20091117_n ----------------------------

*------------- [mod] [isa] [pci] [dng] [par] [usb] [pcc] [net] --------------

*--------------------- 2 interfaces @ major 249 found -----------------------

*n -type- ndev --base-- irq --btr- --read-- --write- --irqs-- -errors- status

40 pccard can0 00004100 003 0x001c 00000000 00000000 00000000 00000000 0x0000

41 pccard can1 00004120 003 0x001c 00000000 00000000 00000000 00000000 0x0000

[2] CAN デバイスへのビットレートの設定

以下のコマンドで,ビットレートの設定を行う.0x0014 は 1Mbit/s に対応してい

る.その他の値は Peak Systems のドライバのマニュアルを参照.

$ echo "i 0x0014 e" > /dev/pcan40

[3] CAN デバイスへのビットレートの設定

ビットレート(btr)が変更されていることを確認する.

$ cat /proc/pcan

*------------ PEAK-Systems CAN interfaces (www.peak-system.com) -------------

*-------------------------- Release_20091117_n ----------------------------

*------------- [mod] [isa] [pci] [dng] [par] [usb] [pcc] [net] --------------

*--------------------- 2 interfaces @ major 249 found -----------------------

*n -type- ndev --base-- irq --btr- --read-- --write- --irqs-- -errors- status

40 pccard can0 00004100 003 0x0014 00000000 00000000 00000000 00000000 0x0000

41 pccard can1 00004120 003 0x001c 00000000 00000000 00000000 00000000 0x0000

22

3.5. Eclipse への RTC-CANopen のツールの導入

ここでは RTC-CANopen の導入方法について説明する.

まず,RTC-CANopen_plugins.zip を解凍する.解凍したファイルを eclipse の plugin

のフォルダに入れる.

3.6. DCF の作成

DCF のパラメータに関して,H8SX1544F は 4.2.4 を参照し,Beego は別冊

「RTC-CANopen リファレンスロボットマニュアル ~ソフトウェア構成~」を参照.

3.6.1. マクソンジャパン株式会社の EPOS の場合

RTC-CANopen を利用する上で CANopen 製品の DCF が必要となる.DCF を作成

する一例としてマクソンジャパン株式会社のEPOSを使用する場合について説明する.

パラメータに関しては 4 章で紹介する小型 RTC-CANopen リファレンスロボットを例

にして設定していく.EPOS の DCF の作成には EPOS 用設定ソフトである EPOS

Studio を用いる.ただし,EPOS Studio は Windows の環境のみで動作するため,

Windows にインストールする必要がある.また,現時点で EPOS Studio に対応する

CAN インターフェースは,Vector 社製の CAN インターフェース各種及び IXXAT 製

の CAN インターフェース(最新のドライバ適応時)となる.

23

3.6.2. マイコンの DCF を作成する場合

マイコンの DCF を作成は,ベクター・ジャパン株式会社の Vector ProCANopen

Version 5.2.0.13(SP1)を利用して行う.DCF 作成には,CANopen ノードとして利用す

るマイコンの EDS ファイル(そのデバイスが対応している機能や送受信オブジェクト

を,オブジェクトディクショナリのエントリ形式で記述したファイル)が必要となる.

まず,ProCANopen を起動すると図 3-3 のようになる.

図 3-3 起動時の Vector ProCANopen の画面

24

次に図 3-4 のように CANopen ノード上で右クリックし,「Configuration」を選

択する.

図 3-4 Vector ProCANopen の画面

図 3-5 が表示されるので,Name,Node-ID を設定し,「Change EDS」を選択す

る.

図 3-5 Node Configuration

25

図 3-6 が表示されるので,「File Select」から,使用するマイコンの EDS ファイ

ルを選択し,読み込む.

図 3-6 EDS Selection

EDS ファイルの読み込みが終了すると図 3-7 のようになる.画面左に位置する

「PDO List Settings」,「PDO Communication Parameter」,「Mapped Objects」

等でデバイスの設定を行うことができる.

図 3-7 EDS 読み込み後の Vector ProCANopen の画面

26

各種設定が終了したら,「File」→「Save Project as…」よりプロジェクトの保存,

及びDCFの出力を行う(注:保存先のパスに全角文字が含まれていると保存できない).

DCF は***.DCF の形でプロジェクトの保存と同時に同様のディレクトリ内に保存され

る.

図 3-8 DCF の出力方法

27

3.7. マイコンにおける DeviceRTC の作成手順

3.7.1. H8SX1544F マイコン

ルネサス エレクトロニクス社の High-performance Embedded Workshop(HEW)

の Version 4.09.00.007 を使用して Device RTC を開発する手順を示している.マイコ

ンは H8SX1544F を対象としている.

3.7.1.1. LibCANFestivalForH8SX1544 プロジェクト作成

HEW を起動し,新規プロジェクトワークスペースを開き,以下のように設定する.

・ プロジェクト名:LibCANFestivalForH8SX1544 (任意)

・ プロジェクトタイプ:Library

・ ツールチェインバージョン:7.0.0.0 (デフォルト)

・ CPU シリーズ:SX (デフォルト)

・ 動作モード:Advanced

その他の設定項目はデフォルトのままでよい.設定を完了し,プロジェクトを作成する.

図 3-9 LibCANFestivalForH8SX1544 プロジェクトの設定

3.7.1.2. RTC_CANopenForH8SX1544 プロジェクト作成

[プロジェクト]→[プロジェクトの挿入]→[新規プロジェクト]を選択し,以下を設定.

・ プロジェクト名:RTC_CANopenForH8SX1544 (任意)

・ プロジェクトタイプ:Application (デフォルト)

・ ツールチェインバージョン:7.0.0.0 (デフォルト)

・ CPU シリーズ:SX (デフォルト)

・ CPU タイプ:1544

・ 動作モード:Advanced

・ ライブラリ:string.h:文字列操作用ライブラリをチェック

(A) プロジェクト名等の設定 (B) 動作モード等の設定

28

・ ターゲット:H8SX/1544F E10A-USB SYSTEM (E10A を使用している場合)

その他の設定はデフォルトのままでよい.設定を完了し,プロジェクトを作成する.

図 3-10 RTC_CANopenForH8SX1544 プロジェクトの設定

3.7.1.3. RTC-CANopenForH8SX1544.zip 内のファイルのコピー

RTC-CANopenForH8SX1544.zip を解凍し,以下のフォルダ内のファイルすべてを,

コピーする.

コピー元:(解凍フォルダ)¥RTC-CANopen_WorkSpace¥LibCANFestivalForH8SX1544

(A) プロジェクト名等の設定

(C) 動作モード等の設定 (D) ライブラリの設定

(E) ターゲットの設定

(B) CPU タイプ等の設定

29

コピー先:(Workspace directory)¥LibCANFestivalForH8SX1544

コピー元:(解凍フォルダ)¥ RTC-CANopen_WorkSpace¥RTC_CANopenForH8SX1544

コピー先:(Workspace directory)¥ RTC_CANopenForH8SX1544

3.7.1.4. LibCANFestivalForH8SX1544 のビルド設定

LibCANFestivalForH8SX1544 をアクティブプロジェクトに設定し,[ビルド]→

[H8S,H8/300 Standard Toolchain]を選択し,以下のように設定する.

タブ[コンパイラ]

カテゴリ[ソース]

オプション項目[インクルードディレクトリ]

・ ベースパス[Project directory]サブディレクトリ[include]

・ ベースパス[Project directory]サブディレクトリ[include¥H8sx1544]

・ ベースパス[Workspace directory]サブディレクトリ[RTC_CANopenForH8SX1544]

タブ[コンパイラ]

カテゴリ[ソース]

オプション項目[マクロ定義]

・ マクロ[CANOPEN_BIG_ENDIAN]値[1]

図 3-11 LibCANFestivalForH8SX1544 のビルド設定

3.7.1.5. RTC_CANopenForH8SX1544 のビルド設定

RTC_CANopenForH8SX1544 をアクティブプロジェクトに設定し,[ビルド]→

[H8S,H8/300 Standard Toolchain]を選択し,以下のように設定する.

タブ[コンパイラ]

カテゴリ[ソース]

(A) インクルードディレクトリの設定 (B) マクロ定義の設定

30

オプション項目[インクルードディレクトリ]

・ ベースパス[Workspace directory]

サブディレクトリ[LibCANFestivalForH8SX1544¥include]

・ ベースパス[Workspace directory]

サブディレクトリ[LibCANFestivalForH8SX1544¥include¥H8sx1544]

タブ[コンパイラ]

カテゴリ[ソース]

オプション項目[マクロ定義]

・マクロ[CANOPEN_BIG_ENDIAN]値[1]

タブ[最適化リンカ]

カテゴリ[入力]

オプション項目[ライブラリファイル]

・ベースパス[Workspace directory]ファイルパス

[LibCANFestivalForH8SX1544¥Debug¥LibCANFestivalForH8SX1544.lib]

(ライブラリ名はプロジェクト名と同様になる)

図 3-12 RTC_CANopenForH8SX1544 のビルド設定

(A) インクルードディレクトリの設定 (B) マクロ定義の設定

(C) 最適化リンカの設定

31

3.7.1.6. LibCANFestivalForH8SX1544 のファイル追加とビルド

以下のフォルダに含まれる,C ファイルを追加する.

フォルダ:(Project directory) ¥src

ファイル:dcf.c, emcy.c, lifegrd.c, lss.c, mntMaster.c, nmtSlave.c, objacces.c, pdo.c, sdo.c,

states.c, sync.c, timer.c (symbols.c 以外の C ファイル)

フォルダ:(Project directory) ¥drivers¥H8sx1544

ファイル:can_H8sx1544.c, timer_H8sx1544.c

以上のファイルを追加したら,[ビルド]→[すべてをビルド]を選択し,ビルドする.

図 3-13 LibCANFestivalForH8SX1544 の追加ファイル

3.7.1.7. RTC_CANopenForH8SX1544 のファイル追加とビルド

すでに読み込まれているファイルをすべてプロジェクトから削除する.その後,以下

のフォルダに含まれる,C ファイルとアセンブリファイルを追加する.

フォルダ:(Workspace directory) ¥RTC_CANopenForH8SX1544

C ファイル:dbsct.c, fanmotor.c, intprg.c, lowsrc.c, ObjDict.c, resetprg.c,

RTC-CANopenForH8SX1544.c, sbrk.c

アセンブリファイル:lowlvl.src

以上のファイルを追加したら,[ビルド]→[すべてをビルド]を選択し,ビルドする.

32

図 3-14 RTC_CANopenForH8SX1544 の追加ファイル

3.7.1.8. fanmotor.c の編集

fanmotor.c を編集することで,CANopen デバイスの各ステート

(onPreOperational, onOperational 等)での動作をプログラムすることができる.今回

の作成した Device RTC(CANopen デバイス)は fanmotor を操作するためのプログラム

となっているため,fanmotor.c というファイル名になっている.このファイル名は任

意の名前に変更してかまわない.ただし,RTC_CANopenForH8SX1544.c の 17 行目

に記述されている,fanmotor.h を変更する必要がある.

3.7.1.9. ObjDict.c の編集

ObjDict.c には Device RTC が持つオブジェクトディクショナリが記述されている.

このファイルの編集は CanFestival のウェブサイト[5]に紹介されている Object

Dictionary editor というツールで編集することが可能である.

3.7.2. SH7286 マイコン

ルネサス エレクトロニクス社の High-performance Embedded Workshop(HEW)

の Version 4.09.00.007 を使用して Device RTC を開発する手順を示している.またマ

イコンは Hokuto Electronic 社の CAN スタータキット SH7286 を対象としている

(http://www.hokutodenshi.co.jp/7/HSB7286F.htm).SH7286 用のプロジェクトをビル

ドするためには,C/C++ compiler package for SuperH RISC engine family が必要で

ある.

3.7.2.1. LibCANFestivalForSH7286 プロジェクト作成

HEW を起動し,新規プロジェクトワークスペースを開き,以下のように設定する.

・ プロジェクトタイプ:Library

33

・ ワークスペース名:LibCANFestivalForSH7286(任意)

・ プロジェクト名:LibCANFestivalForSH7286(任意)

・ ディレクトリ:任意

・ CPU 種別:SuperH RISC engine

・ ツールチェイン:Renesas SuperH Standard

・ ツールチェインバージョン:9.4.1.0

・ CPU シリーズ:SH-2A

その他の設定項目はデフォルトのままでよい.設定を完了し,プロジェクトを作成する.

図 3-15 LibCANFestivalForSH7286 プロジェクトの設定

rtc_canopen_forSH7286.zip を解凍し,以下のフォルダ内の src,include,drivers

ディレクトリをコピーする.

コピー元:(解凍フォルダ)¥RTC-CANopen_WorkSpace¥LibCANFestivalForSH7286

コピー先:(Workspace directory)¥LibCANFestivalForSH7286

34

図 3-16 LibCANFestivalForSH7286 プロジェクト用ファイルのコピー

3.7.2.2. LibCANFestivalForSH7286 のビルド設定

LibCANFestivalForSH7286 をアクティブプロジェクトに設定し,[ビルド]→

[SuperH RISC engine Standard Toolchain]を選択し,以下のように設定する.

タブ[コンパイラ]

カテゴリ[ソース]

オプション項目[インクルードディレクトリ]

・ ベースパス[Project directory]サブディレクトリ[include]

・ ベースパス[Project directory]サブディレクトリ[include¥SH7286]

タブ[コンパイラ]

カテゴリ[ソース]

オプション項目[マクロ定義]

・ マクロ[CANOPEN_BIG_ENDIAN]値[1]

35

図 3-17 LibCANFestivalForSH7286 プロジェクトのビルド設定

3.7.2.3. LibCANFestivalForSH7286 のファイル追加とビルド

以下のフォルダに含まれる,C ファイルを追加する.

フォルダ:(Project directory) ¥src

ファイル:dcf.c, emcy.c, lifegrd.c, lss.c, mntMaster.c, nmtSlave.c, objacces.c, pdo.c, sdo.c,

states.c, sync.c, timer.c (symbols.c 以外の C ファイル)

以上のファイルを追加したら,[ビルド]→[すべてをビルド]を選択し,ビルドする.ビ

ルドが成功すれば,プロジェクトディレクトリ以下の Debug または Release ディレク

トリに LibCANFestivalForSH7286.lib というライブラリファイルが生成される.

36

図 3-18 LibCANFestivalForSH7286 プロジェクト用ファイルの追加

3.7.2.4. RTC_CANopenForSH7286 プロジェクト作成

[プロジェクト]→[プロジェクトの挿入]→[新規プロジェクト]を選択し,以下を設定.

・ プロジェクト名:RTC_CANopenFor SH7286(任意)

・ プロジェクトタイプ:Application (デフォルト)

・ ディレクトリ:デフォルト

・ CPU 種別:SuperH RISC engine

・ ツールチェイン:Renesas SuperH Standard

・ ツールチェインバージョン:9.4.1.0

・ CPU シリーズ:SH-2A

・ CPU タイプ:SH7286

その他の設定はデフォルトのままでよい.設定を完了し,プロジェクトを作成する.

37

図 3-19 RTC_CANopenForSH7286 プロジェクトの設定

さらに,rtc_canopen_forSH7286.zip を解凍し,以下のフォルダ内の c 及び h ファイ

ルをすべてコピーする.

コピー元:(解凍フォルダ)¥ rtc_canopen_forSH7286¥RTC_CANopen_WorkSpace

コピー先:(Workspace directory)¥ RTC_CANopenForSH7286

38

図 3-20 RTC_CANopenForSH7286 プロジェクト用ファイルのコピー

3.7.2.5. RTC_CANopenForSH7286 のビルド設定

RTC_CANopenForSH7286 をアクティブプロジェクトに設定し,[ビルド]→

[SuperH RISC engine Standard Toolchain]を選択し,以下のように設定する.

タブ[コンパイラ]

カテゴリ[ソース]

オプション項目[インクルードディレクトリ]

・ ベースパス[Project directory]

・ ベースパス[Workspace directory]

サブディレクトリ[LibCANFestivalForSH7286¥include]

・ ベースパス[Workspace directory]

サブディレクトリ[LibCANFestivalForSH7286¥include¥SH7286]

タブ[コンパイラ]

カテゴリ[ソース]

オプション項目[マクロ定義]

39

・マクロ[CANOPEN_BIG_ENDIAN]値[1]

タブ[最適化リンカ]

カテゴリ[入力]

オプション項目[ライブラリファイル]

・ベースパス[Workspace directory]ファイルパス

[LibCANFestivalForSH7286¥Debug¥LibCANFestivalForSH7286.lib]

(ライブラリ名はプロジェクト名と同様になる)

図 3-21 RTC_CANopenForSH7286 プロジェクトのビルド設定

3.7.2.6. RTC_CANopenForSH7286 のファイル追加とビルド

以下のフォルダに含まれる,C ファイルを追加する.

フォルダ:(Workspace directory) ¥RTC_CANopenForSH7286

C ファイル:dbsct.c, fanmotor.c, intprg.c, lowsrc.c, ObjDict.c, resetprg.c,

RTC-CANopenForSH7286.c, sbrk.c, vecttbl.c

フォルダ:(Workspace directory) ¥LibCANFestivalForSH7286¥drivers¥SH7286

C ファイル:can_SH7286.c, timer_SH7286.c

以上のファイルを追加したら,[ビルド]→[すべてをビルド]を選択し,ビルドする.

40

図 3-22 RTC_CANopenForSH7286 プロジェクト用ファイルの追加

3.7.2.7. fanmotor.c の編集

fanmotor.c を編集することで,CANopen デバイスの各ステート

(onPreOperational, onOperational 等)での動作をプログラムすることができる.今回

の作成した Device RTC(CANopen デバイス)は fanmotor を操作するためのプログラム

となっているため,fanmotor.c というファイル名になっている.このファイル名は任

意の名前に変更してかまわない.ただし,RTC_CANopenForSH7286.c の 17 行目に記

述されている,fanmotor.h を変更する必要がある.

3.7.2.8. ObjDict.c の編集

ObjDict.c には Device RTC が持つオブジェクトディクショナリが記述されている.

このファイルの編集は CanFestival のウェブサイト[5]に紹介されている Object

Dictionary editor というツールで編集することが可能である.

3.7.2.9. プログラムの書き込み

プログラムの書き込みは SH7286_Programmer.exe というライターを使用して行

う.書き込むプログラムは RTC_CANopenForSH7286 ディレクトリ以下の Debug ま

たは Release ディレクトリ内の RTC_CANopenForSH7286.mot である.

図 3-23 SH7286 用ライター

41

3.8. RTC-CANopen Builder のよる DCF の変換及び XML の作成

先ほど生成した DCF を RTC-CANopen を使用するために,DCF の変換及び XML

の作成を行う.まず,RTC-CANopen のプラグインを入れた eclipse を立ち上げ,パー

スペクティブを開く.

先ほど生成した DCF を RTC-CANopen を使用するために,DCF の変換及び XML

の作成を行う.まず,RTC-CANopen のプラグインを入れた eclipse を立ち上げ,パー

スペクティブを開く.

図 3-24 eclipse パースペクティブ

パースペクティブを開くと以下の画面になるので RTC-Builder を選択し,OK をク

リックする.

図 3-25 パースペクティブ設定画面

次にトンカチマークをクリックし,RTC-Builder を起動する.

42

図 3-26 RTC Builder

プロジェクト名を入力し「完了」をクリックする.

図 3-27 プロジェクト名指定画面

RTC-Builder を開き,C++(CANopen)を選択する.

図 3-28 RTC-Builder 設定画面

43

次に eclipse の基本のタブをクリックし,CANopen デバイスの DCF を読み込むため,

プロファイルの部分の「インポート」を選択する.

図 3-29 RTC-Builder 設定画面 2

読み込むDCFのフォルダ(リファレンスロボットではRightMotorとLeftMotor)まで

移動し,DCF を選択したら「開く」を押す.

図 3-30 DCF ファイル指定画面

44

すると DCF のインポートが完了するので,RTC-CANopen のタブをクリックする.

図 3-31 の画面が表示され,マッピングパラメータの確認ができ,マッピングが正しい

かを確認することができる.

図 3-31 マッピング情報確認画面

確認が終わったら,基本のタブを開き,RTC Type を 0x01 にし,プロファイルの「エ

クスポート」を選択する.すると ProxyRTC の RTC 仕様が出力される.

図 3-32 プロファイル出力画面

45

3.9. RTC-CANopen System Editor による RTS の作成

次に先ほど作成した Proxy 用の DCF と RTC.xml を用いてシステムを構成する.

まず,パースペクティブを開き,RTC-CANopen System Editor を開く.

次に OFF と書かれたボタンを押し,オフラインエディターを開く.

図 3-34 オフラインエディター選択画面

図 3-33 RTC-CANopen System Editor 選択画面

46

Device 用 DCF,Proxy 用 DCF,ProxyRTC の RTC 仕様(RTC.xml)を読み込み,

ProxyRTC を作成する.ロボットのマークをクリックする.

図 3-35 DCF の読み込み画面

先ほど作成したDCF及びRTC.xmlのフォルダ(リファレンスロボットではRightMotor

と LeftMotor)を「追加」のボタンで指定し,OK を押す.

図 3-36 DCF ファイル選択画面

47

次に ProxyRTC をコントロールするコンポーネントなどを読み込む.Repository

View 内のフォルダマークを選択する.

図 3-37 RTS のフォルダ指定画面

次にシステムに必要となる他のコンポーネントの rtc.xml(リファレンスロボットで

は RTCProfiles 及び IF_timedVelocity)を指定し,他のコンポーネントを読み込む.フ

ォルダ指定でコンポーネント読み込むことができるので,rtc.xml をまとめたフォルダ

を用意すると便利である.

図 3-38 RTS のディレクトリ指定画面

48

読み込んだコンポーネントは左の Repository View からドラック&ドロップで表示

することができる.これですべてのコンポーネントを表示させる.

図 3-39 RTC 選択画面

すべてのコンポーネントを表示させたら,コンポーネント同士を接続する.図 3-40

では小型 RTC-CANopen リファレンスロボットの接続例を示している.

図 3-40 リファレンスロボット接続例

49

次に Offline System Diagram 内で右クリックし,Save as を選択する.

プロファイルの名前を記入する.(すべて半角英語)

Vector:製作者の名前を記入する.

System Name:システムの名前を記入する.好きな名前を付ける.

Version:システムのバージョンを記入する.

Path:プロファイルをどこに保存するかを決める.「参照」をクリックして保存する

フォルダに移動する.

Required:どのプロファイルが必要かを決める.ここでは「すべて選択」をクリック

する.

すべての記入が終わったら,RTC-CANopen 設定をクリックする.

図 3-41 プロファイル情報記入例

50

RTC の項目に表示される ProxyRTC(図 3-42 では ProxyLeft0 または ProRight0)

を選択し,編集をクリックする.

図 3-42 RTC-CANopen 設定画面

実行ファイルには gpproxy のバイナリまでのパスを入れ,設定ファイルには

gpproxy.conf までのパスを入れる.Linux 版 RTC-CANopen に限り,CAN Device Port

には使用する Port を選択しなければならない.すべて設定し終わったら,設定画面の

OK をクリックし,RTC-CANopen 設定画面の OK をクリックする.

以上により,RTS プロファイルが生成される.

図 3-43 設定画面

51

4. RTC-CANopen の利用方法

4.1. RTC-CANopen を利用する上での設定

4.1.1. 各 RTC-CANopen Server の RTC に関する conf の設定例<Windows>

RTC-CANopen では下記の内容を各 conf ファイルに記述し,動作をしている.な

お,conf ファイルの入れるディレクトリについては図 3-1 RTC-CANopen ディレク

トリ構成を参照のこと.Window 版で必要な dll を work の配下に入れた例である.

4.1.1.1. Status Manager

statusmanager.conf

corba.nameservers: 127.0.0.1:2809

naming.formats: %n.rtc

logger.log_level: TRACE

exec_cxt.periodic.type: PosixRealTimeExecutionContext

exec_cxt.periodic.rate: 2

manager.modules.load_path: ../bin/posix_realtime_execution_context

manager.modules.abs_path_allowed: yes

log4cxx.logfile: ../etc/statusmanager_log_setting.xml

4.1.1.2. RTC-CANopen Manager

rtc-canopenmanager.conf

corba.nameservers: 127.0.0.1:2809

naming.formats: %n.rtc

logger.log_level: TRACE

#exec_cxt.periodic.type: PosixRealTimeExecutionContext

exec_cxt.periodic.rate: 20

manager.modules.load_path: ..¥¥bin¥¥posix_realtime_execution_context

manager.modules.abs_path_allowed: yes

manager.dcfdir: dcf

dll.filename:can_ixxat_win32.dll

dll.filedir: ..¥¥work

log4cxx.logfile: ..¥¥etc¥¥rtccanopenmanager_log_setting.xml

Generic.RTCCANopenManager.config_file: ..¥¥etc¥¥rtccanopenmanager_config.conf

52

rtccanopenmanager_config.conf

conf.default.configurationFile: gpproxyrtc.conf

4.1.1.3. PnP Manager

pnpmanager.conf

corba.nameservers: 127.0.0.1:2809

naming.formats: %n.rtc

logger.log_level: TRACE

exec_cxt.periodic.type: PosixRealTimeExecutionContext

exec_cxt.periodic.rate: 20

manager.modules.load_path: ../bin/posix_realtime_execution_context

manager.modules.abs_path_allowed: yes

log4cxx.logfile: ../etc/pnpmanager_log_setting.xml

Generic.PnPManager.config_file: ../etc/pnpmanager_config.conf

pnpmanager_config.conf

conf.default.autoConnection: 1

conf.default.autoActivation: 1

4.1.1.4. gpproxyrtc

gpproxyrtc.conf

corba.nameservers: 127.0.0.1:2809

naming.formats: %n.rtc

logger.log_level: TRACE

#exec_cxt.periodic.type: PosixRealTimeExecutionContext

exec_cxt.periodic.rate: 100

manager.modules.load_path: ../bin/posix_realtime_execution_context

manager.modules.abs_path_allowed: yes

log4cxx.logfile: ../etc/gpproxyrtc_log_setting.xml

manager.shutdown_onrtcs: NO

manager.dcfdir: dcf

dll.filename:can_ixxat_win32.dll

dll.filedir: ..¥¥work

53

4.1.2. 各 RTC-CANopen Server の RTC に関する conf の設定例<Linux>

RTC-CANopen では下記の内容を各 conf ファイルに記述し,動作をしている.な

お,conf ファイルの入れるディレクトリについては図 3-1 RTC-CANopen ディレク

トリ構成を参照のこと.

4.1.2.1. Status Manager

statusmanager.conf

corba.nameservers: 127.0.0.1:9876

naming.formats: %n.rtc

logger.log_level: TRACE

exec_cxt.periodic.type: PosixRealTimeExecutionContext

exec_cxt.periodic.rate: 2

manager.modules.load_path: ../bin/posix_realtime_execution_context

manager.modules.abs_path_allowed: yes

log4cxx.logfile: ../etc/statusmanager_log_setting.xml

4.1.2.2. RTC-CANopen Manager

rtc-canopenmanager.conf

corba.nameservers: 127.0.0.1:9876

naming.formats: %n.rtc

logger.log_level: TRACE

exec_cxt.periodic.type: PosixRealTimeExecutionContext

exec_cxt.periodic.rate: 20

manager.modules.load_path: ../bin/posix_realtime_execution_context

manager.modules.abs_path_allowed: yes

manager.dcfdir: dcf

dll.filename:libcanfestival_can_socket.so

dll.filedir:/usr/local/lib

log4cxx.logfile: ../etc/rtccanopenmanager_log_setting.xml

Generic.RTCCANopenManager.config_file: ../etc/rtccanopenmanager_config.conf

rtccanopenmanager_config.conf

conf.default.configurationFile: gpproxyrtc.conf

54

4.1.2.3. PnP Manager

pnpmanager.conf

corba.nameservers: 127.0.0.1:9876

naming.formats: %n.rtc

logger.log_level: TRACE

exec_cxt.periodic.type: PosixRealTimeExecutionContext

exec_cxt.periodic.rate: 20

manager.modules.load_path: ../bin/posix_realtime_execution_context

manager.modules.abs_path_allowed: yes

log4cxx.logfile: ../etc/pnpmanager_log_setting.xml

Generic.PnPManager.config_file: ../etc/pnpmanager_config.conf

pnpmanager_config.conf

conf.default.autoConnection: 1

conf.default.autoActivation: 1

4.1.2.4. gpproxyrtc

gpproxyrtc.conf

corba.nameservers: 127.0.0.1:9876

naming.formats: %n.rtc

logger.log_level: TRACE

exec_cxt.periodic.type: PosixRealTimeExecutionContext

exec_cxt.periodic.rate: 100

manager.modules.load_path: ../bin/posix_realtime_execution_context

manager.modules.abs_path_allowed: yes

log4cxx.logfile: ../etc_linux/gpproxyrtc_log_setting.xml

manager.shutdown_onrtcs: NO

manager.dcfdir: dcf

dll.filename:libcanfestival_can_socket.so

dll.filedir:/usr/local/lib

55

4.1.3. PosixRealTimeExecutionContext の使用方法 <Linux>

PosixRealTimeExecutionContext は,Linux 標準機能を利用して RT ミドルウェア

をリアルタイム化するためのソースコードである.RTC-CANopen では,リアルタイム

性を確保するため,このソースコードを使用している.

PosixRealTimeExecutionContext は,プログラムをすべてメモリ上に読み込ませて

動作させることで,リアルタイム性を確保している.このため,多くのメモリを使用す

る.(PosixRealTimeExecutionContext を使用しない場合の約 10 倍程度)

以下に,PosixRealTimeExecutionContext を使用するための設定方法を示す.ただ

し,RTC-CANopen をリアルタイムで動作させる必要がなければ,以下の設定は不要.

[1] terminal にて,以下のコマンドを実施する.

$ ulimit -a

#core file size

#中略

#max locked memory (kbytes, -l) 64

#中略

#file locks

上記のように表示されるので,max locked memory に書かれている数字を確認する.

上記の例では,64 になる.

[2] メモリの制限値の設定を変更する.

$ cd /etc/security/

$ sudo vi limits.conf

limits.conf に以下の設定を書き加える.

* soft memlock 64

* hard memlock unlimited

実際に書き加えた limits.conf 以下のようになる.

# /etc/security/limits.conf

#

#Each line describes a limit for a user in the form:

#

#<domain> <type> <item> <value>

#

#Where:

#<domain> can be:

# - an user name

# - a group name, with @group syntax

56

# - the wildcard *, for default entry

# - the wildcard %, can be also used with %group syntax,

# for maxlogin limit

# - NOTE: group and wildcard limits are not applied to root.

# To apply a limit to the root user, <domain> must be

# the literal username root.

#

#<type> can have the two values:

# - "soft" for enforcing the soft limits

# - "hard" for enforcing hard limits

#

#<item> can be one of the following:

# - core - limits the core file size (KB)

# - data - max data size (KB)

# - fsize - maximum filesize (KB)

# - memlock - max locked-in-memory address space (KB)

# - nofile - max number of open files

# - rss - max resident set size (KB)

# - stack - max stack size (KB)

# - cpu - max CPU time (MIN)

# - nproc - max number of processes

# - as - address space limit (KB)

# - maxlogins - max number of logins for this user

# - maxsyslogins - max number of logins on the system

# - priority - the priority to run user process with

# - locks - max number of file locks the user can hold

# - sigpending - max number of pending signals

# - msgqueue - max memory used by POSIX message queues (bytes)

# - nice - max nice priority allowed to raise to values: [-20, 19]

# - rtprio - max realtime priority

# - chroot - change root to directory (Debian-specific)

#

#<domain> <type> <item> <value>

#

#* soft core 0

57

#root hard core 100000

#* hard rss 10000

#@student hard nproc 20

#@faculty soft nproc 20

#@faculty hard nproc 50

#ftp hard nproc 0

#ftp - chroot /ftp

#@student - maxlogins 4

* soft memlock 64

* hard memlock unlimited

# End of file

soft memlock の後の数字は 1 で確認した数字を入れる.本例では 64 になる.

[3] PC を再起動する.

[4] ProxyRTC が起動するターミナルで以下のコマンドを実行する.

$ ulimit -l unlimited

[5] 4 を実行したターミナルにて,設定が変わっていることを確認する.

$ ulimit -a

#max locked memory (kbytes, -l) unlimited

58

4.1.4. RTC-CANopen を利用した各システムの前準備

RTC-CANopen を使ったシステムを利用する際の手順として,幾つかのファイル及び

ディレクトリを利用したいシステムのプロジェクトフォルダにコピーしなければなら

ない.ここでは,4.3 章で紹介するリファレンスロボットを例に説明する.

図 4-1 リファレンスロボットのディレ

クトリ構成の例

図 4-2 RTC-CANopen 本体のディレクトリ構成

リファレンスロボットのプロジェクトディレクトリは図 4-1 に示すような構成と

し,RTC-CANopen 本体の構成を図 4-2 として説明する.

まず,図 4-1 の利用するシステムの bin フォルダに対して,RTC-CANopen の各バ

イナリをコピーする.予め 3.3.1.5 章(windows)及び 3.4.2.5 章(Linux)でビルドした

RTC-CANopen の各バイナリが入っている bin フォルダをコピーし,図 4-1 のリファ

レンスロボット側の bin フォルダに貼りつけ,適宜上書きを行う.

次に,図 4-1の etcフォルダにRTC-CANopen関連の各設定ファイルをコピーする.

ここでは,実行する OS によって conf ファイルに記述されている項目が異なるため,

図 4-2 の etc ファルダ内にある win もしくは linux フォルダの中身をすべてコピーし,

図 4-1 の etc ファルダの中に貼り付ける.また windows のみ,図 4-2 の dll ファルダ

内の各ライブラリファルダの中から RTC-CANopen で必要となる dll(6種類)を図 4-1

側の任意の場所にコピーする必要があります.本マニュアルでは,dll ファイルは図 4-1

のように各システムの work フォルダの配下にコピーして置くことを推奨します.この

ディレクトリ以外にコピーしたい場合は,適宜,4.1.1 で示したように conf ファイル内

で dll の在処を示す「dll.filedir」の値を変更する必要があるので注意してください.

59

4.2. H8SX1544F を用いた Thermometer-Fanmotor System

4.2.1. システム概要

本システム(Thermometer-Fanmotor System)は,ルネサスエレクトロニクス社製

の H8SX シリーズマイコンを搭載し北斗電子から販売されているマイコン搭載ボード

である H8SX1544F 及び H8SX1527RF にて,CANopen を実装し CAN バスを利用し

たマイコン間通信をメインとした RTC-CANopen のシステムの一例である.

システムの動作内容は,H8SX1527RF に接続された温度センサを AD 変換で取得

し CAN バスを介して現在の温度を送信,H8SX1544F で受信した温度が一定以上であ

れば扇風機を回転させるシステムである.

4.2.2. ハードウェア構成

本システムのハードウェア構成を図 4-3 に示す.本システムのハードウェア構成要

素は HSB8SX1527F と温度センサ,HSB8SX1544F と扇風機及び制御用 PC と CAN

ネットワークインターフェースからなる.

図 4-3 扇風機デモのハードウェア構成

60

(1) Thermometer の回路図 (2) Fanmotor の回路図

図 4-4 Thermometer 及び FanMotor の回路図

各マイコンに接続される温度センサ及び扇風機の回路図を図 4-4 に示す.また本シス

テムでは,温度センサを取得する H8SX1527RF の NODE-ID を 6 とし,扇風機を制御

する H8SX1544F の NODE-ID を 8 としている.

4.2.3. ソフトウェア構成

ソフトウェア構成は図 4-5 に示すように,ThermoMetor と FanMotor の 2 つの RTC

から構成される.ThermoMetor から温度センサで得た値を出力し,FanMotor が取得

する構成となっている.

図 4-5 RTS の構成図

61

図 4-6 COB-ID の接続関係

また本システムでは,図 4-5 に示すように RT-System Editor 上の Proxy RTC 間

で繋がれているが,実際にはCANopenデバイス間の通信であるため, PC内のCORBA

を介さず CAN バスを介して Device RTC 同士で接続されている.この為,COB-ID の

接続関係は図 4-6 に示されるようになる.この時の COB-ID を 0x00000286 とする.

4.2.4. 構成されているコンポーネントの詳細説明

4.2.4.1. FanMotor

FanMotor では図 4-7 に示すように RPDO4 のみ利用するため図のようなマッピン

グを行う.

62

図 4-7 FanMotor の PDO マッピング図

4.2.4.2. Thermometer

Thermometer では図 4-8 に示すように TPDO4 のみ利用するため図のようなマッ

ピングを行う.

図 4-8 ThermoMetor の PDO マッピング図

0 1 2 3 4 5 6 70x1400-01

0x800001A0+ Node-ID0x1401-01

0x800001E0+ Node-ID0x1402-010x80000220+ Node-ID0x1403-010x80000260+ Node-ID0x1403-01

0x000002A0+ Node-ID

0x1800-010x40000180+ Node-ID0x1801-01

0x400001C0+ Node-ID0x1802-01

0xC0000200+ Node-ID0x1803-010x80000240+ Node-ID0x1803-010x00000280+ Node-ID

RecvData TemperatureIndex : 0x80800010

DataType : INTEFER16

Device RTC (Fanmotor):NODE-ID 8

PDO Type COB-IDMapping Parameter [Byte]

RPDO0

RPDO1

RPDO2

RPDO3

RPDO4

0x1604sub1

TPDO3

TPDO0

TPDO1

TPDO2

TPDO4

0 1 2 3 4 5 6 70x1400-010x80000200+ Node-ID0x1401-010x80000300+ Node-ID0x1402-010x80000400+ Node-ID0x1403-010x80000500+ Node-ID0x1403-010x80000000+ Node-ID0x1800-010x80000180+ Node-ID0x1801-010x80000280+ Node-ID0x1802-010x80000380+ Node-ID0x1803-010x80000480+ Node-ID0x1804-01

0x00000280+ Node-ID

Device RTC (Thmetor):NODE-ID 6

TPDO1

PDO Type COB-IDMapping Parameter [Byte]

RPDO0

RPDO2

TPDO4

SendData TemperatureIndex : 0x82800010

DataType : UNSIGNED16

RPDO4

TPDO0

RPDO1

RPDO3

TPDO2

0x1A04-01

TPDO3

63

4.2.5. 利用方法

ここで RTC-CANopen の利用方法を ThermoMetor-FanMotorの例を用いて説明す

る.なお,本書における RTC-CANopen の各プロジェクト(ThermoMetor-FanMotor

など)のフォルダ構成は図 4-9 のような構成として扱う.

図 4-9 RTC-CANopen の基本フォルダ構成例(ThermoMetor-FanMotor の場合)

4.2.5.1. 利用準備

まず,RTC-CANopen を起動するために必要なファイル(sh:シェルスクリプト)や

DCF ファイルを格納するディレクトリを work フォルダに作成する.

[1] DCF ファイルをコピーする

work フォルダに「dcf」フォルダを作成し,このフォルダに etc フォルダ内にある

ThermoMetorと FanMotorの各 DCF ファイル(ProxyRTC と DeviceRTC の DCF)

をコピーする.なお,RTS を新しく作り直した際に最新の DCF をコピーする必要

があり,dcfフォルダにはRTSで利用するDCF以外おいてはならない仕様である.

また,ver0.5.5 から RTC-CANopen Manager がハートビートを出す仕様の為,dcf

ファイルが必要である(本マニュアルでは D000.dcf として扱う(ID=0)).

[2] 「1.statusmanager.sh」の作成

#!/bin/sh

../bin/status_manager/status_manager -f ../etc/statusmanager.conf

[3] 「2.rtccanopenmanager.sh」の作成

#!/bin/sh

../bin/rtc_canopen_manager/rtc_canopen_manager -f ../etc/rtccanopenmanager.conf -candevname can0

-dcf dcf/D000.dcf

[4] 「3.pnpmanager.sh」の作成

#!/bin/sh

../bin/pnp_manager/pnp_manager -f ../etc/pnpmanager.conf -rtsprofile ../etc/rts_profile.xml

64

ここでは構成した RTS ファイルを「rts_profile.xml」として扱う.

本システム(ThermoMetor-FanMotor)においては以上で準備は完了である.

また余談であるが,構成した RTS に RTC が含まれている場合,まとめて起動する

sh ファイル(4.RunAllRTC.sh)を用意しておくと便利である.他にも,

「1.statusmanager.sh」,「2.rtccanopenmanager.sh」,「3.pnpmanager.sh」をま

とめて起動する sh ファイル(0.AutoRun.sh)が同様にあると便利である.

[5] 「4.RunAllRTC.sh」の作成(本システムでは必要ない)

#!/bin/sh

gnome-terminal --command="../bin/RTCs/GamePadComp -f ../bin/RTCs/rtc.conf" --title='GamePad RTC'

gnome-terminal --command="../bin/RTCs/BeegoControllerComp -f ../bin/RTCs/rtc.conf" --title='beego cont RTC'

ここでは構成した RTS に必要な RTC を記述するとまとめて RTC を起動できる.

[6] 「0.AutoRun.sh」の作成(任意)

#!/bin/sh

gnome-terminal -x bash -c "./1.statusmanager.sh" --title='Status Manager'

sleep 2

gnome-terminal -x bash -c "./2.rtccanopenmanager.sh" --tile='RTC-CANopen Manager'

sleep 2

gnome-terminal -x bash -c "./3.pnpmanager.sh" --title='PnP Manager'

sleep 1

4.2.5.2. RTC-CANopen の実行手順

次に実際に起動する手順について説明する.

[1] CORBA ネーミングサービスを起動する(起動済みならば省略)

$ rtm-naming 9876

ポート番号は各 conf ファイルの設定に従う.本システムでは 9876 を使用した.

[2] CANopen デバイスと CAN バス及び CAN インターフェースを物理的に接続する

[3] CAN インターフェースの利用するチャンネルを起動する(起動済みならば省略)

$ sudo ifconfig can0 up

RTS で設定したチャンネルを有効にする.本システムでは can0 を利用する.

[4] RTC-CANopen Server(status,rtc-canopen,pnp の各 manager)を起動する

65

ここで既に,0.AutoRun.sh を作成している場合は 0.AutoRun.sh を起動する.

$ ./0.AutoRun.sh

0.AutoRun.sh を作成していない場合は手順に従ってそれぞれ別の端末で起動する.

$ ./1.statusmanager.sh

$ ./2.rtccanopenmanager.sh

$ ./3.pnpmanager.sh

正常であれば,3 つの端末が起動していることが確認できる.ここで一つでも正し

く立ち上がっていない場合は,バイナリの管理者権限や相対パスが間違って設定さ

れていないか,あるいは既に起動していないか確認する.

[5] 各 DeviceRTC に電源を入れ起動する

各 DeviceRTC の電源を入れ RTC-CANopenManager が CANopen デバイスの

Heartbeat を受信すると,その DeviceRTC に対応した Proxy RTC が自動で起動し

SDO ダウンロードが実行される.ここで正常に動作していれば,StatusManager

で RTC が「DEAD」から「INACTIVE」または「ACTIVATE」になっているはず

である.

[6] RTS で接続した各 RTC 間の接続が pnpmanager により自動結線される(自動)

このステートが実行されるには,既にすべての RTC が起動されている(INACTIVE

または ACTIVATE)状態であることが前提である.また,pnpmanager_config.conf

で conf.default.autoConnection: 1 である必要がある.

[7] すべての RTC が Activete 状態に自動遷移する(自動)

このステートが実行されるには,既にすべての RTC 結線が[6]で接続されているこ

とが前提である.また,pnpmanager_config.conf で conf.default.autoActivation: 1

が設定されていることが必要である.

[8] RTS のシステムが動作する(自動)

RTC-CANopen のすべてのシステムが起動し,StatusManager などに異常が見ら

れなければ,本システムの場合,温度センサの取得した温度が閾値以上であれば扇

風機が回転していることが確認できるはずである.

RTC-CANopen を使ったシステムの起動手順は以上である.

なお,RTS に RTC が含まれている場合,起動するタイミングは[5]の各 DeviceRTC

に電源を入れ Proxy RTC の起動が確認されたあとに「4.RunAllRTC.sh」を起動する.

66

4.3. 小型 RTC-CANopen リファレンスロボット

ここでは株式会社テクノクラフト社製 Beego を対象に RTC-CANopen を適用したロ

ボット(リファレンスロボット)について説明する.なお,構成方法および利用方法につ

いてはリファレンスロボットマニュアルを参照のこと.

図 4-10 リファレンスロボット

4.3.1. システム構成

リファレンスロボットの動作はとてもシンプルで,リモートコントローラによりロボ

ットを手動で操作する(ラジコンのような動作).また,速度と角速度を入力することに

より,ロボットの自己位置(x,y,θ)が出力されるシステムとなっており,ほかのコン

ポーネントとの組み合わせも考慮されている.インターフェースは次世代ロボット知能

化技術開発プロジェクトの移動知能第一サブワーキンググループで統一された仕様に

基づいており,再利用性の高いものとなっている.以下の図はリファレンスロボットの

提供する機能をユースケース図で示したものになる.

図 4-11 リファレンスロボットユースケース図

67

4.3.2. ハードウェア構成

はじめに,ハードウェアの構成について説明する.

リファレンスロボットのハードウェアの構成要素をモデル化したものは以下の通りで

ある.ハードウェア構成は主にエンコーダ付きモータ,EPOS,PC,CAN ネットワー

クインターフェース(Windows の場合 IXXAT,Ubuntu の場合 PCAN-USB 又は

PCAN-PC Card)からなる.

図 4-12 リファレンスロボットのハードウェア構成(ブロック図)

68

ハードウェア要素の関係を表したものが下の図になる.PC と CAN ネットワークイン

ターフェース(PCAN-USB 又は PCAN-PC-Card)は Ethernet で情報をやり取りし,

CAN ネットワークインターフェースと EPOS は CANopen で通信する.

図 4-13 リファレンスロボットハードウェア構成(内部ブロック図)

69

リファレンスロボットの全体回路図は以下の図 4-14 となる.なお,EPOS の NodeID

は右が Node ID:10,左が Node ID:4 となっている.

図 4-14 リファレンスロボットの全体回路図

70

4.3.3. ソフトウェア構成

次にソフトウェアの構成について説明する.

なお,小型 RTC-CANopen リファレンスロボットはセグウェイジャパン[6]の作成した

GamePad コンポーネントを用いる.

1. GamePad:GamePad の入力を速度と角速度に変換する.

2. BeegoController:CANopen デバイス EPOS に指令値を与える.

3. ProxyRight,ProxyLeft:Ethrenet と CAN のインターフェース変換を行う

ProxyRTC となる.

4. EPOSStateChecker1,EPOSStateChecker2:EPOS の状態遷移を行う.

5. Odometry:ProxyRTC からのエンコーダカウントにより自己位置(x.y.θ)を出

力する.

コンポーネントの詳しい説明は 4.3.4 を参照のこと.

図 4-15 GamePad を使用したリファレンスロボットのソフトウェア構成(ブロック図)

71

なお,GamePad を WiiRemoteVelocity に置き換えた場合は以下のようになる.

6. WiiRemoteVelocity:Wii リモコン(クラシックコントローラ付属)の入力を速度と

角速度に変換する.

図 4-16 WiiRemoteVelocity を使用したリファレンスロボットのソフトウェア構成(ブロック図)

72

構成されるコンポーネントの関係を記した内部ブロック図が以下となる.

図 4-17 GamePad を使用したリファレンスロボットのソフトウェア構成(内部ブロック図)

図 4-18 WiiRemoteVelocity を使用したリファレンスロボットのソフトウェア構成(内部ブロック図)

73

4.3.4. 構成されているコンポーネントの詳細説明

次にコンポーネント単位で説明する.なお,GamePad についてはセグウェイジャパン

から提供された RTC であるので説明を省く.

4.3.4.1. WiiRemoteVelocity

コンポーネント概要:Wii リモコン(クラシックコントローラ付属)からの入力を速度と

角速度に変換する.(Windows のみ)

動作環境

動作 OS Windows XP

Windows 7

動作 RTM OpenRTM-aist-1.0.0-RELEASE

開発言語 C++

依存ライブラリ なし

動作条件

動作周期 50Hz

出力ポート

データポート

名称 データ型 データ長 説明

TargetVelocity IIS::TimedVelocity2D - 速度出力(速度,角速

度)

74

4.3.4.2. Beego Controller

コンポーネント概要:入力される速度,角速度を CANopen デバイス EPOS に伝達す

る.

動作環境

動作 OS WindowsXP

Windows7

Ubuntu 10.04LTS

Ubuntu 12.10

動作 RTM OpenRTM-aist-1.0.0-RELEASE

開発言語 C++

依存ライブラリ なし

動作条件

動作周期 50Hz

入力ポート

データポート

名称 データ型 データ長 説明

InputTargetVelocity IIS::TimedVelocity2D

- EPOS を動かすため

の速度(速度,角速度)

を入力する.

75

出力ポート

データポート

名称 データ型 データ長 説明

TxPDOMsgRight RTC::TimedOctetSeq 8 必要なデータは EPOS の DCF

を参照にする.

Control Word や modes of

Operation の意味は EPOS の説

明書を参照にする.

配列 No.:[0~1] Control Word =

0x0F

配列 No.:[2] Modes of Operation

= 3 (Profile Velocity Mode)

配列 No.:[3~6] 目標回転数

配列 No.:[7] reserved

TxPDOMsgLeft RTC::TimedOctetSeq 8 必要なデータは EPOS の DCF

を参照にする.

Control Word や modes of

Operation の意味は EPOS の説

明書を参照にする.

配列 No.:[0~1] Control Word =

0x0F

配列 No.:[2] Modes of Operation

= 3 (Profile Velocity Mode)

配列 No.:[3~6] 目標回転数

配列 No.:[7] reserved

76

4.3.4.3. EPOSStateChecker1,EPOSStareChecker2

コンポーネント概要:マクソンジャパン株式会社製モータドライバである EPOS 内部の状

態遷移を行う.状態遷移させる対象は EPOS がモータドライバとして持っている状態遷移で

あるので,CANopen の状態遷移ではないので注意が必要.EPOS 内の状態については,EPOS

の Firmware マニュアルを参照のこと.主に switch on disable~operation enable の状態遷移と

Fault~operation enable までの状態遷移を行う.

動作環境

動作 OS Windows XP

Windows 7

Ubuntu 10.04LTS

Ubuntu 12.10

動作 RTM OpenRTM-aist-1.0.0-RELEASE

開発言語 C++

依存ライブラリ なし

動作条件

動作周期 50Hz

入力ポート

データポート

名称 データ型 データ長 説明

StatusWord RTC::TimedOctetSeq 8 EPOS の現在の状態

(Status Word)を入力

する.

EPOSのマッピングパ

ラメータが違う場合

はソースを編集する

必要がある.

マッピングパラメー

タは DCF を参照にす

る.

配列 No.:[0~1] Status

Word

配 列 No. : [2 ~ 7]

77

reserved

出力ポート

データポート

名称 データ型 データ長 説明

ControlWord RTC::TimedOctetSeq 8 EPOS の状態遷移を

行うコマンドを出力

する.

EPOS のマッピング

パラメータが違う場

合はソースを編集す

る必要がある.

マッピングパラメー

タは DCF を参照にす

る.

配列 No.:[0] Control

Word

配 列 No. : [1 ~ 7]

reserved

78

4.3.4.4. Odometry

コンポーネント概要:モータの出力値(エンコーダカウント)から自己位置を算出する.

動作環境

動作 OS Windows XP

Windows 7

Ubuntu 10.04LTS

Ubuntu 12.10

動作 RTM OpenRTM-aist-1.0.0-RELEASE

開発言語 C++

依存ライブラリ なし

動作条件

動作周期 50Hz

入力ポート

データポート

名称 データ型 データ長 説明

PositionActualValueLeft RTC::TimedOctetSeq 8 EPOS からのデータ

(エンコーダカウン

ト)を取得する.

PositionActualValueRight RTC::TimedOctetSeq 8 EPOS からのデータ

(エンコーダカウン

ト)を取得する.

出力ポート

データポート

名称 データ型 データ長 説明

result Localization IIS::TimedVelocity2D - 現在の自己位置を出

力する.(単位はメー

トル)

79

4.3.5. ソースコードのビルド

リファレンスロボットマニュアルでは,WiiRemoteVelocity,Beego Controller と

Odometry のソースコードを公開している.

ソースコードをビルドするには OpenRTM-aist 1.0.0 RELEASE(C++版)が実行で

きる環境であることが前提となる.また,WiiRemoteVelocity をビルドする場合は次の

4.3.5.1 章で説明するファイルが必要になります.

4.3.5.1. WiiRemoteVelocity の利用する前に

WiiRemoteVelocityを利用するためにはWiiリモコン(クラシックコントローラ付属)

に加え,Bluetooth 受信モジュールと Windows 用のデバイスドライバ開発キット

(WDK)が必要となる. WDK については WDKVer.6 を利用する.

必要なファイルは以下になる.

guiddef.h

hidpi.h

hidspi.h

hidusage.h

hid.lib

setupapi.lib

以上,6 つは以下に記載する方法で入手することができる.

① Microsoft Connect にサインインする.(未登録の場合は登録する)

(https://connect.microsoft.com/)

② WindowsDriverKit(https://connect.microsoft.com/site148)に移動します.

③ ダウンロードページに進む.左の欄のダウンロードをクリックする.

80

5. トラブルシューティング

Q:RTC-CANopen をインストールする際に Xerces がリンクできず,失敗する.

A:Xerces の前バージョンがあると,リンクに失敗する場合がありますので削除してくださ

い.

例:前バージョンを削除する方法(libxerces-c2-dev 及び libxerces-c28 の場合)

$ apt-get remove libxerces-c2-dev

$ apt-get remove libxerces-c28

Q:RTC-CANopen を起動すると実行プロセスがすぐに終了あるいはエラーしてしまう.

A:以下のことが解決策として考えられます.

① 実行ファイル及び conf ファイルで設定しているパスが間違えている場合,実行ファイル

及び conf ファイルで設定しているパスを修正します.

② 実行ファイルの実行権限がない場合,実行ファイルを実行可能にします.

③ RT コンポーネント自体の内部処理に問題がある可能性もある場合もあります.実行し

た RTC を確認してください.

Q:Status Manager,RTC-CANopen Manager,PnP Manager は起動するが,ProxyRTC が正常に

動作しないあるいは出力されるデータがおかしい.

A:以下のことが解決策として考えられます.

① RTS プロファイルに設定されている ProxyRTC が間違っている可能性があります.RTS

プロファイルの ProxyRTC へのパスを確認してください.

② RTC-CANopen Linux 版では現在,RTC-CANopen Manager や gpproxy で指定可能な CAN

カードのチャンネルは一つのみです.複数のチャンネルを指定していると ProxyRTC が

正常に動作しません.

③ DCF のマッピングに不整合があると ProxyRTC が正常に動作しません.CANopen デバ

イスの DCF を確認してください.

④ CAN インターフェースの bit レートが適切でない可能性があります.3.4.2.6 章の CAN

インターフェースの設定の項目を参照し,適切な bit レートが設定されているか確認し

て下さい.

81

Q:構成される RT コンポーネントはすべて Active 化されているのに RT コンポーネントから

データが出力されない.

A:RT コンポーネントの内部処理問題の可能性がありますが,RTC-CANopen では RTS と実

行される RT コンポーネントはポート名が一致していれば接続できるため,RTS に記載され

ているRTCのデータ型と実際に実行している RTCがポート名は一致しているがデータ型に

不整合があると,正常なデータが出力されません.RTS のデータ型と実行している RTC の

データ型が一致しているかを確認してください.

82

6. ライセンス

Copyright © 2008-2012 芝浦工業大学 電気電子情報工学専攻 水川研究室 All

rights reserved

RTC-CANopen 及び本書で利用している RTC(一部を除く)の著作権は,芝浦工業大

学水川研究室に帰属します.

芝浦工業大学 電気電子情報工学専攻 水川研究室は,本マニュアル,本ソフトウェア

及びサンプルシステムの使用によって生じるいかなる損害についても一切の責任を負

いません.また本マニュアル,本ソフトウェア及びサンプルシステムの内容は,予告な

しに変更することがあります.

本ソフトウェアには,Apache Software Foundation(http://www.apache.org/)が開発

したソフトウェアが含まれています.また,本ソフトウェアでは,LGPLv2 のライセン

スである CANFestival(http://www.canfestival.org/),LGPLv3 のライセンスである

libusb-win32(http://sourceforge.net/apps/trac/libusb-win32/wiki)を使用しています.

7. 商標

「インテル®Core™2 Duo」はインテル株式会社の商標です.

「CANopen®」は非営利団体 CiA®(CAN in Automation)の登録商標です.

「PCAN-PC Card」,「PCAN-USB」は独国 PEAK-System Technik GmbH の独国ま

たはその他の国における商標です.

「EPOS 24/5」,「EPOS Studio」はマクソンジャパン株式会社の商標です.

「Vector ProCANopen Version 5.2.0.13(SP1)」はベクター・ジャパン株式会社の商標

です.

「H8SX1544F」,「H8SX1527RF」は株式会社北斗電子の商標です.

「FAN-U16SV」はエレコム株式会社の商標です.

「Beego」は株式会社テクノクラフトの商標です.

「Windows®」,「Windows 7®」は米国 Microsoft Corporation の米国またはその他

の国における登録商標です.

「Eclipse」は開発ツールプロバイダのオープンコミュニティである Eclipse

Foundation, Inc.により構築された開発ツール統合のためのオープンプラットフォーム

です.

「Ubuntu」は Canonical Limited.の商標です.

83

「Java」は,Oracle Corporation 及びその子会社,関連会社の米国及びその他の国に

おける登録商標です.

8. RT-Component について

GamePad RTC ©セグウェイジャパン株式会社

9. 問い合わせ先

芝浦工業大学 ヒューマン・ロボット・インタラクション研究室

E-mail: [email protected]

ホームページ URL:http://www.hri.ee.shibaura-it.ac.jp/

参考文献

[1] OpenRTM-aist http://www.openrtm.org/

[2] CiA http://www.can-cia.org/

[3] OMG SysML http://www.object-report.jp/omginfo/technology/sysml/

[4] OMG UML http://www.object-report.jp/omginfo/technology/sysml/

[5] CANFestival http://www.canfestival.org/

[6] SegWay Japan http://www.segway-japan.net/index.html