2017-01-06 4 views
1

私はROS Indigoを実行しています。私は簡単な問題でなければならないことがあります:私は私のパッケージに私たちのスクリプトから呼び出すことができるユーティリティクラスを持っています。私たち自身のパッケージ内で呼び出される必要があるだけです。私はそれを他のROSパッケージで利用する必要はありません。ROS catkinワークスペース内のPythonクラスの定義と使用

ファイルHandControl.pyにHandControlという名前のクラスを定義しました。それをインポートするすべての試み、またはインポートすることなくそれを使用することはできません。 catkinワークスペースではどこに置くのですか?パッケージのルート、またはスクリプトですか?私は__init.py__が必要ですか(私はいくつかの場所を試しました)?

+1

_(1)_あなたのプロジェクト構造を表示してください_(2)_あなたの輸入が失敗したときにあなたが得るすべてのトレースバックを表示してください。 –

答えて

1

ここでは、PythonとROSの標準に従うことをお勧めします。スクリプトは通常/scriptディレクトリに置かれ、ではなく、を他のpythonスクリプトにインポートする必要があります。再利用可能なPythonコードは、Pythonモジュールの表示です。 Pythonモジュールは/src/package_nameに配置し、そこに__init__.pyも作成する必要があります。このモジュールは、あなたのcatkinワークスペースのどこでも利用できます。現時点でそれが必要ではないように見えるかもしれませんが、この構造が将来的に物事を構成するのに役立つ可能性があります。プロジェクトは一般的に成長し、ガイドラインに従うと良いコードを維持するのに役立ちます。より具体的な詳細についてはこちらをご確認くださいpython doc

0

エリカ、

Pythonで書かれたthis学校のプロジェクトを参照し、ROSインディゴ上で実行してください。 /scriptsフォルダを見ると、他のスクリプトから呼び出されているカスタムクラスの例を見ることができます。 /launchの起動ファイルを調べると、ROSノードの設定例がわかります。おそらくそれが問題です。

+0

はカスタムクラスですか?ここではかなり標準的なROSノードのように見えるものがあります。私のクラスはノードではありません。 –

+0

OK、私の問題は他の場所にあることが判明しました。私はcatkinワークスペースのプロセスを再開しました。そして今、インポートが行われる限り、物事は働いています。それはあなたのプロジェクトが貴重な健全性チェックだったので私はupvoteを与えてくれてありがとうと言いました。 –

関連する問題