From 7afd85e2c6777d79927e9a977505c502f578a829 Mon Sep 17 00:00:00 2001 From: HiepLM Date: Wed, 11 Mar 2026 03:26:15 +0000 Subject: [PATCH] update --- .gitignore | 3 + CMakeLists.txt | 16 ++++++ config/config/obstacle_layer_params.yaml | 1 + config/costmap_common_params.yaml | 37 ++++++------ config/hybrid_local_planner_params.yaml | 54 ++++++++++++++++++ examples/NavigationExample/NavigationAPI.cs | 4 ++ examples/NavigationExample/Program.cs | 7 ++- examples/NavigationExample/libnav_c_api.so | Bin 300144 -> 301968 bytes src/APIs/c_api/include/nav_c_api.h | 12 ++++ src/APIs/c_api/src/nav_c_api.cpp | 37 ++++++++++++ .../Packages/move_base/src/convert_data.cpp | 41 ++++++++++++- .../Packages/move_base/src/move_base.cpp | 4 +- 12 files changed, 190 insertions(+), 26 deletions(-) create mode 100644 config/hybrid_local_planner_params.yaml diff --git a/.gitignore b/.gitignore index cfac8dd..0e1d37f 100644 --- a/.gitignore +++ b/.gitignore @@ -421,3 +421,6 @@ FodyWeavers.xsd build install devel +obstacle +/pnkx_nav_core/config/hybrid_local_planner_params.yaml + diff --git a/CMakeLists.txt b/CMakeLists.txt index 2a0f509..8d5303f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -134,6 +134,22 @@ if (NOT TARGET pnkx_local_planner) add_subdirectory(${CMAKE_SOURCE_DIR}/src/Algorithms/Packages/local_planners/pnkx_local_planner) endif() +if (NOT TARGET robot_angles) + add_subdirectory(${CMAKE_SOURCE_DIR}/obstacle/angles) +endif() + +if (NOT TARGET grid_map_core) + add_subdirectory(${CMAKE_SOURCE_DIR}/obstacle/grid_map_core) +endif() + +if (NOT TARGET robot_base_local_planner) + add_subdirectory(${CMAKE_SOURCE_DIR}/obstacle/base_local_planner) +endif() + +if (NOT TARGET hybrid_local_planner) + add_subdirectory(${CMAKE_SOURCE_DIR}/obstacle/hybrid_local_planner) +endif() + if (NOT TARGET robot_actionlib_msgs) add_subdirectory(${CMAKE_SOURCE_DIR}/src/Navigations/Libraries/robot_actionlib_msgs) endif() diff --git a/config/config/obstacle_layer_params.yaml b/config/config/obstacle_layer_params.yaml index 8fa749a..af1fab9 100644 --- a/config/config/obstacle_layer_params.yaml +++ b/config/config/obstacle_layer_params.yaml @@ -1,4 +1,5 @@ obstacle_layer: + enabled: true track_unknown_space: true transform_tolerance: 0.2 topic: "map" diff --git a/config/costmap_common_params.yaml b/config/costmap_common_params.yaml index 429860c..39116cf 100755 --- a/config/costmap_common_params.yaml +++ b/config/costmap_common_params.yaml @@ -1,4 +1,5 @@ -position_planner_name: PNKXLocalPlanner +# position_planner_name: PNKXLocalPlanner +position_planner_name: HybridLocalPlanner docking_planner_name: PNKXDockingLocalPlanner go_straight_planner_name: PNKXGoStraightLocalPlanner rotate_planner_name: PNKXRotateLocalPlanner @@ -26,23 +27,23 @@ virtual_walls_map: lethal_cost_threshold: 100 obstacles: - observation_sources: f_scan_marking f_scan_clearing b_scan_marking b_scan_clearing - f_scan_marking: - topic: /f_scan - data_type: LaserScan - clearing: false - marking: true - inf_is_valid: false - min_obstacle_height: 0.0 - max_obstacle_height: 0.25 - f_scan_clearing: - topic: /f_scan - data_type: LaserScan - clearing: true - marking: false - inf_is_valid: false - min_obstacle_height: 0.0 - max_obstacle_height: 0.25 + observation_sources: b_scan_marking b_scan_clearing #f_scan_marking f_scan_clearing + # f_scan_marking: + # topic: /f_scan + # data_type: LaserScan + # clearing: false + # marking: true + # inf_is_valid: false + # min_obstacle_height: 0.0 + # max_obstacle_height: 0.25 + # f_scan_clearing: + # topic: /f_scan + # data_type: LaserScan + # clearing: true + # marking: false + # inf_is_valid: false + # min_obstacle_height: 0.0 + # max_obstacle_height: 0.25 b_scan_marking: topic: /b_scan data_type: LaserScan diff --git a/config/hybrid_local_planner_params.yaml b/config/hybrid_local_planner_params.yaml new file mode 100644 index 0000000..408042f --- /dev/null +++ b/config/hybrid_local_planner_params.yaml @@ -0,0 +1,54 @@ +LocalPlannerAdapter: + library_path: liblocal_planner_adapter + yaw_goal_tolerance: 0.017 + xy_goal_tolerance: 0.03 + min_approach_linear_velocity: 0.06 + +HybridLocalPlanner: +# base_local_planner: "hybrid_local_planner/HybridLocalPlanner" +# HybridLocalPlanner: + library_path: libhybrid_local_planner + odom_topic: odom + # Trajectory + + max_global_plan_lookahead_dist: 4.0 + global_plan_viapoint_sep: 0.5 + global_plan_prune_distance: 0.0 + global_plan_goal_sep: 0.05 + + # Robot + + max_vel_x: 1.0 + max_vel_x_backwards: -0.2 + max_vel_theta: 0.5 + acc_lim_x: 1.0 + acc_lim_theta: 2.0 + turn_around_priority: True + stop_dist: 0.5 + dec_dist: 1.0 + + + # GoalTolerance + + xy_goal_tolerance: 0.05 + yaw_goal_tolerance: 0.05 + + # Optimization + + # PP Parameters + w_vel: 0.9 + w_omega: 1.12 + # DWA Parameters + robot_max_v: 0.4 + robot_max_w: 0.4 + enable_backward_motion: False + w_targetheading: 1.7 + w_velocity: 0.2 + w_clearance: 0.2 + w_pathDistance: 0.05 + time_horizon: 3.0 + velocity_resolution: 0.015 + + segment_transition_threshold: 0.01 # Ngưỡng khoảng cách chuyển segment + calibration_factor: 1.5 # Hệ số hiệu chuẩn + use_obstacle_avoidance: true # Bật tắt tránh vật cản \ No newline at end of file diff --git a/examples/NavigationExample/NavigationAPI.cs b/examples/NavigationExample/NavigationAPI.cs index d7ed979..1becdc2 100644 --- a/examples/NavigationExample/NavigationAPI.cs +++ b/examples/NavigationExample/NavigationAPI.cs @@ -140,6 +140,10 @@ namespace NavigationExample [return: MarshalAs(UnmanagedType.I1)] public static extern bool navigation_move_to_order(NavigationHandle handle, Order order, PoseStamped goal); + [DllImport(DllName, CallingConvention = CallingConvention.Cdecl)] + [return: MarshalAs(UnmanagedType.I1)] + public static extern bool navigation_move_to_nodes_edges(NavigationHandle handle, IntPtr nodes, UIntPtr node_count, IntPtr edges, UIntPtr edge_count, PoseStamped goal); + [DllImport(DllName, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)] [return: MarshalAs(UnmanagedType.I1)] public static extern bool navigation_dock_to(NavigationHandle handle, string marker, PoseStamped goal); diff --git a/examples/NavigationExample/Program.cs b/examples/NavigationExample/Program.cs index e088a7a..a483249 100644 --- a/examples/NavigationExample/Program.cs +++ b/examples/NavigationExample/Program.cs @@ -405,8 +405,10 @@ namespace NavigationExample goal.pose.orientation.w = 1.0; - Console.WriteLine("Docking to docking_point"); - NavigationAPI.navigation_dock_to_order(navHandle, order, "charger", goal); + // Console.WriteLine("Docking to docking_point"); + // NavigationAPI.navigation_dock_to_order(navHandle, order, "charger", goal); + + NavigationAPI.navigation_move_to_nodes_edges(navHandle, order.nodes, order.nodes_count, order.edges, order.edges_count, goal); // NavigationAPI.navigation_move_to_order(navHandle, order, goal); NavigationAPI.navigation_set_twist_linear(navHandle, 0.1, 0.0, 0.0); @@ -493,4 +495,3 @@ namespace NavigationExample } } } - diff --git a/examples/NavigationExample/libnav_c_api.so b/examples/NavigationExample/libnav_c_api.so index 80acdbdaec9cc1c60e74ed8db3f0d36f4191f760..d225bf1d7809f73ec8759fd1b8f9f929cc161676 100755 GIT binary patch delta 77177 zcmafc30zdw`~IA(C@L_6paTdxC@Q!CmIf*cDLNDuZi%^}=AKE3M!5_nB;!b;H$Aqf zm@QVCm>QHDiij;L?wXpoq<6vvTNE?p_ndpqh2h%w{~teh?m5qU-uFD`J^Q(rv2sJx z+=8aLp;E5AtV8$45uX^;PsAt7rgdo?_5o32VIM5}xJz8wGA`5Z1{067G!1Z-|1POO z`9F2-s%5xX}U)}6;79<$&uhGnH<&M(>%Ctnj9uQ-}-;$U}?rvS(?co zNWFdOoAthmY4`ex!aYx2YxLKho{`@jpCaFok|huSt^MouC!^m+@`YT*un6~TTy|Vb za4p5f3M%7bpZ9RB#6?*|d{&A32jc#rxUa^2jT|SLZFvZNEYS7h{;9ZshWi(|zQVN$ z*JfPovxVOb-{8JYgty~ffU6MKcLLjq`yO0HBEC=D_lx@hgTZDf6_Fos{}IlTaP za~szkTz}&F3)fv-|KMVu2e_(n5j3rOxa#v}$V3J=moSSrK)j*A+%;Jo1dR}BjLQp` z2^ahL;NA>Zb6jRzez>%cKf-~yf^fAW@{bJyqT9HLS+Wqs+u>@DD->54t`4}^rz7s2 zaCN~IE_*km^*aST(Q@mCh9{)08I7X|*)QMmFmEkuVj(0*jx?HOch5?4P+n#-<0pAh0NJ9FiHxlyxl|GXS7HM?=KJBB`{TqF-_X0}-( zxkJ8gz@@iBxo%zo*BT-m+xsb29VSE4LJs(dyjU}5)=~rqty;$;8N(|D-e07*ps_GJ z20pmHXh;@<`Xb}9Z9L;rk@2U(LuJP~{sO-lvV})4oa6=yg`Jodyxq9Van0M?B&1^P zB*}-H`$uShE~?QI#_@X%xw-{+Mmv89PdHpy{R7c;XpI>Scm;`R#^A5IrMaO{hfjqc zkZ%h^?r+?}X_0Yz_?cy3Ns@nW-o;k_8^^zg3wp@P>L9j_)`dHV7=HGM}zw#ay;Xz;23as!J*L!58q3b9k=edaDUljtYf zT(Cm)-UwaqozO)1y@H#YE{gxNXt{Z!8XJi0gF5i^Sr26I)M00zF z4@3tklHc+(+fpZSwPK+*Hb@jx3^tKMtDnfeTntXy^mi_Tr;q5(4R{JWlSEI-W%Z8_ z8`#;$2|u%Dm71U?v>9SJZs-Jmu;!ijHn*VBP3^`r$REIQ(Z~%IX5LyW>vMnm2|Hi> zkMyyfc*cgyoJmvF9GpE%bdySXoxk~+R59&E3BL73?PlEP_MM!CVXdbqw-{G{5o5$d zv~TA2l-Fb_pi5**Iaj+Z*ews{;@q~}4x854XDAB6#%!xRF2HQdcjIN!My?<)K7+}`@Fr}%w1va0{SkqrieDI+3^!aHT=vIYI8z}@J;GP6_@V?c-!)dd73sD z=h^`?ynA6d9(%7WE| zwwfi|T;b8m89c{dM8;ou3s1knfkaUQ*Kk+IiRU@4Ekn9#_;YpfVJIL=U(P#<0p-DG zy1_6EHzqKMffzkN{md5Qq(xUtH_%tq5{oXVO#ml_*Hh2%jQxctenb;u>5Jr71I-Ef z$y_=|NS_hIU1}1?UlF-C7vryf*3U+NU~G%zqk-mt6j2!XNd0^Tt4tc3C`& z*Lv*G67DoNkxQ>>xnP0CnqPiAH}gOgucc^rDWctB+)_UqMHibQM_Mo(iZNen%tgqPIVF#6 zZSdK`tKRU7n9@_kl+Jsy!EoBbb5Cu}b6=@y84Lr&9FF4aJ$cYg$d@uiDY1e3&SVA0>gM-cf`U!gx+MwzSc~G!k}6ptLrh5Rg`HPnP_3EE^5WKA{L4ilFwm)=bkX$- z<)f|5{$<~Aw;$s-!)Dyqp@^w6X=C=+FEj?JO{KXZSB`9BPRQ`)g!T#DZ!u!Aj8g+R z-a`Xeay{dzmvCEeIVJ z6L*q4H6+|-`kkB6+VNsvZq1U-@l}FuwrKZxe{x(a_Orpfjb)3G8I`YoE{i4A%2Pb9 zwY@8%co9FSb~@G^A#4*~&l8K(ZlX5Q&=6R;BSy+kx9t*XYQqV=DtNst+)_54^U`Me zrJ|G;d0ks`f?+q8iY96B5T%K@!EvqhF=D9A6{CSR)cQ2xm6$J+c4q&iTXnS#32WGp zL#m%AcL;|0@;FFMqIqizgGPd9k-V&(ndEQ%qTSS1GVLEFC-i?#ZrcB;tw;KM8R@9N z`tD6$nfcPhSz{-@GJq<^+xGHaCI4|Pk)VRB$Ld1`6o{s*|(D09lzgk6Y zFxbH0)`OEs3tNsEuD-z+arPnj_l`(xL40<=RJ6=`21|{+fnkl1v-ICATZz%m%g{;K zdrysf7@iXGZEC!U;b{@~oobtkHqzKIPyjpwH#Gz1l{9~rp=1~iIs0g*lVGWSQqS_c zB2FzeyizpXN*$hhny0VQa2t;sQqG9L1Kv0_L%9NX*WnQ&V?P~k73&g<4li5D+g+#* zw^a&3gicT{@F*Rg|2{VqtH(d#c#;lJ5rmR;coDa6Go;guirx;Uf5-QD?Gx18g)n$D6W+NPpYNEL)Cb+|^TN{2@XLWYNR$Gv<($W#aK ziFrye@~a~-7-9t>iw@5aghJ(`)6KRBoitWtAEm=nMfO%59wl;5(%}&z_hcQOD{@ca zxO{rLw{40pO_Jb{s>34$hYTH_BsgU2aEsuOtHbjIhgBR`IppcmqzDchba>@D-YyDt z_!PmRNQavQhl4siUvMbnxXR&-E={W7P_D!C1&2x2QPKV0cuwNfikW?i{ae z%Uats=@c>qAwM0SDhP$@@Ku6PgbuG$cJ=LCB=T^93P49c~hYEIM2x6sp6^1fd9 zp;8da)8YAoP`(b26@&_Pc!nTUq{CxXLTG;nbpp*rWjfsOA@{@?9bUFtG)5hsEC^NV z@Kiylis7vNYgLdWT*UTP?4#itA$J{a5`;`TJmO1E$fCnj1))$ETDHvfDuR$ zgran~MkrQ?TLdAi4zK)z6H353g&k%$*=x~itz7CHSgbFpBmmhP0V02IuF#qFICl9K2p%fjSF9@aTa6@D6v2;By2xYk9 ztp1Axqik0JaIMaAb$Es#v`UAk3PKxnxSt@Dufr?fBYgfZ)CtN2p&}iw5jv>Da|NL? z9UdVFmFsaqNFk#C*Hi%*u}`H=pxoY^8_Jx9bWl4x9?Yji~eU7j4U+* zm4~5B5DL}dm4Z-&4%a*srNi?Dp;$d`6O58{f)qh0S%()1LMb}jAh!2Ybht(+RfiV| zLbi0BAXN~`*5T=bP_7Qo7lc;naFZaEr^7Wu8#rFO{x1`Z@^uOkf>4nT&lQ9Y>hL^4 zs7!}j1fer^aMZuXsJxB~f!%GTi~K`2*;M+icBI=r&6nEyBE1Sx`0z8)8Z3U#!aQw5<)9j+0o(%}(;kU>0AuUY@+3q~d( z(AtDW5c1REv4W6Ahi3>vp*mb66j2wq8Da&asJa3}svu<5;ZcH6k`9j$gpzf5t{{}6 z!#N?ezbQIFk|30-!y^Qt3>}^%2xaSViy)M%!}A28RSX}6cCNWvb5Wj7Aw>|{pu;P* z!+vo@soBY!#5c231IUyj+LJPUGpTI9@xz zmkWVO?5#Dr8PmB!s1CQh%<)(qUL^2j9iB3Sr%$bevjOH6F37GUz{$SA^K^LZOrE|_ zhnEYyOowNr^7M)hx3EW?>Hw#$nbkoJ3qJAe(@%$|yv7Yh=y1a=fS z@Ypwa`Y0V+skG zJbjf-Cny&JlNdELPh<$9p*q}>!41Xg@FIaH>+qDfc={+`z6$ZyGSGm0dGA|hIeCeP z{O?;HayGx?CH6Z&E8p_-FBGE;o1k(8Vg;@ z^~%*)vWS`FWtnC<8?lcvJxHt?D-^L*HKvGIo*MJZag$5>o!q{>ezCVypU8(7H0!z$tmBYi$3DhJ9FY)QNk%dH>RW90!i{1to{6~h%N8j@CZ{*^e zB9|1Kc|K@m*RQV3#+3I(m`dz4gm#N>1`i)`bT{H1hzcHvF zY*oK8q#&HGeq%sEc!TNf@xgx%#=mzptDvhOJMJ4yYXqJC$n->cN`eD(XF z`dzMmSE=77d0eiUgsR`M>UXmGovMCktKWI*ccJ=?7k`mnQNO`|naUsE;E!+c$2a&d zGxsiX@!Dn=Z&v;f+)w;v4y%LB2Km-|%_Cja4!WoXvozvU=7I;x1D9hES?_INct7Wt2;Ti#sedS2mJgm%R99iQcJ>!DUbioxD{3{o{ z(gj~AcYe?8j~BygKJG5=s**>)XC@EiO?ESRTh2ksKWfq$3{fsA56ZhB4R@&wtBZ7o z9JJi*|IkHuii^}H2dyv%v~bZ)cac76ke^%8T%NbW!!z3jE|cf4Fv}ZPczCUHL4Aq* z^@`?_8<7_*Z!SG!kbhm#+~4A2xy&VTL)mksS?;yc!?WB4eL;>{Y4%*?!nIORs{SQv5w( z+mDv|H*+b5U(;Hn>*PZp4IumEW~&E~v+`(suarMs9qw;%NuTbLK1;s2+U(!nMVjp* zT`UK!2`8uJf%yJHp1;OSBzeV}0i;5{u;z8*BM)2qI{8IDv^Jc4B0pSfCfns^d1K|5 zKlboU_NnDmDd*%3AeZHn_%_Nx>%z$edEh#;{|7FP+2E4CP@cc;b${*6d6wvmi}Wqo z^W$*RT8_c@QhCP5X8#Xe?6`|1EOYP`c{S2Jk`H}6fZX32y#8F1<@rs>4_iI*r@PCa ze{b5lsPM%mQv7}SO7Re>vPzEHA1?j-k34n%5UJ0<^6ve?jV#vai?at`^u)j=7 zf_%Qitf74IS9P@#a=*IT>gX2|AxD;^NIk1%xn!aAswDdzI7$x4zaQvMZp*=?gQcnN z^6b*?_>0Yrr9-4{O=NPgn>5fvjyjlxzHL94WV1Tvg+#E7B9T#|{hspiAFyn{sQgli zY~t@$S35Tui6PN`TXFxhy1L@LvX=>Z{mt`_wdSM}WdW1y`P10)AFI7sF+m9yDt10* zyT7o#fSGW@gwyt_H#gqtj%s`&la!-`tZ>|T>pI4_v5f!I`0ud5h__}Ya+vXWA8tGL zwraZ(6J*x0eZU4rwakx8fvHdTTG2+VG zEa^j(3jVQ$m=vEY2GvqWk;eokKaAwgA~P{)Ufm`1%ay)NzMJbq{lrDCegnm0I88BM zc0ln@C@{ry;BLj;M<~u^iXUQBRR~j@=c1URDy|ob4xw0lljqoxDNb(<#VtUTPA-Zj zrf3@?6nhHASwis~QaXEvKye&XJdYA-REr>DHGDkLeqE`j>RnWNvQ(cz5?SON(++AK z81Si!nq8=!U}`_37_1U)^;xo+T<PhISE>@-pD~A*9)k+ItWxcR+u7X>c z#jNyZRzAVbN!brr>EmLgjbX>*PDiwK(N#1d|O^2OKe_=^P z#X05D?=Ue6twSRb3tc$FIjtIkzOws~2r^!dKGJR&YdX%$kARM2I_FiIVzeHoj@Gx8 zMa+XL#rX)aZv40Ejf+ZWrn3t9IFp{J?T3rxZAaQPFGkvmFKdU`tt`HjE(n$UZSSde zZY%Sk&%B+c-tQ?d3%j28kUcsU!;X$?Vj%^`qnPUxmWX-Bhb5r`lAaidS zCPn66_p}YnQ5ZJ3quQ{{S7_b{*v@RBol&c!XJT}T&2(U?L50fk`iK^JA*%~Nl`7sNig@#>AD_1onY8^tAyT*Bz9DcM_%n&sR zYYAUmXSuSL5Ds^+raM_dxsS0L+8PZvB(vyoltjzBKz1ArZvD6Fyz9z9=vS<=I{I>| zzXEoiWHp;9A3hprD^Qc&R`y(D#&0VWPDLgO3vZCL=anCz{2j(p!ya6Q$RcY_Gq1M@ zJkaePZpw>LQksEDeB@Q<&{!a=prH8Fl1Z?iQ2t`I0Jnanya_3iDwlycLy-Q@rs~99 zq8wGz+*YD*R?`h8sg13k;MGL%x`I;H@@mF-LEnYfiy11fzKqvrzk$U#m}I>2;(%Ob zOvl2h!byx*Yz?mikTPCf7_U^M|I=IW3KG1sZpd#QYik<=!^}(FUD(W4ra=9>S#{WK zvZ-tifRu9oD)QcjycwIxeStj1*nEQ$y0DR1jWaLR_KkAn;!H)~WKb$vnvE!j81@?L zuYZCIBRvv|PH&jy#!8fDR7CElt0N6dF0HA(#YzF#U6~AjB6DRe zOWl|mY}QXRSghP<>Y!HcW_7r&=ppAF?;raqioh~Vu&-pVh1?XksVHKYAk~iH=V~+~GW{W1~6_CPd#z>-*pRY(CRnSYoL-C;xst zz&3)Lsz9gyug)}kEW>$c&kU(#oj$sB_8>NyFXgRV8Gx!`KHQABbLIfHth%mz!zvlf zqj*8CuxQpzV`ea`2`InD68lzHx2RUmzzY>0urWn7&&Glh27M$)ob;1EkCvY~*{a92 zE6g{yto9PPF9Cm)WzCuIZe3VpvfASfN;;&*P~Q-%quFf85_0;5OhGPIN4G~&^7@k< zY{yVbE}mWw%8X?Tuux}{xS<0d< z+Fc9|76yL=JgJMZRVFOqXKGNl!>l=-C%zQJwRSRRJ7RuQjoiXO&;|nK8kDV$&NG1; zzl}F!7NvQkknV_PL>Xq+J76HAi&>s)U_7fR?Fxhr{7ec8`}17%5R}tyQr@~EZ#ord z+tEuhuq@m3R&%s2yy32d^IVg8u8H=`%4nYBHCPcjro*TWQ7uPnj@t%sLt<;G+iM81 zu?y69u#D|)qga7*Qp+G5jUf9V_+rcm9xioDR?&<;K!?>P7_0>s?sp#@H_CYmo@OQc z8Vs|FjG5_bKXs$s)zY1Lv!--8m*sV*&9)fmv-F8*A0RVZC39;u9QjR8$>5yLnnA06 zwT|}^=>vKC_}cVuv-I&=dTUOM9RLc=aBFl`S~K|L8lwS+H>xf-w#q;en;D9E04ZZe zs0!T%_mmUQw2(@=%Tvz;b!ZFFFuUV0>%y3Cx*=$_|CZ(frq_C)p8YRkV0Z~dJmB`Q zhn#<=qh%QgB&dVOA`vnv^F_!{nRP{ea3-#81OTgJuDjA+mGlbjYy_;C0 zOJ4gy@sP)z9paUa3=(rv2y5D-uE<+%_=YvV#5}y$>X>dxuzRUp@EjW_;KZITsavV3 zJDe@oQpYCPpL17}Zx_iQ{#tAN(q(46!-qA=Q;^)GChsGX?{P`KUQI5IE|-`6l1Tc< zzy8wBGgOtQgKIU|d!K98?EvHBm|+>1bu(=S8({vvz;fhC&WduNI=mC@|ENPjsUlz8 zI`Z6hLIP#)3(dOSWpo_R`dPDnFlOFSc^t9Y6EQU3IL9OiCD@A+9798*5^}H*!_K9+ zeCx;yr%1qzRAO*8#f&~lZ9j2^`13zhvgfc=`PqwurJ3dO+KaFH2A%~WyEF1wBm#@woBclA-~8Km%j8aJ&*BjF6w?# zE~}mNU*yj&w<7K31DAVC=_lm|S7u4;&&qSJ43xH=kbk_=O4@otuDBA66Hw2qT}YhV z>uQRWaYkNqHN0V~Q)ouhPRl2*MoTk~%f{d4O3P1gUGiIdBH2&M+pm?IOHU)SA+?#E zWVPDYDsQ~(->Lm^)<;-tR>x^8mqoF`j`hG<&_bt&f0c*FnRey5_PkM#(n#fMEbi^)gjf{N#);m75MHwJl~_?a~Y-m(kv4Csch^x9#0 z-i`KNb{EMERl>Y_Bh;(6i=Z`EIe$oQdb7RPpFho#2nENlQtTw7aKv@yj7|+f^kP* z3%X(`q-dp>4o`~S(%D7dTj(e0^nU;cX3Nq-nk&!!|grl)52!-_=iU1=G8 z_+TxEZ%}wPR|*EAyS&Uw;rJ>Sb&pPF%)~YrRd-u?&qXs`)!fT8(a~5#VBEXPJ1SEM zkpu5sCM~yC-}#h;W|!1v_cG{P?U^Bku&m`NN*yf!{AY`>c$dUsB60rXiGMvHoBnD! z^3ncU)0e^R@sfOWfR$u=s#=V-I4xwwD0NZ$N>$SrW8wkX{#XAoqg@il{ipp0jIZOX zGR;%xFqX3{+PG*o{Ld`*mdKs|-b#AOm;Nr479Nm4yt`ETqhxERdmj>McCq|JRlD%{ z#VC?vu1QJb0Y7Cr4_K7(JP@jk;DKZ%saS4#Ke@@>eQc(fZ&GgVli#{;ZgPUht;$dP zL^nhd6)^++q}(*l}Mk0iHzwveUjY0beF4%^NF>RxVPag@6C>_Yd{ zBZFh-?!ZvB9W#I!hQbc8DnI!x)0}N_<~?NPj5Vkkbo(<2GsXZwY>|fs>df0o2h}I* zn?-GVoVzb=C__8en0YVBEdR!xVtjFkZyG&gQZT-(}oSma%sqR z`e6goqGNa1t60u5R<{|}u*1q$P*Tqu_-qBAGoptI>7@pwnbh++TGaqWSH7eE4arxX zrfgAj6*b6apZ;o*>W3scrnsv;XnTF$yklr(L()8;d9B=}%4Z9?C$+ef<}I#mXD(6o z{Zu*o1TMKt8@bx7AM5_LhhIBMIGj2CGkm3~Rr zd68yqBdj^;p~?qp@iRl%IGpH6feWu1Gt2RN2CQy!)TAw>l+AQEQys!pX{8rw(6U`! z%}`bIIDV9bY5G%NBWW#N`$(z#mUleRJlIf(o=LX?I*6Qq+R9`zcR#(S42DlG& zOg3TMwqPPqZEe7BZ7^GBKc~aINjquXMmpac-LpA0Hzh62*T1T+hKf~9D~Iv4mp`M4 zO-UPR(^mzrHYLvx5=nRZkXFQ-p7$XiNOL}?>Aq+LLqDe<_>y2I^@VH9pVL#Ce1*9&u0bU&B$7bwH-W!mL9IBcknn^y0V@&@gv=(uh!GPen_`yJ)P`_ zT*t4cOZ-U7`cJQ~uBLfD@K~Gmbe9ilN$Szx{YV$-#K#2z{^YzQ-CawoS`bUa6Kmm* z=-YIyFA0>ktfjkH_H-?$Gk-0oGhr=t1d`UI5B)ljv>AY$pWaSevC z=!)5U5*?c|_#Bbe)aux-)~Nk;1hsoFsoJANR_%r(>&MEvRxLkgPW zOPZ6O^qU|O0w1lLb%gPn3nL*Z0Z?E^7%6P6 zgK+{|>&y_W_OZH0UHrR@OJf;;!%aUf$Joy0=Y^bg5PtZn>PKkuoy%y~4k-0|%L-oX zKnm(f=W?h|7x>DaLnn42?@PCqtPDq+`+12=oBLu3FZ9wSywJ0k@IsGVLS;Ohl%85b zHwTgc(t;ifCyCNw2em}7M(6ndH##KwAC1l-8XZ#9G`a}h=ptC7TTDqLI#1bR+LGP3 zE~Y&rF=Xd1reh+}_)-_s1?--*n6AN{M9^K4=;J1O0XM1AP9H^*Sn1X~Y@G8o=CW6D ztT~0{xG6gv1rxdwNs<=5Lnl8;MvzW)?~`P>bRvrebR*A6nOSsNH}V35yOHOm^O>}1 zcQQz_XVQt?$#4=;u&XxX`+qVdy=qGHXK?z z&*0#Pr%q+j#G2?h7JaoQI+#VLp3)NcWzlvu(I;7SD0W%gR9k=Q)r*8nn-|bNy~s1t zgay>m3#DvKuk-?eZS!f57%T!(=F@j^XWb-*ydZ6#N27a_K2q8|`ettuOS%^9=uHmQ zmp)0Oi~Eu>mIOS7b%y<Q{%Gi`y4w7HBl`U<;GNTZGcXqquJe*kGKnbXvKrN3s;jhje|R;RH?Wv3sZ?3gc#jjdh@ zINRk*x$kGuC#_JDXVH;X($13a0apZKx4>Pojzy1SanGa6Jqp%Y$vD!x2Tp^vNqo-h zwc&0q;jdi6ueyYjUZ=6o5OdSN>l1c96wA+$bKGv$r&FIHW2BqK^oM8AmAdYy#%D=0 zPq7!yx|`^53#VSslC+@jaX?-7*wB8@YCmPQ|L8pOGF|&DI^O1&>7Hj%JEQl}v(J(? zBP(aZ(e~S;oo46?lWGYZZZZ3CZl)fMHgvv^g4L{Og**uIVOIM?kw%$~G%&T>gx)&Z zNoUgGiD+}kcyl7UIOgF*(mtR+^5Y&VRRUhdNR-odu!Ljy1+P;4=IjRn`=()1uy+c< z_RpBPo^^kId^&A9-9L~_mM*2z&d-sc;E$opmTFjfbPB0htX!UfcutHDfvpCRO`_8W zl0E_Zrv49e(}cO1s=4rwr|Zly^Dt*%<{;xMWKr;4yH($rlUO1wF4OsacdT0Q9(3#T zq`x$Mcfo__iA1E^(`a=Pn$p2(wA~=mDfk0cLd-gYaYpa#j-7^jRJ1z+%53dBcN(2F zh=fT=)99K(B!c;E5Q&zqPNj_pqc0qoN<#;u(XX3I2M#6?(#)yUHkbrRL#EOX2b0jC zFcjFDbuKN?Y9AHi=bVF`1(v$1b;XmG4<^adwkfp75Hh^g$SJJMwa?Hdsn5{x=uDl` z&})W}z-|^b(cB1j{*DvKS+RIxp)}zjo?_t~0v)Fd1eTFFiM1{~K%6%xQ!f0u4kL@CH4|yl3mAdsO{A~AK-%;iK9P6j6xNm1Ws=&J`8uhG5XLfL zQcXWkQcD>`%U*z81HJhIrr)zK(PqO@Ro}csdksfdTlx~s7==zV^CfB>Zz=-w!9BNbgRdDaoMm@&uJeuK^SOA2d1$;eXQboIsDh02ft`r;n0B;D_3M$>^~;I}tN^9me3 zn)~M|XrKZKs(TFbuNp<~jzRuMM$uMd;fIZ*SXOhVpgpIHMK%I#VYhq~9W|Et1*Y>9 zp-7=l6?oo^0824u6wMt=I;+f-+Q#YDDj5qf| zPmG|yj3ZqeeuOtWmAS*I&v>#!y7dCZPYI?;=`Ya!6G&9^TQ4%zG@M+pEi&7imnttN z)AuHjC#2to(;p^~&_)FnFtBo1b#=juDa4mZUk|0J946A5K{RO^87n44}SgB)q}Ib4b*$AR!Iw-cG~g)!H>BM&D-d31G-# z^%lp`N^A53Hn7!G!A=Ex=a9ZcQu@*c>0~B`syXSTZ9~t~Fn1%i;Nx`iFIJFr?ObB^ z>mJJrGB2buG5UI%X96loHPNcz@LZAskM*WW^U>!jW9aVr;Jp`r8ldF$EVwnFY;$}5 znJC7I9bGu~6H4wAalF@g%&ZplYhB)K5^+Pf-B{#(~InmL1E-*G*9q*<-am)Hm zh1<@1hyJsO%=7F11d3-*cAsQ5zJh0t*RZ$3W5$D7^xbTnxS8o^*%(#NMA8Gf?hmm zwVi=5SY}~hK16VAmVrucPf(@5-=~iC)%&U_C33r(-f8y);S6G`XS0!kz8{j z%cnWics}is(NSn?84VN}{S77+E0sxLhweExf?l*^N?Q$OCA$l4u$c5n@P!&P&wNp2 zZ0`0m;>IwvmgtMdO!lka%0FFDZ#ZR-K4Z*eFIgu#V)pR78Zwvvz;-5%pnlZ8m;{<; zE@Y&;8IU0I2j%@px_vQuTAHzt-d~K7?es$0%7OdYg*4uQ0ddJfI?X}mwOH^rG0YyC zbr-J=7*`bGu;16}c-qg})9vrKDOo}WJ@pGpfJ|l~9jlA>s)uKK;8A$YQeg0wX%TMr zU-7I^IRwINIQz6SwJ#y#q`~3z#uDm^*Vp>X3D z3ux9-V(okyKQyhj5munqYJs}V1;$j5cjkTNGB4-61@xb#B(qT$ShhMmkIbiwa!DAr zYFl!#75+Jl9?K`$Ymm>aB0>n zYCpKA?BiKyj^X{_+&tC~W}q9emj@oI4v%?-*;Km$-h|i^#*1rb7IDG+_3AQbhkp@r zbUO}xmIeHWG0x!2x?FuEs(4SC3M%Lc<3s8BWth>|Kv%K1qi)N|sJ0c1X3h)?mh=hs z{mRaEtVlR<$6+FW5PDl#)seoloOEpcpe>W(*xrgo8(U)4SO_PbK z;IEbBqxv?s!rzT!D}z%CM&DOo>frG|EOq0Tb@5}m_�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%0A9Z`R(3X^J3@92`6I@Mk#o&s?MW1H4 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 j!?Nh0(L(<9sH;!Y+)I??Xu2G@$u&fbdr;2b nav_ptr = std::shared_ptr( reinterpret_cast(handle), [](::robot::move_base_core::BaseNavigation *) {}); @@ -181,10 +182,12 @@ extern "C" bool navigation_set_robot_footprint(NavigationHandle handle, const Po footprint.reserve(point_count); for (size_t i = 0; i < point_count; ++i) { + robot_geometry_msgs::Point pt; pt.x = points[i].x; pt.y = points[i].y; pt.z = points[i].z; + printf("footprint x: %f, y: %f\n", pt.x, pt.y); footprint.push_back(pt); } nav_ptr->setRobotFootprint(footprint); @@ -284,6 +287,40 @@ extern "C" bool navigation_move_to_order(NavigationHandle handle, const Order or } } +extern "C" bool navigation_move_to_nodes_edges(NavigationHandle handle, const Node *nodes, size_t node_count, const Edge *edges, size_t edge_count, const PoseStamped goal) +{ + if (!handle) + { + return false; + } + + try + { + std::shared_ptr nav_ptr = + std::shared_ptr( + reinterpret_cast(handle), [](::robot::move_base_core::BaseNavigation *) {}); + if (!nav_ptr) + return false; + robot::log_error("navigation_move_to_order goal %f %f", goal.pose.position.x, goal.pose.position.y); + Order order; + order.nodes = const_cast(nodes); + order.nodes_count = node_count; + order.edges = const_cast(edges); + order.edges_count = edge_count; + robot_protocol_msgs::Order cpp_order = convert2CppOrder(order); + robot_geometry_msgs::PoseStamped cpp_goal = convert2CppPoseStamped(goal); + return nav_ptr->moveTo(cpp_order, cpp_goal); + } + catch (const std::exception &e) + { + return false; + } + catch (...) + { + printf("[%s:%d]\n Error: Failed to move to order\n", __FILE__, __LINE__); + return false; + } +} extern "C" bool navigation_dock_to(NavigationHandle handle, const char *marker, const PoseStamped goal) { if (!handle || !marker) diff --git a/src/Navigations/Packages/move_base/src/convert_data.cpp b/src/Navigations/Packages/move_base/src/convert_data.cpp index c63f778..8e8f12d 100644 --- a/src/Navigations/Packages/move_base/src/convert_data.cpp +++ b/src/Navigations/Packages/move_base/src/convert_data.cpp @@ -1,6 +1,7 @@ #include #include #include +#include char* move_base::ConvertData::cost_translation_table_ = NULL; @@ -41,7 +42,19 @@ move_base::ConvertData::~ConvertData() // prepare grid_ message for publication. void move_base::ConvertData::prepareGrid() { - // boost::unique_lock lock(*(costmap_->getMutex())); + printf("Preparing costmap data for publication\n"); + + std::ofstream file("/home/robotics/sonvh/pnkx_nav_core/obstacle/hybrid_local_planner/cfg/costmap_data.txt"); + + if (!file.is_open()) + { + std::cout << "Cannot open file!" << std::endl; + return; + } + + // boost::unique_lock + // lock(*(costmap_->getCostmap()->getMutex())); + double resolution = costmap_->getCostmap()->getResolution(); grid_.header.frame_id = global_frame_; @@ -53,22 +66,44 @@ void move_base::ConvertData::prepareGrid() double wx, wy; costmap_->getCostmap()->mapToWorld(0, 0, wx, wy); + grid_.info.origin.position.x = wx - resolution / 2; grid_.info.origin.position.y = wy - resolution / 2; grid_.info.origin.position.z = 0.0; grid_.info.origin.orientation.w = 1.0; + saved_origin_x_ = costmap_->getCostmap()->getOriginX(); saved_origin_y_ = costmap_->getCostmap()->getOriginY(); grid_.data.resize(grid_.info.width * grid_.info.height); + file << "frame: " << global_frame_ << std::endl; + file << "time: " << robot::Time::now().toSec() << std::endl; + file << "resolution: " << resolution << std::endl; + file << "width: " << grid_.info.width << std::endl; + file << "height: " << grid_.info.height << std::endl; + file << "origin_x: " << grid_.info.origin.position.x << std::endl; + file << "origin_y: " << grid_.info.origin.position.y << std::endl; + unsigned char* data = costmap_->getCostmap()->getCharMap(); - for (unsigned int i = 0; i < grid_.data.size(); i++) + + for (unsigned int y = 0; y < grid_.info.height; y++) { - grid_.data[i] = cost_translation_table_[ data[ i ]]; + for (unsigned int x = 0; x < grid_.info.width; x++) + { + unsigned int i = y * grid_.info.width + x; + + grid_.data[i] = cost_translation_table_[data[i]]; + + file << int(grid_.data[i]) << " "; + } + file << "\n"; } + + file.close(); } + void move_base::ConvertData::updateCostmap(robot_nav_msgs::OccupancyGrid &grid, robot_map_msgs::OccupancyGridUpdate &update, bool &is_updated) { boost::unique_lock lock(*(costmap_->getCostmap()->getMutex())); diff --git a/src/Navigations/Packages/move_base/src/move_base.cpp b/src/Navigations/Packages/move_base/src/move_base.cpp index 1b4f501..1471ce4 100644 --- a/src/Navigations/Packages/move_base/src/move_base.cpp +++ b/src/Navigations/Packages/move_base/src/move_base.cpp @@ -760,11 +760,11 @@ void move_base::MoveBase::addOdometry(const std::string &odometry_name, robot_na // robot_pose.header.frame_id = robot_base_frame_; // robot_pose.header.stamp = robot::Time(); // robot::Time current_time = robot::Time::now(); // save time for checking tf delay later - + // // Convert robot::Time to tf3::Time // tf3::Time tf3_current_time = data_convert::convertTime(current_time); // tf3::Time tf3_zero_time = data_convert::convertTime(robot::Time()); - + // std::string error_msg; // if (tf_->canTransform("odom", "base_link", tf3_current_time, &error_msg)) // {