继续研究ROS,今天的主题是编写节点让小乌龟画简单的几何图形。

主要参考这位老兄的博客https://blog.csdn.net/IMBA_09/article/details/84950696。

1:进入工作空间

1 cd catkin_ws/src                            #进入工作空间
2 catkin_create_pkg my_turtle_package rospy roscpp         #新建my_turtle_package包

2:节点代码

1 cd my_turtle_package/src/    
2 touch draw_rectangle.cpp

在打开的新文件中代码如下:

 1 #include <ros/ros.h>
 2 #include <geometry_msgs/Twist.h>
 3 #define PI 3.14159265358979323846
 4
 5 int main(int argc, char **argv){
 6   ros::init(argc, argv, "draw_rectangle");   //"draw_rectangle"必须是nodename
 7   std::string topic = "/turtle1/cmd_vel"; //topic name
 8   ros::NodeHandle n;
 9   ros::Publisher cmdVelPub = n.advertise<geometry_msgs::Twist>(topic, 1);
10   //第一个参数也可以写成"/turtle1/cmd_vel"这样的topic name
11   //第二个参数是发布的缓冲区大小,<geometry_msgs::Twist>是消息类型
12   ros::Rate loopRate(2);
13   //与Rate::sleep();配合指定自循环频率
14   ROS_INFO("draw_retangle start...");//输出显示信息
15   geometry_msgs::Twist speed; // 控制信号载体 Twist message
16 //声明一个geometry_msgs::Twist 类型的对象speed,并将速度的值赋值到这个对象里面
17   int count = 0;
18   while (ros::ok()){
19     speed.linear.x = 1; // 设置线速度为1m/s,正为前进,负为后退
20     speed.linear.y = 0;
21     speed.linear.z = 0;
22     speed.angular.x = 0;
23     speed.angular.y = 0;
24     speed.angular.z = 0;
25     count++;
26     while(count == 5)
27     {
28         count=0;
29         speed.angular.z = PI; //转90°
30     }
31     cmdVelPub.publish(speed); // 将刚才设置的指令发送给机器人
32     ros::spinOnce();//调用此函数给其他回调函数得以执行
33     loopRate.sleep();//按loopRate(2)设置的2HZ将程序挂起
34   }
35
36   return 0;
37 }

在terminal中继续输入下面的命令:

1 cd ~/catkin_ws/src/my_turtle_package
2 gedit CMakeLists.txt

用gedit打开CMakeLists.txt文件,然后找到##Declare a C++ executable,在这一行的前面或者后面添加如下内容:

1 add_executable(draw_rectangle src/draw_rectangle.cpp)
2 target_link_libraries(draw_rectangle ${catkin_LIBRARIES})

添加完以上内容后我们保存并退出CMakeLists.txt文件。然后在terminal中继续输入如下命令进行编译:

1 cd ~/catkin_ws/
2 catkin_make

一切顺利的话就会编译成功,接下来就可以让小乌龟来画矩形了。

3:启动节点

打开第一个terminal终端,启动ros

1 roscore

打开第二个terminal终端,启动rosnode

rosrun turtlesim turtlesim_node

打开第三个terminal终端,启动my_turtle_package节点

1 cd  ~/catkin_ws/
2 source devel/setup.bash
3 rosrun my_turtle_package draw_rectangle

此时我们可以看到小乌龟已经在画矩形了,如果按下Ctr+C退出节点,小乌龟也停止了。

转载于:https://www.cnblogs.com/chxuyuan/p/11422571.html

机器人操作系统ROS学习实战篇之------让小乌龟画矩形相关推荐

  1. 关于机器人操作系统(ROS)学习前须知二三

    ROS基础资料 1.什么是ROS? ROS(机器人操作系统,Robot Operating System),是专为机器人软体开发所设计出来的一套电脑作业系统架构.它是一个开源的元级操作系统(后操作系统 ...

  2. 计算机操作系统(OS)安装机器人操作系统(ROS)实现物联网功能

    博客中大量介绍了将Ubuntu等Linux系统借助机器人操作系统ROS实现机器人控制设计开发和物联网功能案例,并可基于OpenAI等实现人工智能相关训练. 这篇博文围绕windows系统展开,之前也写 ...

  3. 机器人操作系统ROS 编程开发--详细总结

    最近工作涉及到自动驾驶的,需要学习ROS,学习中总结了一些知识点,分享给大家. ROS基本介绍 机器人操作系统ROS,是一种分布式处理框架(又名Nodes),ROS常用C++和python编程语言开发 ...

  4. <笔记>机器人操作系统ROS理论与实践--第一讲:认识ROS

    <笔记>机器人操作系统ROS理论与实践--第一讲:认识ROS 前言 一.为什么需要ROS 二.ROS的总体设计 1.一个目标 2.五个特点 3.四位一体 三.ROS的系统实现--三个层次 ...

  5. 机器人操作系统ROS—深度相机+激光雷达实现vSLAM建图与导航 转载

    原文:机器人操作系统ROS-深度相机+激光雷达实现vSLAM建图与导航_wx5d23599e462fa的技术博客_51CTO博客 这次将带大家学习如何使用深度相机实现机器人的视觉SLAM建图及导航. ...

  6. 机器人操作系统ROS(1)

    ROS总体设计 ROS五个特点 点对点设计 一个使用ROS的系统包括一系列进程,这些进程存在于多个不同的主机并且在运行过程中通过端对端的拓扑结构进行联系,如图2所示.虽然基于中心服务器的那些软件框架也 ...

  7. python机器人编程教程入门_机器人操作系统(ROS)入门必备:机器人编程一学就会

    本书是针对机器人操作系统(ROS)初学者的入门教程,从基础的如何安装ROS,到ROS的框架介绍和C/C++.Python编程基础概念介绍,直至完整搭建一个机器人项目,每一个部分都有详细的操作过程和相应 ...

  8. 《机器人操作系统ROS原理与应用》——1.3 智能机器人的分类

    本节书摘来自华章出版社<机器人操作系统ROS原理与应用>一 书中的第1章,第1.3节,作者:周兴社 杨刚 王岚,更多章节内容可以访问云栖社区"华章计算机"公众号查看. ...

  9. 深度学习实战篇-基于RNN的中文分词探索

    深度学习实战篇-基于RNN的中文分词探索 近年来,深度学习在人工智能的多个领域取得了显著成绩.微软使用的152层深度神经网络在ImageNet的比赛上斩获多项第一,同时在图像识别中超过了人类的识别水平 ...

最新文章

  1. android动画的实现原理,Android动画的实现原理 .
  2. python berkeley 操作——尤其提示 需版本匹配
  3. 【Asp.Net】:如何处理大量页面的身份验证跳转
  4. OpenCV实现最大最小距离聚类算法
  5. tomcat 增加运行内存
  6. 为什么不要使用 async void
  7. 【luogu P5022 旅行】 题解
  8. ubuntu服务器系统日志在哪里,如何在Ubuntu上查看和写入系统日志文件
  9. 压缩感知重构算法之OMP算法---python实现
  10. 人人网登陆(selenium、PtantomJS结合)
  11. docker部署sftp,连接报algorithm negotiation fail错误
  12. 大汉诡辩达人陆贾的公关策略cathy荷塘月色新浪博客
  13. 一位小程序代理商亲自见证小程序在外卖行业的突破
  14. 【TA-霜狼_may-《百人计划》】美术1.4 场景设计精要
  15. c语言*p1 什么意思,p1什么意思_p1,意思_词汇大全意思全集
  16. implicit和explicit
  17. VBA遍历文件夹及子文件夹中所有文件
  18. tesseract 遇到的一些问题
  19. 白话空间统计二十七:统计学七支柱之空间统计版本(二)聚合(2)
  20. JDK8下载及安装教程之windows版、linux版

热门文章

  1. 爬取全国任意省份天气数据详细步骤
  2. 音视频开发成长之路与音视频知识总结
  3. 网易云信完成聊天的案例
  4. 想自己创业想好了项目,但是没有资金怎么办?
  5. 怎么证明:向量组A1,A2…As可由向量组B1,B2…Bt线性表出,且s>t,那么A…As线性相关?
  6. 【mmaction2 slowfast 行为分析(商用级别)】总目录
  7. xvfb运行java脚本_使用xvfb-run(Selenium WebDriver)发行运行Firefox的问题 - java
  8. 宿命之战:程序员VS产品经理
  9. java 机器人捡豆子,【小孩老是注意力不集中】_小儿_怎么办-大众养生网
  10. Foundations of Machine Learning 2nd——第二章 PAC学习框架 后记