掌上单片机实验室 – RT-Thread + ROS2 初探(25)

        在初步尝试RT-Thread之后,一直在琢磨如何进一步感受它的优点,因为前面只是用了它的内核,感觉和FreeRTOS、uCOS等RTOS差别不大,至于它们性能、可靠性上的差异,在这种学习性的程序中,很难有所察觉。

        RT-Thread的显性优势之一就是其丰富的软件包,可以将特定功能方便的加入程序,大大提升实现某种目标的可行性和便利性。但那么多软件包,选哪个作为学习素材呢?既希望能和小车结合得比较顺畅、自然,又不希望增加过多硬件,从而增加学习成本。

        十几天前,和一位大学教师朋友聊起,得知ROS从1到2改进了不少,将原来和单片机通讯的rosserial升级为可以在单片机上运行的MicroROS,能支持ROS2的大多数功能,关键是RT-Thread里有MicroROS软件包。

        顿悟,ROS 是结合小车的最佳学习素材啊!五年前就曾尝试过,已初步联通 rosserial,只是在将 rosserial 加入到小车 FreeRTOS 程序框架中时遇阻,后又因其它事情分心而搁置;现在重拾 ROS 顺理成章。正好RT-Thread 将其集成,化解了要基于 RTOS 实施 ROS 的心结,因小车的控制程序都是基于RTOS框架实现的。

        很早就想让圆梦小车成为 ROS的外设,希望这次能如愿。

一、初步规划

        ROS第一个演示的示例就是控制小海龟,而我的小车完全可以成为现实世界的“小海龟”,所以第一步计划就是利用这个示例,让小海龟走出屏幕,到现实世界里转转。

        核心是能将 PC 上运行的 ROS2 和现实世界的小车通讯,让小车具备虚拟小海龟的能力。

        略微了解了一下ROS2,其核心就是一套基于DDS的分布式通讯机制,使机器人各个部件可以相互交流,协同工作。它根据机器人这一特定的需求,设计了诸如:节点、主题、服务、参数、动作等通讯方式,以便在设计机器人部件时,有章可循;组合在一起时,可以无障碍沟通。

        实际上,如今的物联网也是这个需求,如果每个设备都自说自话,就很难在一起工作了。

二、环境准备

        要实现上述规划,首先要做如下环境的准备。

2.1构建 Linux环境

        虽说 ROS2 已经有 Windows 版本,但从网上的信息看,似乎还是对 Linux 支持得比较好,对于我这种PC编程菜鸟而言,还是减少些麻烦,按推荐的来。

        我是将 Linux 安装在

### 安装 PX4-SITL 与 ROS2 集成 对于希望在仿真环境中开发和测试无人机应用的研究人员和开发者来说,将 PX4 Software-In-The-Loop (SITL) 和 Robot Operating System 2 (ROS2) 结合起来是一个理想的选择。以下是详细的安装指导。 #### 准备工作环境 确保已经配置好 Ubuntu 操作系统的开发环境,并更新软件包列表: ```bash sudo apt update && sudo apt upgrade -y ``` #### 安装依赖项 为了支持 PX4 SITL 的编译以及后续操作,在终端执行命令来获取必要的工具链和其他依赖库[^1]: ```bash sudo apt-get install git wget python3-pip build-essential cmake ninja-build \ qtbase5-dev python3-yamlcpp libyaml-cpp-dev libeigen3-dev clang-format \ doxygen graphviz cppcheck valgrind lcov pkg-config protobuf-compiler \ libprotobuf-dev libgoogle-perftools-dev google-mock googletest libc++-dev \ libc++abi-dev lsb-release software-properties-common gnupg2 dirmngr curl ``` #### 获取源码并初始化仓库 克隆 PX4-Autopilot 主仓库到本地计算机上: ```bash git clone https://github.com/PX4/PX4-Autopilot.git --recursive cd PX4-Autopilot ``` #### 编译 PX4 firmware 使用 Ninja 构建系统来进行快速构建过程。这里选择 `px4_sitl_default` 目标作为默认设置: ```bash make px4_sitl_default ``` #### 设置 ROS2 环境 如果尚未安装 ROS2,则需按照官方文档完成 ROS2 发行版的安装流程。之后通过如下方式加载当前 shell session 中的 ROS2 工具路径变量: ```bash source /opt/ros/<ros2-distro>/setup.bash ``` 其中 `<ros2-distro>` 应替换为实际使用的 ROS2 版本名称,比如 foxy 或 humble。 #### 运行带有 MAVLink 节点桥接功能的 Gazebo 世界模拟器 启动包含 MAVLink 接口节点在内的整个仿真场景,以便能够无缝对接至 ROS2 生态圈内: ```bash make px4_sitl_rtps gazebo ``` 此命令会自动创建一个虚拟飞行器实例并与之通信,同时开启 RTPS(Real-Time Publish Subscribe Protocol)协议用于数据交换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入之梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值