Hızla bir robot hareket planlama platformu oluşturmak için ROS MoveIt nasıl kullanılır?

Lei Feng net notu: Bu makalenin yazarı, Şangay Jiaotong Üniversitesi Robotik Enstitüsü'nden bir doktora öğrencisi olan qqfly, Tsinghua Üniversitesi Makine Mühendisliği Bölümü'nden mezun olmuştur, ana araştırma yönü makine görüşü ve hareket planlamasıdır.Bu makalenin yazarı, WeChat halka açık hesabı: Nao (ID: qRobotics), Lei Feng'de yayınlanmıştır. Yetkili.

İki ay önce kendim için bir çukur kazdım ve MoveIt yazacağımı söyledim ama henüz yapmadım. İki ana sebep var:

1) Bu iki ay genel olarak küçük makaleler yazıyor Sonuçta, doktora öğrencileri mezun olmak için kağıtları okumak zorundadır ve kamu hesap okuma paylaşım oranına güvenemezler;

2) Doğrudan konuşursak, MoveIt'in daha fazla çukur kazması gerekiyor gibi görünüyor ve nasıl daha iyi yazacağımı hiç düşünmedim.

Bunun ana nedeni robot hareket planlamasının çok fazla temel içerik barındırmasıdır, atlarsanız yeni bir çukur olursunuz, bir süre bitirmeniz imkansız hale gelir.

Öyleyse, bu sefer, yeni başlayanların MoveIt'i hızlı bir şekilde bir robot hareket planlama platformu oluşturmak için nasıl kullanabileceklerinden bahsedelim. İlk olarak Büyük Resmi gösterin ve daha sonra zamanınız olduğunda diğer ayrıntıları doldurun. Ancak, oyulabilecek yerleri işaretlemek için (çukur) kullanacağım.

MoveIt nedir

Bir video tanıtımı izleyelim:

Videoyu izledikten sonra, herkes MoveIt hakkında genel bir izlenime sahip olmalıdır. MoveIt resmi web sitesinin ifadesiyle (moveit.ros.org):

Şu anda en gelişmiş hareket planlama, operasyon, 3B algılama, kinematik, kontrol ve navigasyon algoritmalarını entegre eden en gelişmiş mobil (çukur) işletim robot yazılımıdır. Bu alandaki geliştiriciler için çok uygun bir geliştirme platformu sağlar.

Bu ifade sezgisel değildir. Başka bir deyişle MoveIt = RobotGo, Çince'ye çevrilen "Robot, başla!"

Bu nedenle, MoveIt temel olarak robotların otonom hareket etmesini ve ilgili teknolojileri sağlamaya adanmış bir yazılım parçasıdır.Tüm modülleri, hareket planlamasının gerçekleştirilmesi etrafında tasarlanmıştır.

İşlevsel modüllerinden bazıları aşağıda kısaca açıklanmıştır.

  • Hareket Planlama : Hareket planlamasının tanıtımı daha önce resmi hesapta yayınlanmıştır.Bir robotun hareket planlamasını gerçekleştirmesi için önce robotun konfigürasyon alanına (C-Space) soyutlanması gerekir. MoveIt bu görevleri yerine getirmenize yardımcı olabilir, sadece robot URDF modelini sağlar, robot hareket yörüngesini otomatik olarak oluşturmak için birkaç büyük hareket planlama kütüphanesinin (çukur) planlama algoritmalarını (OMPL, SBPL, CHMOP gibi) çağırabilirsiniz.

  • Operasyon (Manipülasyon) : Bu hala görece zayıf. Nesneleri, tanınan nesnelere göre seçmek ve yerleştirmek için bir dizi eylem oluşturmaktır.Herhangi bir geri bildirim, dinamik, yeniden kavrama ve diğer operasyonel sorunları içermez, bu nedenle genellikle bu modülü kullanmıyorum.

  • 3D algı (Algı) : Bu, MoveIt'in nesne tanıma ve ortam modelleme gibi modülleri entegre ettiği anlamına gelmez, ancak çarpışma tespiti için OctoMap oluşturmak için sensörler (çukurlar) tarafından toplanan bilgileri (nokta bulutu veya derinlik görüntüsü) kullanabilir. OctoMap çok iyi bir şey.SLAM yapan öğrenciler, bunun bir sekizlik biçimindeki nokta bulutunu temsil ettiğini ve bu da depolama alanını büyük ölçüde azaltabileceğini anlamalıdır. Oynadığınız minecraft'a benziyor. Aynı zamanda, bu 3B OctoMap'ler, Bayes kriterlerine göre gerçek zamanlı olarak sürekli olarak güncellenebilir. Bu şekilde robot, gerçek dünyadaki engellerden kaçabilir.

  • Kinematik : Kinematik robot çalışma alanı ve konfigürasyon alanı (C-Space) arasındaki haritalama ilişkisi, dolayısıyla MoveIt kendi sistemine de dahil edilmiştir. Şu anda, OpenRave'nin ikfast (kapalı çözüm), Orocos'un KDL (sayısal çözüm), Trac_ik (eklem sınırını dikkate alan sayısal bir çözüm) ve hizmet tabanlı bir çözücü (kullanıcı tanımlı) gibi çeşitli kinematik çözücüleri destekleyebilir. (çukur)

  • Çarpışma Kontrolü : Çarpışma tespiti, hareket planlamada büyük bir problemdir.Eğer benimsemeye dayalı bir planlama algoritması benimsersek, o zaman her örnekleme noktasının geçerliliğini değerlendirmemiz gerekir. Bu nedenle, hareket planlamasının verimli bir çarpışma algılama algoritması sağlaması gerekir. Neyse ki, Hong Kong Şehir Üniversitesi'nden Pan Jia, çeşitli geometrik cisimlerin (3D yamalar, OctoMap, temel geometrik cisimler) çarpışma algılamasını çok hızlı bir şekilde gerçekleştirebilen bir FCL (Esnek Çarpışma Kütüphanesi) yazdı. (Bu bir çukur değil, doğrudan kullanması kolay ama ileride fırsat bulduğumda bundan bahsedebilirim. Neyse, Pan Dashen arkadaş çevresine bakmayacak ve sınıfta kibirli olmayacak).

  • Yörünge İşleme : Çoğu planlamacı yalnızca bir dizi yol noktası döndürebildiğinden, MoveIt, zaman damgası, konum, hız ve ivme bilgileriyle eksiksiz bir yörünge oluşturmak için robotun kontrol parametrelerine (hız, hızlanma sınırı vb.) Göre yolu yeniden işleyebilir.

  • Kontrol (Kontrol) : Bu aslında bir kontrol değil, sadece bir robot kontrol arayüzü problemidir. Farklı robotların kontrol arayüzleri farklı olduğu için geliştiriciler, MoveIt'in robota karşılık gelen kontrol talimatlarını vermesine izin vermek için konfigürasyon dosyasını basitçe değiştirebilir (sadece eylem adını değiştirin).

  • Navigasyon (Navigasyon) : Bu büyük bir çukurdur MoveIt prensip olarak mobil robotlarda gezinebilmesine rağmen, mobil robotlar için bir planlayıcı sağlamaz. Başka bir deyişle, Navigasyon işlevi şu anda doğrudan kullanılamaz (kendi başınıza yazma planlayıcısı ve çarpışma algılama, yeni başlayanların gereksinimlerinin ötesindedir).

  • Etkileşim MoveIt, geliştiricilere üç etkileşimli yöntem sağlar: Rviz grafik arabirimi (sezgisel), Python (hızlı programlama) ve C ++ (zengin gelişmiş işlevler).

Şu anda MoveIt sadece robotik kol hareket planlama problemi için bir yazılım platformudur ve navigasyon, manipülasyon, kontrol, algılama ve diğer alanlarda kullanıma uygun değildir.

Neden MoveIt'i seçmelisiniz?

Aslında, egzersiz planlaması yapmanın birçok yolu vardır: kendiniz yazın, OMPL, OpenRave, vb. Şahsen, MoveIt'i seçmenin muhtemelen üç nedeni olduğunu düşünüyorum:

| Yeni başlayanlar için çok arkadaş canlısı

Zaten bildiğimiz gibi, sıfırdan hareket planlaması için bir yazılım platformu oluşturmak çok çaba gerektirir: ileri ve ters kinematik çözüm, çarpışma algılama algoritması, çevre tanıma, planlama algoritması, herhangi bir nokta, yetenekleri biriktirmek için uzun bir süre gerektirir. El ile elde edilebilir. Yeni başlayanlar, başlangıçta bu küçük problemlerle başlayabilir.

Kendiniz yazın: Yeni başlayanlar için bir felakettir, özellikle de kimse onları almadığında;

OMPL: Robot kavramı yoktur ve kullanıcıların kinematik ve çarpışma algılama algoritmalarını kendi başlarına entegre etmeleri gerekir.Resmi belgeleri OMPL'nin robot hareket planlaması için nasıl kullanılacağını içermez;

OpenRave: OpenRave zaten kendi robot tanımlama yöntemlerine sahip olmasına rağmen, dokümantasyonu pek kolay değildir.

MoveIt ile, yeni başlayanların sadece robotun bir modelini hazırlamaları ve yarım saat içinde simülasyon ortamında robot hareket planlama gösterimini gerçekleştirmek için öğreticiyi takip etmeleri gerekir.

| Araştırmayı kolaylaştırın

Bu daha önemli bir faktör olmalı. Hareket planlaması birçok alt problemden oluşur ve her bir alt problem bir araştırma noktası olabilir. MoveIt'in neredeyse tüm bileşenleri Eklenti biçiminde çalışır, bu da herhangi bir modülünü istediğimiz zaman değiştirebileceğimiz anlamına gelir. Şu anda aşağıdaki bileşenlerin değiştirilmesini desteklemektedir:

Kinematik çözücü

Planlama algoritması Aynı zamanda OMPL'nin kendisi de kullanıcıların kendi planlayıcılarını yazmalarını destekler.

Planlayıcı başlatma yöntemi

Denetleyici arayüzü

Sensör arayüzü

Planlayıcının örnekleme algoritması

Çarpışma algılama algoritması

OctoMap güncelleme algoritması

Bu konularda araştırma yapıyorsanız, önce bir ortam oluşturmak için MoveIt'i kullanabilir, ardından ilgili Eklentiyi değiştirebilir ve kendi algoritmanızla değiştirebilirsiniz. Bu, ana çelişkiye odaklanmamızı sağlar.

| Aktif topluluk

Bu aslında ROS'un diğer robot geliştirme platformlarına göre avantajıdır. MoveIt, ROS'a dayanır ve aynı zamanda yüksek bir popülariteye sahiptir (Geçen yılki anket sonuçları, MoveIt'in ROS'ta en çok kullanılan üçüncü paket olduğunu göstermektedir).

Aktif topluluklar öğrenmek için harikadır:

  • Bir sorunla karşılaştığınızda, onu çözebilecek birine sormak kolaydır.Başlangıçta, MoveIt belgeyi yayınlamadı, bu yüzden MoveIt'in posta listelerine güvenerek başladım;

  • Web sitesi, öğreticiler ve kod çok iyi korunur ve güncellenir. MoveIt ilk piyasaya sürüldüğünde her zaman çok sayıda hata vardı.Şimdi sadece birkaç yıl sonra, kullanımı çok kolay oldu ve resmi eğitimler de oldukça kullanıcı dostudur.

MoveIt nasıl kullanılır

Robotu MoveIt ile kontrol etmek kabaca aşağıdaki adımlara bölünmüştür:

Robot URDF modelini oluşturun (gerekli)

Robot ROS sürücüsü oluşturun

MoveIt yapılandırma dosyasını oluşturun (gerekli)

Kalibrasyon kamerası

MoveIt yapılandırma dosyasını değiştirin ve dosyayı başlatın

Robot, gidelim! (zorunda)

Bunlar arasında, "(zorunlu)" ile işaretlenmemiş olanlar yalnızca gerçek robotlar kullanılırken gereklidir. Yeni başlayanlar sadece simülasyonda görmek istiyorsa, önce onu atlayabilirsiniz.

| Robot URDF modelini oluşturun (gerekli)

URDF (Birleşik Robot Açıklama Formatı), bir robotu HTML biçiminde tanımlayan, ROS'ta kullanılan bir robot açıklama dosyasıdır. İçerikler şunları içerir: bağlantı çubukları, eklem adları, kinematik parametreleri, dinamik parametreleri, görselleştirme modelleri, çarpışma algılama modelleri vb.

Sonraki çarpışma tespiti, kinematik çözümü, planlama vb. Tümü URDF dosyasına bağlıdır.

Sonra, URDF dosyası nasıl oluşturulur? Tek kollu, tandem bir robot kullanıyorsanız ve obsesif-kompulsif bozukluğunuz yoksa, URDF dosyalarını SolidWorks'ten dışa aktarmanıza yardımcı olabilecek, ROS tarafından resmi olarak yayınlanan sw_urdf_exporter'ı kullanabilirsiniz.

Ancak maalesef çift kollu (çift kollu robotlar bu eklentiyle sık sık sorun yaşıyor) veya paralel olmayan robotlar kullanıyorsanız (seri formuna geçmek için mimic_joint kullanmanız gerekir) veya obsesif-kompulsif bozukluğunuz varsa (basit ve güzel bir modele sahip olmak istiyorsanız) ), URDF veya xacro dosyalarını kendiniz yazmayı düşünebilirsiniz (pit).

Bu noktada ayrıntıya girmeyeceğim, ancak birkaç önemli noktayı yazmanız yeterli:

Dobby, iş yükünü azaltmak için xacro kullanır;

Koordinat sistemi, tüm eklemler 0 ° olduğunda tüm koordinat sistemlerinin aynı duruşta olmasını sağlamak için mümkün olduğu kadar uzağa ayarlanmıştır (bu, pi'nin girmesini önleyebilir);

Renkli bir model istiyorsanız stl modelini kullanmak yerine her parçanın dae modelini kendiniz oluşturabilirsiniz;

Görselleştirme modeli güzel ve ayrıntılı bir model kullanır ve çarpışma modeli basitleştirilmiş bir model kullanabilir.

| Robot ROS sürücüsü oluşturun

Gerçek robot kullanmıyorsanız, önce bu adımı atlayabilirsiniz.

Robot ROS sürücüsü için standart bir format veya düzenleme yoktur. MoveIt için, yalnızca iki işlevi olan bir ROS düğümüne sahip olmanız gerekir:

1) Ortak açıyı / eklem_durumlarını yayınlayın

Gerçek bir robota bağlıysa, MoveIt'in robotun mevcut durumundan planlamaya başlaması gerekir, bu nedenle bu ROS sürücüsünün, robotun her bir eklemi hakkında gerçek zamanlı bilgi (açı gibi) alabilmesi ve yayınlamak için / joint_states mesajını kullanabilmesi gerekir;

2) Planlama sonucunu alın ve robota gönderin

MoveIt planlamasının sonuçları bir eylem şeklinde yayınlanacağından, ROS sürücümüz bir eylem sunucusu sağlamalıdır.Bu işlev planlama sonuçlarını almak, robota göndermek ve yürütmeyi geri beslemek içindir. Eylem türü, control_msgs / FollowJointTrajectory şeklindedir. Belirli eylemlerin yazımı için lütfen ROS resmi web sitesine (çukur) bakın.

Basitçe söylemek gerekirse, bir eylemin beş bölümü vardır:

  • eylem_adı / hedef: Bu planlanan yoldur.Bu yolu almalı ve tüm yol noktalarını robot kontrolörünün tanıyabileceği bir formda ayrıştırmalı ve sonra robota göndermeliyiz.

  • action_name / cancel: Bu komut herhangi bir zamanda gerçekleştirilen eylemi kesintiye uğratabilir, ancak gerekli bir işlev değildir;

  • eylem_adı / geribildirim: Bu, yürütme durumunun gerçek zamanlı geribildirimidir, en basit olanı, robotun mevcut eklem açısı gibi bilgileri geri beslemektir, gerekli değildir;

  • eylem_adı / durum: Bu, robotun durumunu görüntülemek için kullanılır, örneğin bir eylem yapmak, beklemek, yürütmenin bitmesini beklemek, gerekli değildir;

  • eylem_adı / sonuç: Bu, eylem yürütüldükten sonra bir yürütme sonucunu MoveIt'e geri beslemek içindir. Bu bir zorunluluktur.Elbette, basitlik için, hedef alındıktan sonra yürütme başarısını geri bildirebilirsiniz.

MoveIt bölümünün bu kısmı belgeyi göremez, bu nedenle yeni başlayanların robotlarını kontrol etmek için MoveIt kullanmalarını engelleyen en büyük sorunlardan biridir. Ancak mekanizmasını anladıktan sonra nispeten basittir. MoveIt'i ilk kez kullanıyorsanız, UR, Baxter ve sürücünün bu bölümünü zaten yazmış olan diğer robotları denemeniz şiddetle tavsiye edilir.

| MoveIt yapılandırma dosyasını oluşturun (gerekli)

Bu, MoveIt'in kurulum asistanı arayüzünü kullanır ve öğreticiye göre kolayca yapılandırılabilir.

Bu adım tamamlandıktan sonra, hareket planlamasının simülasyondaki etkisini doğrudan görebilirsiniz. Burada MoveIt'in yeni başlayanlar için en uygun olduğunu düşünüyorum.Hareket planını bir satır kod yazmadan görebilirsiniz.

| Kalibrasyon kamerası

Bu esas olarak kamera modelini ve sorunu çözmeyi içeren AX = XB'yi içerir, bu yüzden ayrıntılara girmeyeceğim. Bu adım, robota kameranın robotun neresinde olduğunu bildirmektir. Laboratuvar kardeşim tarafından yazılan otomatik kalibrasyon tanıtımına bir göz atabilirsiniz:

Tek bir başlatma dosyası, o zamanlar yazdığım manuel kalibrasyon yönteminden çok daha yüksek olan kalibrasyonu tamamlayabilir. Bu kalibrasyon programını daha sonra kaynak olarak açabiliriz. Fırsatım olursa, bu arada onun ilkesinden (çukur) da bahsedeceğim.

| MoveIt yapılandırma dosyasını değiştirin ve dosyayı başlatın

Daha önce oluşturulan dosyalar sanal robotlar için olduğundan, gerçek robota bağlanmanız gerekiyorsa, bazı yapılandırma dosyalarını değiştirmeniz gerekir. Tam olarak kaç dosyanın değiştirilmesi gerektiğini hatırlayamayabilirim. Lütfen resmi öğreticiyi izleyin:

  • controllers.yaml: Bu, ROS sürücünüzdeki eyleme göre değiştirilecektir .. MoveIt, bu yapılandırma dosyasına göre robot sürücüsüyle eşleşen bir eylem yayınlayabilir. Basitçe söylemek gerekirse, eylemin adı, türü ve ortak adıdır.

  • robot_moveit_controller_manager.launch: Bu ek eklenti, sahte kontrolör uygulanamadığında yukarıdaki controller.yaml dosyasını bulmak ve doğru eylem türünü yayınlamaktır.

  • sensörler.yaml: Bunun fazladan eklenmesi gerekiyor, esas olarak nokta bulutunun mesaj adını, OctoMap özelliklerini vb. tanımlar.

  • moveit_sensor_manager.launch: Benzer şekilde, sensör yapılandırma dosyasını ekledikten sonra, yapılandırma dosyasının okumasını başlatma dosyasına da eklememiz gerekir.

  • Diğerleri (isteğe bağlı): industrial_robot_simulator, depo, kumanda kolu, planlayıcı, planlama algoritması kitaplığı ...

  • Robot, gidelim! (zorunda)

Yukarıdaki içerik tamamlandıktan sonra Keyfini Çıkarabilirsiniz.Rviz, Python veya C ++ farketmeksizin hareket planlaması için kullanılabilir.Gerçek bir robot bağlanırsa, gerçek robot üzerinde hareket planlaması da yapılabilir.

Diğer

Bu kadar çok şey yazmış olmama rağmen, hala net bir şekilde yazmadığımı hissediyorum. Son olarak, herkesin daha önce arka planda sorduğu daha fazla soruyu listeliyorum:

| MoveIt'i hangi robot kullanabilir?

MoveIt'in robotlarla çok az ilgisi vardır. Bir URDF dosyanız olduğu ve kontrol talimatlarını kabul edebildiğiniz sürece, MoveIt'i kullanabilirsiniz. Bir robotu da hareket ettirebilirsiniz, ancak MoveIt'in Navigasyon için bir planlayıcısı yoktur.

| MoveIt bir mobil robot 3B Navigasyon olarak nasıl kullanılır

Geleneksel Navigasyon paketi ile karşılaştırıldığında, MoveIt 3B çarpışma algılaması yapabilir, ancak henüz mobil platformlar için uygun bir planlama algoritması eklememiştir. Genel yaklaşım aşağıdaki gibidir:

  • FCL'yi değiştirin ve çarpışma algılama işlevini açın (en son sürüm doğrudan çağrılabilecek gibi görünüyor);

  • Bir planlayıcı yazın: en kolay yol, kendiniz bir A * veya Dijkstra yazmaktır veya SBPL'yi kullanmanın bir yolunu bulabilirsiniz (bunu bir mobil robotta denemedim), böylece küresel planlama yapabilirsiniz;

  • Bir eylem sunucusu yazın, planlama sonucunu kabul edin ve bunu Navigasyon paketinin gloal_planner ile aynı formata dönüştürün ve yol izlemeyi tamamlamak için Navigasyon'un local_planner'ı kullanın; elbette bu adımda kendi local_planner'ınızı da yazabilirsiniz.

| MoveIt, uçak veya denizaltının yol planlaması için nasıl kullanılır

Bu önceki soruya benzer. MoveIt rijit gövdeler için bir planlama algoritmasına sahip değildir.RRT'nin planlama sonuçları kabul edilebilirse, teorik olarak doğrudan kullanılabilir.

| MoveIt'te kendi planlama algoritmanızı nasıl kullanabilirsiniz?

Önce OMPL'de kendi planlayıcımı yazmaya çalıştım ve sonra ompl_interface'i moveit_planner'da planlayıcımı MoveIt'te kullanacak şekilde değiştirdim; Örnekleme tabanlı olmayan bir yöntemse, MoveIt Eklentisinin nasıl değiştirildiğini görmem gerekiyor , Bu bölümde deneyimim yok.

| MoveIt nasıl öğrenilir

Resmi hesabıma dikkat edin (kilit noktaları işaretleyerek);

  • ROS ile ilgili temel kavramları öğrenin: üç mesaj mekanizması, vb .;

  • Öğreticiyi öğrenin: resmi web sitesi eğitimini bir kez izleyin;

  • Bir sorunla karşılaşırsanız, önce ROS Soru-Cevap alanında veya MoveIt'ın posta listelerinde benzer sorunları arayın. Değilse, yukarıdaki platformlarda soru sorabilirsiniz; (Şimdiye kadar MoveIt kullandınız, ancak etkisi kesinlikle iyi değil)

  • Gelişmiş işlevlerini açıklamak için MoveIt API'sinin her bölümüne bakın;

  • Kendi ihtiyaçlarınıza göre, kaynak kodun bir bölümünü değiştirin (örneğin, FCL'nin çeşitli işlevlerini açın) ve ardından MoveIt resmi github'da kaynak kodunu (PR) değiştirmek için bir istek gönderin; (Şimdiye kadar, MoveIt aracında ustalaştınız ve MoveIt işlevlerine tam anlamıyla izin verebilirsiniz)

  • MoveIt'in potansiyelini tam olarak keşfetmek için kendi araştırma içeriğinize göre kendi Eklentinizi yazın;

  • Etki iyiyse, IROS / ICRA hakkında bir makale yayınlayın, toplantıda MoveIt yazarlarıyla sohbet edin ve eve döndükten sonra github'da kodunuzu açın ve MoveIt'e PR.

Robot, gidelim!

Üç gün yayınlandıktan sonra, gişe 940 milyondu ve "Kızıldeniz Operasyonu" unvanı garanti edilmedi. 4 milyar gişe rekorları kıran bir film daha mı doğdu?
önceki
Model oyun kontrolü: Gundam sanatı, kırmızı sapkınlıkla eşleşen taş heykel rengi
Sonraki
"Ben Tıp Tanrısı Değilim" in en büyük kazananı, 4 milyar kazanan Xu Zheng değil!
King of Glory Midlane'de en çok gözden kaçan 5 konu!
PlayerUnknown's Battlegrounds'un Xbox One sürümü resmi olarak 12 Aralık'ta piyasaya sürülecek.
Model oyun kontrolü: adamın romantizmi, Zaku dinozoru
Conanın resmi "Mahkum Jeneratörü" bizi kırdı ...
Eğer bir gün dünyada dünyanın yok oluşuna şahit olduysanız ... En İyi Kitaplar
Alipay, AR kırmızı zarf çatlamasına yanıt verdi: teknik eşik yükseltildi; Tesla bu Noel'de kullanıcılara hangi Paskalya yumurtalarını getirecek? | Lei Feng Sabah Postası
İlk gün gişe 160 milyondu, "I'm Not the God of Medicine" Perşembe günü sinema tarihinde yeni bir rekor kırdı ve 3 milyar
Model oyun kontrolü: Shanlin Industry 1/100 mor tatlı patates, renkli Kshatriya ile
"Final Fantasy World" 22 Kasım'da PC platformunda satışa sunulacak
Bu 3 uygulama olmadan yaşam standardı 10 yıl öncesine döndü
Suistimalden "beyin" e, asırlık elektrik şoku tarihi
To Top