目录

前言

1  安装ubuntu18.04.6

1.1 问题

①安装成功ubuntu后会出现窗口界面不适配,以及Ubuntu和windows之间无法复制粘贴问题

②swapon: /swapfile:读交换区头失败

2 cmake 及编译基本环境安装

3 安装Eigen 3.2.10

4 安装Pangolin 0.5

5 安装OpenCV 3.4.7

5.1 问题

①报错:fatal error: Eigen/Core: 没有那个文件或目录

6 运行ORB_SLAM2

6.1 问题

①报错:c++: internal compiler error: 已杀死 (program cc1plus)

② error: ‘usleep’ was not declared in this scope

7 安装运行高翔博士的稠密建图ORBSLAM2_with_pointcloud_ map版本

7.1 问题

①报错:error: no matching function for call to ‘g2o::SE2::setRotation (Eigen::Rotation2D::Scalar

②error: static assertion failed: YOU_MIXED_DIFFERENT_NUMERIC_ TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY

③error: static assertion failed: FLOATING_POINT_ARGUMENT_PASSED__ INTEGER_WAS_EXPECTED’ is not a member of ‘Eigen::internal::static_asse

④Could not find a configuration file for package "OpenCV" that is compatible with requested version "2.4.3"

⑤Could not find a package configuration file provided by "Qt5X11Extras" with any of the following names:

⑥Could not find a package configuration file provided by "Qt5UiPlugin" with a

⑦error while loading shared libraries: libvtkgl2ps-7.1.so.1: cannot open shared object file: No such file or directory

⑧double free or corruption (out) 已放弃 (核心已转储)

8 总结

参考博客


前言

ORB_SLAM2算法虽然经典,但是环境部署却非常麻烦,我使用虚拟机安装的Ubuntu20.04版本吃了很多亏,最终跑通了ORB_SLAM2,也解决了所有ORB_SLAM2稠密建图版本的编译报错,但最终倒在了运行稠密建图ORBSLAM2_with_pointcloud版本时的段错误上。段错误,不了解代码很难解决(网上说的解决办法都试得差不多了),我呢太菜,又想先看看跑起来的效果,于是没办法只能重装系统,用Ubuntu18.04尝试一下,力保所有的库和包和相关教程一致。但是,我感觉配环境不是一次就能成功的,所以做个记录,下次配环境时,会快一些,也给大家做个参考。

悲惨,跑到最后还是有段错误,最终更换Eigen版本为3.2.10才成功,其实github上的issue早有提示要装eigen3.2.10的,只是我一直痴迷于网上的博客,导致眼花缭乱。其他ubuntu版本遇到段错误的,可以试试替换eigen版本为3.2.10

1  安装ubuntu18.04.6

ubuntu镜像源(下载时网页显示可能有问题,下载速度很快但是不显示):Index of /ubuntu-releases/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

这一部分,基本上没什么问题,按照网络上的教程一步一步来,保证网络畅通就行。过程注意以下几点。

①为了便捷的获得中文支持,建议选择自定义安装

        硬盘空间给大一些(建议50G以上,我设了80G),后面需要设置交换空间,以及安装各种库和软件包

③网络选择NAT模式

④安装过程,保持网络畅通,不要点击skip跳过,系统会崩(不要问我为什么会知道的。。)

⑤换源(解决问题中的①后可以复制粘贴了再换,不然挺麻烦的),网上源很多,建议都试试,找一个最快的,我测的在我这最快的是中科大的源

sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup #备份sudo gedit /etc/apt/sources.list #打开之后,复制镜像源

deb https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse

sudo apt-get update #查看更新快不快,有没有报错,有的话,再换镜像源

⑥增大swap交换空间,网上教程很多,但总是差点少点的。。。

(1)先进入根目录,然后关闭所有的交换空间

cd / #进入根目录
sudo swapoff -a

(2)增加8G16G交换空间 (8G编译稠密建图版崩了)

sudo dd if=/dev/zero of=/swapfile bs=1G count=16

(3)设置/swapfile权限

sudo chmod 600 /swapfile

(4)格式化交换空间

sudo mkswap /swapfile

(5)激活交换空间就完成了

sudo swapon /swapfile

(6)查看交换空间大小

free -h

1.1 问题

①安装成功ubuntu后会出现窗口界面不适配,以及Ubuntu和windows之间无法复制粘贴问题

解决办法:终端输入以下命令,下载vm-tool解决

sudo apt-get update #不更新软件列表,无法下载软件sudo apt-get install open-vm-tools -ysudo apt-get install open-vm-tools-desktop -ysudo reboot #重启

②swapon: /swapfile:读交换区头失败

解决办法:先格式化/swapfile,再激活/swapfile就可以了

sudo mkswap /swapfile #格式化
sudo swapon /swapfile #激活

2 cmake 及编译基本环境安装

①安装gcc g++

sudo apt-get install gcc g++

②安装cmake,下载源码安装太麻烦了,我选择的是命令行安装,虽然有点旧,但是适合ORB_SLAM2算法相关包的编译

sudo apt-get install cmake

3 安装Eigen 3.2.10

错误示范:

①安装Eigen,网上教程说要源码安装3.1~3.2的,但我在ubuntu20版试过,更换版本不能解决段错误问题,所以省事,直接命令行安装了

②设置软链接

跑到最后,发现还是有段错误,还是要源码安装3.2.10版本的才行。

 正确示范:

下载地址:  Eigen

①下载解压之后进入源码文件夹

mkdir build
cd build
cmake..
sudo make install
sudo cp -r /usr/local/include/eigen3 /usr/include

②查看当前版本

pkg-config --modversion eigen3

4 安装Pangolin 0.5

源码地址:https://github.com/stevenlovegrove/Pangolin/releases/tag/v0.5

①安装依赖项

sudo apt-get install libglew-dev libpython2.7-dev

②终端进入源码文件夹,然后老一套

mkdir build
cd build
cmake ..
make -j4
sudo make install

5 安装OpenCV 3.4.7

源码地址:https://github.com/opencv/opencv 选择低版本,会少很多错误

①安装依赖项

sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff5-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev libxvidcore-dev libx264-dev libatlas-base-dev gfortran

②终端进入源码文件夹,安装opencv

mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
sudo make -j4
sudo make install

③(1)配置环境,修改配置文件

sudo gedit /etc/ld.so.conf.d/opencv.conf

(2)可能是个空文件,不过不用管,在里面填入 /usr/local/lib就行

/usr/local/lib

(3)执行ldconfig,更新配置

sudo ldconfig 

④(1)配置bash

sudo gedit /etc/bash.bashrc

(2)在文件内容最后添加下面语句,保存再退出

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

(3)更新bash

source /etc/bash.bashrc

⑤进入opencv-3.4.7/samples/cpp/example_cmake,编译例程测试,得到hello opencv则安装成功

cmake .
make
./opencv_example

5.1 问题

①报错:fatal error: Eigen/Core: 没有那个文件或目录

解决办法:安装eigen,若已安装,则设置软链接

sudo ln -s /usr/include/eigen3/Eigen /usr/include/Eigen

6 运行ORB_SLAM2

源码地址:可以直接git clone下载GitHub - raulmur/ORB_SLAM2: Real-Time SLAM for Monocular, Stereo and RGB-D Cameras, with Loop Detection and Relocalization Capabilities

①终端进入源码文件夹,查看build.sh 是否可执行权限,我比较粗暴直接777全部权限都给了

chmod 777 ./build.sh

②执行build.sh,安装ORB_SLAM2相关依赖,并生成可执行文件mono_tum等(感慨一下之前环境不匹配,这一步贼多错误,现在就只有一个usleep的小问题了)

./build.sh

③运行TUM的f1_xyz数据集,轻松搞定

TUM数据集:Computer Vision Group - Dataset Download

KITTI数据集:The KITTI Vision Benchmark Suite

EuRoC数据集:kmavvisualinertialdatasets – ASL Datasets

./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM1.yaml data/rgbd_dataset_freiburg1_xyz/

6.1 问题

①报错:c++: internal compiler error: 已杀死 (program cc1plus)

解决办法:运行内存不足需要增大交换空间,具体步骤查看本文1中的⑥:增大swap交换空间。

② error: ‘usleep’ was not declared in this scope

解决办法:在出错程序的头文件中加入#include <unistd.h>即可,一个一个加吧,只有这个办法(但是不知道为啥,我只在system.h添加了,然后所有报错都没了)

#include <unistd.h>

7 安装运行高翔博士的稠密建图ORBSLAM2_with_pointcloud_ map版本

源码地址:GitHub - gaoxiang12/ORBSLAM2_with_pointcloud_map ,建议git

这一步是最难的一步,在Ubuntu20上折腾了很久,主要是有段错误,非常难受。改进的算法多了稠密建图,所以需要使用点云库PCL,和他配套的VTK可视化工具,这个版本的选择众说纷纭,有的说用最新的,有的说用老的1.7,1.8。最终还是选择了PCL1.8.1,第一遍试了命令行安装,但好像是版本太低,导致编译死机于是在网上查了一下,PCL1.8.1对应VTK版本为7.1.1,只能源码安装VTK了

①安装VTK7.1.1

下载地址:https://www.vtk.org/files/release/7.1/VTK-7.1.1.zip

(1)安装相关依赖

sudo apt-get install git build-essential linux-libc-dev cmake cmake-gui libusb-1.0-0-dev libusb-dev libudev-dev mpi-default-dev openmpi-bin openmpi-common libflann1.9 libflann-dev libeigen3-dev libboost-all-dev libvtk6.3-qt libvtk6.3 libvtk6-dev libqhull* libgtest-dev freeglut3-dev pkg-config libxmu-dev libxi-dev mono-complete openjdk-8-jdk openjdk-8-jre libx11-dev libxext-dev libxtst-dev libxrender-dev libxmu-dev libxmuu-dev

(2)安装qt5 及其相关工具(你懂的,我还是喜欢命令行安装,不出问题绝不回头)

sudo apt-get install qt5-default qtcreator qttools5-dev libqt5x11extras5-dev

(3)进入VTK源码文件夹,编译VTK

mkdir build && cd build
cmake ..
cmake-gui      ###操作见下面文字及图片###
make -j4
sudo make install

选择build文件夹路径,然后勾选“VTK_GROUP_QT”,点击左下角Configure,报错erro。在报错位置输入“VTK_QT_VERSION” = 5,再点击Configure,Generate,出现Configuring done,
Generating done就可以了

(4)配置环境变量(源码安装弊端要添加环境变量)

#sudo gedit /home/用户名/.bashrc
#简便方法,用~代替
sudo gedit ~/.bashrc
#添加下面的内容
#export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
#更新.bashrc
source ~/.bashrc#添加环境变量
sudo sh -c "echo '/usr/lib/x86_64-linux-gnu' >> /etc/ld.so.conf"
#更新
sudo sh -c "ldconfig"

②安装PCL

源码地址:https://github.com/PointCloudLibrary/pcl,选择1.8.1的tag下载

(1)安装相关依赖,我把PCL的依赖和VTK融合了,源码安装了VTK这一步就不用进行了·

sudo apt-get install git build-essential linux-libc-dev cmake cmake-gui libusb-1.0-0-dev libusb-dev libudev-dev mpi-default-dev openmpi-bin openmpi-common libflann1.9 libflann-dev libeigen3-dev libboost-all-dev libvtk6.3-qt libvtk6.3 libvtk6-dev libqhull* libgtest-dev freeglut3-dev pkg-config libxmu-dev libxi-dev mono-complete openjdk-8-jdk openjdk-8-jre libx11-dev libxext-dev libxtst-dev libxrender-dev libxmu-dev libxmuu-dev

(2)终端进入PCL源码文件夹,编译安装

mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_PREFIX=/usr \ -DBUILD_GPU=ON-DBUILD_apps=ON -DBUILD_examples=ON \ -DCMAKE_INSTALL_PREFIX=/usr ..
make -j4
sudo make install

(3)安装openni可视化库依赖

sudo apt-get install libopenni-dev
sudo apt-get install libopenni2-dev

(4)随便找个地方新建文件夹,在文件夹内创建main.cc和CMakeLists.txt,进行cmake编译测试

main.cc

#include <iostream>
#include <pcl/common/common_headers.h>
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/console/parse.h>int main(int argc, char **argv) {std::cout << "Test PCL !!!" << std::endl;pcl::PointCloud<pcl::PointXYZRGB>::Ptr point_cloud_ptr (new pcl::PointCloud<pcl::PointXYZRGB>);uint8_t r(255), g(15), b(15);for (float z(-1.0); z <= 1.0; z += 0.05){for (float angle(0.0); angle <= 360.0; angle += 5.0){pcl::PointXYZRGB point;point.x = 0.5 * cosf (pcl::deg2rad(angle));point.y = sinf (pcl::deg2rad(angle));point.z = z;uint32_t rgb = (static_cast<uint32_t>(r) << 16 |static_cast<uint32_t>(g) << 8 | static_cast<uint32_t>(b));point.rgb = *reinterpret_cast<float*>(&rgb);point_cloud_ptr->points.push_back (point);}if (z < 0.0){r -= 12;g += 12;}else{g -= 12;b += 12;}}point_cloud_ptr->width = (int) point_cloud_ptr->points.size ();point_cloud_ptr->height = 1;pcl::visualization::CloudViewer viewer ("test");viewer.showCloud(point_cloud_ptr);while (!viewer.wasStopped()){ };return 0;
}

CMakeLists.txt

cmake_minimum_required(VERSION 2.6)
project(pcl_test)find_package(PCL 1.2 REQUIRED)include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})add_executable(pcl_test main.cc)target_link_libraries (pcl_test ${PCL_LIBRARIES})install(TARGETS pcl_test RUNTIME DESTINATION bin)

文件夹内输入./pcl_test ,出现如下窗口则pcl安装成功

./pcl_test 

② 编译g2o_with_orbslam2

为了不增加文章篇幅,所以请读者查看问题①②③依次修改9(也可直接编译,等报错显示之后在修改)(狗头表情)

然后还是老一套

mkdir build
cmake ..
make -j4
sudo make install

③编译ORB_SLAM2_modified

(1)进入ORB_SLAM2_modified文件夹,给build.sh可执行权限

chmod 777 build.sh

(2)修改CmakeLists.txt

#将      12行,13行中的-march=native删掉,33行换掉opencv版本
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}  -Wall  -O3   -march=native")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall   -O3   -march=native")find_package(OpenCV 2.3.7 REQUIRED)#改为
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}  -Wall  -O3   -march=native")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall   -O3   -march=native")find_package(OpenCV 3.4.7 REQUIRED)

(3)执行build.sh

./build.sh

④运行ORBSLAM2_with_pointcloud_map

(1)在Exmaple中为生成相应的可执行文件,因为生成点云需要深度,所以需要生成结合rgb和depth的txt文件,associate.py下载地址

#  PATH_TO_SEQUENCE为下载的TUM数据集路径,rgb.txt为数据集自带
python associate.py PATH_TO_SEQUENCE/rgb.txt PATH_TO_SEQUENCE/depth.txt > associations.txt

(2)复制字典,高翔博士的Vocabulary没有ORBvoc.txt,需要复制一下ORB_SLAM2当中的

(3)运行程序

# PATH_TO_SEQUENCE_FOLDER 为数据集路径,我的为data/rgbd_dataset_freiburg1_xyz/
# ASSOCIATIONS_FILE为associate.py生成的txt文件路径
./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUMX.yaml PATH_TO_SEQUENCE_FOLDER ASSOCIATIONS_FILE

(4)完结撒花

⑤保存点云

(1)修改ORB_SLAM2_modified/pointcloudmapping.cc文件:
                  添加头文件#include <pcl/io/pcd_io.h>
                  在文件126行void PointCloudMapping::viewer()中,while(1)结束后后追加两行代码

pcl::io::savePCDFile("result.pcd", *globalMap);
cout << "Final result saved." << endl;

(2)重新编译ORB_SLAM2_modified,再运行就会生成result.pcd

(3)终端输入命令查看点云文件

pcl_viewer result.pcd 

7.1 问题

①报错:error: no matching function for call to ‘g2o::SE2::setRotation (Eigen::Rotation2D<double>::Scalar

解决办法:修改 g2o_with_orbslam2/g2o/types/slam2d/edge_se2_pointxy_bearing.cpp,51行

将
t.setRotation(t.rotation().angle()+_measurement);
改为
t.setRotation((Eigen::Rotation2Dd)(t.rotation().angle()+_measurement));

②error: static assertion failed: YOU_MIXED_DIFFERENT_NUMERIC_ TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY

解决办法:修改 g2o_with_orbslam2/g2o/solvers/linear_solver_eigen.h,54行

将
typedef Eigen::PermutationMatrix<Eigen::Dynamic, Eigen::Dynamic, SparseMatrix::Index> PermutationMatrix;
改为
typedef Eigen::PermutationMatrix<Eigen::Dynamic, Eigen::Dynamic, int> PermutationMatrix;

③error: static assertion failed: FLOATING_POINT_ARGUMENT_PASSED__ INTEGER_WAS_EXPECTED’ is not a member of ‘Eigen::internal::static_asse

解决办法:修改g2o_with_orbslam2/g2o/solvers/linear_solver_eigen.h,80行

将
VectorXd probLimits(MO_NUM_ELEMS);for (int i = 0; i < probLimits.size(); ++i)probLimits[i] = (i + 1) / (double) MO_NUM_ELEMS;
改为
VectorXd probLimits;probLimits.resize(MO_NUM_ELEMS);for (int i = 0; i < probLimits.size(); ++i)probLimits[i] = (i + 1) / (double) MO_NUM_ELEMS;

④Could not find a configuration file for package "OpenCV" that is compatible with requested version "2.4.3"

解决办法:修改CmakeLists.txt中的find_package(OpenCV 2.4.3 REQUIRED),为自己的版本

⑤Could not find a package configuration file provided by "Qt5X11Extras" with any of the following names:

解决办法:sudo apt install libqt5x11extras5-dev

⑥Could not find a package configuration file provided by "Qt5UiPlugin" with a

解决办法:sudo apt-get install qttools5-dev

⑦error while loading shared libraries: libvtkgl2ps-7.1.so.1: cannot open shared object file: No such file or directory

解决办法:源码安装问题多,需要自己添加到环境变量里去

⑧double free or corruption (out) 已放弃 (核心已转储)

解决办法:更换eigen版本为3.2.1

8 总结

兜兜转转,总算跑起来了,段错误一生之敌,还是得学会如何使用编译工具查看段错误的位置才行。后面的话,深入学习了ROS,再尝试使用ROS来跑ORB_SLAM2。

参考博客

orb_slam从零开始保姆级环境安装配置教程 - 量子与太极 - 博客园

Ubuntu18.04更改国内镜像源(阿里云、网易、清华、中科大)_花好约猿上王者的博客-CSDN博客_ubuntu国内镜像源

一文搞定Ubuntu编译安装OpenCV(附网盘链接)_小鹏聊智驾的博客-CSDN博客

ubuntu 下pcl1.8的安装与测试_magic_ll的博客-CSDN博客_ubuntu安装pcl1.8

https://www.jianshu.com/p/548234bb88fc

Eigen3卸载与重装_憨憨2号的博客-CSDN博客_eigen卸载

ubuntu从零到一跑通ORB_SLAM2及其ORBSLAM2_with_pointcloud稠密建图相关推荐

  1. ORB_SLAM2+realsense运行稠密建图

    具体的环境及其细节:Ubuntu18.04 realsenseD435i ROS orbslam2_echo_gou的博客-CSDN博客 下载代码:https://github.com/gaoxian ...

  2. ORB_SLAM2新增稠密建图代码笔记

    接上一篇博客"ORB_SLAM2+kinect稠密建图实战项目总结" ORB_SLAM2+kinect稠密建图实战项目总结_好好仔仔的博客-CSDN博客 本篇在此基础上对整个项目的 ...

  3. ORB_SLAM2稠密建图(ORBSLAM2_with_pointcloud_map),并保存地图

    本文基于高翔博士的ORB_SLAM2稠密建图代码改进,并且添加了稠密地图保存功能. 本文的代码已上传github,可用以下代码下载: git clone https://github.com/FAST ...

  4. 虚拟机ubuntu主机板子三者ping通

    最好先看看文章:https://blog.csdn.net/weixin_55255438/article/details/123452225?spm=1001.2014.3001.5502 1主机 ...

  5. Ros noetic opencv4.2.0 cv_bridge 冲突 适配Opencv3.2.0完成自己的USB_Camera 跑通 Orb_slam2

    前言: 本文附上使用自己的USB_Cam 跑通Orb_Slam2 算法的过程,以及解决cv_bridge冲突的方案 Orb_Slam2 需要opencv3.2.0 的cv版本 但是ubantu20.0 ...

  6. 范磊C++视频教程(零起点学通c++)

    C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计.C++擅长面向对象程序设计的同时,还可以 ...

  7. Ubuntu 18.04 安装博通(Broadcom)无线网卡驱动

    目录 Ubuntu 18.04 安装博通(Broadcom)无线网卡驱动 Package gcc is not configured yet. 解决办法 history history | grep ...

  8. SLAM导航机器人零基础实战系列:(六)SLAM建图与自主避障导航——2.google-cartographer机器人SLAM建图...

    SLAM导航机器人零基础实战系列:(六)SLAM建图与自主避障导航--2.google-cartographer机器人SLAM建图 摘要 通过前面的基础学习,本章进入最为激动的机器人自主导航的学习.在 ...

  9. SLAM导航机器人零基础实战系列:(六)SLAM建图与自主避障导航——1.在机器人上使用传感器...

    SLAM导航机器人零基础实战系列:(六)SLAM建图与自主避障导航--1.在机器人上使用传感器 摘要 通过前面的基础学习,本章进入最为激动的机器人自主导航的学习.在前面的学习铺垫后,终于迎来了最大乐趣 ...

最新文章

  1. 压缩 20M 文件从 30 秒到 1 秒的优化过程!
  2. json string 格式_自己动手实现一个简单的JSON解析器
  3. MySQL免安装版安装
  4. (23)FPGA面试技能提升篇(SSC接口、V35接口)
  5. 【CCS】CCS全局搜索
  6. Kali Linux 无线渗透测试入门指南 翻译完成!
  7. IIS发布网站遇到的异常
  8. 锐起无盘服务器改dns,锐起无盘多配置教程-菜鸟版(老鸟飘过)
  9. 【JavaWeb】SSH安装及验证
  10. win7用html做背景,怎么美化和自定义Win7鼠标右键菜单背景?
  11. Warning from https://repo.packagist.org: Support for Composer 1 is deprecate
  12. SPADE(GauGAN)代码运行方法
  13. prometheus-容器健康状况监控
  14. RDS数据库申请外网地址
  15. 喜报 |联诚发led球形屏成功入围“深圳企业创新纪录”
  16. 最好用的鼠标手势软件:MacStroke for Mac
  17. LAYUI表格自动渲染
  18. matlab蠓虫分类问题,蠓的分类问题.doc
  19. 避免我们的邮件服务器发出的邮件被当成垃圾邮件
  20. Java-Email

热门文章

  1. ACA云原生3阿里云容器产品体系
  2. c++程序设计报告总结
  3. 单作用叶片泵的结构与工作原理
  4. Android - 手机实现振动
  5. 利用matlab的interp1()对矩阵进行插值
  6. Spring @Scheduled定时任务的fixedRate,fixedDelay,cron的作用和不同
  7. 数据库建表-- 一对多/多对一/一对一/多对多 关系
  8. 为什么要学网络安全?如何学习网络安全?这3个理由告诉你(自己整理的50G网安资料)
  9. AUTOSAR的一般开发流程(单个ECU)
  10. shell脚本-字符串和变量