مرحبًا ، إذا قمت بتوصيل القياس عن بعد بجهاز الكمبيوتر الخاص بي ، وفتحت عقدة mavros للتواصل مع FCU عبر القياس عن بُعد. ما عنوان UDP الذي أضعه عند تشغيل mavros؟
launch file
أو في سطر الأوامر عند تشغيله.roslaunch mavros px4.launch fcu_url:="udp://:[email protected]:14557"
لكن المنفذ والعنوان يعتمدان على نظامك.
شكرا. أفهم هذا ، ولكن عندما أقوم بتوصيل القياس عن بعد بجهاز الكمبيوتر الخاص بي ، ما هو عنوان IP الذي أستخدمه. أين يمكنني العثور على عنوان IP الخاص بـ FCU؟ أنا أستخدم القياس عن بعد RC للإرسال
zhahaoyu يمكنك التحقق من عنوان IP لجهاز الكمبيوتر الخاص بك باستخدام ifconfig
.
mavros
بالفعل رسالة mavlink
من FCU (PX4) عبر منفذ القياس عن بُعد ونقلها إلى رسالة ROS. أنت فقط تترك mavros
يفعل شيئًا آخر ، لنشر نفس المعلومات في منفذ UDP ، حيث يمكن لـ QGC تلقي المعلومات.<FCU> ---telemtry port --<MAVROS>
<MAVROS> --- UDP ----<QGC>
<MAVROS> ----ros message---<Other Nodets>
شكراweiweikong. الآن فهمت الهيكل. حاولت استخدام roslaunch mavros px4.launch
، وأنا قادر على بدء عقدة Mavros للتواصل مع FCU عبر telem ، لكن كيف يمكنني فتح منفذ UDP لـ QGC ، وإرشاد QGC للاستماع إليه؟
عندما بدأت تشغيل Mavros ، كان كل شيء على ما يرام. ولكن إذا فتحت QGC ، فإنه يستمع تلقائيًا إلى نفس منفذ telem ، ويتعطل mavros. فكيف يمكنني إنشاء اتصال بين QGC و mavros
تضمين التغريدة
<include file="$(find mavros)/launch/node.launch">
<arg name="blacklist_yaml" value="$(find mavros)/launch/px4_blacklist.yaml" />
<arg name="config_yaml" value="$(find mavros)/launch/px4_config.yaml" />
<arg name="fcu_url" value="$(arg fcu_url)" />
<arg name="gcs_url" value="$(arg gcs_url)" />
<arg name="tgt_system" value="$(arg tgt_system)" />
<arg name="tgt_component" value="$(arg tgt_component)" />
</include>
القسم gcs_url
هو لتهيئة UDP. يحتوي موقع الويب px4 القديم على مزيد من التفاصيل https://pixhawk.org/peripherals/onboard_computers/intel_edison.
كما يظهر المثال
<arg name="gcs_url" default="udp://:14556@my-intel-edisons-ip:14550" />
يعني أنه سيتم توصيل QGC عبر UDP بالمنفذ 14556.
لقد اتبعت تعليماتك ، ها هو ملف التشغيل الذي استخدمته
<launch>
<!-- vim: set ft=xml noet : -->
<!-- example launch script for PX4 based FCU's -->
<arg name="fcu_url" default="/dev/ttyUSB0:57600" />
<arg name="gcs_url" default="udp://:[email protected]:14550" />
<arg name="tgt_system" default="1" />
<arg name="tgt_component" default="1" />
<arg name="log_output" default="screen" />
<include file="$(find mavros)/launch/node.launch">
<arg name="pluginlists_yaml" value="$(find mavros)/launch/px4_pluginlists.yaml" />
<arg name="config_yaml" value="$(find mavros)/launch/px4_config.yaml" />
<arg name="fcu_url" value="$(arg fcu_url)" />
<arg name="gcs_url" value="$(arg gcs_url)" />
<arg name="tgt_system" value="$(arg tgt_system)" />
<arg name="tgt_component" value="$(arg tgt_component)" />
<arg name="log_output" value="$(arg log_output)" />
</include>
</launch>
وما زال يتعطل mavros مع رسالة الخطأ التالية عند بدء QGC
ERROR] [1478057788.915106802]: serial0: receive: End of file
terminate called after throwing an instance of 'std::system_error'
what(): Resource deadlock avoided
================================================================================REQUIRED process [mavros-2] has died!
process has died [pid 12427, exit code -6, cmd /opt/ros/kinetic/lib/mavros/mavros_node __name:=mavros __log:=/home/haoyu/.ros/log/849342f6-a0ad-11e6-8d09-000f6005d13e/mavros-2.log].
log file: /home/haoyu/.ros/log/849342f6-a0ad-11e6-8d09-000f6005d13e/mavros-2*.log
Initiating shutdown!
================================================================================
[mavros-2] killing on exit
[rosout-1] killing on exit
[master] killing on exit
shutting down processing monitor...
... shutting down processing monitor complete
done
zhahaoyu لست متأكدًا تمامًا من هذا الوضع. من واقع خبرتي ، يجب أن يعمل QGC بشكل مستقل مع ROS ، لذلك يجب أن يبدأ التشغيل بشكل طبيعي ، ويمكننا تعيين تكوين QGC UDP للاستماع إلى المعلومات من mavros
.
serial0: receive: End of file
أنا الآن متأكد مما إذا كانت المعلومات الواردة أعلاه تعني أن QGC حاولت توصيل FCU بمنفذ تسلسلي. إذا كان صحيحًا ، فقد يتعطل QGC أو mavros
.
أعتقد أن QGC تحاول استخدام المنفذ التسلسلي. عندما أستخدم QGC مع ROS في وضع SITL ، كل شيء يعمل بشكل جيد. أنا فقط لا أعرف كيف أفعل هذا مع pixhawk fcu الحقيقي.
zhahaoyu ربما حاول بدء QGC أولاً ثم قم بتكوينه باستخدام اتصال UDP بدلاً من المنفذ التسلسلي قبل تشغيل mavros wih PX4.
weiweikong شكرا جزيلا. حللت المشاكل. كمرجع للآخرين ، هذا ما فعلته:
roslaunch mavros px4.launch
الآن تم إنشاء سلسلة FCU <---telemetry---> MAVROS <---UDP---> QGC
. لن تتصل QGC تلقائيًا مع FCU vai Telemetry بعد الآن. إذا كنا لا نزال نريد ذلك ، فيمكننا تكوين اتصال يدوي.
لمعلوماتك: جرب udp-b://@
كعنوان GCS URL.
مرحبًا ، لدي مشكلة مماثلة ، لقد حصلت على وحدة قياس أرضية راديو FPV وأريدها أن تتواصل مع القياس عن بعد الذي يمتلك طائرة Iris بدون طيار.
عندما أقوم بتوصيل القياس عن بعد (الأرضي) بجهاز كمبيوتر ubuntu الخاص بي وتشغيل الطائرة بدون طيار ، لا يتم تشغيل محطة Qground.
لماذا هذه المشكلة؟
هل يجب علي تثبيت أي برامج تشغيل؟
التعليق الأكثر فائدة
لمعلوماتك: جرب
udp-b://@
كعنوان GCS URL.