Final Step - Integrating the whole system with ROS
Why Use ROS for Robotic Development?
ROS (Robot Operating System) is a widely-used framework for developing robotic systems. Despite its name, ROS is not an actual operating system - it is a middleware framework that runs on top of a real operating system. In this post, I will explain why ROS is so popular for robotics development, and why I've chosen to use it in my Saudi Sign Language (SSL) translation project.
What Makes ROS Stand Out?
There are several key reasons developers turn to ROS when building complex robotic systems:
1. It’s Free and Open-Source
Unlike other robotics development software that requires expensive licenses, ROS is completely free. Originally designed to run in Linux environments, getting started with ROS doesn’t cost anything. This makes it a fantastic choice for both research and production without the financial burden of proprietary software.
2. ROS is Distributed
One of the most powerful features of ROS is its distributed nature. In ROS, the system is broken down into components called Nodes, which communicate with each other using channels known as Topics. Each node can either publish information to a topic or subscribe to a topic to receive information.
This distributed structure offers flexibility and fault tolerance. For example, if one node encounters an issue, the rest of the system can continue to function without requiring a complete shutdown. It also makes it easier to update individual components without disrupting the entire system.
3. Strong Community Support
ROS boasts a large, active developer community. This ongoing support makes ROS a continuously evolving platform with regular updates and improvements. The community-driven nature also means there's a wealth of resources and solutions available when tackling development challenges.
Why Use ROS in the SSL Project?
In the early stages of the SSL translation project, the entire system was condensed into a single Python file. However, by converting the project into a ROS-compatible framework, we can ensure it integrates smoothly with any ROS-based robotic system. This opens up the potential for deploying the SSL translation system in a wide variety of robots without significant modifications.
System Architecture Overview
The ROS implementation of the SSL project consists of two ROS nodes working together:
1.ssl_translator_audio.py : Gesture Recognition
- This node is responsible for capturing images from the camera and identifying the hand gestures using the trained MLP (Multi-Layer Perceptron) models. - Once a hand sign is recognized, it publishes the corresponding label to a topic named 'gesture_label'.
2.SayIT: Text-to-Speech
- The second node subscribes to 'gesture_label' to receive the detected sign label. - It sends the label to Google Cloud's Text-to-Speech API, retrieves the audio version of the label, and plays it out loud.
The system's architecture can be visualized through the rqt graph, which shows the communication flow between the two nodes. Once both nodes are running, users won’t notice any difference between this ROS-based implementation and the earlier Python-only version.
How to Set Up and Run the SSL ROS Package
If you'd like to try out the ROS version of the project, follow these steps:
1. Download the ROS package
The project can be downloaded from the following URL: arsl_ros_package
2. Grant Execution Permissions
Navigate to the `src` folder of the package and grant execution permissions to the two Python nodes by running the following command in the terminal: chmod +x NODENAME.py
3. Build the Workspace
From the workspace folder, build the project by running: catkin_make
4. Source the Terminal
Source the terminal by running: source devel/setup.bash
5. Run the ROS Master Node
Start the ROS master node by executing: roscore
6. Launch the ROS Nodes
In two separate terminals, run the following commands to launch the two nodes: rosrun arsl SSL_translator_audio.py , rosrun arsl say_it.py
If all dependencies are met, you should see a camera preview with the identified sign label displayed on the screen. The system will also speak the label aloud, enabling real-time interaction with the SSL translation system.
Conclusion
By using ROS, we've made the SSL translation system more robust and adaptable to various robotic platforms. This setup allows for future enhancements and integrations with more complex robotic systems, further advancing communication between deaf and non-deaf communities.
Real-time Implementation Demo Video: demo_video
GitHub Repository for the Entire Project: whole scource code and datasets
Feel free to explore the demo video and the repository for detailed insights into the project’s real-time implementation and codebase!
A huge thank you to everyone who took the time to read through these blog! Your interest and support in exploring the Saudi Sign Language translation project make this journey even more rewarding. I look forward to sharing more updates and insights with you as this project continues to evolve. Stay tuned!

Comments
Post a Comment