https://github.com/chinmay-esp/microros_sub-led
This project demonstrates how to control an LED using ROS2 Humble and Micro-ROS on an ESP32. The ESP32 subscribes to the led_control topic and toggles the LED state based on received messages. Ideal for learning ROS2 integration with embedded systems. 🚀🔌
https://github.com/chinmay-esp/microros_sub-led
cpp esp32 microros platformio ros-subscriber ros2-humble
Last synced: about 1 month ago
JSON representation
This project demonstrates how to control an LED using ROS2 Humble and Micro-ROS on an ESP32. The ESP32 subscribes to the led_control topic and toggles the LED state based on received messages. Ideal for learning ROS2 integration with embedded systems. 🚀🔌
- Host: GitHub
- URL: https://github.com/chinmay-esp/microros_sub-led
- Owner: Chinmay-ESP
- Created: 2025-03-01T14:31:32.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-03-04T10:41:08.000Z (over 1 year ago)
- Last Synced: 2025-03-04T11:35:55.300Z (over 1 year ago)
- Topics: cpp, esp32, microros, platformio, ros-subscriber, ros2-humble
- Language: C++
- Homepage:
- Size: 2.93 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# LED Control via ROS2 (Micro-ROS with ESP32)
## Overview
This project demonstrates how to control an LED on an ESP32 using ROS2 (Micro-ROS). The ESP32 acts as a ROS2 node that subscribes to an `Int32` message from the topic `led_control`. The received integer value (0 or 1) determines the LED state.
## Hardware Requirements
- ESP32 Development Board
- LED (Optional, if using an external LED)
- USB Cable for programming
## Software Requirements
- PlatformIO
- Micro-ROS library
- ROS2 installed on a PC
## Code Explanation
- The ESP32 subscribes to the `led_control` topic.
- When a message is received, it controls the LED state based on the received value.
- Uses Micro-ROS for communication between ESP32 and ROS2.
## Setup Instructions
1. **Install Micro-ROS**:
- Follow the official Micro-ROS documentation to set up the environment for ESP32.
- Install the required dependencies for Arduino or PlatformIO.
2. **Upload the Code**:
- Connect the ESP32 to your PC.
- Compile and upload the code using PlatformIO or Arduino IDE.
3. **Run ROS2 Publisher**:
- Ensure ROS2 is installed on your PC.
- Run the following command to publish LED state messages:
```bash
ros2 topic pub /led_control std_msgs/msg/Int32 "{data: 1}"
```
- Send `1` to turn the LED ON.
- Send `0` to turn the LED OFF.
4. **Monitor Serial Output**:
- Open the Serial Monitor at 115200 baud rate to observe received messages.
## Function Breakdown
- **`setup()`**:
- Initializes the serial communication.
- Configures the LED pin as an output.
- Sets up Micro-ROS, creates a node, and subscribes to the `led_control` topic.
- **`subscription_callback()`**:
- Receives an integer value from ROS2.
- Controls the LED state accordingly.
- Prints the received data to the Serial Monitor.
- **`loop()`**:
- Executes the Micro-ROS executor to handle incoming messages.
## Notes
- Ensure ROS2 is properly configured on your PC before running the publisher.
- Modify the `LED_PIN` macro if using a different GPIO for the LED.
## References
- [Micro-ROS Documentation](https://micro.ros.org/)
- [ROS-2(Humble) Documentation](https://docs.ros.org/en/humble/index.html)