সমাধান করা হয়েছে: setup.py ROS2 এ পরিষেবা ফাইল যোগ করুন

সাম্প্রতিক বছরগুলিতে, রোবোটিক্সের ক্ষেত্রে অগ্রগতি এবং প্রযুক্তি গৃহীত হয়েছে। তাদের মধ্যে একটি হল ROS2 (রোবট অপারেটিং সিস্টেম 2), একটি ওপেন-সোর্স মিডলওয়্যার ফ্রেমওয়ার্ক যা রোবটের অ্যাপ্লিকেশন বিকাশ, পরীক্ষা এবং রক্ষণাবেক্ষণের জন্য টুল, লাইব্রেরি এবং কনভেনশন প্রদান করে। এই নিবন্ধটি setup.py ব্যবহার করে একটি ROS2 প্যাকেজে পরিষেবা ফাইলগুলি যোগ করার বিষয়ে আলোচনা করে, এই প্ল্যাটফর্মের সাথে কাজ করা বিকাশকারীদের জন্য একটি অপরিহার্য দক্ষতা। আমরা একটি সংক্ষিপ্ত ভূমিকা দিয়ে শুরু করব, সমস্যার সমাধান উপস্থাপন করব, আপনাকে ধাপে ধাপে নির্দেশিকা দিয়ে হেঁটে যাবো এবং গভীরভাবে বোঝার জন্য সংশ্লিষ্ট বিষয় নিয়ে আলোচনা করব।

ROS2 প্যাকেজে একটি পরিষেবা ফাইল সেট আপ করার জন্য দুটি প্রধান পদক্ষেপ জড়িত: একটি পরিষেবা বার্তা সংজ্ঞা ফাইল (.srv) তৈরি করা এবং package.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" ফাইলটি খুলুন এবং নিম্নলিখিত কোডটি অন্তর্ভুক্ত করুন:

"`পাইথন
সেটআপলগুলি আমদানি সেটআপ থেকে
গ্লোব আমদানি গ্লোব থেকে

প্যাকেজ_নাম = 'স্ট্রিং_লেংথ_সার্ভিস'

সেটআপ(
নাম=প্যাকেজের_নাম,
সংস্করণ='0.0.0',
প্যাকেজ=[প্যাকেজ_নাম],
ডেটা_ফাইলস=[
('share/ament_index/resource_index/packages',
['রিসোর্স/' + প্যাকেজ_নাম]),
('share/' + package_name, ['package.xml']),
('শেয়ার/' + প্যাকেজ_নাম, গ্লোব('srv/*'))
],
install_requires=['setuptools'],
zip_safe=সত্য,
maintener='developer_name_here',
maintener_email='developer_email_here',
description='স্ট্রিং দৈর্ঘ্য গণনা করার জন্য একটি পরিষেবা',
লাইসেন্স='MIT',
tests_require=['pytest'],
এন্ট্রি_পয়েন্ট={
'কনসোল_স্ক্রিপ্ট': [
'string_length_server = ' + package_name + '.string_length_server:main',
'string_length_client = ' + প্যাকেজ_নাম + '.string_length_client: main',
],
},
)
"

আসুন এখন আলোচনা করা যাক এই কোডটি কী করে: setup.py ফাইল আমাদের প্যাকেজ বিতরণ এবং পরিচালনা করতে setuptools ব্যবহার করে। প্যাকেজ_নাম ভেরিয়েবল আমাদের প্যাকেজের নাম ধারণ করে। data_files তালিকা প্যাকেজের সাথে বিতরণ করা প্রয়োজনীয় সংস্থান, package.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 বিল্ড -প্যাকেজ-নির্বাচন 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 পরিষেবাগুলি তৈরি এবং বিতরণ করতে পারেন। শুভকামনা এবং সুখী কোডিং!

সম্পর্কিত পোস্ট:

মতামত দিন