触点数字孪生,揭秘它的独特魅力
670
2022-09-26
第四课4、ROS客户端
ROS客户端提供一些列库文件用于用户开发。它利用许多ROS概念并使它通过代码可以获取。
下面是ROS程序中的接口
ROSCPP客户端(c++客户端)
首先新建一个包
然后catkin_make一下
在新建的包目录下,建立一个消息文件msg
上面定义的消息需要生成消息的头文件foo.h以便以后我们可以调用,我们进入package.xml里面去修改,
第一步:
第二步:
然后再回到CMakeLists.txt中
完成之后,下面编译一下,
下面来写一下代码:
我们以前已经写过了make文件,查看一下
有了这个文件,我们就可以在eclipse中打开这个工程,先执行一下这个文件:
下面打开eclipse
然后file->import,
下面要在src中写一个源文件,叫做move_publisher.cpp
再写一个move_subscriber.cpp
首先要控制turtlesim,他的话题topic是/turtle1/cmd_vel(rostopic list);消息类型为geometry_msgs/Twist(rostopic info /turtle1/cmd_vel)。
下面编写发布程序
/* * move_publisher.cpp * * Created on: Jan 16, 2017 * Author: gary */#include
保存一下,下面来编译,
catkin_make,编译正确后,运行一下
rosrun turtle_move move_publisher
下面再写一个订阅者:
把刚刚的消息加到订阅者里面来(#include
回调函数里面要传递一个参数,且用的一个共享指针ConstPtr(他是boost的一个共享指针)在这里如果用eclipse继承开发环境的话还可以跟进具体变量的类型是什么!!!!!!
下面的话题foo_topic是可以随便指定的,只要里面的数据类型turtle_move::foo是已经定义过的就行。
消息文件里面的定义格式如下:
数据类型 变量名,例如:int16 foo
然后修改CMakeLists.txt
加入以下:
add_executable(move_subscriber src/move_subscriber.cpp)
target_link_libraries(move_publisher ${catkin_LIBRARIES} )
再进行编译
catkin_make,没有问题,之后运行之,正确,发布和接收都在同一个文件;可以在循环里面加上foo.foo++;来体现是在进行消息的正确发布。
下面再写一个计时器,在src下新建一个文件:
类似于创建一个主题订阅
上面使用n.createTimer创建了一个时间对象,Duration(1)就是一个时间区间为1s。ros::spin()是等待消息。
然后在CMakeLists.txt里面再修改,
添加上
add_executable(timer src/timer.cpp)target_link_libraries(timer ${catkin_LIBRARIES} )
然后编译正确,然后运行,结果也是正确的。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。