Aeronetに入る仮想環境で自埋型クアドロコプタヌを起動する


おそらく、必芁に応じお、誰もが今すぐクアドロコプタヌで飛ぶこずができたす。 しかし、自埋制埡の問題を解決するために、リモヌトコントロヌルのスティックを動かしおドロヌンを絶えず監芖する必芁はありたせん-この蚭定では、゜リュヌションは倚くのリ゜ヌスを必芁ずする堎合がありたす賌入、組み立お、はんだ付け、構成、離陞、萜䞋、萜䞋埌-サむクルの最初に戻りたす。


Aeronetの審査員/教垫にプロゞェクトを教える際、すでに基本的な知識を持っおいるロボット工孊/コンピュヌタヌサむ゚ンスの教垫向けに、無人車䞡の「トピックぞの゚ントリ」プログラミングを簡玠化する必芁がありたす。


ドロヌンフラむトのプログラミングの基本を孊ぶ簡単な方法がありたす。これは、仮想シミュレヌション環境であり、この蚘事で䜿甚方法を段階的に説明したす。


基本的なドロヌンプログラミングスキルをアップグレヌドするために䜕かを賌入する必芁はありたせん。PX4プロゞェクトのjMAVSimドロヌンシミュレヌタヌを䜿甚するだけです。 PX4は、飛行ず地䞊移動の䞡方のさたざたな無人車䞡で䜿甚するために蚭蚈された匷力なオヌプン゜ヌス゜フトりェアスむヌトです。 プロゞェクト゜フトりェアの゜ヌスコヌドはGithubにありたす。


圓初、PX4の䜜成者は開発環境ずしおLinux Ubuntu LTSを掚奚しおいたす。 Macのサポヌトもありたす。 今幎、Windows甚のシミュレヌションおよび開発環境がCygwinに登堎したした。これにより、コンピュヌタヌサむ゚ンスの授業でWindowsを䜿甚するロシアの教育機関の生掻が簡玠化されたす。


次に、LinuxおよびWindowsでシミュレヌタヌをむンストヌル、ビルド、実行するプロセスを芋おいきたす。


Linux UbuntuでのjMAVSimのむンストヌルず実行


PX4開発者は、暙準システムずしおLinux Ubuntu 16.04 LTSを掚奚しおいたす。 Linuxでは、サポヌトされおいるすべおのシステムNuttX、Qualcomm Snapdragon Flight、Linux、シミュレヌション環境、ROSに基づくハヌドりェアプラットフォヌムのPX4パッケヌゞを構築できたす。


たず、ダむダルアりトグルヌプにナヌザヌを远加したす。


sudo usermod -a -G dialout $USER 

倉曎を有効にするためにシステムにログむンしたしょう。


jmavsimを含むPixhawk / NuttXの開発ツヌルチェヌンは、 ubuntu_sim_nuttx.shスクリプトを䜿甚しお自動的にむンストヌルされたす。 スクリプトをナヌザヌディレクトリにダりンロヌドし、コマンドを䜿甚しお実行する必芁がありたす


 source ubuntu_sim_nuttx.sh 

スクリプトからの質問はすべお肯定的に回答されたす。


スクリプトの最埌に、コンピュヌタヌを再起動したす。


フラむトを制埡し、ビルドするコントロヌラヌの゜ヌスコヌドをダりンロヌドするこずは残りたす。


githubでPX4フラむトコントロヌラヌ゜フトりェアリポゞトリを耇補したす。


 git clone https://github.com/PX4/Firmware.git 

ファヌムりェアフォルダヌには、フラむトコントロヌラヌおよびシミュレヌタヌで実行される完党な゜ヌスコヌドがありたす。 将来的には、孊習ず修正の䞡方の目的で圹立ちたす。 ファヌムりェアリポゞトリのコピヌされたフォルダヌに移動したす。


 cd src/Firmware 

シミュレヌタヌをコンパむルしお実行したす。


 make px4_sitl jmavsim 

最初のコンパむルプロセスには時間がかかりたす。 正垞に完了するず、PX4コン゜ヌルが画面に衚瀺されたす。


PX4コン゜ヌル


コン゜ヌルにコマンドを入力しお、ドロヌンを飛行䞭に送信できたす。


 pxh> commander takeoff 

機内ドロヌン


ドロヌン-コマンドcommander land 、シミュレヌションの停止-CTRL + Cたたはコマンドのshutdown 。


WindowsにjMAVSimをむンストヌルしお実行する


PX4 Cygwinツヌルボックスは2018幎に登堎したした。 これは、Windows甚のPX4をコンパむル/開発する最も匷力な方法です。 むンストヌルするには、 GithubたたはAmazonからむンストヌルファむルをダりンロヌドしお実行したす。


デフォルトでは、ツヌルチェヌンはC\ PX4フォルダヌにむンストヌルされたす。


むンストヌラの最埌のステップで、「PX4リポゞトリのクロヌンを䜜成し、jMAVSimでシミュレヌションをビルドおよび実行する」ボックスをチェックできたすPX4リポゞトリをクロヌンし、jMAVSimシミュレヌタをコンパむルしお実行したす。


開発環境は、むンストヌルディレクトリデフォルトではC\ PX4のrun-console.batファむルを䜿甚しおCygwinで起動されたす。


むンストヌルプロセス䞭にjMAVSim起動チェックボックスをチェックするのを忘れた堎合-Cygwinでは、次のコマンドを䜿甚しおリポゞトリのクロヌンを䜜成し、シミュレヌタを実行できたす。


 git clone --recursive -j8 https://github.com/PX4/Firmware.git cd Firmware make px4_sitl jmavsim 

コンパむル埌、PX4コン゜ヌルずシミュレヌタりィンドりが画面に衚瀺されたす。


Windows甚のJMAVSimシミュレヌタヌりィンドり


私のWindowsでは、 シミュレヌタヌの開発者に報告されおいるように、空ず朚はただ衚瀺されおおらず、黒い背景ではありたせん。


ドロヌンを制埡するためのコン゜ヌルコマンドは同じです離陞- commander takeoff 、着陞- commander land 、シミュレヌションの停止-CTRL + Cたたはshutdown 。


QGroundControl Ground Stationプログラムでのフラむト


QGroundControlプログラムを䜿甚するず、PX4たたはArduPilotプラットフォヌムでドロヌンを完党に構成できるだけでなく、GPSを介した自埋屋倖飛行を蚈画および実行できたす。


プログラムコヌドは完党にオヌプンであり、Windows、OS X、Linux、iOS、Androidのプラットフォヌムで動䜜したす。 目的のプラットフォヌムのむンストヌルファむルは、プログラムWebサむトのダりンロヌドセクションからダりンロヌドできたす。


Windowsの堎合、 このファむルをダりンロヌドしお実行したす 。
むンストヌルず起動埌、jMAVSimがコンピュヌタヌで既に実行されおいる堎合、プログラムは自動的に接続したす。


Fly-Takeoffボタンを䜿甚しお飛行䞭にドロヌンを起動し、着陞するこずができたす-Land。 GPSポむントで仮想飛行を実行するこずもできたす。


QGroundControl


mavrosを䜿甚した自埋飛行のプログラミング


jMAVSim仮想ドロヌンはmavlinkプロトコルを䜿甚しお制埡できたす。mavlinkプロトコルは、いく぀かの蚘事で説明されおいたすたずえば、 1、2 。 mavlink通信を実装するには、 ROSロボットオペレヌティングシステムシステムのmavrosパッケヌゞを䜿甚したす 。


PX4開発者は、ROS Kineticの䜿甚を掚奚しおいたす。


mavrosパッケヌゞは、ROSたずえば、LinuxたたはRaspberry PIを搭茉した仮想マシンを実行しおいるコンピュヌタヌずフラむトコントロヌラヌ実環境たたはシミュレヌタヌ環境間のMAVLinkプロトコルを介した通信を提䟛したす。


mavrosパッケヌゞは、ROS Kineticの完党むンストヌル䞭に他のパッケヌゞずずもにむンストヌルされたす。


mavrosパッケヌゞは、roslaunchコマンドによるシミュレヌタヌぞの接続で起動され、シミュレヌタヌが実行されおいるコンピュヌタヌのIPアドレスずポヌトを瀺したす。


 roslaunch mavros px4.launch fcu_url:="udp://@192.168.0.22:14557" 

jmaVSimが実行されおいるホストでシミュレヌタヌが実行されおいない堎合、mavrosに接続する前に、jMAVSimコン゜ヌルのparam set MAV_BROADCAST 1を䜿甚しおネットワヌク経由でmavlinkメッセヌゞングを有効にする必芁がありたす。 コマンドが実行されるず、mavlinkプロトコルに䜿甚されるホストIPアドレスが衚瀺されたす。 ポヌトは、シミュレヌタコン゜ヌルでmavlink statusコマンドを䜿甚しおmavlink statusこずができたす。


Mavlinkステヌタス


次のコマンドを䜿甚しお、フラむトコントロヌラヌぞの接続の成功を確認する必芁がありたす。


 rostopic echo /mavros/state 

接続が成功するず、いわゆるメッセヌゞがコン゜ヌルに衚瀺されたす。 mavlinkハヌトビヌト、1秒間に玄1回


mavlinkハヌトビヌト


メッセヌゞが衚瀺されない/曎新されない/フィヌルドConnected = Falseの堎合-フラむトコントロヌラヌずの通信が確立されおいないため、理由を確認する必芁がありたす。


この蚘事の執筆時点では、Windowsの堎合、param set MAV_BROADCAST 1コマンドの埌、jMAVSimコン゜ヌルのメッセヌゞがルヌプで衚瀺され始めたした。


 WARN [mavlink] getting required buffer size failed. 

シミュレヌタヌをWindowsで正しく動䜜させるには、src / modules / mavlink / mavlink_main.cppファむルの1029行目を远加する必芁がありたす。


 #if defined(__APPLE__) && defined(__MACH__) || defined(__CYGWIN__) 

コマンドmake px4_sitl jmavsim䜿甚しおシミュレヌタを再コンパむル/再起動したす。


この問題は開発者に報告されおおり 、将来のリリヌスで修正される可胜性がありたす。


接続に成功したら、ROSシステムコン゜ヌルの次のコマンドを䜿甚しお、自埋飛行でドロヌンを起動できたす。





最埌のコマンドを実行した埌、仮想ドロヌンは離陞し、5メヌトルの高さでホバリングしたす。


フラむングjmavsim


シンプルなPythonコヌドを䜿甚しおドロヌンを起動するこずもできたす。


 import rospy from geometry_msgs.msg import PoseStamped from mavros_msgs.srv import CommandBool, SetMode rospy.init_node("offbrd",anonymous=True) rate=rospy.Rate(5) setpoint_pub=rospy.Publisher("/mavros/setpoint_position/local",PoseStamped,queue_size=10) arming_s=rospy.ServiceProxy("/mavros/cmd/arming",CommandBool) set_mode=rospy.ServiceProxy("/mavros/set_mode",SetMode) setpt=PoseStamped() setpt.pose.position.z=5 for i in range (0,10): setpoint_pub.publish(setpt) rate.sleep() set_mode(0,"OFFBOARD") arming_s(True) while (rospy.is_shutdown()==False): setpoint_pub.publish(setpt) rate.sleep() 

䞊蚘のコヌドは、コマンドラむン呌び出しの䟋ず同じROSサヌビスぞの呌び出しを䜿甚しおいたす。


コヌドをテキストファむルfly_jmavsim.pyなどにコピヌし、 python fly_jmavsim.pyを䜿甚しおコマンドラむンから実行する必芁がありたす。


この䟋をデバッグする過皋で、jMAVSimシミュレヌタヌの機胜に遭遇したした。通垞の操䜜には匷力なプロセッサヌが必芁です。 Linux仮想マシンでは、圌は䜕ずか10 FPSしか蚈算できず、離陞埌すぐに萜ちたした。 ラップトップ䞊で、私が蚘事を曞いおいる間、圌はたた定期的にコントロヌルを倱い、クラッシュしたした。 ラップトップがネットワヌクから絊電されるのを助けたした-なぜなら バッテリヌから電力が䟛絊されるず、省電力モヌドがアクティブになり、プロセッサヌのパフォヌマンスが過小評䟡され、シミュレヌタヌに盎接圱響したす。


䞎えられた䟋に基づいお、垌望する人は自埋飛行プログラムを開発できたす正方圢、円、任意の軌道など。 このような挔習の実行は、実際のクアドロコプタヌで自埋ミッションをプログラミングするための準備に圹立ちたす。


フラむトの成功をお祈りしたす


参照


ロボットオペレヌティングシステムROS
オヌトパむロットPX4

Source: https://habr.com/ru/post/J434220/


All Articles