2016-05-23 11 views
0

私はArduPilotMega(2.6)と通信するためにMavlinkプロトコル(C++)を使用するプロジェクトに取り組んでいます。
例えば、ATTITUDEのようなメッセージを読むことができます。現在のメッセージレート(すべてのメッセージ)は2Hzで、このレートを増やしたいと思います。
変更するためにを使用してMESSAGE_INTERVALと設定する必要があることがわかりました。Mavlinkメッセージレートを変更するArduPilotMega

私の質問は次のとおりです。
C++でmavlinkを使用してこのコマンドメッセージを送信するにはどうすればよいですか?

以下のコードを使って試してみましたが、うまくいきませんでした。私は上記のコマンドを使用しなければならないと思うが、どういうわけかわからない。

mavlink_message_t command; 
mavlink_message_interval_t interval; 

interval.interval_us = 100000; 
interval.message_id = 30; 

mavlink_msg_message_interval_encode(255, 200, &command, &interval); 
p_sensorsPort->write_message(command); 

アップデート:私も、多分私はそれを右のシステムIDまたはコンポーネントIDを与えていない午前、以下のコードを試してみました。

mavlink_message_t command; 
mavlink_command_long_t interval; 

interval.param1 = MAVLINK_MSG_ID_ATTITUDE; 
interval.param2 = 100000; 
interval.command = MAV_CMD_SET_MESSAGE_INTERVAL; 
interval.target_system = 0; 
interval.target_component = 0; 

mavlink_msg_command_long_encode(255, 0, &command, &interval); 
p_sensorsPort->write_message(command); 

は、たぶん私はtarget_systemtarget_componentsysidcompidの違いについて何かをしないのです。私はそれぞれにいくつかの値を試しましたが、何も働かなかった。
コマンドを受け取ったかどうかわからないACKがありますか?

答えて

0

Robotis Stack Exchange答え、

からのメッセージレートを変更するために、最も簡単な方法は、Mission Plannerを使用してSR_ *パラメータの値を変更することです。最大レートは10Hzです。
は、例えば、順番にATTITUDEメッセージレートを変更するためには、10Hzの私は、パラメータが変化するの詳細については、10

各メッセージがArduCopterファームウェアでGCS_Mavlink.cppファイルを参照するSR_EXTRA1パラメータを変更しなければならなかったことにします。

0

私はあなたがstart_stopフィールドを欠場したと思います。以下のサンプルが動作しています。

 final msg_request_data_stream msg = new msg_request_data_stream(); 
     msg.req_message_rate = rate; 
     msg.req_stream_id = (short) streamId; 
     msg.target_component = (short)compID; 
     msg.target_system = (short)sysID; 

     /* 
          GCS_COMMON.cpp contains code that sends when value =1 
          and stop when value = 0 
          that is it. 
     */ 

     if (rate > 0) { 
      msg.start_stop = 1; 
     } else { 
      msg.start_stop = 0; 
     } 
関連する問題