Ubuntu14.04+ROS+OpenCV+KinectV2

KinectV2+Ubuntu 14.04+Ros 安装教程 - hitcm - 博客园

视觉SLAM实战(二):ORB-SLAM2 with Kinect2 - 半闲居士 - 博客园

刚跟着高博的书学到点云,本想跟着课后练习,学习一下在ROS系统中Kinect2的标定的,谁知安装配置ROS时,可能是因为之前安装运行了OpenCV3和ROS自带的2.4.8不兼容带来的各种问题,现打算卸载重装,由于问题还未解决,所以就暂时把处理的有些过程粘贴如下,待处理完毕再做梳理:

1.安装ROS


ROS大致每年发布一个版本,目前正在维护的ROS版本包括indigojadekinetic,一些早期版本现在已经停止维护。ROS依赖于Linux内核,因此每当Ubuntu版本发生变化,ROS不同版本的依赖也会出现相应的变化。

ROS被称为机器人操作系统,其实ROS充当的是通信中间件的角色,即在已有操作系统的基础上搭建了一整套针对机器人系统的实现框架。

值得一提的是,ROS的设计者考虑到各开发者使用的开发语言不同,因此ROS的开发语言独立,支持C++python等多种开发语言。ROS还提供一组实用工具和软件库,用于维护、构建、编写和执行可用于多个计算平台的软件代码。

ROS的系统结构设计也颇有特色,ROS运行时是由多个松耦合的进程组成,每个进程ROS称之为节点(Node),所有节点可以运行在一个处理器上,也可以分布式运行在多个处理器上。在实际使用时,这种松耦合的结构设计可以让开发者根据机器人所需功能灵活添加各个功能模块。

例如,在一个支持SLAM功能的移动机器人中,激光数据采集和里程数据获取分别由两个node实现,用于感知环境;SLAM算法运行在另一个node中,用于处理传感器数据,绘制地图;SLAM节点和数据采集节点之间采用topics方式通信。当新增一个摄像头模块时,仅需在现有结构里增加一个新的视频节点,让其与SLAM节点采用topics方式通信即可,另外两个功能节点不需任何改动。


ROS只是一个框架,他很方便,最大的优点是可以在诸多不同的平台之间建立起通信,而如今机器人开发使用ROS已经成为潮流,因为机器人本身就涉及多种不同平台的硬件;可以通过slam技术得到机器人当前的位姿,在通过ROS系统控制机器人移动。slam是眼睛,ROS是肢体。


官方:http://wiki.ros.org/indigo/Installation/Ubuntu

简书:Ubuntu14.04安装和配置ROSIndigo

配置详解:https://www.cnblogs.com/Jessica-jie/p/6520061.html

Q1设置钥匙时出错

gpgkeys:HTTP fetch error 7: couldn't connect: bad URI

gpg:找不到有效的OpenPGP数据。

A1使用这个代替官网密钥$wget http://packages.ros.org/ros.key -O - | sudo apt-key add -


Q2GPG错误:下列签名无法验证【公钥数字要对应!!!】

在添加一个PPA时可能会导致以下GPG错误:下列签名无法验证,这通常发生在终端中运行更新时:W:GPG error: http://repo.mate-desktop.org saucy InRelease: Thefollowing signatures couldn’t be verified because the public key isnot available:NO_PUBKEY6DA746A05F00FA99

A2我们所要做的,就是获取系统中的这个公钥,从信息中获取密钥号。在上述信息中,密钥号为6DA746A05F00FA99。该密钥可通过以下方式使用:

sudoapt-key adv --keyserverkeyserver.ubuntu.com --recv-keys 6DA746A05F00FA99

在添加密钥后,再次运行更新就没有问题了。

参考:https://blog.csdn.net/wche1990/article/details/6759422https://blog.csdn.net/wqhlmark64/article/details/78036563

Q3无法下载的PPA(可能因为过时)

W:无法下载http://ppa.launchpad.NET/fcitx-team/nightly/ubuntu/dists/jessie/main/binary-amd64/Packages404 Not Found

A3决办法:将对应的PPA删除掉即可

https://itsfoss.com/failed-to-download-repository-information-ubuntu-13-04/

Q4:源的问题--问题原因:要装A,依赖B,但是已经安装的软件C也依赖B,但是A依赖的B的版本和C依赖的B的版本不一致,导致了如果要安装B,那么C便不能正常运行了,所以系统报错,组织安装B软件依赖于某一软件旧(新)的版本,可是你却已经安装了新(旧)的。

下列软件包有未满足的依赖关系:ros-indigo-desktop-full: 依赖:ros-indigo-simulators 但是它将不会被安装

E:无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

A4删除掉已安装(错安装的源),重新安装

参考:https://www.cnblogs.com/LeoGodfrey/p/3316834.html

注:源就是软件源的意思,包管理器从软件源下载软件包,并从软件源下载软件更新,相当于软件的下载服务器和更新服务

使用aptitude$ sudo aptitude install 
对比$ sudo apt-get install

aptitudeapt-get一样,是Debian及其衍生系统中功能极其强大的包管理工具。与apt-get不同的是,aptitude在处理依赖问题上更佳一些,例如,aptitude在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干净;

Ubuntu14.04 LTS中添加和删除PPA软件源



2.安装OpenCV


下载 https://opencv.org/opencv-3-1.html

下载时注意下载.tar.gz版本的而不是zip(Windows)版本的,zip解压后进入文件夹安装时可能会提示如下错误

The source directory "/home/junwang/下载" does not appear to contain CMakeLists.txt.
Specify --help for usage, or press the help button on the CMake GUI.

安装

Ubuntu14.04ROS自带opencv2.4.8opencv3.1多版本共存

Ubuntu14.04中opencv2.4.8 和opencv3.1.0共存安装(含使用设置CMakeLists.txt)

ubuntu查看opencv版本pkg-config --modversion opencv


BUG


编译Opencv3.1错误:下载ippicv,解决方案

下载的ippicv,tgz文件直接拷贝进入opencv3.1源码的下面这个目录:

opencv-3.1.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e


由于先安装了3.1.0在ROS中需要2.4导致的问题

(最后仍没有解决,后重装系统,先装了ROS自带的2.4.8后按照上述方法安装3.1解决)

linux下查看opencv安装路径以及版本号

ubuntu下完全卸载opencv3.1.0

基于ubuntu14.04ROSindigo的安装和卸载

ubuntu14.04中安装opencv2.4.8

ubuntu14.04下安装opencv2.4.9

ROS图像和OpenCV图像之间转换(C++

ROS】使用cv_bridge依赖opencv版本的问题

CvBridge是一个ROS库,提供ROSOpenCV之间的接口。CvBridge可以在找到cv_bridge包在vision_opencv堆栈

将里面的cv_bridge包拿出来,放到src中,重新编译(catkin_ws文件夹中)

catkin_make--pkgcv_bridge


自己摸索,发现在/usr/include/下并没有opencv,建立了一个opencv文件夹,在github下下载了对应的indigo版本的cv_bridge,是一个包 

https://github.com/ros-perception/vision_opencv/tree/indigo ), cv_bridge 只是其中一部分,把 cv_bridge 这部分移动到新建立的 opencv 下即可,用到了 sudomv 路径 1 路经 2

/usr/lib/x86_64-linux-gnu/libopencv_videostab.so.2.4.8

没有规则可以创建“/home/junwang/catkin_ws/devel/lib/libkinect2_bridge_nodelet.so”需要的目标“/usr/lib/x86_64-linux-gnu/libopencv_videostab.so.2.4.8”。停止。

类似解答:https://stackoverflow.com/questions/40023058/missing-libopencv-ts-missing-under-arm-linux


MakeErrorat/opt/ros/indigo/share/cv_bridge/cmake/cv_bridgeConfig.cmake:106(message):

Project 'cv_bridge'specifies'/usr/include/opencv' as an include dir,

which is not found. It does neither exist as an absolute directory nor in'/opt/ros/indigo//usr/include/opencv'.Ask the maintainer ..

https://answers.ros.org/question/234483/how-to-link-opencv-to-ros-indigo-catkin-with-cmake-ubuntu-1404/

Finally,I modifiedfile /opt/ros/indigo/share/cv_bridge/cmake/cv_bridgeConfig.cmake

I changed

set(cv_bridge_FOUND_CATKIN_PROJECTTRUE)
if(NOT"include;/usr/include/opencv;/usr/include"STREQUAL"")
set(cv_bridge_INCLUDE_DIRS"")
set(_include_dirs"include;/usr/include/opencv;/usr/include")

to

set(cv_bridge_FOUND_CATKIN_PROJECT TRUE)
if(NOT "include;/usr/local/include/opencv" STREQUAL " ")
  set(cv_bridge_INCLUDE_DIRS "")
  set(_include_dirs "/usr/local/include/opencv;/usr/include;/usr/local/include")

Infact I just changed usr/include to /usr/local/include.This solved my problem.



在Ubuntu中修改只读文档

法一:可以使用chmod命令,为改文件提供其他的权限。

u表示用户、a表示全部、g表示组,r表示可读、w表示可写、x表示可执行,你可以使用 chmod a+w test.c 来添加权限,这是比较方便的直观的方法

法二:Vim编辑器中编辑保存

sudo vim /etc/laptop-mode/laptop-mode.conf

法三:用Ubuntu自带的gedit编辑器,在文档的图形窗口界面编辑完保存就可以了

sudo gedit /etc/laptop-mode/laptop-mode.conf


完成了动态库的共享,还不能使用opencv来编程,还需要为程序指定openvc的头文件位置。

这里使用pkg-config命令来完成。首先/etc/profile中添加

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig  

pkg-config维护着一个关于opencv的配置文件,这个文件(opencv.pc)在目录/usr/local/lib/pkgconfig,这个文件记录着opencv的一些动态库信息,还有头文件信息,输入pkg-config–cflags opencv pkg-config–libs opencv ,可以发现以下信息,正确结果应为:

root@noya-VirtualBox:/usr/local/lib# pkg-config --cflags opencv
-I/usr/local/include/opencv -I/usr/local/include 
root@noya-VirtualBox:/usr/local/lib# pkg-config --libs opencv
/usr/local/lib/libopencv_calib3d.so /usr/local/lib/libopencv_contrib.so /usr/local/lib/libo..........




同样错误,未解决:

https://answers.ros.org/question/52341/building-cv_bridge-with-catkin-fails/

https://answers.ros.org/question/223481/failed-to-process-package-cv_bridge/











猜你喜欢

转载自blog.csdn.net/qq_40313712/article/details/80357658
今日推荐