当前位置:   article > 正文

D435i相机首次开发与踩坑记录_[aiqtool][docaptureyuv]:failed to ioctl(vidioc_s_f

[aiqtool][docaptureyuv]:failed to ioctl(vidioc_s_fmt)

D435i相机首次开发与踩坑记录

介绍

配置完D435i相机的开发环境后开始尝试研究官方例程,试着运行一些demo初入intel相机。
开始的时候也是很头疼,不知道如何下手,看了众多博客后稍微有了一些眉目,最后在官网上找到了一些简单的例程。官方链接
因此开始尝试写几个简单代码,首先测试的是官方例程rs-hello-realsense。但是令人头疼的就是编译问题和运行问题,这个问题卡了三天左右。本以为写了程序编译一下然后运行测试一下就没问题了结果还是一个个问题接踵而至

问题一:编译不通过

主要是工作空间下的cmakelist文件内容有问题,参考了众多博客最后弄清楚了开发intel相机所需要的cmakelist书写内容。先附上我的cmakelist文件内容如下:

cmake_minimum_required(VERSION 3.0.2) #cmake要求最低版本
project(realsense_dev)                 #项目名

## Compile as C++11, supported in ROS Kinetic and newer
#add_compile_options(-std=c++11)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)   #要求C++11

find_library(librealsense REQUIRED)            #寻找librealsense库

find_package(catkin REQUIRED COMPONENTS  #依赖包
  geometry_msgs
  roscpp
  rospy
  std_msgs
)
find_package(realsense2 REQUIRED)           #realsense依赖包
find_package(OpenCV REQUIRED)             #opencv依赖包

catkin_package(
#  INCLUDE_DIRS include
#  LIBRARIES realsense_dev
   CATKIN_DEPENDS geometry_msgs roscpp rospy std_msgs
#  DEPENDS system_lib
)


include_directories(
# include
  ${catkin_INCLUDE_DIRS}
)

#include_directories( /home/catkin_ws/src/realsense-ros/realsense2_camera/include)


add_executable(hello_realsense src/hello_realsense.cpp)
target_link_libraries(hello_realsense ${catkin_LIBRARIES})
target_link_libraries(hello_realsense ${librealsense_LIBRARY})   #文件链接librealsense2动态库
#target_include_directories(hello_realsense PRIVATE ${librealsense_INCLUDE_DIR})
target_link_libraries(hello_realsense "/usr/local/lib/librealsense2.so")   #我的librealsense2.so的文件路径

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

编译不通过主要存在的问题就显示各种函数未引用,主要是因为没有链接到librealsense的动态库,后来通过执行whereis librealsense2.so命令,查找到了我的电脑下的librealsense.so动态库的位置。是位于/usr/local/lib/librealsense2.so因此,在cmakelist文件的最后一行加入了路径之后编译就没有问题了。
关于librealsense使用方法及一些问题可以参考这篇博文
重要内容截图如下:
在这里插入图片描述

问题二:编译通过后,但是程序无法运行

报错信息:抛出 ‘rs2::backend_error’ 实例后调用终止
what(): xioctl(VIDIOC_S_FMT) failed Last Error: Device or resource busy

解决方案:查看了这种帖子都没有找到解决方案,内心委屈的一批,终于功夫不负有心人在这篇文档里找到了解决方案。看到解决方案后自己都笑了,自己真的是太蠢了,主要是因为自己在运行程序的时候开着realsense2_camera rs_camera.launch 话题,因此设备信息被占用,后来把该指令关闭之后程序成功运行,并且成功读取图像中心点的深度值。和官网的视频显示的是相同的内容。

接下来终于可以开始深入intel D435i相机的开发了!!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/85498
推荐阅读
相关标签
  

闽ICP备14008679号