当前位置: 首页 > news >正文

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.lryc.cn/news/161531.html

相关文章:

  • Linux 中的 chroot 命令及示例
  • oracle的redo与postgreSQL的WAL以及MySQL的binlog区别
  • 进入低功耗和唤醒
  • 【多线程】volatile 关键字
  • 【Windows注册表内容详解】
  • 大数据Hadoop入门之集群的搭建
  • 华为云云耀云服务器L实例评测|基于云服务器的minio部署手册
  • 龙智携手Atlassian和JFrog举办线下研讨会,探讨如何提升企业级开发效率与质量
  • 2023数学建模国赛A题定日镜场的优化设计- 全新思路及代码
  • CSS笔记(黑马程序员pink老师前端)圆角边框
  • 水表电表集中远程抄表系统分析
  • Android 通知
  • 【Unittest】Requests实现小程序项目接口测试
  • Mac 搭建本地服务器
  • 区块链基础之编写合约二
  • 【前端基础】js 如何判断一个值是数组
  • Linux之NFS服务器
  • ES delete_by_query条件删除的几种方式
  • 1.springboot 集成elasticsearch组件
  • 【学习笔记】元学习如何解决计算机视觉少样本学习的问题?
  • 【C语言】17-函数-3
  • 人工智能:为你提供的未来工作岗位
  • HashMap、LinkedHashMap、ConcurrentHashMap、ArrayList、LinkedList的底层实现。
  • flink学习之广播流与合流操作demo
  • PPT架构师架构技能图
  • STM32微控制器的低功耗模式
  • tensorflow QAT
  • [杂谈]-快速了解LoRaWAN网络以及工作原理
  • MySQL--MySQL表的增删改查(基础)
  • Vue中启动提示polyfill缺少-webpack v5版本导致