英文导航源码
① 简单易懂的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的核心在于整合各类组件并高效响应导航任务,利用状态机管理和循环逻辑确保导航流程的顺畅和高效。通过巧妙设计,减少直接编程工作量,实现复杂导航逻辑的简洁封装。