0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

触觉智能 2025-07-03 18:45 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文适用于瑞芯微RK3562、RK3566、RK3568、RK3576、RK3588等Arm64位SoC,适配开发ROS2系统。各型号触觉智能均有配套核心板及开发板,实现了百分百全国产。

ROS2的具体版本

版本说明
Rockchip Linux SDK基于Buildroot系统构建, 并持续在更新升级工具链、软件包到较新的版本。 因此最新的SDK在编译ROS2时,可能会遇到一些小的错误,建议将版本固定。ROS2发行版本号如下(下载链接可通过截图转文字获取):

wKgZO2hmXYqAUDTyAANj6dzLjfI776.png


已经编译通过的RK Linux SDK版本:

wKgZPGhmXZaAOw3dAAJY2LUYn7I562.png

Docker编译

补丁、Docker 镜像、源码下载
https://console.zbox.filez.com/l/iJBMWZ

tree . ├── docker-focal-python38 │ └── rosdep.Dockerfile # 制作Docker Image的Dockerfile ├── docker-jammy-python310 │ └── rosdep.Dockerfile # 制作Docker Image的Dockerfile ├── focal-ros2-build.tar.gz # 根据Dockerfile制作好的Docker Image ├── jammy-ros2-build.tar.gz # 根据Dockerfile制作好的Docker Image ├── linux-sdk-patches │ └── buildroot # RK Linux SDK不同发布版本有可能会缺少的补丁 │ ├── 0001-package-add-libasio.patch │ └── 0002-configs-rockchip-add-ros2-build-dependencies.patch ├── MD5SUM.txt # 各压缩包的MD5SUM检验码 ├── ros2-build-scripts.tar.gz # 编译脚本及补丁 └── ros2-sources.tar.gz # ROS2及其部分依赖库的源码包


在RK Linux SDK的Buildroot目录中,检查是否存在ros2_dep.config文件

ls buildroot/configs/rockchip/ros2_dep.config buildroot/configs/rockchip/ros2_dep.config # 如该ros2_dep.config中缺少:LTTNG_TOOLS,手动加上(ROS2 iron有依赖) tail -f buildroot/configs/rockchip/ros2_dep.config # Required by ros2-iron tracetools; With LTTNG foxy/galactic/humble will build tracetools too. BR2_PACKAGE_LTTNG_TOOLS=y BR2_PACKAGE_LTTNG_LIBUST=y

如不存在该文件,则需要在Buildroot目录中打上如下2个补丁

0001-package-add-libasio.patch 0002-configs-rockchip-add-ros2-build-dependencies.patch


检查lttng-tools(2.12.3)、lttng-libust(2.12.3)、liburcu(0.13.0)是否满足版本要求。

编译ROS2的依赖包

RK Linux SDK 中的Buildroot工程里,ros2_dep.config提供了编译、运行ROS2所需要的依赖包,需要添加并编译到rootfs。
例如,将ros2_dep.config添加到rockchip_rk356x_robot_defconfig中:

git diff --- a/configs/rockchip_rk356x_robot_defconfig +++ b/configs/rockchip_rk356x_robot_defconfig @@ -10,6 +10,7 @@ #include "wifi.config" #include "debug.config" #include "bt.config" +#include "ros2_dep.config" BR2_TARGET_GENERIC_HOSTNAME="rk356x_robot" BR2_TARGET_GENERIC_ISSUE="Welcome to RK356X Buildroot For Robot" BR2_ROOTFS_OVERLAY:="board/rockchip/common/robot/base board/rockchip/common/wifi"


完整编译rootfs后,进入下一步。

准备Linux 编译环境

Ubuntu PC机上安装docker程序:

sudo apt install docker.io sudo usermod -aG docker $USER newgrp docker # 登录到docker用户组


导入Docker Image
首先检查RK Linux SDK 编译出来的Python版本,例如:

./buildroot/output/rockchip_rk3562_robot/host/bin/python --version Python 3.10.5

根据Python版本号,匹配对应的Docker Image 镜像:

wKgZPGhmXiaATA__AAEDY4wYc24953.png


选择jammy-ros2-build,导入并进入到Docker Container:

gunzip jammy-ros2-build.tar.gz docker image load -i jammy-ros2-build.tar docker run -it --mount type=bind,source=/home/zsq/29/linux-sdk/buildroot/output/rockchip_rk3562_robot/,target=/buildroot jammy-ros2-build

其中source=需要修改成相应的Linux SDK 编译的output目录的绝对路径

进入Container后, 默认用户是builder,密码默认是: rockchip

拷贝编译脚本及源码包
通过docker container cp命令,拷贝所需文件:

# 首先查找已登录的container ID docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c519d9d668f9 jammy-ros2-build "/bin/bash" 15 minutes ago Up 15 minutes pedantic_feynman docker container cp ros2-sources.tar.gz c519d9d668f9:/tmp/ docker container cp ros2-sources.tar.gz c519d9d668f9:/tmp/


在Container 中,将其解压:

builder@c519d9d668f9:/opt/ros$ ls /tmp/ ros2-build-scripts.tar.gz ros2-sources.tar.gz builder@c519d9d668f9:/opt/ros$ tar zxf /tmp/ros2-build-scripts.tar.gz -C / builder@c519d9d668f9:/opt/ros$ tar zxf /tmp/ros2-sources.tar.gz -C / builder@c519d9d668f9:/opt/ros$ ls cross-compile foxy galactic humble iron


修改脚本中的Python版本号
检查/opt/ros/cross-compile/cross-compile.mixin及build_ros2.sh, 将其中的Python版本号修改成RK LinuxSDK对应的版本号,例如:310修改成38,其中310表示Python3.10版本,以此类推~3.10修改成3.8。

(可选)使用Docker编译ROS2
如果想要从头开始制作Docker Image,可使用RK提供的
rosdep.Dockerfile:

docker build -t jammy-ros2-build -f rosdep.Dockerfile ./ # "./"不要少拷贝了,表示当前目录

(可选)下载源码
如需要自己下载其它版本的源码,进入docker后,可使用vcs-import:

cd /opt/ros/foxy mkdir src vcs-import -w 10 --retry 10 --skip-existing --recursive src < ros2-release-foxy- 20230620/ros2.repos


编译ROS2

再次确认RK Linux SDK、已经有加上ros2 dep.config,并且rootfs完整编译通过,并且所选Docker Image与RK Linux SDK编译出来的Python是匹配的。

选择所需ROS2版本,并依次执行以下命令:

ls /opt/ros cross-compile foxy galactic humble iron cd /opt/ros/iron ./prepare-source.sh ./build-ros2.sh # 编译成功后,应有类似提示: ... Summary: 317 packages finished [15min 37s] ... build ros quit & cleanup


说明:

编译生成的目标文件位于/buildroot/target/opt/ros目录。

编译中间过程存放在/buildroot/build/ros目录。

如build_ros2.sh未提示错误即成功编译。其中,还有部分包在Buildroot SDK环境中,无法编译、执行的,比如:

rviz,依赖于X11/desktop。如果你需要这个功能,直接使用Ubuntu arm镜像,而不是Buildroot。

turtlesim,依赖于UI显示。

如果想要取消某个包的编译,在src对应的路径下,创建一个COLCON_IGNORE即可。比如

touchsrc/ros/ros_tutorials/turtlesim/COLCON_IGNORE


TRY_RUN需要手动执行并记录结果
fastrtps TRY_RUN提示:

--- stderr: fastrtps CMake Error: TRY_RUN() invoked in cross-compiling mode, please set the following cache variables appropriately: SM_RUN_RESULT (advanced) SM_RUN_RESULT__TRYRUN_OUTPUT (advanced) For details see /buildroot/build/ros/fastrtps/TryRunResults.cmake


需要按照说明,将应用程序放到板端执行,并按说明填写结果。例如:


root@rk3562-buildroot:/# /tmp/cmTC_4f573-SM_RUN_RESULT
PTHREAD_RWLOCK_PREFER_READER_NP
# 根据上述执行结果,在docker中填入结果:

cat /buildroot/build/ros/fastrtps/TryRunResults.cmake .... set( SM_RUN_RESULT "0" CACHE STRING "PTHREAD_RWLOCK_PREFER_READER_NP" FORCE) set( SM_RUN_RESULT__TRYRUN_OUTPUT "0" CACHE STRING "PTHREAD_RWLOCK_PREFER_READER_NP" FORCE)


rosbag2_cpp TRY_RUN提示:

--- stderr: rosbag2_cpp CMake Error: TRY_RUN() invoked in cross-compiling mode, please set the following cache variables appropriately: HAVE_SANITIZERS_EXITCODE (advanced) HAVE_SANITIZERS_EXITCODE__TRYRUN_OUTPUT (advanced) For details see /buildroot/build/ros/rosbag2_cpp/TryRunResults.cmake


同上, 需要按照说明,将应用程序放到板端执行,并按说明填写结果。例如:

set( HAVE_SANITIZERS_EXITCODE "127" CACHE STRING "error while loading shared libraries: liblsan.so.0: cannot open shared object file: No such file or directory" FORCE) set( HAVE_SANITIZERS_EXITCODE__TRYRUN_OUTPUT "127" CACHE STRING "error while loading shared libraries: liblsan.so.0: cannot open shared object file: No such file or directory" FORCE)


单独编译某个ROS2 package 及应用程序
使用colcon build的参数 --packages-select 可单独编译包,可参考 colcon build --help 。

打包rootfs并运行ROS2


在上述ROS2完整编译结束后,进入到buildroot sdk,重新打包rootfs即可。ROS2安装在/opt/ros目录下。

cd /data/linux-sdk/rk3562 ./build.sh rootfs # 重新打包rootfs.img


烧录rootfs.img后,进入rk3562板端,执行Hello World Demo:

# cd /opt/ros/ # export COLCON_CURRENT_PREFIX=/opt/ros # export ROS_HOME=/userdata/ # source ./local_setup.sh # ros2 pkg list # ros2 pkg executables # ros2 run demo_nodes_cpp listener & # ros2 run demo_nodes_cpp talker [INFO] [1501839280.834017748] [talker]: Publishing: 'Hello World: 1' [INFO] [1501839280.839280957] [listener]: I heard: [Hello World: 1] [INFO] [1501839281.831636015] [talker]: Publishing: 'Hello World: 2' [INFO] [1501839281.835092640] [listener]: I heard: [Hello World: 2] [INFO] [1501839282.831618532] [talker]: Publishing: 'Hello World: 3' [INFO] [1501839282.835336782] [listener]: I heard: [Hello World: 3] # ros2 run demo_nodes_py listener & # ros2 run demo_nodes_py talker


好了,今天触觉智能分享就到这里,关注触觉智能,下集为您带来常见编译报错的解决方法。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 瑞芯微
    +关注

    关注

    27

    文章

    861

    浏览量

    54680
  • ROS
    ROS
    +关注

    关注

    1

    文章

    296

    浏览量

    18888
  • RK3588
    +关注

    关注

    8

    文章

    592

    浏览量

    7597
  • rk3576
    +关注

    关注

    1

    文章

    304

    浏览量

    1685
  • RK3562
    +关注

    关注

    0

    文章

    107

    浏览量

    760
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    当国产芯遇上机器人RK3576ROS2奇幻之旅

    RK3576的强劲“大脑”(四核A72+四核A53)与强大的GPU、VPU、NPU加速模块相遇,一场高性价比的机器人开发革命正在悄然发生。我们成功将完整的Ubuntu
    的头像 发表于 01-15 08:04 1.1w次阅读
    当国产芯遇上<b class='flag-5'>机器人</b>:<b class='flag-5'>RK3576</b>的<b class='flag-5'>ROS</b>2奇幻之旅

    RK3576 + ROS2 SLAM建图与导航实战

    RK3576开发板逐步构建一个功能完备的自主移动机器人系统,涵盖环境搭建、机器人建模、SLAM建图、自主导航以及生产级系统的优化与排错。为什
    的头像 发表于 03-12 08:08 8915次阅读
    <b class='flag-5'>RK3576</b> + <b class='flag-5'>ROS</b>2 SLAM建图与导航实战

    ROS机器人开发更便捷,基于RK3568J+Debian系统发布!

    、路线控制偏离、系统通信异常等严重后果。而ROS系统凭借其优势,已成为AGV开发利器,广泛应用于各种机器人开发,并逐渐成为主流。 RK35
    发表于 07-09 11:38

    米尔瑞芯微RK3576实测轻松搞定三屏八摄像头

    系统机器人: 在机器人领域,RK3576的多屏显示和多摄像头输入能力使得机器人能够同时处理多个视觉任务,提高
    发表于 01-17 11:33

    巡检机器人落地攻略RK3576驱动12路低延迟视觉

    ,边走边看、实时回传、异常即告警。周三,机器人电跑通:前后左右与顶部共 10~12路1080P 摄像头接入,基于米尔 RK3576开发板 完成 硬件编解码 + RTSP/SRT 低延迟推流;端到端延迟
    发表于 10-24 16:53

    RK3576机器人核心:三屏异显+八路摄像头,重塑机器人交互与感知

    。· 多路MIPI-CSI接口:原生支持接入多个摄像头,为构建多目视觉系统打下坚实基础,满足机器人全方位感知需求。 RK3576机器人领域的核心应用场景特种作业与工程
    发表于 10-29 16:41

    米尔RK3576成功上车ROS2 Humble生态系统体验

    RK3576的强劲“大脑”(四核A72+四核A53)与强大的GPU、VPU、NPU加速模块相遇,一场高性价比的机器人开发革命正在悄然发生。我们成功将完整的Ubuntu 22.04与ROS
    发表于 01-15 18:30

    机器人主控核心板米尔RK3576 + ROS2,NPU加速实现目标跟随与机械臂抓取

    操作”——识别特定物体、主动跟随、近距离抓取。本文将在此基础,集成深度摄像头,实现机器人核心功能: 使用米尔RK3576 NPU加速MixFormerV2进行目标跟踪,替代传统OpenCV算法
    发表于 04-10 21:23

    基于米尔RK3576核心板的国产割草机器人解决方案

    割草机器人需在户外复杂环境中长期稳定运行,对主控芯片的可靠性、算力及功耗提出了极高要求。米尔RK3576核心板以全国产化方案,精准回应了行业痛点。 1. 自主架构的异构计算平台 米尔RK3576核心板
    发表于 04-24 17:31

    ROS机器人开发更便捷,基于RK3568J+Debian系统发布!

    ROS系统是什么 ROS(Robot Operating System)是一个适用于机器人的开源的元操作系统。它提供了操作
    发表于 11-30 16:01

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

    本文介绍Ubuntu部署ROS常见编译报错的解决方法。对编译步骤感兴趣可以查看上篇文章https://www.elecfans.com/d/6788562.html文章适用于瑞芯微旗下RK
    的头像 发表于 07-11 18:34 3859次阅读
    <b class='flag-5'>硬核</b><b class='flag-5'>上车</b>!<b class='flag-5'>RK3576</b>基于<b class='flag-5'>Ubuntu</b><b class='flag-5'>部署</b><b class='flag-5'>ROS</b><b class='flag-5'>机器人</b><b class='flag-5'>系统</b><b class='flag-5'>详细</b><b class='flag-5'>攻略</b>(下)

    瑞芯微RK3576RK3576S有什么区别,性能参数配置与型号差异解析

    瑞芯微第二代8nm高性能AIOT平台RK3576家族再添新成员-RK3576S,先说结论:相较主型号的RK3576/RK3576J,性能略有缩减,而功耗有所降低。主要应用于商显终端、智
    的头像 发表于 08-14 23:57 2765次阅读
    瑞芯微<b class='flag-5'>RK3576</b>与<b class='flag-5'>RK3576</b>S有什么区别,性能参数配置与型号差异解析

    迅为如何在RK3576部署YOLOv5;基于RK3576构建智能门禁系统

    迅为如何在RK3576开发板上部署YOLOv5;基于RK3576构建智能门禁系统
    的头像 发表于 11-25 14:06 2002次阅读
    迅为如何在<b class='flag-5'>RK3576</b>上<b class='flag-5'>部署</b>YOLOv5;基于<b class='flag-5'>RK3576</b>构建智能门禁<b class='flag-5'>系统</b>

    爆火的OpenClaw! 告别云端,米尔RK3576本地部署

    开发板、外接鼠标、键盘和屏幕图:米尔基于RK3576系列开发板调试端:PC电脑(Windows系统Ubuntu系统皆可)1.2.软件资源部署
    的头像 发表于 03-06 08:04 1179次阅读
    爆火的OpenClaw! 告别云端,米尔<b class='flag-5'>RK3576</b>本地<b class='flag-5'>部署</b>

    开发必看,RK3576基于Ubuntu22.04安装 测试ROS2机器人系统

    本文介绍基于Ubuntu22.04安装ROS2机器人系统教程,并附带详细测试方法,基于触觉智能RK357
    的头像 发表于 03-13 17:48 439次阅读
    开发必看,<b class='flag-5'>RK3576</b>基于<b class='flag-5'>Ubuntu</b>22.04安装 测试<b class='flag-5'>ROS</b>2<b class='flag-5'>机器人</b><b class='flag-5'>系统</b>