একটি টার্গেটের দিকে একটি চতুর্ভুজ গাইড iding


9

আমি একটি কোয়াড্রোটার উপর কাজ করছি। আমি এর অবস্থান জানি -a, যেখানে আমি যেতে চাই - লক্ষ্য অবস্থান b, এবং এটি থেকে আমি একটি ভেক্টর গণনা করি c - একটি ইউনিট ভেক্টর যা আমাকে আমার টার্গেটে নিয়ে যাবে:

c = b - a
c = normalize(c)

যেহেতু চতুর্ভুজটি কোনও আবর্তন ছাড়াই যে কোনও দিকে অগ্রসর হতে পারে, তাই আমি যা করার চেষ্টা করেছি

  1. আবর্তিত c রোবট ইয়া কোণ দ্বারা
  2. এটি এর মধ্যে বিভক্ত x,y উপাদান
  3. তাদের রোল এবং পিচ কোণ হিসাবে রোবোটে প্রেরণ করুন।

সমস্যাটি হ'ল যদি ইয়াবা 0 ° ± 5 হয় তবে এটি কাজ করে, তবে যদি ইয়া + + 90 বা -90 এর কাছাকাছি থাকে তবে এটি ব্যর্থ হয় এবং ভুল দিকগুলির দিকে পরিচালিত করে। আমার প্রশ্ন হ'ল আমি কি এখানে স্পষ্ট কিছু মিস করছি?


1
আপনি কিভাবে ইয়া কোণটি গণনা করছেন? এছাড়াও, আপনি কোন নিয়ামক ব্যবহার করছেন এবং কীভাবে আপনি এটি ডেটা প্রেরণ করবেন?
ডেমনমেকার

আকর্ষণীয় প্রশ্ন @ হামজা, রোবোটিক্সে আপনাকে স্বাগতম
মার্ক বুথ

@ হামজা, আপনি কোন ভাষা এবং সিস্টেম ব্যবহার করছেন? আমি আতমেগা 328 এবং অ্যাডা প্রোগ্রামিং ভাষার সাথে একটি কোয়াডকপ্টারটিতেও কাজ করছি। প্রকল্পটি সম্পর্কে আপনার যদি কোনও ব্লগ থাকে তবে শেয়ার করুন।

আপনি সঠিক @ মারকবুথ, আমার দুটি ট্যাব খোলা ছিল এবং অন্য পোস্টটিকে নকল হিসাবে চিহ্নিত করার ইচ্ছা ছিল। আমি এটিকে ভুল করে চিহ্নিত করেছি এবং এটিকে পূর্বাবস্থায় ফেলার কোনও উপায় দেখিনি। এটি দেওয়া একাধিক ভোট গ্রহণের কারণে আমি বুঝতে পেরেছিলাম যে এটি কোনও সমস্যা হবে না। আমি বুঝতে পারি নি যে এটি আমার পক্ষ থেকে একটি মন্তব্য পোস্ট করেছে।
ডেমনমেকার

@ ডেমনমেকার কোনও সমস্যা নেই এই জিনিসগুলি ঘটে। সদৃশ ভোট হিসাবে বন্ধ করুন এখন স্বয়ংক্রিয়ভাবে মন্তব্য পোস্ট করুন, যা আমি মনে করি এটি একটি দরকারী বৈশিষ্ট্য কারণ এটি লোকেরা নিজেরাই কাছাকাছি ভোট দেওয়ার আগে অন্যান্য প্রশ্নটি পর্যালোচনা করতে উত্সাহিত করে।
মার্ক বুথ

উত্তর:


6

আপনার সমাধানটি পুনরায় প্রয়োগ করে, আমি এটি পেয়েছি:

ভেক্টরগুলির মধ্যে অ্যাঙ্গেল

প্রথমত, আপনি পয়েন্টগুলির মধ্যে কোণ চান A এবং B - বিশেষত ইউনিট ভেক্টর নয়। 2 পয়েন্টের মধ্যে কোণ

( এফএক্স প্রোগ্রামিংয়ের মাধ্যমে ): θ=math.atan2(BxAx,ByAy)

যানবাহন ইয়া এঙ্গেল

পরবর্তী (এবং আমি সন্দেহ করি এটি আপনার সমস্যা), আপনাকে গাড়ির ইয়া কোণটি বিয়োগ করতে হবেψ আপনার গণনা থেকে θ

শিরোনাম বনাম ইয়াও

আপনি যদি নিজের যানবাহনের "ইয়াও কোণ" এর জন্য একটি কম্পাস ব্যবহার করেন তবে এটি আপনার ভুলও হতে পারে; শিরোনাম এবং ইয়াও এক নয় । ধনাত্মক বরাবর কম্পাস শিরোনাম শূন্যyঅক্ষ, ঘড়ির কাঁটার দিকে পরিণত হওয়ার সাথে সাথে বাড়ছে :

কম্পাস গোলাপ

ইয়া ধনাত্মক বরাবর শূন্য xঅক্ষ, ঘড়ির কাঁটার বিপরীতে পরিণত হওয়ার সাথে সাথে বাড়ছে :

পোলার গ্রাফ

এই পরিমাপের মধ্যে 90 ডিগ্রি ওভারল্যাপ, কাঙ্ক্ষিত ইয়াবা থেকে যানবাহন জো যোগ করার (বিয়োগের পরিবর্তে) সাথে মিলিত হতে পারে, যখন আপনার লক্ষ্যটি ± 5 within এর মধ্যে ছিল এবং ± 90 at এ খারাপ আচরণ করেছে তখন কেন জিনিসগুলি কাজ করেছিল °

অংশ এবং এক্স এবং Y তে রূপান্তর

সেখান থেকে, আপনি বলছেন যে আপনি এই ফলাফলটি রূপান্তর করছেন (θψ) এর মধ্যে x এবং yউপাদানগুলি, তাদের রোল এবং পিচ কোণ হিসাবে রোবোটে প্রেরণ করে। উপরোক্ত সংশোধনগুলির সাথে আপনার এই মুহুর্তে পছন্দসই ফলাফল পাওয়া উচিত। যাইহোক, এই উপাদানগুলিকে সরাসরি টিস্যু কোণগুলিতে ম্যাপিং সমস্যাযুক্ত হতে পারে যেহেতু আপনি কেবল অবস্থানের পার্থক্য বিবেচনা করছেন, এবং গাড়ির গতিবেগ (সত্যিকার অর্থে, গতি) নয়)

পিআইডি নিয়ন্ত্রণ

আপনার গাড়ির রোল এবং পিচের জন্য পিআইডি কন্ট্রোল লুপ ব্যবহার করে সেরা পরিবেশিত হতে পারে। এটি হ'ল একবার আপনি নিজের কোডটি ঠিক করেন এবং আপনার টার্গেটে আঘাত হানতে সক্ষম হবেন, আমার ধারণা হ'ল আপনি এর পরিবর্তে এটি ওভারশুট করা শুরু করবেন - সামনে এবং পিছনে দোলন। একটি সঠিক-টিউনযুক্ত পিআইডি হ'ল এটিকে ঘটতে বাধা দেবে, তবুও আপনাকে দ্রুত লক্ষ্যে পৌঁছানোর অনুমতি দেয়।

পরিবর্তে আপনার প্লাগ x এবং yরোল এবং পিচ-এ, তাদেরকে ত্রুটি মান হিসাবে বিবেচনা করুন যা রোল এবং পিচ পিআইডিরা ইনপুট হিসাবে গ্রহণ করে।


এটি সেখানে কিছু সম্পাদনা, 90% এরও বেশি এবং উত্তরটি পুরোপুরি পরিবর্তন করে (পিআইডি থেকে এটিএন 2 এ)। তবে আপনার চটকদার গ্রাফিক সূত্রের দক্ষতা হ'ল জন্তু!
স্পাইকড3

আমি এখনও পিআইডি সুপারিশ করছি (এটি নীচে রয়েছে), আমার অনুমানগুলি সঠিক ছিল কিনা তা নিশ্চিত করার জন্য আমি প্রশ্নের শুরুতে অংশ দিয়ে কাজ করেছি। গ্রাফিক সূত্রগুলি লেটেক্স ফর্ম্যাটিংয়ের অংশ, যা পরীক্ষা করে দেখার মতো।
ইয়ান

"কম্পাস শিরোনামটি ধনাত্মক y অক্ষ থেকে শুরু হয় এবং ঘড়ির কাঁটার দিকে বাড়িয়ে দেয়, যখন ইয়া ইতিবাচক এক্স অক্ষ থেকে শুরু হয় এবং ঘড়ির কাঁটার বিপরীতে বৃদ্ধি পায়" রেফারেন্স? "(θ − ψ) এর x উপাদানটিকে রোল এবং y উপাদানকে পিচতে রূপান্তর করা" আমি এটিকে মোটেও পাই না - আরও ব্যাখ্যা করুন দয়া করে (আমি কিছু অনুপস্থিত)।
স্পাইকড3

মূল প্রশ্নটিতে "[x এবং y উপাদান] রোলটকে রোল এবং পিচ অ্যাঙ্গেল হিসাবে প্রেরণ করা" উল্লেখ করা হয়েছে, যা আমার কাছে ইঙ্গিত দেয় যে কোয়াডকপ্টারটি রোল এঙ্গেল পরিবর্তনের পাশাপাশি পাশাপাশি এবং পিচ কোণ পরিবর্তন করে সামনে এবং পিছনে চলেছে। আমি কিছু স্পষ্টতা যোগ করব।
আয়ান

ঝরঝরে। আমি এটি কখনও এটি করতে দেখিনি। আমি দেখেছি এবং নিজেই করছি, একই ফলাফল পেতে কেবল কোপ / পাপ উল্টিয়ে দিন। আমাকে আরও রোল / পিচ নিয়ে ভাবতে হবে। হ্যাঁ, এটি গতি সৃষ্টি করবে, তবে আমি নিশ্চিত যে আপনি যেখানে যাচ্ছেন সেখানে গতি ছাড়া আপনি কোথায় আছেন এবং কোথায় যাচ্ছেন তার সাথে এর কোনও সম্পর্ক কীভাবে রয়েছে i'm ধন্যবাদ।
স্পাইকড3

5

আমি ধরে নিচ্ছি আপনি এখানে একটি 3 ডি ভেক্টরের কথা বলছেন। আপনি কি ঠিক এর normalize()মতো সাধারণীকরণ করতে পারেন? এটি কি সাধারণ (যদি আমি এটি কখনও দেখিনি তবে তা যদি হয় তবে আমার কাছে সংবাদ)। অন্যথায়, সুস্পষ্ট কম্পাস মোড়ানোর সমস্যাগুলি প্রতিটি এক্স এবং ওয়াই উপাদানগুলির জন্য প্রযোজ্য। কেন তাদের রোল এবং / অথবা পিচ এবং / অথবা ইয়াউ বলবেন না? (3 ডি এবং 2 ডি নামকরণ মিশ্রণ প্রশ্নটিকে বিভ্রান্ত করে)।

আমার 2 ডি নর্মালাইজ দেখতে এমন কিছু দেখাচ্ছে;

int Pilot_QuickestTurnTo(int hdgNow, int hdgNew)
{
    hdgNow = Pilot_Hdg360(hdgNow);
    hdgNew = Pilot_Hdg360(hdgNew);
    if (hdgNow < hdgNew)
        hdgNow += 360;
    int left = hdgNow - hdgNew;
        return (left < 181 ? -left : 360 - left);
}

যদি এটি প্রকৃতপক্ষে একটি কোয়াড হয় তবে আমি ধরে নিচ্ছি যে আপনার এক্স এবং ওয়াই উপাদানগুলি সত্যই YAW, উচ্চতা ((এক্স, ওয়াই) এবং জেড)। আপনাকে YAW(X, Y)2 ডি- তে হ্যান্ডেল করতে হবে এবং জেডের জন্য কেবল উচ্চতা ছেড়ে দেওয়া বা উচ্চতা অর্জন করতে হবে (এবং আবার আমি কেন সন্দেহ করি যে আপনার স্বাভাবিকের তুলনায় স্বাভাবিক হওয়া আরও বেশি)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.