সুচিপত্র:

ROS MoveIt রোবটিক আর্ম পার্ট 2: রোবট কন্ট্রোলার: 6 টি ধাপ
ROS MoveIt রোবটিক আর্ম পার্ট 2: রোবট কন্ট্রোলার: 6 টি ধাপ
Anonim
Image
Image

github.com/AIWintermuteAI/ros-moveit-arm.git

নিবন্ধের আগের অংশে আমরা আমাদের রোবোটিক বাহুর জন্য URDF এবং XACRO ফাইল তৈরি করেছি এবং নকল পরিবেশে আমাদের রোবোটিক বাহু নিয়ন্ত্রণ করতে RVIZ চালু করেছি।

এবার আমরা এটা বাস্তব রোবোটিক বাহু দিয়ে করব! আমরা গ্রিপার যুক্ত করব, একটি রোবট কন্ট্রোলার লিখব এবং (alচ্ছিক) IKfast ইনভার্স কিনেমেটিক্স সলভার তৈরি করব।

জেরোনিমো!

ধাপ 1: গ্রিপার যুক্ত করা

গ্রিপার যোগ করা
গ্রিপার যোগ করা
গ্রিপার যোগ করা
গ্রিপার যোগ করা
গ্রিপার যোগ করা
গ্রিপার যোগ করা

গ্রিপার যোগ করা প্রথমে কিছুটা বিভ্রান্তিকর ছিল, তাই আমি পূর্ববর্তী নিবন্ধে এই অংশটি বাদ দিয়েছিলাম। এটা শেষ পর্যন্ত এত কঠিন ছিল না।

গ্রিপার লিঙ্ক এবং জয়েন্ট যোগ করার জন্য আপনাকে আপনার ইউআরডিএফ ফাইল পরিবর্তন করতে হবে।

আমার রোবটের জন্য পরিবর্তিত ইউআরডিএফ ফাইলটি এই ধাপে সংযুক্ত করা হয়েছে। মূলত এটি বাহু অংশের মতো একই যুক্তি অনুসরণ করে, আমি মাত্র তিনটি নতুন লিঙ্ক (claw_base, claw_r এবং claw_l) এবং তিনটি নতুন জয়েন্ট যুক্ত করেছি (যুগ্ম 5 স্থির, এবং যুগ্ম 6, যুগ্ম 7 হল বিপ্লবী জয়েন্ট)।

আপনার ইউআরডিএফ ফাইলটি সংশোধন করার পরে আপনাকে মুভআইটি সেটআপ সহকারী ব্যবহার করে মুভিআইটি জেনারেটেড প্যাকেজ এবং জ্যাক্রো ফাইল আপডেট করতে হবে।

নিম্নলিখিত কমান্ড দিয়ে সেটআপ সহকারী চালু করুন

roslaunch moveit_setup_assistant setup_assistant.launch

Edit Existing MoveIt Configuration এ ক্লিক করুন এবং আপনার MoveIt প্যাকেজ সহ ফোল্ডারটি নির্বাচন করুন।

নতুন প্ল্যানিং গ্রুপ গ্রিপার (গ্রিপারের লিঙ্ক এবং জয়েন্ট সহ) এবং এন্ড এফেক্টর যুক্ত করুন। আমার সেটিংস নিচের স্ক্রিনশটে আছে। লক্ষ্য করুন যে আপনি গ্রিপারের জন্য কিনেমেটিক্স সলভার নির্বাচন করেন না, এটি প্রয়োজনীয় নয়। প্যাকেজ তৈরি করুন এবং ফাইলগুলি ওভাররাইট করুন।

দৌড়

catkin তৈরি

আপনার catkin কর্মক্ষেত্রে কমান্ড।

ঠিক আছে, এখন আমাদের হাতে একটা হাত আছে!

ধাপ 2: বাহু নির্মাণ

বাহু নির্মাণ
বাহু নির্মাণ
বাহু নির্মাণ
বাহু নির্মাণ
বাহু নির্মাণ
বাহু নির্মাণ
বাহু নির্মাণ
বাহু নির্মাণ

আর্ম থ্রিডি মডেলটি জুয়ারজেনলেসনার তৈরি করার আগে আমি উল্লেখ করেছি, একটি আশ্চর্যজনক কাজের জন্য আপনাকে ধন্যবাদ। আপনি লিঙ্কটি অনুসরণ করলে বিস্তারিত সমাবেশের নির্দেশনা পাওয়া যাবে।

যদিও আমাকে নিয়ন্ত্রণ ব্যবস্থা পরিবর্তন করতে হয়েছিল। আমি সার্ভিস নিয়ন্ত্রণের জন্য সেন্সর ieldাল সহ Arduino Uno ব্যবহার করি। সেন্সর ieldাল তারের সরলীকরণে অনেক সাহায্য করে এবং সার্ভোসের বাহ্যিক শক্তি সরবরাহ করাও সহজ করে। আমি সেন্সর শিল্ডে স্টেপ-ডাউন মডিউল (6V) এর মাধ্যমে তারযুক্ত 12V 6A পাওয়ার অ্যাডাপ্টার ব্যবহার করি।

Servos একটি নোট। আমি Taobao থেকে কেনা MG 996 HR সার্ভিস ব্যবহার করি, কিন্তু মান সত্যিই খারাপ। এটি অবশ্যই একটি সস্তা চীনা নক-অফ। কনুই জয়েন্টের জন্য একটি যথেষ্ট টর্ক সরবরাহ করেনি এবং এমনকি ভারী বোঝার নিচে একবার ধোঁয়া শুরু করে। আমি একটি উন্নত মানের প্রস্তুতকারকের থেকে এমজি 946 এইচআর দিয়ে কনুই জয়েন্ট সার্ভো প্রতিস্থাপন করতে হয়েছিল।

দীর্ঘ গল্প সংক্ষিপ্ত - মানের servos কিনতে। যদি আপনার সার্ভিস থেকে জাদুর ধোঁয়া বের হয়, তাহলে আরও ভালো সার্ভস ব্যবহার করুন। 6V একটি খুব নিরাপদ ভোল্টেজ, এটি বাড়াবেন না। এটি ঘূর্ণন সঁচারক বল বৃদ্ধি করবে না, কিন্তু servos ক্ষতি করতে পারে।

নিম্নরূপ servos জন্য তারের:

বেস 2

কাঁধ 2 4 শোল্ডার 1 3

কনুই 6

গ্রিপার 8

কব্জি 11

যতক্ষণ না আপনি Arduino স্কেচ পরিবর্তন করতে মনে রাখবেন ততক্ষণ এটি পরিবর্তন করুন।

হার্ডওয়্যারের কাজ শেষ করার পর, আসুন বড় ছবিটি দেখি!

ধাপ 3: MoveIt RobotCommander ইন্টারফেস

MoveIt RobotCommander ইন্টারফেস
MoveIt RobotCommander ইন্টারফেস

তাই এখন কি? কেন আপনি যাইহোক MoveIt এবং ROS প্রয়োজন? আপনি কি সরাসরি Arduino কোডের মাধ্যমে বাহু নিয়ন্ত্রণ করতে পারবেন না?

হ্যা, তুমি পারো.

ঠিক আছে, এখন কিভাবে GUI বা Python/C ++ কোড ব্যবহার করে রোবট পোজ দিতে যেতে হয়? Arduino কি এটা করতে পারে?

প্রকার, রকম. এর জন্য আপনাকে একটি ইনভার্স কিনেমেটিক্স সলভার লিখতে হবে যা একটি রোবট পোজ (3 ডি স্পেসে অনুবাদ এবং ঘূর্ণন স্থানাঙ্ক) গ্রহণ করবে এবং এটি সার্ভিসের জন্য যৌথ কোণ বার্তায় রূপান্তর করবে।

আপনি নিজে এটি করতে পারেন সত্ত্বেও, এটি করতে অনেক কাজ একটি জাহান্নাম। সুতরাং, MoveIt এবং ROS আপনার জন্য সমস্ত ভারী ত্রিকোণমিতিক উত্তোলন করার জন্য IK (বিপরীত গতিবিদ্যা) সমাধানকারীর জন্য একটি চমৎকার ইন্টারফেস প্রদান করে।

সংক্ষিপ্ত উত্তর: হ্যাঁ, আপনি একটি সাধারণ রোবোটিক বাহু করতে পারেন যা একটি হার্ড কোডেড আরডুইনো স্কেচ চালাবে যা এক ভঙ্গি থেকে অন্য ভঙ্গিতে যেতে পারে। কিন্তু আপনি যদি আপনার রোবটকে আরো বুদ্ধিমান করে তুলতে চান এবং কম্পিউটার ভিশন ক্ষমতা যোগ করতে চান, তাহলে MoveIt এবং ROS এ যাওয়ার উপায়।

আমি MoveIt ফ্রেমওয়ার্ক কিভাবে কাজ করে তা ব্যাখ্যা করে একটি খুব সরলীকৃত চিত্র তৈরি করেছি। আমাদের ক্ষেত্রে এটি আরও সহজ হতে চলেছে, যেহেতু আমাদের সার্ভোস থেকে আমাদের কোন প্রতিক্রিয়া নেই এবং সার্ভিসের জন্য কোণ সহ রোবট কন্ট্রোলার প্রদান করতে /joint_states বিষয় ব্যবহার করতে যাচ্ছি। আমাদের কেবল একটি উপাদানই নেই যা রোবট নিয়ামক।

আমরা কিসের জন্য অপেক্ষা করছি? আসুন কিছু রোবট কন্ট্রোলার লিখি, তাই আমাদের রোবট হবে … আপনি জানেন, আরো নিয়ন্ত্রণযোগ্য।

ধাপ 4: রোবট কন্ট্রোলারের জন্য আরডুইনো কোড

রোবট কন্ট্রোলারের জন্য আরডুইনো কোড
রোবট কন্ট্রোলারের জন্য আরডুইনো কোড
রোবট কন্ট্রোলারের জন্য Arduino কোড
রোবট কন্ট্রোলারের জন্য Arduino কোড
রোবট কন্ট্রোলারের জন্য Arduino কোড
রোবট কন্ট্রোলারের জন্য Arduino কোড

আমাদের ক্ষেত্রে Arduino Uno একটি ROS নোড চালাচ্ছে যার সাহায্যে rosserial রোবট কন্ট্রোলার হবে। Arduino স্কেচ কোড এই ধাপের সাথে সংযুক্ত এবং GitHub এও উপলব্ধ।

আরডুইনো ইউনোতে চলমান ROS নোড মূলত MoveIt চালিত কম্পিউটারে প্রকাশিত /JointState বিষয়কে সাবস্ক্রাইব করে এবং তারপর অ্যারে থেকে রেডিয়ান থেকে ডিগ্রিতে যৌথ কোণগুলিকে রূপান্তর করে এবং সেগুলিকে স্ট্যান্ডার্ড Servo.h লাইব্রেরি ব্যবহার করে সার্ভোসে পাঠায়।

এই সমাধানটি কিছুটা হ্যাকি এবং এটি শিল্প রোবটগুলির সাথে কীভাবে করা হয় তা নয়। আদর্শভাবে আপনি /FollowJointState বিষয়ে মুভমেন্ট ট্র্যাজেক্টোরি প্রকাশ করবেন এবং তারপর /JointState বিষয়ে ফিডব্যাক পাবেন। কিন্তু আমাদের বাহুতে শখের পরিষেবাগুলি প্রতিক্রিয়া প্রদান করতে পারে না, তাই আমরা সরাসরি FakeRobotController নোড দ্বারা প্রকাশিত /JointState বিষয় সাবস্ক্রাইব করব। মূলত আমরা ধরে নেব যে সার্ভিসগুলিতে আমরা যে কোন কোণগুলি পাস করেছি তা আদর্শভাবে কার্যকর করা হয়।

রোসেরিয়াল কীভাবে কাজ করে সে সম্পর্কে আরও তথ্যের জন্য আপনি নিম্নলিখিত টিউটোরিয়ালগুলির সাথে পরামর্শ করতে পারেন

wiki.ros.org/rosserial_arduino/ টিউটোরিয়াল

আপনি Arduino Uno তে স্কেচ আপলোড করার পরে, আপনাকে এটি আপনার ROS ইনস্টলেশন চালানো কম্পিউটারে সিরিয়াল ক্যাবলের সাথে সংযুক্ত করতে হবে।

পুরো সিস্টেমটি আনতে নিম্নলিখিত কমান্ডগুলি কার্যকর করুন

roslaunch my_arm_xacro demo.launch rviz_tutorial: = সত্য

sudo chmod -R 777 /dev /ttyUSB0

rosrun rosserial_python serial_node.py _port: =/dev/ttyUSB0 _baud: = 115200

এখন আপনি RVIZ- এ ইন্টারেক্টিভ মার্কার ব্যবহার করতে পারেন রোবট আর্মকে একটি ভঙ্গিতে নিয়ে যেতে এবং তারপরে প্ল্যান এবং এক্সিকিউট চাপুন যাতে এটি আসলে অবস্থানে চলে যায়।

ম্যাজিক!

এখন আমরা আমাদের র ra্যাম্প পরীক্ষার জন্য পাইথন কোড লিখতে প্রস্তুত। ভাল প্রায়…

ধাপ 5: (alচ্ছিক) IKfast প্লাগ-ইন তৈরি করা

ডিফল্টরূপে MoveIt KDL কিনেমেটিক্স সলভার ব্যবহার করার পরামর্শ দেয়, যা আসলে 6 টিরও কম DOF অস্ত্রের সাথে কাজ করে না। যদি আপনি এই টিউটোরিয়ালটি নিবিড়ভাবে অনুসরণ করেন তাহলে আপনি লক্ষ্য করবেন যে RVIZ- এ আর্ম মডেল কিছু ভঙ্গিতে যেতে পারে না যা আর্ম কনফিগারেশন দ্বারা সমর্থিত হওয়া উচিত।

প্রস্তাবিত সমাধান হল OpenRave ব্যবহার করে কাস্টম কিনেমেটিক্স সলভার তৈরি করা। এটি তেমন কঠিন নয়, তবে আপনাকে এটি তৈরি করতে হবে এবং এটি উত্স থেকে নির্ভরতা বা ডকার কন্টেইনার ব্যবহার করুন, যেটি আপনি পছন্দ করেন।

এই টিউটোরিয়ালে পদ্ধতিটি খুব ভালভাবে নথিভুক্ত করা হয়েছে। এটি উবুন্টু 16.04 এবং আরওএস কিনেটিক চালিত ভিএম -এ কাজ করার বিষয়ে নিশ্চিত।

আমি সমাধানকারী তৈরি করতে নিম্নলিখিত কমান্ডটি ব্যবহার করেছি

openrave.py -ডাটাবেস ইনভার্সকিনেমেটিক্স -রোবট = arm.xml --iktype = অনুবাদ

এবং তারপর দৌড়ে

rosrun moveit_kinematics create_ikfast_moveit_plugin.py test_robot arm my_arm_xacro ikfast0x1000004a. Translation3D.0_1_2_f3.cpp

MoveIt IKfast প্লাগ-ইন তৈরি করতে।

পুরো প্রক্রিয়াটি কিছুটা সময়সাপেক্ষ, তবে আপনি যদি টিউটোরিয়ালটি ঘনিষ্ঠভাবে অনুসরণ করেন তবে খুব কঠিন নয়। যদি এই অংশ সম্পর্কে আপনার কোন প্রশ্ন থাকে, দয়া করে মন্তব্য বা PM এ আমার সাথে যোগাযোগ করুন।

ধাপ 6: রamp্যাম্প টেস্ট

র R্যাম্প টেস্ট!
র R্যাম্প টেস্ট!
র R্যাম্প টেস্ট!
র R্যাম্প টেস্ট!

এখন আমরা র ra্যাম্প টেস্ট করার জন্য প্রস্তুত, যা আমরা ROS MoveIt Python API ব্যবহার করে সম্পাদন করব।

পাইথন কোড এই ধাপের সাথে সংযুক্ত এবং গিথুব রিপোজিটরিতেও পাওয়া যায়। আপনার যদি র ra্যাম্প না থাকে বা অন্য কোনো পরীক্ষা করতে চান তাহলে আপনাকে কোডে রোবট পোজ পরিবর্তন করতে হবে। যে প্রথম চালানোর জন্য

রোস্টোপিক প্রতিধ্বনি/rviz_moveit_motion_planning_display/robot_interaction_interactive_marker_topic/feedback

টার্মিনালে যখন ইতিমধ্যে RVIZ এবং MoveIt চলছে। তারপর ইন্টারঅ্যাক্টিভ মার্কার সহ রোবটটিকে কাঙ্ক্ষিত অবস্থানে নিয়ে যান। অবস্থান এবং ওরিয়েন্টেশন মান টার্মিনালে প্রদর্শিত হবে। শুধু তাদের পাইথন কোডে কপি করুন।

র ra্যাম্প পরীক্ষা চালানোর জন্য

rosrun my_arm_xacro pick/pick_2.py

RVIZ এবং rosserial নোড ইতিমধ্যে চলমান সঙ্গে।

নিবন্ধের তৃতীয় অংশের সাথে থাকুন, যেখানে আমি বস্তু সনাক্তকরণের জন্য স্টেরিও ক্যামেরা ব্যবহার করব এবং সাধারণ বস্তুর জন্য পিক অ্যান্ড প্লেস পাইপলাইন চালাব!

প্রস্তাবিত: