3
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Organization

AxisのPTZカメラをROS上で制御してみた

経緯

AxisのPTZカメラをROS上で動かす機会があったので、その手順をまとめてみました。PTZ(パンチルトズーム)カメラとは、パン(左右)、チルト(上下)、ズーム(拡大)の制御ができるカメラのことです。

axis_cameraについて

最初は、PTZも含めたカメラ制御ができるpython-onvifを使おうとしたのですが、Axisのカメラに対応していなかったので、他の方法を探すことにしました。そこで見つけたのがaxis_cameraでした。axis_cameraはAxisのカメラ制御用のROSパッケージです。とても便利ですが、python2で書かれているので注意が必要です。近いうちに自分でpython3に書き換えたものを作って、また記事にしようと思います。

環境

手順

まず、準備としてaxisのデフォルトの権限がrootなので、ptz制御できるようにanonymousに変えておきます。Axisのカメラ設定画面の右下のSettings->System->Usersといくと下のようなページに行くので、Anonymous usersをONにします。
anonymous.png

次にgithubからソースコードを落としてきて、ROSを動かしていきます。

$ cd ~/catkin_ws/src
$ git clone https://github.com/ros-drivers/axis_camera.git
$ git clone https://github.com/ros-perception/camera_info_manager_py.git
$ sudo chmod -R 755 axis_camera 
$ cd ..
$ catkin build
$ roscore

別のターミナルを開いて、下のコマンドを実行します。

$ rosrun axis_camera axis_ptz.py _hostname:=IP_ADDRESS_OF_YOUR_CAMERA

axis_cameraはROSのDynamic Reconfigureを使ってGUI上でPTZ制御ができるようになっています。
別のターミナルを開き、下のコマンドを実行します。

$ rosrun rqt_reconfigure rqt_reconfigure 

すると、下のようなGUIが出現します。それぞれのスライドバーを動かすことで、PTZ制御ができます。
rqt.png

デフォルトだと、tiltが動作しなかったので、PTZ.cfgの中のtiltの設定値を変更しました。それぞれの項目はgen.add()の後ろの3つに初期値、最小値、最大値の順で並んでいます。

#!/usr/bin/env python
PACKAGE = "axis_camera"

from dynamic_reconfigure.parameter_generator_catkin import *

gen = ParameterGenerator()

#gen.add("speed_control", bool_t, 0, "Speed control (true) or absolute position control (false)", False)
gen.add("autofocus", bool_t, 0, "Autofocus", True)
gen.add("pan", double_t, 0, "Pan value in degrees (or percent in absolute mode)", 0, -180, 180)
// tiltの値を-45,-90,0から0,0,90に変えている
gen.add("tilt", double_t, 0, "Tilt value in degrees (or percent in absolute mode)", 0, 0, 90)
gen.add("zoom", double_t, 0, "Zoom value", 1, 1, 9999)
gen.add("focus", double_t, 0, "Focus", 1, 1, 9999)
gen.add("brightness", double_t, 0, "Brightness", 1, 1, 9999)

exit(gen.generate(PACKAGE, "axis_camera", "PTZ"))

まとめ

Axisのカメラであれば、簡単にROS上で動かすことができました。PTZカメラは動かすだけでも楽しいので、是非買ってみてください!家での使い道はあんまり無いと思いますが(笑)。

間違いや質問、ご意見等ありましたらお気軽にコメントください。頑張って答えますので(笑)。

参考文献

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
3
Help us understand the problem. What are the problem?