RK3576开发板ROS2部署实战:从Buildroot配置到Hello World Demo

终篇:RK1808在BuildRoot中增加ROS支持 前两篇文章中,其实已经把ROS运行起来了,跑了官方的程序(原来出现的source问题,已经在第二篇评论出了解决方案)只是官方程序是放在整个sdk中编译的,需要写Config.in文件,mk文件等,比较麻烦,于是就在折腾直接使用交叉编译链,使用catkin_make命令来实现编译,然后把devel的文件夹传到RK1808中就可以直接运行的方法,经过几天的折腾,终于搞成功了,在此记录一下。PS:RK1808的编译工具还有些问题,使用sdk里带的编译器,会出错,不知道是不是选错了编译器的问题,后续再研究了。 阅读详情

RK3576开发板ROS2部署实战:从Buildroot配置到Hello World Demo

最近在折腾RK3576开发板,想在上面跑ROS2,发现网上资料要么太零散,要么就是直接给个Ubuntu镜像让你烧录,对于想深入理解整个构建流程的开发者来说,总觉得缺了点什么。如果你和我一样,不满足于“一键部署”,而是想搞清楚从底层Buildroot配置到上层ROS2应用运行的每一个环节,那这篇文章就是为你准备的。我们将抛开现成的Ubuntu镜像,从瑞芯微官方的Linux SDK出发,一步步构建一个包含ROS2 Humble(或你喜欢的任何版本)的定制化根文件系统,最终在板子上跑起经典的Talker-Listener Demo。这个过程会涉及到Buildroot补丁应用、依赖包配置、交叉编译环境搭建、Docker容器化编译以及最终的镜像打包与测试,特别适合那些需要在资源受限的嵌入式平台上部署机器人软件栈,并希望完全掌控构建链的工程师。

1. 环境准备与基础概念梳理

在动手之前,我们得先理清几个关键概念和准备好必要的“弹药”。RK3576是一颗性能不错的Arm64位应用处理器,瑞芯微为其提供了基于Buildroot的Linux SDK。Buildroot是一个轻量级、高效且易于定制的嵌入式Linux构建系统,它通过交叉编译,为我们生成包括内核、根文件系统、工具链在内的一整套系统镜像。而ROS2,作为机器人操作系统的第二代,其模块化、支持实时性和跨平台的特点,使其成为嵌入式机器人应用的理想选择。

我们的目标,是在Buildroot构建的根文件系统里,集成ROS2的核心功能包。这不同于在桌面Ubuntu上安装ROS2,我们需要处理交叉编译、依赖库版本匹配、以及嵌入式环境下的资源优化等问题。整个流程可以概括为:准备SDK -> 配置Buildroot(打补丁、添加ROS2依赖)-> 构建基础rootfs -> 在Docker容器中交叉编译ROS2 -> 将编译结果集成回rootfs -> 打包烧录测试。

首先,确保你手头有以下资源:

  • 硬件:触觉智能或其他厂商的RK3576开发板及配套电源、串口调试工具。
  • 主机环境:一台运行Ubuntu 20.04或22.04的x86_64主机,用于交叉编译。建议预留至少100GB的磁盘空间。
  • 软件资源:
    • 瑞芯微官方提供的RK3576 Linux SDK。
    • 为ROS2交叉编译准备的Docker镜像及相关补丁、脚本包(通常由社区或板卡供应商提供)。
    • 对应ROS2版本的源代码包(例如Humble Hawksbill)。

提示:获取这些资源时,请务必关注版本匹配。ROS2的不同发行版(如Foxy、Galactic、Humble、Iron)对Python、CMake、编译器版本都有特定要求,需要与Buildroot SDK中集成的工具链版本对齐。

2. Buildroot工程配置与ROS2依赖集成

拿到Linux SDK后,第一步不是急着编译,而是检查并配置Buildroot,确保其包含了编译和运行ROS2所需的所有基础依赖库。ROS2依赖众多,从通信中间件(如Fast DDS)、序列化库(如FastCDR)、到工具链(如Colcon、Ament)和语言支持(如rclcpp, rclpy),缺一不可。

通常,SDK提供者会准备一个名为 ros2_dep.config 的配置文件,里面已经列出了必要的Buildroot软件包选项。我们的任务就是把这个配置集成到我们目标板的defconfig中。

2.1 检查与打补丁

进入SDK的buildroot目录,首先检查关键配置和补丁是否存在。

# 进入Buildroot目录
cd /path/to/your/linux-sdk/buildroot

# 检查ROS2依赖配置文件是否存在
ls configs/rockchip/ros2_dep.config

# 如果不存在,则需要打入补丁
# 假设补丁文件位于当前目录或上级目录的某个patch文件夹下
patch -p1 < ../patches/0001-package-add-libasio.patch
patch -p1 < ../patches/0002-configs-rockchip-add-ros2-build-dependencies.patch

打完补丁后,ros2_dep.config 文件应该就出现了。用文本编辑器打开它,快速浏览一下。一个典型的配置文件会启用几十个包,例如:

# 通信与序列化
BR2_PACKAGE_FASTDDS=y
BR2_PACKAGE_FAS
ROS2安装、配置与编译 阅读详情

相关推荐

硬核上车!RK3576基于Ubuntu部署ROS机器人系统详细攻略(上)

检查/opt/ros/cross-compile/cross-compile.mixin及build_ros2.sh, 将其中的Python版本号修改成RK LinuxSDK对应的版本号,例如:310修改成38,其中310表示Python3.10版本,以此类推~3.10修改成3.8。在RK Linux SDK的Buildroot目录中,检查是否存在ros2_dep.config文件​​​​​​​。如需要自己下载其它版本的源码,进入docker后,可使用vcs-import:​​​​​​​。

Industio_CSDN的博客 2378

国产芯实战:RK3576+Buildroot系统编译ROS2 Humble避坑指南(含LTTNG工具链配置)

本文详细介绍了在国产RK3576芯片上构建ROS2 Humble系统的全流程,包括Buildroot系统定制、LTTNG工具链配置及交叉编译实战技巧。通过优化系统启动时间和实时性参数,显著提升机器人控制性能,适用于移动机器人和工业机械臂等场景。

k9l0m1的博客 430

第三篇:RK1808在BuildRoot中增加ROS支持

但是好像不影响核心程序及节点的运行,所以在这里暂时不去查这个问题的原因。前两篇已经把ROS环境支行起来了,这么久才有时间把示例代码跑起来。虽然有Error提示,但是程序还是跑起来了。

Cubar的专栏 714

第一篇:rk1808编译buildroot,增加ros支持问题

RK1808开发板使用Buildroot编译带ROS的精简linux系统,遇到一堆的坑。

Cubar的专栏 2336

实战指南:RK3576在Ubuntu上搭建ROS2机器人开发环境全解析

本文提供了一份详细的实战指南,手把手教你如何在瑞芯微RK3576开发板上,基于Ubuntu系统搭建完整的ROS2机器人开发环境。内容涵盖从硬件选型、软件准备、Docker环境配置、Buildroot依赖集成,到ROS2源码交叉编译、常见问题解决(如TRY_RUN错误),直至最终烧录系统并成功运行ROS2经典demo的全过程。旨在帮助开发者高效利用RK3576的强劲性能与NPU算力,快速启动可靠的机器人项目开发与部署。

weixin_29192211的博客 327

RV1126 ROS2环境交叉编译及部署(基于官方Docker)

我的所有基于`RV1126`的机器人项目都是在`Ubuntu22.04`下进行开发的,在`Ubuntu18.04 Docker`容器中实现`RV1126`的`SDK`编译,详细可参考我之前的博客[《Ubuntu20.04/22.04下Docker方案实现多平台SDK编译》第2章](https://blog.csdn.net/w1820020635/article/details/147342689),`RV1126`的`ROS1`部署没什么难度,可以参考我之前的博客,这里记录了`ROS2`交叉编译及问题解决

w1820020635的博客 1135

机器人运动学仿真软件:ROS (Robot Operating System)_(2).ROS安装与配置

通过上述步骤,你可以在不同的操作系统上安装和配置ROS,并进行基本的开发和调试。ROS的灵活配置和丰富的工具库使得开发者可以高效地构建复杂的机器人应用。希望这些步骤能够帮助你顺利进行ROS开发。如果你遇到任何问题,可以参考ROS官方文档或社区支持资源。

kkchenjj的博客 1058

ROS2入门到精通—— 1-2 ROS2常用工具

本文介绍了ROS2常用的工具以及相关的使用方法:launch.py文件编写;ros2bag录包;rviz2数据可视化;gazebo生产数据,读完本文你会对ROS2常用工具有详细的了解

BigDavid123的博客 4195

Arcmap计算土方量教程

1. 创建现状TIN 结果数据: 2. 创建设计TIN 结果数据: 注意:现状TIN和设计TIN构建时候的坐标系不同,设置坐标系见最后的注意事项第1点,就是import(导入)那步骤,现状TIN构建时选择高程点数据或者等高线数据,设计TIN构建时候选择洱海面数据 3. TIN转栅格 改成你要存的数据库,注意中间不要有汉字 结果数据(设计TIN转栅格的同理) 4. 裁剪现状TIN转成的栅格 结果数据: 5. 计算土方量 结果数据: ...

欢迎关注,共同进步! 5007

Mamba实战:如何用Samba框架轻松搞定RGB-D显著性检测(附避坑指南)

本文提供了基于Samba框架进行RGB-D显著性目标检测的实战指南。详细解析了从环境配置、数据预处理到模型推理与可视化的全流程,并重点剖析了多模态数据融合中的常见陷阱与调试技巧,旨在帮助开发者高效部署这一基于Mamba的先进视觉模型,规避工程实践中的典型问题。

dapp9builder的博客 612

V.PhyloMaker实战:从物种列表到维管束植物系统发育树的完整流程

本文详细介绍了使用V.PhyloMaker工具包,从物种列表快速构建维管束植物系统发育树的完整实战流程。内容涵盖R包安装、物种名标准化、核心函数phylo.maker的三种构建方案选择、结果树的可视化与导出,以及与picante包的联动分析,为生态学和生物地理学研究提供了高效解决方案。

weixin_29057237的博客 371

MeshLab新手必看:5分钟搞定泊松表面重建(附完整点云处理流程)

本文详细介绍了如何使用MeshLab进行泊松表面重建,从点云数据导入、预处理到核心参数设置,再到后处理与模型优化,提供了完整的3D重建流程指南。特别适合计算机视觉和3D重建领域的新手快速掌握泊松重建技术,提升工作效率。

kafka6courier的博客 225

1.STM32H743VGT6最小系统板

此款MCU具备较大算力进行频谱运算,为复杂数据运算提供更高效的保障。该MCU具备REV-V和REV-Y两个型号,后者为新版本。

Audiation88的博客 3773

19-5 ACC 自适应巡航控制系统需求

本专题由深圳季连AIgraphX李博及团队出品,主要讲解ACC自适应巡航控制系统的开发与仿真测试。具体说来,包括ACC标准/法规分析、系统需求、系统架构、软件需求、软件架构、算法建模、验证场景分析、仿真实验搭建等内容。 本节主要讲ACC系统需求。

AIgraphX 1082

025、空间降噪与时域降噪:噪声抑制与细节保留的平衡艺术

《降噪技术的平衡艺术:空间与时域降噪的协同优化》 本文深入探讨了图像处理中空间降噪与时域降噪的技术原理与工程实践。空间降噪通过像素级处理提升单帧质量,而时域降噪则利用帧间信息增强稳定性。文章揭示了两种方法在实际应用中的矛盾点:过度降噪会导致细节损失,影响后续算法性能。作者结合车载环视系统等实战案例,详细分享了参数调优经验,包括运动自适应策略、边缘保持技巧和嵌入式平台优化方案。特别强调降噪的最终目标应服务于下游算法需求,而非单纯追求图像美观。文章为工程人员提供了从理论到实践的完整指导,展现了降噪技术在效果与性

sundong_81的博客 185

道路施工检测 (construction) - 基于Mapillary Vistas数据集的YOLOv11目标检测及UI界面实现

目标检测是计算机视觉的重要任务,目标是识别图像中的目标物体类别及其位置(用边界框表示)。两阶段检测器:如Faster R-CNN,准确度高但速度较慢单阶段检测器:如YOLO系列、SSD,速度快且精度相对较好,适合实时场景数据量:约25,000张高分辨率街景图标注类型:语义分割、实例分割、多类别检测类别示例:construction, road, car, person, traffic sign等格式:COCO风格JSON标注。

YOLO 492

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

上一篇: 手把手教你用Terraform+Ansible实现自动化安全运维(含CIS基准模板)
下一篇: Python+OpenCV实战:手把手教你搭建双目视觉系统(附完整代码)
mac99
博客等级 码龄17年 114粉丝 1444原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值