ROS 入门教程 —— 小海龟简单控制

这里我们直接介绍命令使用方法,原理请查看我的另外几篇博客:

  1. ROS 命令行工具的使用

  2. ROS 创建工作空间与功能包

运行并控制小海龟

由于小海龟并不是 ROS 中自带的包,所以我们需要安装小海龟:

sudo apt update
sudo apt install ros-noetic-turtlesim

注意:这里要考虑自己 ROS 版本对应的小海龟的包

然后我们要运行小海龟:

首先要运行 ROS-Master,这里我们直接运行如下程序即可:

roscore

成功运行显示画面如下:

然后我们需要启用第二个终端运行如下程序:

rosrun turtlesim turtlesim_node

注意:这里我们每运行一个新的程序都需要启动一个新的终端窗口

这里我们就已经打开了 turtlesim,下面我们要学会如何控制他行动:

运行如下程序可以通过小键盘控制小海龟运动:

rosrun turtlesim turtle_teleop_key

这时我们就可以通过小键盘来控制小海龟

命令行控制小海龟转圈

这里我们前面在博客中已经介绍了如何通过发布话题控制小海龟,这里直接给出使小海龟转圈的命令

rostopic pub -r 10 /turtle1/cmd_vel geometry_msgs/Twist
"linear:x: 0.5y: 0.0z: 0.0
angular:x: 0.0y: 0.0z: 0.5"
# 这里表示循环运行 1s 运行 10 次,我们这里运行的是小海龟示例,撞墙会有提示
#这里的 linear 表示线速度, angular 表示角速度

这样我们就能通过命令来控制小海龟转圈

这里循环执行我们可以用 ctrl+c 停下来

代码控制小海龟转圈

首先我们需要建立好一个新的功能包,这里我们的功能包名称为 learning_topic 我们需要进入到功能包的路径下,新建一个 scripts 文件夹用于存储 python 文件

然后我们在 src 中新建一个代码文件:

c++ 控制代码如下:

/*该例程将发布 turtle1/cmd_vel 话题,消息类型 geometry msgs::Twist
*/#include <ros/ros.h>
#include <geometry_msgs/Twist.h>int main(int argc, char **argv){// ROS 节点初始化ros::init(argc, argv, "velocity_pulisher");// 创建节点句柄ros::NodeHandle n;// 创建一个 Publisher,发布名为 /turtle1/cmd_vel 的 topic,消息类型为 geometry_msgs::Twist,队列长度 10ros::Publisher turtle_vel_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 10);// 设置循环频率ros::Rate loop_rate(10);int count = 0;while(ros::ok()){// 初始化 geometry_msgs::Twist 类型的消息geometry_msgs::Twist vel_msg;vel_msg.linear.x = 0.5;vel_msg.angular.z = 0.2;// 发布消息turtle_vel_pub.publish(vel_msg);ROS_INFO("Publish turtle velocity command[%0.2f m/s, %0.2f rad/s]",vel_msg.linear.x, vel_msg.angular.z);// 按照循环频率延时loop_rate.sleep();}return 0;
}

python 程序原理相同,程序如下:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-import rospy
from geometry_msgs.msg import Twistdef velocity_publisher():# ROS 节点初始化rospy.init_node('velocity_publisher', anonymous=True)# 创建一个 publisher,发布名为 /turtle1/cmd_vel 的 topic.消息类型为 geometry_msgs::Twist, 队列长度 10turtle_vel_pub = rospy.Publisher('/turtle1/cmd_vel', Twist, queue_size=10)# 设置循环频率rate = rospy.Rate(10)while not rospy.is_shutdown():# 初始化 geomety_msgs::Twist 类型消息vel_msg = Twist()vel_msg.linear.x = 1.5vel_msg.angular.z = 0.2# 发布消息turtle_vel_pub.publish(vel_msg)rospy.loginfo("Publish turtle velocity command[%0.2f m/s, %0.2f rad/s]",vel_msg.linear.x, vel_msg.angular.z)# 按照循环频率延时rate.sleep()if __name__ == "__main__":try:velocity_publisher()except rospy.ROSInterruptException:pass

注意:python程序中第一行一定要加上 #!/usr/bin/env python3 才能识别 python 运行,这里我们还需要给 python 文件运行权限,直接执行如下命令即可:

chmod +x velocity_publisher.python

然后我们需要在上级路径中的 CMakeLists.txt 中 Install 前添加如下两行:

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

在前面的博客中我们已经介绍过了,这两句是用来补全环境的,这里就不过多介绍了

然后我们返回到 catkin_ws 目录下,执行编译命令:

catkin_make

编译成功如下:

我们直接执行我们发布的话题就可以控制小海龟转圈了:

python 程序同样:

话题查看器查看消息传递

首先我们使用 rqt 来查看系统功能:

安装 rqt 命令如下:

sudo apt-get install ros-noetic-rqt
sudo apt-get install ros-noetic-rqt-common-plugins

直接启用就能看到系统的全貌:

rosrun rqt_graph rqt_graph

使用如下命令查看发布的所有话题:

rostopic list

ROS 入门教程 —— 小海龟简单控制相关推荐

  1. ros入门启动小海龟(ros2版本)

    首先终端 ros2 run turtlesim turtlesim_node 其次打开新的终端 ros2 run turtlesim turtlesim_node 最后再打开一个新的终端 ros2 r ...

  2. ROS入门笔记(四):ROS实践(小海龟仿真)— ROS Topics

    ROS入门笔记(四):ROS实践(小海龟仿真)- ROS Topics 文章目录 1 基础知识 1.1 运行ROS Master所在主机的资源地址 1.2 ROS常用命令 1.2.1 查看所有以ros ...

  3. ROS2入门教程—创建一个简单的订阅者和发布者(C++版)

    ROS2入门教程-创建一个简单的订阅者和发布者(C++版) 1 创建功能包 2 创建发布者节点 3 设置发布者节点依赖项 4 设置发布者节点编译规则 5 创建订阅者 6 编译并运行   节点是通过RO ...

  4. ROS实践--运行小海龟仿真例程

    ROS实践–运行小海龟仿真例程 由于在之前就已经安装了ROS,所以本文章只有小海龟的相关实验. 1.启动小海龟及其键盘控制 1.1 启动rosmaster 打开一个终端(快捷键ctrl+alt+t), ...

  5. ROS入门教程(三)—— 用C++实现Hello world

    本文将继上文介绍安装完用C++或Python实现Hello world后,如何在VS Code下用C++实现Hello world. 目录 前言 Hello world实现 前言 在VS Code下用 ...

  6. 【前端实例代码】Html5+css3+JavaScript创建在线播放架子鼓电子鼓演奏网页效果!前端开发网页设计基础入门教程!超简单~

    b站视频演示效果: [前端实例代码]Html5+css3+JavaScript创建在线播放架子鼓电子鼓演奏网页效果!前端开发网页设计基础入门教程!超简单~ 效果图: 完整代码: <!DOCTYP ...

  7. 【ROS入门教程】---- 01 ROS介绍

    ROS,机器人系统的不二选择 文章目录 ROS,机器人系统的不二选择 ROS是什么 ROS的强大之处 ROS的学习方法 总结 ROS是什么 作为新世纪的孩子们,可能从出生以来,我们就伴随着机器人的飞速 ...

  8. ubuntu16.04中成功安装ROS后,小海龟示例

    那麽恭喜了,ROS成功安装上了--- 我们可以跑一个测试程序---小海龟.先安装示例 : $ sudo apt-get install ros-kinetic-turtlesim 然后,在三个不同的终 ...

  9. windows上ubuntu双系统安装+ROS配置全过程+小海龟+RVIZ

    win系统下安装 Linux 双系统教程 [系统名称]: Linux [系统大小]: 1.82G [系统版本]: 18.04.1 [安装环境]: win10 [下载方式]: 百度网盘: https:/ ...

最新文章

  1. B/S模式下如何使软件屏蔽系统热键
  2. php调取 zabbix实时数据_zabbix-基础系列(三)-zabbix安装[官方版]
  3. Chrome开发者工具一个有用的快捷键组合:Ctrl+Shift+E
  4. webpack多个Html,少量修改webpack配置支持打包多页面
  5. php实验星星塔,简单编程(九)编程制作特殊图案 星星塔(3) 左右星星塔 for循环的嵌套编程...
  6. mysql char 二进制_SQL:char 和 varchar、binary 和 varbinary、二进制字符串、严格模式、汉字编码方式...
  7. android获取spinner的值_在Android的Spinner中实现键值对的正确方法是什么
  8. MikroTik RouterOS 6.x版本开始支持使用img镜像安装(U盘安装的终极解决方法)
  9. C#强制关闭Excel进程(通过COM使用Excel时)
  10. libevhtp介绍与demo构建
  11. Python 中Python 为什么要继承 object 类
  12. 【Java思维导图】
  13. 【业务实战】批量生成二维码并打成压缩包
  14. win10 SVN 图标不显示的解决办法
  15. 汇编语言期末复习总结
  16. JVM源码分析之Attach机制实现完全解读
  17. 基于jsp,javaweb、ssm教务管理系统
  18. 程序员的自我进化:学习之道,如何更有效的学习
  19. 一个公司有m名推销员,他们都推销n种不同的产品。其中m>=l;m<=100,n>=l,n<=10。每天,每个推销员都要为售出的每一种产品交上来一个卡片。
  20. Photoshop CC 2017 在Mac上安装报错解决办法

热门文章

  1. 项目从SVN修改成git
  2. java中关于数组的长度
  3. 践行新金融理念——建行广东江门分行提升信用卡业务精细化管理水平
  4. 【TIFF】三.用libtiff读写黑白TIFF
  5. STM32单片机中WIFI模块数据传输问题(float->u32->u8/u8->u32->float)
  6. h5调用本地摄像头和麦克风一
  7. 2022年的falg
  8. 【搜索】 来自风平浪静的明天
  9. 【隧道篇 / IPsec】(5.2) ❀ 02. IPsec - 固定IP宽带 to 固定IP宽带 (接口模式) ❀ FortiGate 防火墙
  10. 导数的应用如何运用计算机教学,如何运用多媒体数学教学