ros调试

来源:互联网 发布:网络个人信息安全论文 编辑:程序博客网 时间:2024/05/16 12:42
在hydro版本下面,添加自己的.cpp文件,然后编译的方法: catkin_make编译:add_executable(parser src/parser.cpp)target_link_libraries(parser ${catkin_LIBRARIES})对比古月居使用前面版本的方法:rosbuild编译:
  1. rosbuild_add_boost_directories()  
  2. rosbuild_add_executable(smartcar_keyboard_teleop src/keyboard.cpp)
  3. 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
        <launch>        <node name="turtlesim"     pkg="turtlesim" type="turtlesim_node" ></node>        <node name="teleop_turtle" pkg="turtlesim" type="turtle_teleop_key" />    </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 <launch>   2         <param name="robot_description" command="cat $(find r2d2)/model.xml" />   3         <node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />   4         <node name="state_publisher" pkg="r2d2" type="state_publisher" />   5 </launch>

rosrun r2d2 state_publisher




典型的launch文件举例:
  1. <launch>  
  2.     <arg name="model" />  
  3.     <arg name="gui" default="False" />  
  4.     <param name="robot_description" textfile="$(find smartcar_description)/urdf/smartcar.urdf" />  
  5.     <param name="use_gui" value="$(arg gui)"/>  
  6.     <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" ></node>  
  7.     <node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />  
  8.     <node name="rviz" pkg="rviz" type="rviz" args="-d $(find urdf_tutorial)/urdf.vcg" />  
  9. </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-turtlesimcatkin_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
   <rosdep name="rostest" />
   <rosdep name="rosbuild" />
+  <rosdep name="roslang" />
   <rosdep name="mk" />


   <build_depend>mk</build_depend>
   <build_depend>rosbuild</build_depend>
   <build_depend>rostest</build_depend>
+  <build_depend>roslang</build_depend>
 
   <run_depend>atlas</run_depend>
   <run_depend>boost</run_depend>
但我这里添加后尝试让然不成功。
4.最后尝试sudo apt-get install ros-hydro-roslang 后再次执行则成功了。说明是roslang这个包没有安装导致的。






0 0
原创粉丝点击