从turtlesim到stdr,从示意到仿真。
stdr:
turtlesim:
为什么要学习如上内容?
为了使用导航功能包集,需要逐步学习如何一步步配置自定义机器人。介绍了应用导航功能包集对机器人平台的需求,即需要使用平面激光雷达、差动轮式机器人、基础控制器,而且还要满足特定的几何形状。
注意使用stdr来展示示例和解释不同配置下导航功能包集的工作原理。如果直接使用一个真的机器人平台来解释这一切就会麻烦许多,而且并不是每位读者都能拥有或者能接触到这样的机器人。在任何情况下,使用不同的机器人平台,所下发的指令都可能是不同的,其硬件执行器也可能会出现故障,因此在仿真环境中执行这些代码更加安全也更加可靠。在此之后,在满足需要的基础之上,也可以将这些代码移植到实际的机器人上应用。
在后面,将会学习如何配置导航功能包集,创建.launch文件,并在stdr中完成之前所创建的机器人的自主导航。
简单来说,之后所学的内容都将是非常有用的,因为它不仅会提供在示例中进行正确的配置,还会提供在其他的机器人(无论是仿真机器人还是真正的机器人)中使用导航功能包集。

- <launch>
- <arg name="base" default="$(optenv TURTLEBOT_BASE kobuki)"/>
- <arg name="stacks" default="$(optenv TURTLEBOT_STACKS hexagons)"/>
- <arg name="3d_sensor" default="$(optenv TURTLEBOT_3D_SENSOR kinect)"/>
- <arg name="laser_topic" default="robot0/laser_0"/>
- <arg name="odom_topic" default="robot0/odom"/>
- <arg name="odom_frame_id" default="map"/>
- <arg name="base_frame_id" default="robot0"/>
- <arg name="global_frame_id" default="world"/>
-
- <arg name="map_file" default="$(env TURTLEBOT_STDR_MAP_FILE)"/>
- <arg name="initial_pose_x" default="2.0"/>
- <arg name="initial_pose_y" default="2.0"/>
- <arg name="initial_pose_a" default="0.0"/>
- <arg name="min_obstacle_height" default="0.0"/>
- <arg name="max_obstacle_height" default="5.0"/>
-
-
- <include file="$(find stdr_robot)/launch/robot_manager.launch" />
-
- <node pkg="stdr_server" type="stdr_server_node" name="stdr_server" output="screen" args="$(arg map_file)"/>
-
- <node pkg="stdr_robot" type="robot_handler" name="$(anon robot_spawn)" args="add $(find turtlebot_stdr)/robot/turtlebot.yaml $(arg initial_pose_x) $(arg initial_pose_y) 0"/>
-
- <include file="$(find stdr_gui)/launch/stdr_gui.launch"/>
-
- <include file="$(find turtlebot_stdr)/launch/includes/relays.launch.xml"/>
-
-
- <include file="$(find turtlebot_bringup)/launch/includes/robot.launch.xml">
- <arg name="base" value="$(arg base)" />
- <arg name="stacks" value="$(arg stacks)" />
- <arg name="3d_sensor" value="$(arg 3d_sensor)" />
- include>
- <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher">
- node>
-
-
- <node pkg="nodelet" type="nodelet" name="mobile_base_nodelet_manager" args="manager"/>
- <node pkg="nodelet" type="nodelet" name="cmd_vel_mux" args="load yocs_cmd_vel_mux/CmdVelMuxNodelet mobile_base_nodelet_manager">
- <param name="yaml_cfg_file" value="$(find turtlebot_bringup)/param/mux.yaml"/>
- <remap from="cmd_vel_mux/output" to="mobile_base/commands/velocity"/>
- node>
-
-
- <node name="map_server" pkg="map_server" type="map_server" args="$(arg map_file)">
- <param name="frame_id" value="$(arg global_frame_id)"/>
- node>
-
-
-
- <include file="$(find turtlebot_navigation)/launch/includes/move_base.launch.xml">
- <arg name="odom_topic" value="$(arg odom_topic)"/>
- <arg name="laser_topic" value="$(arg laser_topic)"/>
- <arg name="odom_frame_id" value="$(arg odom_frame_id)"/>
- <arg name="base_frame_id" value="$(arg base_frame_id)"/>
- <arg name="global_frame_id" value="$(arg global_frame_id)"/>
- include>
-
-
- <param name="move_base/local_costmap/obstacle_layer/scan/min_obstacle_height" value="$(arg min_obstacle_height)"/>
- <param name="move_base/local_costmap/obstacle_layer/scan/max_obstacle_height" value="$(arg max_obstacle_height)"/>
- <param name="move_base/global_costmap/obstacle_layer/scan/min_obstacle_height" value="$(arg min_obstacle_height)"/>
- <param name="move_base/global_costmap/obstacle_layer/scan/max_obstacle_height" value="$(arg max_obstacle_height)"/>
-
-
- <include file="$(find turtlebot_navigation)/launch/includes/amcl/amcl.launch.xml">
- <arg name="scan_topic" value="$(arg laser_topic)"/>
- <arg name="use_map_topic" value="true"/>
- <arg name="odom_frame_id" value="$(arg odom_frame_id)"/>
- <arg name="base_frame_id" value="$(arg base_frame_id)"/>
- <arg name="global_frame_id" value="$(arg global_frame_id)"/>
- <arg name="initial_pose_x" value="$(arg initial_pose_x)"/>
- <arg name="initial_pose_y" value="$(arg initial_pose_y)"/>
- <arg name="initial_pose_a" value="$(arg initial_pose_a)"/>
- include>
-
-
- <node name="tf_connector" pkg="turtlebot_stdr" type="tf_connector.py" output="screen"/>
-
-
- <node name="rviz" pkg="rviz" type="rviz" args="-d $(find turtlebot_stdr)/rviz/robot_navigation.rviz"/>
-
-
-
-
- launch>
export TURTLEBOT_STDR_MAP_FILE=fullpath_to_your_map.yaml
export TURTLEBOT_STDR_MAP_FILE=/home/shiyanlou/Code/demo_ws/src/turtlebot_stdr/maps/hospital_section.yaml
