ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
When you have a new robot, you will need to ROSify that robot. What does it mean? You will have to build a series of nodes (among other things) that make the translation between your hardware and the ROS core.
Some basic steps to start:
You should write the URDF of your robot that describes the different links in your robot, joints and sensors, and different frames that it has. You will need that in order to represent your robot in Rviz, show the robot current status and be able to compute sensor data from different frames. If you don't know how to do the URDF of your robot, you can check this tutorial.
Next thing is to write some nodes to read the sensor data and publish it in ROS topics. This means that you have to write a node that communicates with the hardware (arduino, raspberry, pc, whatever...) and requests to it the sensor data, receives the data, and converts that data from the hardware format to a topic message. You can find already existing types of messages here, but depending on your sensors, you may need to create a new type of message (this tutorial shows how to create a new message for a topic)
Finally, you may need to write the controllers for your robot joints, wheels or any other actuator the robot has. Those nodes should provide topics or services which when some other node calls them, they should convert the command sent into the appropriate commands for the hardware you are using, so they make the robot move/actuate. Here there is a tutorial about ROS control that may help you on this.
You can see an example of ROSification in the nodes created by Melonee Wise for ROSifying the Sphero robot. The code is here. It contains everything open source so you can see how that ROSification may apply to your specific case.
ROSifying a robot is quite a job, but once you have it done, your robot will move in the ROS realm with all its advantages attached. So go for it! You will learn a lot in the process.