什么意思,在哪里添加?
官网和中文例子不同,大概是中文翻译过时。英文里说某个版本以后,CMakeList文件里有,去掉注释就行。
执行 rosmsg show Num,提示 rosmsg show Num ,
练习里没有这两步:
来源于:http://blog.csdn.net/u011906844/article/details/721562158 cd ~/catkin_ws/ && catkin_make -DCATKIN_WHITELIST_PACKAGES="new_msg" 9 source devel/setup.bash
仿照修改后可以了。
但是:创建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<std_msgs::String_<std::allocator<void> > const> const&)’中:
listener.cpp:(.text+0x1f):对‘ros::console::g_initialized’未定义的引用。。。。。后面还有很多
检查发现:
include_directories( include ${catkin_INCLUDE_DIRS}) 发现这句中间的“include”前有个#没删掉。add_dependencies(listener beginner_tutorials_generate_messages_cpp),少抄了这一段代码。
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
成功