সুচিপত্র:

রাস্পবেরি পাই 4 [বাস্টার] ROS মেলোডিক: 6 ধাপে Kinect সহ RGB-D SLAM
রাস্পবেরি পাই 4 [বাস্টার] ROS মেলোডিক: 6 ধাপে Kinect সহ RGB-D SLAM

ভিডিও: রাস্পবেরি পাই 4 [বাস্টার] ROS মেলোডিক: 6 ধাপে Kinect সহ RGB-D SLAM

ভিডিও: রাস্পবেরি পাই 4 [বাস্টার] ROS মেলোডিক: 6 ধাপে Kinect সহ RGB-D SLAM
ভিডিও: Raspberry Pi 4: запускаем видео 4K, играем в игры и боремся с перегревом. Обзоры Амперки 2024, নভেম্বর
Anonim
Image
Image

গত বছর আমি ডেবিয়ান বাস্টার ওএস সহ নতুন (সেই সময়ে) রাস্পবেরি পাইতে আরওএস মেলোডিক তৈরি এবং ইনস্টল করার বিষয়ে একটি নিবন্ধ লিখেছিলাম। নিবন্ধটি এখানে ইন্সট্রাকটেবল এবং অন্যান্য প্ল্যাটফর্মে অনেক মনোযোগ পেয়েছে। আমি খুব খুশি যে আমি রাস্পবেরি পাইতে সফলভাবে ROS ইনস্টল করতে অনেক মানুষকে সাহায্য করেছি। সাথে থাকা ভিডিওতে আমি Kinect 360 থেকে গভীরতার চিত্র পাওয়ার জন্য সংক্ষিপ্তভাবে দেখিয়েছি। পরবর্তীতে অসংখ্য মানুষ লিঙ্কডইন -এ আমার সাথে যোগাযোগ করেছে এবং আমাকে জিজ্ঞাসা করেছে কিভাবে আমি রাস্পবেরি পাই এর সাথে Kinect ব্যবহার করতে পারি। আমি প্রশ্নে এক ধরণের বিস্মিত ছিলাম, যেহেতু সেই সময়ে Kinect প্রস্তুত করার প্রক্রিয়াটি আমাকে প্রায় 3-4 ঘন্টা সময় নিয়েছিল এবং খুব জটিল বলে মনে হয়নি। আমি আমার.bash_history ফাইলগুলি শেয়ার করেছি সমস্ত লোকের সাথে এই সমস্যা সম্পর্কে জিজ্ঞাসাবাদ করে এবং শেষ পর্যন্ত এপ্রিল মাসে কিভাবে Kinect ড্রাইভার ইনস্টল করা যায় এবং RTAB-MAP ROS এর সাথে RGB-D SLAM সঞ্চালন করা যায় সে বিষয়ে একটি প্রবন্ধ লেখার সময় পাওয়া যায়। প্রবন্ধ লেখা শুরু করার পর এক সপ্তাহের ঘুমহীন রাতগুলো আমি এখন বুঝতে পারছি কেন এত লোক আমাকে এই প্রশ্ন করেছে:)

কোন পদ্ধতি কাজ করেছে এবং কোনটি হয়নি সে সম্পর্কে আমি সংক্ষিপ্ত ব্যাখ্যা দিয়ে শুরু করব। তারপর আমি ব্যাখ্যা করবো কিভাবে ROS মেলোডিকের সাথে ব্যবহারের জন্য Kinect ড্রাইভার ইনস্টল করবেন এবং অবশেষে কিভাবে RTAB-MAP ROS দিয়ে RGB-D SLAM এর জন্য আপনার মেশিন সেট আপ করবেন।

ধাপ 1: কি কাজ করেছে এবং কি করেনি

রাস্পবেরি পাই -তে Kinect- এর জন্য কয়েকটি ড্রাইভার পাওয়া যায় - তার মধ্যে দুটি ROS দ্বারা সমর্থিত।

OpenNI ড্রাইভার - ROS এর জন্য openni_camera প্যাকেজ

libfreenect ড্রাইভার - ROS এর জন্য freenect_stack প্যাকেজ

আপনি যদি তাদের নিজ নিজ GitHub সংগ্রহস্থলগুলি দেখেন, আপনি দেখতে পাবেন যে OpenNI ড্রাইভারটি সর্বশেষ বছর আগে আপডেট করা হয়েছে এবং অনুশীলনে দীর্ঘদিন ধরে EOL রয়েছে। অন্যদিকে ibfreekinect সময়মত আপডেট করা হচ্ছে। তাদের নিজ নিজ ROS প্যাকেজগুলির জন্য একই, ROS মেলোডিকের জন্য freenect_stack রিলিজ করা হয়েছিল, যখন তিনি সর্বশেষ ডিস্ট্রো openni_camera ফুয়ার্টের জন্য সমর্থন তালিকাভুক্ত করেছেন …

ROS মেলোডিকের জন্য রাস্পবেরি পাইতে OpenNI ড্রাইভার এবং openni_camera প্যাকেজ কম্পাইল এবং ইনস্টল করা সম্ভব, যদিও এটি আমার জন্য কাজ করে নি। এটি করার জন্য এই নির্দেশিকা অনুসরণ করুন, ধাপ 1, 2, 3, ধাপ 2 এবং 3 এ "-mfloat-abi = softfp" পতাকাটি প্ল্যাটফর্ম/লিনাক্স/বিল্ড/কমন/প্ল্যাটফর্ম এআরএম ফাইল থেকে সরান (এই বিষয়ে পরামর্শ অনুযায়ী Github সমস্যা)। তারপর আপনার catkin কর্মক্ষেত্রে openni_camera প্যাকেজ ক্লোন করুন এবং catkin_make দিয়ে কম্পাইল করুন। যদিও এটি আমার জন্য কাজ করে নি, ত্রুটিটি গভীরতা জেনারেটর তৈরি করতে ব্যর্থ হয়েছিল। কারণ: ইউএসবি ইন্টারফেস সমর্থিত নয়!

Libfreenect এবং freenect_stack ব্যবহার করে শেষ পর্যন্ত সাফল্য পাওয়া যায়, কিন্তু সমাধান করার জন্য বেশ কয়েকটি সমস্যা ছিল এবং সমাধানটি কিছুটা হ্যাকি ছিল, যদিও এটি খুব স্থিতিশীল ছিল (1 ঘন্টা + অব্যাহত অপারেশন)।

ধাপ 2: Freenect ড্রাইভার এবং Freenect_stack ইনস্টল করা

Freenect ড্রাইভার এবং Freenect_stack ইনস্টল করা
Freenect ড্রাইভার এবং Freenect_stack ইনস্টল করা

আমি ধরে নেব যে আপনি এই নিবন্ধ থেকে আমার ROS মেলোডিক ডেস্কটপ চিত্রটি ব্যবহার করেছেন। আপনি যদি বিভিন্ন পরিবেশে ইনস্টলেশন করতে চান, উদাহরণস্বরূপ ros_comm ইমেজ বা রাস্পবেরি পাই এর জন্য উবুন্টুতে, নিশ্চিত করুন যে সেই পার্থক্য থেকে উদ্ভূত সমস্যা সমাধানের জন্য আপনার ROS সম্পর্কে যথেষ্ট জ্ঞান আছে।

উৎস থেকে libfreenect ড্রাইভার তৈরি করে শুরু করা যাক, যেহেতু apt-get repository প্রাক-নির্মিত সংস্করণটি অনেক পুরনো।

sudo apt- আপডেট পান

sudo apt-get libusb-1.0-0-dev ইনস্টল করুন

git ক্লোন

সিডি libfreenect

mkdir build && cd build

cmake -L..

তৈরি করা

sudo ইনস্টল করুন

আশা করি নির্মাণ প্রক্রিয়াটি অসম এবং সবুজ বান্ধব বার্তায় পূর্ণ হবে। আপনি libfreenect ড্রাইভার ইন্সটল করার পর, ROS এর জন্য freenect_stack প্যাকেজ ইনস্টল করা পরবর্তী কাজ। এটির উপর নির্ভর করে আরও কয়েকটি প্যাকেজ রয়েছে, আমাদের সেগুলি ক্লোন করতে হবে এবং catkin_make দিয়ে একসাথে তৈরি করতে হবে। আপনি শুরু করার আগে, নিশ্চিত করুন যে আপনার ক্যাটকিন ওয়ার্কস্পেস সঠিকভাবে সেট আপ এবং সোর্স করা হয়েছে!

আপনার catkin কর্মক্ষেত্র src ফোল্ডার থেকে:

git ক্লোন

git ক্লোন

গিট ক্লোন

গিট ক্লোন

git ক্লোন

git ক্লোন

ওহ, এটি অনেক ক্লোনিং ছিল।

পরবর্তী সম্পাদনা: যেহেতু আমার একজন পাঠক এটি নির্দেশ করেছিলেন, ভিশন_ওপেনসিভি সংগ্রহস্থলকে মেলোডিক শাখায় সেট করা দরকার। সিডির জন্য src/vision_opencv এবং এক্সিকিউট করুন

গিট চেকআউট মেলোডিক

তারপরে আপনার ক্যাটকিন ওয়ার্কস্পেস ফোল্ডারে ফিরে যান। আমরা সমস্ত প্যাকেজের জন্য নির্ভরতা এই কমান্ডটি চালাই কিনা তা পরীক্ষা করতে:

rosdep install --from-paths src --ignore-src

আপনি যদি সমস্ত প্রয়োজনীয় প্যাকেজ সফলভাবে ক্লোন করেন তবে এটি অ্যাপ-গেটের সাথে libfreekinect ডাউনলোড করার অনুরোধ করবে। উত্তর না, যেহেতু আমরা ইতিমধ্যে এটি উৎস থেকে ইনস্টল করেছি।

sudo apt-get libbullet-dev libharfbuzz-dev libgtk2.0-dev libgtk-3-dev ইনস্টল করুন

catkin_make -j2

চায়ের সময়;) অথবা আপনার প্রিয় পানীয় যাই হোক না কেন।

সংকলন প্রক্রিয়া শেষ হওয়ার পরে আপনি কাইনেক্ট স্ট্যাক চালু করার চেষ্টা করতে পারেন এবং এটি গভীরতা এবং রঙের চিত্রগুলি সঠিকভাবে আউটপুট করে কিনা তা পরীক্ষা করে দেখতে পারেন। আমি রাস্পবেরি পাই হেডলেস ব্যবহার করি, তাই আমার ডেস্কটপ কম্পিউটারে RVIZ চালানো দরকার।

রাস্পবেরি পাই তে (আপনার রাস্পবেরি পাই এর আইপি ঠিকানা আইপি ঠিকানা পরিবর্তন করুন!):

ROS_MASTER_URI = https://192.168.0.108: 11311 রপ্তানি করুন

রপ্তানি ROS_IP = 192.168.0.108

roslaunch freenect_launch freenect.launch depth_registration: = true

আপনি স্ক্রিনশট ১ -এর মতো আউটপুট দেখতে পাবেন। ইঙ্গিত করে যে Kinect প্রস্তুত, কিন্তু কিছুই এখনও তার বিষয়গুলিতে সাবস্ক্রাইব করা হয়নি।

ROS মেলোডিক ইনস্টল করা আপনার ডেস্কটপ কম্পিউটারে করুন:

ROS_MASTER_URI = https://192.168.0.108: 11311 রপ্তানি করুন

ROS_IP = [your-desktop-computer-ip] rviz রপ্তানি করুন

এখন আপনি উপরের স্ক্রিনশট 2 এর মতো আরভিআইজেডে আরজিবি এবং গভীরতার চিত্র প্রবাহ দেখতে সক্ষম হবেন … কিন্তু একই সময়ে নয়।

ঠিক আছে, এখানেই হ্যাকি স্টাফ শুরু হয়। আমি 3 দিন বিভিন্ন ড্রাইভার এবং পদ্ধতির চেষ্টা করে কাটিয়েছি এবং কিছুই কাজ করে নি - যত তাড়াতাড়ি আমি দুটি স্ট্রিম একসাথে অ্যাক্সেস করার চেষ্টা করব ততক্ষণ Kinect টাইমিং শুরু হবে যেমন আপনি স্ক্রিনশট 3 এ দেখতে পারেন। freenect_stack, usb_autosuspend বন্ধ করা, ইউএসবি পোর্টে ব্লিচ ইনজেকশন দেওয়া (ঠিক আছে, শেষটা নয়! এটা করবেন না, এটি একটি রসিকতা এবং একটি প্রযুক্তিগত পরামর্শ গঠন করা উচিত নয়:))। তারপর গিথুবের একটি ইস্যুতে আমি এমন এক ব্যক্তির একটি অ্যাকাউন্ট দেখেছিলাম যিনি বলেছিলেন যে তাদের Kinect অস্থিতিশীল ছিল, যতক্ষণ না তারা "USB বাস লোড করে" ওয়াইফাই ডংগল সংযোগ করে। আমি যে চেষ্টা, এবং এটা কাজ. একদিকে, আমি খুশি যে এটি কাজ করেছে। অন্যদিকে, কাউকে সত্যিই এটি ঠিক করা উচিত। ঠিক আছে, এদিকে (সাজানোর) ঠিক করা আছে, আসুন পরবর্তী ধাপে এগিয়ে যাই।

ধাপ 3: স্বতন্ত্র RTAB ম্যাপ ইনস্টল করা

স্বতন্ত্র RTAB মানচিত্র ইনস্টল করা
স্বতন্ত্র RTAB মানচিত্র ইনস্টল করা

প্রথমে আমাদের একগুচ্ছ নির্ভরতা ইনস্টল করতে হবে:

পিসিএলের জন্য একটি পূর্বনির্মিত আর্মএইচএফ প্যাকেজ থাকা সত্ত্বেও, আমাদের এই সমস্যাটির কারণে উৎস থেকে এটি সংকলন করতে হবে। PCL GitHub সংগ্রহস্থলের সাথে পরামর্শ করুন কিভাবে এটি উৎস থেকে কম্পাইল করা যায়।

sudo apt-get libvtk6-dev libvtk6-qt-dev libvtk6-java libvtk6-jni ইনস্টল করুন

sudo apt-libopencv-dev cmake libopenni2-dev libsqlite3-dev ইনস্টল করুন

এখন আসুন আমাদের হোম ফোল্ডারে rtab ম্যাপ স্ট্যান্ডঅলোন প্যাকেজ গিট রিপোজিটরি ক্লোন করি এবং এটি তৈরি করি। আমি সর্বশেষ রিলিজ (0.18.0) ব্যবহার করেছি।

git ক্লোন

cd rtabmap/build

cmake..

make -j2

sudo ইনস্টল করুন

sudo ldconfig rtabmap

এখন যখন আমরা স্বতন্ত্র RTAB MAP কম্পাইল করেছি, তখন আমরা শেষ ধাপে যেতে পারি - RTAB MAP, rtabmap_ros এর জন্য ROS রেপার কম্পাইল এবং ইনস্টল করা।

ধাপ 4: Rtabmap_ros ইনস্টল করা

Rtabmap_ros ইনস্টল করা হচ্ছে
Rtabmap_ros ইনস্টল করা হচ্ছে

যদি আপনি এতদূর পেয়ে যান, আপনি সম্ভবত এখনই ড্রিলটি জানেন:) আপনার catkin কর্মক্ষেত্র src ফোল্ডারে rtabmap_ros সংগ্রহস্থলটি ক্লোন করুন। (ক্যাটকিন ওয়ার্কস্পেস src ফোল্ডার থেকে আপনার পরবর্তী কমান্ডটি চালান!)

git ক্লোন

আমাদের এই ROS প্যাকেজগুলিরও প্রয়োজন হবে, যে rtabmap_ros নির্ভর করে:

গিট ক্লোন

গিট ক্লোন

গিট ক্লোন

গিট ক্লোন

git ক্লোন

আপনি সংকলন শুরু করার আগে আপনি নিশ্চিত করতে পারেন যে আপনি নিম্নলিখিত কমান্ড দিয়ে কোন নির্ভরতা মিস করছেন না:

rosdep install --from-paths src --ignore-src

এপি-গেট থেকে আরও নির্ভরতা ইনস্টল করুন (এগুলি লিঙ্কিংয়ে বাধা দেবে না, তবে সংকলনের সময় একটি ত্রুটি ফেলবে)

sudo apt-get libsdl-image1.2-dev ইনস্টল করুন

তারপরে আপনার ক্যাটকিন ওয়ার্কস্পেস ফোল্ডারে যান এবং সংকলন শুরু করুন:

সিডি..

catkin_make -j2

আশা করি আপনি আপনার পছন্দের সংকলন পানীয়টি খুব বেশি দূরে রাখেননি। সংকলন সম্পন্ন হওয়ার পরে আমরা ম্যাপিং করতে প্রস্তুত!

ধাপ 5: সময় দেখান

সময় দেখান
সময় দেখান
সময় দেখান
সময় দেখান

ইউএসবি পোর্টে ওয়াইফাই বা ব্লুটুথ ডংগলের মতো কিছু যোগ করার সাথে সেই হ্যাকি ট্রিকটি করুন - আমি 2 ইউএসবি 2.0 পোর্ট ব্যবহার করছিলাম, একটি কিনেক্টের জন্য, অন্যটি ওয়াইফাই ডংলের জন্য।

রাস্পবেরি পাই ডো (আপনার রাস্পবেরি পাই এর আইপি ঠিকানায় আইপি ঠিকানা পরিবর্তন করুন!): প্রথম টার্মিনাল:

রপ্তানি করুন ROS_MASTER_URI = https://192.168.0.108: 11311

রপ্তানি ROS_IP = 192.168.0.108

roslaunch freenect_launch freenect.launch depth_registration: = true data_skip: = 2

দ্বিতীয় টার্মিনাল:

roslaunch rtabmap_ros rgbd_mapping.launch rtabmap_args: = "-delete_db_on_start --Vis/MaxFeatures 500 --Mem/ImagePreDecimation 2 --Mem/ImagePostDecimation 2-Kp/DetectorStrategy 6 --OdomF2M/MaxSize 1000 Maxpize": = মিথ্যা

আপনি স্ক্রিনশট ১ -এর মতো আউটপুট দেখতে পাবেন। ইঙ্গিত করে যে Kinect প্রস্তুত, কিন্তু কিছুই এখনও তার বিষয় সাবস্ক্রাইব করা হয়নি দ্বিতীয় টার্মিনালে আপনি odom মানের সম্পর্কে বার্তা দেখতে হবে। যদি আপনি খুব দ্রুত Kinect সরান, odom গুণমান 0 যেতে হবে এবং আপনি একটি পূর্ববর্তী স্থানে সরানো বা পরিষ্কার ডাটাবেস থেকে শুরু করতে হবে।

আপনার ডেস্কটপ কম্পিউটারে ROS মেলোডিক এবং rtab_map প্যাকেজ ইনস্টল করা আছে (আমি আপনাকে উবুন্টু কম্পিউটার ব্যবহার করার পরামর্শ দিচ্ছি, যেহেতু amd64 আর্কিটেকচারের জন্য প্রি-বিল্ট প্যাকেজ পাওয়া যায়):

রপ্তানি করুন ROS_MASTER_URI = https://192.168.0.108: 11311

রপ্তানি ROS_IP = [আপনার-ডেস্কটপ-কম্পিউটার-আইপি]

rviz

Rviz এ MapGraph এবং MapCloud ডিসপ্লে যোগ করুন এবং rtab_map থেকে আসা সংশ্লিষ্ট বিষয়গুলি নির্বাচন করুন। আচ্ছা, এটাই, বিজয়ের মিষ্টি স্বাদ! এগিয়ে যান এবং কিছু ম্যাপিং করুন:)

ধাপ 6: রেফারেন্স

এই নিবন্ধটি লেখার সময় আমার সাথে পরামর্শ করা বেশ কয়েকটি সংস্থান ছিল, বেশিরভাগ ফোরাম এবং গিটহাব সমস্যা। আমি তাদের এখানে রেখে যাব।

github.com/OpenKinect/libfreenect/issues/338

www.reddit.com/r/robotics/comments/8d37gy/ros_with_raspberry_pi_and_xbox_360_kinect_question/

github.com/ros-drivers/freenect_stack/issues/48

official-rtab-map-forum.67519.x6.nabble.com/RGB-D-SLAM-example-on-ROS-and-Raspberry-Pi-3-td1250.html

github.com/OpenKinect/libfreenect/issues/524

মেশিন লার্নিং এবং রোবটিক্স সম্পর্কিত আরও আকর্ষণীয় প্রকল্প সম্পর্কে বিজ্ঞপ্তি পেতে যদি আপনার কোন প্রশ্ন থাকে তবে আমাকে লিঙ্কডইন এ যুক্ত করুন এবং আমার ইউটিউব চ্যানেলটি সাবস্ক্রাইব করুন।

প্রস্তাবিত: