How do I get odometry from a motor when rosserial is not available?

Hello …
I am currently wondering how I can use encoder pulses and other information from Arduino, which is not converted to ROS, as odometry information for ROS.

I am currently starting a university research project to verify the accuracy of position estimation for outdoor mobile robots.
Using ROS (especially sensor fusion), I would like to conduct experiments to improve the accuracy of position estimation by comparing the actual distance traveled by the robot with the estimated distance traveled by the sensors (IMU and wheel odometry) (I have not reached the level of autonomous driving yet).
I am thinking of using robot_localization_pkg.
For my research, I was given a robot called Nexus Robot, which is equipped with an Arduino Dumelinova type microcontroller. The following link will give you the details.

We thought of using rosserial to convert this robot to ROS, but when we installed rosserial, we found that it did not work properly due to lack of memory. (The memory usage exceeded 90% just for the basic operation, the crosserial Blink. In response, we adjusted the buffer size, etc., but decided that it would be difficult to use rosserial with the current robot.

So, I thought the only way was to convert the motor information from the Arduino into ROS odometry data using my own program.

Is this a good idea? Is there any other way I should practice?

Also, if it is correct, I would like to know how to do this, and if you have any advice or information about your implementation.

Thank you.

Translated with (free version)