The design of our cells in Machina Labs has evolved over the past years. Currently, each of our cells has two articulated industrial robots on rails (a total of 7 axes) and a frame with hydraulic clamps. For the parts to form correctly, we must exert and maintain a dynamic force during the forming in a very accurate location in space. Currently, each robot is equipped with a load cell. See a quick video about our process here. We are using ROS2 to collect the data from the network and control the robots in real-time. As a robotic engineer, we keep developing different modules for our network to add features to the system.
The goal of This project is to build a ROS2 network that collects data from 3-DOF sensors and makes the filtered data available as a ROS service and topic. Since we cannot send a real sensor to all of our applicants, we made a simple simulator (sensor.py) that mimics the behavior of a real sensor but with random data.
- The first task is to make a custom service for 3-DOF sensor
- The second task is to make a ROS2 service server that continuously reads data from the sensor and has the latest filter data available for the client service that you make.
- Finally, please make a simple client that calls two of these services and publishes them to a topic at 500Hz. Please keep in mind that your service servers can run slower than 500Hz.
- You can define a second server in the simulator to modify the code and run two at the same time.
- You can check the example.py to see how to make calls to the sensor
- We’re looking for code that is clean, readable, performant, and maintainable.
- The developer must think through the process of deploying and using the solution and provide the necessary documentation.
- The sensor samples with 2000Hz, and you can request a specific number of samples in each call. Each call also has a ~1ms delay on top of the sampling time. We would like to hear your thought on picking the number of samples that you read in each call.
To submit the assignment, do the following:
-
Navigate to GitHub's project import page: https://github.com/new/import
-
In the box titled "Your old repository's clone URL", paste the homework repository's link: https://github.com/Machina-Labs/robotic_hw
-
In the box titled "Repository Name", add a name for your local homework (ex.
Robotic_soln
) -
Set the privacy level to "Public", then click "Begin Import" button at bottom of the page.
-
Develop your homework solution in the cloned repository and push it to GitHub when you're done. Extra points for good Git hygiene.
-
Send us the link to your repository.
Install instructions (Ubuntu): https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html
ROS2 tutorials: https://docs.ros.org/en/humble/Tutorials/Beginner-Client-Libraries.html