完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
我这里已安装的基础环境与平台:
嵌入式平台RK3399、系统Ubuntu 16.04 (xubuntu轻量级桌面系统)、架构Arm64、Python2.7.1、OpenCV3.4.0、Eigen3.3.71、安装与配置ROS Kinetic Kame环境 实时SLAM框架需要配合ROS平台使用,需按照Ubuntu版本指定安装对应的ROS版本,最后在ROS工作空间中编译与配置ORB-SLAM2开源框架。这里提供四种指令来查看Ubuntu版本: uname -a cat /proc/version cat /etc/l***-release cat /etc/issue 我这里的系统版本为Xenial (Ubuntu 16.04),可以安装ROS Kinetic。下面进行ROS Kinetic安装与配置: 1.1、配置Ubuntu软件中心 配置Ubuntu要求允许接受”restricted” “universe” 和 “multiverse”的软件源,一般是系统默认设置,可以在Software & Updates 中查看。 1.2、设置sources.list(软件源) 添加ROS官方软件源与设置秘钥,从packages.ros.org接收软件包。执行命令行如下: sudo sh -c 'echo "deb $(l***_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 0xB01FA116 如果上述源无法连接可以添加以下国内的源: sudo sh -c '. /etc/l***-release && echo "deb $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list' 1.3、安装 ROS Kinetic 首先更新Debian包索引,确保系统软件处于最新版,执行命令行:sudo apt-get update ROS Kinetic 含有多种库和工具,也有很多版本,比如工业版,基础版,高级版,豪华版,至尊豪华… 可以依据自己的需求进行个性化安装。我这里安装的是桌面完整版,命令行如下,安装完成后可用后可查看能使用的包: sudo apt-get install ros-kinetic-desktop-full apt-cache search ros-kinetic 之后解决ROS的环境依赖,执行如下命令行: sudo rosdep init rosdep update 1.4、设置环境变量 使用apt-get方式在 Ubuntu上安装 ROS,在使用前需要激活/opt/ros/kinetic/目录下的setup.bash文件来添加 ROS 环境变量,命令如下: echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc source ~/.bashrc #使环境变量设置立即生效 之后安装常用的插件,执行如下命令行: sudo apt-get install python-rosinstall -y 1.5、测试 ROS 启动ROS环境,命令行:roscore 如果显示started core service [/rosout] ,说明 ROS 已经成功安装并配置。 问题记录-01 ------------------------------------------------------------------------------------------------------- ERROR: unable to process source 出现这个错误原因是因为raw.githubusercontent.com网站无法访问。 解决办法是修改hosts文件,添加这个网站的ip地址,执行如下命令行: #打开hosts文件 sudo gedit /etc/hosts #在文件末尾添加 151.101.84.133 raw.githubusercontent.com #保存后退出再尝试 2、安装RealSense D435相机的ROS环境驱动 将Intel RealSense摄像头与ROS配合使用需安装ROS环境下的驱动。2.1、安装Intel® RealSense™ SDK 2.0 首先需要安装librealsense2,OpenCV,相关安装步骤在我上一篇博客中有详细说明与相关问题总结,这里不再赘述。 2.2、安装Intel® RealSense™ ROS 首先使用catkin方式创建自己的ROS工作空间,执行如下命令行: mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src 之后将最新的RealSense-ROS源码下载拷贝至ROS工作空间路径,执行如下命令行: git clone cd realsense-ros/ git checkout `git tag | sort -V | grep -P "^d+.d+.d+" | tail -1` cd .. 检查一下所有的依赖库是否安装。我这里没有安装ddynamic_reconfigure,因此需要将安装包也拷贝至ROS工作空间路径。 最后执行如下命令行完成RealSense-ROS的编译与安装: catkin_init_workspace cd .. catkin_make clean catkin_make -DCATKIN_ENABLE_TESTING=False -DCMAKE_BUILD_TYPE=Release catkin_make install echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc source ~/.bashrc 完成RealSense-ROS的编译与安装后,在终端执行如下命令行启动相机: source devel/setup.bash roslaunch realsense2_camera rs_rgbd.launch 注:要想保证工作空间已配置正确,需确保ROS_PACKAGE_PATH环境变量包含工作空间目录,采用以下命令查看:问题记录-02 ------------------------------------------------------------------------------------------------------- ROS "Could not find the required component 'serial'. " 当执行catkin_make时,出现找不到serial组件的错误。此时需要安装serial。 使用sudo apt-get install ros- sudo apt-get install ros-kinetic-serial 问题记录-03 ------------------------------------------------------------------------------------------------------- 在launch的文件内运行roslaunch rs_rgbd.launch出现错误:ResourceNotFound: realsense2_camera 或运行roslaunch realsense2_camera rs_rgbd.launch时出现错误: [rs_rgbd.launch] is neither a launch file in package [realsense2_camera] nor is [realsense2_camera] a launch file name The traceback for the exception was written to the log file 根本原因是找不到realsense2_camera包,可尝试执行sudo apt-get install ros-kinetic-rgbd-launch,或是因为没有正确配置环境变量路径,可执行source devel/setup.bash 3、ORB-SLAM2环境搭建与相机实测 官方提供了在KITTI数据集,TUM数据集,以及在EuRoC数据集中单目,双目和RGB-D三种接口的SLAM系统示例,同时也提供了使用ROS节点来处理相机实时运行的SLAM示例。3.1、安装基本依赖 sudo apt-get install libglew-dev sudo apt-get install cmake sudo apt-get install libpython2.7-dev sudo apt-get install ffmpeg libavcodec-dev libavutil-dev libavformat-dev libswscale-dev sudo apt-get install libdc1394-22-dev libraw1394-dev sudo apt-get install libjpeg-dev libpng12-dev libtiff5-dev libopenexr-dev 3.2、安装与编译Pangolin: cd ~ git clone cd Pangolin mkdir build cd build cmake .. make -j4 3.3、安装与编译Eigen3: #安装包下载网址: #在该网站中,可以下载任意Eigen版本对应的文件。 cd eigen-3.3.7 mkdir build cmake …/ sudo make install sudo cp -r /usr/local/include/eigen3 /usr/include sudo apt-get install libeigen3-dev 3.4、安装与编译ORB_SLAM2: 注:在执行./build_ros.sh之前,需要在ORB_SLAM2/Examples/ROS/ORB_SLAM2/src/路径下的ros_rgbd.cc文件中修改自己相机的订阅信息,可以执行rostopic list查看ROS发布列表,并执行rosrun rviz rviz测试相机发布的RGB图像与深度图像rostopic分别是什么。执行如下命令行完成ORB_SLAM2的编译与安装过程: cd ~ #下载ORB_SLAM2源码: git clone RB_SLAM2 cd ORB_SLAM2 chmod +x build.sh ./build.sh #添加路径到.bashrc文件: vim ~/.bashrc #增加如下路径到文件最后: export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/media/disk/ORB_SLAM2/Examples/ROS/ #重载环境变量: source ~/.bashrc #编译ROS包: cd ~/ORB_SLAM2/ ./build_ros.sh 编译安装后分别在两个终端执行如下命令行进行ORB_SLAM2的RGBD相机实测: 我这里RGBD相机接入RK3399开发板的USB3.0端口才可以正常工作,跟我上一篇博客提到的运行realsense-viewer时接入USB2.0才没有问题前后矛盾,也是挺奇怪的… source devel/setup.bash roslaunch realsense2_camera rs_rgbd.launch rosrun ORB_SLAM2 RGBD /media/disk/ORB_SLAM2/Vocabulary/ORBvoc.txt /media/disk/ORB_SLAM2/Examples/ROS/ORB_SLAM2/Asus.yaml 问题记录-04 ------------------------------------------------------------------------------------------------------- ORB_SLAM2/src/System.cc: error: ‘usleep’ was not declared in this scope usleep(5000); 错误原因是‘usleep’变量没有定义,解决办法是找到对应的source文件中加入: #include 需要增加unistd.h头文件的文件有: Examples/Monocular/mono_euroc.cc Examples/Monocular/mono_kitti.cc Examples/Monocular/mono_tum.cc Examples/RGB-D/rgbd_tum.cc Examples/Stereo/stereo_euroc.cc Examples/Stereo/stereo_kitti.cc src/LocalMapping.cc src/LoopClosing.cc src/System.cc src/Tracking.cc src/Viewer.cc 需要根据实际情况,错误提示哪个文件有问题,就去这个文件中加头文件。 问题记录-05 ------------------------------------------------------------------------------------------------------- /usr/lib/x86_64-linux-gnu/libboost_system.so: error adding symbols: DSO missing from command line 安装ORB_SLAM2时编译./build_ros.sh时出现上述报错。 错误原因是动态库中存在未解析到的函数,一种可能是因为ld自动递归地解析链接库,当加载A库的时候,一切正常,但是加载B库时ld会自动解析它的静态链接,所以就重复了,导致error adding symbols。解决办法是指定使用的链接库,即把libboost_system添加到链接库中,在Examples/ROS/ORB_SLAM2/Cmakelist.txt 文件后面加入以下两句话,再次编译即可: target_link_libraries(Stereo boost_system boost_filesystem) target_link_libraries(RGBD boost_system boost_filesystem) 问题记录-06 ------------------------------------------------------------------------------------------------------- 我在第一次编译ORB_SLAM2时未修改ORB_SLAM2/Examples/ROS/ORB_SLAM2/src/路径下的ros_rgbd.cc文件,编译后使用RealSense D435相机实测时发现没有图像数据,Current Frame窗口黑屏,但经检查rostopic列表中相机的RGB图像与深度图像有正常数据输出。因此将ros_rgbd.cc文件中的订阅信息修改为自己相机发布的rostopic,重新编译./build_ros.sh后该问题得到解决。 下面是我ros_rgbd.cc文件中所修改的地方: message_filters::Subscriber message_filters::Subscriber 当我重新编译./build_ros.sh时遇到如下错误: Unknown CMake command "ro***uild_init" 其错误原因是因为ROS的当前工作目录没有设置正确,重新在.bashrc文件中设置一下ROS_PACKAGE_PATH路径, 删除build文件夹重新编译一下。之后我又遇到了如下错误: [rospack] Error: could not call python function 'rosdep2.rospack.init_rospack_interface' 通过执行如下命令行更新ROS的依赖,再次编译后问题得以解决: sudo rosdep fix-permissions rosdep update 问题记录-07 ------------------------------------------------------------------------------------------------------- [ERROR] Failed to contact master at [localhost:11311]. Retrying... [ERROR] [1446531999.044935824]: [registerPublisher] Failed to contact master at [localhost:11311]. Retrying... 解决办法是运行roscore,检查是否正常打开。 注:每次进行运行测试时都要首先运行 roscore。 4、VINS-MONO环境搭建与相机实测 4.1、安装依赖项ceres-solver 问题记录-08 ------------------------------------------------------------------------------------------------------- 首先这里需要注意的是,在视觉SLAM十四讲第六章中,按照书中安装的ceres-solver库版本,以及网上大多数教程安装的版本都会和Eigen3(3.3.7)有冲突,我在VINS-MONO编译时发现会报如下错误: /usr/local/include/ceres/internal/integer_sequence_algorithm.h:70:16: error: ‘integer_sequence’ is not a member of ‘std’ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:70:51: error: wrong number of template arguments (4, should be 1) struct SumImpl ^ /usr/local/include/ceres/internal/integer_sequence_algorithm.h:60:8: note: provided for ‘template struct SumImpl; /usr/local/include/ceres/internal/variadic_evaluate.h:74:52: error: ‘ParameterBlockIndices’ was not declared in this scope ParameterBlockIndices()); 这里换成1.14.0版本的ceres-solver问题得以解决。 先删除之前的ceres-solver版本,执行如下命令行: sudo rm -r /usr/local/lib/cmake/Ceres sudo rm -rf /usr/local/include/ceres /usr/local/lib/libceres.a sudo rm -r /usr/local/share/Ceres 之后执行如下命令完成ceres-solver的编译与安装: #下载 wget ceres-solver.org/ceres-solver-1.14.0.tar.gz #解压 tar xvf ceres-solver-1.14.0.tar.gz cd ceres-solver-1.14.0 #创建编译目录 mkdir build #切换到编译目录 cd build #生成Makefile cmake .. #编译 make -j4 make test #安装 sudo make install 4.2、安装与编译VINS-MONO 直接按照如下命令行进行VINS-MONO的安装: mkdir -p vins-mono-catkin_ws/src #新建ROS工作空间,这里我的文件夹命名为vins-mono-catkin_ws cd vins-mono-catkin_ws/src/ git clone cd ../ catkin_make source ~/vins-mono-catkin_ws/devel/setup.bash 至此VINS-MONO已安装完毕,下面在使用RGBD相机实测时发现一些问题: 问题记录-09 ------------------------------------------------------------------------------------------------------- 由于VINS-MONO需要获取惯导IMU数据,我这里外接了一块IMU芯片,但很遗憾的是这块RK3399开发板无法正常识别串口转USB的ttyUSB端口。 要解决这个问题首先需要确认Ubuntu对USB转串口设备的支持,执行命令行:lsmod | grep u***serial 如果有u***serial,说明系统支持USB转串口。我这里没有,因此需要先安装ch340驱动或者cp210驱动。 安装cp210驱动对内核版本有要求,我这里内核版本4.4.52过低无法安装,需要先升级内核版本。但我尝试了很久也没能正确升级,不知道是否跟这块嵌入式板子烧录的非完全Ubuntu版本有关。 问题记录-10 ------------------------------------------------------------------------------------------------------- 之后我也尝试了内置惯导IMU芯片的RealSense D435i相机,奇怪的是这款RGBD相机无法在RK3399平台上进行数据传输,会产生如下提示,怀疑也是端口的驱动问题。 Failed to read busnum/devnum 这里暂时搁置,后面有进展的话会继续更新。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
219 浏览 0 评论
377 浏览 0 评论
从性能到成本,深度剖析 RK3588 与 RK3576 怎么选
418 浏览 0 评论
RK3588 原厂设计资料首次公开(规格书+原理图+设计说明+DDR参考),速抢
1775 浏览 0 评论
1081 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-12 21:21 , Processed in 0.859217 second(s), Total 70, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191