【ROS】pythonライブラリの作成
ライブラリを置くための準備
- ROSではpythonのライブラリを「パッケージ名/src/パッケージ名」におく
前回の記事で作ったbumper_action.pyを移動する
$ mkdir -p src/ros_start $ cp scripts/bumper_action.py src/ros_start/
ディレクトリをライブラリと認識させるために、__init__.pyを配置する。
$ touch src/ros_start/__init__.py
ROSのパッケージシステムでこのライブラリを認識させるための設定をする。
~/catkin_ws$ vi src/ros_start/setup.py
from distutils.core import setup from catkin_pkg.python_setup import generate_distutils_setup setup_args = generate_distutils_setup( packages = [ 'ros_start' ], package_dir = { '': 'src' }, ) setup (**setup_args )
CMakeLists.txtの編集
catkin_python_setup()
のコメントアウトを解除
$ cd ~/catkin_ws/ $ catkin_make
ライブラリを使う
~/catkin_ws/src/ros_start/scripts$ vi bumper_action_use_lib.py
#!/usr/bin/env python import rospy from ros_start.bumper_action import BumperAction if __name__ == '__main__': rospy.init_node( 'bumper_action_use_lib' ) bumper_action = BumperAction() rospy.spin()
$ chmod 755 bumper_action_use_lib.py $ roscd ros_start/ $ cp scripts/bumper_client.py src/ros_start/ $ vi scripts/bumper_client_use_lib.py
#!/usr/bin/env python import rospy from ros_start.bumper_client import go_until_bumper rospy.init_node( 'bumper_client_use_lib') go_until_bumper()
$ chmod 755 scripts/bumper_client_use_lib.py
確認
$ rosrun ros_start bumper_action_use_lib.py
$ rosrun ros_start bumper_client_use_lib.py [INFO] [1557815823.296143, 10.460000]: bumper hit!
結果はライブラリを使わないものと同様
ちなみに、今現在のディレクトリ構成は以下のようになっているはず
ros_start ├── CMakeLists.txt ├── action │ └── GoUntilBumper.action ├── include │ └── ros_start ├── launch │ ├── chat.launch │ └── param.launch ├── package.xml ├── scripts │ ├── bumper_action.py │ ├── bumper_action_use_lib.py │ ├── bumper_client.py │ ├── bumper_client_use_lib.py │ ├── listener.py │ ├── service_client.py │ ├── service_server.py │ ├── talker.py │ ├── vel_bumper.py │ ├── vel_publisher.py │ ├── velocity_client.py │ └── velocity_server.py ├── setup.py ├── src │ └── ros_start │ ├── __init__.py │ ├── bumper_action.py │ ├── bumper_action.pyc │ ├── bumper_client.py │ └── bumper_client.pyc └── srv └── SetVelocity.srv