* /RosAria/bumper_state [ROSARIA/BumperState] * /RosAria/sonar [sensor_msgs/PointCloud] * /RosAria/odom [nav_msgs/Odometry]
Subscriptions:
* /RosAria/cmd_vel [unknown type] //最好还是需要注明Message
Services:
* /RosAria/get_loggers
* /RosAria/set_logger_level
contacting node http://hal:35119/ ... Pid: 3695 Connections:
* topic: /rosout * to: /rosout
* direction: outbound * transport: TCPROS
rosnode info /rosaria_teleop_key_1
------------------------------------------------------------------------------- Node [/rosaria_teleop_key_1] Publications:
* /rosout [rosgraph_msgs/Log]
* /RosAria/cmd_vel [geometry_msgs/Twist]
Subscriptions: None
Services:
* /rosaria_teleop_key_1/get_loggers
* /rosaria_teleop_key_1/set_logger_level
contacting node http://marvin:37524/ ... Pid: 10811 Connections:
* topic: /rosout * to: /rosout
* direction: outbound * transport: TCPROS
* topic: /RosAria/cmd_vel
//写的是cmd_vel,但自动变为了这个 * to: /RosAria
* direction: outbound * transport: TCPROS
~$ rosnode info /rosaria_teleop_TfListener
------------------------------------------------------------------------------ Node [/rosaria_teleop_TfListener] Publications:
21
* /rosout [rosgraph_msgs/Log] * /cmd_vel [geometry_msgs/Twist] ///问题就出在这里!!!!!,应该是/RosAria/cmd_vel
Subscriptions:
* /tf_static [unknown type] * /tf [tf/tfMessage]
Services:
* /rosaria_teleop_TfListener/set_logger_level * /rosaria_teleop_TfListener/get_loggers
contacting node http://marvin:55079/ ... Pid: 11076 Connections:
* topic: /rosout * to: /rosout
* direction: outbound * transport: TCPROS * topic: /tf
* to: /RosAria (http://hal:37473/) * direction: inbound * transport: TCPROS 框架
KinectP3-ATPlayer骨骼信息Laptop控制指令Laptop
Voice
语言识别pocketsphinx
语言识别教程:http://wiki.ros.org/pocketsphinx . 该包更新之后, 可以用catkin了
1. 运行安装命令:sudo apt-get install ros-hydro-pocketsphinx
有错误提示
Err http://packages.ros.org/ros/ubuntu/ precise/main ros-hydro-pocketsphinx amd64 0.3.0-0precise-20140130-2150-+0000 404 Not Found
Failed to fetch http://packages.ros.org/ros/ubuntu/pool/main/r/ros-hydro-pocketsphinx/ros-hydro-pocketsphinx_0.3.0-0precise-20140130-2150-+0000_amd64.deb 404 Not Found E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
22
去该网页上找了, 发现只有20140304这一新的版本, 看来得需要先更新源,但运行sudo apt-get update 时报错:
W: GPG error: http://security.ubuntu.com precise-security Release: The following signatures were invalid: BADSIG 40976EAF437D05B5 Ubuntu Archive Automatic Signing Key 。。。Hash Sum mismatch
解决办法是:
sudo apt-get clean cd /var/lib/apt
sudo mv lists lists.old //把lists文件夹改名为list.old sudo mkdir -p lists/partial //新建文件夹 sudo apt-get clean sudo apt-get update
再运行安装命令,sudo apt-get install ros-hydro-pocketsphinx. 成功则提示:ldconfig deferred processing now taking place
2. 运行命令$ roslaunch pocketsphinx robocup.launch //不识别 还得手动敲进去 3. 需要在系统设置中设置麦克风的音量,要设置得大一些, 4. 查看发布的结果消息$ rostopic echo /recognizer/output
查看语音库
roscd pocketsphinx/demo
进入了文件夹; /opt/ros/hydro/share/pocketsphinx/demo$
识别结果的接收与显示
该程序的目的是: 对于在语言识别阶段发出的识别结果String, 将其获取
(Subscribe)后从屏幕上显示
1. 首先需要获取pocketsphinx的String输出Topic: 该Topic “/recognizer” 的Node信息为
~$ rosnode info /recognizer
----------------------------------------------------------------- Node [/recognizer] Publications:
* /recognizer/output [std_msgs/String] * /rosout [rosgraph_msgs/Log] Subscriptions: None Services: ??
因此可知Topic为”/recognizer/output”,Message为 [std_msgs/String],因此就可以设计程序了:
1. 创建包:catkin_create_pkg VoiceBridgePKG std_msgs rospy roscpp 2. CMakeList.txt中加入
add_executable(VoiceBridgeNode src/VoiceBridgeNode.cpp) target_link_libraries(VoiceBridgeNode ${catkin_LIBRARIES})
add_dependencies(VoiceBridgeNode VoiceBridgePKG_generate_messages_cpp) 3. 运行
rosrun VoiceBridgePKG VoiceBridgeNode
语言发布
sound_play包的说明: http://wiki.ros.org/sound_play How to Configure and Use Speakers with sound_play:
http://wiki.ros.org/sound_play/Tutorials/ConfiguringAndUsingSpeakers
安装与测试:
23
1. 先建立一个工作空间, 并编译:
mkdir -p ~/SoundPlay/src cd ~/ SoundPlay /src catkin_init_workspace cd ~/ SoundPlay catkin_make
a) 否则直接运行$ rosdep install sound_play会有错误提示找不到资源 sound_play:
ERROR: Rosdep cannot find all required resources to answer your query Missing resource sound_play
ROS path [0]=/opt/ros/hydro/share/ros ROS path [1]=/opt/ros/hydro/share ROS path [2]=/opt/ros/hydro/stacks
2. 进入src文件夹, 下载源包命令: git clone https://github.com/ros-drivers/audio_common.git。 成功则提示 100% done
a) 在该网站上提供了源Source: git https://github.com/ros-drivers/audio_common.git (branch:
hydro-devel), 那么说明应该像安装ROSARIA一样进行安装.
3. 安装该包:
a) source ~/catkin_ws_soundplay/devel/setup.bash b) $ rosdep install sound_play 有错误提示
Err http://packages.ros.org/ros/ubuntu/ precise/main ros-hydro-audio-common-msgs amd64 0.2.5-0precise-20140130-1931-+0000 404 Not Found 试一下更新源, 但提示错误:
Failed to fetch http://packages.ros.org/ros/ubuntu/pool/main/r/ros-hydro-audio-common-msgs/ros-hydro-audio-common-msgs_0.2.5-0precise-20140130-1931-+0000_amd64.deb 404 Not Found E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing? ERROR: the following rosdeps failed to install
apt: command [sudo apt-get install ros-hydro-audio-common-msgs] failed
测试运行rosdep update更新:(在src文件夹下),结果是updated cache in
/home/listname/.ros/rosdep/sources.cache. 再运行rosdep install sound_play 还是不行 错误提示The following packages have unmet dependencies:
libgstreamer-plugins-base0.10-dev : Depends: libgstreamer-plugins-base0.10-0 (= 0.10.36-1) but 0.10.36-1ubuntu0.1 is to be installed
Depends: gir1.2-gst-plugins-base-0.10 (= 0.10.36-1) but 0.10.36-1ubuntu0.1 is to be installed E: Unable to correct problems, you have held broken packages. ERROR: the following rosdeps failed to install
apt: command [sudo apt-get install libgstreamer-plugins-base0.10-dev] failed
重装系统后,再运行上面步骤, 就可以了(需要上面建包的步骤) 成功则提示: All required rosdeps installed successfully
c) $ rosmake sound_play ; 刚开始不行, 之后某段时间,再运行该句话,就可以了。成
功则提示:Built 27 packages with 0 failures.
4. (不需进行如下的步骤, 因为默认声卡就1个) 列出声卡设备: cat /proc/asound/cards
结果是: 0 [PCH ]: HDA-Intel - HDA Intel PCH; HDA Intel PCH at 0xd3610000 irq 46
asoundconf set-default-card [device #]//设置默认声卡, 总提示asoundconf找不到该命令 sudo apt-get install alsa-utils//执行改命令来安装,也不行
再输入asoundconf is-active, 总提示asoundconf找不到该命令
echo 'include \跟setup bash一样? 5. 运行
a) 得需要先catkin_make一下
b) $ rosrun sound_play soundplay_node.py成功则提示[INFO] [WallTime:
1395715034.562594] sound_play node is ready to play sound
c) 在另一Terminal中运行:$ rosrun sound_play say.py \成功则发声并提
示:Saying: hello world; Voice: voice_kal_diphone
利用程序来控制发声:
24
1. 文件名修改: 在~/SoundPlay/src/audio_common/sound_play/test下,有文件test.cpp,之
前利用命令catkin_make生成时,由于它与python下的一文件test.py重名了(在外面的CMakeList。txt文件中加入add_executable等后,报错,发现的?),因此无法生成节点。解决方法是: 将test.cpp改名为testcpp.cpp后, 再进行catkin_make就生成了testcpp节点了。
a) 也可以改为SoundDemo.cpp.
2. 运行:rosrun sound_play soundplay_node.py(需要先source devel/setup.bash一下) 3. 再运行rosrun sound_play testcpp, 之后就发出了test.cpp中的语言了
综合: 捕获String并发声
1. 在SoundPlay的testcpp.cpp的基础上进行修改。并参照“识别结果的接收与显示”一节的VoiceBridgeNode.cpp。所得文件为RespondVoice.cpp。 2. 修改RespondVoice.cpp”旁边的“CMakeList.txt: add_executable(RespondVoice RespondVoice.cpp)
target_link_libraries(RespondVoice ${catkin_LIBRARIES}) add_dependencies(RespondVoice sound_play_gencpp) 3.运行:
a)运行声音捕捉/识别(包含发送String)$ roslaunch pocketsphinx robocup.launch b) source devel/setup.bash
rosrun sound_play soundplay_node.py c)再运行source devel/setup.bash rosrun sound_play RespondVoice.cpp
Debug:
在main中加入下面语句就可以:,
sound_play::SoundClient sc2;//sc2.say(\否则提示:
[ WARN] [1395992984.300656028]: Sound command issued, but no node is subscribed to the topic. Perhaps you forgot to run soundplay_node.py 原因???
两主机通讯ROS_Network
参考网址
http://wiki.ros.org/ROS/NetworkSetup ;http://wiki.ros.org/ROS/Tutorials/MultipleMachines
ROS的分布式特点: 对两主机进行简单配置后, 若有相同的Topic, 则节点之间即可跨主机利用网络进行通讯. 因此网络通讯/控制变为十分简单.
安装sshd(需要这步吗??, 直接下一步应该也行?)
首先运行ssh marvin, 有提示错误:ssh: Could not resolve hostname hal: Name or service not known
解决方法:先修改/etc/hosts文件:进入该文件夹: cd /etc ; sudo gedit hosts;加入语句192.168.0.12(Tab键)marvin ? (例如216.239.37.99 www.google.com google; 每行也可以是两部份,即主机IP地址和主机名;比如 192.168.1.100 linmu100,无需重启网络)
再运行ssh marvin, 又有错误提示ssh: connect to host marvin port 22: Connection refused
检查是否有ssh:service ssh status, 若没有, 则安装ssh server:sudo apt-get install
25