ros_respeaker的配置和使用
创建catkin工作空间
在终端中输入如下命令,可以在根目录下创建catkin工作空间:
source /opt/ros/indigo/setup/bash
mkdir -p ~/catkin_ws/src
cd ~catkin_ws/src
catkin_make
该空间的结构如图1所示。
图1 catkin工作空间的目录
编译respeaker_ros程序包
所有ros程序包必须在catkin工作目录下进行编译后才能运行,首先我们在工作空间的src目录下将远程库中的代码克隆下来。
cd ~/catkin_ws/src
git clone https://github.com/furushchev/respeaker_ros.git
cd ..
rosdep install --from-paths src -i -r -n -y
其中我们用到了rosdep命令,该命令用于安装缺失的依赖项。在执行该命令的过程中有可能会出现未安装等错误,需要执行如下代码在安装后初始化并更新该工具。
sudo apt-get rospack-tools
rosdep init
rosdep update
最后使用catkin_make
命令ros包进行编译
配置软硬件的支持
首先要对respeaker麦克风提供外部设备许可
roscd respeaker_ros
sudo cp -f $(rospack find respeaker_ros)/config/60-respeaker.rules /etc/udev/rules.d/60-respeaker.rules
sudo systemctl restart udev
其次安装python包的依赖
roscd respeaker_ros
sudo pip install -r requirements.txt
最后更新firmware以实现对底层设备的控制,从远程仓库中可以获取到相应的包,通过输入如下命令进行安装。
git clone https://github.com/respeaker/usb_4_mic_array.git
cd usb_4_mic_array
sudo python dfu.py --download 6_channels_firmware.bin # The 6 channels version
运行respeaker程序包
可以通过发布在rostopic上的消息获得诸如声源位置角度等信息
roslaunch respeaker_ros respeaker.launch
rostopic echo /sound_location
效果如下:
图2 直接从话题获得的消息.png
我也自行编写了一个节点用于获取和接收respeaker_node发出的消息,命名为info_shower,可以将该数据从话题中取出并输出,效果如下:
图3 自行编写接收节点订阅消息.png
遇到的问题
1.python_catkin_tools版本过低产生的依赖问题
该问题目前没有能够解决,尝试了使用sudo apt-get install
和sudo aptitude reinstall
以及sudo apt-get -f install
等命令都不能解决问题,在开源社区中也没有找到类似问题,于是重新装配了一个新的虚拟机后,直接更新软件、下载依赖项后在进行环境配置才解决问题。
2.程序中import angles语句引起的库文件缺少的情况
这个问题的解决比较曲折,最开始我以为angles指的是python中的一个库文件,故直接使用sudo pip install angles命令进行安装,但是最后始终没有得到正确的输出,在roscore的调试信息中显示了没有其中的shortest_angular_distance函数,最后通过ROS wiki的官方文档、社区发现了ROS实现的angles库,克隆安装后才解决问题,如下图所示:
图4 ROS wiki上的介绍.png 图5 Github上提供的开源代码.png
网友评论