在hydro版本下面,添加自己的.cpp文件,然后编译的方法:
catkin_make编译:
add_executable(parser src/parser.cpp)
target_link_libraries(parser ${catkin_LIBRARIES})
对比古月居使用前面版本的方法:
rosbuild编译:
- rosbuild_add_boost_directories()
- rosbuild_add_executable(smartcar_keyboard_teleop src/keyboard.cpp)
- target_link_libraries(smartcar_keyboard_teleop boost_thread)
turtlesim机器人的仿真:
1. 使用rosrun运行node.可以改造成launch文件的方式。 done.
2. 机器人的模型是自己画出来的,可以改造成urdf形式的机器人。done. 3. teleop_key键盘操作,可以改造成语音控制的形式。
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
roslaunch turtlesim turtle_teleop.launch
创建自己的package方法:
ppeix@ppeix-ppstudio:~/tutorials/catkin_ws/src$catkin_create_pkg r2d2 std_msgs roscpp rospy
漏加了一个tf库,导致catkin_make编译不通过。
在package.xml文件中添加build_depend run_depend即可。需要在CMakeList.txt中同步添加tf库。
1
2
3
4
5
rosrun r2d2 state_publisher
典型的launch文件举例:
-
-
-
-
-
-
-
-
-
运行rbx1时,提示找不到dae文件,一直没有找到合适的解决办法。
roslaunch turtlebot_gazebo turtlebot_empty_world.launch
再次运行gazebo simulator时,简单的quick start都不能运行了。无奈重新安装hydro包。
首先删除:
sudo apt-get remove ros-hydro-*
然后再次安装
sudo apt-get install ros-hydro-desktop-full
catkin_init_workspace
catkin_init_workspace
catkin_make
终于将arbitix机器人跑起来了。
遇到的问题:
1. catkin_make之后的包,拷贝到ROS_PACKAGE_PATH路径看到的地方。注意如果有多个地方同时有自定义的包,ROS_PACKAGE_PATH有先后顺序的。
之前遇到的找不到//package...dae文件的问题,就是因为有限搜索了catkin_ws/src路径下面的包,找不到dae文件。而ROS_PACKAGE=$ROS_PACKAGE_PATH:.之后,就可以搜索到了。
2. rviz窗口中只能看到TOP view的问题,通过修改Views菜单来实现。而网上教程早期版本用的还是修改vcg文件的方法,已经不适用了。
安装rqt工具:
sudo apt-get install ros-hydro-rqt ros-hydro-rqt-common-plugins ros-hydro-turtlesim
catkin_create_pkg smartcar_description urdf
ROS node编程模板
http://www.robotos.net/thread-54-1-1.html
pcDuino 书籍_第三章: C语言和pcDuino的Arduino风格IDE
pcDuino的硬件PWM和软件PWM分配
http://www.oschina.net/question/1174645_121224
hydro 语音包处理。
sudo apt-get install gstreamer0.10-pocketsphinx
sudo apt-get install ros-hydro-audio-common
sudo apt-get install libasound2
下载最新的hydro版本pocketsphinx包源码(教程上的旧版本只适用于对应的ros版本,大多数包都有此问题)
git clone https://github.com/mikeferguson/pocketsphinx.git
执行roslaunch pocketsphinx robocup.launch 时提示找不到包的错误。
File "/usr/lib/pymodules/python2.7/rospkg/rospack.py", line 190, in get_path
raise ResourceNotFound(name, ros_paths=self._ros_paths)
rospkg.common.ResourceNotFound: pocketsphinx
ROS path [0]=/opt/ros/hydro/share/ros
ROS path [1]=/opt/ros/hydro/share
ROS path [2]=/opt/ros/hydro/stacks
ROS path [3]=.
[recognizer-2] process has died [pid 11893, exit code 1, cmd /home/ppeix/tutorials/catkin_ws/src/pocketsphinx/nodes/recognizer.py __name:=recognizer __log:=/home/ppeix/.ros/log/ab621940-b099-11e3-9789-002511e7bcff/recognizer-2.log].
log file: /home/ppeix/.ros/log/ab621940-b099-11e3-9789-002511e7bcff/recognizer-2*.log
即问题为:
roslib.load_manifest('pocketsphinx')执行失败
解决办法:
将pocketsphinx拷贝到/opt/ros/hydro/share目录中
还遇到一种情况是,type为.py文件时,文件执行权限有问题导致的。
在使用语音的时候,总是出现
raise ResourceNotFound(name, ros_paths=self._ros_paths)
rospkg.common.ResourceNotFound: roslang
ROS path [0]=/opt/ros/hydro/share/ros
ROS path [1]=/opt/ros/hydro/share
ROS path [2]=/opt/ros/hydro/stacks
[voice_nav-1] process has died [pid 18126, exit code 1, cmd /opt/ros/hydro/share/rbx1/rbx1_speech/voice_nav.py __name:=voice_nav __log:=/home/ppeix/.ros/log/176ed5ba-b0a4-11e3-a814-002511e7bcff/voice_nav-1.log].
log file: /home/ppeix/.ros/log/176ed5ba-b0a4-11e3-a814-002511e7bcff/voice_nav-1*.log
的问题。
1.目录问题。确保在ROS_PACKAGE_PATH路径中可看到。
2.type文件执行权限问题。包括用户相关执行权限。尤其在文件夹拷贝时容易出现此问题。
3.看具体提示,NotFound:roslang。这里的roslang为关键词。
google得出一种情况:add roslang for manifest.xml and package.xml
https://github.com/start-jsk/openhrp3/issues/32
或
mk |
rosbuild |
rostest |
+ roslang |
|
atlas |
boost |
但我这里添加后尝试让然不成功。
4.最后尝试sudo apt-get install ros-hydro-roslang 后再次执行则成功了。说明是roslang这个包没有安装导致的。