turtlebot3-burger_150.png
turtlebot3-waffle-pi_150.png
turtlebot3-arm_150.png
walking-y2_150.png
turbot3-multi_150.png
turbot3-dl-ros1_150.png
turbot3-ai.png
turbot3-dl-ros2_150.png
turbot3-slam_150.png
turbot3-arm_150.png
turtlebot4-lite_150.png
turtlebot4-pro_150.png
turbot4-dl_150.png
turbot4-ai_150.png
aidriving-racebot_150.png
aidriving-autodrive_150.png
turtlebot-arm_150.png
openmanipulator-x_150.png
Home » Turtlebot3自动驾驶2020入门教程_视频版 » Turtlebot3自动驾驶2020入门教程-通过隧道

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

纠错,疑问,交流: 请进入讨论区请点击进入页面,扫码加入微信群或Q群进行交流

获取最新文章: 扫一扫加入“创客智造”公众号

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"

请输入图片描述

注意:

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

演示视频

  • 建图视频
<iframe height=498 width=100% src="//player.bilibili.com/player.html?aid=979176616&bvid=BV1P44y1n7yN&cid=511660799&page=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>
  • 测试视频
<iframe height=498 width=100% src="//player.bilibili.com/player.html?aid=636709212&bvid=BV1Zb4y147oc&cid=511661318&page=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>

纠错,疑问,交流: 请进入讨论区请点击进入页面,扫码加入微信群或Q群进行交流

获取最新文章: 扫一扫加入“创客智造”公众号


标签: none