/Sensor-Fusion-for-Localization-Courseware

Multi-sensor fusion for localization courseware, 深蓝学院, China

Primary LanguageC++

Multi-Sensor Fusion for Localization & Mapping -- 多传感器融合定位与建图

深蓝学院多传感器融合定位与建图/Multi-Sensor Fusion for Localization & Mapping学习环境.

Maintained by Ge Yao, alexgecontrol@qq.com


先修课程与准备知识检查

我在学习这门课程时,已经完成如下深蓝学院课程的学习:

且有多年的机器人系统开发经验, 熟悉以下的基础理论, 开发语言/框架/工具:


Before You Start...

在开始前, 请自行通过百度, 或者我推荐的Coursera参考课程, 自行学习, 熟悉以下工具的基本概念与操作. 否则你可能连这篇文档都读得稀里糊涂

  1. git
  2. GitHub
  3. MarkDown语法与README.md的书写
  4. VSCode使用

当且仅当你完成上述基本工具的学习后,再继续阅读,否则你可能连这篇文档都读得稀里糊涂


Docker Env - Up & Running

WARNING - About Environment

若您坚持在Native Ubuntu上进行开发, 此处将默认您有足够的定位&建图开发环境运维经验, 能够自定义开发环境, 并且自主解决由于环境依赖冲突导致的各种问题. 课程的重点在多传感融合定位算法, 并非基于Docker的环境搭建. 如果感兴趣, 请根据以下提示, 自行学习.本框架只确保Docker环境的开箱即用, 不提供任何本地环境配置冲突解决的帮助.

  • 确保熟悉Docker与Docker-Compose的开发使用
  • 根据Dockerfile Click Here自行准备开发环境
  • 熟悉其中的各个依赖库, 有能力在出现依赖问题时, 自行搜索, 查询相关资料, 修复依赖冲突

WARNING - On This Guide

请您务必按照本指南, 一步一步操作, 当且仅当您在对本环境足够熟悉的情况下,再自由发挥

Overview

本Repo为基于ROS melodic @ Ubuntu 18.04多传感器融合定位与建图/Multi-Sensor Fusion for Localization & Mapping学习环境.

定位与建图是一个复杂的工程. 每一个解决方案, 都有较为复杂的环境依赖. 然而:

  • 部分依赖项由于网络原因(Great Fire Wall & Server IP Block)难以直接获得

  • 由于课程依赖项的版本, 与本地现有依赖项的版本, 可能有所不同, 直接冒然安装, 可能会导致本地开发环境被破坏

故: 本课程的学习环境将以Docker Image的形式提供, 以实现与Native PC环境的隔离.

  • 本项目Native PC的操作系统选择Ubuntu. Windows与Mac不推荐使用, 若有意尝试, 请自行搜索相关解决方案.

安装Ubuntu

首先请确保您可以访问Ubuntu开发环境. 如果没有Ubuntu环境, 请按照点击链接进入指南, 在本地PC上安装配置Ubuntu环境.


针对国内同学 将Ubuntu APT源换为阿里云源

为了保证本地Native环境APT安装速度, 请根据This CSDN Post, 将Ubuntu上默认的APT源切换为阿里云源.


Fetch This Git Repo.

感谢第5期同学的分享 如果在国内, 因DNS污染等原因, 导致GitHub访问受限, 可以通过GitHub Proxy代理进行加速

# 1. direct clone:
git clone https://github.com/AlexGeControl/Sensor-Fusion-for-Localization-Courseware
# 2. use GitHub proxy for acceleration:
git clone https://ghproxy.com/https://github.com/AlexGeControl/Sensor-Fusion-for-Localization-Courseware

获取Docker开发环境

本课程推荐使用配套的Docker环境点击链接进入完成课程学习. Docker提供了一个轻量级的标准化开发环境, 能够避免本地已有环境的差异导致的奇怪问题, 避免环境配置调试的巨额时间浪费.


JFYI: Dependency Overview


Workspace

当Native PC与Course Docker Environment均准备就绪时, 即可开始使用本开发环境:

  • 第一次使用时, 请首先下载课程配套的KITTI测试数据here.

  • 之后, 即可通过本地VSCode开发, Docker内部编译测试的模式, 完成课程作业.

获取课程数据

在第一次使用时, 需要将课程配套的修复后KITTI数据下载至本地文件系统. 具体操作方法参考点击链接进入

安装Native Ubuntu IDE

本课程推荐使用VSCode进行开发. 请按照链接,完成VSCode的安装. 安装VSCode之后,请继续安装以下VSCode Plug-Ins:

  • C/C++ by Microsoft, 用于完成作业时加速C++开发.

  • Markdown All in One by Yu Zhang, 用于在VSCode中查看课程中所有的README.md, (Shift+Ctrl+V).

开发, 编译与测试

启动Docker环境后, Docker中的/workspace目录, 会被映射到当前Repo中的workspace目录.

使用该Workspace进行开发, 编译与测试的方法如下:

  • 当前Repo的workspace下, 启动VSCode, 编辑源代码:

Development Environment, Native VS Code in Mounting Point


Assignments

请各位执行如下的分支切换指令, 完成各周对应的作业.

Week 02, Lidar Odometry, Basic

git checkout 02-lidar-odometry-basic

Week 03, Lidar Odometry, Advanced

git checkout 03-lidar-odometry-advanced

Week 04, Mapping and Matching

git checkout 04-mapping-and-matching

Week 05, IMU Calibration

git checkout 05-imu-calib

Week 06, IMU Navigation

git checkout 06-imu-navigation

Week 07, Filtering, Basic

git checkout 07-filtering-basic

Week 08, Filtering Advanced

git checkout 08-filtering-advanced

Week 09, Graph Optimization

git checkout 09-graph-optimization

Week 10, Sliding Window

git checkout 10-sliding-window

Week 11, Capstone - Do It Own Your Own!


Keep Learning & Keep Coding

Ge Yao, alexgecontrol@qq.com