你好,我是小魚。前面我們通過對嵌入式開發的學習,了解了如何通過代碼來和硬件打交道,但如果你想擁抱ROS的強大生態,還需要把我們的硬件系接入到ROS中來,MicroROS就是幫你完成這一事情的一大利器。所以本章的重點就是帶你一起學習MicroROS的使用。
友情提示:和我們課程的名稱一樣,本教程中所有代碼都非常建議跟著敲一遍,不要直接復制粘貼,寫了才是自己的。
硬件開發平臺
為方便學習,本教程配套的硬件是小魚自制的MicroROS學習板,同時該板可以作為下一章節搭建實體移動機器人的主控板以及后續制作機械臂的驅動板使用。
板載資源圖如下:
該主控板可以在小魚的店鋪直接購買,性價比接地氣,點擊左下角閱讀原文直達魚香小鋪。
1.Micro-ROS介紹與服務安裝
你好,我是愛吃魚香ROS的小魚。本節我們主要介紹下Micro-ROS幾大主要特點。
先上系統框架圖,下面再一一介紹。
一、特點1:運行在微控制器上的ROS2
首先從名稱看,Micro-ROS,Micro指的就是microcontrollers
即微控制器。
核心作用就是上面這句話micro-ROS puts ROS 2 onto microcontrollers
。既然是在微控制器上,因硬件資源受限,其功能肯定會有所裁剪,但核心的ROS2通信功能依然保有。
二、特點2:MicroROS支持多種通信協議并依賴Agent
所謂Agen其實就是一個代理, 微控制器可以通過串口,藍牙、以太網、Wifi等多種協議將數據傳遞給Agent,Agent再將其轉換成ROS2的話題等數據,以此完成通信。
三、特點3:通過RCLC-API調用MicroROS
因為MicroROS遵循RCLCAPI,所以和在上位機中使用Python或者C++調用MicroROS有所不同,最終代碼風格如下面這段所示
#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;
}
四、在上位機上安裝Agent
我們使用Docker來進行Agent的安裝。
4.1 安裝Docker
打開終端,復制粘貼輸入下面代碼
wget http://fishros.com/install -O fishros && . fishros
接著輸入密碼,在下面的界面輸入8,一鍵安裝Docker,完成后等待即可。
4.2 運行Agent
安裝完成Docker后打開終端,輸入下面的指令
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
稍微等待下載完成,看到如下界面表示成功啟動。
上面的指令是使用串口通訊協議運行microros-agent,還可以通過UDP、TCP、CAN等協議運行,具體指令如下
# 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
五、總結
本節我們主要介紹了MicroROS的主要特點,接著介紹使用Docker下載和運行Agent,既然搞定了上位機,下一節我們正是開始在開發板上編寫MicroROS節點,然后測試與上位機的連接是否正常。
-
嵌入式
+關注
關注
5082文章
19104瀏覽量
304816 -
機器人
+關注
關注
211文章
28380瀏覽量
206918 -
Micro
+關注
關注
2文章
262瀏覽量
34833 -
學習板
+關注
關注
0文章
44瀏覽量
12159 -
ROS
+關注
關注
1文章
278瀏覽量
17001
發布評論請先 登錄
相關推薦
評論