天天看點

Intel RealSense Camera 學習 之一 “Hello RealSense”

今年4月份在深圳的IDF上見過intel realsense demo,覺得很酷,也覺得可能是一種新的互動方式,而且google 也推出了Tango Project,Apple也宣稱AR會是它接下來的重點,種種表明這都會是接下來的一個熱點方向哈。而手上恰好有一個Intel RealSense 攝像頭,型号是R200,是以想利用起來好好學習下,Android做久了,也需要一個新的東西來刺激下自己的學習新的東西了。

初步的想法是先把realsense的東西整熟悉,然後跟OpenCV結合起來,看看能做些什麼有意思的東西。Let’s go go go….

第一步,把環境搭好,Intel 已經提供了RealSense Camera 在Linux上的運作環境,詳情見:

https://github.com/IntelRealSense/librealsense
           

Intel 在這裡已經将怎麼在Ubuntu下搭建RealSense開發環境寫得很清楚了

https://github.com/IntelRealSense/librealsense/blob/master/readme.md
           

照着步驟,就能把環境搭好,我這邊出了點問題,後來是直接自己編譯了一個ubuntu-xenial的kernel安裝進自己在自己的筆記本上,現在一直使用的就是這個kernel.另外還需要注意的是librealsense 對realsense camera firmware 的版本是有要求的:

RealSense R200 (Firmware 1.0.72.06 and up)
     RealSense F200 (Firmware 2.60.0.0 and up)
     RealSense SR300 (Firmware 3.10.10.0 and up)
     RealSense LR200 (Firmware 2.0.71.18 and up)
     RealSense ZR300
        Camera Firmware 2.0.71.18 and up
        USB Adapter Board Firmware 1.27.0.0 and up
        Motion Module Firmware 1.23.0.0 and up
           

如果發現你手上的realsense跑不起來或者老是出錯,建議先更新下camera的firmware版本,但是比較不幸的是你需要在另外的一台windows 10的機器上去做更新,隻能從intel官網上下載下傳驅動安裝包。而且隻有windows的環境。

2,第二步,我們開始寫自己的測試程式啦。我們先來寫一個簡單的指令行程式提取camera的相關資訊吧。

首先建立一個新目錄:

mkdir example-leon
           

再來寫一個CMakeList.txt,主要都可以參考examples中的CMakeList.txt,稍微加一點自己的東西即可:

INCLUDE_DIRECTORIES(
    /usr/local/include/librealsense/
    )
link_directories(  
          /usr/local/lib 
     )
add_executable(realsense_example realsense_example.cpp)
target_link_libraries(realsense_example ${DEPENDENCIES})
           

寫個簡單的測試程式:

/
 //realsense_example.cpp
 // create by leon at 2016.12.02
 /

 // First include the librealsense C++ header file
 #include <librealsense/rs.hpp>
 #include <cstdio>

 int main() try
{
// Create a context object. This object owns the handles to all connected realsense devices.
rs::context ctx;
printf("There are %d connected RealSense devices.\n", ctx.get_device_count());
if(ctx.get_device_count() == 0) return EXIT_FAILURE;

// This tutorial will access only a single device, but it is trivial to extend to multiple devices
rs::device * dev = ctx.get_device(0);
printf("\nUsing device 0, an %s\n", dev->get_name());
printf("    Serial number: %s\n", dev->get_serial());
printf("    Firmware version: %s\n", dev->get_firmware_version());
printf("    RS Camera device name: %s\n ",dev->get_info(rs::camera_info::device_name));

printf("    RS Camera device serial number: %s\n ",dev->get_info(rs::camera_info::serial_number));
printf("    RS Camera device fw version: %s\n ",dev->get_info(rs::camera_info::camera_firmware_version));
//   printf("    RS Camera device adapter board fw : %s\n           ",dev->get_info(rs::camera_info::adapter_board_firmware_version));
//   printf("    RS Camera device motion fw: %s\n ",dev->get_info(rs::camera_info::motion_module_firmware_version));
printf("    RS Camera device camera type: %s\n ",dev->get_info(rs::camera_info::camera_type));
printf("    RS Camera device ODM ID: %s\n ",dev->get_info(rs::camera_info::oem_id));
printf("    RS Camera device ISP fw: %s\n ",dev->get_info(rs::camera_info::isp_fw_version));
printf("    RS Camera device content fw: %s\n ",dev->get_info(rs::camera_info::content_version));
printf("    RS Camera device module fw: %s\n ",dev->get_info(rs::camera_info::module_version));
printf("    RS Camera device image module number: %s\n ",dev->get_info(rs::camera_info::imager_model_number));
//    printf("    RS Camera device built date: %s\n ",dev->get_info(rs::camera_info::build_date));

return EXIT_SUCCESS;
}
catch(const rs::error & e)
{
// Method calls against librealsense objects may throw exceptions of type rs::error
printf("rs::error was thrown when calling %s(%s):\n", e.get_failed_function().c_str(), e.get_failed_args().c_str());
printf("    %s\n", e.what());
return EXIT_FAILURE;
}
           

運作結果如下:

Using device 0, an Intel RealSense R200
Serial number: 2131008505
Firmware version: 1.0.72.10
RS Camera device name: Intel RealSense R200
 RS Camera device serial number: 2131008505
 RS Camera device fw version: 1.0.72.10
 RS Camera device camera type: Non-PRQ type (255)
 RS Camera device ODM ID: OEM None
 RS Camera device ISP fw: 0x0
 RS Camera device content fw: 10
 RS Camera device module fw: 4.2.3.2
 RS Camera device image module number: 31
           

在ubuntu 平台上第一個realsense程式算是寫好啦。