ساخت روبات به روش مایکروسافت!

14 11 2009

رشته روباتیک و ساخت ربات در میان دانشجویان رشته های نرم افزار، سخت افزار و الکترونیک طرفداران زیادی دارد. در اکثر دانشگاه های ایران می توانید حداقل یک گروه فعال روباتیک پیدا کنید. معمولاً برای ساخت روبات در دانشگاه، یک تیم متشکل از بچه های نرم افزار، سخت افزار، الکترونیک و مکانیک تشکیل می شود که هر کدام بسته به تخصص خود در ساخت روبات کمک می کنند. معمولاً بچه های رشته نرم افزار در قسمت شبیه سازی و برنامه نویسی روبات کار می کنند. در این مطلب کوتاه با یک مجوعه نرم افزاری قدرتمند از شرکت مایکروسافت برای ساخت، شبیه سازی، تست و عیب یابی روبات ها آشنا می شویم.

Microsoft Robotics Developer Studio یا به اختصار MRDS مجموعه کاملی از ابزارهای نرم افزاری تحت ویندوز برای کنترل و شبیه سازی انواع محتلف روبات است. از این مجوعه نرم افزاری می توان در ساخت روبات های آکادمیک و حتی تجاری کمک گرفت. MRDS در ساخت نرم افزارهای مبتنی بر سرویس برای انواع مختلف سخت افزار کاربرد دارد.

MRDS بیشتر از یک نرم افزار برای بازی با روبات هاست. تقریباً دو سال پیش واحد تحقیقات مایکروسافت راه حلی برای ساخت روبات ها و کنترل آن ها در محیط ویندوز ارائه نمود، که هم اکنون به یکی از بسترهای موفق و مناسب برای توسعه انواع روبات ها تبدیل شده است. یکی از مهمترین نکات مربوط به نرم افزارهای روباتیک این است که کدی که نوشته اید در محیط شبیه سازی و محیط واقعی به یک صورت عمل کند، یعنی بدون دستکاری کد روبات شما همانطور که در محیط شبیه سازی شده کار می کرده است در محیط واقعی نیز کار کند، که MRDS به خوبی این نکته را پیاده سازی کرده است. شما روبات خود را با استفاده از ابزارهای بصری (Visual) مدل می کنید و کدهای آن را می نویسید، سپس در محیط 3بعدی رفتار روبات را شبیه سازی می کنید، آن را تست و عیب یابی می کنید و در نهایت در محیط واقعی پیاده سازی اش می کنید.

شبیه سازی در MRDS

مهمترین ویژگی های MRDS به شرح زیر است :

زبان برنامه نویسی ویژوال یا Visual Programming Language یک محیط توسعه گرافیکی است که با دیاگرام های مختلف رفتار ربات را تعیین می کند. کاربر می تواند به صورت گرافیکی با ربات خود تعامل داشته باشد. یک سرویس یا یک فعالیت به صورت یک بلاک که دارای ورودی و خروجی است نشان داده می شود. کاربر فقط باید این بلاک ها را از کاتالوگ انتخاب و آن را به دیاگرام خود اضافه نماید. اتصال میان این بلاک ها بوسیله ماوس کشیده می شوند و جزئیاتی مانند نحوه عملیات و مقادیر ارسالی مشخص می شوند. VPL می تواند از روی سرویس های موجود در دیاگرام که توسط کاربر ایجاد شده اند، کد مربوطه را تولید کند. با VPL حتی افرادی که تا به حال یک خط برنامه ننوشته اند نیز می توانند ربات بسازند!

برای تست و خطایابی ربات می توانید از رابط های مبتنی بر ویندوز و وب استفاده کنید. این رابط ها به شما کمک می کنند تا به صورت ریموت ربات خود را کنترل و عیب یابی کنید.

محیط شبیه سازی 3بعدی MRDS به شما اجازه می دهد که رفتار ربات را در یک جهان مجازی که شامل قوانین پیشرفته فیزیکی است، شبیه سازی کنید.

دستیابی آسان و سریع به سنسورها و فعال کننده های ربات

پشتیبانی از زبان های برنامه نویسی سی شارپ، ویژوال بیسیک و IronPython به برنامه نویسان دات نت اجازه می دهد که با استفاده از تجربه ها و مهارت های قبلی خود برای ربات ها برنامه های پیشرفته بنویسند.

اجزای MRDS

  • Concurrency and Coordination Runtime یا CCR یک کتابخانه دات نت فریم ورک است که از پردازش غیر همزمان (آسنکرون) پشتیبانی می کند. استفاده از پردازش آسنکرون برای ساخت یک روبات بسیار مهم است، زیرا سنسورها ممکن است به صورت همزمان داده ها را ارسال و دریافت کنند.
  • Decentralized Software Services یا DSS یک ران تایم مبتنی بر سرویس بسیار سبک است که از مدل REST برای ارتباط استفاده می کند.
  • Visual Programming Language یا VPL (که در بالا در مورد آن مفصل توضیح داده شد) یک زبان گرافیکی است که رفتار یک روبات را به صورت دیاگرام مدل می کند.
  • Visual Simulation Environment یا VSE که محیطی برای شبیه سازی روبات ساخته شده توسط MRDS است. شما می توانید در این محیط مجازی رفتارهای روبات خود را در شرایط مختلف مشاهده کنید.

چگونه شروع کنیم

robotMRDS در سه نسخه Express، Standard و آکادمیک عرضه می شود. نسخه Express همانطور که از نامش پیداست رایگان است اما بعضی از قابلیت های نسخه استاندارد را ندارد و برای کاربردهای حرفه ای مناسب نیست. نسخه استاندارد پولی است و برای کاربدهای حرفه ای است. نسخه آکادمیک تمام ویژگی های نسخه استاندارد را داراست و برای دانشجویان رایگان است. پیش نیاز نصب MRDS یک کارت گرافیکی مناسب با پشتیبانی از Pixel Shader و Vertex Shader است. همچنین DirectX 9.0 باید روی ویندوز شما نصب باشد. به این صفحه از وب سایت مایکروسافت بروید و نسخه ای از MRDS را دانلود کنید. آن را نصب کنید. اگر ویژوال استادیو روی سیستم شما نصب باشد، تمپلیت های MRDS به صورت خودکار روی آن نیز نصب می شوند.

قدم بعدی شما تلاش برای یادگیری خواهد بود. یک راهنمای خوب به همراه نرم افزار نصب می شود، می توانید آن را مطالعه کنید یا از راهنمای آنلاین کمک بگیرید. مثال ها و تمرین های خوبی نیز همراه نرم افزار ارائه شده است. با تمرین و پشتکار و علاقه ادامه دهید تا روبات خود را بسیازید!

farasun.wordpress.com

راه حل غیر مایکروسافتی : اگر از مایکروسافت به هر دلیلی خوشتان نمیاد یا از این محصولش به خاطر کپی رایت و این حرفا نمی توانید استفاده کنید، من نرم افزار Simbad که یک نرم افزار اوپن سورس و رایگان  مبتنی بر جاواست را پیشنهاد میکنم.





لینک به توییتر! راهی دیگر برای استفاده از توییتر در دات نت

25 10 2009

من قبلاً هم مطلبی نوشته بودم و نحوه استفاده از API توییتر در دات نت را توضیح داده بودم +. اگر نمی دانید توییتر چیست به همان مطلب مراجعه کنید. در این مطلب به معرفی یک کتابخانه کدباز می پردازم که تمام امکانات API توییتر را به شما در قالب یک Linq Provider می دهد.

LinqToTwitter یک فراهم کننده LINQ برای استفاده از معروف ترین سرویس دهنده میکرو بلاگینگ یعنی توییتر در برنامه های مبتنی بر دات نت فریم ورک 3.0 به بعد است. LINQToTwitter از سینتاکس استاندارد LINQ برای ایجاد کوئری و انجام متدهایش استفاده می کند. این یعنی برای استفاده از آن در برنامه خود باید با قواعد LINQ آشنایی داشته باشید.

200xColor_2اگر با LINQ آشنایی داشته باشید به راحتی می توانید با استفاده از این کتابخانه با وب سایت توییتر ارتباط برقرار کنید و کوئری های خود را روی آن اجرا کنید و نتیجه را مشاهده کنید. این کتابخانه علاوه بر امکان برگرداندن PublicTiemLine و FriendsTimeLine، می تواند TimeLine یک کاربر خاص را نیز به شما تحویل دهد و متدهایی برای آپدیت کردن وضعیت، فرستادن دایرکت مسیج، بلاک کردن یک کاربر خاص، فالو کردن، تغییر در پروفایل کاربر وسرچ کردن در تایم لاین توییتر را در اختیارتان قرار میدهد تا بتوانید یک کلاینت بی نقص برای توییتر بسازید.

با این کتابخانه اوپن سورس شما می توانید از توییتر در وب سایت های مبتنی بر ASP.NET و ASP.NET MVC و برنامه های WinForms و دیگر نرم افزارهای تحت دات نت فریم ورک استفاده کنید. هیچکس نمی تواند منکر محبوبیت و تاثیر بسیار زیاد توییتر در دنیای امروز شود. به طور مثال می توانید کاری کنید که خبرهای وب سایت خودتان یا مشتری تان به محض انتشار در اکانت توییتر مخصوص به آن نیز توییت شود.

چطور از LinqToTwitter استفاده کنیم؟

ابتدا به وب سایت  LinqToTwitter بروید و آخرین نسخه آن را دریافت کنید. همانطور که گفتم این کتابخانه کدباز است، وقتی دانلود شما تمام شد، سورس کد کامل این پروژه را در اختیار دارید. برای استفاده از این کتابخانه در پروژه خود باید ابتدا آن را کامپایل کنید. سولوشن LinqToTwitter.sln را با ویژوال استادیو 2008 باز کنید. این سولوشن دارای چند دمو بسیار مناسب هم هست که نحوه استفاده از این کتابخانه را به شما نشان می دهند. روی پروژه LinqToTwitter در Solution Explorer کلیک راست کنید و گزینه Build را انتخاب کنید.الان فایل LinqToTwitter ساخته شده. در پروژه خودتان به فایل LinqToTwitter.dll ارجاع دهید. حالا برای استفاده از آن در هر جا که نیاز دارید فضای نام LinqToTwitter را using/Import کنید.

مانند LinqToSQL که یک DataContext وجود دارد، در این کتابخانه نیز یک TwitterContext وجود دارد. حداقل کاری که می توانید با آن بکنید این است که نام کاربری و زمز عبور حساب توییتر خود را ست کنید و یک توییت با آن انجام دهید. در زیر مثالی به زبان سی شارپ را برای انجام این کار می آورم.

var context = new TwitterContext("[myusername]", "[mypassword]");
var status = context.UpdateStatus("Tweeted via linq2twitter");

اگر می خواهید لیستی از توییت های خود را در وب سایت خود نمایش دهید می توانید به صورت زیر عمل کنید :

var context = new TwitterContext("[yourusernamehere]", "[yourpasswordhere]");
var MyTweets =
from tweet in context.Status
where tweet.Type == StatusType.User
&& tweet.ID == "[youruserid]"
&& tweet.Page == 1
&& tweet.Count == 10
select tweet;

در مثال بالا، شما باید نام کاربری و رمز عبور خود را ست کنید تا این کوئری 10 توییت آخر شما را برگرداند.

اگر عضو توییتر نیستید، می توانید برای امتحان کردن این کتابخانه از کد زیر استفاده کنید. این مثال آخرین توییت ها در تایم لاین عمومی توییتر را برمیگرداند (مثال موجود در وب سایت رسمی پروژه) :

var twitterCtx = new TwitterContext();
var publicTweets =
from tweet in twitterCtx.Status
where tweet.Type == StatusType.Public
select tweet;

LinqToTwitter مثال خوب دیگری است که نشان می دهد LINQ فقط برای دسترسی به داده های یک دیتابیس نیست، بلکه می توان از آن برای کار با داده های مختلف، اشیاء و حتی توییت ها استفاده کرد.

farasun.wordpress.com

مطالب مرتبط با این پست را بخوانید :





ویژوال استادیو 2010 بتا 2 آمد!

23 10 2009

ویژوال استادیو 2010 و دات نت فریم ورک 4.0 پیشرفت زیادی کرده اند و قابلیت های بسیار بسیار زیادی به آن ها اضافه شده است به طوریکه در آینده ای نه چندان دور توسعه برنامه های تحت ویندوزو وب را تحت تاثیر قرار خواهند داد. توسعه برنامه های مبتنی بر ویندوز با WinForms جدید و همچنین  نسخه جدید WPF انجام خواهد شد. ASP.NET نسخه 4.0 نیز دارای بهبودها و ویژگی های جدیدی است که توسعه وب را لذت بخش تر و حرفه ای تر از قبل خواهد کرد. Silverlight جایگاه خود را کم کم در توسعه وب مستحکم می کند و آینده خوبی برایش پیش بینی می شود. توسعه راهکارهای Sharepoint و Office با ویژوال استادیو 2010 پیشرفت قابل توجهی داشته و به محاسبات ابری یا Cloud Computing در این نسخه توجه بیشتری شده است.

ویژوال استادیو 2010

ویژوال استادیو 2010 بتا 2 دارای بهبودهای بسیار خوبی در هسته IDE، ویرایشگر کد، زبان های برنامه نویسی، ابزارهای تست و طراحی برنامه است. نصب ویژوال استادیو 2010 راحت تر از قبل انجام می گیرد و می تواند در کنار ویژوال استادیو 2008 نصب شود و بدون هیچ مشکلی کار کند. شما می توانید ویژوال استادیو 2010 بتا 2 را روی کامپیوتری که در حال حاضر ویژوال استادیو 2008 دارد، نصب کنید، بدون اینکه مشکلی برایتان پیش بیاید.

ظاهر این نسخه کاملاً با استفاده از WPF ساخته شده و بسیار زیباست (+) لوگوی ویژوال استادیو در این نسخه تغییر یافته و مدرن تر شده، هر چند من شخصاً لوگوی قبلی ویژوال استادیو را بیشتر می پسندم.

وگوهای قدیمی و جدید ویژوال استادیو

Team Foundation Server در تمام نسخه های ویژوال استادیو 2010 وجود دارد. تیم های کوچک می توانند از TFS برای کنترل سورس، باگ ترکینگ و اتوماسیون Build پروژه هایشان در ویژوال استادیو 2010 استفاده نمایند. نسخه بیسیک TFS به راحتی بر روی کامپیوترهای سرور و کلاینت قابل نصب و استفاده است.

از نسخه بتای 1 ویژوال استادیو 2010، می توانستید با ابزارهای Windows Azure کار کنید اما حالا و با نسخه بتای 2 آسان تر می توانید توسعه برنامه های Windows Azure را شروع کنید. این یعنی تجربه لذت بخش استفاده از “محاسبات ابری” با دات نت و ویژوال استادیو!

در این نسخه نیز مانند نسخه 2008 می توانید نسخه فریم ورک خود را تغییر دهید. این امکان بسیار کاربردی ومفید است، به طور مثال شما می توانید از ویژوال استادیو 2010 برای توسعه برنامه های مبتنی بر دات نت فریم ورک 2.0 یا 3.5 استفاده کنید.

پیمایش کد در ویرایشگر کد با قابلیت های ویژوال استادیو 2010 بسیار آسان تر شده (+) و Intellisense در این نسخه دستخوش تغییرات و بهبود شده است. (+)

من هنوز سعادت استفاده از ویژوال استادیو 2010 بتا 2 را پیدا نکردم اما سعی میکنم به محض استفاده، در مطلب کامل به بررسی ویژگی های جدیدش بپردازم. احتمالاً من تا آمدن نسخه پایدار صبر خواهم کرد. هرچند واقعاً صبر کردن برای تجربه ویژوال استادیو 2010 آسان نیست!

ویژوال استادیو 2010 بتا 2 را دانلود کنید

برای دریافت ویژوال استادیو 2010 به اینجا بروید. از 21 اکتبر (29م مهر) دریافت برای عموم آزاد است!البته مشترکان MSDN دو روز زودتر از بقیه می توانستند این نسخه را دریافت کنند.

منابع بیشتر برای آشنایی با دات نت فریم ورک 4.0

من قبلاً در این وبلاگ در مطالبی به بررسی دات نت فریم ورک 4.0 پرداخته بودم. می توانید برای آشنایی بیشتر با این نسخه آن ها را مطالعه کنید. در آینده به بررسی کامل ویژوال استادیو 2010 نیز خواهیم پرداخت که جزوی از همین سری پست ها خواهد بود.

در آخر می توانید برای کسب اطلاعات بیشتر وبلاگ ScottGu را بخوانید که ایشون یک سری پست در مورد ویژگی های جدید این نسخه نوشته اند و در آینده هم خواهند نوشت.خواندن وبلاگ Scott Hanselman نیز توصیه می شود.

برای اطلاع از به روز رسانی این وبلاگ، مشترک فید فراسان شوید! چطور مشترک شویم!





Paint.NET، داستان موفقیت یک پروژه کدباز

17 10 2009

Paint.NET را قبلاً در اینجا معرفی کرده بودم. یک نرم افزار کدباز برای ویرایش تصاویر دیجیتالی است که با داشتن یک رابط کاربری بسیار خوب و مناسب و پشتیبانی از لایه ها و افکت های گوناگون به رقیبی هر چند کوچک برای نرم افزارهای ویرایش عکس مانند فتوشاپ تبدیل شده است. این نرم افزار با داشتن رابط کاربری ساده و قابلیت های مناسب می تواند به کاربران معمولی و آن هایی که چیزی از فتوشاپ سر در نمی آورند یا از آن نمی خواهند استفاده کنند، کمک کند تا تصاویر دیجیتالی خود را ویرایش کنند و در قالب فرمت های گوناگون ذخیره نمایند.

paint.net logo

Paint.NET یک پروژه اوپن سورس و آزاد است. هر کس می تواند با رفتن به وب سایت رسمی Paint.NET (یا هرسایت دیگر +) نسخه ای از آن را دریافت و روی ویندوز خودش نصب کند و بدون پرداخت هیچ هزینه ای از آن برای هر کاری (چه شخصی و چه تجاری) استفاده کند. کد این پروژه در دسترس همه قرار دارد و هرکسی می تواند در پیشرفت این پروژه سهیم باشد.

در این مطلب کوتاه به تاریخچه ایجاد نرم افزار Paint.NET و داستان موفقیت آن می پردازیم. سپس در مورد اینکه چطور درآمدزایی می کند بحث می کنیم و در آخر نیز دلایل موفقیت این پروژه را از نظر خودم به صورت خیلی خلاصه بیان می کنم.

همه چیز از یک پروژه دانشجویی شروع شد…

Paint.NET در بهار سال 2004 به عنوان یک پروژه دانشجویی سال آخر رشته علوم کامپیوتر مقطع لیسانس از دانشگاه Washington State University شروع شد. Rick Brewster دانشجوی با سلیقه ای که روی طراحی رابط کاربری و گرافیک مسلط بود به عنوان رهبر توسعه تیم انتخاب شد. زبان سی شارپ به عنوان زبان برنامه نویسی و دات نت فریم ورک به عنوان پلت فرم توسعه برگزیده شدند. پس از طراحی نسخه اولیه  و پس از هماهنگی با شرکت مایکروسافت، Paint.NET به عنوان نام این پروژه انتخاب شد. پس از این اتفاق، توجه مایکروسافت به این پروژه معطوف شد.

برای نسخه اول، مایکروسافت دو نفر از کارمندان خود را مامور نظارت روی این پروژه کرد. یک نفر به عنوان مربی و راهنما و دیگری به عنوان اسپانسر و تامین کننده هزینه های این پروژه دانشجویی شروع به همکاری کردند. نسخه اول به عنوان یک نرم افزار کدباز تحت دات نت، موفقیت خوبی را بدست آورد. همین موقع ها بود که مایکروسافت در پی جا انداختن پلت فرم دات نت میان برنامه نویسان بود. Paint.NET به عنوان یک مثال قدرتمند و عالی برای پلت فرم دات نت بود. مایکروسافت خوشحال بود چون این پروژه به برنامه نویسان نشان می داد که با دات نت فریم ورک می توان نرم افزارهای بهینه گرافیکی ساخت و کاربران معمولی ویندوز نیز می توانستند از یک نرم افزار قدرتمند تر از Paint به صورت رایگان برای ویرایش تصاویر دیجیتالی خود روی ویندوز استفاده کنند.

نمایی از نسخه 3.5 بتا Paint.NET

نمایی از نسخه 3.5 بتا Paint.NET

در دسامبر 2004، نسخه 2.0 پایدار با امکانات قدرتمند و پشتیبانی از افکت های بیشتر عرضه شد. در می 2005 نسخه 2.1 در حالی که اکثر باگ های نسخه های قبل رفع شده بود و کارایی نرم افزار بالاتر رفته بود، عرضه شد. در نسخه 2.5 پشتیبانی از محلی سازی برای زبان های مختلف اضافه شد و در نسخه 2.6 پروژه به دات نت فریم ورک نسخه 2.0 منتقل شد و از معماری 64بیت به صورت کامل پشتیبانی شد. از این نسخه به بعد Rick Brewster و Tom Jackson توسعه دهنده های اصلی Paint.NET هستند. در می 2006 Paint.NET با دو میلیون دانلود خود را به عنوان یکی از بهترین نرم افزارهای ویرایش تصاویر دیجیتالی در سیستم عامل ویندوز معرفی کرد.

Rick Brewster

Rick Brewster

ریک بروستر شرکتی به نام dotPDN تاسیس کرد و لوگو و نشان تجاری Paint.NET را به نام خود ثبت کرد. dotPDN شرکتی است که تا الان تنها محصولش Paint.NET است و هزینه های خود را از راه Donation و تبلیغات اینترنتی تامین می کند. هم اکنون آخرین نسخه Paint.NET نسخه 3.5 بتا است که با استفاده از دات نت فریم ورک 3.5 توسعه پیدا می کند. (دریافت کنید) Paint.NET دارای اجتماع کاربری مناسبی است که در آن کاربران به یکدیگر در زمینه های مختلف نرم افزار Paint.NET کمک می کنند. (اینجا) هیچ سئوالی در این جامعه کوچک بی پاسخ نمی ماند.

Paint.NET چگونه درآمدزایی می کند؟

شاید این سئوال برای شما پیش بیاید که این نرم افزار که هم کدباز است و هم رایگان، چگونه درآمدزایی می کند و چه نفعی برای سازنده اش دارد. در پاراگراف بالا اشاره کردم که شرکت dotPDN از طریق Donation (هدیه نقدی کاربران) و تبلیغات اینترنتی هزینه های خود را تامین می کند. اگر به وب سایت Paint.NET مراجعه کنید، در بخش هایی از آن، حتماً تبلیغات گوگل را مشاهده خواهید کرد. بسیاری از کاربران Paint.NET نیز به صورت داوطلبانه به سازنده آن کمک نقدی کرده اند و می کنند. شرکت مایکروسافت هم که اسپانسر این پروژه است. Donation و استفاده از تبلیغات یکی از معمول ترین راه های درآمدزایی نرم افزارهای کدباز هستند. (اطلاعات بیشتر)

ریک بروستر توسعه دهنده اصلی Paint.NET در حال حاضر، در دنیای دات نت و اوپن سورس اسم و رسمی دارد. اینطور که به نظر میرسد در مایکروسافت نیز مشغول به کار است (البته برای این حرفم منبع معتبری پیدا نکردم). موقعیت های شغلی یکی از مزایای توسعه پروژه های نرم افزارهای کدباز است که برای ریک نیز بوجود آمده است.

دلایل موفقیت Paint.NET (از نظر من)

اولین و مهمترین دلیل موفقیت Paint.NET از نظر من اوپن سورس بودن این پروژه است. اگر کدباز نبود امکان این که توجه شرکت مایکروسافت را به خودش جلب کند بسیار پایین بود و اگر مایکروسافت از آن پشتیبانی نمی کرد، شاید هیچ وقت تا این حد موفق نمی شد. دلیل مهم دیگر موفقیت این پروژه، بی شک دانشگاه واشنگتن استیت واستاد راهنمای ریک بروستر آقای Jack Hagemeister بوده اند که با انجام چنین پروژه ای موافقت نموده اند و امکان همکاری با مایکروسافت را برای او فراهم کرده اند.

موقعیت ریک را در زمان دانشجویی با یک دانشجوی رشته کامپیوتر در ایران مقایسه کنید. آیا دانشگاه های ما به چنین پروژه هایی بها می دهند؟ آیا ارتباط دانشگاه و صنعت در ایران آنقدر قوی است که یک شرکت تجاری اسپانسر یک پروژه دانشجویی شود و به پیشرفت آن کمک کند؟

به نظر شما اگر آقای بروستر در یکی از دانشگاه های ایران دانشجو بود، می توانست چنین پروژه موفقی را به انجام برساند!؟

farasun.wordpress.com

منابع :