From 58a125c5e498d2e9e8e54fb1d86d5fd06a9f3c44 Mon Sep 17 00:00:00 2001 From: Vit Petrik Date: Wed, 4 Oct 2023 11:56:44 +0200 Subject: [PATCH 1/4] Added support for DW1000 UWB transceiver --- .../config/qorvo_dw1000_mount.stl | Bin 0 -> 130384 bytes .../config/spawner_params.yaml | 2 + .../sdf/component_snippets.sdf.jinja | 35 ++++++++++++++++ .../mrs_robots_description/sdf/x500.sdf.jinja | 38 ++++++++++++++++++ 4 files changed, 75 insertions(+) create mode 100644 ros_packages/mrs_uav_gazebo_simulation/config/qorvo_dw1000_mount.stl diff --git a/ros_packages/mrs_uav_gazebo_simulation/config/qorvo_dw1000_mount.stl b/ros_packages/mrs_uav_gazebo_simulation/config/qorvo_dw1000_mount.stl new file mode 100644 index 0000000000000000000000000000000000000000..b2a123dee037303ebb5febf1f46d8fca27349141 GIT binary patch literal 130384 zcmb512Xs_b_x9-^NbjI@G6^NLgrYE)j0hG$P>LWO6%c7s29**(kX{4QnFr{5tkR3?TIJuU-e|$rFH1e#x>mx}%--3hwfEoqUx@pftfEGlzUNk) zkHe!i{WSx%t%c=dt;4C89p`}rA63owOyA8_=g7yk9x+z8?_;c}hZ7wHTH!gF{@2b` zwPt6pYt^gQ&YQo~Ms=-Pul`vb)lkdyW!wI993HLdf3UE+^;^AIE7yy!xXwceK0^OO z(|0iGA{|w}i#4r{2V<<1T4h{>Sm8OD{Bwt!6`9gjn%W z$vK(+JA+GEp6RjHaC3(@%RgVJqk8A_YjK;&>hk8GZ_$w(ad@<*zuSOktlbr3Eo;MO z$9W*ZpYQbw`U>>;jgIQU&GJ^4^D$Pd(JNhqSm8OD{<78cS>xZ2wG#K8_tvS4V`c+?yr;lKBoFA zFUjJ=qc#0aUi&s!=TwZfZ(T9Rc_6W!d@wz&Rc4>*AGG#Na8Zd^tNyeC4g#(CJYH;& z>hm_rM8vc{>w;a#N4;mu8u-0>X&4$OX z#aLw?#2Ba`v3AHTMO1l_iK@G!8=a^eYt5VyW1xb>k5gu=qta)-tF75+$cY#$@9H`Z z0LbC0j?_U>7{qo{2!dcKx{3KAdGpP_u{JDB;$GTxu4AFO_$rh`DMCygg6 zAG-##kJ;_od&d`zwSGvgW}t#Z-p5mv5B=gu6!%E!cA{Orzn zdz!cSuQ684z6b*qB))z$N)bOC=QpbP@C5Jm$XIK{tx5(eNbI=A=dsJjEr#ho`O_Nj z565GyyGP182(+58YnbveV_O#TF`(2=@0u7o^WCKkRFJrzb%OH2ZKdh|=lnizw=*%; zD1UJWfmWTb_g6md4dB+NRQ(IyJq2Q|Plx6+P(flrN4{3OeB4XWb5-GzH;Lja^H^R7 zfmZ$I^-@0i{qux~<0tQXCtZ%Q%GJthpn}AeBi$5{WO7SgTwoE8I|ek{`~rA2Z2_-@4lpby!Jg`t9gNH##7Xv&yQ*E zMFoi#!-py#9BZ5YOiQAT8|PxIw$0)k1X?8xYpQ%iwdFW*&eOGxW;tT5@5W{EqJo6c zc!=`BqYTskYw6m?dzoXc_m*dN5NP$=w@s9fhdcPF8V`su{-&sJXydVsP(fnt?H3f$ zqR?3)JmX^wZ_QY%_?GBKs35WZ`@!m{^cd&cda*`+y1Er={1J-;TCEBBNPC+{ERp1+ z5&0;wCE7#<3Go;I)+r*I(0SaU^H}H|>mbnTm(ZD)+I5VGzv)`_rfW5JS>_-rNGuKA zj~nH`BVs1qk5}k^92}P=hzb&NZ%X7kPDDYv=hx|;4{93cAkeBy=(*avY(Eim>AA{H z&(&u!?SrTwA`ub=GfmZh$>-XcacMlOe>HR1}???6_2|-klkawl) zwu3}Gq<1ii-oa^emN*EsS`>O~1G#n+QH|d7f%KkNsk|eI3KHLk+L963cM)-$+LEuR zExFKSXAl)6q+MBhg0I#0)L!MI_9}YVDF=a8n?r5l!A9GNkT$Vq-U~rgkdXG#TV)>+ z&xP9EJa_+a5NLHM)V9C3eG?J2s7?QZ+IIRkhzb(Y&ez!Y4H2GG_q|i7|F~B(tAzww zy%FkhR*wFXh$+-Zt)f0^!Lhs+DoDhI`oZ#_ttX;5^@IDU9~?h4pM?q%(kFJ>m_o!` z7xsC(QeWG}U)({URqs%L{zvvNi0B{c&%fVY%0dMR>Dy=gWf9Tnyp9>p94YG{&?+Gm zm%MdsH4!Z+F1bc=$;exkEL4z?7^T&;AQ2BK_9;oR&olcX90Xc@ABvXl{}&*l`_j(d z>=a*p@pd%}6(s%$#c;D`BoQ%#Vz`ME!<|m8W}$+F#B+zHm_%F;#fjw))N~MN)h-l^ zmYkGG#5RgWN9$PBLInwlOZWcCZ&X5i9q(paUB^M7)xuCr{pIhgh^S66^>K=+XV0LP z6ci-V<7@UYY|_n!Cn#<&^}tD>Rhdwvzho!-n0Pg>Is0~u_2mVM_CY}+HZ=Zt;T{vK zX#8=H#vgqb#aO5yA!8AJ<|)VZ7$?_|It~J@qC?}TDvSB*$~Y?Fr&<;&NXVE<-@yUn zD+RqYRy*@iO$UKigG1xN`)m0rsZZm<-ZUPZxTTtf3KB9l3_ZKmdj@yXm~-O8sty9J z=7dJ6qbeqokCdD~KxuuusnIL|QZ(MBRl=eQ8`Hi)&BwauppQIL?#i*Bh`OuiT#PCaL*19=?; zT75xB#TlJ(Ild+zV=0TXl(IO#?Z|DR5>9Y_X5KySKYE3-IAs>)RD>wu1ZQyy9oa&} zf8X2-4xyg&ufEw7Aqo=f_*#9t+n0Yf_k$On`7antQAYmg%oZx)1n0{J#qA)XMkuSs z|1u#85|UNZJ?9+Cs-35-THcxeI0&@jZ{n=lzkRt)e3`OpuToa+)r4z`5Cw_#L~w4g zbw`deI0N|!WgwIGoe!ddgk&If%utLnkOe6Nc{k|?2Z2`nO`L%&U5tC@8`X%I=*_IvbFmtTU&MGW(R>*{7syP zy9Ryl!q@&`Tb-zW2$VW0|w#QRuJMT+Ff~bTOoY}r>a`f7oW&vi45^I-HgeXYxj0w+$>^{YD z`|C7gvY2K}=1t8ULzo8yVHVf) zS12$}5v>O_^`L^8Tl7u&t7{Du5qPhehOUC=1Zv+{rd++)cvW2gFq|HewzM0p64UjN7O5= zJg8v)(s@+Fc73XdPSxLV_&@?Plcs;egUyQYC$@7CXoZK-pYx~=KR-he zyJJ3f_&@?PdZvHxt*weMN=$GNXodMX)Bob7yNX!Qd5#Aa%&<9+s`^v+mhiPIQR{h! z4ig;7y`cAgYoy^2{`x6}mT2(WAiWsLd zkj-~%A9a@e6^Y-Ac|W90f5lpn>Zm^d{B9&FNVM+KK>5g`@`?3gG%>K=$V60-z#O3I zFIKXu^09A!d}SoiYFnYY%11+$Pb?84D)wkp85Jb% w`Vk$e>`mO59N0ZA&A}UB= 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 F{vS)*#-;!O literal 0 HcmV?d00001 diff --git a/ros_packages/mrs_uav_gazebo_simulation/config/spawner_params.yaml b/ros_packages/mrs_uav_gazebo_simulation/config/spawner_params.yaml index 10883ed..902c80f 100644 --- a/ros_packages/mrs_uav_gazebo_simulation/config/spawner_params.yaml +++ b/ros_packages/mrs_uav_gazebo_simulation/config/spawner_params.yaml @@ -48,6 +48,8 @@ enable_back_uv_camera: [False, 'Add back UV camera on the vehicle', [f450, x500] uvcam_calib_file: [None, 'Specify UV camera calibration different than default one', [f450, f550, t650, x500]] uvcam_occlusions: [False, 'Enable occlusions for UVDAR simulation (NOTE: THIS REQUIRES A BEEFY COMPUTER)', [f450, f550, t650, x500]] pos_file: [None, 'Load positions and ids from .csv file with format: [id, x, y, z, heading] or .yaml file with format: [uav_name: \n id: (int) \n x: (float) \n y: (float) \n z: (float) \n heading: (float)]', [f330, f450, f550, t650, x500, eaglemk2, brus, naki, big_dofec]] +enable_qorvo_dw1000: [False, 'Add Qorvo DW1000 UWB transceiver', [x500]] +uwb_id: [0, 'Set id for uwb ranging', [x500]] pos: [None, 'Specify spawn position of the first vehicle in format [x, y, z, heading]. Additional vehicles will spawn in line with 2m x-offset', [f330, f450, f550, t650, x500, eaglemk2, brus, naki, big_dofec]] enable_vio: [False, 'Add a forward-looking fisheye camera and a high frequency IMU', [f330, f450]] enable_vio_down: [False, 'Add a forward-looking fisheye camera and a high frequency IMU', [f330, f450]] diff --git a/ros_packages/mrs_uav_gazebo_simulation/models/mrs_robots_description/sdf/component_snippets.sdf.jinja b/ros_packages/mrs_uav_gazebo_simulation/models/mrs_robots_description/sdf/component_snippets.sdf.jinja index a7225ba..3524996 100644 --- a/ros_packages/mrs_uav_gazebo_simulation/models/mrs_robots_description/sdf/component_snippets.sdf.jinja +++ b/ros_packages/mrs_uav_gazebo_simulation/models/mrs_robots_description/sdf/component_snippets.sdf.jinja @@ -1420,6 +1420,41 @@ limitations under the License. {%- endmacro -%} + +{%- macro uwb_range_macro(namespace, parent_link, uwb_id, uav_name, x, y, z, roll, pitch, yaw) -%} + + {{ x }} {{ y }} {{ z }} {{ roll }} {{ pitch }} {{ yaw }} + {{ zero_inertial_macro() }} + + 10 + 1 + + {{uwb_id}} + /{{ uav_name }}/uwb_range/range + {{ uav_name }}/uwb + -150 + 0.1 + + + 6489.6 + 6240.0 + 6739.2 + 14.5 + 2.5 + + + + + + {{ parent_link }} + uwb_range_link + true + true + +{%- endmacro -%} + + + diff --git a/ros_packages/mrs_uav_gazebo_simulation/models/mrs_robots_description/sdf/x500.sdf.jinja b/ros_packages/mrs_uav_gazebo_simulation/models/mrs_robots_description/sdf/x500.sdf.jinja index 94dbe4e..2f1df56 100644 --- a/ros_packages/mrs_uav_gazebo_simulation/models/mrs_robots_description/sdf/x500.sdf.jinja +++ b/ros_packages/mrs_uav_gazebo_simulation/models/mrs_robots_description/sdf/x500.sdf.jinja @@ -80,6 +80,7 @@ {%- set realsense_mount_mesh_file = "model://mrs_robots_description/meshes/x500v2/realsense_mount_mesh_file.stl" -%} {%- set bluefox_mount_mesh_file = "model://mrs_robots_description/meshes/x500v2/bluefox_mount_mesh_file.stl" -%} {%- set uvdar_mount_mesh = "model://mrs_robots_description/meshes/dji/f450/dji_f450_uvdar_mount.dae" -%} + {%- set qorvo_dw1000_mount_file = "model://mrs_robots_description/meshes/x500v2/qorvo_dw1000_mount.stl" -%} {# #} {# Scales {--> #} @@ -542,6 +543,24 @@ {% endif %} + + {% if enable_qorvo_dw1000 %} + + {{components.visual_mesh_macro( + name = "qorvo_dw1000_mount", + mesh_file = qorvo_dw1000_mount_file, + mesh_scale = mesh_scale_milimeters, + color = "DarkGrey", + x = 0.0, + y = -0.01, + z = -0.078, + roll = 0, + pitch = 0, + yaw = 0) + }} + + {% endif %} + @@ -1099,5 +1118,24 @@ {% endif %} {# #} + {# Qorvo UWB {--> #} + {% if enable_qorvo_dw1000 %} + + {{ components.uwb_range_macro( + parent_link = root, + uwb_id = uwb_id, + uav_name = namespace, + x = 0.0, + y = 0.08, + z = -0.10, + roll = 0.0, + pitch = 0.0, + yaw = 0.0) + }} + + {% endif %} + {# #} + + From dec957fb537ce3df1383801ad50c752b413d68ee Mon Sep 17 00:00:00 2001 From: Vit Petrik Date: Wed, 4 Oct 2023 15:22:00 +0200 Subject: [PATCH 2/4] Moved *stl file to correct place --- .../meshes/x500v2}/qorvo_dw1000_mount.stl | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename ros_packages/mrs_uav_gazebo_simulation/{config => models/mrs_robots_description/meshes/x500v2}/qorvo_dw1000_mount.stl (100%) diff --git a/ros_packages/mrs_uav_gazebo_simulation/config/qorvo_dw1000_mount.stl b/ros_packages/mrs_uav_gazebo_simulation/models/mrs_robots_description/meshes/x500v2/qorvo_dw1000_mount.stl similarity index 100% rename from ros_packages/mrs_uav_gazebo_simulation/config/qorvo_dw1000_mount.stl rename to ros_packages/mrs_uav_gazebo_simulation/models/mrs_robots_description/meshes/x500v2/qorvo_dw1000_mount.stl From c9fd92159587be608c18ec1b28bbc970ad92f7fc Mon Sep 17 00:00:00 2001 From: Vit Petrik Date: Wed, 4 Oct 2023 11:56:44 +0200 Subject: [PATCH 3/4] Added support for DW1000 UWB transceiver --- .../config/qorvo_dw1000_mount.stl | Bin 0 -> 130384 bytes .../config/spawner_params.yaml | 2 + .../sdf/component_snippets.sdf.jinja | 35 ++++++++++++++++ .../mrs_robots_description/sdf/x500.sdf.jinja | 38 ++++++++++++++++++ 4 files changed, 75 insertions(+) create mode 100644 ros_packages/mrs_uav_gazebo_simulation/config/qorvo_dw1000_mount.stl diff --git a/ros_packages/mrs_uav_gazebo_simulation/config/qorvo_dw1000_mount.stl b/ros_packages/mrs_uav_gazebo_simulation/config/qorvo_dw1000_mount.stl new file mode 100644 index 0000000000000000000000000000000000000000..b2a123dee037303ebb5febf1f46d8fca27349141 GIT binary patch literal 130384 zcmb512Xs_b_x9-^NbjI@G6^NLgrYE)j0hG$P>LWO6%c7s29**(kX{4QnFr{5tkR3?TIJuU-e|$rFH1e#x>mx}%--3hwfEoqUx@pftfEGlzUNk) zkHe!i{WSx%t%c=dt;4C89p`}rA63owOyA8_=g7yk9x+z8?_;c}hZ7wHTH!gF{@2b` zwPt6pYt^gQ&YQo~Ms=-Pul`vb)lkdyW!wI993HLdf3UE+^;^AIE7yy!xXwceK0^OO z(|0iGA{|w}i#4r{2V<<1T4h{>Sm8OD{Bwt!6`9gjn%W z$vK(+JA+GEp6RjHaC3(@%RgVJqk8A_YjK;&>hk8GZ_$w(ad@<*zuSOktlbr3Eo;MO z$9W*ZpYQbw`U>>;jgIQU&GJ^4^D$Pd(JNhqSm8OD{<78cS>xZ2wG#K8_tvS4V`c+?yr;lKBoFA zFUjJ=qc#0aUi&s!=TwZfZ(T9Rc_6W!d@wz&Rc4>*AGG#Na8Zd^tNyeC4g#(CJYH;& z>hm_rM8vc{>w;a#N4;mu8u-0>X&4$OX z#aLw?#2Ba`v3AHTMO1l_iK@G!8=a^eYt5VyW1xb>k5gu=qta)-tF75+$cY#$@9H`Z z0LbC0j?_U>7{qo{2!dcKx{3KAdGpP_u{JDB;$GTxu4AFO_$rh`DMCygg6 zAG-##kJ;_od&d`zwSGvgW}t#Z-p5mv5B=gu6!%E!cA{Orzn zdz!cSuQ684z6b*qB))z$N)bOC=QpbP@C5Jm$XIK{tx5(eNbI=A=dsJjEr#ho`O_Nj z565GyyGP182(+58YnbveV_O#TF`(2=@0u7o^WCKkRFJrzb%OH2ZKdh|=lnizw=*%; zD1UJWfmWTb_g6md4dB+NRQ(IyJq2Q|Plx6+P(flrN4{3OeB4XWb5-GzH;Lja^H^R7 zfmZ$I^-@0i{qux~<0tQXCtZ%Q%GJthpn}AeBi$5{WO7SgTwoE8I|ek{`~rA2Z2_-@4lpby!Jg`t9gNH##7Xv&yQ*E zMFoi#!-py#9BZ5YOiQAT8|PxIw$0)k1X?8xYpQ%iwdFW*&eOGxW;tT5@5W{EqJo6c zc!=`BqYTskYw6m?dzoXc_m*dN5NP$=w@s9fhdcPF8V`su{-&sJXydVsP(fnt?H3f$ zqR?3)JmX^wZ_QY%_?GBKs35WZ`@!m{^cd&cda*`+y1Er={1J-;TCEBBNPC+{ERp1+ z5&0;wCE7#<3Go;I)+r*I(0SaU^H}H|>mbnTm(ZD)+I5VGzv)`_rfW5JS>_-rNGuKA zj~nH`BVs1qk5}k^92}P=hzb&NZ%X7kPDDYv=hx|;4{93cAkeBy=(*avY(Eim>AA{H z&(&u!?SrTwA`ub=GfmZh$>-XcacMlOe>HR1}???6_2|-klkawl) zwu3}Gq<1ii-oa^emN*EsS`>O~1G#n+QH|d7f%KkNsk|eI3KHLk+L963cM)-$+LEuR zExFKSXAl)6q+MBhg0I#0)L!MI_9}YVDF=a8n?r5l!A9GNkT$Vq-U~rgkdXG#TV)>+ z&xP9EJa_+a5NLHM)V9C3eG?J2s7?QZ+IIRkhzb(Y&ez!Y4H2GG_q|i7|F~B(tAzww zy%FkhR*wFXh$+-Zt)f0^!Lhs+DoDhI`oZ#_ttX;5^@IDU9~?h4pM?q%(kFJ>m_o!` z7xsC(QeWG}U)({URqs%L{zvvNi0B{c&%fVY%0dMR>Dy=gWf9Tnyp9>p94YG{&?+Gm zm%MdsH4!Z+F1bc=$;exkEL4z?7^T&;AQ2BK_9;oR&olcX90Xc@ABvXl{}&*l`_j(d z>=a*p@pd%}6(s%$#c;D`BoQ%#Vz`ME!<|m8W}$+F#B+zHm_%F;#fjw))N~MN)h-l^ zmYkGG#5RgWN9$PBLInwlOZWcCZ&X5i9q(paUB^M7)xuCr{pIhgh^S66^>K=+XV0LP z6ci-V<7@UYY|_n!Cn#<&^}tD>Rhdwvzho!-n0Pg>Is0~u_2mVM_CY}+HZ=Zt;T{vK zX#8=H#vgqb#aO5yA!8AJ<|)VZ7$?_|It~J@qC?}TDvSB*$~Y?Fr&<;&NXVE<-@yUn zD+RqYRy*@iO$UKigG1xN`)m0rsZZm<-ZUPZxTTtf3KB9l3_ZKmdj@yXm~-O8sty9J z=7dJ6qbeqokCdD~KxuuusnIL|QZ(MBRl=eQ8`Hi)&BwauppQIL?#i*Bh`OuiT#PCaL*19=?; zT75xB#TlJ(Ild+zV=0TXl(IO#?Z|DR5>9Y_X5KySKYE3-IAs>)RD>wu1ZQyy9oa&} zf8X2-4xyg&ufEw7Aqo=f_*#9t+n0Yf_k$On`7antQAYmg%oZx)1n0{J#qA)XMkuSs z|1u#85|UNZJ?9+Cs-35-THcxeI0&@jZ{n=lzkRt)e3`OpuToa+)r4z`5Cw_#L~w4g zbw`deI0N|!WgwIGoe!ddgk&If%utLnkOe6Nc{k|?2Z2`nO`L%&U5tC@8`X%I=*_IvbFmtTU&MGW(R>*{7syP zy9Ryl!q@&`Tb-zW2$VW0|w#QRuJMT+Ff~bTOoY}r>a`f7oW&vi45^I-HgeXYxj0w+$>^{YD z`|C7gvY2K}=1t8ULzo8yVHVf) zS12$}5v>O_^`L^8Tl7u&t7{Du5qPhehOUC=1Zv+{rd++)cvW2gFq|HewzM0p64UjN7O5= zJg8v)(s@+Fc73XdPSxLV_&@?Plcs;egUyQYC$@7CXoZK-pYx~=KR-he zyJJ3f_&@?PdZvHxt*weMN=$GNXodMX)Bob7yNX!Qd5#Aa%&<9+s`^v+mhiPIQR{h! z4ig;7y`cAgYoy^2{`x6}mT2(WAiWsLd zkj-~%A9a@e6^Y-Ac|W90f5lpn>Zm^d{B9&FNVM+KK>5g`@`?3gG%>K=$V60-z#O3I zFIKXu^09A!d}SoiYFnYY%11+$Pb?84D)wkp85Jb% w`Vk$e>`mO59N0ZA&A}UB= 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 F{vS)*#-;!O literal 0 HcmV?d00001 diff --git a/ros_packages/mrs_uav_gazebo_simulation/config/spawner_params.yaml b/ros_packages/mrs_uav_gazebo_simulation/config/spawner_params.yaml index 10883ed..902c80f 100644 --- a/ros_packages/mrs_uav_gazebo_simulation/config/spawner_params.yaml +++ b/ros_packages/mrs_uav_gazebo_simulation/config/spawner_params.yaml @@ -48,6 +48,8 @@ enable_back_uv_camera: [False, 'Add back UV camera on the vehicle', [f450, x500] uvcam_calib_file: [None, 'Specify UV camera calibration different than default one', [f450, f550, t650, x500]] uvcam_occlusions: [False, 'Enable occlusions for UVDAR simulation (NOTE: THIS REQUIRES A BEEFY COMPUTER)', [f450, f550, t650, x500]] pos_file: [None, 'Load positions and ids from .csv file with format: [id, x, y, z, heading] or .yaml file with format: [uav_name: \n id: (int) \n x: (float) \n y: (float) \n z: (float) \n heading: (float)]', [f330, f450, f550, t650, x500, eaglemk2, brus, naki, big_dofec]] +enable_qorvo_dw1000: [False, 'Add Qorvo DW1000 UWB transceiver', [x500]] +uwb_id: [0, 'Set id for uwb ranging', [x500]] pos: [None, 'Specify spawn position of the first vehicle in format [x, y, z, heading]. Additional vehicles will spawn in line with 2m x-offset', [f330, f450, f550, t650, x500, eaglemk2, brus, naki, big_dofec]] enable_vio: [False, 'Add a forward-looking fisheye camera and a high frequency IMU', [f330, f450]] enable_vio_down: [False, 'Add a forward-looking fisheye camera and a high frequency IMU', [f330, f450]] diff --git a/ros_packages/mrs_uav_gazebo_simulation/models/mrs_robots_description/sdf/component_snippets.sdf.jinja b/ros_packages/mrs_uav_gazebo_simulation/models/mrs_robots_description/sdf/component_snippets.sdf.jinja index a7225ba..3524996 100644 --- a/ros_packages/mrs_uav_gazebo_simulation/models/mrs_robots_description/sdf/component_snippets.sdf.jinja +++ b/ros_packages/mrs_uav_gazebo_simulation/models/mrs_robots_description/sdf/component_snippets.sdf.jinja @@ -1420,6 +1420,41 @@ limitations under the License. {%- endmacro -%} + +{%- macro uwb_range_macro(namespace, parent_link, uwb_id, uav_name, x, y, z, roll, pitch, yaw) -%} + + {{ x }} {{ y }} {{ z }} {{ roll }} {{ pitch }} {{ yaw }} + {{ zero_inertial_macro() }} + + 10 + 1 + + {{uwb_id}} + /{{ uav_name }}/uwb_range/range + {{ uav_name }}/uwb + -150 + 0.1 + + + 6489.6 + 6240.0 + 6739.2 + 14.5 + 2.5 + + + + + + {{ parent_link }} + uwb_range_link + true + true + +{%- endmacro -%} + + + diff --git a/ros_packages/mrs_uav_gazebo_simulation/models/mrs_robots_description/sdf/x500.sdf.jinja b/ros_packages/mrs_uav_gazebo_simulation/models/mrs_robots_description/sdf/x500.sdf.jinja index 94dbe4e..2f1df56 100644 --- a/ros_packages/mrs_uav_gazebo_simulation/models/mrs_robots_description/sdf/x500.sdf.jinja +++ b/ros_packages/mrs_uav_gazebo_simulation/models/mrs_robots_description/sdf/x500.sdf.jinja @@ -80,6 +80,7 @@ {%- set realsense_mount_mesh_file = "model://mrs_robots_description/meshes/x500v2/realsense_mount_mesh_file.stl" -%} {%- set bluefox_mount_mesh_file = "model://mrs_robots_description/meshes/x500v2/bluefox_mount_mesh_file.stl" -%} {%- set uvdar_mount_mesh = "model://mrs_robots_description/meshes/dji/f450/dji_f450_uvdar_mount.dae" -%} + {%- set qorvo_dw1000_mount_file = "model://mrs_robots_description/meshes/x500v2/qorvo_dw1000_mount.stl" -%} {# #} {# Scales {--> #} @@ -542,6 +543,24 @@ {% endif %} + + {% if enable_qorvo_dw1000 %} + + {{components.visual_mesh_macro( + name = "qorvo_dw1000_mount", + mesh_file = qorvo_dw1000_mount_file, + mesh_scale = mesh_scale_milimeters, + color = "DarkGrey", + x = 0.0, + y = -0.01, + z = -0.078, + roll = 0, + pitch = 0, + yaw = 0) + }} + + {% endif %} + @@ -1099,5 +1118,24 @@ {% endif %} {# #} + {# Qorvo UWB {--> #} + {% if enable_qorvo_dw1000 %} + + {{ components.uwb_range_macro( + parent_link = root, + uwb_id = uwb_id, + uav_name = namespace, + x = 0.0, + y = 0.08, + z = -0.10, + roll = 0.0, + pitch = 0.0, + yaw = 0.0) + }} + + {% endif %} + {# #} + + From 181a56c99607af7879d6328a13fb9e7464db7ab0 Mon Sep 17 00:00:00 2001 From: Vit Petrik Date: Wed, 4 Oct 2023 15:22:00 +0200 Subject: [PATCH 4/4] Moved *stl file to correct place --- .../meshes/x500v2}/qorvo_dw1000_mount.stl | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename ros_packages/mrs_uav_gazebo_simulation/{config => models/mrs_robots_description/meshes/x500v2}/qorvo_dw1000_mount.stl (100%) diff --git a/ros_packages/mrs_uav_gazebo_simulation/config/qorvo_dw1000_mount.stl b/ros_packages/mrs_uav_gazebo_simulation/models/mrs_robots_description/meshes/x500v2/qorvo_dw1000_mount.stl similarity index 100% rename from ros_packages/mrs_uav_gazebo_simulation/config/qorvo_dw1000_mount.stl rename to ros_packages/mrs_uav_gazebo_simulation/models/mrs_robots_description/meshes/x500v2/qorvo_dw1000_mount.stl