ROSのusb_camノードをインストールしてみた。
> cd ~/catkin_work/src > git clone https://github.com/bosch-ros-pkg/usb_cam.git > cd .. > catkin_make ... Linking CXX executable /home/hachiya/catkin_ws/devel/lib/usb_cam/usb_cam_node /home/hachiya/catkin_ws/devel/lib/libusb_cam.so: `av_frame_alloc' に対する定義されていない参照です collect2: error: ld returned 1 exit status make[2]: *** [/home/hachiya/catkin_ws/devel/lib/usb_cam/usb_cam_node] エラー 1 make[1]: *** [usb_cam/CMakeFiles/usb_cam_node.dir/all] エラー 2 make: *** [all] エラー 2
リンクのエラーが出たので、以下を参考にusb_cam/CMakeLists.txtに以下を追加して、リンクしているavcodecのバージョンを確認する。
http://answers.ros.org/question/198018/pkg_check_modules-doesnt-get-the-right-libavcodec/
> vi src/usb_cam/CMakeLists.txt MESSAGE(STATUS "@@@@@@@@@@@@@@@@@ " ${avcodec_LIBRARIES}) MESSAGE(STATUS "@@@@@@@@@@@@@@@@@ " ${avcodec_LIBRARY_DIRS}) MESSAGE(STATUS "@@@@@@@@@@@@@@@@@ " ${avcodec_LDFLAGS}) MESSAGE(STATUS "@@@@@@@@@@@@@@@@@ " ${avcodec_INCLUDE_DIRS}) MESSAGE(STATUS "@@@@@@@@@@@@@@@@@ " ${avcodec_CFLAGS}) MESSAGE(STATUS "@@@@@@@@@@@@@@@@@ " ${avcodec_VERSION}) MESSAGE(STATUS "@@@@@@@@@@@@@@@@@ " ${avcodec_PREFIX}) MESSAGE(STATUS "@@@@@@@@@@@@@@@@@ " ${avcodec_INCLUDEDIR}) MESSAGE(STATUS "@@@@@@@@@@@@@@@@@ " ${avcodec_LIBDIR}) > catkin_make ... -- ==> add_subdirectory(usb_cam) -- @@@@@@@@@@@@@@@@@ avcodec -- @@@@@@@@@@@@@@@@@ /usr/local/lib -- @@@@@@@@@@@@@@@@@ -L/usr/local/lib-lavcodec -- @@@@@@@@@@@@@@@@@ /usr/local/include -- @@@@@@@@@@@@@@@@@ -I/usr/local/include -- @@@@@@@@@@@@@@@@@ 56.41.100 -- @@@@@@@@@@@@@@@@@ /usr/local -- @@@@@@@@@@@@@@@@@ /usr/local/include -- @@@@@@@@@@@@@@@@@ /usr/local/lib ...
バージョン56.41.100で問題ないと思うが、とりあえず、バージョン57にリンクするように以下をusb_cam/CMakeLists.txtに追加する。
set(avcodec_LIBRARIES /usr/local/lib/libavcodec.so.57)を追加する。
> vi src/usb_cam/CMakeLists.txt ... find_package(PkgConfig REQUIRED) pkg_check_modules(avcodec libavcodec REQUIRED) pkg_check_modules(swscale libswscale REQUIRED) set(avcodec_LIBRARIES /usr/local/lib/libavcodec.so.57) ... > catkin_make ... [ 80%] Built target usb_cam Linking CXX executable /home/hachiya/catkin_ws/devel/lib/usb_cam/usb_cam_node [100%] Built target usb_cam_node
これで、エラーがでずにmakeが完了した。
次に、roscoreを立ち上げてから、rosrunでusb_cam_nodeを実行してみる。
> roscore
> rosparam set /usb_cam/pixel_format yuyv > rosrun usb_cam usb_cam_node
> rostopic list /rosout /rosout_agg /usb_cam/camera_info /usb_cam/image_raw /usb_cam/image_raw/compressed /usb_cam/image_raw/compressed/parameter_descriptions /usb_cam/image_raw/compressed/parameter_updates /usb_cam/image_raw/compressedDepth /usb_cam/image_raw/compressedDepth/parameter_descriptions /usb_cam/image_raw/compressedDepth/parameter_updates /usb_cam/image_raw/theora /usb_cam/image_raw/theora/parameter_descriptions /usb_cam/image_raw/theora/parameter_updates
次に、rvizを起動し、「Add」をクリックし、「By Topic」から「Image Raw」を選択する。
> rosrun rviz rviz