我叫吴晗,现在是华中科技大学能源学院研究生,专业是工程热物理,今年6月份就要毕业了。虽然我的专业工程热物理看起来好像和 RT-Thread 物联网操作系统、ROS机器人操作系统并没有太大联系,但是在这个学科交叉、专业融合的时代,我觉得专业只会给一个人带来更多的自由,而不是束缚。 最早接触 RT-Thread应该是在半年前,终于考完 GRE 决定好好放松一下,刚好看见 “2018 RT-Thread 物联网开发者沙龙(武汉站)”,就打算趁着周末过去学习体验一下。其实之前我用 buildroot 在 荔枝派nano 上构建 linux 根文件系统的时候,就在官方文档上看到过 RT-Thread 的支持,不过当时 RT-Thread 还没给我留下太深的印象。在周末的分享会上,用官方提供的 env 工具 很方便地就在 STM32 Cortex-M3 上配置好了 RTT 内核,还可以选择各种已经移植好的软件包,RT-Thread一下就吸引了我。用 env 配置 RTT 内核和软件包,给我一种用 buildroot 配置 linux 内核和软件包的感觉,非常轻松愉悦。 在分享会最后的提问环节上,有人提到 RT-Thread 对显示屏 UI 的支持还不算太好,而我刚好在那之前把单色液晶屏驱动库 u8g2 移植到了 arm linux 上,于是分享会回来之后就把 u8g2 移植到了 RT-Thread 上,这样 RT-Thread 就可以使用几十种单色屏了,这也是我第一次给 RT-Thread 移植软件包,虽然有很多不足,但是为我之后移植 rosserial 提供了不少经验,今天要介绍的就是上周移植的机器人操作系统(ROS)软件包 rosserial。 想到把 roserial 移植到 RT-Thread 是因为 RTT 支持的处理器非常多,这样只要把 rosserial 移植到了 RT-Thread 上,那么很多 MCU 就都能作为 ROS 机器人的节点了。这样说不定以后机器人就分为2个部分 ROS + RT-Thread 了:大量的计算用高性能主节点用 Ubuntu 跑 ROS,外设节点用 RT-Thread 采集传感器数据,感觉这样搭配还是挺不错的 ~ rosserial 介绍1. 简介ROS (Robots Operating System) 在机器人领域应当是用得相当广了,最早是斯坦福大学的一个软件框架,现在不管是工业机器人,还是娱乐用的机器人都运行着ROS。 一个机器人通常有很多个部件、传感器,为了保证机器人不会因为某一个传感器故障,导致整个系统瘫痪,所以采用了分布式的节点,利用不同节点之间的通讯收集传感器数据和控制指令,当中一个通讯协议就是 rosserial。 有了 rosserial 之后,就可以用一个比较强劲的处理器像 x64,ARM 来进行大量计算,像SLAM、图像识别等,而用一些计算性能不是那么强的 MCU 如 AVR,STM32 M0/M3 来和外设通讯,采集传感器数据,这样整个机器人系统的节点都是可以热插拔替换的,稳定性就很强了。 2. Ubuntu 安装并启动 ROS安装过程可以参照 ROS 的官网,现在官方支持最好的还是 Debian 系列,下面以 Ubuntu 安装 ROS Melodic 为例: 2.1 安装依赖:1sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential 2.2 安装 ROS
2.3 ROS 初始化:1sudo rosdep init 2.4 启动 ROS
3. RT-Thread 使用 rosserial使用 rosserial 需要在 RT-Thread 的包管理器中选择它,通信方式可以选择TCP/UART,具体路径如下: 1RT-Thread online packages 如果使用 TCP 当然要先确保 rt-thread 有网卡设备,并获取到 IP 地址,例如:
同时需要确认 BSD Socket API 支持是打开的:
然后就可以生成项目编译上传了 1pkgs --update 4. 建立 ROS 与 RTT 的连接4.1 Ubuntu 启用 rosserial首先需要在 Ubuntu 上启用 rosserial: 如果使用的串口:
如果使用的 TCP: 1rosrun rosserial_python serial_node.py tcp 4.2 订阅话题当 ubuntu 和 rt-thread 用串口或者TCP连接上之后,就可以收到发来的消息了,以 hello world 为例:
当然,rosserial 还提供了其他各种传感器的数据包格式,这也是使用 ROS 的好处之一了。 相关链接(因微信无法插入外部链接,请将以下链接复制至外部浏览器打开)
|
|
来自: 西北望msm66g9f > 《培训》