操作系统:ubuntu1404,ROS indigo

软件:Roboware

实验开始

在my_turtle_package(自己创建的package)->src 中创建cpp文件:(如下图)

让小乌龟画圆的代码:

#include "ros/ros.h"
#include<geometry_msgs/Twist.h> //运动速度结构体类型  geometry_msgs::Twist的定义文件int main(int argc, char *argv[])
{ros::init(argc, argv, "vel_ctrl");  //对该节点进行初始化操作ros::NodeHandle n;         //申明一个NodeHandle对象n,并用n生成一个广播对象vel_pubros::Publisher vel_pub = n.advertise<geometry_msgs::Twist>("/cmd_vel", 10);//vel_pub会在主题"/cmd_vel"(机器人速度控制主题)里广播geometry_msgs::Twist类型的数据ROS_INFO("draw_circle start...");//输出显示信息while(ros::ok()){geometry_msgs::Twist vel_cmd; //声明一个geometry_msgs::Twist 类型的对象vel_cmd,并将速度的值赋值到这个对象里面vel_cmd.linear.x = 2.0;//前后(+-) m/svel_cmd.linear.y = 0.0;  //左右(+-) m/svel_cmd.linear.z = 0.0;vel_cmd.angular.x = 0;vel_cmd.angular.y = 0;vel_cmd.angular.z = 1.8; //机器人的自转速度,+左转,-右转,单位是rad/svel_pub.publish(vel_cmd); //赋值完毕后,发送到主题"/cmd_vel"。机器人的核心节点会从这个主题接受发送过去的速度值,并转发到硬件体上去执行ros::spinOnce();//调用此函数给其他回调函数得以执行(比例程未使用回调函数)}return 0;
}

让小乌龟画矩形的代码:

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

实验测试

测试代码:

$:roscore
$:rosrun turtlesim turtlesim_node
$:rosrun my_turtle_package draw_circle      #让小乌龟作圆周运动
$:rosrun my_turtle_package draw_rectangle   #让小乌龟作矩形运动

效果图:

画圆:

画矩形:

文章地址:https://mp.csdn.net/postedit/84950696    作者:IMBA_09       转载请注明出处~

ROS:编写节点,让ROS小乌龟画圆和矩形相关推荐

  1. ROS机器人实践---小乌龟画圆

    ROS机器人实践---小乌龟画圆 一.ROS工作空间的建立 二.ROS机器人画圆程序的编写 三.启动ROS机器人 参考文章: 1.https://blog.csdn.net/qq_33835307/a ...

  2. ROS安装和 控制小海龟画圆

    1.ROS软件安装 (1)添加ROS软件源 sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -s ...

  3. java实现画笔的画圆与矩形功能_Java实现画线、矩形、椭圆、字符串功能

    此文讲述了Java实现画线.矩形.椭圆.字符串功能的实例代码.推荐给大伙学习一下,内容如下: import java.awt.Frame; import java.awt.Graphics; impo ...

  4. C# 绘图窗体(直线,圆,矩形,橡皮擦)可以调节画布颜色,粗细)还有图像处理功能

    C# 绘图窗体(直线,圆,矩形,橡皮擦)可以调节画布颜色,粗细)还有图像处理功能(附源码) 利用C#制作的能够画图和简易图片处理的桌面应用页面如下: 新人可以拿来练手,源码下载 画笔按钮,可以随便画东 ...

  5. ROS学习笔记三:编写第一个ROS节点程序

    在编写第一个ROS节点程序之前需要创建工作空间(workspace)和功能包(package). 一.创建工作空间(workspace) 创建一个catkin_ws: #注意:如果使用sudo一次性创 ...

  6. rosserial_java_编写ros串口节点,使用官方serial包(示例代码)

    参考http://www.roswiki.com/read.php?tid=557&fid=39 1.通过sudo apt-get install ros--serial下载ROS对应版本的工 ...

  7. ROS的学习(六)理解ROS的节点(NODE)

    经过前面的学习,我们已经知道了如何构建一个ROS的包,这篇博客将介绍ROS中的节点的概念. 在继续之前,请按ctrl+alt+t打开一个终端,在里面输入: sudo apt-get install r ...

  8. ROS wiki系列|通过ROS wiki-tutorials学习节点

    前面几期我们讲的都是一些入门相关的内容-- ROS wiki系列|ROS wiki初探(自用) ROS wiki系列|Documentation-ROS部分讲解 ROS wiki系列|ROS入门基础概 ...

  9. [ROS](05)ROS通信 —— 节点,Nodes Master

      文章只是个人学习过程中学习笔记,主要参考ROS教程1. 目录 1.概念 2.Nodes 3.Master 4.rosnode 5. 实例测试 1.概念 节点(Nodes):节点是一个可执行文件,它 ...

最新文章

  1. markdown学习记录
  2. 个人Wordpress站点设置Windows Live writer
  3. hough变换检测圆周_hough变换原理以及实现(转载)
  4. IdentityServer4(八)使用EntityFramework Core对数据进行持久化
  5. 【CodeForces - 1051D】Bicolorings (dp,类似状压dp)
  6. python数字转字符串_python如何将字符转换为数字
  7. 【理解】 Error 10053和 Error 10054
  8. html+css+dom补充
  9. ActiveMQ学习:Hello ActiveMQ
  10. 如何自己编写JDK帮助文档
  11. Cpk (Process Capability Index)
  12. el-table中的表格的相同项合并(单元格合并),包含多层合并
  13. 把ipa文件上传到App Store教程步骤
  14. android profile 打包_Android 利用 Managed Profile 确保兼容性
  15. Spark-NLP:大规模自然语言理解
  16. mysql sphinx windows_sphinx安装 Windows端
  17. python爬虫(抓取百度新闻列表)
  18. 22、R329刷机受阻和测试仿真环境demo
  19. 麒麟V10sp1轻松设置开机自启动脚本
  20. 程序实现启用/禁用设备(驱动)enable/disable device with windows api

热门文章

  1. 开源共享 · 融金服产 — 2021 中关村论坛开源创新发展论坛在京举办
  2. 生成器 yield from
  3. 撩几句BIM的好处及用处
  4. JQuery实现动态表格(添加、删除、遍历)
  5. 复合线转权属线lisp_请大神帮忙分析这一点处怎么可能是裂缝(检查多段线之间的缝隙)...
  6. Keepass实现网页的自动输入
  7. C语言中的声明和定义
  8. linux 显卡扩展坞,雷蛇发布全新显卡扩展坞:拥有 700W 电源,还能免工具快速安装...
  9. 【观察】华为:新一代楼宇网络,使能绿建智慧化
  10. “华为杯“ 武汉大学21级新生程序设计竞赛