< >
Home » Turtlebot3自动驾驶2020入门教程_视频版 » Turtlebot3自动驾驶2020入门教程-通过隧道

Turtlebot3自动驾驶2020入门教程-通过隧道

Turtlebot3自动驾驶2020入门教程-通过隧道

说明:

  • 介绍如何实现通过隧道以及隧道的相关设置

制作地图

  • 首先要确定机器人在整个自动驾驶流程的起点位置,因为需要基于里程计的信息来制作地图

  • 其次是确定隧道的所在位置,隧道可以用木板或纸箱围起来,只留下出口和入口

  • 接下来是通过slam来制作地图

  • [Remote PC] 新终端,启动roscore

$ roscore
  • [TurtleBot SBC] 新终端,启动机器人
$ roslaunch turtlebot3_bringup turtlebot3_robot.launch
  • [Remote PC] 新终端,启动键盘控制
$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
  • 键盘控制机器人移动到隧道的中心位置

  • [Remote PC] 新终端,启动slam建图程序

$ roslaunch turtlebot3_slam turtlebot3_slam.launch

请输入图片描述

注意

  • 机器人需要从起点位置通过键盘控制移动到隧道的中心位置,再启动slam程序,尽量不要扫描到太多隧道外围的地图
  • 隧道入口是通过里程计反馈的坐标来确定,所以要确保机器人是从起点位置出发且出发时,里程计的坐标应该处于原点
  • 建图完成后,需要设置隧道任务中隧道出口的位置及方向

  • 使用在RViz中上方菜单栏上的Pushing Ponit,点击按钮后将鼠标移动RViz的地图上,左下角位置会出现具体的坐标

  • 将机器人移动到出口靠后一点的车道位置,再用Pushing Ponit方法获取到当前的坐标

  • [Remote PC] 新终端,更改turtlebot3_autorace/turtlebot3_autorace_detect/nodes/detect_tunnel文件夹下detect_tunnel.py的fnPubGoalPose函数里指定出口的位置及方向

$ rosed turtlebot3_autorace_detect detect_tunnel

## 修改goalPoseStamped.pose.position.x和goalPoseStamped.pose.position.y的值为前面获取到的坐标
def fnPubGoalPose(self):        
        goalPoseStamped = PoseStamped()
        goalPoseStamped.header.frame_id = "map"
        goalPoseStamped.header.stamp = rospy.Time.now()
        goalPoseStamped.pose.position.x = -0.3
        goalPoseStamped.pose.position.y = -1.78
        goalPoseStamped.pose.position.z = 0.0
        goalPoseStamped.pose.orientation.x = 0.0
        goalPoseStamped.pose.orientation.y = 0.0
        goalPoseStamped.pose.orientation.z = 0.0
        goalPoseStamped.pose.orientation.w = 1.0
  • [Remote PC] 新终端,保存地图
$ rosrun map_server map_saver -f ~/turtlebot3_ws/src/turtlebot3_autorace_2020/turtlebot3_autorace_driving/maps/tunnel

测试步骤

  • 关闭此前打开的所有终端

  • [Remote PC] 新终端,启动roscore

 $ roscore
  • [TurtleBot SBC] 新终端,启动摄像头
$ roslaunch turtlebot3_autorace_camera turtlebot3_autorace_camera_pi.launch
  • [TurtleBot SBC] 新终端,启动机器人
$ roslaunch turtlebot3_bringup turtlebot3_robot.launch
  • [Remote PC] 新终端,启动action模式下的内标定程序
$ roslaunch turtlebot3_autorace_camera intrinsic_camera_calibration.launch
  • [Remote PC] 新终端,启动键盘控制
$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
  • 测试时,需要将机器人放在整个自动驾驶流程的起点位置,同时使用键盘控制将机器人移动到隧道入口前面的车道上
  • [Remote PC] 新终端,启动tunnel任务
$ roslaunch turtlebot3_autorace_core turtlebot3_autorace_core.launch mission:=tunnel
  • [Remote PC] 新终端,启动rqt
$ rqt
  • 左上角菜单栏上选择plugins -> visualization -> Image view

  • 分别打开多个图像窗口选择不同话题

  • 打开窗口,选择topic:/detect/image_traffic_sign/compressed

  • 打开窗口,选择topic:/detect/image_lane/compressed

  • [Remote PC] 发布任务模式为2的话题信息

$ rostopic pub -1 /core/decided_mode std_msgs/UInt8 "data: 2"

请输入图片描述

注意:

  • 测试时,但若发现此前设置的出口点坐标有变差,可以根据实际情况重新修改出口点坐标的值
  • 但若测试不成功,需要重新测试时,请关闭树莓派后重启机器人电源再进行测试,确保机器人的里程归零

演示视频

  • 建图视频
  • 测试视频

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: none