اس مضمون کے ایک حصے کے طور پر شائع کیا گیا تھا۔ ڈیٹا سائنس بلاگتھون
تعارف
سب کو سلام! اگرچہ سائبر پنک ابھی تک ہماری زندگیوں میں اتنا داخل نہیں ہوا ہے، اور نیورو انٹرفیس مثالی سے بہت دور ہیں، LiDAR ہیرا پھیری کرنے والوں کے مستقبل کے راستے پر پہلا مرحلہ بن سکتا ہے۔ اس لیے، تعطیلات کے دوران بور نہ ہونے کے لیے، میں نے کمپیوٹر کے کنٹرولز اور ممکنہ طور پر کسی بھی ڈیوائس، کھدائی کرنے والے، خلائی جہاز، ڈرون، یا چولہے کے بارے میں تھوڑا سا تصور کرنے کا فیصلہ کیا۔
بنیادی خیال ماؤس کو حرکت دینا ہے، پورے ہاتھ کو نہیں بلکہ صرف شہادت کی انگلی کو حرکت دینا، جو آپ کو کی بورڈ سے ہاتھ ہٹائے بغیر مینو کے ذریعے بھاگنے کی اجازت دے گی، بٹن دبائیں، اور ہاٹکیز کے ساتھ مل کر، اصلی کی بورڈ ننجا! اگر آپ سوائپنگ یا اسکرولنگ اشارے شامل کرتے ہیں تو کیا ہوتا ہے؟ مجھے لگتا ہے کہ کوئی بم ہوگا! لیکن اس لمحے تک ہمیں ابھی کچھ سال انتظار کرنا پڑے گا)
آئیے مستقبل کے ہیرا پھیری کے اپنے پروٹو ٹائپ کو جمع کرنا شروع کریں۔
تمہیں کیا چاہیے:
-
LiDAR Intel Realsense L515 کے ساتھ کیمرہ۔
-
ازگر میں پروگرام کرنے کی صلاحیت
-
اسکول کی ریاضی کو تھوڑا سا یاد رکھیں
-
مانیٹر عرف تپائی پر کیمرے کے لیے ماؤنٹ کریں۔
ہم کیمرے کو aliexpress کے ساتھ تپائی سے منسلک کرتے ہیں، یہ بہت آسان، ہلکا پھلکا اور سستا نکلا)
ہم جانتے ہیں کہ پروٹو ٹائپ کیسے اور کس چیز پر بنایا جائے۔
اس کام کو پورا کرنے کے بہت سے طریقے ہیں۔ آپ ڈٹیکٹر یا ہینڈ سیگمنٹیشن کی خود تربیت کر سکتے ہیں، دائیں ہاتھ کی نتیجے میں آنے والی تصویر کو کاٹ سکتے ہیں اور پھر اس شاندار ذخیرہ کو فیس بک کی تحقیق سے لے کر تصویر پر لاگو کر سکتے ہیں، ایک بہترین نتیجہ حاصل کریں یا اسے اور بھی آسان بنائیں۔
میڈیا پائپ ریپوزٹری کو استعمال کرنے کے لیے، اس لنک کو پڑھنے کے بعد, آپ سمجھ سکتے ہیں کہ یہ آج کے بہترین اختیارات میں سے ایک ہے۔
سب سے پہلے، سب کچھ پہلے سے ہی باکس سے باہر ہے - تمام شرائط کو مدنظر رکھتے ہوئے انسٹالیشن اور لانچ میں 30 منٹ لگیں گے۔
دوم، ایک طاقتور ڈیولپمنٹ ٹیم کی بدولت، وہ نہ صرف اسٹیٹ آف آرٹ کو ہینڈ پوز اسٹیمیشن میں لیتے ہیں بلکہ سمجھنے میں آسان API بھی فراہم کرتے ہیں۔
تیسرا، نیٹ ورک CPU پر چلنے کے لیے تیار ہے، اس لیے داخلے کی حد کم سے کم ہے۔
شاید، آپ پوچھیں گے کہ میں یہاں کیوں نہیں آیا اور اس مقابلے کے فاتحین کے ذخیرے کیوں استعمال نہیں کیے؟ درحقیقت، میں نے ان کے حل کا کچھ تفصیل سے مطالعہ کیا، وہ کافی حد تک تیار ہیں، لاکھوں گرڈز کا کوئی ڈھیر نہیں، وغیرہ۔ لیکن سب سے بڑا مسئلہ، مجھے لگتا ہے، یہ ہے کہ وہ گہرائی کی تصاویر کے ساتھ کام کرتے ہیں۔ چونکہ یہ ماہرین تعلیم ہیں، انہوں نے متلاب کے ذریعے تمام ڈیٹا کو تبدیل کرنے میں کوئی ہچکچاہٹ محسوس نہیں کی، اس کے علاوہ، جس ریزولیوشن میں گہرائیوں کو فلمایا گیا تھا وہ مجھے چھوٹی لگ رہی تھی۔ اس کا نتیجہ پر گہرا اثر پڑ سکتا ہے۔ لہذا، ایسا لگتا ہے کہ سب سے آسان طریقہ یہ ہے کہ آر جی بی تصویر میں کلیدی نکات حاصل کیے جائیں اور XY کوآرڈینیٹس کے ذریعے ڈیپتھ فریم میں Z-axis کے ساتھ ساتھ ویلیو لیں۔ اب کام کسی چیز کو زیادہ بہتر بنانا نہیں ہے، لہذا ہم اسے کریں گے کیونکہ یہ ترقی کے نقطہ نظر سے تیز ہے۔
اسکول کی ریاضی کو یاد رکھنا
جیسا کہ میں پہلے ہی لکھ چکا ہوں، اس نقطہ کا کوآرڈینیٹ حاصل کرنے کے لیے جہاں ماؤس کا کرسر ہونا چاہیے، ہمیں انگلی کے فالانکس کے دو اہم پوائنٹس سے گزرنے والی ایک لکیر بنانے کی ضرورت ہے، اور لائن کے انقطاع کا نقطہ تلاش کرنا ہوگا۔ مانیٹر کا ہوائی جہاز.
اس تصویر میں مانیٹر کا طیارہ اور اس کو ایک دوسرے کو کاٹتی ہوئی لائن کو دکھایا گیا ہے۔ آپ یہاں ریاضی کو دیکھ سکتے ہیں۔
دو پوائنٹس کا استعمال کرتے ہوئے، ہمیں خلا میں سیدھی لکیر کی پیرامیٹرک نمائندگی ملتی ہے۔
میں اسکول کے ریاضی کے نصاب پر زیادہ توجہ نہیں دوں گا۔
کیمرے کے ساتھ کام کرنے کے لیے لائبریری کی تنصیب
یہ شاید اس کام کا سب سے مشکل حصہ ہے۔ جیسا کہ یہ نکلا، اوبنٹو کے لیے کیمرہ کا سافٹ ویئر بہت خام ہے، لبرل سینس ہر طرح کے کیڑوں، خرابیوں، اور دف کے ساتھ رقص سے بھری ہوئی ہے۔
اب تک، میں کیمرے کے عجیب و غریب رویے کو شکست نہیں دے سکا ہوں، بعض اوقات یہ اسٹارٹ اپ میں پیرامیٹرز کو لوڈ نہیں کرتا ہے۔
کیمرہ کمپیوٹر کو دوبارہ شروع کرنے کے بعد صرف ایک بار کام کرتا ہے!!! لیکن ایک حل ہے: ہر لانچ سے پہلے، کیمرے کا سافٹ ویئر ہارڈ ری سیٹ کریں، یو ایس بی کو ری سیٹ کریں، اور شاید سب کچھ ٹھیک ہوجائے۔ ویسے، ونڈوز 10 کے لیے وہاں سب کچھ ٹھیک ہے۔ یہ عجیب بات ہے کہ ڈویلپرز ونڈوز پر مبنی روبوٹ کا تصور کرتے ہیں =)
Ubuntu 20 کے تحت حقیقی معنوں میں حاصل کرنے کے لیے، یہ کریں:
$ sudo apt-get install libusb-1.0-0-dev پھر cmake کو دوبارہ چلائیں اور انسٹال کریں. یہاں is ایک مکمل نسخہ جس نے کام کیا۔ لیے میں: $ sudo apt-get install libusb-1.0-0-dev $ git clone https://github.com/IntelRealSense/librealsense.git $cd librealsense/ $mkdir build && cd build
قسم سے جمع کرنے کے بعد، یہ کم و بیش مستحکم ہو جائے گا. تکنیکی مدد کے ساتھ رابطے کے ایک مہینے سے پتہ چلتا ہے کہ آپ کو Ubuntu 16 انسٹال کرنے یا تکلیف اٹھانے کی ضرورت ہے۔ میں نے اسے خود منتخب کیا، آپ جانتے ہیں کیا.
ہم نیورل نیٹ ورک کی پیچیدگیوں کو سمجھتے رہتے ہیں۔
اب انگلی اور چوہے کے آپریشن کی ایک اور ویڈیو دیکھتے ہیں۔ براہ کرم نوٹ کریں کہ پوائنٹر ایک جگہ کھڑا نہیں ہو سکتا اور جیسا کہ یہ تھا، مطلوبہ نقطہ کے ارد گرد تیرتا ہے۔ ایک ہی وقت میں، میں اسے آسانی سے اپنے مطلوبہ لفظ کی طرف لے جا سکتا ہوں، لیکن ایک حرف کے ساتھ، یہ زیادہ مشکل ہے، مجھے احتیاط سے کرسر کو منتقل کرنا ہوگا:
جیسا کہ آپ سمجھ رہے ہیں، یہ میرا ہاتھ نہیں ہلا رہا، چھٹیوں پر میں نے نیو انگلینڈ DIPA کا صرف ایک پیالا پیا تھا =) یہ سب کچھ اہم نکات اور Z-coordinates کے مسلسل اتار چڑھاو کے بارے میں ہے جو کہ lidar سے حاصل کردہ اقدار کی بنیاد پر ہے۔
آئیے قریب سے جائزہ لیں:
میڈیا پائپ سے ہمارے SOTA میں، یقینی طور پر کم اتار چڑھاؤ ہیں، لیکن وہ بھی موجود ہیں۔ جیسا کہ یہ نکلا، وہ موجودہ فریم اور ٹرین نیٹ ورک میں ماضی کے فریم ہیٹ میپ سے پروکیڈ وانیا استعمال کر کے اس کے ساتھ جدوجہد کر رہے ہیں – یہ زیادہ استحکام دیتا ہے، لیکن 100% نہیں۔
نیز، یہ مجھے لگتا ہے، مارک اپ کی مخصوصیت ایک کردار ادا کرتی ہے۔ اتنی تعداد میں فریموں پر ایک ہی مارک اپ بنانا شاید ہی ممکن ہے، اس حقیقت کا ذکر نہ کرنا کہ فریم کی ریزولوشن ہر جگہ مختلف ہوتی ہے اور بہت بڑی نہیں۔ اس کے علاوہ، ہمیں روشنی کی ٹمٹماہٹ نظر نہیں آتی، جو کہ غالباً، آپریشن کے مختلف ادوار اور کیمرے کی نمائش کی مقدار کی وجہ سے مستقل نہیں ہے۔ اور نیٹ ورک ہیٹ میپ سے اسکرین پر موجود کلیدی پوائنٹس کی تعداد کے برابر ایک سینڈوچ بھی لوٹاتا ہے، اس ٹینسر کا سائز BxNx96x96 ہے، جہاں N کلیدی پوائنٹس کی تعداد ہے، اور ظاہر ہے، حد کے بعد اور اصل میں سائز تبدیل کریں۔ فریم کا سائز، ہمیں وہی ملتا ہے جو ہمیں ملتا ہے (
رینڈرنگ ہیٹ میپ کی مثال:
کوڈ کا جائزہ
تمام کوڈ اس ذخیرہ میں ہے اور بہت مختصر ہے۔ آئیے مرکزی فائل پر ایک نظر ڈالیں اور باقی آپ خود دیکھیں۔
درآمد CV2 درآمد میڈیا پائپ as mp درآمد عجیب as np درآمد pyautogui درآمد pyrealsense2.pyrealsense2 as rs سے google.protobuf.json_format درآمد MessageToDict سے mediapipe.python.solutions.drawing_utils درآمد _normalized_to_pixel_coordinates سے پن پٹ درآمد کی بورڈ سے utils.common درآمد get_filtered_values، draw_cam_out، get_right_index سے utils.hard_reset درآمد ہارڈ ویئر_ری سیٹ سے utils.set_options درآمد set_short_range pyautogui.FAILSAFE = False mp_drawing = mp.solutions.drawing_utils mp_hands = mp.solutions.hands # ہینڈ پوز کا تخمینہ ہاتھ = mp_hands.Hands(max_num_hands=2, min_detection_confidence=0.9) def آن_پریس(چابی): if key == keyboard.Key.ctrl: pyautogui.leftClick() if key == keyboard.Key.alt: pyautogui.rightClick() def حاصل_رنگ_گہرائی(پائپ لائن، سیدھ کریں، رنگ سازی): frames = pipeline.wait_for_frames(timeout_ms=15000) # کیمرے سے ایک فریم کا انتظار aligned_frames = align.process(frames) depth_frame = aligned_frames.get_depth_frame() color_frame = aligned_frame()color_frame=aligned_frames. if نوٹ depth_frame or نوٹ رنگ_فریم: واپسی کوئی نہیں، کوئی نہیں، کوئی نہیں depth_ima = np.asanyarray(depth_frame.get_data()) depth_col_img = np.asanyarray(colorizer.colorize(depth_frame).get_data()) color_image = np.asanyarray() c_data_col. cvtColor(cv2.flip(cv2.flip(depth_col_img, 2), 1), cv0.COLOR_BGR2RGB) color_img = cv2.cvtColor(cv2.flip(cv2.flip(color_img, 2), 1), cv0.COLRGB_th_GR_GB = np.flipud(np.fliplr(depth_img)) depth_col_img = cv2.resize(depth_col_img, (2 * 2, 1280 * 2)) col_img = cv720.resize(col_img, (2 * 2, 1280img = 2) .resize(depth_img, (720 * 2, 2 * 1280)) واپسی color_image، depth_color_image، depth_image def حاصل_دائیں_ہینڈ_کورڈز(color_image, depth_color_image): color_image.flags.writeable = False results = hands.process(color_image) color_image.flags.writeable = True color_image = cv2.cvtColor(color_image, cv2.COLOR_RGB2BGR = x_idcoordines = {}} xy0 = کوئی نہیں، کوئی نہیں۔ if results.multi_hand_landmarks: لیے idx، hand_handedness in enumerate(نتائج. کثیر_ہاتھ): handedness_dict.append(MessageToDict(hand_handedness)) right_hand_index = get_right_index(handedness_dict) if دائیں_ہاتھ_انڈیکس != -1: لیے i، landmark_list in شمار کریں if i == دائیں_ہاتھ_انڈیکس: image_rows, image_cols, _ = color_image.shape لیے idx، تاریخی نشان in enumerate(landmark_list.landmark): landmark_px = _normalized_to_pixel_coordinates(landmark.x, landmark.y, image_cols, image_rows) if landmark_px: idx_to_coordinates[idx] = landmark_px لیے i، landmark_px in enumerate(idx_to_coordinates.values()): if i == 5: xy0 = landmark_px if i == 7: xy1 = landmark_px توڑ واپسی col_img, depth_col_img, xy0, xy1, idx_to_coordinates def شروع کریں(): پائپ لائن = rs.pipeline() # ابتداء librealsense config = rs.config() پرنٹ ("شروع لوڈ conf") config.enable_stream(rs.stream.depth, 1024, 768, rs.format.z16, 30) config.enable_stream(rs.stream.color, 1280, 720, rs.format.bgr8, 30) profile = pipeline.start(config) depth_sensor = profile.get_device ()۔ first_depth_sensor () set_short_range (depth_sensor) # کم فاصلے پر کام کرنے کے لیے لوڈ پیرامیٹرز colorizer = rs.colorizer () پرنٹ ("Conf loaded") align_to = rs.stream.color align = rs.align (align_to) # گہرائی اور نقشہ کو یکجا کریں رنگ کی تصویر آزمائیں: جب کہ درست: col_img, depth_col_img, depth_img = get_col_depth (pipelin, align, colorize) اگر color_img کوئی نہیں ہے اور color_img کوئی نہیں ہے اور color_img کوئی نہیں ہے: color_img، depth_col_img، xy00، xy11، xy00، xy11، xy00، xy11، xy00، xy11، x_coordinate_coordinate_coordinate، xy_coordinate_coordinate ) اگر xy3500 کوئی نہیں ہے یا xy3500 کوئی نہیں ہے: z_val_f, z_val_s, m_xy, c_xy, xy00_f, xy11_f, x, y, z = get_filtered_values (depth_img, xyXNUMX, xyXNUMX) , t.xy int. (XNUMX - z)) # XNUMX ہارڈ کوڈ میرے مانیٹر کے لیے مخصوص ہے اگر draw_cam_out (col_img, depth_col_img, xyXNUMX_f, xyXNUMX_f, c_xy, m_xy): آخر میں توڑیں: hands.close () pipeline.stop () hardware_reset () # اور کیمرہ دوبارہ شروع کریں۔ اس کے ظاہر ہونے کا انتظار کریں listener = keyboard.Listener (on_press = on_press) # کلید کے لیے سننے والا سیٹ کریں بورڈ کا بٹن دباتا ہے listener.start () start () # پروگرام شروع کریں۔
میں نے کلاسز یا اسٹریمز کا استعمال نہیں کیا، کیونکہ، اتنے سادہ کیس کے لیے، مین تھریڈ میں ہر چیز کو لامتناہی while loop میں انجام دینا کافی ہے۔
بالکل شروع میں، میڈیا پائپ، کیمرہ کو شروع کیا جاتا ہے، شارٹ رینج اور معاون متغیرات کے لیے کیمرہ سیٹنگز کو لوڈ کیا جاتا ہے۔ اس کے بعد جادو آتا ہے جسے "alight depth to color" کہتے ہیں - یہ فنکشن RGB امیج کے ہر ایک پوائنٹ سے ملتا ہے، ڈیپتھ فریم پر ایک پوائنٹ، یعنی یہ ہمیں XY کوآرڈینیٹس، Z ویلیو حاصل کرنے کا موقع فراہم کرتا ہے۔ یہ سمجھا جاتا ہے کہ آپ کے مانیٹر پر کیلیبریٹ کرنا ضروری ہے … میں نے جان بوجھ کر ان پیرامیٹرز کو الگ سے نہیں نکالا، تاکہ ریڈر جس نے کوڈ چلانے کا فیصلہ کیا وہ خود کرے، اسی وقت اسے کوڈ میں دوبارہ استعمال کیا جائے گا)
اس کے بعد، ہم پوری پیشین گوئی سے صرف دائیں ہاتھ کے 5 اور 7 کے پوائنٹس لیتے ہیں۔
صرف ایک کام باقی رہ گیا ہے کہ حاصل کردہ نقاط کو حرکت پذیر اوسط کا استعمال کرتے ہوئے فلٹر کیا جائے۔ بلاشبہ، زیادہ سنجیدہ فلٹرنگ الگورتھم کو لاگو کرنا ممکن تھا، لیکن ان کے تصور کو دیکھنے اور مختلف لیورز کو کھینچنے کے بعد، یہ واضح ہو گیا کہ ڈیمو کے لیے 5 فریموں کی گہرائی کے ساتھ ایک متحرک اوسط کافی ہو گی، میں نوٹ کرنا چاہتا ہوں کہ XY کے لیے، 2-3 فریم کافی تھے۔ لیکن Z کے ساتھ چیزیں بدتر ہیں۔
deque_l = 5 x0_d = collections.deque(deque_l * [0.], deque_l) y0_d = collections.deque(deque_l * [0.], deque_l) x1_d = collections.deque(deque_l * [0.], deque_l) y1_d = collections.deque(deque_l * [0.], deque_l) z_val_f_d = collections.deque(deque_l * [0.], deque_l) z_val_s_d = collections.deque(deque_l * [0.], deque_l) m_xy_d = collections.deque(deque_l) * [0.]، deque_l) c_xy_d = collections.deque(deque_l * [0.], deque_l) x_d = collections.deque(deque_l * [0.], deque_l) y_d = collections.deque(deque_l * [0.] , deque_l) z_d = collections.deque(deque_l * [0.], deque_l) def حاصل_فلٹرڈ_ویلیوز(depth_image, xy0, xy1): عالمی x0_d, y0_d, x1_d, y1_d, m_xy_d, c_xy_d, z_val_f_d, z_val_s_d, x_d, y_d, z_d x0_d.append(float(xy0[1])) x0_f = راؤنڈ(d_0(d.)) x0_f = راؤنڈ(d_0 (میان) 0])) y0_f = گول(میان(y0_d)) x1_d.append(float(xy1[1])) x1_f = راؤنڈ(میان(x1_d)) y1_d.append(float(xy1[0])) y1_f = گول( مطلب (Y1_D)) z_val_f = get_area_mean_z_val (گہرائی_ایمج ، x0_f ، y0_f) z_val_f_d.append (float (z_val_f)) z_val_f = z_val_f_d) (z_val_f_d) z_val_d) Z_VAL_AL_S = get_area_mean_me_me_me_me_me_me_me_me_me_me_me_sed) = مطلب(z_val_s_d) پوائنٹس = [(y1_f, x1_f), (y0_f, x0_f)] x_coords, y_coords = zip(*points) A = np.vstack([x_coords, np.ones(len(x_coords))])۔ T m, c = lstsq(A, y_coords)[1] m_xy_d.append(float(m)) m_xy = mean(m_xy_d) c_xy_d.append(float(c)) c_xy = mean(c_xy_d) a1, a0, a0, a1 = equation_plane() x, y, z = line_plane_intersection(y2_f, x3_f, z_v_s, y0_f, x0_f, z_v_f, a1, a1, a0, a1) x_d.append(float(x) x = round(d) ) y_d.append(float(y)) y = round(mean(y_d)) z_d.append(float(z)) z = گول (میان(z_d)) واپسی z_v_f, z_v_s, m_xy, c_xy, (y00_f, x0_f), (y11_f, x1_f), x, y, z
ہم 5 فریموں کی لمبائی کے ساتھ ایک ڈیک بناتے ہیں اور ایک قطار میں ہر چیز کا اوسط بناتے ہیں =) اس کے علاوہ، ہم y = mx + c، Ax + By + Cz + d = 0 کا حساب لگاتے ہیں، سیدھی لکیر کی مساوات RGB میں رے ہے۔ تصویر اور مانیٹر جہاز کی مساوات، ہم اسے y = 0 حاصل کرتے ہیں۔
نتیجہ
ٹھیک ہے، بس، ہم نے سب سے آسان ہیرا پھیری کو دیکھا، جو کہ اس کے ڈرامائی طور پر آسان عمل کے باوجود، حقیقی زندگی میں مشکل کے باوجود، پہلے ہی استعمال کیا جا سکتا ہے!
اس مضمون میں دکھایا گیا میڈیا Analytics ودھیا کی ملکیت نہیں ہے اور مصنف کی صوابدید پر استعمال کیا جاتا ہے۔
متعلقہ
- "
- &
- 7
- 9
- اکاؤنٹ
- یلگوردمز
- تمام
- تجزیاتی
- اے پی آئی
- ارد گرد
- فن
- مضمون
- BEST
- سب سے بڑا
- باکس
- کیڑوں
- تعمیر
- قریب
- کوڈ
- کامن
- مواصلات
- مقابلہ
- جاری
- جوڑے
- موجودہ
- CZ
- اعداد و شمار
- تفصیل
- ڈویلپرز
- ترقی
- DID
- فاصلے
- ڈرون
- انگلینڈ
- وغیرہ
- پھانسی
- فیس بک
- اعداد و شمار
- آخر
- آخر
- پہلا
- توجہ مرکوز
- فارمیٹ
- تقریب
- مستقبل
- جاؤ
- گوگل
- یہاں
- تعطیلات
- کس طرح
- HTTPS
- خیال
- IDX
- تصویر
- انڈکس
- انٹیل
- IT
- ایوب
- کلیدی
- بڑے
- شروع
- لائبریری
- رہنما
- روشنی
- لائن
- لوڈ
- نقشہ
- ریاضی
- میڈیا
- منتقل
- نیٹ ورک
- عصبی
- مواقع
- آپشنز کے بھی
- حکم
- تصویر
- پائپ
- نقطہ نظر
- کی پیشن گوئی
- پریس
- پروفائل
- پروگرام
- ھیںچو
- ازگر
- ریڈر
- پڑھنا
- ہدایت
- تحقیق
- باقی
- نتائج کی نمائش
- واپسی
- روبوٹس
- رن
- سکول
- سائنس
- سکرین
- احساس
- مقرر
- مختصر
- سادہ
- سائز
- چھوٹے
- So
- سافٹ ویئر کی
- حل
- خلا
- استحکام
- اسٹیج
- شروع کریں
- شروع
- حالت
- سڈو
- حمایت
- ٹیکنیکل
- تکنیکی مدد
- مستقبل
- وقت
- اوبنٹو
- us
- USB
- قیمت
- ویڈیو
- لنک
- تصور
- انتظار
- ڈبلیو
- کھڑکیاں
- کام
- کام کرتا ہے
- X
- سال