লিখেছেন হেইনস এবং টমাস লোগান
ভূমিকা
ব্লাইন্ড অডিও ট্যাক্টাইল ম্যাপিং সিস্টেম (BATS) অন্ধ এবং দৃষ্টি প্রতিবন্ধীদের জন্য মানচিত্রে অ্যাক্সেস প্রদান করতে চায়। আমরা ব্যবহারকারীর অন্যান্য ইন্দ্রিয়ের কাছে ঐতিহ্যগতভাবে ভিজ্যুয়াল তথ্য উপস্থাপনের উপায় বিকাশের লক্ষ্য রাখি। এই প্রকল্পের প্রয়োজনীয়তা স্পষ্ট হয়ে ওঠে যখন জেসন মরিস ক্লাসিক অধ্যয়নের জন্য চ্যাপেল হিলের উত্তর ক্যারোলিনা বিশ্ববিদ্যালয়ে আসেন। মরিস প্রাচীন বিশ্ব ম্যাপিং সেন্টার (AWMC) এ কাজ করেন, একটি ভিত্তি যা মানচিত্র এবং ভৌগলিক তথ্য বিজ্ঞান ব্যবহার করে প্রাচীন গবেষণার ক্ষেত্রে অগ্রসর হয়। মরিস, যিনি শৈশব থেকেই অন্ধ ছিলেন, তার জীবনের বেশিরভাগ সময়ই তার অধ্যয়নের পছন্দের জন্য গুরুত্বপূর্ণ তথ্যের অ্যাক্সেস অস্বীকারের সম্মুখীন হয়েছেন। AWMC-তে তার কাজের সাথে, তিনি একটি সমাধান খুঁজে বের করার প্রতিশ্রুতি দিয়েছিলেন।
কম্পিউটার বিজ্ঞানের সহযোগী অধ্যাপক গ্যারি বিশপের সাথে মরিসের সুযোগের বৈঠক প্রকল্পটিকে গতিশীল করে। বিশপ এমন ব্যবহারকারীদের সন্ধান করছিলেন যারা তাদের প্রয়োজনের জন্য কাস্টমাইজড আনুষাঙ্গিক বিকাশ করে উপকৃত হতে পারে। তাদের সাক্ষাতের সময়, দৃষ্টি প্রতিবন্ধী বিন্যাসে প্রাচীন বিশ্বের কোন মানচিত্র ছিল না। তাদের প্রাথমিক কথোপকথনের পর। বিশপ একটি সেমিস্টার-দীর্ঘ সফ্টওয়্যার ইঞ্জিনিয়ারিং কোর্সে সমাধানটি বাস্তবায়ন করার জন্য স্নাতক ছাত্রদের একটি দলের জন্য একটি সুযোগ তৈরি করেছেন। এই উত্তেজনাপূর্ণ প্রকল্পে কাজ করার জন্য একত্রিত পাঁচ সদস্যের দলের অংশ হতে পেরে আমরা ভাগ্যবান ছিলাম।
সহযোগী অধ্যাপক Kay Hedlund দ্বারা শেখানো একটি সফ্টওয়্যার ইঞ্জিনিয়ারিং কোর্সের উদ্দেশ্য হল ছাত্রদের কীভাবে সহযোগিতামূলকভাবে কাজ করতে হয়, লক্ষ্য চিহ্নিত করতে হয় এবং সময়সীমা পূরণ করতে হয়। আমাদের দল প্রাথমিক নকশার সিদ্ধান্ত নিয়ে আলোচনা করতে আমাদের তিনজন পরামর্শদাতার সাথে বৈঠক শুরু করেছে। প্রফেসর বিশপ আমাদের জন্য ড. ড্যান জ্যাকবসনের কাগজ নিয়ে এসেছেন ন্যাভিগেটিং ম্যাপস উইথ লিটল বা নো ভিশন: একটি ডিভাইস ডেভেলপ করার জন্য একটি অডিও-ট্যাক্টাইল অ্যাপ্রোচ যা শব্দ এবং স্পর্শের মাধ্যমে স্থানিক তথ্যে অ্যাক্সেস প্রদান করে। আমাদের সিস্টেমের প্রধান উপাদানগুলি ছিল উইন্ডোজ 2000 চালিত একটি পেন্টিয়াম III কম্পিউটার, প্রাথমিক ইনপুট ডিভাইস হিসাবে একটি টাচপ্যাড এবং সংশ্লেষিত ভয়েসের সাথে তথ্য যোগাযোগের জন্য মাইক্রোসফ্ট স্পিচ SDK 5.1।
পাইথনের বিকল্প
একটি ছোট উদাহরণ সহ একটি প্রোগ্রাম কোডিং করার কঠিন কাজের সম্মুখীন, আমাদের দলকে প্রথম গুরুত্বপূর্ণ ডিজাইনের সিদ্ধান্তটি মোকাবেলা করতে হয়েছিল তা হল প্রোগ্রামিং ভাষার পছন্দ। আমাদের প্রাথমিক ধারণা ছিল C++ বা Java ব্যবহার করা কারণ গ্রুপের প্রত্যেকেই উভয়ের সাথে দক্ষ ছিল। গ্রুপের একজন সদস্য পূর্ববর্তী ক্লাসে পাইথনের সংস্পর্শে এসেছিলেন এবং এর শক্তি এবং ব্যবহারের সহজতা দেখে মুগ্ধ হয়েছিলেন। সৌভাগ্যবশত, ভাষার অভিজ্ঞতা ছাড়াই চারজন সদস্য আমাদের পাইথন ব্যবহার করার বিজ্ঞ সিদ্ধান্ত নেওয়া থেকে বিরত রাখেনি।
বিকাশের অনেক আগে, টাচপ্যাড অপারেটিং সিস্টেমের সাথে কীভাবে ইন্টারঅ্যাক্ট করে তা পরীক্ষা করার জন্য আমাদের একটি সাধারণ প্রোগ্রামের প্রয়োজন ছিল। এটি wxPython, শক্তিশালী wxWindows GUI টুলকিটের জন্য একটি পাইথন র্যাপার দিয়ে অবিশ্বাস্যভাবে সহজ করা হয়েছে। সম্পূর্ণরূপে স্ক্রীন নিয়ন্ত্রণ করার জন্য একটি ফ্রেম সেট আপ করা সহজ এবং ন্যূনতম কোডিং প্রয়োজন ছিল।
আমাদের ভয়ানক সময়ের সীমাবদ্ধতার পরিপ্রেক্ষিতে, এমন একটি ভাষা যা দ্রুত বিকাশের অনুমতি দেয় তা একটি বিশাল সুবিধা। সেই সময়ে গ্রুপের কারোরই প্রাথমিক ধারণা ছিল না যে আমরা প্রকল্পে পাইথনকে কতটা ব্যবহার করতে পারি। যাইহোক, যেহেতু আমরা এটির জন্য উপলব্ধ লাইব্রেরি এবং মডিউলগুলির বিস্তৃত সংগ্রহ অন্বেষণ করেছি, আমরা সিদ্ধান্ত নিয়েছি যে পাইথন একচেটিয়াভাবে ব্যবহার করা যেতে পারে।
বাস্তবায়ন
আমাদের পরবর্তী মিটিং টম এলিয়টের সাথে, সেন্টার ফর অ্যানসিয়েন্ট ওয়ার্ল্ড ম্যাপিংয়ের পরিচালক, যিনি সুবিধামত কম্পিউটার বিজ্ঞানে স্নাতক ডিগ্রী ধারণ করেছেন। তিনি আমাদের ব্যারিংটন অ্যাটলাসের সাথে পরিচয় করিয়ে দেন, একটি বারো বছরের উদ্যোগ যা 1874 সালে প্রাচীন গ্রীক এবং রোমান সভ্যতার প্রথম ব্যাপক মানচিত্রের সাথে শেষ হয়েছিল। সেন্টার ফর অ্যানসিয়েন্ট ওয়ার্ল্ড ম্যাপিং এখন এই অ্যাটলাসের সমস্ত ডেটা ডিজিটাইজ করছে, ডেটা তৈরি করছে। এটিতে একটি সমৃদ্ধ শিক্ষামূলক সরঞ্জাম সংগঠিত হয়েছিল। ব্রিটিশ দ্বীপপুঞ্জকে প্রোটোটাইপ মানচিত্র হিসাবে বেছে নেওয়া হয়েছিল। আমাদের আলোচনা চিত্রটির ভিজ্যুয়াল উপস্থাপনা এবং এর অন্তর্নিহিত ডাটাবেস তথ্যকে একটি বিন্যাসে অনুবাদ করার উপর দৃষ্টি নিবদ্ধ করে যা আমাদের প্রোগ্রাম দ্বারা ব্যবহার করা যেতে পারে।
ব্যাট সিস্টেমের জন্য জুম পরীক্ষার মানচিত্র
এলিয়ট আর্কভিউ ব্যবহার করে BATS-এর জন্য প্রথম দুটি ডেটা ফাইল সরবরাহ করেছিলেন, মানচিত্রের সাথে কাজ করার জন্য একটি শক্তিশালী টুল। দুটি ASCII পাঠ্য ফাইল তৈরি করা হয়েছিল, যা আমাদের মানচিত্রের পৃষ্ঠের ধরণ এবং উচ্চতা দেখায়। আমাদের ডিসপ্লে এবং টাচপ্যাডের রেজোলিউশনের সাথে মেলে 1024 কলাম এবং 768 সারির একটি গ্রিড হিসাবে ডেটা ফর্ম্যাট করা হয়েছিল৷ আমরা পাইথনে একটি সংখ্যাসূচক অ্যারেতে সংখ্যার এই গ্রিডটি পড়ার সিদ্ধান্ত নিয়েছি।
মূলত আমাদের অভ্যন্তরীণ মডেলের সাথে মানানসই ডেটা হ্রাস করার জন্য যথেষ্ট প্রিপ্রসেসিং জড়িত। আমরা প্রতিবার প্রোগ্রাম শুরু করার সময় রিডিং এবং স্কেলিং প্রক্রিয়ার মধ্য দিয়ে যেতে চাইনি কারণ এটি সময়সাপেক্ষ ছিল। পরিবর্তে, আমরা একবার ডেটা পড়তে এবং স্কেল করতে পারি, তারপর অভ্যন্তরীণ কাঠামো সংকুচিত করতে পারি
সঠিকভাবে উপযুক্ত ডেটা স্ট্রাকচারে, যার ফলে শুরুর সময় উল্লেখযোগ্যভাবে হ্রাস পায়।
লোড করা গ্রিডটি আমাদের চিত্রের একটি পিক্সেল এবং টেক্সট ফাইলের একটি মানের মধ্যে এক-থেকে-এক চিঠিপত্র সক্ষম করে। আমরা কল্পনা করেছি যে ব্যবহারকারী অডিও ডিভাইসের মাধ্যমে সারফেস প্রকারের সাথে শব্দগুলিকে সংযুক্ত করে মানচিত্রে তাদের বর্তমান অবস্থান সম্পর্কে ধ্রুবক প্রতিক্রিয়া পাবেন৷ আমাদের পরবর্তী উদ্বেগ ছিল যে পাইথন আমাদের শেষ ব্যবহারকারীকে প্রতিক্রিয়াশীল প্রতিক্রিয়া প্রদান করার জন্য যথেষ্ট দ্রুত ডেটা কাঠামো থেকে তথ্য পুনরুদ্ধার করতে পারে কিনা। পাইথন অবশ্য এই ক্রিয়াকলাপগুলিকে মসৃণভাবে সম্পাদন করতে সক্ষম হয়েছিল এবং আমাদের পৃষ্ঠের ধরণ সম্পর্কে তাত্ক্ষণিক শ্রবণ প্রতিক্রিয়া দিতে সক্ষম হয়েছিল। স্ক্রিনে ব্যবহারকারীর কার্সারটি দেখে, আমরা দেখেছি যে সমুদ্র এলাকায় প্রবেশ করার পরে, প্রোগ্রামের শব্দ আউটপুট অবিলম্বে তরঙ্গের শব্দে স্যুইচ করা হয়েছিল এবং ভূমিতে পুনঃপ্রবেশ করার সময়, দেরি না করে শব্দটি আবার সুইচ করা হয়েছিল। ব্যবহারকারী ব্রিটিশ দ্বীপপুঞ্জের ভূমির আকার সম্পর্কে তার প্রথম ডিজিটাল অনুসন্ধান শুরু করেছিলেন। গণনাগত বিরতি ছাড়াই প্রতিটি মানচিত্রের পয়েন্টের জন্য উচ্চতা পড়া যেতে পারে।
আমাদের সিস্টেমে দুটি প্রধান উপাদান রয়েছে, একটি গ্রাফিক্যাল ইউজার ইন্টারফেস এবং একটি ডেটা ম্যানেজার। ইউজার ইন্টারফেস ডাটা ম্যানেজার এর মাধ্যমে ডাটার সাথে ইন্টারঅ্যাক্ট করে। আমাদের ইন্টারফেস শুধুমাত্র একটি টাচপ্যাড এবং একটি নম্বর কীপ্যাড ব্যবহার করে দৃষ্টি প্রতিবন্ধী ব্যক্তিদের কম্পিউটারের ন্যূনতম অভিজ্ঞতা সহ সাহায্য করতে। ব্যবহারকারী যখন টাচপ্যাডের চারপাশে ঘোরাফেরা করে, wxPython মাউস মোশন ইভেন্ট সারফেস টাইপ টেবিল এবং সিটি ডাটাবেসের একটি ক্যোয়ারী ট্রিগার করে। পাইথন আমাদের দ্রুত কী এবং মাউস ইভেন্টগুলির সংমিশ্রণ পুনরায় বরাদ্দ করতে এবং পরীক্ষা করার অনুমতি দেয়।
ব্যবহারকারীর ইন্টারফেসে প্রতিক্রিয়া প্রদানের জন্য টাচপ্যাড, নম্বর কীপ্যাড এবং একটি ভয়েস সিন্থেসাইজার জড়িত। মাউস এবং মূল ইভেন্টগুলি wxPython দ্বারা পরিচালনা করা হয়েছিল, তবে আমাদের মাইক্রোসফ্টের স্পিচ API কল করতে হবে। আমরা মার্ক হ্যামন্ডের win32com মডিউল ব্যবহার করে এটি করেছি, যা আমাদের একটি ভয়েস তৈরি করতে এবং কোডের মাত্র তিনটি লাইনে বক্তৃতা তৈরি করতে দেয়।
ডেটা ম্যানেজার তিনটি সাংখ্যিক অ্যারে এবং win32all প্যাকেজ ব্যবহার করে তৈরি একটি ODBC ডাটাবেস সংযোগে ডেটা বজায় রাখে। তিনটি অ্যারে উচ্চতা, জমির ধরন এবং ডাটাবেস কী মান সংরক্ষণ করতে ব্যবহৃত হয়। BATS থেকে সরাসরি Microsoft Access ডাটাবেস অনুসন্ধান করার সিদ্ধান্তটি আমাদের প্রকল্পের সময়সীমার খুব কাছাকাছি নেওয়া হয়েছিল। আবার পাইথন আমাদের টিমটিকে দ্রুত এবং সফলভাবে বাস্তবায়ন করতে সক্ষম করেছে। একটি নির্দিষ্ট অবস্থানের সাথে কোন শহরের তথ্য যুক্ত তা নির্ধারণ করতে ডেটাবেস কী অ্যারে থেকে মান ব্যবহার করে একটি ODBC সংযোগের মাধ্যমে অ্যাক্সেস ডাটাবেসের প্রশ্ন করা হয়। ডাটাবেসে ক্যোয়ারী চালানোর ক্ষমতা এই টুলের শিক্ষাগত মানকে মানচিত্রগুলির গতিশীল সৃষ্টির অনুমতি দিয়ে ব্যাপকভাবে প্রসারিত করেছে।
ফলাফল
আমাদের সেমিস্টারের পরে, আমরা একটি টুল তৈরি করেছি যা জটিল মানচিত্রের তথ্য অনুসন্ধানের অনুমতি দেয়। মানচিত্র দেখে যে সমস্ত তথ্য অর্জন করা যেত সেগুলি এখন সংশ্লেষিত ভয়েস এবং সাউন্ড আইকন শোনার মাধ্যমে একইভাবে অর্জন করা যেতে পারে। আমাদের মানচিত্রটি গণনার জন্য একটি টেবিলের উপর নির্ভর না করে যেকোনো দুটি অবস্থানের মধ্যে দূরত্বের তাৎক্ষণিক যোগাযোগ প্রদান করে। অস্তিত্বের সময়কাল, ধরন এবং বসতিগুলির নাম শোনার ক্ষমতা কঠোরভাবে ভিজ্যুয়াল রেন্ডারিং-এ উপলব্ধ যা বাইরে মানচিত্রের ব্যবহারকে প্রসারিত করেছে। মরিস ক্লাসিক বিভাগের জন্য একটি স্নাতক-স্তরের কাগজ লেখার জন্য আমাদের প্রকল্পটিকে একটি সংস্থান হিসাবে ব্যবহার করতে সক্ষম হয়েছিল।
ব্যাটস ইন অ্যাকশন
জেসন মরিস (বাম) টম এলিয়ট (মাঝে) এবং থমাস লোগান (ডানে) এর সাথে BATS-এর সাথে কাজ করছেন। প্রসারিত করো
পাইথন প্রমাণ করেছে যে মানচিত্রের জন্য এই ডেটা ম্যানিপুলেশন সম্ভব এবং অন্যদের প্রকল্প সম্পর্কে উত্তেজিত করার জন্য আমাদের একটি শক্তিশালী প্রদর্শন তৈরি করার অনুমতি দিয়েছে। আমরা পুরো সেমিস্টার জুড়ে উপস্থাপনা চলাকালীন আমাদের সফ্টওয়্যার ডেমো করার সুযোগ পেয়েছি। একটি পূর্বে অলক্ষিত বাগ একটি উপস্থাপনা ঠিক আগে আমাদের প্রস্তুতির সময় সবসময় উপস্থিত হবে. আমরা খুঁজে পেয়েছি যে এই বাগগুলি পাইথনের সাথে খুব দ্রুত সনাক্ত এবং সমাধান করা যেতে পারে, যা লাইন নম্বর এবং স্ট্যাক ট্রেসকে যেখানে ত্রুটি ঘটেছে সেখানে রিপোর্ট করে। কোড কম্পাইল বা লাইব্রেরি মধ্যে জটিল লিঙ্ক সেট আপ করার কোন প্রয়োজন নেই. যেহেতু সবকিছুই রানটাইমে ব্যাখ্যা করা হয়, তাই আমরা জটিল সিনট্যাকটিক সমস্যার দ্বারা আচ্ছন্ন না হয়ে বা কম্পাইল সময়ের দ্বারা ধীর না হয়ে দ্রুত বিকাশ চালিয়ে যেতে পারি।
একটি নির্দিষ্ট দর্শকের জন্য দ্রুত একটি প্রদর্শনের জন্য পাইথনের ক্ষমতাও একটি সুবিধা ছিল। আমাদের প্রজেক্টকে একদল অভিযোজন এবং গতিশীলতা প্রশিক্ষক এবং তাদের দৃষ্টি প্রতিবন্ধী ছাত্রদের কাছে উপস্থাপন করার সময়, আমরা দ্রুত উত্তর ক্যারোলিনার একটি মানচিত্র তৈরি করতে পারি যা প্রাচীন ইংল্যান্ডের চেয়ে বেশি পরিচিত হবে। একবার আমরা বুঝতে পেরেছি কিভাবে সমস্ত টুকরো একসাথে ফিট করা উচিত, পাইথন প্রোগ্রামটিকে সহজেই একসাথে সেলাই করার জন্য একটি পরিবেশ প্রদান করে। আমরা যে ডেমোগুলি তৈরি করতে পেরেছিলাম তা আমাদের প্রকল্পটি এগিয়ে নিতে মাইক্রোসফ্ট গবেষণা অনুদান সুরক্ষিত করতে সাহায্য করেছে। এই বিক্ষোভগুলি মিডিয়ার আগ্রহকেও আকৃষ্ট করেছে, অন্ধদের জন্য মানচিত্রের প্রয়োজনীয়তা প্রচার করতে সাহায্য করেছে।
পাইথন আমাদের কোডে অন্যান্য প্রোগ্রামারদের মডিউলগুলিকে একীভূত করা খুব সহজ করেছে। আমরা এক্সএমএল দ্বারা পাইথন ইমেজিং লাইব্রেরির সাথে পরীক্ষা চালিয়ে যাচ্ছি
এবং সংখ্যাসূচক। অধ্যাপক বিশপ এবং স্নাতক ছাত্র পিটার প্যারেন্ট স্থানিক শব্দের জন্য OpenAL লাইব্রেরি এবং পাইথন থেকে হ্যাপটিক প্রতিক্রিয়ার জন্য এমারসন লাইব্রেরি ব্যবহার করতে সক্ষম হন। এটি SWIG এর সাথে করা হয়েছিল, যা C এবং C++ কোডের জন্য পাইথন ভাষা বাঁধাইয়ের স্বয়ংক্রিয় বিকাশের অনুমতি দেয়।
Comments
Post a Comment