保健食品东莞网站建设,网络营销有哪些方式,如何引导企业老板做网站,网络推广文章目录运行环境#xff1a;思路#xff1a;1.1 定义.msg文件1)功能包下新建 msg 目录#xff0c;添加文件 Person.msg2)修改package.xml3)修改CMakeLists.txt2.1 自定义消息调用(C)1#xff09;编译后修改includePath2#xff09;发布方实现2.1修改CMakeLists.txt2.3运行…
文章目录运行环境思路1.1 定义.msg文件1)功能包下新建 msg 目录添加文件 Person.msg2)修改package.xml3)修改CMakeLists.txt2.1 自定义消息调用(C)1编译后修改includePath2发布方实现2.1修改CMakeLists.txt2.3运行节点3订阅方实现3.1修改CMakeLists.txt3.2运行节点运行环境
ubuntu20.04 noetic 宏基暗影骑士笔记本
思路 定义.msg文件 修改package.xml和CMakeLists.txt文件
编译后修改includePath 创建功能包 在功能包src下新建.cpp文件
1.1 定义.msg文件
1)功能包下新建 msg 目录添加文件 Person.msg
string name
uint16 age
float64 heightpackage.xml --功能包清单文件 CMakeLists.txt --CMake 配置文件 2)修改package.xml
# 编译依赖与执行依赖build_dependmessage_generation/build_dependexec_dependmessage_runtime/exec_depend3)修改CMakeLists.txt 编译依赖、运行依赖、引入msg、依赖std_msg # 编译依赖
find_package(catkin REQUIRED COMPONENTSroscpprospystd_msgsmessage_generation
)#运行依赖
catkin_package(
# INCLUDE_DIRS include
# LIBRARIES demo02_talker_listenerCATKIN_DEPENDS roscpp rospy std_msgs message_runtime
# DEPENDS system_lib
)# 将.msg 引入功能包
add_message_files(FILESPerson.msg
)# generate_messages 依赖于 std_msgs
generate_messages(DEPENDENCIESstd_msgs
) 2.1 自定义消息调用(C)
1编译后修改includePath
/home/duduzai/demo01_ws/devel/include/**Person.msg编译后自动生成Person.h 2发布方实现
在功能包src中新建person_pub.cpp文件
/*需求: 循环发布人的信息*/#include ros/ros.h
#include demo01_pub/Person.hint main(int argc, char *argv[])
{setlocale(LC_ALL,);//1.初始化 ROS 节点ros::init(argc,argv,talker_person);//2.创建 ROS 句柄ros::NodeHandle nh;//3.创建发布者对象ros::Publisher pub nh.advertisedemo01_pub::Person(chatter_person,1000);//4.组织被发布的消息编写发布逻辑并发布消息demo01_pub::Person p;p.name sunwukong;p.age 2000;p.height 1.45;ros::Rate r(1);while (ros::ok()){pub.publish(p);p.age 1;ROS_INFO(我叫:%s,今年%d岁,高%.2f米, p.name.c_str(), p.age, p.height);r.sleep();ros::spinOnce();}return 0;
}.msg编译后生成.h头文件下面引入头文件 #include “demo01_pub/Person.h” 消息类型 demo01_pub::Person 2.1修改CMakeLists.txt
# 生成可执行文件
add_executable(person_pub.cpp src/person_pub.cpp)# 链接可执行文件和消息类型
add_dependencies(person_pub.cpp ${PROJECT_NAME}_generate_messages_cpp)# 链接可执行和编译库
target_link_libraries(person_pub.cpp${catkin_LIBRARIES}
)2.3运行节点
roscore
source ./devel/setup.bash
rosrun demo01_pub person_pub.cpp 3订阅方实现
在功能包src中新建person_sub.cpp文件
/*需求: 订阅人的信息*/#include ros/ros.h
#include demo01_pub/Person.hvoid doPerson(const demo01_pub::Person::ConstPtr person_p){ROS_INFO(订阅的人信息:%s, %d, %.2f, person_p-name.c_str(), person_p-age, person_p-height);
}int main(int argc, char *argv[])
{ setlocale(LC_ALL,);//1.初始化 ROS 节点ros::init(argc,argv,listener_person);//2.创建 ROS 句柄ros::NodeHandle nh;//3.创建订阅对象ros::Subscriber sub nh.subscribedemo01_pub::Person(chatter_person,10,doPerson);//4.回调函数中处理 person//5.ros::spin();ros::spin(); return 0;
}3.1修改CMakeLists.txt
# 生成可执行文件
add_executable(person_sub.cpp src/person_sub.cpp)# 链接可执行文件和消息类型
add_dependencies(person_sub.cpp ${PROJECT_NAME}_generate_messages_cpp)# 链接可执行和编译库
target_link_libraries(person_sub.cpp${catkin_LIBRARIES}
)3.2运行节点
# 打开终端
cd /home/duduzai/demo01_ws
source ./devel/setup.bash
rosrun demo01_pub person_sub.cpp ⭐⭐⭐嘟嘟崽 ⭐⭐⭐ ⭐⭐⭐祝你成功 ⭐⭐⭐