如何在NXP i.MX8MP平台主板上构建ROS ?

2023-10-17 12:40
文章标签 平台 构建 ros nxp 主板 mx8mp

本文主要是介绍如何在NXP i.MX8MP平台主板上构建ROS ?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一.ROS介绍

ROS是一组可以帮助我们建立机器人应用的软体库和实例,ROS版本的发布依托于Ubuntu版本。ROS发行版是一组有版本的ROS包。这些类似于Linux发行版(例如Ubuntu),并主要是在Ubuntu上测试的。因此,它在特定Ubuntu版本做了充足的测试。用户可以在任何基于unix的平台上安装和运行ROS。

用户可能会在集成某些解决方案时可能会出现问题。这些问题通常与兼容性或某些库中缺乏兼容版本有关。确保成功的最佳方法是使用正确的Ubuntu版本,如ROS和ROS2发行版所推荐的,或者使用在硬件供应商提供的特定硬件和产品上经过全面测试的ROS。这两种方法都能确保ROS基础设施平稳运行。

二.研华RSB-3720介绍

RSB-3720硬件介绍:

  • NXP Arm® Cortex®-A53 i.MX8M Plus Quad/Dual,高达1.8 GHz

  • 板载LPDDR4 4 GB / 6 GB, 4000MT/s内存

  • 支持1路HDMI 1920x1080 60Hz, 一个单通道或一个双通道 24 位LVDS (或BOM可选 1个4通道MIPI-DSI)

  • 支持1个4线RS-232/422/485, 1个USB3.2 Gen1 By 1, 1个USB2.0, 1个Micro SD, 1个麦克风输入/输出

  • 一个为3G/4G提供信号的mini-PCIe, 1个M.2 2230 Key E 插槽

  • 支持Yocto Linux 和 Android

研华RSB-3720支持 I/O 扩展板UIO40-Express, UI/O扩展能够满足不同垂直行业的应用。

三.用eMMC或SD卡启动系统

使用RSB-3720引导操作系统有两种方法。第一种是从SD卡引导,第二种是通过eMMC引导。进行ROS开发评估的用户可能会发现,当从构建服务器或PC上刷新固件时,使用SD卡更容易。

Boot Strap

SW1-1

SW1-2

SW1-3

SW1-4

eMMC

OFF

ON

OFF

OFF

SD

ON

ON

OFF

OFF

A. SD 启动

B. eMMC 启动

C. 调试端口连接及测试

RSB-3720调试接口与COM1共用。请先连接调试console线,然后将usb - rs232电缆连接到您的PC终端。连接线缆到COM1引脚头旁边的HDMI连接器。RSB-3720可以通过串口线缆与主机服务器通信。可使用常用的串口通信程序,如HyperTerminal、Tera Term、PuTTY等。请设置波特率为115200。

四.BSP环境设置和构建说明

研华将搭建环境和镜像所需的流程简化为3个步骤:

1. 访问我们的AIM-Linux开发中心,选择基于silicon平台的相关BSP

2. 按照“One Step Build Image”方法下载脚本

3. 将构建映像闪存到SD卡,并从SD卡启动它

这种方法减少了工程师在环境设置期间所需的工作量,并帮助他们解决出现的问题。这个任务只需要用户在云中有一个本地PC或虚拟机——所有其他必要的元素都可以在互联网上找到。用户应该使用功能强大的PC或带有SSD的虚拟机来加快进程。同样,如果用户可以访问Azure VM服务,他们可以通过PC或笔记本电脑,使用存储在本地SD卡上的闪存镜像在云中完成任务。我们将在本教程后面详细说明如何在Linux和Windows上使用这些工具。

主机中的Docker设置

用户可以在Azure Cloud Service或本地构建机中使用Ubuntu系统设置虚拟机。

Docker安装说明
A .在构建机器上准备容器环境。操作系统请选择Ubuntu 18.04。

A-1更新APT包索引并且安装包允许APT通过HTTPS使用存储库:

$sudo apt-get update
$sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release

A-2 加Docker的官方GPC密匙

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

A-3建立稳固的存储库,安装docker引擎。

$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io

B.使用研华制作的docker镜像(源于docerhub)
$ docker pull advrisc/u18.04-imx8lbv1
$ export CONTAINER_NAME=rsb-3720
$ mkdir adv-release-bsp
$ export WORKSPACE=~/adv-release-bsp
$ docker run --privileged -it --name ${CONTAINER_NAME} -v ${WORKSPACE}:/home/adv/adv-release-bsp -v /dev:/dev advrisc/u18.04-imx8lbv1 /bin/bash

五.构建指南

进入docker容器环境外壳时,需要执行以下操作:5.1 准备包括ROS meta layer的BSP

5.1制备BSP,加入ROS元层
# update CA certificates
$ sudo apt-get install apt-transport-https ca-certificates -y
$ sudo update-ca-certificates
$ export GIT_SSL_NO_VERIFY=1
$ repo init -u https://dev.azure.com/advcharles/IMX-Robot/_git/adv-arm-yocto-bsp -b imx-linux-zeus -m imx8LBVA0271_robot.xml
$ repo sync
$ ln -s sources/meta-robot-platform/imx/meta-robot/tools/setup-imx-robot.sh setup-imx-robot.sh

可以看到机器人平台已经包含在 BSP 中,然后你可以开始用你需要的ROS版本搭建你自己的机器人固件。例如,你可以选择 ros1melodic或kinetic或 ROS2 foxy。

$ DISTRO=imx-robot-xwayland MACHINE=imx8mprsb3720a1 source setup-imx-robot.sh -r melodic -b imx8mprsb3720a1-robot-melodic
$ bitbake imx-robot-system
$ DISTRO=imx-robot-xwayland MACHINE=imx8mprsb3720a1 source setup-imx-robot.sh -r kinetic -b imx8mprsb3720a1-robot-kinetic
$ bitbake imx-robot-system
$ DISTRO=imx-robot-xwayland MACHINE=imx8mprsb3720a1 source setup-imx-robot.sh -r foxy -b imx8mprsb3720a1-robot-foxy
$ bitbake imx-robot-system
5.2 刷镜像和扩展 rootfs 空间

请刷镜像到你的主机电脑或笔记本。

$ scp charles@desktop:~/adv-release-bsp/imx8mprsb3720a1-robot-melodic/tmp/deploy/images/imx8mprsb3720a1/imx-robot-system-melodic-imx8mprsb3720a1-20220309072100.rootfs.wic.bz2 .
A. Linux

选择您的 udisk 名称来替换/dev/sdx,就像/dev/sdc 一样,但是您应该注意不要使用系统磁盘或者重要的存储磁盘

$ sudo dd if=./imx-robot-system-melodic-imx8mprsb3720a1-20220309072100.rootfs.wic.bz2 of=/dev/sdx
B. Windows

用户可以选择 balenaEtcher将映像flash到他们的Windows操作系统。或者,他们也可以选择Linux版本1。Linux版本1的图形界面操作与Windows版本类似。

5.3 【技巧和方法】当遇到设置Nxp8987 SDK support和source mirror失败
A.请在你的构建文件夹的 local.conf 文件中加 MACHINE_FEATURES_remove = " nxp8987 "和移除source mirror 以防止构建失败
B.通过添加 IMAGE _ install _ append = “ orb-slam2”来使用 slam demo,请将 orb-slam2包含到图像中
C.如果需要预留磁盘空间,可以在构建文件夹的 local.conf 文件中添加 INHERIT + = “ rm _ work”特性。

六.在ROS中启动摄像头(仅支持USB摄像头-目前不支持MIPI摄像头)

ROS1仍然是机器人应用的热门选择。因此,我们将演示ROS1的使用。我们在这个教学中使用的版本是基于螺旋分布。我们将演示如何启动USB摄像头节点。本演示还将在您的HDMI显示器上显示相机预览-这是一个ROS节点。

$ source /opt/ros/melodic/setup.bash
$ roscore&
$ roslaunch usb_cam usb_cam-test.launch

七.SLAM演示

你可以在下面的链接看到必要的材料

  • https://codeload.github.com/raulmur/ORB_SLAM2/zip/refs/heads/master

  • http://robotics.ethz.ch/~asl-datasets/ijrr_euroc_mav_dataset/machine_hall/MH_02_easy/MH_02_easy.zip

  • $ mono_euroc/orb-slam2/Vocabulary/ORBvoc.txt

  • ORB_SLAM2/Examples/Monocular/EuRoC.yaml mav0/cam0/data ORB_SLAM2/Examples/Monocular/EuRoC_TimeStamps/MH01.txt

八.结论

熟悉ROS开发的用户会发现ROS在Ubuntu系统中集成得很好。这是因为ROS被广泛用于在Ubuntu x86架构上开发机器人解决方案。相反,基于arm的平台通常默认提供嵌入式Linux(如Yocto OS),由于嵌入式Linux以提供一个框架而闻名,使终端用户能够从构建块设计自己的操作系统,因此使用ROS平台安装和开发更加困难。研华的BSP与ROS完全集成。ROS开发人员可以专注于开发ROS应用,并致力于设计低功耗的机器人解决方案,而不会产生冲突和混乱。这将进一步帮助降低基于Arm平台的开发成本和相关的麻烦。

这篇关于如何在NXP i.MX8MP平台主板上构建ROS ?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/225482

相关文章

一文详解如何从零构建Spring Boot Starter并实现整合

《一文详解如何从零构建SpringBootStarter并实现整合》SpringBoot是一个开源的Java基础框架,用于创建独立、生产级的基于Spring框架的应用程序,:本文主要介绍如何从... 目录一、Spring Boot Starter的核心价值二、Starter项目创建全流程2.1 项目初始化(

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

使用Python和python-pptx构建Markdown到PowerPoint转换器

《使用Python和python-pptx构建Markdown到PowerPoint转换器》在这篇博客中,我们将深入分析一个使用Python开发的应用程序,该程序可以将Markdown文件转换为Pow... 目录引言应用概述代码结构与分析1. 类定义与初始化2. 事件处理3. Markdown 处理4. 转

Java使用Mail构建邮件功能的完整指南

《Java使用Mail构建邮件功能的完整指南》JavaMailAPI是一个功能强大的工具,它可以帮助开发者轻松实现邮件的发送与接收功能,本文将介绍如何使用JavaMail发送和接收邮件,希望对大家有所... 目录1、简述2、主要特点3、发送样例3.1 发送纯文本邮件3.2 发送 html 邮件3.3 发送带

Python结合Flask框架构建一个简易的远程控制系统

《Python结合Flask框架构建一个简易的远程控制系统》这篇文章主要为大家详细介绍了如何使用Python与Flask框架构建一个简易的远程控制系统,能够远程执行操作命令(如关机、重启、锁屏等),还... 目录1.概述2.功能使用系统命令执行实时屏幕监控3. BUG修复过程1. Authorization

nginx-rtmp-module构建流媒体直播服务器实战指南

《nginx-rtmp-module构建流媒体直播服务器实战指南》本文主要介绍了nginx-rtmp-module构建流媒体直播服务器实战指南,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. RTMP协议介绍与应用RTMP协议的原理RTMP协议的应用RTMP与现代流媒体技术的关系2

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

Golang使用etcd构建分布式锁的示例分享

《Golang使用etcd构建分布式锁的示例分享》在本教程中,我们将学习如何使用Go和etcd构建分布式锁系统,分布式锁系统对于管理对分布式系统中共享资源的并发访问至关重要,它有助于维护一致性,防止竞... 目录引言环境准备新建Go项目实现加锁和解锁功能测试分布式锁重构实现失败重试总结引言我们将使用Go作

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖