RK3562 单板机嵌入式 ROS2 开发指南:环境搭建与工程编译
前言本文档主要演示ROS系统(版本:ROS2 Foxy)使用说明,包括镜像编译、镜像替换,以及ROS系统测试的方法。开发环境Windows开发环境:Windows7 64bit、Windows10 64bitLinux开发环境:VMware16.2.5、Ubuntu20.04.6 64bitsysroot:rk3562-Tronlong-Desktop-20.04-sysroot-[版本号].tar.gz系统版本:Tronlong-Desktop 20.04(类Ubuntu)、Linux-5.10.209、U-Boot-2017.09ROS:ROS2 Foxy备注:本文基于2GByte LPDDR4X、16GByte eMMC配置单板机进行演示。术语表为便于阅读,下表对文档出现的关键术语进行解释;对于广泛认同释义的术语,在此不做注释。
https://file1.elecfans.com/web3/M00/51/05/wKgZO2nF97iAKC5OAAArLWuxTw4763.png
注意事项(1)我司ROS系统源码基于ROS官方获取,并基于瑞芯微官方参考文档编译。更多详细信息请查看“6-开发资料\Rockchip官方参考文档\cn\Linux\ApplicationNote\”目录下的《Rockchip_Instruction_Linux_ROS2_CN》文档。(2)无特殊说明情况下,本文默认从eMMC启动系统,使用DEBUG作为调试串口,使用欣瑞达的XT070YTA23R_A6 LVDS电阻屏作为显示输出。
https://file1.elecfans.com/web3/M00/4B/E0/wKgZPGmdHbiAXPQgAAthB9zoGQQ118.png
图 1
1 ROS系统测试执行如下命令,配置单板机测试环境。Target# export COLCON_CURRENT_PREFIX=/opt/rosTarget# source /opt/ros/local_setup.sh
https://file1.elecfans.com/web3/M00/51/09/wKgZPGnF98WAZrQ5AAAMA0_OgvU700.png
图 2
1.1基于Python的通信功能测试执行如下命令,创建Log目录,用于保存ROS程序运行的Log。Target# mkdir -p /root/.ros/log
https://file1.elecfans.com/web3/M00/51/09/wKgZPGnF982AQ_WTAAAGjA-gmBI152.png
图 3
执行如下命令,启动ROS节点订阅消息。Target# ros2 run demo_nodes_py listener &
https://file1.elecfans.com/web3/M00/51/09/wKgZPGnF99SAOzIjAAAJgPWy4Ig017.png
图 4
执行如下命令,启动ROS节点发布消息,实现订阅消息节点与发布消息节点之间的通信。此时单板机串口调试终端将会打印两节点间通信的信息,如下图所示。按"Ctrl + C"可退出测试程序,即让发布消息的节点退出。Target# ros2 run demo_nodes_py talker
https://file1.elecfans.com/web3/M00/51/09/wKgZPGnF9-CAavapAACFHozgSd8312.png
图 5
执行如下命令,查看并根据系统进程号关闭所有ROS节点。进程号请以实际情况为准。Target# ps -aTarget# kill 2827Target# kill 2830
https://file1.elecfans.com/web3/M00/51/06/wKgZO2nF9-iAcxIEAAAlHLLzgoc818.png
图 6
1.2基于C++的通信功能测试执行如下命令,创建Log目录,用于保存ROS程序运行的Log。备注:若已创建Log目录,可跳过此步骤。Target# mkdir -p /root/.ros/log
https://file1.elecfans.com/web3/M00/51/09/wKgZPGnF982AQ_WTAAAGjA-gmBI152.png
图 7
执行如下命令,启动ROS节点订阅消息。Target# ros2 run demo_nodes_cpp listener &
https://file1.elecfans.com/web3/M00/51/06/wKgZO2nF9_iAX_zXAAAJh4YS2Io892.png
图 8
执行如下命令,启动ROS节点发布消息,实现订阅消息节点与发布消息节点之间的通信。此时单板机串口调试终端将会打印两节点间通信的信息,如下图所示。按"Ctrl + C"可退出测试程序,即让发布消息的节点退出。Target# ros2 run demo_nodes_cpp talker
https://file1.elecfans.com/web3/M00/51/06/wKgZO2nF9_-AFwKDAACcdTbhAtU324.png
图 9
执行如下命令,根据系统进程号关闭所有ROS节点。进程号请以实际情况为准。Target# ps -aTarget# kill 3060Target# kill 3062
https://file1.elecfans.com/web3/M00/51/06/wKgZO2nF-AeAaeKCAAAkugOvkjg066.png
图 10
1.3turtlesim(小海龟)测试请通过DVI线将LVDS显示屏连接至单板机LVDS OUT接口。然后执行如下命令,配置单板机测试环境。备注:若已配置单板机测试环境,可跳过此步骤。Target# export COLCON_CURRENT_PREFIX=/opt/rosTarget# source /opt/ros/local_setup.sh
https://file1.elecfans.com/web3/M00/51/06/wKgZO2nF-A6AZHmmAAAMH3C1k8U374.png
图 11
执行如下命令,创建Log目录,用于保存ROS程序运行的Log。备注:若已创建Log目录,可跳过此步骤。Target# mkdir -p /root/.ros/log
https://file1.elecfans.com/web3/M00/51/09/wKgZPGnF982AQ_WTAAAGjA-gmBI152.png
图 12
执行如下命令,后台运行小海龟程序。Target# ros2 run turtlesim turtlesim_node &
https://file1.elecfans.com/web3/M00/51/06/wKgZO2nF-B6AUIq-AAAmt_xCCDM153.png
图 13
https://file1.elecfans.com/web3/M00/51/09/wKgZPGnF-CGAI4iJAPsHBlawpdA364.png
图 14
执行如下命令,发布话题消息,使小海龟转圈。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}}"
https://file1.elecfans.com/web3/M00/51/09/wKgZPGnF-C2AAqsmAACBn-pu9Gk260.png
图 15
参数解析: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。
https://file1.elecfans.com/web3/M00/51/06/wKgZO2nF-DeAfx7cAQPN0Cfc91o311.png
图 16
2 ROS开发请先参考《开发环境搭建》文档进行VMware虚拟机与Ubuntu安装,并参考《应用开发手册》文档正确安装sysroot。本小节主要演示基于上位机Ubuntu的ROS系统编译与镜像制作方法。2.1开发环境搭建打开Ubuntu终端,执行如下命令,安装编译所需的colcon工具。Host# sudo apt install curlHost# curl -s https://packagecloud.io/install/repositories/dirk-thomas/vcstool/script.deb.sh | sudo bashHost# sudo apt updateHost# sudo apt-get install -y python3-pip python3-rosdep2 python3-rosinstall-generator python3-vcstool build-essentialHost# pip3 install -U colcon-common-extensionsHost# pip3 uninstall empyHost# pip3 install empy==3.3.4
https://file1.elecfans.com/web3/M00/51/06/wKgZO2nF-EmAdm8NAAEzef4NUSY894.png
图 17
https://file1.elecfans.com/web3/M00/51/06/wKgZO2nF-EmAJUbTAAGj8bKNB60289.png
图 18
https://file1.elecfans.com/web3/M00/51/06/wKgZO2nF-EmAJ1wBAAFk_bP5uZQ222.png
图 19
https://file1.elecfans.com/web3/M00/51/09/wKgZPGnF-EmAHTeNAACd1F_czAY413.png
图 20
https://file1.elecfans.com/web3/M00/51/09/wKgZPGnF-EmAOfPVAAE_6NrYOmE115.png
图 21
https://file1.elecfans.com/web3/M00/51/06/wKgZO2nF-EmAEzkrAACvU1XcTAY266.png
图 22
https://file1.elecfans.com/web3/M00/51/09/wKgZPGnF-EmAD27cAAGZELv-kGU802.png
图 23
执行如下命令,配置环境变量。Host# export PATH=${PATH}:/home/tronlong/.local/bin
https://file1.elecfans.com/web3/M00/51/09/wKgZPGnF-NeAa8X4AAAqZ_R0zNg281.png
图 24
由于篇幅过长等原因,部分内容均不逐一展示,如需获取完整版详细资料,请关注Tronlong创龙科技微信公众号或官网,或者评论区留言,感谢您的支持!
页:
[1]