你好,我是小魚(yú)。前面我們通過(guò)對(duì)嵌入式開(kāi)發(fā)的學(xué)習(xí),了解了如何通過(guò)代碼來(lái)和硬件打交道,但如果你想擁抱ROS的強(qiáng)大生態(tài),還需要把我們的硬件系接入到ROS中來(lái),MicroROS就是幫你完成這一事情的一大利器。所以本章的重點(diǎn)就是帶你一起學(xué)習(xí)MicroROS的使用。
友情提示:和我們課程的名稱一樣,本教程中所有代碼都非常建議跟著敲一遍,不要直接復(fù)制粘貼,寫(xiě)了才是自己的。
硬件開(kāi)發(fā)平臺(tái)
為方便學(xué)習(xí),本教程配套的硬件是小魚(yú)自制的MicroROS學(xué)習(xí)板,同時(shí)該板可以作為下一章節(jié)搭建實(shí)體移動(dòng)機(jī)器人的主控板以及后續(xù)制作機(jī)械臂的驅(qū)動(dòng)板使用。
板載資源圖如下:
該主控板可以在小魚(yú)的店鋪直接購(gòu)買(mǎi),性價(jià)比接地氣,點(diǎn)擊左下角閱讀原文直達(dá)魚(yú)香小鋪。
1.Micro-ROS介紹與服務(wù)安裝
你好,我是愛(ài)吃魚(yú)香ROS的小魚(yú)。本節(jié)我們主要介紹下Micro-ROS幾大主要特點(diǎn)。
先上系統(tǒng)框架圖,下面再一一介紹。
一、特點(diǎn)1:運(yùn)行在微控制器上的ROS2
首先從名稱看,Micro-ROS,Micro指的就是microcontrollers
即微控制器。
核心作用就是上面這句話micro-ROS puts ROS 2 onto microcontrollers
。既然是在微控制器上,因硬件資源受限,其功能肯定會(huì)有所裁剪,但核心的ROS2通信功能依然保有。
二、特點(diǎn)2:MicroROS支持多種通信協(xié)議并依賴Agent
所謂Agen其實(shí)就是一個(gè)代理, 微控制器可以通過(guò)串口,藍(lán)牙、以太網(wǎng)、Wifi等多種協(xié)議將數(shù)據(jù)傳遞給Agent,Agent再將其轉(zhuǎn)換成ROS2的話題等數(shù)據(jù),以此完成通信。
三、特點(diǎn)3:通過(guò)RCLC-API調(diào)用MicroROS
因?yàn)镸icroROS遵循RCLCAPI,所以和在上位機(jī)中使用Python或者C++調(diào)用MicroROS有所不同,最終代碼風(fēng)格如下面這段所示
#include < rcl/rcl.h >
#include < rclc/rclc.h >
#include < rclc/executor.h >
rclc_executor_t executor;
rclc_support_t support;
rcl_allocator_t allocator;
rcl_node_t node;
rcl_timer_t timer;
void setup() {
// Configure serial transport
Serial.begin(115200);
set_microros_serial_transports(Serial);
delay(2000);
allocator = rcl_get_default_allocator();
//create init_options
RCCHECK(rclc_support_init(&support, 0, NULL, &allocator));
// create node
RCCHECK(rclc_node_init_default(&node, "micro_ros_platformio_node", "", &support));
// create publisher
RCCHECK(rclc_publisher_init_default(
&publisher,
&node,
ROSIDL_GET_MSG_TYPE_SUPPORT(std_msgs, msg, Int32),
"micro_ros_platformio_node_publisher"));
// create executor
RCCHECK(rclc_executor_init(&executor, &support.context, 1, &allocator));
RCCHECK(rclc_executor_add_timer(&executor, &timer));
msg.data = 0;
}
四、在上位機(jī)上安裝Agent
我們使用Docker來(lái)進(jìn)行Agent的安裝。
4.1 安裝Docker
打開(kāi)終端,復(fù)制粘貼輸入下面代碼
wget http://fishros.com/install -O fishros && . fishros
接著輸入密碼,在下面的界面輸入8,一鍵安裝Docker,完成后等待即可。
4.2 運(yùn)行Agent
安裝完成Docker后打開(kāi)終端,輸入下面的指令
sudo docker run -it --rm -v /dev:/dev -v /dev/shm:/dev/shm --privileged --net=host microros/micro-ros-agent:$ROS_DISTRO serial --dev /dev/ttyUSB0 -v6
稍微等待下載完成,看到如下界面表示成功啟動(dòng)。
上面的指令是使用串口通訊協(xié)議運(yùn)行microros-agent,還可以通過(guò)UDP、TCP、CAN等協(xié)議運(yùn)行,具體指令如下
# UDPv4 micro-ROS Agent
docker run -it --rm -v /dev:/dev -v /dev/shm:/dev/shm --privileged --net=host microros/micro-ros-agent:$ROS_DISTRO udp4 --port 8888 -v6
# Serial micro-ROS Agent
docker run -it --rm -v /dev:/dev -v /dev/shm:/dev/shm --privileged --net=host microros/micro-ros-agent:$ROS_DISTRO serial --dev [YOUR BOARD PORT] -v6
# TCPv4 micro-ROS Agent
docker run -it --rm -v /dev:/dev -v /dev/shm:/dev/shm --privileged --net=host microros/micro-ros-agent:$ROS_DISTRO tcp4 --port 8888 -v6
# CAN-FD micro-ROS Agent
docker run -it --rm -v /dev:/dev -v /dev/shm:/dev/shm --privileged --net=host microros/micro-ros-agent:$ROS_DISTRO canfd --dev [YOUR CAN INTERFACE] -v6
五、總結(jié)
本節(jié)我們主要介紹了MicroROS的主要特點(diǎn),接著介紹使用Docker下載和運(yùn)行Agent,既然搞定了上位機(jī),下一節(jié)我們正是開(kāi)始在開(kāi)發(fā)板上編寫(xiě)MicroROS節(jié)點(diǎn),然后測(cè)試與上位機(jī)的連接是否正常。
-
嵌入式
+關(guān)注
關(guān)注
5092文章
19177瀏覽量
307632 -
機(jī)器人
+關(guān)注
關(guān)注
211文章
28635瀏覽量
208386 -
Micro
+關(guān)注
關(guān)注
2文章
266瀏覽量
34944 -
學(xué)習(xí)板
+關(guān)注
關(guān)注
0文章
45瀏覽量
12192 -
ROS
+關(guān)注
關(guān)注
1文章
280瀏覽量
17094
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
Micro-ROS:把ROS2放在MCU上
瑞薩電子RA MCU集成micro-ROS框架,簡(jiǎn)化專業(yè)機(jī)器人開(kāi)發(fā)
![瑞薩電子RA MCU集成<b class='flag-5'>micro-ROS</b>框架,簡(jiǎn)化專業(yè)機(jī)器人開(kāi)發(fā)](https://file.elecfans.com/web2/M00/13/22/poYBAGEwhDWARunbAAX10_oFTg0051.png)
貼片頭的分類和主要特點(diǎn)
什么是Lora?LoRa的主要特點(diǎn)?
STE相比于之前的AMTE/MTE主要特點(diǎn)有哪些
通過(guò)RT-Studio添加軟件包到micro-ros下載失敗這個(gè)問(wèn)題是什么原因
變頻空調(diào)的控制原理及主要特點(diǎn)
分享一個(gè)基于FreeRTOS的micro(微型)ROS
基于FreeRTOS的micro(微型)ROS
![基于FreeRTOS的<b class='flag-5'>micro</b>(微型)<b class='flag-5'>ROS</b>](https://file.elecfans.com/web1/M00/C8/2A/pIYBAF9tim2AHt85AAAgW-UsIuY014.png)
瑞薩將micro-ROS移植到RA MCU中
工程師說(shuō) | 通過(guò)RA MCU和微型ROS簡(jiǎn)化機(jī)器人設(shè)計(jì)流程
機(jī)器人上游半導(dǎo)體產(chǎn)業(yè)鏈報(bào)告
![機(jī)器人上游半導(dǎo)體產(chǎn)業(yè)鏈報(bào)告](https://file1.elecfans.com/web2/M00/A9/0F/wKgaomUvj82ALL3XAALPXgeDNLo020.png)
評(píng)論