-
ros_diffdrive_robot
Arduino code to control a differential drive robot via ROS Twist messages using a NodeMcu or ESP8266
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
ESP32 can't run ROS, However, it can take simple commands. You can use a differential drive plugin to control your agent. You calculate everything you need on the server side then send the control signals to your ESP32. You can look into this and search for similar notions. This should be enough for what you are controlling. Then you can look into local positioning using your camera. As the robot moves only in 2D space you can estimate its position based on the robot's position in the camera's Feild of view. Like if it's in the bottom left corner then it's in the left corner of the room etc. This estimated position(x, y) and the angle with the x-axis feed this into the local position message for the robot. This may not be accurate but this would be good enough for this case.
Either use this node, or take a good look at it and make a variant if it needs changes. https://github.com/ros-controls/ros_controllers/blob/noetic-devel/diff_drive_controller/src/diff_drive_controller.cpp