ubuntu18.04安装ros melodic_ubuntu opengl

ubuntu18.04安装ros melodic_ubuntu opengl软硬件(1)软件:装有ROS_melodic的Ubuntu18.04系统(2)硬件:台式机和kinectV1摄像头下载安装以及遇到的问题主要参考:https://blog.csdn.net/qq_29828623/article/details/60765043#PrepareWorkspacesource/opt/ros/melodic/setup.bashmkdir-p~…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

软硬件

(1)软件:装有ROS_melodic的Ubuntu18.04系统
(2)硬件:台式机和kinectV1摄像头

下载、安装、运行以及遇到的问题

主要参考:https://blog.csdn.net/qq_29828623/article/details/60765043
https://blog.csdn.net/zhuoyueljl/article/details/78536996?reload

建立ROS工作空间、下载rgbdslam_v2、安装

注意:如果是ros其他的版本可以把melodic改成对应的版本

#Prepare Workspace
source /opt/ros/melodic/setup.bash 
mkdir -p ~/rgbdslam_catkin_ws/src
cd ~/rgbdslam_catkin_ws/src
catkin_init_workspace
cd ~/rgbdslam_catkin_ws/
catkin_make
source devel/setup.bash

#Get RGBDSLAM
cd ~/rgbdslam_catkin_ws/src
wget -q http://github.com/felixendres/rgbdslam_v2/archive/indigo.zip
unzip -q indigo.zip
cd ~/rgbdslam_catkin_ws/

#Install
rosdep update
rosdep install rgbdslam
catkin_make 

遇到的问题及解决方案

catkin_make时遇到的一些问题以及解决方案:


1. opencv版本问题,我一开始使用的是opencv4.1.0 
 (目前,这样修改可以编译通过,但是之后还会遇到一些问题,最后我是链接了opencv3.2.0才成功运行的)
 
openni_listener.cpp   ->     需要修改drawKeypoints()最后一个参数5为cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS
cv::drawKeypoints(visualization_img_, new_node->feature_locations_2d_, kp_img, cv::Scalar(0,255,0), cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS);

graph_mgr_io.cpp ->	需要修改drawKeypoints()最后一个参数
cv::drawKeypoints(canvas, newernode->feature_locations_2d_, canvas, cv::Scalar(255), cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS);

2. g2o版本问题,graph_manager.cpp 和 transformation_estimation.cpp会出现问题
需要使用作者提供的g2o库(当然用自己下载的g2o库也可以,得修改相关代码)

3. misc.cpp ->  需要修改804行内联函数round()的函数名,我改成了ROUND(),880和881行函数调用也要一起修改

4. feature_adjuster.cpp  ->  ORB::create需要修改倒数第三个参数0为ORB::HARRIS_SCORE
detector = ORB::create(10000, 1.2, 8, 15, 0, 2, ORB::HARRIS_SCORE, 31, static_cast<int>(thresh_));

提前说明:以上的问题修改花了我大半天的时间,运行后出现了“required process[rgbdslam-1] has died”…Iinitiating down问题。开始以为是第二个链接的博客中所说的g2o与pcl冲突问题,花了大半天时间卸载并安装g2o与pcl-1.8,结果还是出现了这个问题。这次,仔细的看了下发现有程序运行终止是由于cv::Exception。删除了build和delve文件夹后,重新catkin_make,发现虽然编译成功了,但是最后会出现下图所示的警告,大概意思应该是opencv版本不是3.2.0导致的。(一开始把4.1.0改成了3.4.7还是不行,只能下载3.2.0了)
opencv_conflict于是,还是老老实实的用作者提供的g2o库pcl-1.8,以及opencv3.2.0opencv_contrib-3.2.0。果然,上面四个问题中只出现了第3个问题,最后也能成功运行了(~自己测试的结果,并不代表所有人)

g2o和pcl-1.8的安装参考上面链接的第二个博客。

安装opencv3.2.0时遇到的问题及解决方案:

opencv的编译:CMAKE_INSTALL_PREFIX是选择安装的目录,当需要管理多个版本时,安装在指定位置。如图下图所示,这里选择安装在ros的工作空间目录下,sudo make install后会出现bin, include, lib, share文件夹。值得注意的是,opencv的cmake文件在share/OpenCV文件夹下,这是rgbdslam_v2的CMakeLists文件需要设置的OpenCV_DIR。
Project_tree

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=~/rgbdslam_catkin_ws -D OPENCV_EXTRA_MODULES_PATH=~/rgbdslam_catkin_ws/install_lib/opencv_contrib-3.2.0/modules -DENABLE_PRECOMPILED_HEADERS=OFF ..

另一个参数OPENCV_EXTRA_MODULES_PATH是设置opencv附加模块的路径,即opencv_contrib-3.2.0中的modules文件夹。-DENABLE_PRECOMPILED_HEADERS=OFF加上可以解决/usr/include/c++/7/cstdlib:75:15: fatal error: stdlib.h: No such file or directory问题。
出现ICV: Downloading ippicv_linux_20151201downloading protobuf-cpp-3.1下载超时的问题,下载这两个包,然后放到指定位置。
ippicv_linux_20151201下载地址
protobuf-cpp-3.1下载地址
两个压缩包分别放到opencv-3.1.0/3rdparty/ippicv/downloads/linuxopencv_contrib-3.2.0/modules/dnn/.download/bd5e3eed635a8d32e2b99658633815ef/v3.1.0下。(注意,如果是在图形界面操作,.download文件需要显示隐藏文件夹才能看到)

g2o版本的管理:

由于要用到新版本的g2o,因此不得不删除了旧版本,重新安装了新版本。再运行rgbd-slam-v2的时候,就出现了如下图错误,可以知道是g2o出了问题。
ubuntu18.04安装ros melodic_ubuntu opengl
那么问题又来了,要么改源代码,要么管理新旧g2o版本。旧版本的g2o可以像上面的OpenCV一样选择安装目录,此处选择安装在~/rgbdslam_catkin_ws,g2o的G2OConfig.cmake文件在~/rgbdslam_catkin_ws/lib/g2o中。然后设置G2O_DIR,CMakeLists文件中的g2o相关代码如下。
在这里插入图片描述
此处有坑: 如下图所示,作者设置了在项目下的cmake-modules文件夹中寻找.cmake文件,因此优先在这个文件夹中有FindG2O.cmake文件(被坑了好久,所以猜测这个优先级高于set()语法),需要删除这个文件,才能自己设置的G2O_DIR才生效。
在这里插入图片描述

再次编译、运行rgbdslam_v2

接下来终于可以再次编译rgbdslam_v2了,在重新catkin_make之前,rgbdslam_v2的CMakeLists文件需要设置的OpenCV_DIR,加下下面的设置代码(主要是寻找opencv的cmake文件的路径,可以根据自己的情况设置):

set(OpenCV_DIR ~/rgbdslam_catkin_ws/share/OpenCV)

set_opencv_dir
同时,将CMakeLists中第6行的设置改成

set(USE_SIFT_GPU  0 CACHE BOOL "build with support for siftgpu") 

准备开始运行

  1. 打开一个终端输入
roscore
  1. 打开第二个终端输入
roslaunch openni_launch openni.launch device_id:=#2

执行上面脚本可能会遇到primesense_Warning: USB events thread - failed to set priority. This might cause loss of data...,可以在运行openni_launch前先运行sudo -s参见此处

  1. 打开第三个终端输入
source ~/rgbdslam_catkin_ws/devel/setup.bash
roslaunch rgbdslam rgbdslam.launch

安装:openni + ros接口

sudo apt-get install ros-melodic-openni-camera ros-melodic-openni-launch

更详细的内容,参见此处此处

运行过程中遇到的问题以及解决方案

错误提示

[camera/camera_nodelet_manager-1] process has died [pid 5531, exit code -11, cmd /opt/ros/melodic/lib/nodelet/nodelet manager __name:=camera_nodelet_manager __log:=/home/xshen/.ros/log/5dfeecc6-ea97-11e9-8369-049226d630de/camera-camera_nodelet_manager-1.log].
log file: /home/xshen/.ros/log/5dfeecc6-ea97-11e9-8369-049226d630de/camera-camera_nodelet_manager-1*.log

解决
Now it is necessary to specify the device number to connect to. In my case:
roslaunch openni_launch openni.launch device_id:=#2
(就是在最后加上device_id)

错误提示

DRM_IOCTL_I915_GEM_APERTURE failed: Invalid argument

解决

sudo apt-get remove beignet
sudo apt purge beignet
sudo apt-get remove beignet-opencl-icd
sudo apt purge beignet-opencl-icd

错误提示

[ERROR] Failed to contact master at [localhost:11311]. Retrying...
[ERROR] [1446531999.044935824]: [registerPublisher] Failed to contact master at [localhost:11311]. Retrying...

解决
请检查 roscore 是否正常打开。每次进行运行测试时都要首先运行 roscore。

终于终于,成功运行结果如下(本人已哭~~)

rgbdslam_v2_run

在数据集上测试

下载链接:http://vision.in.tum.de/data/datasets/rgbd-dataset/download#freiburg1_xyz
需要下载ROS.bag格式的数据。

准备开始运行(拔掉kinect数据线)

  1. 打开一个终端输入
roscore
  1. 打开第二个终端输入
source ~/rgbdslam_catkin_ws/devel/setup.bash
roslaunch rgbdslam rgbdslam.launch
  1. 打开第三个终端(进入到.bag文件所在目录)输入
rosbag play rgbd_dataset_freiburg1_xyz.bag (自己的数据集名字)

在RGBDSLAM的GUI界面上按空格键(没有显示的话,就多按几下),运行结果如下
Data_Set_result

错误提示

Warning: TF_OLD_DATA ignoring data from the past for frame kinect at time 1.30503e+09 according to authority unknown_publisher

解决

需要将 rgbdslam.launch 文件中
<param name="config/topic_image_depth"             value="/camera/depth_registered/sw_registered/image_rect_raw"/>
改为
<param name="config/topic_image_depth"             value="/camera/depth/image "/>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/192363.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • SSRF漏洞详解 一文了解SSRF漏洞

    SSRF漏洞详解 一文了解SSRF漏洞本篇总结归纳SSRF漏洞

  • 虚拟机iso镜像文件在哪_虚拟机系统镜像下载

    虚拟机iso镜像文件在哪_虚拟机系统镜像下载虚拟机windowsxpsp3原版原版的镜像:http://www.7xdown.com/Download.asp?ID=3319&amp;URL=http://d5.7xdown.com/soft2/&amp;file=WindowsXP-SP3-VOLMSDN.rar,直接复制进迅雷下载就可以。序列号:MRX3F-47B9T-2487J-KWKMF-RPWBY,激活密钥:MRX3F-4…

  • java策略模式例子(一个完整的java程序示例)

    以一个顾客价格计算策略为背景,写一个策略模式的demo参考代码:https://github.com/zhang-xiaoxiang/DesignPatterns23没有用策略模式我们一般是下面的写法,直接写一个类,在类里面直接写策略算法(功能实现)//packagecom.demo.strategy;/***NoStrategy:没有策略的做法*实现起来比较容…

  • rammap使用_查看内存的命令

    rammap使用_查看内存的命令参考TechnetProcessPrivate:分配给单一Process专用的内存MappedFile:用来储放档案内容快取(Cache)的内存空间SharedMemory:标注给多个Process共用的内存分页(Page,内存管理单位)PageTable:用来描述虚拟内存位址的分页表(裡面是一笔一笔的PTE,PageTableEntries)PagedPool…

    2022年10月23日
  • 卡内基-沟通的艺术

    卡内基-沟通的艺术

  • C语言qsort函数用法

    C语言qsort函数用法qsort函数简介   排序方法有很多种:选择排序,冒泡排序,归并排序,快速排序等。看名字都知道快速排序是目前公认的一种比较好的排序算法。因为他速度很快,所以系统也在库里实现这个算法,便于我们的使用。这就是qsort函数(全称quicksort)。它是ANSIC标准中提供的,其声明在stdlib.h文件中,是根据二分法写的,其时间复杂度为n*log(n)  功能:

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号