How to deploy ROS nodes on multiple embedded platforms to make the operation more efficient?
My robot system uses rtabmap with a stereo camera for mapping and locating, and then uses move_base for path planning and navigation. During navigating, the robot uses darknet to identify objects in the environment.
Now I have two embedded platforms, Jetson TX2 and Jetson Nano. Due to limited computing power, it is not feasible to implement all the above tasks on one of the embedded platforms.
I have two ideas:
- First connect the stereo camera and the robot to the TX2 through the USB Hub with a USB interface, because TX2 has only one USB interface; then use a network cable to connect Nano and TX2, so that the nodes on the Nano can read the topics published by stereo camera; The above implements rtabmap and navigation, and uses darknet for target detection and recognition on Nano.
- First connect the stereo camera and the robot to the Nano with a USB interface, because TX2 has only one USB interface and Nano has four; then use a network cable to connect Nano and TX2, so that the nodes on TX2 can read the topics published by stereo camera; Implement rtabmap and navigation on Nano, and use darknet on TX2 for target detection and recognition.
The disadvantage of the first method is that TX2 has only one USB interface, and the stereo camera and the robot share an interface. Continuous reading of camera data may cause the robot node to restart frequently.
The disadvantage of the second method is that Nano does not have a wireless network card. If Nano is used as a Master, I do n’t know how to use a PC to remotely subscribe to topics published by the nodes on Nano and TX2. (Maybe I should use TX2 as a Master?)
- Do you have any good solutions?
- Another problem is that if TX2 and Nano are connected by a network cable, and PC and TX2 are wirelessly connected in a LAN, how should I set up so that these three devices can subscribe to each other's published topics?