Turtlebot3自动驾驶入门教程-通过隧道
说明
- 介绍如何实现通过隧道以及隧道的相关设置
制作地图
首先要确定机器人在整个自动驾驶流程的起点位置,因为机器人是基于里程计的信息来制作地图
其次是确定隧道的所在位置,隧道可以用木板围起来,只留下出口和入口
测试搭时建的示例场景
接下来是通过slam来制作地图
建图流程:参考链接
[Remote PC] 检查里程位置
$ rostopic echo /odom
header:
seq: 62
stamp:
secs: 1577331000
nsecs: 195457012
frame_id: "odom"
child_frame_id: "base_footprint"
pose:
pose:
position:
x: -1.02832900615e-12
y: 1.00520338719e-08
z: 0.0
orientation:
x: 0.0
y: 0.0
z: 0.00055068731308
w: 0.999999821186
covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
twist:
twist:
linear:
x: 0.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: -0.000228200646234
covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
---
注意:
- 机器人需要从起点位置通过键盘控制移动到隧道的中心位置,再启动slam程序,尽量不要扫描到太多隧道外围的地图
- 隧道入口是通过里程计反馈的坐标来确定,所以要确保机器人是从起点位置出发且出发时,里程计的坐标应该处于原点
相关设置
[Remote PC] 将保存好的地图复制到
turtlebot3_autorace/turtlebot3_autorace_control/maps
文件夹下且分别修改文件名为tunnel.yaml
和tunnel.pgm
,同时将tunnel.yaml
里面的image路径修改为image: tunnel.pgm
[Remote PC] 更改
turtlebot3_autorace/turtlebot3_autorace_detect/nodes/detect_tunnel
文件夹下detect_tunnel.py
的fnPubGoalPose函数里指定出口的位置及方向
def fnPubGoalPose(self):
goalPoseStamped = PoseStamped()
goalPoseStamped.header.frame_id = "map"
goalPoseStamped.header.stamp = rospy.Time.now()
goalPoseStamped.pose.position.x = 0.15
goalPoseStamped.pose.position.y = -1.76
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
- 出口的位置及方向的获取可以通过使用已经建好的地图来进行导航,同时监听topic:
/move_base/current_goal
,当在导航中指定目标时,监听的终端就会显示相应的坐标和方向
$ rostopic echo /move_base/current_goal
隧道测试
- 使用完整的自动驾驶程序进行测试:Turtlebot3自动驾驶入门教程-自动驾驶
但若导航时出错,需要关闭树莓派后重启机器人,确保机器人在起点出发时,里程计信息已重置
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号