yocto stm32mp1集成ros

yocto stm32mp1集成ros

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里面添加如下配置:
cpp 复制代码
# 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:

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

rootfs验证

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

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

执行效果如下:

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

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

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

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

下面贴一张实际在板子上的运行状态照片:

默认的ui在板子上显示有点问题,不过不影响测试,小海龟的白色路径就是用键盘控制画出来的。集成工作结束,下面就能愉快的开发ros拉

相关推荐
idcardwang41 分钟前
xl9555-IO拓展芯片
stm32·单片机·嵌入式硬件
Y1rong1 小时前
STM32之EXTI
stm32·单片机·嵌入式硬件
兆龙电子单片机设计1 小时前
【STM32项目开源】STM32单片机智能语音家居控制系统
stm32·单片机·嵌入式硬件·物联网·开源·自动化
意法半导体STM321 小时前
【官方原创】SAU对NSC分区的影响 LAT1578
stm32·单片机·嵌入式硬件·mcu·信息安全·trustzone·stm32开发
SmartRadio1 小时前
MK8000(UWB射频芯片)与DW1000的协议适配
c语言·开发语言·stm32·单片机·嵌入式硬件·物联网·dw1000
LDR0061 小时前
芯片电路的引脚标识代表什么?
stm32·单片机·嵌入式硬件
猪八戒1.03 小时前
中断(按键、SYSTICK、串口)
stm32·单片机·嵌入式硬件
chem41113 小时前
STM32 ISP下载
stm32·单片机·接口隔离原则
BreezeJuvenile4 小时前
ADC_案例练习:独立模式单通道转换
stm32·单片机·adc·hal·寄存器·单通道采集
zd8451015004 小时前
stm32f407 电机多轴联动算法
stm32·单片机·算法