一、安装
语音识别安装参考文章:安装教程
二、准备工作
如果没有安装turtlebot3的话需要先进行安装,可以参考我前面的博客:传送门
2.1 机器人位置初始化
本节博客要做的是利用科大讯飞的开源语音识别来导航turtlebot,也是展示服务机器人最基本的功能之一吧,那么要做到人工智能,像我在《ros机器人编程实践(7)》中写的使用rviz的2D pose Estimate
来人工标定机器人在rviz中的初始位置显然是不合理的,所以首先编写脚本初始化位置,然后加入到启动rviz的launch文件中。
2.1.1 查看初始化位置的话题详情
启动仿真环境:
roslaunch turtlebot3_gazebo turtlebot3_world.launch
启动rviz:
roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/map.yaml
查看turtlebot的所有话题:
rostopic list
虽然我英文不咋好,但是还是看懂了/initialpose
哈哈哈哈~
ok查看这个话题的详情:
rostopic info /initialpose
[1]消息类型是Type: geometry_msgs/PoseWithCovarianceStamped
[2]发布者是rviz
[3]使用者是amcl也就是定位的软件
然后查看这个消息的详情:
rosmsg info geometry_msgs/PoseWithCovarianceStamped
这里可以看明白层级关系了吧!
修改坐标x则:对象.pose.pose.position.x
修改四元数x则:对象.pose.pose.orientation.x
2.1.2 初始化位置脚本
ok假装你也看懂了,下面来写初始化的脚本:
sudo gedit ~/wanderbot_ws/src/wanderbot/src/initial_localization.py
#!/usr/bin/env python
import sys, rospy, tf, actionlib
from geometry_msgs.msg import *
from tf.transformations import quaternion_from_euler
if __name__ == '__main__':
rospy.init_node('initial_localization')
pub = rospy.Publisher('initialpose', PoseWithCovarianceStamped, queue_size=1)
p = PoseWithCovarianceStamped()
p.header.frame_id = "map"
p.pose.pose.position.x = -2
p.pose.pose.position.y = -0.5
p.pose.pose.position.z = 0
p.pose.pose.orientation = Quaternion(*quaternion_from_euler(0, 0, 0))
p.pose.covariance = \
[ 0.1 , 0, 0, 0, 0, 0,
0 , 0.1 , 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.1 ]
for t in range(0,5):
rospy.sleep(1)
pub.publish(p)
2.1.3 修改启动rviz的launch文件
roscd turtlebot3_navigation
cd launch/
ls
sudo gedit turtlebot3_navigation.launch
在最底下加上:
<!-- init -->
<node pkg="wanderbot" name="initial_localization"
type="initial_localization.py" output="screen">
</node>
2.1.4 启动rviz的launch文件测试结果
roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/map.yaml
可以看到效果很好,避免了人工摆放的随机误差。
接下一篇博客:ros机器人编程实践(15.2)- 使用科大讯飞语音控制turtlebot导航
来源:CSDN
作者:菁姐的后台
链接:https://blog.csdn.net/qq_37668436/article/details/104674938