نحن حاليًا نسيء استخدام مستشعرات الليزر من Gazebo ونطلق عليها اسم سونار.
ستضيف محاكاة أكثر واقعية لأجهزة استشعار السونار ( سونار المسح الجانبي والسونار متعدد الحزم ) قيمة كبيرة إلى uuv_simulator وتجعله أكثر تشويقًا لمجتمع جديد أكبر.
مرحبًا ، نحن نعمل على محاكاة أجهزة الاستشعار في uuv_simulator
أيضًا. حاليًا ، لدينا شيء مشابه لـ sidecan ، والذي يعطينا صورًا للشلال. الأهم من ذلك ، نحن نعمل من أجل مستشعر FLS لطيف هنا: https://github.com/smarc-project/smarc_simulations/blob/master/smarc_gazebo_plugins/smarc_gazebo_ros_plugins/src/gazebo_ros_image_sonar.cpp . وهو يعتمد على المحاكاة الموضحة في الورقة البحثية "جهاز محاكاة سونار جديد قائم على وحدة معالجة الرسومات لتطبيقات الوقت الفعلي". يجعل Gazebo الأمر صعبًا بعض الشيء ، لذا فهو يعتمد على إساءة استخدام كاميرا عمق محاكية ، لكنها لا تزال فعالة بشكل معقول.
إذا كان لا يزال هناك اهتمام بهذا ، فسأقدم بعض الأمثلة حول كيفية ظهور السونار وربما أعمل على إكمال كل شيء وإنشاء علاقات عامة لهذا الريبو.
nilsbore بعض الأمثلة ستكون رائعة. أنا أيضًا مهتم حقًا بهذا.
مرحبًا nilsbore ، فسيسعدني مراجعته. يتمثل الحل الآخر في إضافة معلومات حول توثيق محاكي UUV حول كيفية دمج المكونات الإضافية الخاصة بك أيضًا ، حتى يتمكن المزيد من الأشخاص من استخدامها :)
مرحبًا musamarcusso ، وشكرًا على عملك الرائع في هذه المحاكاة! سأرى كم سيستغرق الأمر لإنشاء علاقات عامة نظيفة لهذا الريبو ، واتبع أحد المسارات المقترحة ، شكرًا!
مرحبا nilsbore ،
إنني أتطلع إلى رؤية تقدمك في تكييف السونار مع جهاز محاكاة UUV. من فضلك، اسمحوا لنا أن نعرف! = د
هل تم إحراز أي تقدم بشأن FLS؟ أنا أيضا أتطلع للاستفادة منها.
مرحباnilsbore! لقد مر وقت منذ بدء هذا الموضوع ، ولكن هل لي أن أعرف كيف يتم التقدم في محاكاة FLS حتى الآن؟ أنا أتطلع إلى استخدام محاكاة السونار التي تعمل عليها في جازيبو أيضًا ، وآمل أن يكون لديك المزيد من التقدم بعد ذلك
* بعد التحديث الأخير الذي أجريته هنا.
مرحبًا بالجميع ، أنا آسف لأنني لم أتمكن من إحراز تقدم كبير في هذا الموضوع. محاكاة المستشعر مفتوحة المصدر ومتاحة هنا: https://github.com/smarc-project/smarc_simulations/tree/master/smarc_gazebo_plugins/smarc_gazebo_ros_plugins . يطلق عليه gazebo_ros_image_sonar
. على الرغم من أننا نستخدم إصدارًا قديمًا إلى حد ما من uuv_simulator ، إلا أن هذا المكون الإضافي يعتمد فقط على شرفة المراقبة ولذا يجب أن يعمل في كل مكان. في uuv_simulator ، يمكنك تضمينه من خلال تضمين ملف urdf هذا: https://github.com/smarc-project/smarc_simulations/blob/master/smarc_sensor_plugins/smarc_sensor_plugins_ros/urdf/sonar_snippets.xacro وإضافة شيء مثل هذا المقتطف في سيارتك urdf :
<xacro:forward_looking_sonar
namespace="${namespace}"
suffix="down"
parent_link="${namespace}/base_link"
topic="forward_sonar"
mass="0.015"
update_rate="10"
samples="100"
fov="1.54719755"
width="260"
height="120">
<inertia ixx="0.00001" ixy="0.0" ixz="0.0" iyy="0.00001" iyz="0.0" izz="0.00001" />
<origin xyz="0.83 0 -0.22" rpy="0 ${0.2*pi} 0" />
<visual>
</visual>
</xacro:forward_looking_sonar>
يجب أن تكون قادرًا بعد ذلك على رؤية شيء مثل هذه الصورة في موضوع روس: فيديو .
عندما يسمح الوقت (بعد المواعيد النهائية) ، سأحاول تقسيم هذا المستشعر إلى عبوته الخاصة التي يمكن استخدامها من قبل أي شخص يريد استخدام FLS sim ولا شيء آخر.
أفضل،
نيلز
nilsbore لاحظ! شكرا جزيلا على التحديث لك. سأحاول إجراء تحسينات على هذا المستشعر أيضًا حتى يمكن تحسين أدائه.
تحديث رائع حقًا وتقدم حتى الآن! نتطلع إلى مزيد من التحديثات حول هذا المشروع وعمل رائع حقًاnilsbore!
لقد اخترت الكرز من NickSadjoli و @ nilsbore لمحاولة الحصول على شيء ما FF من السيد. يبدو أن كلاكما قد تباعدا بطرق مختلفة.
سيكون من الجيد أن تقوموا بإلقاء نظرة والتعليق / الالتزام حتى يمكن للآخرين استخدام هذا.
آسف على الرد المتأخر willcbaker ! أنا أختلف عن
لسوء الحظ ، لم أحقق تقدمًا كبيرًا في إجراء تحسينات على الكود بسبب مشاكل أخرى ، لكنني سأحرص على نشر التحديثات عندما يكون لدي الوقت للقيام بذلك.
فيما يتعلق بالالتزام الذي قمت به ، يمكنني القول بأمان أن الإضافات التي قمت بها هي نفسها تمامًا كما فعلت لفرعي. يجب أن تعمل بشكل مثالي مع Gazebo الآن ويمكنك الحصول على صور السونار من موضوع "rexrov / deep / image_sonar".
يجب أن أشير إلى أن الاسم حاليًا مرتبط ارتباطًا وثيقًا بموضوع "/ عمق" نظرًا لأن تنفيذ المستشعر يتطلب استخدام كاميرا عمق في الوقت الحالي. يجب أن نرى ما إذا كان من الممكن تحسين ذلك لتجنب حدوث ارتباك محتمل ونأمل أن تتبع المزيد من التحديثات قريبًا.
مرحبًا NickSadjoli ، هل يمكنك الارتباط
musamarcusso نعتذر عن عدم توفير الروابط من قبل. لدي فرع يعمل به مثال عملي لهذا السونار على Rexrov UUV ، لكن يرجى ملاحظة أن هذا الفرع يحتوي على كود تجريبي آخر لا يعمل والذي حاولت سابقًا إعادة إنشاء FLS المذكور في الورقة المشار إليها. الفرع مرتبط أدناه:
https://github.com/NickSadjoli/uuv_simulator/tree/realistic-sonar-sim-48
أشياء أو تغييرات أخرى على الملاحظة التي تمت إضافتها أو ذات فائدة في هذا الفرع:
إذا كان تنظيم الملفات في الفرع الحالي محيرًا للغاية ، فالرجاء تقديم الملاحظات إليّ في هذا الموضوع ، حتى أتمكن من إنشاء نسخة أنظف من هذا الفرع لتقوم بسحبها.
شكرا ونتطلع إلى ملاحظاتك / آرائك
تحرير: نسيت إرفاق ارتباط المستودع
مرحبًا @ NickSadjoli
أنا أحاول تجربة uuv_simulator-real-sonar-sim-48. كان الخطأ الأول الذي تلقيته هو "فقد uuv_laser_to_sonar / launch" أثناء تثبيت catkin_make. لقد قمت بإنشاء مجلد تشغيل فارغ كحل بديل. ثم قمت بتشغيل "roslaunch uuv_gazebo_worlds test_turbid_water.launch" وحصلت على العديد من الأخطاء ، بما في ذلك
مرحبًا @ NickSadjoli
بعد تعقب الأخطاء ، اتضح أن ملفات opencv libs لم يتم ربطها بشكل صحيح. كحل بديل ، أضفتُ opencv libs المطلوبة صراحةً إلى image_sonar_ros_plugin. يرجى إعلامي إذا كانت هناك طرق أفضل لإصلاح الخطأ الأصلي.
ألاحظ أيضًا أن my_frame (والخريطة) إما غير معرّف أو لا أحصل على tf من العالم. أي فكرة عن كيفية حل المشكلة؟ شكرا لمساهمتك. جيم شين
مرحبا @ chyphen777!
نأسف لأن هذا الرد متأخر جدًا على استفسارك.
من المحتمل أن يكون الخطأ في ملف التشغيل المفقود ناتجًا عني بما في ذلك العديد من الأدلة التي لم يتم استخدامها في محاكاة FLS على أي حال ، مما تسبب في فوضى CMake-s. لقد قمت بتحديث الفرع الخاص بي لتنظيف هذا الأمر ، والذي يجب إصلاحه لمثل هذه الأخطاء الآن. ولكن للأسف يبدو أنني حذفت عن طريق الخطأ بعض الملفات الضرورية في هذا الفرع مما أدى إلى بدء تشغيل Gazebo GUI مع وجود أخطاء وأعطال في التجزئة بدلاً من ذلك. لاحظ مع ذلك أنه لا يزال يتم إطلاق موضوعات شرفة المراقبة الفعلية وأنه لا يزال من الممكن تشغيل RViz من حين لآخر بشكل صحيح ، لذلك لم يتم كسرها بالكامل بعد.
سأحاول إصلاح هذه المشكلة مع الفرع ، وإعادتها مرة أخرى إلى الالتزام السابق إذا استمرت المشكلة. لاحظ أن هذا قد يستغرق بعض الوقت ولكنني أعتني أيضًا بأشياء أخرى في عملي ، لذلك قد لا يكون لدي الكثير من الوقت.
بالنسبة لأخطاء "ليس لدينا مقطع" و "تحويل نوع المستشعر [العمق] غير مدعوم" ، لست متأكدًا مما إذا كانت هذه هي الأسباب المحتملة لعدم ظهور صورة السونار في RViz ، حيث كنت لا أزال قادرًا على إظهار الصورة على RViz الخاص بي حتى مع ظهور تلك الأخطاء. أعتقد أنه يُعزى على الأرجح إلى خطأ البحث عن الرمز الذي لم أواجهه للأسف في الريبو المحلي الخاص بي حتى الآن.
في ملاحظة ذات صلة ، لست متأكدًا مما إذا كان يجب ربط ملفات opencv libs بشكل صريح بقوائم CMakeLists أيضًا لأنني تمكنت من إطلاق العالم بشكل جيد دون الحاجة إليه. سأحاول النظر في هذا أيضًا. شكرًا لك على تقديم خطأ الأداة المساعدة أيضًا للمستخدمين الآخرين الذين قد يواجهون مشكلة مماثلة.
مرحبًا @ chyphen777 ،
لقد أجريت للتو بعض التعديلات الطفيفة على الفرع الحالي ويبدو أنه يعمل بشكل جيد في جهازي الآن ، لذلك يجب أن تكون قادرًا على التبديل فقط إلى هذا الفرع وأن يتم تجميع كل شيء باستخدام تثبيت catkin_make.
ومع ذلك ، تجدر الإشارة إلى أن الفرع يبدو غير مستقر في بعض الأحيان وقد تواجه نوع الخطأ التالي:
في حالة مواجهة مثل هذه الأخطاء ، يجب أن تكون قادرًا فقط على إغلاق ملف التشغيل وإعادة تشغيله لتشغيل Gazebo و RViz (على الأقل هذا ما تمكنت من القيام به). إن عدم الاستقرار هذا أمر مزعج بالتأكيد وسأحاول النظر في أسباب ذلك بشكل أكبر حتى يكون الفرع أكثر استقرارًا.
أيضًا ، لسوء الحظ لم أقم أيضًا بإلقاء نظرة فاحصة فيما يتعلق بإطار my_frame والخريطة لعدم تحديدها أو عدم تحديثها من tf في العالم. أظن أنه قد يكون بسبب بقايا محاولاتي السابقة لاستخدام حل FLS آخر لم ينجح بعد. مرة أخرى ، سأحاول النظر في هذا بمجرد توفر المزيد من الوقت والعودة إليك بمجرد الحصول على المزيد من التحديثات.
تحياتي وشكرًا لتعليقاتك C. Chien! - نيكولاس س.
مرحبًا ، @ NickSadjoli :
شكرا على الرد والإصلاحات والمعلومات المفيدة. أنا قادر على تشغيل جهاز محاكاة السونار الخاص بك. آسف على الرد المتأخر. تم تعقبي جانبي لمشاريع أخرى. يرجى إطلاعنا على أي تحديث.
مع التحيات ، سي شين.
تضمين التغريدة
أولاً ، العمل الرائع مع تطبيق FLS لمحاكاة UUV ، إنه رصيد ضخم للمجتمع! لدي بضعة أسئلة حول ذلك حيث أخطط لإجراء بعض التغييرات الطفيفة لجعل FLS يتطابق مع الأجهزة التي عادةً ما أنشرها في الحقل.
كيف يمكنني إضافة سونار آخر ، على سبيل المثال ، سونار يتطلع إلى الأمام والآخر يتطلع إلى الخلف؟ يبدو أن هناك الكثير من الترابط بين الكاميرا فيما يتعلق بتوليد صور FLS ، والبحث عن إرشاداتك.
ما هو السونار الذي يعتمد عليه وما هي فتحته العمودية؟ إذا أردت كيف يمكنني تغيير فتحة السونار العمودية؟
ما هو أقصى مدى لجهاز الاستشعار وكيف يمكنني تغيير ذلك إذا أردت؟
في الملف rexrov_test.xacro ، في الكتلة لبدء تشغيل FLS ، ما الذي تشير إليه عبارة "sample = 100"؟
يوحنا
تضمين التغريدة
نتطلع إلى الاستشهاد بهذا بشكل صحيح في بعض الأعمال القادمة. سأستخدم الاقتباس من محاكاة UUV ولكن هل هناك أي أعمال أخرى يجب الاستشهاد بها؟ ربما "جهاز محاكاة سونار جديد قائم على وحدة معالجة الرسومات لتطبيقات الوقت الفعلي؟"
@ jake3991 يعتمد تطبيقي الأصلي على الأقل على الورقة التي تشير إليها. لا أعرف ما إذا كان NickSadjoli قد أضاف أي مفاهيم من أعمال أخرى.
عمل عظيم!
nilsbore أحاول أن أفهم ConstructSonarImage
و ConstructScanImage
؟ على سبيل المثال ، لماذا يتم حساب SNR
كـ cv::Mat SNR = SL - 2.0*TL - (NL-DI) + TS;
؟
cv::Mat GazeboRosImageSonar::ConstructSonarImage(cv::Mat& depth, cv::Mat& normals)
{
std::vector<cv::Mat> images(3);
cv::split(normals, images);
float intensity = 100.; // target strength
float SL = 200.; // source level
float NL = 30; // noise level
float DI = 0.0; // directivity index
if (dist_matrix_.empty()) {
// Compute dist_matrix_ once
// ...
}
cv::Mat TS = intensity*images[2]; // target strength, probably dir should be DI
cv::Mat TL = 5*depth; // transmission loss
cv::multiply(TL, dist_matrix_, TL);
cv::Mat SNR = SL - 2.0*TL - (NL-DI) + TS;
SNR.setTo(0., SNR < 0.);
// ...
witignite هذا الرمز منذ بعض الوقت ولا أتذكر بالضبط أين حصلت على هذه المعادلات. بصراحة ، كان التركيز عند تنفيذ ذلك أكثر على إنشاء صورة ذات مظهر واقعي بدلاً من نموذج سونار صحيح تمامًا. ربما تكون البداية الجيدة هي إلقاء نظرة على الورقة التي أشار إليها
بالنسبة لأولئك المهتمين بـ Multibeam Sonar في Gazebo ، فقد قمت ببناء مكون إضافي للسونار Multibeam في مشروع Dave الذي يشتمل على uuv_simulator أيضًا. يستخدم مكتبة Nvidia Cuda ويحسب بيانات الكثافة / النطاق حتى معدل تحديث يصل إلى 10 هرتز بتردد 900 كيلو هرتز ، ونطاق 10 أمتار. لمزيد من التفاصيل ، https://github.com/Field-Robotics-Lab/dave/wiki/Multibeam-Forward-Looking-Sonar
مرحبًا ، أنا آسف جدًا لمجرد الرد على هذا الموضوع بعد وقت طويل جدًا ، حيث إنني أعالج جزءًا / مكونًا هائلًا آخر لمشروعي.
هذا يعني أيضًا أنني لم أعد أعمل بشكل كامل على تطوير جهاز المحاكاة حيث قمت بتسليم عبء العمل هذا إلى زميل لي الذي كان يتعامل معه منذ العام الماضي. لسوء الحظ ، نسيت أن أذكر هذا الموضوع في حالة وجود أسئلة تم نشرها بخصوص أي تطور.
للتوضيح أيضًا: أثناء تعاملي مع نموذج السونار ، لم nilsbore للسونار . ومع ذلك ، ربما أجرى زميلي بعض التعديلات الصغيرة عليه لتغيير بعض سلوكه لمحاكاة سلوكيات FLS بشكل أكثر واقعية في البيئات العكرة تحت الماء.
@ jake3991 للإجابة على أسئلتك:
يرجى أيضًا ملاحظة أن زميلي يخطط لنشر ورقة حول المحاكي القائم على uuv_simulator الذي كان يعمل عليه. لذلك يجب توجيه مزيد من التفاصيل حول التنفيذ الحالي لمشروعنا إليه. سأحاول جعله متصلاً بهذا الموضوع إذا لزم الأمر للإجابة على أي أسئلة أخرى حول تنفيذ مشروعنا.
فيما يتعلق بنموذج السونار "الدقيق" في الواقع ، يبدو أن العمل المرتبط بـ @ woensug-choi قد يكون نموذجًا "أكثر دقة" لأنه يستخدم تطبيقًا مباشرًا أكثر لتتبع الأشعة. على الرغم من أنني لست متأكدًا تمامًا من أن هذا أفضل بكثير بالنسبة للتطوير القائم على المحاكاة بشكل عام.
سوف أجعل زميلي يتحقق من التنفيذ ويرى كيف يمكن دمجه بشكل جيد مع محاكي مشروعي.
مرة أخرى ، نعتذر بشدة للجميع عن الرد المتأخر على هذا الموضوع.
@ jake3991 أيضًا للتوضيح بشأن الاقتباس من محاكي مشروعنا: نظرًا لأننا لم نحصل على منشور ورقي ناجح فعليًا على جهاز المحاكاة ، أقترح عليك الاستمرار في استخدام الورقة التي ربطتها وكذلك nilsbore للحصول على الاقتباس الصحيح.
بمجرد قبول نشرنا في المنشور أو الانتهاء منه ، يمكن أيضًا استخدام الاقتباس من ورقتنا البحثية في ذلك الوقت.
بالنسبة لأولئك المهتمين ، يرجى مراجعة https://github.com/Field-Robotics-Lab/dave/wiki/Multibeam-Forward-Looking-Sonar .
لاحظ أنني أستخدم https://github.com/uuvsimulator/uuv_simulator من musamarcusso التي قامت بالفعل بدمج وحدة السونار الخاصة بـ nilsbore .
لتوضيحNickSadjoli على السؤال @ jake3991:
2 -كما قال
لتغريد VFOV الخاص بالسونار:
في ملف URDF xacro الخاص بالسونار ، يلزمك تحديد HFOV وعرض الصورة وارتفاعها. أكشاك من حساب قاعدة الطول البؤري على عرض الصورة و HFOV. باستخدام نفس البعد البؤري ، فإنها تعكس حساب VFOV باستخدام ارتفاع الصورة. لذلك لتحديد VFOV الذي تريده ، ستحتاج إلى حساب ارتفاع الصورة.
الطول البؤري = (العرض / 2) / تان (deg2rad (HFOV) / 2) أو الطول البؤري = (الارتفاع / 2) / تان (deg2rad (VFOV) / 2)
3- يُطلب منك التغريد برمز السونار C ++. في كود C ++ الخاص بالسونار بواسطة nilsbore ، أضفت مشتركًا إلى قيمة "Range" بدلاً من وجود نطاق ثابت مثل @ nilsbore العمل الأصلي. بهذه الطريقة يمكنني اللعب بأقصى مدى لشاشة السونار كما تفعل معظم أجهزة السونار.
أتمنى أن يساعدك هذا.
nilsbore و @ NickSadjoli ، Hii ، لقد جربت للتو المكوّن الإضافي fls المتوفر في uuv_sensor_ros_plugin. لدي بعض الأسئلة المتعلقة به: 1. حاولت إعداد الموضوع في sonar_snippets.xacro. عندما تم محاكاة الروبوت ، لماذا لم يكن هناك الموضوع الذي حددته من قبل؟ أنا فقط أرى هذا النوع من المواضيع: "/ rexroth / deep / sonar raw_image".
Jenanaputra يرجى الرجوع إلى تعليقي أعلاه .....
@ loguna123 شكرا
التعليق الأكثر فائدة
مرحبًا ، نحن نعمل على محاكاة أجهزة الاستشعار في
uuv_simulator
أيضًا. حاليًا ، لدينا شيء مشابه لـ sidecan ، والذي يعطينا صورًا للشلال. الأهم من ذلك ، نحن نعمل من أجل مستشعر FLS لطيف هنا: https://github.com/smarc-project/smarc_simulations/blob/master/smarc_gazebo_plugins/smarc_gazebo_ros_plugins/src/gazebo_ros_image_sonar.cpp . وهو يعتمد على المحاكاة الموضحة في الورقة البحثية "جهاز محاكاة سونار جديد قائم على وحدة معالجة الرسومات لتطبيقات الوقت الفعلي". يجعل Gazebo الأمر صعبًا بعض الشيء ، لذا فهو يعتمد على إساءة استخدام كاميرا عمق محاكية ، لكنها لا تزال فعالة بشكل معقول.إذا كان لا يزال هناك اهتمام بهذا ، فسأقدم بعض الأمثلة حول كيفية ظهور السونار وربما أعمل على إكمال كل شيء وإنشاء علاقات عامة لهذا الريبو.