在 ros 中,用于串口通信的是 rosserial,在 ros2 中,替代的是 micro-ROS.

创建项目

使用 stm32cube 先创建好一个工程,配置好相关的参数。

生成 micro-ros 静态库

  • 可以先看下介绍 https://github.com/micro-ROS/micro_ros_setup
  • 在项目文件夹下面,clone 一下 https://github.com/micro-ROS/micro_ros_stm32cubemx_utils
  • 进入 micro_ros_stm32cubemx_util 之后,切换到 ros 版本分支,比如 foxy
  • 根据需要,决定是否使用 dos2unix。
  • 修改 Makefile,增加如下:
    
    #######################################
    # micro-ROS addons
    #######################################
    LDFLAGS += micro_ros_stm32cubemx_utils/microros_static_library/libmicroros/libmicroros.a
    C_INCLUDES += -Imicro_ros_stm32cubemx_utils/microros_static_library/libmicroros/microros_include

Add micro-ROS utils

C_SOURCES += micro_ros_stm32cubemx_utils/extra_sources/custom_memory_manager.c C_SOURCES += micro_ros_stm32cubemx_utils/extra_sources/microros_allocators.c C_SOURCES += micro_ros_stm32cubemx_utils/extra_sources/microros_time.c

Set here the custom transport implementation

C_SOURCES += micro_ros_stm32cubemx_utils/extra_sources/microros_transports/dma_transport.c

print_cflags: @echo $(CFLAGS)


+ 拉取生成 micro-ros 库的 docker `docker pull microros/micro_ros_static_library_builder:foxy`
+ 运行 `docker run -it --rm -v $(pwd):/project --env MICROROS_LIBRARY_FOLDER=micro_ros_stm32cubemx_utils/microros_static_library microros/micro_ros_static_library_builder:foxy`
+ 查看生成的静态库 `micro_ros_stm32cubemx_utils/microros_static_library/libmicroros/libmicroros.a`

# 使用 micro-ros
+ 参考 micro_ros_stm32cubemx_utils 下面的 sample_main ,修改项目自身的 main

# 参考:
+ [How to setup micro-ROS on any STM32 microcontroller](https://www.youtube.com/watch?v=xbWaHARjSmk)
+ [【分享】microROS 和 rosserial 对比](https://fishros.org.cn/forum/topic/1960/%E5%88%86%E4%BA%AB-microros-%E5%92%8C-rosserial-%E5%AF%B9%E6%AF%94)
+ [stm32系列MICROROS环境配置(使用cubemx+clion+freertos)](https://fishros.org.cn/forum/topic/2423/stm32%E7%B3%BB%E5%88%97microros%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE-%E4%BD%BF%E7%94%A8cubemx-clion-freertos)

发表评论