2017年11月21日火曜日

[メモ] ROSでbagファイルから動画を保存する方法

何回もググってる気がするのでメモ。

http://wiki.ros.org/image_view

1. rosbag playで保存したtopicを再生する。

2. image_viewで以下のコマンドを実行する。

$ rosrun image_view video_recorder image:=/hoge/camera/image_raw _fps:=10 _filename:=201711XX.avi

いっつもfpsを指定するときに_を付けるのをなんだっけなー、と悩んで5分くらい無駄にしてたので、今度からはこのメモをチェックしよう。

2017年10月4日水曜日

VRな講演会

こんにちは。

先日VRの講演会(東大の廣瀬先生)を聞いてきました。
わりと面白くて自分がやってる仕事のヒントになることが多々ありました。

現在のVRは第二世代で、第一世代(1990年くらい)とは質的に違いがあります、と。
第一世代の時はHMDだけぽーん、とあって、コンテンツを作る道具やら、ネットやらなかったのでダメだった、とのこと。

質疑応答で先生にとっての究極のVRは?と聞かれて「ゴジラ」ていってて面白かった。
シン・ゴジラとかで現実的な風景の中でゴジラだけが非現実的なものがあるけどそれでもリアルっぽいと、そういうのがやれるといいなとのことだった。

ここでVRの黒歴史を連載してるっぽいので時間あるときに見てみよう。
https://mine.place/user/8833697a-087d-4ddc-9c4e-c051941798dd

2017年9月23日土曜日

Online ROS使ってみた

こんにちは。

TwitterみてたらOnline ROSなるものがあるのを知ったので、とりあえず触ってみました。
http://www.onlineros.com/index.html

サンプル


サンプルは8個あって主にC++でした。(Pythonは2個)
基本どのsampleもversionはkineticと書いてありました。

Hello Worldからpublish/subscribe, timerの使い方、actionlibなど。
alpha版だからこれから増えていくかもですね。

使い方




サンプルを選ぶとこんな画面が表示されます。

左側でソースコードをいじって、左下のCompile & Runボタンを実行すると、
しばらくすると右側のコンソールに文字が表示されて、実行されました。
(ソースコードいじってからCompile & Runしたらちゃんと修正も反映されました。)


右側の画面で”Terminal”を選ぶとROS_INFOで表示してるログ等が表示されてて、
"Topics"を選ぶとpublishされてるTopicの情報を見ることができました。

上下に表示スペースがあるので、上でTerminal,下でTopicsみたいなかんじで見たい情報が見れて便利。(複数のTopicが見たいとかなると、、今後増えたりするのかな。)

Compile & Run ボタンの下に "Share link" というのがあったので、ためしにソースコード修正して、別のブラウザでリンクを開いたら修正した内容が反映されてた。
これでROS友達と自分のソースコード共有できるね。(そんな友達いないけど。。)

感想


今回MacのChromeで試してみたのですが、やっぱりUbuntuで環境作らずに手軽に試せるのは割と便利だなー、と思いました。出先とかでちょっと試してみたい時に重宝するかも。

alpha版なのでこれからの進化に期待してます。

2017年9月16日土曜日

[メモ] ROSのnodeletでのgdbの使い方

こんにちは。

ROSのnodeletを使ってる時にSegmentation Faultで落ちて、はて、どうやって解析すればいいんだろうと少し悩んだのでそのときのメモ。考えてみたらふつーの手順でした。

1. coreファイル作成元の確認

そもそもnodeletで落ちる時って何を指定すればいいんだろう、と思ったんですが、ふつーにfileコマンドで調べればよかったです。(下のfrom '/usr/XXX/' みたいな部分)

2. gdbでbacktraceの確認

1.でファイルの名前がわかったら、以下のコマンドを実行すればOK

$ gdb /usr/hoge/nodelet core.12345

みたいな感じ。めでたしめでたし

2017年2月9日木曜日

[備忘録] patchelfの使い方

こんにちは。

普段使わないものはなるべくメモっとこうと、patchelfについて調べた&使ったことのメモ。

ここの説明参照。

http://manpages.ubuntu.com/manpages/xenial/man1/patchelf.1.html

--set-interpreter INTERPRETER
         Change  the  dynamic  loader  ("ELF  interpreter") of executable
         given to INTERPRETER.

ということで、

$ patchelf --set-interpreter XXXX で dynamic loaderをXXXXで指定したものに切り替えれた。切り替えたら.elfファイルが実行できたりした。

滅多に使わないだろうけどたまに便利だなー。


2017年1月27日金曜日

[備忘録][ROS] video-stream_opencvを使って、mp4ファイルを読んでpublishしてみた(kinetic)

こんにちは


携帯で撮った動画(mp4)をROSでカメラのデータ読み込む代わりに
どうやって使うんだろう、と調べてやってみたのでメモ。


参考にしたのは以下。
http://wiki.ros.org/video_stream_opencv


手順


とりあえずkinetic対応してなかったので、ソースコードをもってきて、ビルド。

$ git clone https://github.com/ros-drivers/video_stream_opencv.git
$ cd ../catkin_ws
$ catkin_make


よっし、動かすかーと使ってみたところ、なぜかファイルのopenに失敗、とでて実行できず。。
(追記:後で調べたらlaunchファイルのパスの指定がよくわからない感じで絶対パスで指定したらあうまくいきました。)

ファイルを置く場所かなーとか色々調べてみたんですが、結局原因がわからなかったので、
深追いをしないで諦めようとしたところ、scripts以下にtest_video_resource.pyを発見。

test_video_resource.pyは指定したファイルを再生して、OpenCVのcv2.imshowで動画を表示していたので、以下のように修正。

#cv2.imshow("Stream; " + resource_name, frame)
pub.publish(bridge.cv2_to_imgmsg(frame), "bgr8")


そしてこのままだと再生スピードが速すぎたので、while文の中でrate.sleep()を使って表示速度を修正。

rate = rospy.Rate(54)

while rval:
  (中略)
  rate.sleep()


これでやりたいことができました。わーい。
なぜか元のやつは使えなかったけど、やりたいことはできたのでよしとする。


全然関係ないけど最近更新もしてなくて、自分用のメモだしこのままフェードアウトかなーって思ってたら、外国語のブログでusb-camの使い方参考にしてるのを見つけてしまってうわ、個人用のメモが誰かの役に立ったかも!とちょっとうれしかったので自分がやったことはメモ残しとこうと思いました。よかったよかった。

【追記】

使えなかった理由を少しみてみたらちゃんと動いたので動かし方追加。

launchディレクトリ内にあるvideo_file.launchファイルの、video_stream_providerというパラメータのvalueを絶対パスに書き換えたら再生画面が立ち上がりました。

ここで指定したファイル名をsrcディレクトリの中のvideo_stream.cpp内でopenしていて、最初はそこでパスが間違っててopenが失敗してました。

ということで、kineticでもちゃんとvideo_stream_opencvは使えそうです。(publish部分はテスト用ファイルで事足りたので見てませんが)