利用micro_ros实现esp32与ros2的通讯

本文介绍了如何利用micro_ros和micro_ros_arduino在ESP32(M5stack Atom Lite)与ROS2(Ubuntu 20.04, ROS2 Foxy)之间建立通讯。内容涵盖了micro_ros与micro_ros_arduino的安装,下位机(Arduino环境)的配置,包括arduino支持包安装和代码解析,以及上位机的配置,包括串口通信和turtlesim_node的运行。此外,还讨论了话题发布频率和QoS设置对通信的影响。" 114720149,10296218,jenkins连接mysql实践:流水线操作数据库,"['Jenkins', '数据库管理', 'Docker', 'MySQL', '持续集成']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用micro_ros实现esp32与ros2的通讯

参考:https://github.com/micro-ROS/micro_ros_arduino

https://blog.youkuaiyun.com/ZhangRelay/article/details/101394537


  • micro_ros可以理解为一个运行在嵌入式平台的轻量级ros,其好处是建立了一套上位机平台(主要运行ubuntu+ros)与下位机平台(MCU)的通讯机制,包括串口、UDP、wifi等,省去了我们编写通讯协议的烦恼。

  • 这套通讯机制最大的好处是可以将下位机平台(MCU)当作ros中的一个Node,实现topic的发布、订阅,以及service、action等等。可以说是无缝兼容ros。

  • 个人粗浅的理解,ros最大的方便就是提供了一个基于Node的分布式通讯机制。

本文所用安装环境:

  • 上位机:旭日x3派 (ros2 foxy+ubuntu 20.04)
  • 下位机:M5stack Atom Lite(esp32 core)

0. micro_ros与micro_ros_arduino的安装

参考我之前写的一篇记录https://zhuanlan.zhihu.com/p/540924221

特别注意:

  • 2GB内存的旭日x3派开启swap,否则micro_ros_agent的build过程容易内存不足;
  • 网络环境务必能够通畅无阻的访问github,否则大概率失败!

1. 下位机配置

1.1 arduino支持包安装

我这里使用的下位机是M5stack Atom Lite,其核心是esp32,但我用arduino框架进行开发。

理论上,所有支持arduino开发的嵌入式平台应该都可以。

注意:务必安装自己嵌入式平台对应的arduino支持包。

正确安装M5stack支持包后,在开发板管理中应该出现M5 stack相关的信息。

image-20220716210240849

1.2 下位机代码

#include <micro_ros_arduino.h>

#include <stdio.h>
#include <rcl/rcl.h>
#include <rcl/error_handling.h>
#include <rclc/rclc.h>
#include <rclc/executor.h>

#include <geometry_msgs/msg/twist.h>  //changed!

rcl_publisher_t publisher;
geometry_msgs__msg__Twist msg; //changed!-->modify msg type <twist__struct.h>
rclc_executor_t executor;
rclc_support_t support;
rcl_allocator_t allocator;
rcl_node_t node;
rcl_timer_t timer;

#define LED_PIN 27 //changed!-->Modify M5 stack Atom Lite LED pin

#define RCCHECK(fn) {
      rcl_ret_t temp_rc = fn; if((temp_rc != RCL_RET_OK)){
     error_loop();}}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值