你好,我是小鱼。前面我们通过对嵌入式开发的学习,了解了如何通过代码来和硬件打交道,但如果你想拥抱ROS的强大生态,还需要把我们的硬件系接入到ROS中来,MicroROS就是帮你完成这一事情的一大利器。所以本章的重点就是带你一起学习MicroROS的使用。
友情提示:和我们课程的名称一样,本教程中所有代码都非常建议跟着敲一遍,不要直接复制粘贴,写了才是自己的。
为方便学习,本教程配套的硬件是小鱼自制的MicroROS学习板,同时该板可以作为下一章节搭建实体移动机器人的主控板以及后续制作机械臂的驱动板使用。
板载资源图如下:
该主控板可以在小鱼的店铺直接购买,性价比接地气,点击左下角阅读原文直达鱼香小铺。
你好,我是爱吃鱼香ROS的小鱼。本节我们主要介绍下Micro-ROS几大主要特点。
先上系统框架图,下面再一一介绍。
首先从名称看,Micro-ROS,Micro指的就是microcontrollers
即微控制器。
核心作用就是上面这句话micro-ROS puts ROS 2 onto microcontrollers
。既然是在微控制器上,因硬件资源受限,其功能肯定会有所裁剪,但核心的ROS2通信功能依然保有。
所谓Agen其实就是一个代理, 微控制器可以通过串口,蓝牙、以太网、Wifi等多种协议将数据传递给Agent,Agent再将其转换成ROS2的话题等数据,以此完成通信。
因为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;
}
我们使用Docker来进行Agent的安装。
打开终端,复制粘贴输入下面代码
wget http://fishros.com/install -O fishros && . fishros
接着输入密码,在下面的界面输入8,一键安装Docker,完成后等待即可。
安装完成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节点,然后测试与上位机的连接是否正常。
全部0条评论
快来发表一下你的评论吧 !