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

TL3588 工控单板 ROS2 开发实战:交叉编译、机器人通信与功能包部署全流程

前 言

本文档主要演示基于单板机/工控机的ROS系统(版本:ROS2 Humble)使用说明,包括ROS系统镜像编译、镜像替换,以及ROS系统测试的方法。

备注:本文适用于SBC-TL3588单板机及EPC-TL3588工控机系列(由SBC-TL3588单板机搭配扩展板与外壳组成),文中所有演示均基于4GByte LPDDR4X + 32GByte eMMC硬件配置的单板机开展。

开发环境

Windows开发环境:Windows10 64bit、Windows7 64bit

Linux开发环境:VMware16.2.5、Ubuntu22.04.4 64bit

系统版本:Tronlong-Desktop 22.04(类Ubuntu)、Linux-6.1.141、U-Boot 2017.09

sysroot:rk3588-Tronlong-Desktop-22.04-sysroot-[版本号].tar.gz

应用开发交叉编译工具链:aarch64-linux-gnu-gcc(版本为11.4.0,通过网络下载)

ROS:ROS2 Humble

术语表

为便于阅读,下表对文档出现的关键术语进行解释;对于广泛认同释义的术语,在此不做注释。

注意事项

1、我司ROS系统源码基于ROS官方获取,并参考瑞芯微官方文档进行编译。更多信息请查看“6-开发参考资料\Rockchip官方参考文档\Linux\ApplicationNote\”目录下的《Rockchip_Instruction_Linux_ROS2_CN》文档。

2、无特殊说明,默认从eMMC启动系统,使用DEBUG作为调试串口,使用HDMI显示屏作为显示输出。

一、ROS系统测试

执行如下命令,配置单板机测试环境。

Target#export COLCON_CURRENT_PREFIX=/opt/ros/humble //设置COLCON_CURRENT_PREFIX环境变量,并将其值指向ROS2 Humble的安装目录

Target#source /opt/ros/humble/local_setup.sh //执行ROS2 Humble的环境设置脚本,从而将ROS2的命令、库路径、功能包信息等加载到当前的Shell会话中

图 1

1.1 基于Python的通信功能测试

执行如下命令,创建Log目录,用于保存ROS程序运行的Log。

Target#mkdir -p /root/.ros/log

图 2

执行如下命令,启动ROS节点订阅消息。

Target#ros2 run demo_nodes_py listener &

图 3

执行如下命令,启动ROS节点发布消息,实现订阅消息节点与发布消息节点之间的通信。此时单板机串口调试终端将会打印两节点间通信的信息,如下图所示。按"Ctrl + C"可退出测试程序,即让发布消息的节点退出。

Target#ros2 run demo_nodes_py talker

图 4

执行如下命令,根据系统进程号关闭所有ROS节点。进程号请以实际情况为准。

Target#ps -a

Target#kill 2244

Target#kill 2246

图 5

1.2 基于C++的通信功能测试

执行如下命令,创建Log目录,用于保存ROS程序运行的Log。

备注:若已创建Log目录,可跳过此步骤。

Target#mkdir -p /root/.ros/log

图 6

执行如下命令,启动ROS节点订阅消息。

Target#ros2 run demo_nodes_cpp listener &

图 7

执行如下命令,启动ROS节点发布消息,实现订阅消息节点与发布消息节点之间的通信。此时单板机串口调试终端将会打印两节点间通信的信息,如下图所示。按"Ctrl + C"可退出测试程序,即让发布消息的节点退出。

Target#ros2 run demo_nodes_cpp talker

图 8

执行如下命令,根据系统进程号关闭所有ROS节点。进程号请以实际情况为准。

Target#ps -a

Target#kill 2273

Target#kill 2274

图 9

1.3 turtlesim(小海龟)测试

执行如下命令,配置单板机测试环境。

备注:若已配置单板机测试环境,可跳过此步骤。

Target#export COLCON_CURRENT_PREFIX=/opt/ros/humble //设置COLCON_CURRENT_PREFIX环境变量,并将其值指向ROS2 Humble的安装目录

Target#source /opt/ros/humble/local_setup.sh //执行ROS2 Humble的环境设置脚本,从而将ROS2的命令、库路径、功能包信息等加载到当前的Shell会话中

图 10

执行如下命令,创建Log目录,用于保存ROS程序运行的Log。

备注:若已创建Log目录,可跳过此步骤。

Target#mkdir -p /root/.ros/log

图 11

执行如下命令,后台运行小海龟程序。

Target#ros2 run turtlesim turtlesim_node &

图 12

图 13

执行如下命令,发布话题消息,使小海龟转圈。

Target#ros2 topic pub --rate 1 /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"

图 14

参数解析:

ros2 topic pub:发布消息到主题;

--rate 1:发布消息速率,设置为1次每秒;

/turtle1/cmd_vel:主题名称;

geometry_msgs/msg/Twist:发布消息类型;

{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}:发布消息的内容,线速度(linear)为x方向上的2.0、角速度(angular)为z轴方向上的1.8。

图 15

二、ROS开发

请先参考《开发环境搭建》文档进行VMware虚拟机与Ubuntu安装,并参考《应用开发手册》文档正确安装sysroot。本小节主要演示基于上位机Ubuntu的ROS系统编译与镜像制作方法。

2.1 开发环境搭建

打开Ubuntu终端,执行如下命令,安装编译所需的colcon工具。

Host#sudo apt install curl

Host#sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

图 16

因网络问题,下载GPP密钥可能会失败,若无法下载,可将产品资料“4-软件资料/Demo/other”目录下的ros-archive-keyring.gpg文件拷贝到Ubuntu系统"/usr/share/keyrings/"目录。执行如下命令,安装ros工具。

Host#sudo cp ros-archive-keyring.gpg /usr/share/keyrings/

Host#sudo echo "deb [arch=amd64 signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu jammy main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

Host#sudo apt update

Host#sudo apt install ros-humble-ros-base -y

图 17

图 18

图19

执行如下命令,安装编译所需的colcon工具。

Host#curl -s https://packagecloud.io/install/repositories/dirk-thomas/vcstool/script.deb.sh | sudo bash //下载并运行vcstool的安装脚本

Host#sudo apt update //更新软件包列表

Host#sudo apt-get install -y python3-pip python3-rosdep2 python3-rosinstall-generator python3-vcstool build-essential //安装ROS2开发所需的工具和依赖

Host#pip3 install -U colcon-common-extensions //安装colcon-common-extensions工具

Host#pip3 uninstall empy //卸载旧版empy包

Host#pip3 install empy==3.3.4 //安装指定版本3.3.4的empy包

图 20

图 21

图 22

图23

执行如下命令,配置环境变量。

Host#export PATH=${PATH}:/home/tronlong/.local/bin //将用户本地bin目录添加到PATH环境变量

图 24

2.2 编译ROS软件包

请根据交叉编译工具链实际解压路径,执行如下命令,配置交叉编译工具链。

Host#source /home/tronlong/RK3588/environment //配置交叉编译工具链环境变量

Host#source /opt/ros/humble/local_setup.bash //执行ROS2的本地安装脚本,配置ROS2的运行环境

图 25

执行如下命令,创建ROS软件包的工作目录,并进入该目录,目录可命名为任意名称。

Host#mkdir ros2_project_test

Host#cd ros2_project_test

图 26

执行如下命令,创建ROS软件包源码目录,并进入该目录。

Host#mkdir src

Host#cd src

图 27

执行如下命令,在源码目录下生成my_package包。本案例以构建CPP功能包为例,如需构建Python功能包可将参数ament_cmake改为ament_python。

Host#ros2 pkg create --build-type ament_cmake --node-name my_node my_package //建一个名为my_package的ROS软件包

图 28

参数解析:

--build-type ament_cmake :指定软件包的构建类型为ament_cmake。

--node-name my_node:为软件包指定了一个my_node节点。

--my_package:软件包的名称为my_package。

完成构建后,ROS软件包源码目录结构如下所示。可根据实际需要对"my_package/src/my_node.cpp"进行修改。

图 29

返回ROS软件包工作目录,编译软件包。

Host#cd ..

Host#colcon build

图 30

编译完成后在当前目录下生成如下目录,目录内容如下表所示。

图 31

2.3 ROS软件测试

请将完成编译的ROS软件包中install目录拷贝至单板机系统"/opt/ros/humble"目录下,执行如下命令配置ROS的运行环境与命令行工具。

Target#export COLCON_CURRENT_PREFIX=/opt/ros/humble //设置当前ROS工作空间前缀为Humble安装路径

Target#source /opt/ros/humble/local_setup.sh //执行ROS2的本地安装脚本,配置ROS2的运行环境

图 32

执行如下命令,加载ROS软件包环境。

Target#export COLCON_CURRENT_PREFIX=/opt/ros/humble/install //设置当前ROS工作空间前缀为ROS软件包安装路径

Target#source /opt/ros/humble/install/local_setup.sh //执行ROS2的本地安装脚本,配置ROS2的运行环境

图 33

执行如下命令,运行ROS软件包,可以看到当前ROS软件包程序运行打印结果。

Target#ros2 run my_package my_node //运行自定义节点my_node

图 34

http://www.jsqmd.com/news/1146873/

相关文章:

  • ELAN4D:具身智能的4D运动监督框架解析
  • 如何免费获取网盘直链下载地址:告别限速的终极解决方案
  • 工业自动化中电感电阻负载的精确控制方案
  • Python自动化剪映:技术架构与实现原理深度解析
  • 告别限速!八大网盘直链下载助手完整指南:免费提速下载的终极方案
  • 亚马逊协议三视频通关技术逻辑与行为规范指南
  • 家庭游戏串流革命:如何用Sunshine打造全屋游戏共享中心
  • 什么款式的蓝牙耳机跑步不容易掉?精选十款旗舰机型,建议看完
  • RAG 论文精读:DPR + BART 架构解析与 4 大知识任务实战对比
  • TB67H480FNG与STM32F746ZG电机控制方案详解
  • 杰理 AC696N 开发分享 —— 自定义更改提示音
  • 大规模AI推理生产环境避坑指南:来自Workato、Hippocratic AI、ISMG的工程实战
  • 如何用Sunshine搭建你的私人云游戏服务器:从零开始的完整指南
  • 多相机同步控制的原理和方法
  • Kaggle OTTO 多目标推荐系统:Top3方案核心特征工程与模型融合策略解析
  • Sunshine游戏串流服务器:3步实战构建你的私有云游戏平台
  • 当人工智能的时代的到来,写代码编的轻松简单,程序员还有用吗
  • 工程供应商管理软件如何选型,规范供方准入与结算对账风险
  • 【Java毕业设计】基于 SpringBoot 的实验室课程实训管理系统的设计与实现 基于前后端分离的高校实验室设备教学管理系统(源码+文档+远程调试,全bao定制等)
  • PaddlePaddle 2.5 实战:4层BP神经网络MNIST识别,测试集准确率达98%
  • OceanBase Lakebase 架构解析:独立部署与智能叠加层模式的技术实践
  • 基于PIC18F45K22与EPT-14A4005P的高可靠性警报系统设计
  • Java计算机毕设之基于 SpringBoot 的水果电商订单管理系统的设计与实现 基于 SpringBoot 的攀枝花助农水果销售平台(完整前后端代码+说明文档+LW,调试定制等)
  • 高速脉冲向导实现伺服电机绝对位置控制的方法与实践
  • Java毕业设计-基于 SpringBoot+Vue 的攀枝花水果在线销售系统的设计与实现 基于 SpringBoot 的攀枝花特色水果电商平台(源码+LW+部署文档+全bao+远程调试+代码讲解等)
  • OpenClaw:Windows本地化技能编排引擎实战指南
  • 2026年7月,南京庭院驱蚊系统怎么装才不白花钱?夏天高温效果差,后悔没早知道
  • 基于WSEN-ISDS和MK64FN1M0VDC12的三轴运动跟踪系统设计
  • 【计算机Java毕业设计案例】基于 SpringBoot 的旧书回收售卖管理系统的设计与实现 基于前后端分离的书籍闲置资源共享交易系统(程序+文档+讲解+定制)
  • 服装库存周转优化程序,SPA小批量上新逻辑算法,降低滞销库存占用资金。