ROS学习基础例子出现的问题(中)

什么意思,在哪里添加?

官网和中文例子不同,大概是中文翻译过时。英文里说某个版本以后,CMakeList文件里有,去掉注释就行。

执行 rosmsg show Num,提示 rosmsg show Num  ,

练习里没有这两步:

8 cd ~/catkin_ws/  &&  catkin_make -DCATKIN_WHITELIST_PACKAGES="new_msg"

9 source devel/setup.bash
来源于:http://blog.csdn.net/u011906844/article/details/72156215

仿照修改后可以了。


但是:创建srv时,没有这两步也没问题。也许是source devel/setup.bash需要提前执行一下?


后面两步刚才提前做了,所以现在只是重新编译了一下

generate_messages(
  DEPENDENCIES
  std_msgs
)

$ catkin_make



第二日又找不到msg和服务,果然需要先执行一下source devel/setup.bash 记得哪一节有个提示,这个命令很重要。

如果你在查找和使用ROS软件包方面遇到了问题,请确保你已经正确配置了脚本环境。一个检查的好方法是确保你已经设置了像ROS_ROOT和ROS_PACKAGE_PATH这样的环境变量,可以通过以下命令查看:

$ export | grep ROS

如果发现没有配置,那这个时候你就需要'source'某些'setup.*sh’文件了。 


编写消息发布和订阅:


catkin_make 出现一大堆”未被定义引用“

CMakeFiles/listener.dir/src/listener.cpp.o:在函数‘chatterCallback(boost::shared_ptr > const> const&)’中:
listener.cpp:(.text+0x1f):对‘ros::console::g_initialized’未定义的引用。。。。。后面还有很多

      检查发现:

add_dependencies(listener beginner_tutorials_generate_messages_cpp),少抄了这一段代码。
include_directories( include ${catkin_INCLUDE_DIRS})  发现这句中间的“include”前有个#没删掉。

find_package()里缺一个"genmsg"多一个“message_generation",加上genmsg,没去掉后面那个

target_link_libraries(listener ${catkin_LIBRARIES}这句里libraries里漏抄了一个”R"


         最后一个错误修改后,编译成功。

测试 消息:


在另一个终端启动listener    错误提示  Error: package 'beginner_tutorials' not found
     于是在这个终端也执行

   source ./devel/setup.bash  

   成功



你可能感兴趣的:(ROS学习基础例子出现的问题(中))