想到把 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 安装 ROS1sudo 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 启动 ROS1roscore
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
文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux25050 人正在系统学习中 相关资源:诗词鉴赏大全软件-教育文档类资源-CSDN文库
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!