ROS 简介
ROS顾名思义,就是机器人操作系统(Robot Operating System)的英文缩写,是用于编写机器人软件程序的一种可自由调配的软件框架,它提供了操作系统应有的服务,包含底层硬件设备控制、大量的工具软件、程式代码和协议等,目的为简化在于各种机器人平台上创建复杂而强大的机器人行为的任务。
基本上可以理解为
ROS = Pluming(通道) + Tools(工具) + Capabilities (行为能力) + Ecosystem (生态系统)
目前发行版本如下列所示
版本名称 |
发布日期 |
版本生命周期 |
操作系统平台 |
ROS Noetic Ninjemys |
2020年5月 |
2025年5月 |
Ubuntu 20.04 |
ROS Melodic Morenia |
2018年5月23日 |
2023年5月 |
Ubuntu 18.04 |
参考网站: http://wiki.ros.org/Distributions
ORB SLAM2简介
这是用于单目、立体和 RGB-D 相机的 ORB-SLAM2 即时执行SLAM资料库的 ROS实现,用于计算相机轨迹,它能够即时检测环路的轨线,并重新定位后生成场景的稀疏三维地图重建结果。
基本结构如下.
- 完整的 ROS 兼容性
- 支持大量开箱即用的相机
- 加快 vocab 文件载入速度
- 完整的地图保存和加载功能
代码的主要结构如下:
- 跟踪 (Tracking)
- 建图 (Local Mapping)
- 闭环检测 (Loop Closing)
- 完整优化 (Full BA/Bundle Adjustment)
三、硬件规格: 选用恩智浦的 i.MX8M Plus 的参考设计板 (i.MX8MP-EVK)
Quad Cortex®-A53 processors operation up to 1.8 GHz
Cortex®-M7 CPU operating up to 800 MHz
375 Mpixel/s HDR ISP supporting configurations
16/32-bit DRAM interfaces:
- LPDDR4-4000
- DDR4-3200
- DDR3L-1600
Neutral Processing Unit (NPU)
LCDIF Display Controller:
Support up to 1080p60 display per LCDIF if no more than 2 instances used
simultaneously, or 1x 1080p60 + 2x 720p60 if all 3 instances used simultaneously.
- One LCDIF drives MIPI DSI
- One LCDIF drives LVDS Tx
- One LCDIF drives HDMI Tx
四、软体建置
- 架设编译环境 Host PC:
安装 Ubuntu 18.04LTS (基于GCC版本差异,建议使用 Ubuntu 18.04LTS),也可以安装到 VMware 虚拟环境来执行编译。
- 下载源代码并编译
repo init -u https://source.codeaurora.org/external/imx/imx-manifest -b imx-linux-zeus -m imx-5.4.70-2.3.0.xml
repo sync
- 下载 MX机器人源代码
git clone https://gitee.com/zxd2021-imx/meta-robot-platform.git
cd meta-robot-platform
git checkout v1.1-L5.4.70-2.3.2
mv meta-robot-platform source/
cp meta-robot-platform/imx/meta-robot/tools/setup-imx-robot.sh .
- 运行脚本并选定所要测试的 ROS 发行版本,以 Melodic Morenia 为例
DISTRO=imx-robot-xwayland MACHINE=imx8mpevk source setup-imx-robot.sh -r melodic -b imx8mp-melodic
- 编译即将执行于MX8MP-EVK 的 ROS
bitbake imx-robot-agv
- 编译完成后,开始执行烧录 Image 到 eMMC,这次演练以透过 UUU 指令为例
sudo ./uuu -b emmc_all imx-boot-imx8mpevk-sd.bin-flash_evk imx-robot-agv-melodic-imx8mpevk.wic
执行到此步骤,已经可以在 恩智浦 i.MX8M Plus 开发板运行 ROS 的环境。
- 建置 SLAM2 库
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
cd ORB_SLAM2
chmod a+x build.sh
./build.sh
- 下载 EuRoC Dataset,此次演练是使用 Machine Hall
https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets
- 执行 ORB_SLAM2 资料库来加载 ROS dataset,并透过 HDMI 输出的显示画面来查看执行结果,需先将 ORB_SLAM2 和 dataset 先透过 USB 来复制到档案系统内
- source /opt/ros/melodic/setup.sh
- echo $LD_LIBRARY_PATH
- mono_euroc Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml mav0/cam0/data Examples/Monocular/EuRoC_TimeStamps/MH01.txt
可以由此图查看到机器人眼中的世界,并透过 ORB SLAM2 执行三维地图构建
测试讯息如下:
i.MX Robot platform distribution 1.0 imx-robot-melodic ttymxc0
imx-robot-melodic login:
ORB-SLAM2 Copyright (C) 2014-2016 Raul Mur-Artal, University of Zaragoza.
This program comes with ABSOLUTELY NO WARRANTY;
This is free software, and you are welcome to redistribute it
under certain conditions. See LICENSE.txt.
Input sensor was set to: Monocular
Loading ORB Vocabulary. This could take a while...
Vocabulary loaded!
Camera Parameters:
- fx: 458.654
- fy: 457.296
- cx: 367.215
- cy: 248.375
- k1: -0.283408
- k2: 0.0739591
- p1: 0.00019359
- p2: 1.76187e-05
- fps: 20
- color order: RGB (ignored if grayscale)
ORB Extractor Parameters:
- Number of Features: 1000
- Scale Levels: 8
- Scale Factor: 1.2
- Initial Fast Threshold: 20
- Minimum Fast Threshold: 7
-------
Start processing sequence ...
Images in the sequence: 3682
Error: Wayland: Focusing a window requires user interaction
GL_VERSION : OpenGL ES 3.1 V6.4.3.p1.305572
GL_RENDERER : Vivante GC7000UL
New Map created with 86 points
Wrong initialization, reseting...
System Reseting
Reseting Local Mapper... done
Reseting Loop Closing... done
Reseting Database... done
New Map created with 109 points
►场景应用图
►展示板照片
►方案方块图
►核心技术优势
1. 处理器最高可达1.8GHz 2. 嵌入式系统 3. AI人工智能数据分析 4. 边缘计算应用程序。
►方案规格
1. 处理器: 四核Cortex-A53 1.8GHz 2. 记忆体: 6GB LPDDR4 3. 储存装置: 32 GB eMMC 5.1; 32 MB QSPI NOR 4. 显示界面: LVDS x1; MIPI-DSI x1; HDMI 2.0a x1 5. 相机界面: 2x MIPI-CSI; USB 3.0x1 6. 网路界面: 2x1GbE