本帖最后由 陈思盈 于 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="\033[32m" && Red_font_prefix="\033[31m" && Green_background_prefix="\033[42;37m" && Red_background_prefix="\033[41;37m" && Yellow_background_prefix="\033[43;37m" && Font_color_suffix="\033[0m" && Yellow_font_prefix="\e[1;33m" && Blue_font_prefix="\e[0;34m" 4 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 "现在可以按回⻋退出脚本..."
|