打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
软件包大赏 | RT-Thread机器人操作系统(ROS)软件包 rosserial

我叫吴晗,现在是华中科技大学能源学院研究生,专业是工程热物理,今年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
1sudo sh -c 'echo 'deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main' > /etc/apt/sources.list.d/ros-latest.list'
2sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
3sudo apt update
4sudo apt install ros-melodic-desktop-full
2.3 ROS 初始化:
1sudo rosdep init
2rosdep update
3echo 'source /opt/ros/melodic/setup.bash' >> ~/.bashrc
4source ~/.bashrc
2.4 启动 ROS
1roscore

3. RT-Thread 使用 rosserial

使用 rosserial 需要在 RT-Thread 的包管理器中选择它,通信方式可以选择TCP/UART,具体路径如下:

1RT-Thread online packages
2  peripheral libraries and drivers --->
3    [*] rosserial: a protocol for Robots Operating System (ROS)
4        Device type (UART)  --->
5        (uart2) serial device name
6        roserial examples  --->
7          [*] Hello World  : hello world example using UART

如果使用 TCP 当然要先确保 rt-thread 有网卡设备,并获取到 IP 地址,例如:

  • enc28j60 + lwip

  • ESP8266 + AT Client

同时需要确认 BSD Socket API 支持是打开的:

1RT-Thread Components  --->
2    Network  --->
3        Socket abstraction layer  --->
4        -*- Enable socket abstraction layer

然后就可以生成项目编译上传了

1pkgs --update
2scons --target=mdk5 -s

4. 建立 ROS 与 RTT 的连接

4.1 Ubuntu 启用 rosserial

首先需要在 Ubuntu 上启用 rosserial:

如果使用的串口:

1rosrun rosserial_python serial_node.py /dev/ttyUSB0

如果使用的 TCP:

1rosrun rosserial_python serial_node.py tcp
4.2 订阅话题

当 ubuntu 和  rt-thread 用串口或者TCP连接上之后,就可以收到发来的消息了,以 hello world 为例:

1$ rostopic echo /chatter
2
3data: hello world
4---
5data: hello world
6---
7data: hello world
8---

当然,rosserial 还提供了其他各种传感器的数据包格式,这也是使用 ROS 的好处之一了。

相关链接(因微信无法插入外部链接,请将以下链接复制至外部浏览器打开)

  • 项目主页:

    https://github.com/wuhanstudio/rt-rosserial

  • 原始项目:

    https://github.com/ros-drivers/rosserial

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
开源项目|软件包应用作品:通用物联网系统平台
学习ROS第2天--数据的回放
发布 ROS 机器人课程 | 免费 | 零基础
RT-Thread内核实现的思维导图
视频教程 | RT-thread 入门培训
ROS问题及解决方案
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服