ROS:编写节点,让ROS小乌龟画圆和矩形
操作系统: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小乌龟画圆和矩形相关推荐
- ROS机器人实践---小乌龟画圆
ROS机器人实践---小乌龟画圆 一.ROS工作空间的建立 二.ROS机器人画圆程序的编写 三.启动ROS机器人 参考文章: 1.https://blog.csdn.net/qq_33835307/a ...
- ROS安装和 控制小海龟画圆
1.ROS软件安装 (1)添加ROS软件源 sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -s ...
- java实现画笔的画圆与矩形功能_Java实现画线、矩形、椭圆、字符串功能
此文讲述了Java实现画线.矩形.椭圆.字符串功能的实例代码.推荐给大伙学习一下,内容如下: import java.awt.Frame; import java.awt.Graphics; impo ...
- C# 绘图窗体(直线,圆,矩形,橡皮擦)可以调节画布颜色,粗细)还有图像处理功能
C# 绘图窗体(直线,圆,矩形,橡皮擦)可以调节画布颜色,粗细)还有图像处理功能(附源码) 利用C#制作的能够画图和简易图片处理的桌面应用页面如下: 新人可以拿来练手,源码下载 画笔按钮,可以随便画东 ...
- ROS学习笔记三:编写第一个ROS节点程序
在编写第一个ROS节点程序之前需要创建工作空间(workspace)和功能包(package). 一.创建工作空间(workspace) 创建一个catkin_ws: #注意:如果使用sudo一次性创 ...
- rosserial_java_编写ros串口节点,使用官方serial包(示例代码)
参考http://www.roswiki.com/read.php?tid=557&fid=39 1.通过sudo apt-get install ros--serial下载ROS对应版本的工 ...
- ROS的学习(六)理解ROS的节点(NODE)
经过前面的学习,我们已经知道了如何构建一个ROS的包,这篇博客将介绍ROS中的节点的概念. 在继续之前,请按ctrl+alt+t打开一个终端,在里面输入: sudo apt-get install r ...
- ROS wiki系列|通过ROS wiki-tutorials学习节点
前面几期我们讲的都是一些入门相关的内容-- ROS wiki系列|ROS wiki初探(自用) ROS wiki系列|Documentation-ROS部分讲解 ROS wiki系列|ROS入门基础概 ...
- [ROS](05)ROS通信 —— 节点,Nodes Master
文章只是个人学习过程中学习笔记,主要参考ROS教程1. 目录 1.概念 2.Nodes 3.Master 4.rosnode 5. 实例测试 1.概念 节点(Nodes):节点是一个可执行文件,它 ...
最新文章
- markdown学习记录
- 个人Wordpress站点设置Windows Live writer
- hough变换检测圆周_hough变换原理以及实现(转载)
- IdentityServer4(八)使用EntityFramework Core对数据进行持久化
- 【CodeForces - 1051D】Bicolorings (dp,类似状压dp)
- python数字转字符串_python如何将字符转换为数字
- 【理解】 Error 10053和 Error 10054
- html+css+dom补充
- ActiveMQ学习:Hello ActiveMQ
- 如何自己编写JDK帮助文档
- Cpk (Process Capability Index)
- el-table中的表格的相同项合并(单元格合并),包含多层合并
- 把ipa文件上传到App Store教程步骤
- android profile 打包_Android 利用 Managed Profile 确保兼容性
- Spark-NLP:大规模自然语言理解
- mysql sphinx windows_sphinx安装 Windows端
- python爬虫(抓取百度新闻列表)
- 22、R329刷机受阻和测试仿真环境demo
- 麒麟V10sp1轻松设置开机自启动脚本
- 程序实现启用/禁用设备(驱动)enable/disable device with windows api
热门文章
- 开源共享 · 融金服产 — 2021 中关村论坛开源创新发展论坛在京举办
- 生成器 yield from
- 撩几句BIM的好处及用处
- JQuery实现动态表格(添加、删除、遍历)
- 复合线转权属线lisp_请大神帮忙分析这一点处怎么可能是裂缝(检查多段线之间的缝隙)...
- Keepass实现网页的自动输入
- C语言中的声明和定义
- linux 显卡扩展坞,雷蛇发布全新显卡扩展坞:拥有 700W 电源,还能免工具快速安装...
- 【观察】华为:新一代楼宇网络,使能绿建智慧化
- “华为杯“ 武汉大学21级新生程序设计竞赛