linux程序 移植 ros,软件包大赏 | RT-Thread机器人操作系统(ROS)软件包 rosserial

想到把 roserial 移植到 RT-Thread 是因为 RTT 支持的处理器非常多,这样只要把 rosserial 移植到了 RT-Thread 上,那么很多 MCU 就都能作为 ROS 机器人的节点了。这样说不定以后机器人就分为2个部分 ROS + RT-Thread 了:大量的计算用高性能主节点用 Ubuntu 跑 ROS,外设节点用 RT-Thread 采集传感器数据,感觉这样搭配还是挺不错的 ~160220576_1_20190502123746360

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值