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"
注意:
- 测试时,但若发现此前设置的出口点坐标有变差,可以根据实际情况重新修改出口点坐标的值
- 但若测试不成功,需要重新测试时,请关闭树莓派后重启机器人电源再进行测试,确保机器人的里程归零
演示视频
- 建图视频
- 测试视频
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号