实现一款简易版语音控制 Transbot 小车运动的demo

2 篇文章 0 订阅
2 篇文章 0 订阅

打算把我学习ROS、自动驾驶、语音识别的过程记录整理成系列,第一个系列是如何利用Tranbot小车实现一些DIY方案有bug地方还请指正,共同学习。

引言

本文是入门级demo实现,实现语音控制小车运动,实现方式步骤概述如下:

        1,笔记本电脑安装虚拟机,配置ROS环境

        2,虚拟机安装科大讯飞语音听写SDK

        3,虚拟机与小车jetson nano 实现ros主从通信

        4,利用监听机制,实现口令控制小车

该实现方案我是借助的 Transbot ROS教育机器人 进行的二次开发,该款机器人功能比较齐全适合做学习开发使用,当然网上也有其他机器人或者自己设计机器人小车进行开发的教程,由于博主是该方向的萌新,哈哈哈,先学起来,后续积累好基础后,再尝试自己设计机器人。

        完成该demo需要掌握一定的基础能力:ROS、python、linux

        下面所用到的代码模块已上传个人github仓库:

        lzl1456/Transbot_car_lzl: DIY control car (github.com)

实现细节

一. 环境

         虚拟机:Ubuntu18.04     +  讯飞语音SDK  语音识别在线版   + ROS机器人操作系统

         小车:Transbot旗舰版 搭载Jetson Nano 4GB  + ROS机器人操作系统

二. 架构

        由于tranbot小车无语音模块,需要借助笔记本电脑拾音,所以采下面这种架构实现本demo.

三. 实现步骤

1. 笔记本电脑安装虚拟机,配置ROS环境

        win10上安装虚拟机部分可以参考网络上配置ubuntu18.04虚拟机教程!

        链接: VMware安装Ubuntu18.04(必会) - 知乎 (zhihu.com)

        虚拟机安装ROS环境可以参考古月·ROS入门21讲里面的ROS安装

        链接:【古月居】古月·ROS入门21讲 | 一学就会的ROS机器人入门教程_哔哩哔哩_bilibili

2. 虚拟机安装科大讯飞语音SDK

        这部分可以参考我的博客 : https://blog.csdn.net/m0_65173341/article/details/124782936

        完成SDK环境布置后参考下载的SDK包里面的sample代码,修改自己的tranbot_voice_xf.cpp代码,代码在github上,创建自己的工作空间和代码见后面内容。

3. 虚拟机与小车jetson nano 实现ros主从通信

        调试小车时候,使用VNC远程调试比较方便,输入账号密码,这里用的机器初始化账号密码,账号:jetson   密码:yahboom

        连接VNC的时候。注意Transbot小车网络是否跟笔记本电脑匹配,不匹配的话,VNC远程登陆会失败

        

        实现主从机通信部分可以参考我的博客 :        https://blog.csdn.net/m0_65173341/article/details/124784788

4. 利用监听机制,实现口令控制小车运动

下面涉及了ROS一些基础能力,比如开辟工作空间、创建功能包,消息机制、订阅/监听机制等,可以根据古月居·入门21讲学习,链接:【古月居】古月·ROS入门21讲 | 一学就会的ROS机器人入门教程_哔哩哔哩_bilibili

虚拟机:

        运行语音监听模块,发布监听到的语音信息,发布一个信息 learning_topic::Wakebot(micphnoe语音转写的文字)

具体实现代码步骤如下

出于一些原因,以下有些路径里面的* 屏蔽了一些名字,大家自己建立文件夹的时候,注意

建立生成的工作空间路径:/home/*/*/catkin_ws     

工作空间下创建功能包:

cd /home/*/*/catkin_ws/src

catkin_create_pkg transbot_lzl std_msgs rospy roscpp

编译功能包:

cd /home/*/*/catkin_ws

catkin_make

source devel/setup.bash

创建代码  (tranbot_voice_xf.cpp 是根据讯飞sample 实现的满足自己需求的代码),另外两个c代码,是需要调用的模块,直接从下载好的SDK包里sample里面copy过来即可

修改tranbot_voice_xf.cpp代码.h文件的导入路径,这部分需要修改这个地方,然后拷贝对应的.h文件到include/transbot_lzl里面

再次编译功能包:

cd /home/*/*/catkin_ws

catkin_make

source devel/setup.bash

Transbot:

        运行小车控制模块,监听learning_topic::Wakebot 消息,该消息根据自己需求定义msg,目前只是用wakewords成员变量,如何自定义msg,参考ros教程

识别文字str消息类容,匹配定义好的功能模块

        (0)语音:“你好”,蜂鸣器响300ms,表示收到
        (1)语音:“前进一”、“前进二”、“前进三”、“前进四”,小车前进不同距离;
        (2)语音:“后退一”、“后退二”、“后退三”、“后退四”,小车后退不同距离;
        (3)语音:“左转一”、“左转二”、“左转三”、“左转四”,小车左转不同角度;
        (4)语音:“右转一”、“右转二”、“右转三”、“右转四”,小车右转不同角度;

具体实现代码步骤如下

生成工作空间路径: /home/jetson/lzl_Transbot/catkin_ws  

工作空间下创建功能包:/home/jetson/lzl_Transbot/catkin_ws/src/learning_topic

创建代码  (tranbot_example.py)

 tranbot小车控制库环境无需自己搭建,直接在代码里调用就好,这部分参考tansbot小车官网教程学习官网

效果展示

Transbot端运行:

roscore

cd  /home/jetson/lzl_Transbot/catkin_ws/src/learning_topic/scripts/

python tranbot_example.py

 程序已经运行,正在监听learning_topic::Wakebot消息

虚拟机端运行:

rosrun transbot_lzl transbot_voice_xf

 程序已经运行起来,通过输入1后,说命令词即可,按2退出

实际效果展示:

       

语音控制1

        实际效果不错,识别准确,运行功能完整,但是采用的在线识别SDK模块,识别速度比较慢,加上ROS多机发布接收,响应时间较慢。

        后续可以改进:

        1,离线SDK

        2,Transbot小车安装语音模块

        3,自动避障等其他功能

参考资料

古月居 胡老师 的 机器人操作系统ROS理论与实践

ros学习

Transbot ROS机器人(Jetson nano) (yahboom.com)

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值