天天看點

軟體包大賞第5期 | 機器人作業系統(ROS)軟體包 rosserial

我叫吳晗,現在是華中科技大學能源學院研究所學生,專業是工程熱實體,今年6月份就要畢業了。雖然我的專業工程熱實體看起來好像和 RT-Thread 物聯網作業系統、ROS機器人作業系統并沒有太大聯系,但是在這個學科交叉、專業融合的時代,我覺得專業隻會給一個人帶來更多的自由,而不是束縛。

軟體包大賞第5期 | 機器人作業系統(ROS)軟體包 rosserial

最早接觸 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 采集傳感器資料,感覺這樣搭配還是挺不錯的 ~

軟體包大賞第5期 | 機器人作業系統(ROS)軟體包 rosserial

ROS (Robots Operating System) 在機器人領域應當是用得相當廣了,最早是斯坦福大學的一個軟體架構,現在不管是工業機器人,還是娛樂用的機器人都運作着ROS。

一個機器人通常有很多個部件、傳感器,為了保證機器人不會因為某一個傳感器故障,導緻整個系統癱瘓,是以采用了分布式的節點,利用不同節點之間的通訊收集傳感器資料和控制指令,當中一個通訊協定就是 rosserial。

有了 rosserial 之後,就可以用一個比較強勁的處理器像 x64,ARM 來進行大量計算,像SLAM、圖像識别等,而用一些計算性能不是那麼強的 MCU 如 AVR,STM32 M0/M3 來和外設通訊,采集傳感器資料,這樣整個機器人系統的節點都是可以熱插拔替換的,穩定性就很強了。

安裝過程可以參照 ROS 的官網,現在官方支援最好的還是 Debian 系列,下面以 Ubuntu 安裝 ROS Melodic 為例:

使用 rosserial 需要在 RT-Thread 的包管理器中選擇它,通信方式可以選擇TCP/UART,具體路徑如下:

如果使用 TCP 當然要先確定 rt-thread 有網卡裝置,并擷取到 IP 位址,例如:

enc28j60 + lwip

ESP8266 + AT Client

同時需要确認 BSD Socket API 支援是打開的:

然後就可以生成項目編譯上傳了

首先需要在 Ubuntu 上啟用 rosserial:

如果使用的序列槽:

如果使用的 TCP:

當 ubuntu 和  rt-thread 用序列槽或者TCP連接配接上之後,就可以收到發來的消息了,以 hello world 為例:

當然,rosserial 還提供了其他各種傳感器的資料包格式,這也是使用 ROS 的好處之一了。

項目首頁:

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

原始項目:

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

軟體包大賞第5期 | 機器人作業系統(ROS)軟體包 rosserial

NOW現在行動!

軟體包大賞第5期 | 機器人作業系統(ROS)軟體包 rosserial

RT-Thread

讓物聯網終端的開發變得簡單、快速,晶片的價值得到最大化發揮。Apache2.0協定,可免費在商業産品中使用,不需要公布源碼,無潛在商業風險。

長按二維碼,關注我們

上一篇: Windows10