micro-ROS / micro-ROS/micro_ros_platformio
Micro-ROS timer not working on my esp32 board/toolchain
还没有人认领这个 Issue。
- 主要语言
- Python
- 星标
- 334
- 派生
- 111
- PR 合并指标
- 30 天内没有已合并 PR
描述
Hey! I have some issues getting the micro-ROS timers working on my ESP32, from the micro-ROS publisher example for platformIO: https://github.com/micro-ROS/micro_ros_platformio/tree/main/examples/micro-ros_publisher.
I understand that the supported boards for ESP32 are the esp32dev with the espressif32 platform. Unfortunately, due to the drivers for the servos I am trying to run, I am forced to configure my platformIO environment with the nodemcu-32s board and the espressif32@2.0.0 platform (I am unable to read or write to the bus servos without this). Hence, my environment setup in my platformio.ini file is the following:
[env:nodemcu-32s]
platform = espressif32@2.0.0
board = nodemcu-32s
framework = arduino
monitor_speed = 115200
lib_deps =
madhephaestus/lx16a-servo@^0.9.3
https://github.com/micro-ROS/micro_ros_platformio
board_microros_distro = humble
board_microros_transport = serial
when it should be:
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
lib_deps =
madhephaestus/lx16a-servo@^0.9.3
https://github.com/micro-ROS/micro_ros_platformio
board_microros_distro = humble
board_microros_transport = serial
I intend to use the timers to publish the servo positions at a set rate.
- Hardware description: ESP32dev board (ESP32 devkitC), Ubuntu 22.04 on WSL
- Installation type: ROS2 Humble Hawksbill installed using https://docs.ros.org/en/humble/Installation.html and microROS installed as per https://micro.ros.org/docs/tutorials/core/teensy_with_arduino/.
- Version or commit hash: humble
I have been able to create regular publishers and subscribers that work, but I am unable to use the timers. When I run the ros agent with the platformIO setup as first shown, the timer publisher topic appears, but does not publish (it never enters the timer callback). However when I run the micro-ros agent with the environment set up as in the second instance, the publisher topic both appears and contents are published to the topic.
It appears as though it is an issue with the board setting i.e. board = nodemcu-32s or board = esp32dev in the .ini file, since when I alter the platform, without altering the board setting, the publisher still does not give the expected outcome. However, I am unable to use board = esp32dev since the toolchain/platform I require (espressif32@2.0.0) is not available for this board.
Is there something I can perhaps change in the header files, or at a lower level to get timer functionality working on the older board and platform?
Help would be greatly appreciated.
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
从 examples/micro-ros_publisher 示例开始,并比较 issue 中描述的两个 platformio.ini 环境。使用 nodemcu-32s 开发板和 espressif32@2.0.0 重现定时器行为,然后确定定时器回调是否运行;当定时器像使用 esp32dev 配置时一样发布消息时,即表示完成。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- arduino
- 领域
- embedded-iot, robotics
- Issue 类型
- 缺陷
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 停滞
- 描述清晰度
- 需要澄清
- 新手友好度
- 25/100