ROS入门之小海龟

这篇具有很好参考价值的文章主要介绍了ROS入门之小海龟。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、ROS基本介绍

ROS(机器人操作系统)提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。它提供了硬件抽象、设备驱动、库函数、可视化、消息传递和软件包管理等诸多功能。
ROS即通讯机制+开发工具+应用功能+生态系统四位一体。
特点:点对点、分布式、多语言支持、轻量级、免费和开源。

二、小海龟仿真

  • 第一步,打开一个终端,输入以下命令
		roscore
  • 第二步,再打开一个终端,输入以下命令启动小海龟仿真器
	rosrun turtlesim turtlesim_node
  • 第三步,再打开一个终端,输入以下命令启动控制器
	rosrun turtlesim turtle_teleop_key

此时就可以通过上下左右键进行小海龟的移动操作了。
ROS入门之小海龟

三、编写程序让小海龟实现圆周运动

1.用话题查看器查看两个node之间的消息传递

打开话题查看器

命令行输入以下指令

rosrun rqt_graph rqt_graph

ROS入门之小海龟
这张图中,可以看出turtle_teleop与turtlesim两个节点之间通过/strong/cmd_vel进行通信,也就是话题,按键信息会发布在这个话题上,然后turtlesim_node从这个话题接受信息控制其移动,所以需要写一个文件发送控制指令。
输入下图的代码可以看到消息的获取。
ROS入门之小海龟

小海龟移动的基本原理

输入以下命令可以查看

rostopic type /turtle1/cmd_vel

可以看到如下,数据类型为geometry_msgs/Twist,还需要再进一步查看
ROS入门之小海龟
输入以下代码来查看:

rosmsg show geometry_msgs/Twist

ROS入门之小海龟

  • linear的意思是线速度;
  • angular的意思是角速度;
  • xyz表示坐标;
    如果要控制海龟转圈,就要保持匀速向前的运动,然后角速度不为0即可。

2.编写代码实现转圈

1.创建工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
2.编译工作空间
cd ~/catkin_ws
catkin_make
source devel/setup.bash
3.创建ROS功能包

创建功能包:

cd ~/catkin_ws/src
catkin_create_pkg learning_topic std_msgs rospy roscpp geometry_msgs

编译功能包:

cd ~/catkin_ws
catkin_make
source devel/setup.bash
4.C++代码
#include <sstream>
#include "ros/ros.h"
#include "std_msgs/String.h"
#include "geometry_msgs/Twist.h"

int main(int argc, char **argv)
{
	//初始化节点
	ros::init(argc, argv, "publisher");
	//创建节点句柄
	ros::NodeHandle n;
	//创建publisher,发布话题[/turtle1/cmd_vel],消息类型[geometry_msgs::Twist]
	ros::Publisher chatter_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 1000);
	//设置循环频率
	ros::Rate loop_rate(100);
	while (ros::ok())
	{
		//定义发布的数据
		geometry_msgs::Twist msg;
		//定义linear数据
		geometry_msgs::Vector3 linear;
		linear.x=1;
		linear.y=0;
		linear.z=0;
		//定义angular数据
		geometry_msgs::Vector3 angular;
		angular.x=0;
		angular.y=0;
		angular.z=1;
		msg.linear=linear;
		msg.angular=angular;
		//发布msg数据
		chatter_pub.publish(msg);
		//循环等待回调函数
		ros::spinOnce();
		//按照循环频率延时
		loop_rate.sleep();
	}
	return 0;
}


5.添加编译选项

打开CmakeLists文件

cd ~/catkin_ws/src/learning_topic
gedit CMakeLists.txt

在文件最后加上以下代码:

add_executable(publisher src/publisher.cpp)
target_link_libraries(publisher ${catkin_LIBRARIES})

保存退出,并进行编译。

cd ~/catkin_ws
catkin_make
6.启动小海龟
roscore
#打开新终端
rosrun turtlesim turtlesim_node
#打开新终端
cd ~/catkin_ws
#下面这一步是为了保证rosrun命令能够找到相应的功能包
source ~/catkin_ws/devel/setup.bash
rosrun learning_topic publisher

结果如下图所示,小海龟进行圆周运动。
ROS入门之小海龟

四、总结

本次实验主要是了解了ROS的消息和话题的收发机制,用小海龟demo直观的感受了ROS,并编程实现了控制小海龟进行圆周运动。

五、参考资料

Ubuntu18.04安装ROS——实现小海龟仿真
ROS通信实操(小乌龟通信实现)(九)C++、Python文章来源地址https://www.toymoban.com/news/detail-471868.html

到了这里,关于ROS入门之小海龟的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【ROS2机器人入门到实战】Nav2导航框架介绍与安装

    当前平台文章汇总地址:ROS2机器人从入门到实战 获取完整教程及配套资料代码,请关注公众号鱼香ROS获取 教程配套机器人开发平台:两驱版| 四驱版 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn 上一节我们对机器人导航过程中所用到的2D地图进行了介绍,本节

    2024年02月04日
    浏览(38)
  • ROS入门之小海龟

    ROS(机器人操作系统)提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。它提供了硬件抽象、设备驱动、库函数、可视化、消息传递和软件包管理等诸多功能。 ROS即通讯机制+开发工具+应用功能+生态系统四位一体。 特点:点对点、分布式、多语言支持、轻量

    2024年02月07日
    浏览(30)
  • ROS入门21讲 | ROS机器人入门教程 【简明笔记】

    古月·ROS入门21讲 | 一学就会的ROS机器人入门教程 ROS = 通信机制+开发工具+应用功能+生态系统 通信机制 : Node :完成具体功能的进程、独立运行的可执行文件。可用多种语言py、c++。节点在系统中的名称唯一。 ROS Master :为节点提供命名注册服务;跟踪和记录话题、服务通信

    2024年02月09日
    浏览(63)
  • 【ROS2机器人入门到实战】ROS2话题入门

    当前平台文章汇总地址:ROS2机器人从入门到实战 获取完整教程及配套资料代码,请关注公众号鱼香ROS获取 教程配套机器人开发平台:两驱版| 四驱版 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn 话题是ROS2中最常用的通信方式之一,话题通信采取的是订阅发布

    2024年02月04日
    浏览(61)
  • 【ROS2机器人入门到实战】ROS2服务入门

    当前平台文章汇总地址:ROS2机器人从入门到实战 获取完整教程及配套资料代码,请关注公众号鱼香ROS获取 教程配套机器人开发平台:两驱版| 四驱版 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn 大家好,帅鱼又蹬蹬蹬的游回来了。本节小鱼将要带大家一起了解

    2024年02月07日
    浏览(55)
  • ROS机器人入门-环境搭建

    ROS  是机器人操作系统(Robot Operating System)的英文缩写。  ROS  是用于编写机器人软件程序的一种具有高度灵活性的软件架构。 ROS 图标  : ROS  是开源的,是用于机器人控制的一种后操作系统,或者说次级操作系统。它提供类似操作系统所提供的功能,包含硬件抽象描述、

    2024年02月08日
    浏览(63)
  • 【手把手做ROS2机器人系统开发二】熟悉ROS2基本命令

    目录 【手把手做ROS2机器人系统开发二】熟悉ROS2基本命令 一、上讲回顾 二、ROS2核心命令讲解 1、daemon-各种守护进程相关的子命令 2、node-各种节点进程相关的子命令  3、pkg-各种包进程相关的子命令  4、run运行特定软件包的可行性文件 5、topic各种话题进程相关的子命令 6、

    2024年02月14日
    浏览(42)
  • 【ROS机器人入门】1.1 ROS概念及环境配置

    ROS=Plumbing+Tools+Capabilities+Ecosystem 代码复用 :ROS的目标不是成为具有最多功能的框架,ROS的主要目标是支持机器人技术研发中的代码 重用。 分布式 :ROS是进程(也称为Nodes)的分布式框架,ROS中的进程可分布于不同主机,不同主机协同工 作,从而分散计算压力 。 松耦合 :ROS中功

    2023年04月22日
    浏览(43)
  • 【ROS2机器人入门到实战】

    当前平台文章汇总地址:ROS2机器人从入门到实战 获取完整教程及配套资料代码,请关注公众号鱼香ROS获取 教程配套机器人开发平台:两驱版| 四驱版 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn 第 1 章 ROS2介绍与安装 基础篇-Linux基础 1.Linux与Ubuntu系统介绍 2.在

    2024年02月16日
    浏览(49)
  • Python---练习:小海龟会画画---利用turtle(海龟)模块

    在Python 3 版本中,新增加了一个 模块叫做turtle(海龟) , 专门用于绘制图形图像 turtle    英 /ˈtɜːt(ə)l/     n. 海龟;海龟肉;美龟;淡水龟; (计算机)龟标  import 英 /ˈɪmpɔːt/  n. 进口,进口商品;输入, 引进 ;重要性;意思,含意 v. 进口,输入,引进; 导入(

    2024年02月08日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包