【ROS RIKIBOT 基础--使用系列 第十章节】KCF追踪跟随、AR多标签检测,AR跟随功能、语音功能、多机器人控制、Gazebo仿真

1.RIKIBOT KCF追踪跟随

1.1 相关包说明
KCF追踪跟随功能,是利用Opencv KCF做特定追踪功能,这里我们引入了rgbd摄像头的深度功能,能够检测追踪目标的距离,从而能让小车进行前后左右追踪跟随。
跟随说明:识别的物体距离小于1.2米,机器人会往后退,大于1.6米,机器人会前进。
介于1.2米到1.6米之间,停止不动。
1.2 相关功能使用操作
使用前,确保接好深度摄像头。
1.2.1 打开一个终端,启动bringup
roslaunch rikibot bringup.launch
1.2.2 打开一终端,启动
roslaunch rikibot_kcf rikibot_kcf.launch
启动完成后会弹出一个窗口,此时用户需要按住左键,框选你要追踪的目标,选择完成后,会变成黄色,此时系统会追踪相关的目标,用户可以移动相关目标,此时车就会移动,注意移动时不要过快,毕竟树莓派算力有点差,如果要效果好的话建议换更好的主控,例如Jetson Nano 或者工控机去测试。
在这里插入图片描述

2.RIKIBOT AR多标签检测,AR跟随功能

2.1 生成标签命令
rosrun ar_track_alvar createMarker -s 5 0
rosrun ar_track_alvar createMarker -s 5 1
rosrun ar_track_alvar createMarker -s 5 2
在这里插入图片描述
2.2 AR多标签检测分为基于普通摄像头的标签检测与基于深度摄像头的检测检测
2.2.1 基于普通摄像头的标签检测
1、打开一个终端,启动基于摄像头的AR检测
roslaunch rikibot_ar_track rikibot_ar_camera.launch
2、重新打开一个终端,打开rviz,打开
” ~/catkin_ws/src/rikibot_project/rikibot_ar_track/rviz/rikibot_ar_tags.rviz”,然后将要识别的AR标签放在摄像头的前方,可以看到相关AR的姿态。
3、打开另外一个终端运行: rviz
在这里插入图片描述
4、重新打开一个终端,查以看看相关姿态话题,这里有相对于小车位置姿态
rostopic echo /ar_pose_marker
position zyx 就是识别的 AR标签 相对小车的坐标
在这里插入图片描述
2.2.2 基于深度摄像头的AR标签检测
1、打开一个终端,启动基于摄像头的AR检测
roslaunch rikibot_ar_track rikibot_ar_depth.launch
2、重新打开一个终端,打开rviz,打开
” ~/catkin_ws/src/rikibot_project/rikibot_ar_track/rviz/rikibot_ar_tags.rviz”,然后将要识别的AR标签放在摄像头的前方,可以看到相关AR的姿态。
3、打开另外一个终端 运行 rviz
在这里插入图片描述
4、重新打开一个终端,查以看看相关姿态话题,这里有相对于小车位置姿态
$rostopic echo /ar_pose_marker
position zyx 就是识别的 AR标签 相对小车的坐标
在这里插入图片描述
2.3 基于AR的 跟随
2.3.1 打开一个终端启动brinup.launch
roslaunch rikibot bringup.launch
2.3.2 打开一个终端,启动基于摄像头的AR检测
roslaunch rikibot_ar_track rikibot_ar_depth.launch
2.3.3 启动AR跟随
roslaunch rikibot_ar_track rikibot_ar_follower.launch
此时移动AR码车会跟着AR码移动而移动,不过由于树莓派上运行跟随有点卡,建议自己换更好的平台去运行。

3.RIKIBOT 语音功能

3.1 功能介绍
语音控制模块我们采用的是 Respeaker Mic Array v2.0远场麦克风阵列(理论识别距离4米),带声源定位,识别效果与用户使用的环境与说话清不清楚有很大关系,目前只识别为普通话。
在这里插入图片描述
通过安卓数据线直接与语音阵列模块相连接就可以使用
3.2 语音控制方案:
语音控制由单独的语音识别包去完成语音识别,我司提供的语音包,已经封装好相关的语音驱动与后台语音调用接口,用户可以通过此包可以自己进行二次开发,做一个对话机器人或者语音控制其它设备,由于后台语音是第三方在线语音服务,因此要使用语音需要联网,每台设备都需要绑定授权。
3.3 授权码填写
用户如果是买的语音套餐,我们都会绑定好授权码,如果用户是后续购买的语音套餐,需要自己加入授权码。
启动系统后,打开终端后,打开用户目录下面的.bashrc文件,里面的最后一行RIKI_SERIAL等号后面的为授权码,如果授权码不对,用户启动会报错
vim ~/.bashrc
在这里插入图片描述
3.4 正确接入语音设备,并查找语音设备
3.4.1 接入好音响,音响自带电池正常使用官方续航是3-4个小时,及语音模块,语音模块连接的那条安卓数据线接到树莓派,然后打开音响设备,音响设备颜色是随机发的,然后打开设备,蓝色指示灯会亮起,如果没有亮起来,音响旁边的MicroUSB口可以充电。(如果临时接入树莓派时,可能会出现USB供电不稳定,如果遇到这种情况,用户可以接好所有设备后,在上电启动)。
在这里插入图片描述
3.4.2 由于系统每次接入设备时有一个默认设备ID,这个设备ID在调用语音时我们需要使用到,但可能由于不同的系统加载时ID不一样,这时我们需要重新查找一下设备ID,经测试一般在同样的系统启动的ID都一样,一般更改一次后就不用更改。
测试设备ID号,打开一个终端,启动下面文件,然后等驱动加载完成后,如下图显示,设备号为1:
roslaunch rikibot_ai_speech rikibot_speaker_driver.launch
在这里插入图片描述
3.5语音对话
3.5.1检查设备ID
打开终端,进入到语音包的lanuch文件,打开rikibot_chat.launch文件
roscd rikibot_ai_speech/launch
在这里插入图片描述
检查device_id是不是与我们查找的ID一样,不是就改过来

3.5.2 保证小车能上网,启动语音对话,需要等待10s以上,加载完成语音启动文件后,就可以对话了,目前没有本地唤醒词,直接说你想要问的内容即可,系统会播放AI说的话,至于想问啥,用户自己慢慢体验吧。
roslaunch rikibot_ai_speech rikibot_chat.launch
在这里插入图片描述
3.6 语音控制功能
3.6.1 检查设备ID
打开终端,进入到语音包的lanuch文件,打开rikibot_speech_ctrl.launch文件
roscd rikibot_ai_speech/launch
检查device_id是不是与我们查找的ID一样,不是就改过来
3.6.2 打开一个终端,启动bringup.launch
roslaunch rikibot bringup.launch
重新打开一个终端,启动语音控制,等待语音模块加载完成,启动完成后,对着小车说小车前进、小车后退、小车左转、小车右转,识别到后小车会做出相应的动作,这里设置了超时时间,车运行一段时间后停止,防止语音控制后,车跑远了,语音识别不到撞墙,更改在rikibot_speech_ctrl.launch文件的stop_time,默认是5秒,具体其它控制,用户可以自己更改代码。
roslaunch rikibot_ai_speech rikibot_speech_ctrl.launch

在这里插入图片描述
3.7 语音召唤功能
3.7.1 语音模块带声源定位功能,每次对着语音模块说话时,会出现一个最亮的灯,代表此时最亮灯方位声源最强,因此我们可以利用这一点与里程计中的姿态功能,来做一个召唤功能。
3.7.2 检查设备ID
打开终端,进入到语音包的lanuch文件,打开rikibot_speech_ctrl.launch文件
roscd rikibot_ai_speech/launch
检查device_id是不是与我们查找的ID一样,不是就改过来
3.7.3 打开一个终端,启动bringup.launch
roslaunch rikibot bringup.launch
3.7.4 启动召唤功能,等待语音加载完成,加载完成后,这里对着
roslaunch rikibot_ai_speech rikibot_summoner.launch
在这里插入图片描述
3.8 语音导航
语音模块带声源定位功能,每次对着语音模块说话时,会出现一个最亮的灯,代表此时最亮灯方位声源最强,因此我们可以利用这一点与里程计中的姿态功能,来做一个召唤功能。
3.8.1 检查设备ID
打开终端,进入到语音包的lanuch文件,打开rikibot_speech_ctrl.launch文件
roscd rikibot_ai_speech/launch
检查device_id是不是与我们查找的ID一样,不是就改过来
3.8.2打开一个终端,启动bringup.launch
roslaunch rikibot bringup.launch
再打开一个终端,启动navigate.launch
roslaunch rikibot navigate.launch
3.8.3 参考巡航模式设定语音导航的目的地,这里怎么设置目的地,参考巡航模式,当记录好坐标后,进入代码里面,把坐标写入代码,进入
~/catkin_ws/src/rikibot_project/rikibot_ai_speech/nodes目录下,
打开rikibot_speech_nav.py文件,把对应的关键词坐标点改成你记录好的坐标,保存退出。
vim rikibot_speech_nav.py
在这里插入图片描述
3.8.4启动语音导航,等待加载完成后,说出语音识别的关键词,比如说:去厨房,看我要语音识别到,小车自己会去厨房相关的导航坐标点。
roslaunch rikibot_ai_speech rikibot_speech_nav.launch
目前语音我们整合了以上DEMO,更多玩法用户可以自己尝试。

4.RIKIBOT 多机器人控制

4.1 说明
这里需要两台RIKIBOT机器人来实现,多机器人通信控制,此示例是一个机器人轨迹跟随示例,机器人1运动姿态,通过TF广播的形式给机器人2,机器人2监听到数据后,跟着机器人1运动。
4.2 操作说明
这里我们以riki1为机器人1,那么riki2 为机器人2,后面我都会以riki1,riki2代表这两个机器人,这里riki1做主机,riki2做从机,因此riki2的ROS_MASTER_URI就需要指向riki1
更改riki2的ROS_MASTER_URI,首先上电两台机器查看riki1的IP,这里的IP是192.168.0.104。
在这里插入图片描述
4.3 然后进入riki2,打开终端,编译 bashrc文件,改变ROS_MASTER_URI为下图形式,然后保存退出
$vim .bashrc
在这里插入图片描述
4.4 进入riki1的主控端,启动riki1的多机控制,并指定机器人编号为riki1
roslaunch rikibot robot_bringup.launch robot_name:=“riki1”
4.5 进入riki2的主控端,启动riki2的多机控制,并指定机器人编号为riki2
roslaunch rikibot robot_bringup.launch robot_name:=“riki2”
4.6 启动轨迹跟随控制,这里我们在riki1或者riki2端都可以启动
roslaunch rikibot rikibot_multi_vel_follower.launch
4.7 启动键盘控制,由于现在机器人都有编号,因此不能用rosrun的方式启动键盘,我们必需指机器编号,因为我们现在是让riki2跟着riki1动,因此我们在riki1端启动键盘控制的launch文件
roslaunch rikibot teleop_twist.launch robot_name:=“riki1”
启动完成后,控制riki1,此时riki2就会跟着动起来。

5.RIKIBOT Gazebo仿真

1.、建地图仿真
远程软件登录到系统桌面,打开一个终端加载仿真环境。
在这里插入图片描述
在这里插入图片描述
在该路径下有很多SLAM算法可供大家仿真使用,下面我们用gammpping算法为例子启动仿真。
在这里插入图片描述
在打开另外一个终端,启动
roslaunch rikibot_navigation gmapping_demo.launch
在这里插入图片描述
在打开另外一个终端,启动键盘控制
roslaunch rikibot_teleop rikibot_teleop.launch
在这里插入图片描述
在这里插入图片描述
添加TF坐标
用键盘控制机器人移动完成地图构建
保存地图:
在这里插入图片描述
2、导航仿真
远程软件登录到系统桌面,打开一个终端加载仿真环境。
在这里插入图片描述
在这里插入图片描述
在打开另外一个终端,启动
roslaunch rikibot_navigation nav_cloister_demo.launch
在这里插入图片描述

最后的最后

Rikirobot提供两驱动、四驱动、麦克纳姆轮、Omni全向三轮、Omni全向四轮、履带、阿克曼(舵机转向)、大型负载的各种ROS车,有配套指导、及完善售后。
QQ交流群:130486387
RIKIROBOT店铺连接
下面是店铺的二维码、微信公众号二维码、Rikirobot的交流群,有兴趣的可以扫一扫。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值