5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-12-01

経緯

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カメラは動かすだけでも楽しいので、是非買ってみてください!家での使い道はあんまり無いと思いますが(笑)。

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

参考文献

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?