使用Gmapping算法进行场地二维建图与手动标定任务目标点解析
本帖最后由 陈思盈 于 2024-7-8 20:10 编辑[*]Launch文件解析:
[*]auto_match.launch文件中,第6行包括了用于启动SLAM系统的launch文件,其中$(arg slam_methods)应替换为实际使用的SLAM方法,比如gmapping。
[*]第11行启动了一个节点,该节点运行一个shell脚本,用于引导地点记录过程。
[*]第14行在启动了键盘控制节点,允许您通过键盘控制机器人移动。
[*]地点记录脚本解析:
[*]脚本使用了shell命令来提示用户控制机器人移动到指定的地点,并通过ROS topic发布这些地点的名字。
[*]当用户按下回车键确认到达指定地点后,脚本通过rostopic pub命令发布一个包含地点名称的消息到/mark_nav话题。
[*]最后,脚本提示用户是否完成标记并保存地图,保存地图的命令是rosrun map_server map_saver -f <map_name>。
[*]关于方块高度问题:
[*]在建图过程中,由于方块高度不够,雷达扫描不到方块,可能会导致自动运行时机器人撞到方块。
[*]为了避免这个问题,建议在建图过程中增加方块的高度,确保雷达可以扫描到方块,从而在建图和自动运行时避开障碍物
使⽤Gmapping算法对场地进⾏⼆维建图,建图过程中⼿动标定任务⽬标点。 1 # auto_match.launch:60⾏ 2 <!-- =====⼀开始准备记录地点====== --> 3 <group if="$(arg open_guide)"> 4 5 <!-- SLAM: Gmapping, Cartographer, Hector, Karto, Frontier_exploration--> 6 <include file="$(find spark_slam)/launch/spark_$(arg slam_methods).launch"> 7 <arg name="configuration_basename" value="$(arg configuration_basename)"/>8 </include> 9 10 <!-- 地点记录引导脚本 --> 11 <node pkg="auto_match" type="cmd_location_learn_guide.sh" name="cmd_location_learn_guide" /> 12 13 <!--创建新的终端,spark键盘控制 “wsad”分别代表“前后左右”--> 14 <node pkg="spark_teleop" type="keyboard_control.sh" name="kc" if="$(arg open_guide)"/> 15 16 </group> 地点记录脚本: 1 #!/bin/bash 2 3 Green_font_prefix="\033Green_background_prefix="\033&& Yellow_background_prefix="\033Yellow_font_prefix="\e4 Info="${Green_font_prefix}[信息]${Font_color_suffix}" 5 echo -e "${Info} 这个是在 ROS 层⾯上地点记录的脚本, 仅仅⽤于 debug" 6 echo -e "${Info} 脚本运⾏过程任意时候可按 Ctrl+C 退出脚本" 7 echo -e "" 8 echo -e "${Info} 接下来请根据提⽰进⾏操作" 9 10 echo -e "" 11 echo -e "${Info} 控制 spark 移动到 ${Yellow_background_prefix}分类区 ${Font_color_suffix}\c" 12 echo && stty erase '^H' && read -p " 然后在这个界⾯内按回⻋..." 13 rostopic pub /mark_nav std_msgs/String "data: 'learn Classification_area'" -1 >/dev/null 14 echo -e "${Info} 地点名为 ${Yellow_background_prefix}Classification_area${Font_color_suffix}" 15 16 echo -e "" 17 echo -e "${Info} 控制 spark 移动到 ${Yellow_background_prefix}收取区 B${Font_color_suffix}\c" 18 echo && stty erase '^H' && read -p " 然后在这个界⾯内按回⻋..." 19 rostopic pub /mark_nav std_msgs/String "data: 'learn Collection_B'" -1 >/dev/null 20 echo -e "${Info} 地点名为 ${Yellow_background_prefix}Collection_B${Font_color_suffix}" 2122 23 echo -e "" 24 echo -e "${Info} 控制 spark 移动到 ${Yellow_background_prefix}分拣区北 ${Font_color_suffix}\c" 25 echo && stty erase '^H' && read -p " 然后在这个界⾯内按回⻋..." 26 rostopic pub /mark_nav std_msgs/String "data: 'learn Sorting_N'" -1 >/dev/null 27 echo -e "${Info} 地点名为 ${Yellow_background_prefix}Sorting_N${Font_color_suffix}" 28 29 echo -e "" 30 echo -e "${Info} 控制 spark 移动到 ${Yellow_background_prefix}分拣区西 ${Font_color_suffix}\c" 31 echo && stty erase '^H' && read -p " 然后在这个界⾯内按回⻋..." 32 rostopic pub /mark_nav std_msgs/String "data: 'learn Sorting_W'" -1 >/dev/null 33 echo -e "${Info} 地点名为 ${Yellow_background_prefix}Sorting_W${Font_color_suffix}" 34 35 36 echo -e "" 37 echo -e "${Info} 是否标记完成,保存地图? \c" 38 echo && stty erase '^H' && read -p " 然后在这个界⾯内按回⻋..." 39 rostopic pub /mark_nav std_msgs/String "data: 'finish'" -1 >/dev/null 40 # 保存地图 41 CURRENTPATH=$(cd `dirname $0`; pwd) 42 gnome-terminal -x bash -c "rosrun map_server map_saver -f $CURRENTPATH/../config/test_map" 43 echo -e "${Info} 结束标记地点,已保存地图" 44 45 46 echo -e "" 47 echo -e "${Info} 地点记录已完成\c" 48 echo -e "" 49 echo && stty erase '^H' && read -p "现在可以按回⻋退出脚本..."
很详细的讲解
不错不错 继续加油 很有帮助,希望能多多分享 加油继续坚持 我看好你们 继续加油
页:
[1]