[Documentation] [TitleIndex] [WordIndex

ROS Python スタイルガイド

このページは2013-07-21 06:19:05 版をもとにしています。 最新の情報は原文をご確認ください。


このページではROSのためにPythonコードを書く場合に従うべきスタイルガイドを定めています。このガイドはROSコアとそれ以外の両方について適応されます。

C++についてはC++ Style Guide(原文)を参照してください。

コーディングスタイル

PythonのコードはPEP 8に従うべきです。PEP 8は厳格なスタイルガイドではなく、可読性の一貫性を尊重します。スマートに行きましょう。PEP 8を簡単に以下にまとめます。

ローダー

この段落はrosbuild/rosmakeを使用するパッケージにのみ必要となります。もしパッケージがcatkinを使用するならば、roslib.load_manifestを使用してはなりません。

roslibは、あなた個人のローカルファイルよりもROS Pythonパッケージを自動的にインポートできるものと想定されています。あなたのPythonパッケージが依存性を持つなら、下記のヘッダーを先頭に追加してください。

import roslib
roslib.load_manifest('your_package_name')

roslib.load_manifest はあなたのManifest(原文)とPythonのパスに基づく依存性を見ます。複数のload_manifest呼び出しを使用しないでください。もし複数の呼び出しが必要ならば、おそらくあなたはmanifestにおける正しい依存性を構築できていないことが原因だと考えられます。

パッケージ/モジュール名 (__init__.py files)

すべてのPythonコードはモジュール名前空間に配置しなければなりません。ROSはあなたのPythonソースディレクトリをあなたの依存するの全てのパスへ移動します。これは誰か他のインポートに影響を与えないようにするために重要です。私達はこのモジュール名をあなたのROSパッケージ名と同一にすることを強く勧めます。

以下の2つは推奨されるコードレイアウトです:

msg/srvsを使用しない小さなモジュール:

packagename
 |- src/
    |- packagename.py
 |- scripts/
    |- non-exported python files

msgs/srvsを使用するモジュール

packagename
 |- src/
    |- packagename/
      |- __init__.py
      |- yourfiles.py
 |- scripts/
    |- non-exported python files

もしあなたが__init__.pyについて知らないのであれば、What is init py used for?を読むことを勧めます。

より複雑なmsg/srvファイルのレイアウトは、Pythonのmsg/srvジェネレータがファイルをあなたのパッケージの名前空間に生成するときに必要になります。

あなたがソースコードをsrc/ディレクトリに置けない珍しいケース(たとえばサードパーティのコード)では、editing your manifestに基づいてPythonのあなたのパッケージのexportパスを上書きすることができます。

ノードファイルの説明のために次の節を見てください。

ノードファイル

ROSでは、ノードタイプの名前は実行可能な名前と同じです。典型的には、PythonファイルではMainスクリプトの先頭に#!/use/bin/env pythonを書くことを意味し、Mainスクリプトの名前はノードの名前と同じにします。

もしあなたのノードがシンプルなものであれば、スクリプトがノード全体のコードを含んでも構いません。そうでなければ、ノードファイルはimport packagenameでコードを呼び出すのが適当でしょう。

注意: 私達はROS固有のコードを再利用される一般的なコードから分離するように努めています。このノードファイルの分離とあなたのファイルがsrc/packagenameに配置されることはこの分離を促進するものです。

Python の特徴/バージョン

私達のターゲットはPython 2.5です。もちろん私達はコードをPython 2.6、2.7、Python3k などに簡単に移植できるように作ることを願っていますが。(詳しくはPEP 3100をご覧ください。) これは下記を意味します。

上記のリストにあるすべては以下のどちらかによるものである:

もしあなたのお気に入りがこの削除リストの中にあれば、Guidoへ連絡を取ってください。

注意: ROS Python コードはまだこのスタイルへ移行している途中なので、スタイルの一貫性のなさについては謝罪します。


2023-10-28 12:40