ROS运行程序让小海龟实现圆周运动
ROS运行程序让小海龟实现圆周运动
文章目录
- ROS运行程序让小海龟实现圆周运动
- 一.运行ROS,以键盘控制小海龟移动.
- 二.了解ROS话题与消息的发布与获取的方式.终端命令发布话题控制海龟圆周运动.
- 1.话题与消息获取:
- ①话题获取:
- ②消息获取:
- ③获取消息格式:
- ④实现发布节点
- 三.C++编码实现小海龟圆周运动.
- 1.创建ROS工作空间
- ①创建工作空间
- ②编译工作空间
- ③编译工作空间
- ④检查环境变量
- 2.创建ROS功能包
- ①创建功能包
- ②编译功能包
- 3.C++代码
- ①.创建publisher.cpp文件
- ②.发布话题的逻辑:
- ③.C++代码:
- 4.添加编译选项
- 5.启动小海龟并实现控制
- 四.总结
- 五.参考
一.任务简介
- 1.运行小海龟demo例子,通过键盘控制小海龟运动
- 2.用话题查看器查看两个node之间的消息传递
- 3.用C++写一个程序,控制小海龟走一个圆形
二.实验准备
- 1.VMware workstation 软件
- 2.Ubuntu 20.04版本
- 3.ROS
实验分析:
- 1.乌龟运动控制实现,关键节点有两个,一个是乌龟运动显示节点
turtlesim_node
,另一个是控制节点
,二者是订阅发布模式
实现通信的,乌龟运动图形化显示节点直接调用即可,运动控制节点之前是使用的turtle_teleop_key
通过键盘 控制
,现在需要自定义控制节点
。- 2.控制节点自实现时,首先需要了解控制节点与显示节点通信使用的
话题与消息
,可以使用ros命令
结合计算图
来获取。- 3.了解了话题与消息之后,通过
C++
或Python
编写运动控制节点,通过指定的话题
,按照一定的逻辑发布消息即可。
一.运行ROS,以键盘控制小海龟移动.
- 这里在我上一篇文章最后一部分已经有过介绍,这里就不过多介绍了:上一篇文章
二.了解ROS话题与消息的发布与获取的方式.终端命令发布话题控制海龟圆周运动.
1.话题与消息获取:
准备: 先启动键盘控制乌龟运动案例。
①话题获取:
②消息获取:
③获取消息格式:
- 乌龟线速度取值只有x和角速度z
- 因为只有前后左右四个键位控制运动
- 可以看到只有线速度x和角速度y
- 因为只有上下左右四个键
- 上下控制线速度x,左右控制角速度z
④实现发布节点
命令行实现控制圆周运动
- 先输入以下命令
rostopic pub -r 10 /turtle1/cmd_vel geometry_msgs/Twist "linear:
接下来按下Tab键
,会自动帮我们补全
- 接下来修改数据,把线速度的X修改为1,角速度的Z也修改为1.修改完后按下回车
- 这样就简单实现了小海龟的圆周运动,
三.C++编码实现小海龟圆周运动.
1.创建ROS工作空间
①创建工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
②编译工作空间
cd ~/catkin_ws
catkin_make
③编译工作空间
source devel/setup.bash
④检查环境变量
echo $ROS_PACKAGE_PATH
2.创建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
3.C++代码
①.创建publisher.cpp文件
在位置~/catkin_ws/src/learning_topic/src/
下创建publisher.cpp文件.
②.发布话题的逻辑:
1.初始化ROS节点;
2.向ROS Master注册节点信息,包括发布的话题名和话题中的消息类型;
3.创建消息数据;
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;
}
4.添加编译选项
Python在ubuntu是可以直接执行的脚本语言,而C++是编译语言,在执行之前需要经过编译过程,因此在编译工作空间之前需要配置文件。
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
- 如果也显示100% 就接着下一步,启动publisher节点控制小海龟运动.
5.启动小海龟并实现控制
roscore
#打开新终端
rosrun turtlesim turtlesim_node
#打开新终端
cd ~/catkin_ws
#下面这一步是为了保证rosrun命令能够找到相应的功能包,有可以省去这一步骤的方法,各位可以自行查找
source ~/catkin_ws/devel/setup.bash
rosrun learning_topic publisher
- 完成命令后可以看到小海龟以圆周运动.
四.总结
这次实验是继用键盘控制小海龟移动后的进一步实验步骤,熟悉了ROS的消息和话题的收发机制.直观上也了解了小海龟的运动机制,了解了Turtlesim以线速度和角速度为基础运动,并且可以在终端直接进行赋值从而使得小海龟以我们想要的方式运动,并且最后我们实现了编程方式控制小海龟圆周运动,对ROS也有了更进一步的了解.
五.参考
[ROS基础-6] 发布话题消息控制Turtlesim运动实验
ROS通信实操(小乌龟通信实现)(九)C++、Python
ROS运行程序让小海龟实现圆周运动相关推荐
- ROS2教程(入门级):ROS 2 中的小海龟以及rqt的使用(1)
目标: 安装并使用 turtlesim 包以及 rqt,为接下来的教程做准备.本篇博客依然是跟着官方文档来的,有兴趣直接阅读官方文档的可以看这个. 背景 Turtlesim是一个学习ROS 2的轻量级 ...
- 【ROS玩转Turtlesim小海龟】
ROS玩转Turtlesim小海龟 一_键盘控制小海龟移动 二 _命令行控制小海龟移动 三 _按照记忆路线控制小海龟移动 Turtlesim 是一个用于学习 ROS的轻量级模拟器,因为其有个乌龟,所以 ...
- ROS安装和 控制小海龟画圆
1.ROS软件安装 (1)添加ROS软件源 sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -s ...
- ROS 入门教程 —— 小海龟简单控制
ROS 入门教程 -- 小海龟简单控制 这里我们直接介绍命令使用方法,原理请查看我的另外几篇博客: ROS 命令行工具的使用 ROS 创建工作空间与功能包 运行并控制小海龟 由于小海龟并不是 ROS ...
- ros例程---小海龟
①启动ROS Master roscore ②启动小海龟仿真器 打开一个新的终端,输入rosrun turtlesim turtlesim_node rosrun turtlesim turtlesi ...
- ROS实践--运行小海龟仿真例程
ROS实践–运行小海龟仿真例程 由于在之前就已经安装了ROS,所以本文章只有小海龟的相关实验. 1.启动小海龟及其键盘控制 1.1 启动rosmaster 打开一个终端(快捷键ctrl+alt+t), ...
- ROS入门:运行小海龟
安装配置ROS可参考:https://www.ros.org/ 要注意安装的版本:Ubuntu16.04对应Kinetic版本,Ubuntu18.04对应Melodic版本 ROS学习资料: ROS官 ...
- ros系统的安装及小海龟运行
系列文章目录 ros系统的安装 ros系统的安装 系列文章目录 一. VM安装ubuntu 二.unbunt系统的安装 三.ros的部署 3.1软件仓库的导入 3.2安装ros 3.3环境变量的设置以 ...
- ROS入门笔记(四):ROS实践(小海龟仿真)— ROS Topics
ROS入门笔记(四):ROS实践(小海龟仿真)- ROS Topics 文章目录 1 基础知识 1.1 运行ROS Master所在主机的资源地址 1.2 ROS常用命令 1.2.1 查看所有以ros ...
最新文章
- 【Codeforces】835B The number on the board (贪心)
- 重磅!Nature子刊发布稳定学习观点论文:建立因果推理和机器学习的共识基础...
- PDF转换图片,图片的切割,图片转换PDF以及PDF加水印等记录贴
- 【Linux】29.扫描本机同一局域网内 某端口开启 的主机
- php对象怎么拆分字符串数组,在PHP中将字符串拆分为Unicode字符数组的最佳方法是什么?...
- windows系统下oracle数据库rman备份记录(实战篇)
- rabbitmq可靠性投递_阿里Java研发二面:了解RabbitMQ?说说RabbitMQ可靠性投递
- centos 虚拟机 使用串口_在VMware虚拟机环境下安装CentOS 7操作系统
- rs485接口上下拉_通讯接口应用笔记1:RS485通讯上下拉电阻的选择
- 计算机毕业设计(18)java毕设作品之旅游景区景点售票购票系统
- matlab 傅里叶变换最美,MATLAB傅里叶变换
- 浏览器iframe跨域
- 2021年全球高级相变材料(PCM)收入大约1513.7百万美元,预计2028年达到3220.4百万美元
- java joda time_使用Joda-Time优雅的处理日期时间
- play框架使用起来(16)
- 数据清洗-使用es的ingest
- 世界50所知名大学开放课程列表及对应网站
- “湖南索御文化传媒”新闻发布会即将启动
- python 识图点击_Python图片识别找坐标(appium通过识别图片点击坐标)
- Windows 下安装 Ubuntu 双系统