source command.sh 一次性执行多条命令
scripts 装的Python文件和.sh文件
rosrun 包名 节点名
roslaunch 包名 节点名
ctrl shift e 水平分割
ctrl shift o 上下分割
alt 左右箭头 切换终端
ctrl shift w 关闭分屏
rodcd 在终端中进入指定软件包的文件地址
rostopic list 查看活跃话题
rostopic echo 话题名称 查看话题内容
rostopic hz 话题名称 查看话题发布频率
ctrl / 去掉选中的注释
rqt_graph 显示当前ros系统中正在运行的节点和它们之间的话题通讯关系
Rviz数据可视化工具 观测传感器数据 对机器人状态进行实施观测的辅助工具
Gazebo 机器人仿真
slam建图 同时定位与建图,根据特征点对比
第一款slam算法 Hector_Mapping建图
Hector_Mapping建图参数 在launch文件里改,比如·地图刷新速度,更新阈值等
TF系统坐标系关系 应用:输出机器人在地图中的位置关系
rosrun rqt_tf_tree rqt_tf_tree
里程计:odom
gmapping核心算法:先使用里程计推算机器人的位移,然后通过雷达点云贴合障碍物轮廓,修正里程计误差的方法。有效克服了建图过程中位移特征缺失的问题,避免了建图过程的中断。
hector mapping算法:直接将雷达点云贴合障碍物轮廓所得出的机器人位移作为最终的定位结果,也有odom只是为了在rviz里能显示地图和机器人模型输出一段map到odom的TF去抵消不断增长的里程计TF好让机器人的base_footprint和scanmatcher_frame的位置始终保持一致
通过电机的转动速度计算机器人位移的方法就是激光雷达slam中常用的电机里程计:软件算法:根据电机的转动数据计算机器人的位移信息
障碍物点云配准的定位算法:修正里程计的误差
Gmapping建图参数设置:性能参数改的比较多:激光雷达射线的最大采纳距离/激光雷达数据跳帧或跳线处理/地图更新的时间间隔/地图尺寸/地图更新的移动距离或旋转角度阈值/滤波器的粒子数/粒子重采样阈值
ros保存和加载地图:使用map_server软件包:rosrun map_server map_saver -f 文件名
加载地图:rosrun map_server map_server mymap.yaml
全局规划器:
全局路径规划算法
广度优先算法:Dijkstra算法
深度优先算法:A*算法:计算量小,路径不是最短的,相当于通过降低路径生成质量换取较低的算力消耗
AMCL定位算法:(Adaptive Monte Carlo Localization)自适应蒙特卡罗定位算法,是一种使用了粒子滤波在已知地图中进行定位的算法,同时使用了里程计和激光雷达数据,具有较强的自我纠错功能
代价地图Costmap:
global_costmap:全局代价地图,只在规划全局导航路线的时候生成一次,
local_costmap:局部代价地图:运动避障用的 ,考虑范围很小,耗时短,计算频率高,机器人实际运行的时候,除了之前建图扫的的障碍墙壁,还可能出现临时堆放的杂物,在之前建图的时候iou所没有的,需要实时避让
代价地图的参数设置:
costmap_common_params.yaml/主要影响代价地图的形状
参数内容:robot_radius:机器人的底盘半径大小,机器人底盘中心绝对不能进入该区域/inflation_radius:膨胀区域的半径,机器人底盘中心可以进入,具有危险性,类似排斥力场/增加观测来源(多线雷达,立体相机)
global_costmap_params.yaml/代价地图的计算范围和频率
参数内容:地图名称map/机器人底盘坐标系名称/初始地图设置true话使用建好的地图,未知环境导航false/地图更新频率,把传感器观测到的障碍物添加到代价地图频率/地图发送频率/
local_costmap_params.yaml/代价地图的计算范围和频率
参数内容:地图名称odom/底盘坐标系名称/初始地图设置用false/rolling_window指局部代价地图的范围是否跟着机器人一起移动/局部代价地图的范围尺寸:宽和高/地图更新频率一般设置为激光雷达的扫描频率
应急机制:恢复行为Recovery Behaviors,机器人被困住后,先执行保守重置,再旋转清除,再激进重置,再旋转清除,全失败则放弃任务
恢复行为的参数设置:
局部规划器:相当于运动控制器,Trajectory Planner / DWA Planner用的多/第三方的Eband Planner 和TEB Planner用的多/wpbhlocalplanner、
DWA规划器:Dynamic Window Approach,生成一系列轨迹和速度的方案,从中挑选最合适的一条轨迹,轨迹挑选准则:1.运动轨迹和全局导航路线的贴合程度;2.轨迹末端和导航点的距离;3.轨迹路线和障碍物之间的距离;综合考虑过程目标风险三个因素::
动态调整参数 :rosrun rqt_reconfigure rqt_reconfigure可以改很多
TEB规划器:Timed Elastic Band 局部路径:全局路线的吸引力和障碍物的排斥力生成,竞速比赛,脱困能力强,适合阿克曼底盘和会旋转的机器人
也可以使用:动态调整参数 :rosrun rqt_reconfigure rqt_reconfigure
Action编程接口:action是ros的一种通讯方式,双向,调用move_base的导航功能,导航节点实现流程:构建Action客户端,向move_base发送导航坐标值,等待导航结果,为节点设置编译规则,编译节点
一款开源的ros航点导航插件waterplus_map_tools
roslaunch waterplus_map_tools add_waypoint_simulation.launch 打开rviz,选择想要到达的坐标点
rosrun waterplus_map_tools wp_saver 将得到的坐标点保存
roslaunch wpr_simulation wpb_map_tool.launch 开启导航仿真页面
rosrun wpr_simulation demo_map_tool 开启导航