当前位置: 首页 > news >正文

做系统网站建设SEO案例网站建设公司

做系统网站建设,SEO案例网站建设公司,中国建设教育协会网站打不开,东莞php网站建设文章目录0、引言1、创建发布者#xff08;velocity发布者 →geometry话题消息→turtlesim订阅者#xff09;2、创建订阅者#xff08;turtlesim发布者→turtlesim话题消息→pose订阅者#xff09;3、自定义话题消息4、使用自定义话题消息#xff08;person发布者→自定义话… 文章目录0、引言1、创建发布者velocity发布者 →geometry话题消息→turtlesim订阅者2、创建订阅者turtlesim发布者→turtlesim话题消息→pose订阅者3、自定义话题消息4、使用自定义话题消息person发布者→自定义话题消息→person订阅者0、引言 font笔者因研究课题涉及ROS开发学习了古月居出品的ROS入门21讲为巩固话题通信用于不断更新、少逻辑处理的数据处理场景知识本文将ROS的发布者、订阅者和话题消息三讲内容进行总结。 1、创建发布者velocity发布者 →geometry话题消息→turtlesim订阅者 1创建功能包 cd ~/catkin_ws/srccatkin_create_pkg learning_topic roscpp rospy std_msgs geometry_msgs turtlesim2创建发布者cpp文件   在新建的功能包下src中打开新终端并键入gedit velocity_publisher.cpp输入以下代码并保存。 /*** 该例程将发布turtle1/cmd_vel话题消息类型geometry_msgs::Twist*/ #include ros/ros.h #include geometry_msgs/Twist.h int main(int argc, char **argv) {// ROS节点初始化ros::init(argc, argv, velocity_publisher);// 创建节点句柄ros::NodeHandle n;// 创建一个Publisher发布名为/turtle1/cmd_vel的topic消息类型为geometry_msgs::Twist队列长度10ros::Publisher turtle_vel_pub n.advertisegeometry_msgs::Twist(/turtle1/cmd_vel, 10);// 设置循环的频率ros::Rate loop_rate(10);int count 0;while (ros::ok()){// 初始化geometry_msgs::Twist类型的消息geometry_msgs::Twist vel_msg;vel_msg.linear.x 0.5;vel_msg.angular.z 0.2;// 发布消息turtle_vel_pub.publish(vel_msg);ROS_INFO(Publish turtle velocity command[%0.2f m/s, %0.2f rad/s],vel_msg.linear.x, vel_msg.angular.z);// 按照循环频率延时loop_rate.sleep();}return 0; }3在CMakeLists.txt添加编译规则; add_executable(velocity_publisher src/velocity_publisher.cpp) target_link_libraries(velocity_publisher ${catkin_LIBRARIES})4编译并运行发布者。   ①编译并启动roscore cd ~/catkin_wscatkin_make 或 catkin_make_isolatedsource devel/setup.bash 或 source devel_isolated/setup.bashroscore②新建终端运行海龟结点 rosrun turtlesim turtlesim_node③新建终端运行发布者 //每新打开一个终端需要重新定义源 source devel/setup.bash 或 source devel_isolated/setup.bashrosrun learning_topic velocity_publisher2、创建订阅者turtlesim发布者→turtlesim话题消息→pose订阅者 1在发布者功能包下创建订阅者cpp文件   在新建的功能包下src中终端键入gedit pose_subscriber.cpp输入以下代码并保存。 /*********************************************************************** Copyright 2020 GuYueHome (www.guyuehome.com). ***********************************************************************//*** 该例程将订阅/turtle1/pose话题消息类型turtlesim::Pose*/#include ros/ros.h #include turtlesim/Pose.h// 接收到订阅的消息后会进入消息回调函数 void poseCallback(const turtlesim::Pose::ConstPtr msg) {// 将接收到的消息打印出来ROS_INFO(Turtle pose: x:%0.6f, y:%0.6f, msg-x, msg-y); }int main(int argc, char **argv) {// 初始化ROS节点ros::init(argc, argv, pose_subscriber);// 创建节点句柄ros::NodeHandle n;// 创建一个Subscriber订阅名为/turtle1/pose的topic注册回调函数poseCallbackros::Subscriber pose_sub n.subscribe(/turtle1/pose, 10, poseCallback);// 循环等待回调函数ros::spin();return 0; }2在CMakeLists.txt添加编译规则 add_executable(pose_subscriber src/pose_subscriber.cpp) target_link_libraries(pose_subscriber ${catkin_LIBRARIES})3编译并运行订阅者。   ①编译并启动roscore cd ~/catkin_wscatkin_make 或 catkin_make_isolatedsource devel/setup.bash 或 source devel_isolated/setup.bashroscore②新建终端运行海龟结点 rosrun turtlesim turtlesim_node启动发布者后海龟将进行匀速圆周运动。   ③新建终端运行订阅者 //每新打开一个终端需要重新定义源 source devel/setup.bash 或 source devel_isolated/setup.bashrosrun learning_topic pose_subscriber④新建终端运行海龟键盘动态结点。 rosrun turtlesim turtle_teleop_key在该终端下可通过键盘方向键手动控制海龟移动。 3、自定义话题消息 1创建.msg文件   在~/catkin_ws/src/learning_topic目录下新建msg目录并进入该目录在该目录下打开终端键入gedit Person.msg输入以下内容并保存。 string name uint8 sex uint8 age string x string yuint8 unkonwn 0 uint8 male 1 uint8 female 22在package.xml中添加功能包依赖 build_dependmessage_generation/build_depend exec_dependmessage_runtime/exec_depend3在CMakeLists.txt添加编译规则。 //在find_package下添加message_generation//在合适位置添加以下内容 add_message_files(FILES Person.msg) generate_messages(DEPENDENCIES std_msgs)//在catkin_package添加message_runtime4、使用自定义话题消息person发布者→自定义话题消息→person订阅者 1创建测试消息的发布者   在~/catkin_ws/src/learning_topic/src目录下打开终端键入gedit person_publisher.cpp输入以下代码并保存。 /*********************************************************************** Copyright 2020 GuYueHome (www.guyuehome.com). ***********************************************************************//*** 该例程将发布/person_info话题自定义消息类型learning_topic::Person*/#include ros/ros.h #include learning_topic/Person.hint main(int argc, char **argv) {// ROS节点初始化ros::init(argc, argv, person_publisher);// 创建节点句柄ros::NodeHandle n;// 创建一个Publisher发布名为/person_info的topic消息类型为learning_topic::Person队列长度10ros::Publisher person_info_pub n.advertiselearning_topic::Person(/person_info, 10);// 设置循环的频率ros::Rate loop_rate(1);int count 0;while (ros::ok()){// 初始化learning_topic::Person类型的消息learning_topic::Person person_msg;person_msg.name Tom;person_msg.age 18;person_msg.sex learning_topic::Person::male;// 发布消息person_info_pub.publish(person_msg);ROS_INFO(Publish Person Info: name:%s age:%d sex:%d, person_msg.name.c_str(), person_msg.age, person_msg.sex);// 按照循环频率延时loop_rate.sleep();}return 0; }2创建测试消息的订阅者   在~/catkin_ws/src/learning_topic/src目录下打开终端键入gedit person_subscriber.cpp输入以下代码并保存。 /*********************************************************************** Copyright 2020 GuYueHome (www.guyuehome.com). ***********************************************************************//*** 该例程将订阅/person_info话题自定义消息类型learning_topic::Person*/#include ros/ros.h #include learning_topic/Person.h// 接收到订阅的消息后会进入消息回调函数 void personInfoCallback(const learning_topic::Person::ConstPtr msg) {// 将接收到的消息打印出来ROS_INFO(Subcribe Person Info: name:%s age:%d sex:%d, msg-name.c_str(), msg-age, msg-sex); }int main(int argc, char **argv) {// 初始化ROS节点ros::init(argc, argv, person_subscriber);// 创建节点句柄ros::NodeHandle n;// 创建一个Subscriber订阅名为/person_info的topic注册回调函数personInfoCallbackros::Subscriber person_info_sub n.subscribe(/person_info, 10, personInfoCallback);// 循环等待回调函数ros::spin();return 0; }3在CMakeLists.txt添加编译规则 add_executable(person_publisher src/person_publisher.cpp) target_link_libraries(person_publisher ${catkin_LIBRARIES}) add_dependencies(person_publisher ${PROJECT_NAME}_generate_messages_cpp)add_executable(person_subscriber src/person_subscriber.cpp) target_link_libraries(person_subscriber ${catkin_LIBRARIES}) add_dependencies(person_subscriber ${PROJECT_NAME}_generate_messages_cpp)4编译运行。 cd ~/catkin_wscatkin_make 或 catkin_make_isolatedsource devel/setup.bash 或 source devel_isolated/setup.bashroscore//新建终端然后再执行以下代码 cd ~/catkin_ws source devel/setup.bash 或 source devel_isolated/setup.bash rosrun learning_topic person_publisher//新建终端然后再执行以下代码 cd ~/catkin_ws source devel/setup.bash 或 source devel_isolated/setup.bash rosrun learning_topic person_subscriber参考资料 [1] 古月居GYH. 【古月居】古月·ROS入门21讲 | 一学就会的ROS机器人入门教程; 2019-07-16 [accessed 2023-04-09]. [2] ~Old. ROS——话题通信; 2022-03-18 [accessed 2023-04-09]. [3] Maccy37. OS查询话题具体内容常用指令; 2020-09-04 [accessed 2023-04-10]. [4] 李徕徕. ROS(4)--------------------ros::Rate loop_rate( ) loop_rate.sleep()ros_spin()ros_spinOnce(); 2020-07-29 [accessed 2023-04-10]. [5] 小萌虫. ROS21讲; 2021-08-13 [accessed 2023-04-10].
http://www.dnsts.com.cn/news/98611.html

相关文章:

  • 什么网站可以做宣传自己建设一个平台网站多少钱
  • 郑州专业网站制作建设seo公司官网
  • 做网站 兼职百度信息
  • 简约风格的网站网站开发商城
  • 网站暂停怎么做商城网站建设第一章
  • 合肥企业做网站2023年网络推广方法
  • 公司网站免费申请广元市建设局网站
  • 用哪个网站做首页好wordpress页面结构
  • 合肥企业网站制作公司网站开发项目需要什么人员
  • 佛冈县住房和城乡建设局网站库车县建设网站
  • 网站开发和室内制作电器工程东莞网站建设
  • 网站分销系统ui网页设计师
  • 做外国网站软件开发模型对比
  • 经营一个网站要怎么做套模板网站价格表
  • 可以做婚礼鲜花布置的网站新郑做网站
  • 宁波外贸网站设计php企业网站模板免费下载
  • 普陀做网站公司如何建立网站和网页
  • 网站开发团队成员介绍wordpress注册不
  • 从哪些方面建设网站自己搭建服务器做网站
  • xampp做网站网站制作设计说明
  • 推广普通话作文莱芜网站优化排名
  • 盐城公司网站建设网站 简单
  • seo优化提升排名东莞关键词优化效果
  • 濮阳市建设分局网站怎么开外贸网店
  • VPS如何做网站服务器网站建设文件名
  • 复杂大型网站建设成本平面设计免费软件
  • py网站开发国内优秀网页网站
  • 营销网站创建wordpress 3.9 上传
  • 学ps有用还是网页制作福州seo网站管理
  • 酷炫flash网站wordpress js代码插件