yocto stm32mp1集成ros

yocto stm32mp1集成ros

  • yocto集成ros
    • 下载meta-ros
    • yocto集成ros
    • rootfs验证

yocto集成ros

本章节介绍yocto如何集成ros系统用来作机器人开发。

下载meta-ros

第一步首先需要下载meta-ros layer,meta-ros的链接如下:https://github.com/ros/meta-ros/tree/master,在我们的yocto源码layers路径下执行如下指令:

git clone https://github.com/ros/meta-ros.git

下载完成以后如下:
在这里插入图片描述
完成以后需要进入到meta-ros里面切换匹配yocto版本的分支,比如我当前使用的yocto版本是dunfell即yocto 3.1,这样我们也需要切换meta-ros到对应的dunfell分支上。

cd meta-ros
git chekcout remotes/origin/dunfell

这样我们的meta-ros layer就准备好了。

这里后面遇到一个编译问题,提示meta-layer不兼容,作了一个小改动,如果遇到同样问题可以尝试以下:
修改你需要集成的ros版本里面的LAYERSERIES_COMPAT_属性为你当前yocto的版本
在这里插入图片描述

yocto集成ros

  1. 添加编译支持
    首先我们需要将meta-ros layer添加到我们的编译系统中来,在conf/bblayers.conf里面添加如下配置:
# ROS
ADDONSLAYERS += " \${OEROOT}/layers/meta-ros/meta-ros-backports-hardknott \${OEROOT}/layers/meta-ros/meta-ros-backports-gatesgarth \${OEROOT}/layers/meta-ros/meta-ros-common \${OEROOT}/layers/meta-ros/meta-ros1 \${OEROOT}/layers/meta-ros/meta-ros1-noetic \"

注意我这里集成的是ros1 noetic版本,如果你需要集成其他版本按照你的需求写就好了,前面4个为meta-ros1-noetic 的依赖layer,如果你和我版本不同请根据你的依赖关系填写。到此应该就可以编译ros系统了,可以尝试使用如下指令来编译ros:

bitbake ros-image-core
  1. 添加ros打包
    如果上面的编译成功的话下一步就可以开始集成我们的rros到rootfs里面了,在我们的rootfs的bb文件里面添加一行如下内容:这个会追加ros的ros-core turtlesim 两个组件到rootfs,后续如果有其他package需求往里面加就好了。
CORE_IMAGE_EXTRA_INSTALL += " ros-core turtlesim  "

rootfs验证

按照第二部做完正常情况下ros的 ros-core turtlesim 就应该已经集成到根文件系统了,下面使用ros自带的测试节点测试ros是否能正常工作

  1. 启动roscore
    登陆到板子上,打开一个终端,执行如下指令:
source /opt/ros/noetic/setup.sh
roscore

执行效果如下:
在这里插入图片描述

  1. 启动UI
    这一步依赖你的板子连接好屏幕,然后rootfs里面有qt系统支持, 然后重新启动一个终端登陆进板子,执行如下指令:
source /opt/ros/noetic/setup.sh
rosrun turtlesim turtlesim_node

这里注意以下因为我板子上的qt系统后端是使用eglfs的,和ros默认的xcb不同,直接执行会coredump,所以我使用export QT_QPA_PLATFORM=eglfs指定了QT的后端使用eglfs,这样就能正常运行了,下面是操作截图:
在这里插入图片描述

  1. 启动终端控制
    这一部需要在开一个终端连接到板子上,执行如下指令:
source /opt/ros/noetic/setup.sh
rosrun turtlesim  turtle_teleop_key

这样在这个终端里面就可以使用上下左右的键盘来控制UI上的小海龟移动拉
在这里插入图片描述

下面贴一张实际在板子上的运行状态照片:
在这里插入图片描述
默认的ui在板子上显示有点问题,不过不影响测试,小海龟的白色路径就是用键盘控制画出来的。集成工作结束,下面就能愉快的开发ros拉

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/131136.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1-4 AUTOSAR方法论

总目录——AUTOSAR入门详解AUTOSAR入门详解目录汇总:待续中。。。https://xianfan.blog.csdn.net/article/details/132818463 目录 一、前言 二、方法论 三、单个ECU开发流程 一、前言 汽车生产供应链上有以下角色:OEM、TIER1、TIER2,其主…

《向量数据库指南》——哪些需求推动了如Milvus Cloud等的向量数据库的更新和迭代?

这个问题需要深入讨论大模型与向量数据库之间的关系。从去年 ChatGPT 推出时这个问题就开始引发我们的思考。在当时,我们敏锐地意识到这将是一个机遇。然而,在国内,这个概念的认知需要更长的时间。我个人在去年四五月份的美国之行中注意到,数据库在美国已经是一个非常热门的…

入门人工智能 ——使用 tensorflow 训练一个新闻分类模型(6)

入门人工智能 ——使用 tensorflow 训练一个新闻分类模型(6) 入门人工智能 ——使用 tensorflow 训练一个新闻分类模型使用 tensorflow 训练一个新闻分类模型1. 安装TensorFlow和所需的依赖项。2. 打开收集的新闻数据集构建模型模型训练模型评估保存模型…

西门子S7-1200F或1500F系列安全PLC的组态步骤和基础编程(一)

西门子S7-1200F或1500F系列安全PLC的组态步骤和基础编程(一) 第一部分:组态配置 具体步骤可参考以下内容: 如下图所示,新建一个项目后,添加一个安全型PLC,这里以1516F-3 PN/DP为例进行说明, 如下图所示,添加CPU完成后,可以看到左侧的项目树中比普通的PLC多了几个选项…

MySQL-DDL语句

MySQL-DDL语句 数据库操作语句增删数据库查看数据库列表创建数据库进入(使用)数据库/查看当前所在的数据库查看数据库的建库语句查看数据库的编码集和校验集删除数据库修改数据库的编码集查看数据库支持的编码集和校验集 数据库备份备份单个数据库恢复数…

rust编译出错:error: failed to run custom build command for `ring v0.16.20`

安装 Visual Studio,确保选择 —.NET 桌面开发、使用 C 的桌面开发和通用 Windows 平台开发。显示已安装的工具链rustup show。然后通过运行更改和设置工具链rustup default stable-x86_64-pc-windows-msvc。 另外是想用clion进行调试rust 需要你按下面配置即可解…

solidworks底部状态栏显示不出来

如下图所示,solidworks主界面下面的状态栏突然不见了。 怎么调出来? 第一步:点击视图菜单,用户界面,把状态栏前的勾勾上。 第二步:把视图下面的触摸模式关掉,这一点很容易被大家忽略。

Oracle(1):Oracle简介

1 什么是 ORACLE ORACLE 数据库系统是美国 ORACLE 公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S 体系结构的数据库之一。 ORACLE 通常应用于大型系统的数据库产品。 ORACLE 数据…

全面详解Maven的配置文件pom.xml(含常用plugin)

系列文章目录 手把手教你maven的安装与配置(windows) 全面详解Maven的配置文件pom.xml(含常用plugin) 系列文章目录一、什么是pom.xml二、pom.xml的结构三、项目的基本信息1.modules2.parent3.scm4.properties 四、项目的依赖列表1.dependency2.reposit…

【服务器 | 测试】如何在centos 7上面安装jmeter

安装之前需要几个环境,以下是列出的几个环境 CentOS 7.7 64位JDK 1.8JMeter 5.2 1. 下载jmeter安装包 JMeter是开源的工具,安装 JMeter 要先安装好 JDK 的环境,安装JDK在前面的文章已经讲到 JMeter最新版下载地址:Apache JMeter…

X86_64函数调用汇编程序分(2)

X86_64函数调用汇编程序分(2) 1 X86_64寄存器使用标准2 leaveq和retq指令2.1 leaveq2.2 retq 3 执行leaveq和retq之后栈的结构3.1 执行leaveq之后栈的结构3.1.1 test_fun_b函数执行leaveq之前的栈结构示意图3.1.2 test_fun_b函数执行leaveq之后的栈结构示…

JSP SSM 成果展示系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 JSP SSM 冬奥建设成果展示系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的 源代码和数据库,系统主…

ubuntu基本配置

记录一下每次重新安装系统之后都要进程的操作 更新源 更新源的教程 sudo bash -c "cat << EOF > /etc/apt/sources.list && apt update deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse deb-src http://mirrors.a…

LLM - 数据处理之 Process Dataset For LLM With PT、SFT、RM

目录 一.引言 二.PT 数据流程 1.数据样式 2.生成代码 3.数据生成 三.SFT 数据流程 1.数据样式 2.生成代码 3.数据生成 四.RM 数据流程 1.生成逻辑 2.RM 模型测试 五.总结 一.引言 上篇文章 LLM - 批量加载 dataset 并合并介绍了如何加载多个文件并合成一个 datas…

leetcode:67. 二进制求和

题目&#xff1a; 函数原型&#xff1a; char * addBinary(char * a, char * b) 思路&#xff1a; 二进制相加&#xff0c;首先我们考虑先将字符串逆序。由此要写一个逆序函数reserve。字符串逆序后&#xff0c;从前往后相加&#xff0c;以较长的字符串的长度为标准长度n&#…

【光谱超分辨率:综述】

Spectral super-resolution meets deep learning: Achievements and challenges &#xff08;面向深度学习的光谱超分辨率&#xff1a;成就和挑战&#xff09; 光谱超分辨率是一种从RGB图像获取高光谱图像的重要技术&#xff0c;可以有效地克服高光谱图像获取成本高、空间分辨…

vite + react + typescript + uni-app + node 开发一个生态系统

简介 使用 vite react typescript uni-app node 来开发一个简易的生态系统案例&#xff0c;包含 APP&#xff0c;H5&#xff0c;微信小程序&#xff0c;控制台&#xff0c;服务端 开发 admin 技术栈&#xff1a;vite react typescript初始化控制台项目选择自定义预设…

Gitlab仓库部署

Gitlab仓库部署 一、Gitlab的概述1、gitlab介绍2、gitlab主要功能3、gitlab和github的区别 二、部署环境1、安装依赖环境2、安装Postfix邮箱3、Gitlab优势4、Gitlab工作流程 三、Gitlab部署过程1、Yum安装Gitlab2、配置gitlab站点URL3、启动并访问Gitlab 四、Gitlab具体操作1、…

CSS盒子模型

盒子模型的组成 CSS会把所有的HTML元素都看成一个盒子&#xff0c;所有的样式也都是基于这个盒子 content&#xff08;内容&#xff09;&#xff1a;盒子的内容padding&#xff08;内边距&#xff09;&#xff1a;用于控制元素内部与边框之间的距离border&#xff08;边框&…

Qt打开及创建项目,运行程序(1)

安装之后&#xff0c; 1.文件->新建文件或项目 2.Application->Qt Widgets Application 3.自己设置名称和路径 4.这一步非常非常重要&#xff0c;要选择编译器&#xff0c;&#xff08;MinGW是可以在Qt里用&#xff0c;如果想与VS交互&#xff0c;要选择MSVC&#xff09…