Hi,
I ported ESP32 to linorobot2_hardware and submitted a pull request. It contains the following features,
1. ESP32 port. Tested with generic esp32 dev board and Waveshare General Driver Board for Robots as custom configuration 'gendrv'. Build and test on ROS2 Humble.
'pio run -e esp32' or 'pio run -e gendrv'
The ESP32 supports 64 bits hardware pulse counters which are used for encoders, so no interrupts are required . POSIX clock_gettime() is supported to overcome the overflow of millis() in 50 days. A hardware watchdog can be enabled. The ESP are widely used and cheaper than the teensy with richer features. Yes, it is stable.
The Waveshare General Driver Board for Robots based on ESP32 includes all the interfaces to drive a 2WD mobile robot. I am not with the Waveshare. It is a piece of useful hardware to build 2WD robot. Save time and more stable than hand wiring. So I made a custom configuration file. You can plug and play with minor motors and wheels setting.
2. Micro ROS WIFI transport on esp32
Set board_microros_transport = wifi in ini and USE_WIFI_TRANSPORT in configuration file.
3. Arduino OTA on esp32 wifi. It is much faster to develop, compile and upload on a desktop computer.
3. Syslog on esp32 wifi. Send logging messages to a remote syslog server.
4. Magnetometer support to imu/data orientation and publish imu/mag. The magnetometer calibration can be automatically computed with the robot_calibration package. HMC5883L, AK8963 (inside MPU9250), AK8975, AK09918, QMC5883L are supported.
5. I2Cdevlib and drivers are updated from the upstream. Compatibility might be improved.
6. Battery voltage measurement and publisher with on chip ADC or INA219.
7. Ultrasonic sensor HC-SR04 and range publisher.
I ported my previous works to Linorobot. Please find my fork at
Review and comments welcome.
Linorobot is an amazing project. Thanks.
Cheers,
Thomas Chou