先一键配置吧,否则很多内容无法展开讲。
- echo "-----BEGIN PGP PUBLIC KEY BLOCK-----
- Version: GnuPG v1
-
- mQINBFzvJpYBEADY8l1YvO7iYW5gUESyzsTGnMvVUmlV3XarBaJz9bGRmgPXh7jc
- VFrQhE0L/HV7LOfoLI9H2GWYyHBqN5ERBlcA8XxG3ZvX7t9nAZPQT2Xxe3GT3tro
- u5oCR+SyHN9xPnUwDuqUSvJ2eqMYb9B/Hph3OmtjG30jSNq9kOF5bBTk1hOTGPH4
- K/AY0jzT6OpHfXU6ytlFsI47ZKsnTUhipGsKucQ1CXlyirndZ3V3k70YaooZ55rG
- aIoAWlx2H0J7sAHmqS29N9jV9mo135d+d+TdLBXI0PXtiHzE9IPaX+ctdSUrPnp+
- TwR99lxglpIG6hLuvOMAaxiqFBB/Jf3XJ8OBakfS6nHrWH2WqQxRbiITl0irkQoz
- pwNEF2Bv0+Jvs1UFEdVGz5a8xexQHst/RmKrtHLct3iOCvBNqoAQRbvWvBhPjO/p
- V5cYeUljZ5wpHyFkaEViClaVWqa6PIsyLqmyjsruPCWlURLsQoQxABcL8bwxX7UT
- hM6CtH6tGlYZ85RIzRifIm2oudzV5l+8oRgFr9yVcwyOFT6JCioqkwldW52P1pk/
- /SnuexC6LYqqDuHUs5NnokzzpfS6QaWfTY5P5tz4KHJfsjDIktly3mKVfY0fSPVV
- okdGpcUzvz2hq1fqjxB6MlB/1vtk0bImfcsoxBmF7H+4E9ZN1sX/tSb0KQARAQAB
- tCZPcGVuIFJvYm90aWNzIDxpbmZvQG9zcmZvdW5kYXRpb24ub3JnPokCVAQTAQgA
- PgIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBMHPbjHmut6IaLFytPQu1vur
- F8ZUBQJgsdhRBQkLTMW7AAoJEPQu1vurF8ZUTMwP/3f7EkOPIFjUdRmpNJ2db4iB
- RQu5b2SJRG+KIdbvQBzKUBMV6/RUhEDPjhXZI3zDevzBewvAMKkqs2Q1cWo9WV7Z
- PyTkvSyey/Tjn+PozcdvzkvrEjDMftIk8E1WzLGq7vnPLZ1q/b6Vq4H373Z+EDWa
- DaDwW72CbCBLWAVtqff80CwlI2x8fYHKr3VBUnwcXNHR4+nRABfAWnaU4k+oTshC
- Qucsd8vitNfsSXrKuKyz91IRHRPnJjx8UvGU4tRGfrHkw1505EZvgP02vXeRyWBR
- fKiL1vGy4tCSRDdZO3ms2J2m08VPv65HsHaWYMnO+rNJmMZj9d9JdL/9GRf5F6U0
- quoIFL39BhUEvBynuqlrqistnyOhw8W/IQy/ymNzBMcMz6rcMjMwhkgm/LNXoSD1
- 1OrJu4ktQwRhwvGVarnB8ihwjsTxZFylaLmFSfaA+OAlOqCLS1OkIVMzjW+Ul6A6
- qjiCEUOsnlf4CGlhzNMZOx3low6ixzEqKOcfECpeIj80a2fBDmWkcAAjlHu6VBhA
- TUDG9e2xKLzV2Z/DLYsb3+n9QW7KO0yZKfiuUo6AYboAioQKn5jh3iRvjGh2Ujpo
- 22G+oae3PcCc7G+z12j6xIY709FQuA49dA2YpzMda0/OX4LP56STEveDRrO+CnV6
- WE+F5FaIKwb72PL4rLi4
- =i0tj
- -----END PGP PUBLIC KEY BLOCK-----" >> ~/ros.asc
-
- sudo apt-key add ros.asc
-
- sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
-
- sudo apt update
-
- sudo apt install ros-kinetic-turtlebot-simulator -y
-
- roslaunch turtlebot_stdr turtlebot_in_stdr.launch
保存为initnav.sh。
1 gedit initnav.sh
2 chmod +x initnav.sh
3 ./initnav.sh
4 ls
5 gedit initnav.sh
6 ./initnav.sh
需要源码下载:
git clone https://gitcode.net/ZhangRelay/ros_book.git




/opt/ros/kinetic/share/turtlebot_stdr/maps
改环境,同样一键配置
- export TURTLEBOT_STDR_MAP_FILE=/opt/ros/kinetic/share/turtlebot_stdr/maps/simple_rooms.yaml
-
- roslaunch turtlebot_stdr turtlebot_in_stdr.launch
效果如下:


更通用案例:
- export TURTLEBOT_STDR_MAP_FILE=/opt/ros/kinetic/share/turtlebot_stdr/maps/mines.yaml
-
- echo "
-
" default=" $(optenv TURTLEBOT_BASE kobuki)"/> -
" default=" $(optenv TURTLEBOT_STACKS hexagons)"/> -
" default=" $(optenv TURTLEBOT_3D_SENSOR kinect)"/> -
" default=" robot0/laser_0"/> -
" default=" robot0/odom"/> -
" default=" map"/> -
" default=" robot0"/> -
" default=" world"/> -
-
" default=" $(env TURTLEBOT_STDR_MAP_FILE)"/> -
" default=" 1.5"/> -
" default=" 1.5"/> -
" default=" 0.0"/> -
" default=" 0.0"/> -
" default=" 5.0"/> -
-
-
" /> -
-
" type=" stdr_server_node" name="stdr_server" output="screen" args="$(arg map_file)"/> -
-
" type=" robot_handler" name="$(anon robot_spawn)" args="add $(find turtlebot_stdr)/robot/turtlebot.yaml $(arg initial_pose_x) $(arg initial_pose_y) 0"/> -
-
"/> -
-
"/> -
-
-
"> -
" value=" $(arg base)" /> -
" value=" $(arg stacks)" /> -
" value=" $(arg 3d_sensor)" /> -
-
" pkg=" joint_state_publisher" type="joint_state_publisher"> - " value="true"/>
-
-
-
-
" type=" nodelet" name="mobile_base_nodelet_manager" args="manager"/> -
" type=" nodelet" name="cmd_vel_mux" args="load yocs_cmd_vel_mux/CmdVelMuxNodelet mobile_base_nodelet_manager"> - " value="$(find turtlebot_bringup)/param/mux.yaml"/>
-
" to=" mobile_base/commands/velocity"/> -
-
-
-
" pkg=" map_server" type="map_server" args="$(arg map_file)"> - " value="$(arg global_frame_id)"/>
-
-
-
-
-
"> -
" value=" $(arg odom_topic)"/> -
" value=" $(arg laser_topic)"/> -
" value=" $(arg odom_frame_id)"/> -
" value=" $(arg base_frame_id)"/> -
" value=" $(arg global_frame_id)"/> -
-
-
- " value="$(arg min_obstacle_height)"/>
- " value="$(arg max_obstacle_height)"/>
- " value="$(arg min_obstacle_height)"/>
- " value="$(arg max_obstacle_height)"/>
-
-
-
"> -
" value=" $(arg laser_topic)"/> -
" value=" true"/> -
" value=" $(arg odom_frame_id)"/> -
" value=" $(arg base_frame_id)"/> -
" value=" $(arg global_frame_id)"/> -
" value=" $(arg initial_pose_x)"/> -
" value=" $(arg initial_pose_y)"/> -
" value=" $(arg initial_pose_a)"/> -
-
-
-
" pkg=" turtlebot_stdr" type="tf_connector.py" output="screen"/> -
-
-
" pkg=" rviz" type="rviz" args="-d $(find turtlebot_stdr)/rviz/robot_navigation.rviz"/> -
-
-
-
- " >> ~/mines.launch
-
- roslaunch mines.launch
或者:
- export TURTLEBOT_STDR_MAP_FILE=/opt/ros/kinetic/share/turtlebot_stdr/maps/mines.yaml
-
- roslaunch turtlebot_stdr turtlebot_in_stdr.launch


需要修改机器人初始坐标到合适的位置。
课堂中教室建图和导航案例需补充。
然后将其导入的ROS云实践镜像中。
注意一些参数配置,例如机器人和坐标位置等。
坐标要对应地图参数进行调整。
设置地图:
export TURTLEBOT_STDR_MAP_FILE=/opt/ros/kinetic/share/turtlebot_stdr/maps/***.yaml
其中,***对应具体地图名称。
launch文件简单介绍:
包含功能如上。
基本主题和坐标
初始位置参数和障碍物
机器人模型详细参数
速度
地图
导航
自定义参数
自适应蒙特卡罗定位
坐标
可视化
坐标:
- #!/usr/bin/env python
- __author__ = 'mehdi tlili'
- import rospy
- from tf2_msgs.msg import TFMessage
- import tf
-
- class Remapper(object):
-
- def __init__(self):
- self.br = tf.TransformBroadcaster()
- rospy.Subscriber("/tf", TFMessage, self.tf_remapper)
-
- def tf_remapper(self, msg):
-
- if msg.transforms[0].header.frame_id == "/robot0":
- self.br.sendTransform((0, 0, 0),
- tf.transformations.quaternion_from_euler(0, 0, 0),
- rospy.Time.now(),
- "base_footprint",
- "robot0")
-
-
- if __name__ == '__main__':
- rospy.init_node('remapper_nav')
- remapper = Remapper()
- rospy.spin()