yocto 集成ros2
本篇文章为基于raspberrypi 4B单板的yocto实战系列的第二篇文章。
上一小节已经使用yocto编译出了raspberrypi 4B的image。并且成功刷机并且启动登陆:
一、yocto 编译raspberrypi 4B并启动
本节我们将ros2机器人操作系统移植到我们的yocto系统里面。
1. 下载ros layer
上小节我们编译的yocto image是基于kirkstone分支的,所以我们也需要下载kirkstone分支的meta-ros layer:
从上图可以看到kirkstone分支对应的ros2 LTS Distros是Humble版本,下面我们先下载相关源码:
在poky-kirkstone文件夹下执行如下指令:
- 下载meta-openembedded layer
meta-ros依赖meta-openembedded,所以需要先下载meta-openembedded代码
git clone -b kirkstone https://github.com/openembedded/meta-openembedded.git meta-openembedded
- 下载meta-qt5 layer
meta-ros依赖meta-qt5,所以下载meta-qt5代码
git clone -b kirkstone https://github.com/meta-qt5/meta-qt5.git meta-qt5
- 下载meta-ros layer
git clone -b kirkstone https://github.com/ros/meta-ros.git meta-ros
2. 编译集成ros
下载完成以后需要添加meta-ros 这个layer到bblayers.conf文件中:
尝试编译ros-image-core镜像,此过程比较慢,请耐心等待
bitbake ros-image-core
编译成功说明ros成功集成,下一步可以将ros-core 和turtlesim 两个包添加到local.conf,这样我们的生成的image就能用来测试ros通信:
添加完成以后在编译原来的image
bitbake core-image-base
3. 功能验证
编译完成就可以得到我们最新的rpi-build/tmp/deploy/images/core-image-base-raspberrypi4-64-xxxxx-rootfs.rpi-sdimg
执行如下指令刷写SD卡:
sudo dd if=/home/a/work/raspberry/rpi-build/tmp/deploy/images/raspberrypi4-64/core-image-base-raspberrypi4-64-20240313101906.rootfs.rpi-sdimg of=/dev/sda
sync
开机以后初始化ros环境,可以看到确实完成了ROS2 humble的集成: