தீர்க்கப்பட்டது: setup.py ROS2 இல் சேவைக் கோப்புகளைச் சேர்க்கவும்

சமீபத்திய ஆண்டுகளில், ரோபாட்டிக்ஸ் துறையில் முன்னேற்றங்கள் மற்றும் ஏற்றுக்கொள்ளப்பட்ட தொழில்நுட்பங்கள் ஒரு எழுச்சியைக் கண்டன. அவற்றில் ஒன்று ROS2 (ரோபாட் ஆப்பரேட்டிங் சிஸ்டம் 2), ஒரு திறந்த மூல மிடில்வேர் கட்டமைப்பாகும், இது ரோபோக்களின் பயன்பாடுகளை உருவாக்க, சோதனை மற்றும் பராமரிக்க கருவிகள், நூலகங்கள் மற்றும் மரபுகளை வழங்குகிறது. இந்த தளத்துடன் பணிபுரியும் டெவலப்பர்களுக்கு இன்றியமையாத திறமையான setup.py ஐப் பயன்படுத்தி ROS2 தொகுப்பில் சேவைக் கோப்புகளைச் சேர்ப்பது பற்றி இந்தக் கட்டுரை ஆராய்கிறது. நாங்கள் ஒரு சுருக்கமான அறிமுகத்துடன் தொடங்குவோம், சிக்கலுக்கு ஒரு தீர்வை வழங்குவோம், படிப்படியான வழிகாட்டி மூலம் உங்களை அழைத்துச் செல்வோம், மேலும் ஆழமான புரிதலுக்காக தொடர்புடைய தலைப்புகளைப் பற்றி விவாதிப்போம்.

ROS2 தொகுப்பில் சேவைக் கோப்பை அமைப்பது இரண்டு முக்கிய படிகளை உள்ளடக்கியது: சேவை செய்தி வரையறை கோப்பை (.srv) உருவாக்குதல் மற்றும் pack.xml மற்றும் setup.py கோப்புகளில் தேவையான உள்ளமைவுகளைச் சேர்ப்பது. இந்த டுடோரியலில், உள்ளீட்டு சரத்தை எடுத்து, வழங்கப்பட்ட உள்ளீட்டின் நீளத்தை வழங்கும் எளிய சேவையை உருவாக்குவோம்.

முதலில், எங்கள் பணியிடத்தை தயார் செய்வோம். பின்வரும் கட்டளையுடன் "string_length_service" என்ற ROS2 தொகுப்பை உருவாக்கவும்:

"`
ros2 pkg உருவாக்கம் -உருவாக்க வகை ament_python string_length_service
"`

இப்போது, ​​"string_length_service" தொகுப்பிற்குள் "srv" என்ற பெயரில் ஒரு கோப்பகத்தை உருவாக்கி எங்கள் சேவை செய்தி வரையறை கோப்பைச் சேமிக்கவும்:

"`
mkdir srv
"`

“srv” கோப்பகத்தின் உள்ளே, பின்வரும் உள்ளடக்கத்துடன் “StringLength.srv” என்ற கோப்பை உருவாக்கவும்:

"`
சரம் உள்ளீடு_சரம்
-
int64 நீளம்
"`

Package.xml கோப்பில், தேவையான சார்புகளைச் சேர்க்கவும்:

"`xml
std_msgs
service_interface_packages
ament_cmake
ament_cmake_auto
matplotlib
"`

இப்போது, ​​இந்த கட்டுரையின் முக்கிய பகுதிக்கு செல்லலாம் - setup.py இல் சேவை கோப்புகளைச் சேர்ப்பது. “setup.py” கோப்பைத் திறந்து பின்வரும் குறியீட்டைச் சேர்க்கவும்:

"` மலைப்பாம்பு
setuptools இறக்குமதி அமைப்பிலிருந்து
குளோப் இறக்குமதி குளோபிலிருந்து

pack_name = 'string_length_service'

அமைப்பு
பெயர்=தொகுப்பு_பெயர்,
பதிப்பு='0.0.0′,
தொகுப்புகள்=[package_name],
data_files=[
('share/ament_index/resource_index/packages',
['ஆதாரம்/' + தொகுப்பு_பெயர்]),
('பங்கு/' + தொகுப்பு_பெயர், ['package.xml']),
('பங்கு/' + தொகுப்பு_பெயர், குளோப்('srv/*'))
],
install_requires=['setuptools'],
zip_safe=உண்மை,
பராமரிப்பாளர்='developer_name_here',
maintainer_email='developer_email_here',
விளக்கம்='சரம் நீளத்தை கணக்கிடுவதற்கான ஒரு சேவை',
உரிமம்='எம்ஐடி',
tests_require=['pytest'],
entry_points={
'கன்சோல்_ஸ்கிரிப்டுகள்': [
'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
colcon build -packages-select string_length_service
மூல install/setup.bash
"`

வெற்றிகரமான உருவாக்கத்திற்குப் பிறகு, இரண்டு தனித்தனி டெர்மினல்களைப் பயன்படுத்தி சர்வர் மற்றும் கிளையண்டை இயக்கவும்:

"`
ros2 string_length_service string_length_serverஐ இயக்கவும்
"`

"`
ros2 ரன் string_length_service string_length_client
"`

rclpy மற்றும் std_srvs போன்ற தொடர்புடைய தலைப்புகளைத் தொடும் போது ROS2 தொகுப்புகளுக்கு setup.py இல் சேவைக் கோப்புகளைச் சேர்ப்பது பற்றிய ஆழமான விளக்கத்தை இந்த வழிகாட்டி வழங்குகிறது. இந்தப் படிகளைப் பின்பற்றுவதன் மூலம், உங்கள் ROS2 சேவைகளை திறமையான மற்றும் ஒழுங்கமைக்கப்பட்ட முறையில் உருவாக்கி விநியோகிக்கலாம், உங்கள் ரோபோ பயன்பாடுகளுக்குள் தொடர்புகளை எளிதாக்கலாம். நல்ல அதிர்ஷ்டம் மற்றும் மகிழ்ச்சியான குறியீட்டு முறை!

தொடர்புடைய இடுகைகள்:

ஒரு கருத்துரையை