Skimap_ros 利用RGBD创建Octomap(一)

摘要:
usp=drive_Web)演示数据2.5运行$source./devel/setup。bash$roslaunchskimap_ rosskimap_直播。启动$rosbagplay_酒吧。bag-path根据authortracker给出的步骤运行slamdunk。发射总是会出错。错误:无法启动chnodeoftype[skiap_ros/slamdunk_tracker]:无法定位包[skiap_ros]中的[slamdunk_tracker]认为Cmakelist有问题,并发现作者只写了:add_executabletarget_link_librariesad_executabletarget_link_Libraries没有slamdunk_tracker。添加了Cpp,所以我添加了add_ executabletarget_ link_ librariesadd_ Dependencies,但在catkin_制作时,总会出现feature2d错误。因为作者使用sift,所以opencv应该安装在opencv_Contrib模块中。3&ORB_SLAM2结合Skip可以重建仅包含姿态数据、RGB和深度图的八叉树图。因此ORB可以将SLAM中的位置取出并转换为

1. 奥比中光astra RGBD相机安装

1.1 安装依赖
$ sudo apt-get install build-essential freeglut3 freeglut3-dev

1.2 检查udev版本,需要libudev.so.1,如果没有则添加

#check udev version, Orbbec Driver need libudev.so.1, if can't find it, can make symbolic link from libudev.so.x.x,
#which usually locate in /lib/x86_64-linux-gnu or /lib/i386-linux-gnu
$ ldconfig -p | grep libudev.so.1
$ cd /lib/x86_64-linux-gnu
$ sudo ln -s libudev.so.x.x.x libudev.so.1

1.3 下载 OpenNI
$ wget http://www.orbbec3d.net/Tools_SDK_OpenNI/2-Linux.zip

1.4 选择解压 OpenNI-Linux-x64-2.3
$ unzip OpenNI-Linux-x64-2.3.zip
$ cd OpenNI-Linux-x64-2.2    

1.5 安装
$ sudo chmod a+x install.sh
$ sudo ./install.sh

1.6 重插设备

1.7 加入环境
$ source OpenNIDevEnvironment

1.8 编译例子
$ cd Samples/SimpleViewer
$ make
1.9 连接设备,执行例子
$ cd Bin/x64-Release
$ ./SimpleViewer 

$ cd Bin/x64-Release
$ ./SimpleViewer 
无没有问题,则显示正常视图
1.10 安装ROS包
安装astra_camera和astra_launch(indigo 可以根据系统不同替换成kinetic等)
$ sudo apt-get install ros-indigo-astra-camera ros-indigo-astra-launch  
测试

1.11 新终端,执行astra_launch
$ roslaunch astra_launch astra.launch  
使用rqt_image_view, 选择对应话题显示图像

1.12 发现rgb并没有正确显示? 需要UVC支持,安装libuvc和libuvc_ros

libuvc和libuvc_ros安装
安装libuvc支持
$ cd ~
$ git clone https://github.com/ktossell/libuvc
$ cd libuvc
$ mkdir build
$ cd build
$ cmake ..
$ make && sudo make install

安装libuvc_ros
$ cd ~/catkin_ws/src
$ git clone https://github.com/ktossell/libuvc_ros
$ cd ..
$ catkin_make 

注意:使用catkin_make,如果报错,注意libusb.h的位置。
使用locate libusb.h,并将其放到合适位置:
$ sudo cp /usr/include/libusb-1.0/libusb.h  /usr/local/include/libuvc/
修改下libuvc.h中include中的路径。

测试
在启动roscore后,使用:
$ rosrun libuvc_camera camera_node
rqt_image_view ,查看rgb

2. skipmap 安装测试

2.1 创建workspace 
找到某个目录下,我这里选择Documents
$ mkdir skimap_ws/src
$ cd skimap_ws/src

2.2 下载
$ git clone https://github.com/m4nh/skimap_ros.git
安装依赖项,opencv,eigen,boost都是比较常见的,OpenMP 大家安装不熟悉
$ sudo apt-get install build-essential
$ sudo apt-get install gfortran
$ cd /tmp
$ wget http://www.mpich.org/static/downloads/1.4.1/mpich2-1.4.1.tar.gz
$ tar xzvf mpich2-1.4.1.tar.gz  
$ cd mpich2-1.4.1/
$ ./configure
$ make
$ sudo make install
查看版本:
$ mpich2version

2.3 编译
$ cd ..
$ catkin_make

2.4 下载[tiago_lar.bag](https://drive.google.com/file/d/0B02158j5inr3Tm9nQjhIQ3Fua3c/view?usp=drive_web) demo数据

2.5 运行
$ source ./devel/setup.bash
$ roslaunch skimap_ros skimap_live.launch
$ rosbag play 你下载的tiago_bar.bag路径

按照作者给的步骤,运行slamdunk_tracker.launch 总是出错,

ERROR: cannot launch node of type [skimap_ros/slamdunk_tracker]: can't locate node [slamdunk_tracker] in package [skimap_ros]

感觉是Cmakelist出了问题,发现作者只写了:

add_executable(skimap_live src/nodes/skimap_live.cpp)
target_link_libraries(skimap_live ${OpenCV_LIBRARIES} ${catkin_LIBRARIES})

add_executable(slamdunk_tracker src/nodes/slamdunk_tracker.cpp)
target_link_libraries(slamdunk_tracker ${OpenCV_LIBRARIES} ${catkin_LIBRARIES})
没有把slamdunk_tracker.cpp加进去,所以我追加了

add_executable(skimap_map_service src/nodes/skimap_map_service.cpp)
target_link_libraries(skimap_map_service ${OpenCV_LIBRARIES} ${catkin_LIBRARIES})
add_dependencies(skimap_map_service skimap_ros_generate_messages_cpp)

但是在catkin_make时,总是出现feature2d方面的错误,因为作者用了sift,所以opencv要装opencv_contrib模块。opencv 和contrib我都安装了3.4.1版本,但是还是出现错误。我以后还会继续解决这个问题。但是这个不影响建图,真正的建图是在skimap_live.cpp里。

Skimap_ros 利用RGBD创建Octomap(一)第1张

3 与ORB_SLAM2 结合

skimap可以只需要位姿数据,以及RGB和深度图就能重建出来八叉树地图。所以可以把ORB_SLAM 里面的pose取出来,转换成tf发布出来,给skimap就可以。

3.1 发布tf
在ORB_SLAM2 的 ros_rgbd.cc 作如下修改

    cv::Mat camera_pose;
    camera_pose= mpSLAM->TrackRGBD(cv_ptrRGB->image,cv_ptrD->image,cv_ptrRGB->header.stamp.toSec());
    
    cv::Mat TWC = camera_pose.inv();  
    cv::Mat RWC= TWC.rowRange(0,3).colRange(0,3);  
    cv::Mat tWC= TWC.rowRange(0,3).col(3);

    tf::Matrix3x3 M(RWC.at<float>(0,0),RWC.at<float>(0,1),RWC.at<float>(0,2),
        RWC.at<float>(1,0),RWC.at<float>(1,1),RWC.at<float>(1,2),
        RWC.at<float>(2,0),RWC.at<float>(2,1),RWC.at<float>(2,2));
    tf::Vector3 V(tWC.at<float>(0), tWC.at<float>(1), tWC.at<float>(2));
    tf::Quaternion q;
    M.getRotation(q);
    q.normalize();

    tf::Transform transform = tf::Transform(M, V);
   //关于应该发布何时的ros::Time,还需要再确认
    broadcaster->sendTransform(tf::StampedTransform(transform,ros::Time::now(),"world","camera"));

不要忘记,增加
#include <tf/transform_broadcaster.h> 以及在CMakeList.txt中增加 find_package(tf)

3.2 运行astra 以及skimap_live
$ roslaunch astra_launch astra.launch
$ roslaunch skimap_ros skimap_live.launch

3.3 运行结果
可能是电脑问题,运行速度比较卡,而且只要跟丢,ORB就挂掉,导致地图也停止创建。里面可能有一些小问题需要解决。可以看到,路面创建的还是比较平坦的,墙面以及障碍物位置都还不错。
Skimap_ros 利用RGBD创建Octomap(一)第2张

免责声明:文章转载自《Skimap_ros 利用RGBD创建Octomap(一)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇WPF中元素拖拽的两个实例sql学习笔记--存储过程下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

如何在Windows下搭建Android开发环境

Android SDK 2.2 开发环境搭建 (1) 安装必备。(以下为Android开发中必备的软件与工具)1.1 安装jdk。Android目前支持以下jdk版本:jdk1.5,jdk1.6如果未安装可以到官方下载:http://www.oracle.com/technetwork/java/javase/downloads/index.html下载...

ROS知识(3)----功能包package编译的两种方式

ROS的包编译有两种方法(我知道的),一种是用rosmake,这种方法简单;另一种是用catkin_make,这种方法更方便包的管理和开发。这两种方法都是先建立工作空间workspace(类似于vs下的解决方案,用来管理很多的项目),然后建立包package(类似于vs下的项目),最后利用rosmake或者catkin_make进行编译和运行。学会第一种方...

ROS入门笔记(二):ROS安装与环境配置及卸载(重点)

ROS入门笔记(二):ROS安装与环境配置及卸载(重点) 1 ROS安装步骤    1.1 ROS版本    1.2 确定Ubuntu版本号     1.3 安装ROS        1.3.1 Ubuntu初始环境配置         1.3.2 ①添加源地址文件sources.list         1.3.3 ②添加密钥(key)        ...

部署ceph存储集群及块设备测试

集群环境 配置基础环境 添加ceph.repo wget -O /etc/yum.repos.d/ceph.repo https://raw.githubusercontent.com/aishangwei/ceph-demo/master/ceph-deploy/ceph.repo yum makecache 配置NTP yum -y install...

转:Linux 编译安装 Mysql5.7

http://broqiang.com/2017/04/18/Mysql-Install-5.7.18-Linux-Compile/ 原文 Linux 编译安装 Mysql5.7 Ubuntu 下快速安装直接 apt 方式即可, 一般的开发环境也足够了 个人比较喜欢新版本,一般有新版本就会尝试一下 此文档适用于 Ubuntu 16.10 和 CentOS...

ROS系统玩转自主移动机器人(5)-- ROS系统建模

注:本篇博文全部源码下载地址为:Git Repo传送门。 1. 下载到本地后解压到当前文件夹然后运行:catkin_make 编译。 2. 源码是在 Ubuntu14.04 + Indigo 环境下编写。   前面博文已经介绍了机器人平台的机械结构设计、嵌入式硬件平台的搭建等内容,从本片开始介绍本开源机器人平台ROS系统的相关程序,主要有: ROS系统建...