GPS 可以为无人机提供较为准确的位置信息,但是某些时候可能会没有 GPS 信号,或者 GPS 信号不够稳定;比如说桥下,室内以及高楼林立的城市内。那么为了能够允许无人机在这些环境中飞行,我们需要提供其它位置估计手段,比如说SLAM。SLAM使用摄像头作为其主要传感器,传感器可以是单目摄像头,双目摄像头以及RGBD深度摄像头。这几种摄像头有着其对应的优缺点;比如说单目摄像头虽然价格低,体积小,但是它需要其它传感器的辅助,否则无法计算环境深度,也就没有办法为SLAM提供尺度信息;双目摄像头可以通过三角测量提供景深,但是计算量较大,并且需要良好标定;RGBD深度相机可以主动测距,但是对于环境较为敏感,测量距离受限,噪声较大,同时对于阳光以及玻璃等环境下无法正常工作。
usb_cam-test.launch中添加一句话,将话题由usb_cam/image_raw改为camera/image_raw
ROS_NAMESPACE=/camera/right rosrun image_proc image_proc image_raw:=image_raw
问题描述:安装ORB_SLAM2时编译“./build_ros.sh”时出现上述报错。
libboost_system.so: error adding symbols: DSO missing from command line
解决办法:在Examples/ROS/ORB_SLAM2/Cmakelist.txt 的文件后面加入两句话:
target_link_libraries(Stereo boost_system boost_filesystem)
target_link_libraries(RGBD boost_system boost_filesystem)
ORB-SLAM2算法流程清晰、代码简洁易读,包含了常见SLAM系统的所有模块:跟踪(Tracking)、局部建图(LocalMapping)、闭环检测(Loop closing);同时支持单目、双目(标定后)、RGB-D方式,即使对于剧烈运动也有很好的鲁棒性,是基于特征点的SLAM系统的经典算法,十分值得学习和借鉴。但是同样有一些局限之处:
1.无法用于导航和避障
ORB-SLAM2算法基于特征点法,构建的地图是稀疏的三维点云,而想要用于导航和避障任务,则需要重建稠密地图才行,因此ORB-SLAM2主要应用于定位和稀疏重建,而无法应用于导航和避障场景。
2.无法保存和加载地图
ORB_SLAM2源码中没有提供保存和加载地图功能,定位和建图也只能实时在线运行,即使是重定位也是在线的,无法离线保存、加载地图。
显示不了topic报frame 、transform之类错误,就有两个办法,
1.把global fixed frame设成topic自己所在的坐标系,按照上图的显示,应该改为tramcar;
2.用tf包工具发布global fixed frame到topic所在坐标系的tf关系,例如:
rosrun tf static_transform_publisher 0.0 0.0 0.0 0.0 0.0 0.0 map /camera_link 100 ;//将xxx映射为map
rostopic echo /aruco_single/pose
发布2D导航坐标点:(只能设置 xy z的坐标是默认高度2.5)
rostopic pub /move_base_simple/goal geometry_msgs/PoseStamped ‘{header: {stamp: now, frame_id: “map”}, pose: {position: {x: 1.0, y: 0.0, z: 0.0}, orientation: {w: 1.0}}}’
rosrun ORB_SLAM2 Mono /home/sch/ros_ws/src/ORB_SLAM2/Vocabulary/ORBvoc.txt /home/sch/ros_ws/src/ORB_SLAM2/Examples/Monocular/TUM1.yaml
编译报错解决方案 error: ‘make_unique’ is not a member of ‘g2o’
运行魔改的GAAS的SLAM
1.opencv需要3.4.5
2.g2o需要最新版本
3.相机格式需要使用灰度图L8
$ urdf_to_graphiz mobot.urdf 以图形的方式可视化模型结构
$ roslaunch gazebo_ros empty_world.launch 构建一个空的gazebo仿真环境
$ rosrun teleop_twist_keyboard teleop_twist_keyboard.py键盘控制(通过订阅Twist消息类型)
$ rosrun camera_calibration cameracalibrator.py --size 7x6 --square 0.01 right:=/stereo_camera/right/image_raw left:=/stereo_camera/left/image_raw right_camera:=/stereo_camera/right left_camera:=/stereo_camera/left --fix-principal-point --fix-aspect-ratio --zero-tangent-dist立体相机标定工具
1.更新gcc到5.0
添加软件源
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install gcc-5 g+±5
gcc5更新链接
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 53
–slave /usr/bin/g++ g++ /usr/bin/g+±5
–slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-5
–slave /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-5
–slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-5
查看版本
gcc -v
2.安装openGL
安装OpenGL Library
$ sudo apt-get install libgl1-mesa-dev
安装OpenGL Utilities
OpenGL Utilities 是一组建构于 OpenGL Library 之上的工具组,提供许多很方便的函式,使 OpenGL 更强大且更容易使用。
$ sudo apt-get install libglu1-mesa-dev
安装OpenGL Utility Toolkit
OpenGL Utility Toolkit 是建立在 OpenGL Utilities 上面的工具箱,除了强化了 OpenGL Utilities 的不足之外,也增加了 OpenGL 对于视窗介面支援。
$ sudo apt-get install libglut-dev
注意:但是在这一步时,我出现了以下情况:
Reading package lists… Done
Building dependency tree
Reading state information… Done
E: Unable to locate package libglut-dev
修改:(改成以下命令)
$ sudo apt-get install freeglut3-dev
3.eigen3.2安装
1)在INSTALL文件所在的文件路径新建一个文件夹如build
2)进入build
3)cmake …
4)make
5)sudo make install
3.orbslam2安装依赖oangolin时 选择0.4版本
4.安装opencv3.2
mkdir relase,
cd relas
第六步:cmake
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local …
第七步:编译并安装
make
sudo make install
第八步:在/etc/ld.so.conf中添加 安装在/usr/local/的opencv动态链接库
sudo vim /etc/ld.so.conf
直接写:/usr/local/lib
第九步:设置头文件全局有效
sudo vim /etc/profile
添加:
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
5.编译orbslam2 ros时,先export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/wnw/Projects/ORB_SLAM2-master/Examples/ROS
6.安装Kinect V1 驱动
sudo apt-get install libfreenect-dev
sudo apt-get install ros-indigo-freenect-launch
可以通过 roslaunch freenect_launch freenect.launch 验证kinect驱动是否安装成功;
rostopic list查看ORB-SLAM2需要的两个topic: /camera/rgb/image_raw /camera/depth_registered/image_raw
7.orbslam2 ros配置launch文件
5. 配置launch文件
在解压后的ORB-SLAM2的根目录下新建文件kinect_orbslam2.launch , 其内容为(根据需要,红色字体改为对应的路径,其他的无需修改):
运行ORB-SLAM2
cd ORB-SLAM2
./build.sh
roslaunch kinect_orbslam2.launch
6.修改usb_cam-text.launch
7.安装libfreenect时,需要更新cmake到3.X版本
#增加ppa源 sudo add-apt-repository ppa:george-edison55/cmake-3.x #更新源 sudo apt-get update #安装 sudo apt-get install cmake #删除添加的源 sudo add-apt-repository --remove ppa:george-edison55/cmake-3.x sudo apr-get update
8.安装NVIDIA驱动
alt+ctrl+F1 sudo init3
sudo service lightdm stop
sudo sh ./N…
9.安装cartographer
Install wstool and rosdep
$sudo apt-get update
$sudo apt-get install -y python-wstool python-rosdep ninja-build
$mkdir catkin_ws
$cd catkin_ws wstool
$init src
$wstool merge -t src https://raw.githubusercontent.com/googlecartographer/cartographer_ros/master/cartographer_ros.rosinstall
$wstool update -t src
$rosdep init rosdep update
{ROS_DISTRO} -y
which protoc 找到上个版本的执行文件protoc地址然后到那里用 sudo apt-get install autoconf automake libtool curl make g++ unzip
$./autogen.sh
$ ./configure
$ make
$ make check
$ sudo make install
$ sudo ldconfig # refresh shared library cache.
检查protobuf版本: $ protoc --version
10.安装tensorflow1.8
更新pip
$sudo pip install tensorflow-gpu==1.8 -i https://pypi.tuna.tsinghua.edu.cn/simple
sudo pip3 install tf-nightly-gpu
$sudo pip install tensorflow-gpu
11.安装caffe
需要英伟达显卡+cuda8+cudnn6
安装cudnn时 记得加权限 $sudo chmod a+r /usr/local/cuda-8.0/include/cudnn.h /usr/local/cuda-8.0/lib64/libcudnn*
12.Ubuntu编译找不到eigen3的解决方法
在主文件夹下直接查找FindEigen3.cmake文件,然后把它复制到报错的CMakeLists.txt对应的路径下,在CMakeLists.txt中添加
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
include_directories($ {EIGEN3_INCLUDE_DIRS})
然后重新编译就好.
更换无人机模型连接不上qgc:更新SDF中mavlink的插件
来源:CSDN
作者:国服露娜
链接:https://blog.csdn.net/Sunchanghaosch/article/details/103617784