Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

bcanozter/microROS-ESP32

Open more actions menu

Repository files navigation

microROS-ESP32

Technologies

  • MacOS 15.3 Intel Chip
  • Docker Engine 27.5.1
  • Docker Desktop 4.38.0
  • ROS Jazzy
  • ESP-IDF 5.2
  • ESP32-S3 with 8MB PSRAM

References

MacOS Docker Limitation

Unable to mount /dev/tty.usb* devices even when running docker with --privileged argument. Espressif has a tool to remotely connect to a serial port.

Issue

Solution

Packages

This will be populated with different packages as I go.

camera_publisher

Build

Terminal 1

docker run -it --rm --user espidf --volume="/etc/timezone:/etc/timezone:ro" -v $(pwd):/microROS-ESP32 -v /dev:/dev --privileged --ipc host --workdir /microROS-ESP32 microros-esp32:latest /bin/bash -c "cd sources/camera_publisher; idf.py --port 'rfc2217://host.docker.internal:4000?ign_set_control' menuconfig build flash monitor"

Ensure PSRAM is enabled. The ESP32-S3 chip I am using has a 8 MB PSRAM. PSRAM Mode is Octal Mode PSRAM, and the clock RAM speed is 80MHz.

Ensure to set MicroROS Agent WIFI Adress and Port.

Terminal 2

docker run -it --rm --privileged --ipc host -p "8888:8888/udp" microros/micro-ros-agent:jazzy udp4 --port 8888 -v6

Terminal 3

esp_rfc2217_server.py -v -p 4000 /dev/tty.usbmodem14401

Output

I used rqt to monitor the image topic and visualize. Feel free to use any other ros tool to visualize the image topic.

gpio_interrupt_publisher

Publish to a ros topic on GPIO interrupt trigger.

reconnection_example

This example demonsrates the ability to reconnect to a ros agent. De-init node entities gracefully before trying to reconnect. Then, reinitialize necessary components in order to establish a healthy connection to the microros agent before publishing dummy data.

  1. Agent running as initial state.
  2. Disconnect agent. Observe Lost connection output.
  3. Start micro-ros agent.
  4. Confirm connection.

micro-ROS tutorials I came across this helpful micro-ROS tutorial above where I discovered there is a way to ping agent.

Using the rmw_uros_ping_agent function to check connection and break the main loop.

if (rmw_uros_ping_agent(100, 3) != RMW_RET_OK)
{
    ...
    printf("Lost connection to micro-ros-agent\n");
    ...
}

joystick_controller

Turtlesim

Publish cmd_vel (geometry_msgs/msg/Twist) using a 2-axis Joystick connected to esp32.

Use the official ROS turtlesim to test and observe the movement on screen.

Result

espnow_example

TODO

Extras

Display forwarding MacOS

Check out this guide.

X11 forwarding on macOS and docker

Releases

No releases published

Packages

 
 
 

Contributors

Morty Proxy This is a proxified and sanitized view of the page, visit original site.