ಪರಿಹರಿಸಲಾಗಿದೆ: setup.py ROS2 ನಲ್ಲಿ ಸೇವಾ ಫೈಲ್‌ಗಳನ್ನು ಸೇರಿಸಿ

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

ROS2 ಪ್ಯಾಕೇಜ್‌ನಲ್ಲಿ ಸೇವಾ ಫೈಲ್ ಅನ್ನು ಹೊಂದಿಸುವುದು ಎರಡು ಪ್ರಮುಖ ಹಂತಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ: ಸೇವಾ ಸಂದೇಶದ ವ್ಯಾಖ್ಯಾನ ಫೈಲ್ (.srv) ಅನ್ನು ರಚಿಸುವುದು ಮತ್ತು ಪ್ಯಾಕೇಜ್.xml ಮತ್ತು setup.py ಫೈಲ್‌ಗಳಲ್ಲಿ ಅಗತ್ಯ ಕಾನ್ಫಿಗರೇಶನ್‌ಗಳನ್ನು ಸೇರಿಸುವುದು. ಈ ಟ್ಯುಟೋರಿಯಲ್ ನಲ್ಲಿ, ನಾವು ಇನ್‌ಪುಟ್ ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳುವ ಮತ್ತು ಒದಗಿಸಿದ ಇನ್‌ಪುಟ್‌ನ ಉದ್ದವನ್ನು ಹಿಂದಿರುಗಿಸುವ ಸರಳ ಸೇವೆಯನ್ನು ರಚಿಸುತ್ತೇವೆ.

ಮೊದಲಿಗೆ, ನಮ್ಮ ಕೆಲಸದ ಸ್ಥಳವನ್ನು ಸಿದ್ಧಪಡಿಸೋಣ. ಕೆಳಗಿನ ಆಜ್ಞೆಯೊಂದಿಗೆ "string_length_service" ಹೆಸರಿನ ROS2 ಪ್ಯಾಕೇಜ್ ಅನ್ನು ರಚಿಸಿ:

""
ros2 pkg ಕ್ರಿಯೇಟ್ -ಬಿಲ್ಡ್-ಟೈಪ್ ament_python string_length_service
""

ಈಗ, ನಮ್ಮ ಸೇವಾ ಸಂದೇಶದ ವ್ಯಾಖ್ಯಾನ ಫೈಲ್ ಅನ್ನು ಸಂಗ್ರಹಿಸಲು "string_length_service" ಪ್ಯಾಕೇಜ್‌ನಲ್ಲಿ "srv" ಹೆಸರಿನ ಡೈರೆಕ್ಟರಿಯನ್ನು ರಚಿಸಿ:

""
mkdir srv
""

"srv" ಡೈರೆಕ್ಟರಿಯ ಒಳಗೆ, ಈ ಕೆಳಗಿನ ವಿಷಯದೊಂದಿಗೆ "StringLength.srv" ಹೆಸರಿನ ಫೈಲ್ ಅನ್ನು ರಚಿಸಿ:

""
ಸ್ಟ್ರಿಂಗ್ ಇನ್ಪುಟ್_ಸ್ಟ್ರಿಂಗ್
-
int64 ಉದ್ದ
""

ಪ್ಯಾಕೇಜ್.xml ಫೈಲ್‌ನಲ್ಲಿ, ಅಗತ್ಯ ಅವಲಂಬನೆಗಳನ್ನು ಸೇರಿಸಲು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ:

"`xml
std_msgs
service_interface_packages
ament_cmake
ament_cmake_auto
ಮ್ಯಾಟ್‌ಪ್ಲೋಟ್‌ಲಿಬ್
""

ಈಗ, ಈ ಲೇಖನದ ಮುಖ್ಯ ಭಾಗಕ್ಕೆ ಹೋಗೋಣ - setup.py ನಲ್ಲಿ ಸೇವಾ ಫೈಲ್‌ಗಳನ್ನು ಸೇರಿಸುವುದು. "setup.py" ಫೈಲ್ ತೆರೆಯಿರಿ ಮತ್ತು ಕೆಳಗಿನ ಕೋಡ್ ಅನ್ನು ಸೇರಿಸಿ:

"ಹೆಬ್ಬಾವು
ಸೆಟಪ್‌ಟೂಲ್‌ಗಳಿಂದ ಆಮದು ಸೆಟಪ್
ಗ್ಲೋಬ್ ಆಮದು ಗ್ಲೋಬ್‌ನಿಂದ

pack_name = 'string_length_service'

ಸೆಟಪ್ (
ಹೆಸರು=ಪ್ಯಾಕೇಜ್_ಹೆಸರು,
ಆವೃತ್ತಿ='0.0.0′,
ಪ್ಯಾಕೇಜುಗಳು=[package_name],
ಡೇಟಾ_ಫೈಲ್‌ಗಳು=[
('ಹಂಚಿಕೆ/ament_index/resource_index/packages',
['ಸಂಪನ್ಮೂಲ/' + ಪ್ಯಾಕೇಜ್_ಹೆಸರು]),
('ಹಂಚಿಕೆ/' + ಪ್ಯಾಕೇಜ್_ಹೆಸರು, ['package.xml']),
('ಹಂಚಿಕೆ/' + ಪ್ಯಾಕೇಜ್_ಹೆಸರು, ಗ್ಲೋಬ್('srv/*'))
],
install_requires=['setuptools'],
zip_safe=ನಿಜ,
ನಿರ್ವಹಿಸುವವರು='developer_name_here',
maintainer_email='developer_email_here',
ವಿವರಣೆ='ಸ್ಟ್ರಿಂಗ್ ಉದ್ದವನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡಲು ಒಂದು ಸೇವೆ',
ಪರವಾನಗಿ='MIT',
tests_require=['pytest'],
entry_points={
'console_scripts': [
'string_length_server = ' + package_name + '.string_length_server:main',
'string_length_client = ' + package_name + '.string_length_client:main',
],
},
)
""

ಈ ಕೋಡ್ ಏನು ಮಾಡುತ್ತದೆ ಎಂಬುದನ್ನು ಈಗ ಚರ್ಚಿಸೋಣ: setup.py ಫೈಲ್ ನಮ್ಮ ಪ್ಯಾಕೇಜ್ ಅನ್ನು ವಿತರಿಸಲು ಮತ್ತು ನಿರ್ವಹಿಸಲು setuptools ಅನ್ನು ಬಳಸುತ್ತದೆ. ಪ್ಯಾಕೇಜ್_ಹೆಸರು ವೇರಿಯೇಬಲ್ ನಮ್ಮ ಪ್ಯಾಕೇಜ್‌ನ ಹೆಸರನ್ನು ಹೊಂದಿದೆ. ಡೇಟಾ_ಫೈಲ್‌ಗಳ ಪಟ್ಟಿಯು ಪ್ಯಾಕೇಜ್‌ನೊಂದಿಗೆ ವಿತರಿಸಬೇಕಾದ ಅಗತ್ಯ ಸಂಪನ್ಮೂಲ, ಪ್ಯಾಕೇಜ್.xml ಮತ್ತು ಸೇವಾ ಫೈಲ್‌ಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ. install_requires ಅಗತ್ಯವಿರುವ ಪ್ಯಾಕೇಜುಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ ಮತ್ತು entry_points ನಮ್ಮ ಸೇವೆಯ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಫೈಲ್‌ಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ. 'developer_name_here' ಮತ್ತು 'developer_email_here' ಅನ್ನು ಸರಿಯಾದ ಮೌಲ್ಯಗಳೊಂದಿಗೆ ಬದಲಾಯಿಸುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.

rclpy ಮತ್ತು std_srvs ಅನ್ನು ಬಳಸುವುದು

setup.py ನಲ್ಲಿ ಸೇವಾ ಫೈಲ್‌ಗಳನ್ನು ಹೊಂದಿಸಿದ ನಂತರ, ಪ್ರಮಾಣಿತ ಸೇವಾ ಪ್ರಕಾರಗಳಿಗಾಗಿ ROS2 ಪೈಥಾನ್ ಕ್ಲೈಂಟ್ ಲೈಬ್ರರಿ, rclpy ಮತ್ತು std_srvs ಅನ್ನು ಬಳಸಿಕೊಂಡು ಸರ್ವರ್ ಮತ್ತು ಕ್ಲೈಂಟ್ ಕೋಡ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವುದು ಅವಶ್ಯಕ.

ನಿಮ್ಮ ಪ್ಯಾಕೇಜ್ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ "string_length_server.py" ಮತ್ತು "string_length_client.py" ಫೈಲ್‌ಗಳನ್ನು ರಚಿಸಿ ಮತ್ತು ಸರ್ವರ್ ಮತ್ತು ಕ್ಲೈಂಟ್ ಕೋಡ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿ. ROS2 ದಾಖಲಾತಿಯಲ್ಲಿ ಸರ್ವರ್ ಮತ್ತು ಕ್ಲೈಂಟ್ ಕೋಡ್ ಅನ್ನು ಹೇಗೆ ಬರೆಯುವುದು ಎಂಬುದರ ಕುರಿತು ನೀವು ವಿವರಗಳನ್ನು ಕಾಣಬಹುದು.

ಸೇವೆಯನ್ನು ನಿರ್ಮಿಸುವುದು ಮತ್ತು ಪರೀಕ್ಷಿಸುವುದು

ಅಂತಿಮವಾಗಿ, ಈ ಕೆಳಗಿನ ಆಜ್ಞೆಗಳನ್ನು ಬಳಸಿಕೊಂಡು ನಿಮ್ಮ ಪ್ಯಾಕೇಜ್ ಅನ್ನು ನಿರ್ಮಿಸಿ ಮತ್ತು ಪರೀಕ್ಷಿಸಿ:

""
ಮೂಲ /opt/ros/foxy/setup.bash
ಕೊಲ್ಕಾನ್ ಬಿಲ್ಡ್ -ಪ್ಯಾಕೇಜುಗಳು-ಸ್ಟ್ರಿಂಗ್_ಲೆಂಗ್ತ್_ಸೇವೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ
ಮೂಲ install/setup.bash
""

ಯಶಸ್ವಿ ನಿರ್ಮಾಣದ ನಂತರ, ಎರಡು ಪ್ರತ್ಯೇಕ ಟರ್ಮಿನಲ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಸರ್ವರ್ ಮತ್ತು ಕ್ಲೈಂಟ್ ಅನ್ನು ರನ್ ಮಾಡಿ:

""
ros2 string_length_service string_length_server ಅನ್ನು ರನ್ ಮಾಡಿ
""

""
ros2 ರನ್ string_length_service string_length_client
""

rclpy ಮತ್ತು std_srvs ನಂತಹ ಸಂಬಂಧಿತ ವಿಷಯಗಳ ಮೇಲೆ ಸ್ಪರ್ಶಿಸುವಾಗ ROS2 ಪ್ಯಾಕೇಜ್‌ಗಳಿಗಾಗಿ setup.py ನಲ್ಲಿ ಸೇವಾ ಫೈಲ್‌ಗಳನ್ನು ಸೇರಿಸುವ ಆಳವಾದ ವಿವರಣೆಯನ್ನು ಈ ಮಾರ್ಗದರ್ಶಿ ಪ್ರಸ್ತುತಪಡಿಸಿದೆ. ಈ ಹಂತಗಳನ್ನು ಅನುಸರಿಸುವ ಮೂಲಕ, ನಿಮ್ಮ ROS2 ಸೇವೆಗಳನ್ನು ನೀವು ಸಮರ್ಥ ಮತ್ತು ಸಂಘಟಿತ ರೀತಿಯಲ್ಲಿ ರಚಿಸಬಹುದು ಮತ್ತು ವಿತರಿಸಬಹುದು, ನಿಮ್ಮ ರೋಬೋಟಿಕ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಲ್ಲಿ ಪರಸ್ಪರ ಕ್ರಿಯೆಯನ್ನು ಸುಲಭಗೊಳಿಸಬಹುದು. ಅದೃಷ್ಟ ಮತ್ತು ಸಂತೋಷದ ಕೋಡಿಂಗ್!

ಸಂಬಂಧಿತ ಪೋಸ್ಟ್ಗಳು:

ಒಂದು ಕಮೆಂಟನ್ನು ಬಿಡಿ