• ROS1云课→30导航仿真演示


    ROS1云课→29如何借助导航实现走迷宫机器人


    先一键配置吧,否则很多内容无法展开讲。

    1. echo "-----BEGIN PGP PUBLIC KEY BLOCK-----
    2. Version: GnuPG v1
    3. mQINBFzvJpYBEADY8l1YvO7iYW5gUESyzsTGnMvVUmlV3XarBaJz9bGRmgPXh7jc
    4. VFrQhE0L/HV7LOfoLI9H2GWYyHBqN5ERBlcA8XxG3ZvX7t9nAZPQT2Xxe3GT3tro
    5. u5oCR+SyHN9xPnUwDuqUSvJ2eqMYb9B/Hph3OmtjG30jSNq9kOF5bBTk1hOTGPH4
    6. K/AY0jzT6OpHfXU6ytlFsI47ZKsnTUhipGsKucQ1CXlyirndZ3V3k70YaooZ55rG
    7. aIoAWlx2H0J7sAHmqS29N9jV9mo135d+d+TdLBXI0PXtiHzE9IPaX+ctdSUrPnp+
    8. TwR99lxglpIG6hLuvOMAaxiqFBB/Jf3XJ8OBakfS6nHrWH2WqQxRbiITl0irkQoz
    9. pwNEF2Bv0+Jvs1UFEdVGz5a8xexQHst/RmKrtHLct3iOCvBNqoAQRbvWvBhPjO/p
    10. V5cYeUljZ5wpHyFkaEViClaVWqa6PIsyLqmyjsruPCWlURLsQoQxABcL8bwxX7UT
    11. hM6CtH6tGlYZ85RIzRifIm2oudzV5l+8oRgFr9yVcwyOFT6JCioqkwldW52P1pk/
    12. /SnuexC6LYqqDuHUs5NnokzzpfS6QaWfTY5P5tz4KHJfsjDIktly3mKVfY0fSPVV
    13. okdGpcUzvz2hq1fqjxB6MlB/1vtk0bImfcsoxBmF7H+4E9ZN1sX/tSb0KQARAQAB
    14. tCZPcGVuIFJvYm90aWNzIDxpbmZvQG9zcmZvdW5kYXRpb24ub3JnPokCVAQTAQgA
    15. PgIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBMHPbjHmut6IaLFytPQu1vur
    16. F8ZUBQJgsdhRBQkLTMW7AAoJEPQu1vurF8ZUTMwP/3f7EkOPIFjUdRmpNJ2db4iB
    17. RQu5b2SJRG+KIdbvQBzKUBMV6/RUhEDPjhXZI3zDevzBewvAMKkqs2Q1cWo9WV7Z
    18. PyTkvSyey/Tjn+PozcdvzkvrEjDMftIk8E1WzLGq7vnPLZ1q/b6Vq4H373Z+EDWa
    19. DaDwW72CbCBLWAVtqff80CwlI2x8fYHKr3VBUnwcXNHR4+nRABfAWnaU4k+oTshC
    20. Qucsd8vitNfsSXrKuKyz91IRHRPnJjx8UvGU4tRGfrHkw1505EZvgP02vXeRyWBR
    21. fKiL1vGy4tCSRDdZO3ms2J2m08VPv65HsHaWYMnO+rNJmMZj9d9JdL/9GRf5F6U0
    22. quoIFL39BhUEvBynuqlrqistnyOhw8W/IQy/ymNzBMcMz6rcMjMwhkgm/LNXoSD1
    23. 1OrJu4ktQwRhwvGVarnB8ihwjsTxZFylaLmFSfaA+OAlOqCLS1OkIVMzjW+Ul6A6
    24. qjiCEUOsnlf4CGlhzNMZOx3low6ixzEqKOcfECpeIj80a2fBDmWkcAAjlHu6VBhA
    25. TUDG9e2xKLzV2Z/DLYsb3+n9QW7KO0yZKfiuUo6AYboAioQKn5jh3iRvjGh2Ujpo
    26. 22G+oae3PcCc7G+z12j6xIY709FQuA49dA2YpzMda0/OX4LP56STEveDRrO+CnV6
    27. WE+F5FaIKwb72PL4rLi4
    28. =i0tj
    29. -----END PGP PUBLIC KEY BLOCK-----" >> ~/ros.asc
    30. sudo apt-key add ros.asc
    31. 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'
    32. sudo apt update
    33. sudo apt install ros-kinetic-turtlebot-simulator -y
    34. 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

    改环境,同样一键配置

    1. export TURTLEBOT_STDR_MAP_FILE=/opt/ros/kinetic/share/turtlebot_stdr/maps/simple_rooms.yaml
    2. roslaunch turtlebot_stdr turtlebot_in_stdr.launch

    效果如下:


    更通用案例:

    1. export TURTLEBOT_STDR_MAP_FILE=/opt/ros/kinetic/share/turtlebot_stdr/maps/mines.yaml
    2. echo "
    3. " default="$(optenv TURTLEBOT_BASE kobuki)"/>
    4. " default="$(optenv TURTLEBOT_STACKS hexagons)"/>
    5. " default="$(optenv TURTLEBOT_3D_SENSOR kinect)"/>
    6. " default="robot0/laser_0"/>
    7. " default="robot0/odom"/>
    8. " default="map"/>
    9. " default="robot0"/>
    10. " default="world"/>
    11. " default="$(env TURTLEBOT_STDR_MAP_FILE)"/>
    12. " default="1.5"/>
    13. " default="1.5"/>
    14. " default="0.0"/>
    15. " default="0.0"/>
    16. " default="5.0"/>
    17. " />
    18. " type="stdr_server_node" name="stdr_server" output="screen" args="$(arg map_file)"/>
    19. " type="robot_handler" name="$(anon robot_spawn)" args="add $(find turtlebot_stdr)/robot/turtlebot.yaml $(arg initial_pose_x) $(arg initial_pose_y) 0"/>
    20. "/>
    21. "/>
    22. ">
    23. " value="$(arg base)" />
    24. " value="$(arg stacks)" />
    25. " value="$(arg 3d_sensor)" />
    26. " pkg="joint_state_publisher" type="joint_state_publisher">
    27. " value="true"/>
    28. " type="nodelet" name="mobile_base_nodelet_manager" args="manager"/>
    29. " type="nodelet" name="cmd_vel_mux" args="load yocs_cmd_vel_mux/CmdVelMuxNodelet mobile_base_nodelet_manager">
    30. " value="$(find turtlebot_bringup)/param/mux.yaml"/>
    31. " to="mobile_base/commands/velocity"/>
    32. " pkg="map_server" type="map_server" args="$(arg map_file)">
    33. " value="$(arg global_frame_id)"/>
    34. ">
    35. " value="$(arg odom_topic)"/>
    36. " value="$(arg laser_topic)"/>
    37. " value="$(arg odom_frame_id)"/>
    38. " value="$(arg base_frame_id)"/>
    39. " value="$(arg global_frame_id)"/>
    40. " value="$(arg min_obstacle_height)"/>
    41. " value="$(arg max_obstacle_height)"/>
    42. " value="$(arg min_obstacle_height)"/>
    43. " value="$(arg max_obstacle_height)"/>
    44. ">
    45. " value="$(arg laser_topic)"/>
    46. " value="true"/>
    47. " value="$(arg odom_frame_id)"/>
    48. " value="$(arg base_frame_id)"/>
    49. " value="$(arg global_frame_id)"/>
    50. " value="$(arg initial_pose_x)"/>
    51. " value="$(arg initial_pose_y)"/>
    52. " value="$(arg initial_pose_a)"/>
    53. " pkg="turtlebot_stdr" type="tf_connector.py" output="screen"/>
    54. " pkg="rviz" type="rviz" args="-d $(find turtlebot_stdr)/rviz/robot_navigation.rviz"/>
    55. " >> ~/mines.launch
    56. roslaunch mines.launch

     或者:

    1. export TURTLEBOT_STDR_MAP_FILE=/opt/ros/kinetic/share/turtlebot_stdr/maps/mines.yaml
    2. roslaunch turtlebot_stdr turtlebot_in_stdr.launch

    需要修改机器人初始坐标到合适的位置。 


    课堂中教室建图和导航案例需补充。

    然后将其导入的ROS云实践镜像中。

    注意一些参数配置,例如机器人和坐标位置等。

     
     
     

    坐标要对应地图参数进行调整。

    设置地图:

    export TURTLEBOT_STDR_MAP_FILE=/opt/ros/kinetic/share/turtlebot_stdr/maps/***.yaml

    其中,***对应具体地图名称。


    launch文件简单介绍:

    包含功能如上。



       
       
       
     
     
     
     
     

    基本主题和坐标


     
     
     
     
     
     
     

    初始位置参数和障碍物
     
     
     
     
     
     
     
     
     
     
     
     
     
     
       
       
       
     

     
       
     

    机器人模型详细参数
     
     
     
     
       
       
     

    速度
     
     
     
       
     

     地图
     
     
     
       
       
       
       
       
     

    导航
     
     
       
       
       
       

    自定义参数
     
     
     
       
       
       
       
       
       
       
       
     

    自适应蒙特卡罗定位
     
     
     

    坐标
     
     
     

    可视化
     


    坐标:

    1. #!/usr/bin/env python
    2. __author__ = 'mehdi tlili'
    3. import rospy
    4. from tf2_msgs.msg import TFMessage
    5. import tf
    6. class Remapper(object):
    7. def __init__(self):
    8. self.br = tf.TransformBroadcaster()
    9. rospy.Subscriber("/tf", TFMessage, self.tf_remapper)
    10. def tf_remapper(self, msg):
    11. if msg.transforms[0].header.frame_id == "/robot0":
    12. self.br.sendTransform((0, 0, 0),
    13. tf.transformations.quaternion_from_euler(0, 0, 0),
    14. rospy.Time.now(),
    15. "base_footprint",
    16. "robot0")
    17. if __name__ == '__main__':
    18. rospy.init_node('remapper_nav')
    19. remapper = Remapper()
    20. rospy.spin()


  • 相关阅读:
    字符串习题总结2
    SwiftUI 中如何实现文件导入和导出
    【方向盘】JVM除了HotSpot,你还知道哪些?
    Java:理解Java软件开发的利与弊
    Ceph 架构以及部署
    【栈】NowCoder-由两个栈组成的队列
    JVM调优
    【知识专栏丨python数分实战】电商数据分析案例
    (王道考研计算机网络)第五章传输层-第三节1-5:TCP拥塞控制
    [Spring]第二篇:IOC控制反转
  • 原文地址:https://blog.csdn.net/ZhangRelay/article/details/127121546