ಕನ್ನಡ

ವಿಶ್ವದಾದ್ಯಂತ ಇರುವ ರೋಬೋಟಿಕ್ಸ್ ಉತ್ಸಾಹಿಗಳಿಗಾಗಿ ROS ಪ್ರೋಗ್ರಾಮಿಂಗ್‌ನ ಆಳವಾದ ಪರಿಶೋಧನೆ. ಇದು ಅದರ ಮೂಲಭೂತ ಪರಿಕಲ್ಪನೆಗಳು, ಅಭಿವೃದ್ಧಿ, ಮತ್ತು ಬುದ್ಧಿವಂತ ವ್ಯವಸ್ಥೆಗಳನ್ನು ನಿರ್ಮಿಸಲು ಪ್ರಾಯೋಗಿಕ ಅನ್ವಯಿಕೆಗಳನ್ನು ಒಳಗೊಂಡಿದೆ.

ರೋಬೋಟ್ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ (ROS) ನಲ್ಲಿ ಪ್ರಾವೀಣ್ಯತೆ: ROS ಪ್ರೋಗ್ರಾಮಿಂಗ್‌ಗೆ ಒಂದು ಜಾಗತಿಕ ಮಾರ್ಗದರ್ಶಿ

ರೋಬೋಟಿಕ್ಸ್ ಕ್ಷೇತ್ರವು ವೇಗವಾಗಿ ವಿಕಸನಗೊಳ್ಳುತ್ತಿದೆ, ಕೃತಕ ಬುದ್ಧಿಮತ್ತೆ, ಯಂತ್ರ ಕಲಿಕೆ, ಮತ್ತು ಯಾಂತ್ರೀಕರಣದಲ್ಲಿನ ಪ್ರಗತಿಗಳು ಜಗತ್ತಿನಾದ್ಯಂತ ಉದ್ಯಮಗಳನ್ನು ರೂಪಿಸುತ್ತಿವೆ. ಈ ತಾಂತ್ರಿಕ ಕ್ರಾಂತಿಯ ಹೃದಯಭಾಗದಲ್ಲಿ ರೋಬೋಟ್ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ (ROS) ಇದೆ, ಇದು ರೋಬೋಟ್ ಅಭಿವೃದ್ಧಿಗೆ ಅನಿವಾರ್ಯ ಸಾಧನವಾಗಿ ಮಾರ್ಪಟ್ಟಿರುವ ಒಂದು ಹೊಂದಿಕೊಳ್ಳುವ ಮತ್ತು ಶಕ್ತಿಯುತ ಫ್ರೇಮ್‌ವರ್ಕ್ ಆಗಿದೆ. ಈ ಸಮಗ್ರ ಮಾರ್ಗದರ್ಶಿಯನ್ನು ಅತ್ಯಾಧುನಿಕ ರೋಬೋಟಿಕ್ ವ್ಯವಸ್ಥೆಗಳನ್ನು ನಿರ್ಮಿಸಲು ROS ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಅನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಮತ್ತು ಬಳಸಿಕೊಳ್ಳಲು ಉತ್ಸುಕರಾಗಿರುವ ಇಂಜಿನಿಯರ್‌ಗಳು, ಸಂಶೋಧಕರು, ವಿದ್ಯಾರ್ಥಿಗಳು ಮತ್ತು ಉತ್ಸಾಹಿಗಳ ಜಾಗತಿಕ ಪ್ರೇಕ್ಷಕರಿಗಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ.

ರೋಬೋಟ್ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ (ROS) ಎಂದರೇನು?

ROS ಸಾಂಪ್ರದಾಯಿಕ ಅರ್ಥದಲ್ಲಿ ವಿಂಡೋಸ್ ಅಥವಾ ಲಿನಕ್ಸ್‌ನಂತಹ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಅಲ್ಲ. ಬದಲಿಗೆ, ಇದು ರೋಬೋಟ್ ಸಾಫ್ಟ್‌ವೇರ್ ರಚಿಸಲು ಲೈಬ್ರರಿಗಳು, ಉಪಕರಣಗಳು ಮತ್ತು ಸಂಪ್ರದಾಯಗಳ ಒಂದು ಗುಂಪನ್ನು ಒದಗಿಸುವ ಹೊಂದಿಕೊಳ್ಳುವ ಮಿಡಲ್‌ವೇರ್ ಆಗಿದೆ. ಆರಂಭದಲ್ಲಿ ವಿಲೋ ಗ್ಯಾರೇಜ್‌ನಿಂದ ಅಭಿವೃದ್ಧಿಪಡಿಸಲ್ಪಟ್ಟ ಮತ್ತು ಈಗ ROS ಸಮುದಾಯದಿಂದ ನಿರ್ವಹಿಸಲ್ಪಡುವ ROS, ವಿಭಿನ್ನ ರೋಬೋಟ್‌ಗಳು ಮತ್ತು ಅನ್ವಯಿಕೆಗಳಲ್ಲಿ ಸುಲಭವಾಗಿ ಹಂಚಿಕೊಳ್ಳಬಹುದಾದ ಮತ್ತು ಮರುಬಳಕೆ ಮಾಡಬಹುದಾದ ರೋಬೋಟ್ ಸಾಫ್ಟ್‌ವೇರ್ ಬರೆಯಲು ಪ್ರಮಾಣಿತ ಮಾರ್ಗವನ್ನು ನೀಡುತ್ತದೆ. ಇದು ಸಂವಹನ ಪದರವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ರೋಬೋಟ್ ಸಿಸ್ಟಮ್‌ನ ವಿಭಿನ್ನ ಘಟಕಗಳಾದ ಸಂವೇದಕಗಳು, ಆಕ್ಟಿವೇಟರ್‌ಗಳು, ನ್ಯಾವಿಗೇಷನ್ ಅಲ್ಗಾರಿದಮ್‌ಗಳು ಮತ್ತು ಬಳಕೆದಾರ ಇಂಟರ್ಫೇಸ್‌ಗಳು – ಮನಬಂದಂತೆ ಸಂವಹನ ನಡೆಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.

ROS ನ ಪ್ರಮುಖ ತತ್ವಗಳು

ROS ಅದರ ಹೊಂದಿಕೊಳ್ಳುವಿಕೆ ಮತ್ತು ಶಕ್ತಿಗೆ ಕೊಡುಗೆ ನೀಡುವ ಹಲವಾರು ಪ್ರಮುಖ ತತ್ವಗಳ ಮೇಲೆ ನಿರ್ಮಿಸಲ್ಪಟ್ಟಿದೆ:

ನಿಮ್ಮ ರೋಬೋಟಿಕ್ಸ್ ಯೋಜನೆಗಳಿಗಾಗಿ ROS ಅನ್ನು ಏಕೆ ಆರಿಸಬೇಕು?

ವಿಶ್ವದಾದ್ಯಂತ ಸಂಶೋಧನಾ ಸಂಸ್ಥೆಗಳು ಮತ್ತು ಉದ್ಯಮಗಳಲ್ಲಿ ROS ನ ವ್ಯಾಪಕ ಅಳವಡಿಕೆಯು ಅದರ ಹಲವಾರು ಪ್ರಯೋಜನಗಳಿಗೆ ಸಾಕ್ಷಿಯಾಗಿದೆ:

ROS ಪ್ರೋಗ್ರಾಮಿಂಗ್: ನಿರ್ಮಾಣದ ಘಟಕಗಳು

ROS ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಅದರ ಮೂಲಭೂತ ಘಟಕಗಳನ್ನು ಮತ್ತು ಅವು ಹೇಗೆ ಸಂವಹನ ನಡೆಸುತ್ತವೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. ROS ಅಭಿವೃದ್ಧಿಗೆ ಪ್ರಾಥಮಿಕ ಭಾಷೆಗಳು ಪೈಥಾನ್ ಮತ್ತು C++, ಇದು ಅಭಿವರ್ಧಕರಿಗೆ ಕಾರ್ಯಕ್ಷಮತೆಯ ಅವಶ್ಯಕತೆಗಳು ಮತ್ತು ವೈಯಕ್ತಿಕ ಆದ್ಯತೆಗಳ ಆಧಾರದ ಮೇಲೆ ಆಯ್ಕೆಯನ್ನು ನೀಡುತ್ತದೆ.

ನೋಡ್‌ಗಳು

ಹೇಳಿದಂತೆ, ನೋಡ್‌ಗಳು ROS ನಲ್ಲಿ ಗಣನೆಯ ಮೂಲಭೂತ ಘಟಕಗಳಾಗಿವೆ. ಪ್ರತಿಯೊಂದು ನೋಡ್ ಸಾಮಾನ್ಯವಾಗಿ ಒಂದು ನಿರ್ದಿಷ್ಟ ಕಾರ್ಯವನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ, ಉದಾಹರಣೆಗೆ ಮೋಟಾರ್ ಅನ್ನು ನಿಯಂತ್ರಿಸುವುದು, ಸಂವೇದಕ ಡೇಟಾವನ್ನು ಓದುವುದು, ಅಥವಾ ಪಥ ಯೋಜನೆ ಅಲ್ಗಾರಿದಮ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವುದು. ನೋಡ್‌ಗಳು ಸಂದೇಶಗಳ ಮೂಲಕ ಪರಸ್ಪರ ಸಂವಹನ ನಡೆಸುತ್ತವೆ.

ಉದಾಹರಣೆ: ಒಂದು ನೋಡ್ IMU (ಇನರ್ಶಿಯಲ್ ಮೆಷರ್‌ಮೆಂಟ್ ಯೂನಿಟ್) ಸಂವೇದಕದಿಂದ ಡೇಟಾವನ್ನು ಓದಿ ಅದನ್ನು sensor_msgs/Imu ಸಂದೇಶವಾಗಿ ಪ್ರಕಟಿಸುವ ಜವಾಬ್ದಾರಿಯನ್ನು ಹೊಂದಿರಬಹುದು.

ವಿಷಯಗಳು (Topics)

ವಿಷಯಗಳು (Topics) ನೋಡ್‌ಗಳಿಗೆ ಡೇಟಾವನ್ನು ವಿನಿಮಯ ಮಾಡಿಕೊಳ್ಳಲು ಅನುವು ಮಾಡಿಕೊಡುವ ಹೆಸರಿಸಲಾದ ಬಸ್‌ಗಳಾಗಿವೆ. ಡೇಟಾವನ್ನು ಉತ್ಪಾದಿಸುವ ನೋಡ್ (ಪ್ರಕಾಶಕ) ಒಂದು ವಿಷಯಕ್ಕೆ ಸಂದೇಶಗಳನ್ನು ಕಳುಹಿಸುತ್ತದೆ, ಮತ್ತು ಆ ಡೇಟಾದಲ್ಲಿ ಆಸಕ್ತಿ ಹೊಂದಿರುವ ಇತರ ನೋಡ್‌ಗಳು (ಚಂದಾದಾರರು) ಆ ವಿಷಯದಿಂದ ಆ ಸಂದೇಶಗಳನ್ನು ಸ್ವೀಕರಿಸಬಹುದು. ಈ ಪ್ರಕಟಿಸು-ಚಂದಾದಾರರಾಗು ಮಾದರಿಯು ROS ನ ವಿಕೇಂದ್ರೀಕೃತ ಸ್ವರೂಪಕ್ಕೆ ಪ್ರಮುಖವಾಗಿದೆ.

ಉದಾಹರಣೆ: ಕ್ಯಾಮೆರಾ ಚಿತ್ರಗಳನ್ನು ಪ್ರಕಟಿಸುವ ನೋಡ್ /camera/image_raw ಎಂಬ ವಿಷಯಕ್ಕೆ ಪ್ರಕಟಿಸಬಹುದು. ವಸ್ತು ಪತ್ತೆ ಮಾಡುವ ಮತ್ತೊಂದು ನೋಡ್ ಈ ವಿಷಯಕ್ಕೆ ಚಂದಾದಾರರಾಗುತ್ತದೆ.

ಸಂದೇಶಗಳು (Messages)

ಸಂದೇಶಗಳು ನೋಡ್‌ಗಳ ನಡುವೆ ಸಂವಹನ ನಡೆಸಲು ಬಳಸುವ ಡೇಟಾ ರಚನೆಗಳಾಗಿವೆ. ROS ಸಾಮಾನ್ಯ ರೋಬೋಟಿಕ್ ಡೇಟಾಗಳಾದ ಸಂವೇದಕ ವಾಚನಗೋಷ್ಠಿಗಳು, ಭಂಗಿಗಳು ಮತ್ತು ಆಜ್ಞೆಗಳಿಗಾಗಿ ಪ್ರಮಾಣಿತ ಸಂದೇಶ ಪ್ರಕಾರಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ. ನಿರ್ದಿಷ್ಟ ಅಪ್ಲಿಕೇಶನ್ ಅಗತ್ಯಗಳಿಗೆ ತಕ್ಕಂತೆ ಅಭಿವರ್ಧಕರು ಕಸ್ಟಮ್ ಸಂದೇಶ ಪ್ರಕಾರಗಳನ್ನು ಸಹ ವ್ಯಾಖ್ಯಾನಿಸಬಹುದು.

ಸಾಮಾನ್ಯ ಸಂದೇಶ ಪ್ರಕಾರಗಳು:

ಸೇವೆಗಳು (Services)

ವಿಷಯಗಳನ್ನು ನಿರಂತರ ಡೇಟಾ ಸ್ಟ್ರೀಮ್‌ಗಳಿಗಾಗಿ ಬಳಸಿದರೆ, ಸೇವೆಗಳನ್ನು ವಿನಂತಿ-ಪ್ರತಿಕ್ರಿಯೆ ಸಂವಹನಕ್ಕಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ. ಕ್ಲೈಂಟ್ ನೋಡ್ ಸರ್ವರ್ ನೋಡ್ ಒದಗಿಸಿದ ಸೇವೆಯನ್ನು ಕರೆಯಬಹುದು, ಮತ್ತು ಸರ್ವರ್ ನೋಡ್ ಒಂದು ಕ್ರಿಯೆಯನ್ನು ನಿರ್ವಹಿಸಿ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ರೋಬೋಟ್‌ನ ಸ್ಥಿತಿಯನ್ನು ಮರುಹೊಂದಿಸುವುದು ಅಥವಾ ನಿರ್ದಿಷ್ಟ ಲೆಕ್ಕಾಚಾರವನ್ನು ನಿರ್ವಹಿಸುವಂತಹ ನಿರಂತರ ಡೇಟಾ ಹರಿವಿನ ಅಗತ್ಯವಿಲ್ಲದ ಕಾರ್ಯಾಚರಣೆಗಳಿಗೆ ಸೇವೆಗಳು ಉಪಯುಕ್ತವಾಗಿವೆ.

ಉದಾಹರಣೆ: ರೋಬೋಟ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟ ಗುರಿ ಸ್ಥಳಕ್ಕೆ ಚಲಿಸಲು ಪ್ರಚೋದಿಸಲು ಸೇವೆಯನ್ನು ಬಳಸಬಹುದು, ಸೇವೆಯು ಯಶಸ್ಸು ಅಥವಾ ವೈಫಲ್ಯದ ಸ್ಥಿತಿಯನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ.

ಕ್ರಿಯೆಗಳು (Actions)

ಕ್ರಿಯೆಗಳು ಪ್ರತಿಕ್ರಿಯೆಯೊಂದಿಗೆ ದೀರ್ಘಕಾಲೀನ ಕಾರ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಉನ್ನತ-ಮಟ್ಟದ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಒದಗಿಸುತ್ತವೆ. ಪೂರ್ಣಗೊಳ್ಳಲು ಸಮಯ ತೆಗೆದುಕೊಳ್ಳುವ ಮತ್ತು ನಿರಂತರ ಮೇಲ್ವಿಚಾರಣೆಯ ಅಗತ್ಯವಿರುವ ಗುರಿಗಳಿಗೆ ಇವು ಸೂಕ್ತವಾಗಿವೆ. ಕ್ರಿಯೆಗಳು ಗುರಿ, ಪ್ರತಿಕ್ರಿಯೆ ಮತ್ತು ಫಲಿತಾಂಶವನ್ನು ಒಳಗೊಂಡಿರುತ್ತವೆ.

ಉದಾಹರಣೆ: ನ್ಯಾವಿಗೇಷನ್ ಆಕ್ಷನ್ ಸರ್ವರ್ ಗುರಿ ಸ್ಥಳಕ್ಕಾಗಿ geometry_msgs/PoseStamped ಗುರಿಯನ್ನು ಸ್ವೀಕರಿಸಬಹುದು. ನಂತರ ಅದು ರೋಬೋಟ್‌ನ ಪ್ರಗತಿಯ ಕುರಿತು ನಿರಂತರ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಒದಗಿಸುತ್ತದೆ ಮತ್ತು ಗುರಿಯನ್ನು ಯಶಸ್ವಿಯಾಗಿ ತಲುಪಲಾಗಿದೆಯೇ ಎಂದು ಸೂಚಿಸುವ ಫಲಿತಾಂಶವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ.

ROS ಪ್ರೋಗ್ರಾಮಿಂಗ್‌ನೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸುವುದು

ನಿಮ್ಮ ROS ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಪ್ರಯಾಣವನ್ನು ಪ್ರಾರಂಭಿಸುವುದು ಒಂದು ರೋಮಾಂಚಕಾರಿ ಹೆಜ್ಜೆಯಾಗಿದೆ. ನೀವು ಪ್ರಾರಂಭಿಸಲು ಇಲ್ಲಿದೆ ಒಂದು ಮಾರ್ಗಸೂಚಿ:

1. ಇನ್‌ಸ್ಟಾಲೇಶನ್

ಮೊದಲ ಹೆಜ್ಜೆ ನಿಮ್ಮ ಅಭಿವೃದ್ಧಿ ಯಂತ್ರದಲ್ಲಿ ROS ಅನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡುವುದು. ROS ಉಬುಂಟು ಲಿನಕ್ಸ್ ನಲ್ಲಿ ಅತ್ಯಂತ ಸ್ಥಿರವಾಗಿದೆ ಮತ್ತು ವ್ಯಾಪಕವಾಗಿ ಬೆಂಬಲಿತವಾಗಿದೆ. ಇನ್‌ಸ್ಟಾಲೇಶನ್ ಪ್ರಕ್ರಿಯೆಯು ಸಾಮಾನ್ಯವಾಗಿ ಇವುಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ:

ಅಧಿಕೃತ ROS ವಿಕಿ (wiki.ros.org) ವಿವಿಧ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್‌ಗಳಿಗಾಗಿ ವಿವರವಾದ, ವಿತರಣೆ-ನಿರ್ದಿಷ್ಟ ಇನ್‌ಸ್ಟಾಲೇಶನ್ ಸೂಚನೆಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ.

2. ROS ಉಪಕರಣಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು

ಅಗತ್ಯವಾದ ROS ಕಮಾಂಡ್-ಲೈನ್ ಉಪಕರಣಗಳೊಂದಿಗೆ ಪರಿಚಿತರಾಗಿ:

3. ನಿಮ್ಮ ಮೊದಲ ROS ಪ್ಯಾಕೇಜ್ ಅನ್ನು ರಚಿಸುವುದು

ROS ಪ್ಯಾಕೇಜ್ ಸಾಫ್ಟ್‌ವೇರ್ ಸಂಘಟನೆಯ ಮೂಲಭೂತ ಘಟಕವಾಗಿದೆ. ನಿಮ್ಮ ನೋಡ್‌ಗಳು, ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳು ಮತ್ತು ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್‌ಗಳನ್ನು ಒಳಗೊಂಡಿರುವ ಪ್ಯಾಕೇಜ್‌ಗಳನ್ನು ರಚಿಸಲು ನೀವು ಕಲಿಯುವಿರಿ.

ಪ್ಯಾಕೇಜ್ ರಚಿಸಲು ಕ್ರಮಗಳು:

  1. ನಿಮ್ಮ ROS ವರ್ಕ್‌ಸ್ಪೇಸ್‌ನ src ಡೈರೆಕ್ಟರಿಗೆ ನ್ಯಾವಿಗೇಟ್ ಮಾಡಿ.
  2. ಕಮಾಂಡ್ ಬಳಸಿ: catkin_create_pkg my_package_name roscpp rospy std_msgs (ROS 1 ಗಾಗಿ) ಅಥವಾ ros2 pkg create --build-type ament_cmake my_package_name (ROS 2 ಗಾಗಿ).

ಈ ಕಮಾಂಡ್ package.xml ಮತ್ತು CMakeLists.txt (C++ ಗಾಗಿ) ಅಥವಾ setup.py (Python ಗಾಗಿ) ನಂತಹ ಪ್ರಮಾಣಿತ ROS ಪ್ಯಾಕೇಜ್ ಫೈಲ್‌ಗಳೊಂದಿಗೆ ಹೊಸ ಡೈರೆಕ್ಟರಿಯನ್ನು ರಚಿಸುತ್ತದೆ.

4. ROS ನೋಡ್‌ಗಳನ್ನು ಬರೆಯುವುದು

ROS ನೋಡ್‌ಗಳನ್ನು ಬರೆಯುವುದು ಪ್ರಕಾಶಕರು, ಚಂದಾದಾರರು, ಸೇವಾ ಕ್ಲೈಂಟ್‌ಗಳು/ಸರ್ವರ್‌ಗಳು, ಮತ್ತು ಆಕ್ಷನ್ ಕ್ಲೈಂಟ್‌ಗಳು/ಸರ್ವರ್‌ಗಳನ್ನು ರಚಿಸಲು ROS ಕ್ಲೈಂಟ್ ಲೈಬ್ರರಿಗಳನ್ನು (roscpp C++ ಗಾಗಿ ಮತ್ತು rospy Python ಗಾಗಿ) ಬಳಸುವುದನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ.

ಪೈಥಾನ್ ಉದಾಹರಣೆ (ROS 1 `rospy`): ಒಂದು ಸರಳ ಪಬ್ಲಿಷರ್


import rospy
from std_msgs.msg import String

def talker():
    pub = rospy.Publisher('chatter', String, queue_size=10)
    rospy.init_node('talker', anonymous=True)
    rate = rospy.Rate(1) # 1hz
    while not rospy.is_shutdown():
        hello_str = "hello world %s" % rospy.get_time()
        rospy.loginfo(hello_str)
        pub.publish(hello_str)
        rate.sleep()

if __name__ == '__main__':
    try:
        talker()
    except rospy.ROSInterruptException:
        pass

C++ ಉದಾಹರಣೆ (ROS 1 `roscpp`): ಒಂದು ಸರಳ ಪಬ್ಲಿಷರ್


#include "ros/ros.h"
#include "std_msgs/String.h"

int main(int argc, char **argv)
{
  ros::init(argc, argv, "talker");
  ros::NodeHandle nh;
  ros::Publisher chatter_pub = nh.advertise("chatter", 1000);
  ros::Rate loop_rate(1);

  while (ros::ok())
  {
    std_msgs::String msg;
    msg.data = "Hello World";
    chatter_pub.publish(msg);
    
    ros::spinOnce();

    loop_rate.sleep();
  }

  return 0;
}

5. ನಿಮ್ಮ ವರ್ಕ್‌ಸ್ಪೇಸ್ ಅನ್ನು ಕಂಪೈಲ್ ಮಾಡುವುದು

ROS ಪ್ಯಾಕೇಜ್‌ಗಳನ್ನು ರಚಿಸಿದ ಅಥವಾ ಮಾರ್ಪಡಿಸಿದ ನಂತರ, ನೀವು ನಿಮ್ಮ ವರ್ಕ್‌ಸ್ಪೇಸ್ ಅನ್ನು catkin_make (ROS 1) ಅಥವಾ colcon build (ROS 2) ಬಳಸಿ ಕಂಪೈಲ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ. ಈ ಪ್ರಕ್ರಿಯೆಯು ನಿಮ್ಮ C++ ನೋಡ್‌ಗಳನ್ನು ನಿರ್ಮಿಸುತ್ತದೆ ಮತ್ತು ನಿಮ್ಮ ಪೈಥಾನ್ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು ROS ಮೂಲಕ ಪತ್ತೆಹಚ್ಚುವಂತೆ ಮಾಡುತ್ತದೆ.

ROS 1:


cd ~/catkin_ws # ಅಥವಾ ನಿಮ್ಮ ವರ್ಕ್‌ಸ್ಪೇಸ್ ಡೈರೆಕ್ಟರಿ
catkin_make
source devel/setup.bash

ROS 2:


cd ~/ros2_ws # ಅಥವಾ ನಿಮ್ಮ ವರ್ಕ್‌ಸ್ಪೇಸ್ ಡೈರೆಕ್ಟರಿ
colcon build
source install/setup.bash

ಸುಧಾರಿತ ROS ಪರಿಕಲ್ಪನೆಗಳು ಮತ್ತು ಅನ್ವಯಿಕೆಗಳು

ಒಮ್ಮೆ ನೀವು ಮೂಲಭೂತ ಅಂಶಗಳನ್ನು ಗ್ರಹಿಸಿದರೆ, ನೀವು ಹೆಚ್ಚು ಸುಧಾರಿತ ROS ಪರಿಕಲ್ಪನೆಗಳು ಮತ್ತು ಅನ್ವಯಿಕೆಗಳನ್ನು ಅನ್ವೇಷಿಸಬಹುದು:

ROS ನ್ಯಾವಿಗೇಷನ್ ಸ್ಟಾಕ್

ROS ನ್ಯಾವಿಗೇಷನ್ ಸ್ಟಾಕ್ ಮೊಬೈಲ್ ರೋಬೋಟ್‌ಗಳಿಗೆ ತಮ್ಮ ಪರಿಸರದಲ್ಲಿ ಸ್ವಾಯತ್ತವಾಗಿ ಸಂಚರಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುವ ಶಕ್ತಿಯುತ ಸಾಧನಗಳ ಗುಂಪಾಗಿದೆ. ಇದು ಈ ಕೆಳಗಿನ ಕಾರ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ:

ಸ್ವಾಯತ್ತ ಗೋದಾಮಿನ ರೋಬೋಟ್‌ಗಳು, ವಿತರಣಾ ಡ್ರೋನ್‌ಗಳು ಮತ್ತು ವೈವಿಧ್ಯಮಯ ಪರಿಸರದಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವ ಸೇವಾ ರೋಬೋಟ್‌ಗಳಂತಹ ಅನ್ವಯಿಕೆಗಳಿಗೆ ಈ ಸ್ಟಾಕ್ ನಿರ್ಣಾಯಕವಾಗಿದೆ.

ROS ಮ್ಯಾನಿಪ್ಯುಲೇಶನ್

ಕೈಗಳು ಅಥವಾ ಗ್ರಿಪ್ಪರ್‌ಗಳನ್ನು ಹೊಂದಿರುವ ರೋಬೋಟ್‌ಗಳಿಗಾಗಿ, ROS ಮ್ಯಾನಿಪ್ಯುಲೇಶನ್‌ಗಾಗಿ ಲೈಬ್ರರಿಗಳು ಮತ್ತು ಉಪಕರಣಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ. ಇದು ಒಳಗೊಂಡಿದೆ:

ಕೈಗಾರಿಕಾ ಯಾಂತ್ರೀಕರಣ, ರೋಬೋಟಿಕ್ ಶಸ್ತ್ರಚಿಕಿತ್ಸೆ, ಮತ್ತು ಜೋಡಣೆ ಕಾರ್ಯಗಳಿಗೆ ಈ ಸಾಮರ್ಥ್ಯಗಳು ಅತ್ಯಗತ್ಯ.

ಗ್ರಹಿಕೆಗಾಗಿ ROS

ಗ್ರಹಿಕೆಯು ಆಧುನಿಕ ರೋಬೋಟಿಕ್ಸ್‌ನ ಆಧಾರಸ್ತಂಭವಾಗಿದೆ, ಇದು ರೋಬೋಟ್‌ಗಳಿಗೆ ತಮ್ಮ ಸುತ್ತಮುತ್ತಲಿನ ಪರಿಸರವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ROS ಹಲವಾರು ಕಂಪ್ಯೂಟರ್ ವಿಷನ್ ಮತ್ತು ಸಂವೇದಕ ಸಂಸ್ಕರಣಾ ಲೈಬ್ರರಿಗಳೊಂದಿಗೆ ಮನಬಂದಂತೆ ಸಂಯೋಜನೆಗೊಳ್ಳುತ್ತದೆ:

ಸ್ವಾಯತ್ತ ವಾಹನಗಳು ಮತ್ತು ತಪಾಸಣೆ ಡ್ರೋನ್‌ಗಳಂತಹ ಕ್ರಿಯಾತ್ಮಕ ಮತ್ತು ರಚನೆಯಿಲ್ಲದ ಪರಿಸರದಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವ ರೋಬೋಟ್‌ಗಳಿಗೆ ಈ ಉಪಕರಣಗಳು ಅತ್ಯಗತ್ಯ.

ROS ಮತ್ತು AI/ML ಏಕೀಕರಣ

ROS ಮತ್ತು ಕೃತಕ ಬುದ್ಧಿಮತ್ತೆ/ಯಂತ್ರ ಕಲಿಕೆಯ ನಡುವಿನ ಸಿನರ್ಜಿಯು ರೋಬೋಟಿಕ್ಸ್ ಅನ್ನು ಆಳವಾಗಿ ಪರಿವರ್ತಿಸುತ್ತಿದೆ. ML ಮಾದರಿಗಳನ್ನು ನಿಯೋಜಿಸಲು ಮತ್ತು ಪರೀಕ್ಷಿಸಲು ROS ಆದರ್ಶ ವೇದಿಕೆಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ:

ROS 2: ಮುಂದಿನ ಪೀಳಿಗೆ

ROS 2 ಮೂಲ ROS ಚೌಕಟ್ಟಿನ ಗಮನಾರ್ಹ ವಿಕಸನವಾಗಿದೆ, ಇದು ಮಿತಿಗಳನ್ನು ಪರಿಹರಿಸುತ್ತದೆ ಮತ್ತು ಆಧುನಿಕ ರೋಬೋಟಿಕ್ಸ್ ಅಭಿವೃದ್ಧಿಗೆ ಹೊಸ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಸಂಯೋಜಿಸುತ್ತದೆ:

ರೋಬೋಟಿಕ್ಸ್ ಭೂದೃಶ್ಯವು ಪ್ರಬುದ್ಧವಾಗುತ್ತಿದ್ದಂತೆ, ROS 1 ಮತ್ತು ROS 2 ಎರಡನ್ನೂ ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಹೆಚ್ಚು ಮುಖ್ಯವಾಗುತ್ತಿದೆ.

ROS ನ ಜಾಗತಿಕ ಪ್ರಭಾವ ಮತ್ತು ಅನ್ವಯಿಕೆಗಳು

ROS ನ ಪ್ರಭಾವವು ಜಾಗತಿಕವಾಗಿ ವಿಸ್ತರಿಸುತ್ತದೆ, ವಿವಿಧ ವಲಯಗಳಲ್ಲಿ ನಾವೀನ್ಯತೆಯನ್ನು ಸಶಕ್ತಗೊಳಿಸುತ್ತದೆ:

ROS ಪ್ರೋಗ್ರಾಮಿಂಗ್‌ನಲ್ಲಿನ ಸವಾಲುಗಳು ಮತ್ತು ಉತ್ತಮ ಅಭ್ಯಾಸಗಳು

ROS ಶಕ್ತಿಯುತವಾಗಿದ್ದರೂ, ಪರಿಣಾಮಕಾರಿ ಅಭಿವೃದ್ಧಿಗೆ ಕೆಲವು ಸವಾಲುಗಳಿಗೆ ಗಮನ ಮತ್ತು ಉತ್ತಮ ಅಭ್ಯಾಸಗಳ ಅನುಸರಣೆ ಅಗತ್ಯವಿರುತ್ತದೆ:

ಸವಾಲುಗಳು

ಉತ್ತಮ ಅಭ್ಯಾಸಗಳು

ROS ಪ್ರೋಗ್ರಾಮಿಂಗ್‌ನ ಭವಿಷ್ಯ

ROS ನ ವಿಕಾಸವು ರೋಬೋಟಿಕ್ಸ್ ಮತ್ತು AI ನಲ್ಲಿನ ಪ್ರಗತಿಗಳಿಗೆ ನಿಕಟವಾಗಿ ಸಂಬಂಧಿಸಿದೆ. ಬುದ್ಧಿವಂತ, ಸ್ವಾಯತ್ತ ವ್ಯವಸ್ಥೆಗಳಿಗೆ ಹೆಚ್ಚುತ್ತಿರುವ ಬೇಡಿಕೆಯೊಂದಿಗೆ, ROS ಒಂದು ಪ್ರಮುಖ ಚೌಕಟ್ಟಾಗಿ ಮುಂದುವರಿಯುತ್ತದೆ. ಭವಿಷ್ಯದ ಬೆಳವಣಿಗೆಗಳು ಈ ಕೆಳಗಿನವುಗಳ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸುವ ಸಾಧ್ಯತೆಯಿದೆ:

ತೀರ್ಮಾನ

ರೋಬೋಟ್ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ (ROS) ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಆಧುನಿಕ ರೋಬೋಟಿಕ್ ವ್ಯವಸ್ಥೆಗಳನ್ನು ನಿರ್ಮಿಸಲು ಬಯಸುವ ಯಾರಿಗಾದರೂ ಒಂದು ಮೂಲಭೂತ ಕೌಶಲ್ಯವಾಗಿದೆ. ಅದರ ಹೊಂದಿಕೊಳ್ಳುವ ವಾಸ್ತುಶಿಲ್ಪ, ವ್ಯಾಪಕವಾದ ಲೈಬ್ರರಿಗಳು, ಮತ್ತು ರೋಮಾಂಚಕ ಜಾಗತಿಕ ಸಮುದಾಯವು ಅದನ್ನು ನಾವೀನ್ಯತೆಗೆ ಅಪ್ರತಿಮ ಸಾಧನವನ್ನಾಗಿ ಮಾಡುತ್ತದೆ. ಅದರ ಪ್ರಮುಖ ತತ್ವಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವ ಮೂಲಕ, ಅದರ ಉಪಕರಣಗಳನ್ನು ಕರಗತ ಮಾಡಿಕೊಳ್ಳುವ ಮೂಲಕ, ಮತ್ತು ಉತ್ತಮ ಅಭ್ಯಾಸಗಳನ್ನು ಅಳವಡಿಸಿಕೊಳ್ಳುವ ಮೂಲಕ, ನೀವು ಉದ್ಯಮಗಳನ್ನು ರೂಪಿಸುವ ಮತ್ತು ವಿಶ್ವದಾದ್ಯಂತ ಜೀವನವನ್ನು ಸುಧಾರಿಸುವ ಬುದ್ಧಿವಂತ ರೋಬೋಟ್‌ಗಳನ್ನು ರಚಿಸಲು ROS ನ ಸಾಮರ್ಥ್ಯವನ್ನು ಅನ್ಲಾಕ್ ಮಾಡಬಹುದು. ನೀವು ಕ್ಯಾಲಿಫೋರ್ನಿಯಾದಲ್ಲಿ ಸ್ವಾಯತ್ತ ವಾಹನಗಳ ಮೇಲೆ ಕೆಲಸ ಮಾಡುತ್ತಿರಲಿ, ಜಪಾನ್‌ನಲ್ಲಿ ಕೈಗಾರಿಕಾ ಯಾಂತ್ರೀಕರಣದಲ್ಲಿರಲಿ, ಅಥವಾ ಯುರೋಪ್‌ನಲ್ಲಿ ಸಂಶೋಧನೆಯಲ್ಲಿರಲಿ, ROS ರೋಬೋಟಿಕ್ ಪ್ರಗತಿಯನ್ನು ಚಾಲನೆ ಮಾಡಲು ಒಂದು ಸಾಮಾನ್ಯ ಭಾಷೆ ಮತ್ತು ಟೂಲ್‌ಕಿಟ್ ಅನ್ನು ಒದಗಿಸುತ್ತದೆ.