英文導航源碼
① 簡單易懂的jQuery導航(三級菜單)源碼
<!--三級操蛋導航-->
<divclass="nav_left">
<divclass="nav_leftlist">
<h2><b></b>用戶系統</h2>
<dl>
<dt><b></b>用戶管理</dt>
<dd>
<aclass="cur"href="">商戶信息<b></b></a>
<ahref="">用戶信息<b></b></a>
</dd>
</dl>
</div>
<divclass="nav_leftlist">
<h2><b></b>財務系統</h2>
<dl>
<dt><b></b>系統賬務</dt>
<dd>
<ahref="">平台賬單<b></b></a>
<ahref="">賬單明細<b></b></a>
</dd>
</dl>
<dl>
<dt><b></b>商戶賬務</dt>
<dd>
<ahref="">商戶賬單<b></b></a>
<ahref="">提現管理<b></b></a>
</dd>
</dl>
<dl>
<dt><b></b>用戶賬務</dt>
<dd>
<ahref="">用戶賬單<b></b></a>
<ahref="">提現管理<b></b></a>
</dd>
</dl>
</div>
</div>
<style>
.nav_left{background:#232b35;height:100%;width:220px;min-height:600px;position:fixed;top:100px;left:0;}
.nav_leftlist{}
.nav_leftlisth2{height:50px;line-height:50px;padding-left:40px;font-size:16px;background:#3b444f;color:#999999;position:relative;cursor:pointer;}
.nav_leftlisth2b{position:absolute;top:20px;left:13px;width:16px;height:9px;background:url(../images/icon04.png)no-repeat;background-position:00;cursor:pointer;}
.nav_leftlisth2b.cur{background-position:-16px0;}
.nav_leftlistdl{}
.nav_leftlistdldt{height:50px;line-height:50px;background:#2c3643;font-size:16px;color:#ffffff;padding-left:60px;position:relative;cursor:pointer;}
.nav_leftlistdldtb{position:absolute;top:20px;left:34px;width:16px;height:9px;background:url(../images/icon04.png)no-repeat;background-position:0-10px;}
.nav_leftlistdldtb.cur{background-position:-16px-10px;}
.nav_leftlistdldd{}
.nav_leftlistdldda{display:block;height:50px;line-height:50px;color:#fff;padding-left:80px;font-size:16px;position:relative;}
.nav_leftlistdldda.cur{color:#ee581c;}
.nav_leftlistdldda.curb{display:block;position:absolute;top:16px;right:-1px;width:11px;height:18px;background:url(../images/icon04.png)no-repeat;background-position:0-20px;}
</style>
</body>
<scripttype="text/javascript"src="../js/jquery.js"></script>
<scripttype="text/javascript">
$(function(){
$('.nav_leftlist').on('click','h2',function(event){
$(this).siblings('dl').toggle();
if($(this).siblings('dl').css('display')=='none'){
$(this).find('b').addClass('cur');
}else{
$(this).find('b').removeClass('cur');
}
});
$('.nav_leftlist').on('click','dldt',function(event){
$(this).siblings('dd').toggle();
if($(this).siblings('dd').css('display')=='none'){
$(this).find('b').addClass('cur');
}else{
$(this).find('b').removeClass('cur');
}
});
})
</script>
效果圖:
② 搜一下導航完整程序源碼
本導航完整程序源碼包含兩個模板,能夠靈活切換。
運行環境要求使用Nginx伺服器,並設置偽靜態規則,具體規則如下:在配置文件中設置 location / { index index.php index.html; if (!-e $request_filename) { rewrite ^/(.*)$ /index.php last; } }。
底部內容可編輯,只需在文件 templates/souyix/footer.php 中進行修改。
資料庫導入和配置可在根目錄下的config.php文件中完成,只需填寫數據密碼和用戶名即可。
圖標獲取地址的修改需在include/api.php文件的第76行和include/lib/dada.php文件的第124行進行。
文字廣告位置在模板list.php文件的第37行,圖片廣告則在第53行和第71行。若圖片廣告理解有困難,建議不做修改,後台無法添加文字廣告。
獲取學習資料,請訪問導航源碼.zip文件在藍奏雲的下載鏈接。
③ ROS導航包源碼學習7 --- move_base
move_base作為導航包的頂層組件,整合各類功能,藉助simple action server接收目標並執行導航。包內僅包含一個類,構造函數是初始化核心邏輯的起點。關鍵在於local和global costmap、planner的初始化,以及兩個關鍵起點:接收目標時的executeCb激活和持續運行全局規劃器的planThread。
planThread運作機制基於condition variable和bool變數runPlanner_。當runPlanner_為真時,定時喚醒執行全局規劃,成功則狀態機設定為CONTROLLING,否則進入CLEARING狀態。該線程循環運行,確保導航流程的連續性。
在接收到目標後,executeCb激活,處理瑣碎數據並傳遞目標至executeCycle處理。此函數持續執行,全局規劃由planThread提供,直至目標完成或出錯。期間,通過檢測是否原地徘徊來優化路徑規劃,確保機器人避免無效移動。
機器人根據狀態機執行不同操作:在PLANNING狀態下啟動planThread;在CLEARING狀態,執行recoveryBehaviors直至恢復導航或報告問題;CONTROLLING狀態檢查目標位置和原地徘徊標志,調用localPlanner生成控制指令。若計算失敗,則進入CLEARING狀態。
綜上,move_base的核心在於整合各類組件並高效響應導航任務,利用狀態機管理和循環邏輯確保導航流程的順暢和高效。通過巧妙設計,減少直接編程工作量,實現復雜導航邏輯的簡潔封裝。