পদার্থবিজ্ঞানের মডেল সহ একটি জাহাজের জন্য এআই নিয়ন্ত্রণ


19

আমি 2D স্পেসে কীভাবে নিম্নলিখিতগুলি প্রয়োগ করতে পারি সে সম্পর্কে আমি ধারণা খুঁজছি। দুর্ভাগ্যক্রমে আমি এআই / পাথ সন্ধান / স্বায়ত্তশাসিত নিয়ন্ত্রণ সম্পর্কে এখনও বেশি কিছু জানি না।

ধরা যাক এই জাহাজটি অবাধে চলাচল করতে পারে তবে এর ভর ও গতি রয়েছে। এছাড়াও, বাহ্যিক শক্তিগুলি এটি প্রভাব ফেলতে পারে (বিস্ফোরণ ইত্যাদি)। প্লেয়ার যেকোন সময় জাহাজের জন্য একটি লক্ষ্য নির্ধারণ করতে পারে এবং এটি সেই জায়গায় পৌঁছে থামাতে হবে।

পদার্থবিজ্ঞান ব্যতীত এটি সহজ হবে, কেবল দিকে নির্দেশ করুন এবং যান। তবে কীভাবে বিদ্যমান গতি সামলাবেন এবং তারপরে স্পটটিতে থামবেন? আমি সরাসরি জাহাজের স্থান পরিবর্তন করতে চাই না।

সম্পাদনা: কেবল পরিষ্কার করার জন্য, জাহাজের পদার্থবিজ্ঞান সম্পর্কিত গণিত নিজেই সমস্যা নয়।


আমি আশা করি শিগগিরই এটির সাথে একইরকম একটি সমস্যার মুখোমুখি হব; আমি এর উত্তর দেখার অপেক্ষায় রয়েছি।
বিল

উত্তর:


15

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


+1 টি। 2 ডি স্পেস গেমের জন্য আমি স্টিয়ারিং আচরণগুলি আপনার কাঠামো হিসাবে ব্যবহার করার এবং সেই ফ্রেমওয়ার্কের মধ্যে আমার উত্তরগুলির একটি উপাদান হিসাবে ব্যবহার করার পরামর্শ দেব।
tenpn

আমি যখন প্রশ্নটি পড়ি তখন একই চিন্তাভাবনা করার পরামর্শ দিচ্ছিলাম। আমি স্টিয়ারিং আচরণটি খুব ব্যবহার করেছি, এটি সহজ এবং কিছু সুন্দর সুন্দর এআই / গতির জন্য অনুমতি দেয়।
ডটমিনিক

5

ঠিক সঠিকভাবে পাওয়া সহজ সমস্যা নয়। আপনার দুটি বিকল্প রয়েছে, যদিও প্রতিটি সমাধানের নির্দিষ্টকরণ আলাদা হয়:

একটি গাণিতিক সমাধান। যদি আপনার পদার্থবিজ্ঞান সিস্টেমটি যথেষ্ট সহজ হয় তবে আপনি আপনার গতির জন্য বদ্ধ ফর্ম তৈরি করতে পারেন এবং একটি বিন্দুতে থামার জন্য যখন আপনাকে ব্রেকিং ফোর্স প্রয়োগ শুরু করা দরকার তখন গণনা করতে পারেন। আপনার ব্রেকিং শক্তি যদি একটি ধ্রুবক এবং আপনার বায়ু প্রতিরোধ না থাকে তবে এটি একটি চতুর্ভুজকে ক্ষয় করতে হবে।

একটি অনুগত সমাধান। আপনি একটি হ্যান্ড-সুরযুক্ত পিআইডি কন্ট্রোলার ব্যবহার করতে পারেন বা প্রকৃতপক্ষে আপনার পদার্থবিজ্ঞানের সিস্টেমে আপনার জাহাজের জন্য ব্রেকিং দূরত্বগুলি রেকর্ড করতে পারেন : একটি পরীক্ষার মাধ্যমে, জাহাজটিকে সর্বোচ্চ গতি থেকে একটি স্টপ পর্যন্ত ব্রেক করুন, দূরত্বটি রেকর্ডিং করে এবং প্রতিটি ছোট সময়কে গতিবেগ করুন। একটি ডেটা ডিরেক্টরিতে ফলাফল দূরত্ব / গতির গ্রাফ সংরক্ষণ করুন।

চলাকালীন সময়ে, দূরত্বটি পেতে আপনার বর্তমান গতি এবং লক্ষ্য গতিতে গ্রাফটি এবং প্লাগটিকে পুনর্গঠন করুন। আপনার লক্ষ্য বিন্দু থেকে এই দূরত্বে আপনি সম্পূর্ণ ব্রেক এ থাকা প্রয়োজন।

এই পদ্ধতির সুবিধা হ'ল আপনি যে কোনও গতির ঠিক ব্রেক করতে এটি ব্যবহার করতে পারেন। অসুবিধাটি হ'ল যদি আপনার ব্রেকগুলি raালু চালানো বা বন্ধ করতে হয় তবে আপনি কখনই ঠিক বাঁকতে পারবেন না।


1

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

দুর্ভাগ্যক্রমে, http://www.red3d.com/cwr/steer/ আচরণগুলির জন্য উত্স কোড সরবরাহ করে না। তবে, প্রোগ্রামিং গেম এআই উদাহরণ দ্বারা উদাহরণগুলি বিশদগুলি বুঝতে সহজভাবে আচরণগুলি ব্যাখ্যা করে এবং ব্যাখ্যা করে। আপনি যদি বইটি না পান তবে আপনি সর্বদা উত্স কোডটি এখানে পেতে পারেন: http://www.wordware.com/files/ai/

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

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

আশা করি এইটি কাজ করবে.


Red3d.com লিঙ্কটি সরাসরি উত্স সরবরাহ করে না , তবে ওপেনস্টিয়ার ( ওপেনস্টিয়ার.সোর্সফোর্জন.নেট ) এর ঠিক সেই পৃষ্ঠায় একটি লিঙ্ক রয়েছে যা স্টিয়ারিং আচরণগুলির একটি ওপেন সোর্স বাস্তবায়ন।
বামমজ্যাক

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

1

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

আমি হার্মাইট কার্ভ ব্যবহার করে সমস্যার সমাধান করেছি । আপনার জাহাজের অবস্থান এবং গতিতে p0 এবং m0 সেট করুন, আপনার লক্ষ্য অবস্থান এবং গতিতে পি 1 এবং এম 1 করুন। এটি ধরে নিয়েছে আপনি টার্গেটের পরে জাহাজটি এক সেকেন্ড অনুসরণ করতে চান। পি (0) এর দ্বিতীয় ডেরাইভেটিভ গণনা করুন, এটি আপনাকে আপনার জাহাজে প্রয়োগ করতে ত্বরণ দেবে।

দ্বিতীয় ডেরাইভেটিভের কোড এখানে রয়েছে (এফ # তে, আমি আশা করি আপনি এটি আপনার পছন্দের ভাষার সাথে খাপ খাইয়ে নিতে পারবেন; বর্গ () বর্গাকার গণনা করুন, একক উদ্ধৃতিগুলি উদ্ধৃতি হিসাবে বর্ণিত নয় তবে অক্ষর হিসাবে, তারা সনাক্তকারীটির অংশ):

    let h'' t =
        let h00'' t = 12.0 * t - 6.0
        let h10'' t = 6.0 * t - 4.0
        let h01'' t = -12.0 * t + 6.0
        let h11'' t = 6.0 * t - 2.0

        let t = (t - t0) / diff_t

        (sq (1.0 / diff_t)) *
        ((h00'' t * p0) +
         (h10'' t * diff_t * v0) +
         (h01'' t * p1) +
         (h11'' t * diff_t * v1))

মনে রাখবেন যে আপনার জাহাজটি যদি বাহ্যিক শক্তির (যেমন গ্রহগুলির মাধ্যাকর্ষণ) এর অধীন হয় তবে ত্বরণ থেকে চাপের গণনা করার সময় আপনাকে তার জন্য অ্যাকাউন্ট করতে হবে।



-3

আমি মনে করি আপনার জাহাজের মতো পরামিতি থাকা উচিত: অবস্থান এবং বেগ।

বেগ সমস্ত বাহিনীর প্রতিটি ফ্রেমের সমষ্টি (যেমন মাধ্যাকর্ষণ, বিস্ফোরণ, ব্যবহারকারী ইনপুট ইত্যাদি) এবং একরকম স্যাঁতসেঁতে থাকতে পারে।

পজিশনটি শেষ অবস্থানের প্লাস বেগ * সময়_পদ্ধতি থেকে গণনা করা হয়।

যাইহোক, এটির সাথে লক্ষ্য স্থির করে থামানো বাস্তবায়ন করা কঠিন হতে পারে।


3
-1 দেখে মনে হচ্ছে পেটারি হিটাভির্টা জানে কীভাবে বেসিক ফিজিক্স সিস্টেম ব্যবহার করতে হয়। সুতরাং এই প্রশ্নের আপনার উত্তরটি হ'ল কোনও লক্ষ্যে থামানো কি খুব কঠিন?
অ্যাটাকিংহোব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.