ROS 入门教程 —— 小海龟简单控制
ROS 入门教程 —— 小海龟简单控制
这里我们直接介绍命令使用方法,原理请查看我的另外几篇博客:
ROS 命令行工具的使用
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 入门教程 —— 小海龟简单控制相关推荐
- ros入门启动小海龟(ros2版本)
首先终端 ros2 run turtlesim turtlesim_node 其次打开新的终端 ros2 run turtlesim turtlesim_node 最后再打开一个新的终端 ros2 r ...
- ROS入门笔记(四):ROS实践(小海龟仿真)— ROS Topics
ROS入门笔记(四):ROS实践(小海龟仿真)- ROS Topics 文章目录 1 基础知识 1.1 运行ROS Master所在主机的资源地址 1.2 ROS常用命令 1.2.1 查看所有以ros ...
- ROS2入门教程—创建一个简单的订阅者和发布者(C++版)
ROS2入门教程-创建一个简单的订阅者和发布者(C++版) 1 创建功能包 2 创建发布者节点 3 设置发布者节点依赖项 4 设置发布者节点编译规则 5 创建订阅者 6 编译并运行 节点是通过RO ...
- ROS实践--运行小海龟仿真例程
ROS实践–运行小海龟仿真例程 由于在之前就已经安装了ROS,所以本文章只有小海龟的相关实验. 1.启动小海龟及其键盘控制 1.1 启动rosmaster 打开一个终端(快捷键ctrl+alt+t), ...
- ROS入门教程(三)—— 用C++实现Hello world
本文将继上文介绍安装完用C++或Python实现Hello world后,如何在VS Code下用C++实现Hello world. 目录 前言 Hello world实现 前言 在VS Code下用 ...
- 【前端实例代码】Html5+css3+JavaScript创建在线播放架子鼓电子鼓演奏网页效果!前端开发网页设计基础入门教程!超简单~
b站视频演示效果: [前端实例代码]Html5+css3+JavaScript创建在线播放架子鼓电子鼓演奏网页效果!前端开发网页设计基础入门教程!超简单~ 效果图: 完整代码: <!DOCTYP ...
- 【ROS入门教程】---- 01 ROS介绍
ROS,机器人系统的不二选择 文章目录 ROS,机器人系统的不二选择 ROS是什么 ROS的强大之处 ROS的学习方法 总结 ROS是什么 作为新世纪的孩子们,可能从出生以来,我们就伴随着机器人的飞速 ...
- ubuntu16.04中成功安装ROS后,小海龟示例
那麽恭喜了,ROS成功安装上了--- 我们可以跑一个测试程序---小海龟.先安装示例 : $ sudo apt-get install ros-kinetic-turtlesim 然后,在三个不同的终 ...
- windows上ubuntu双系统安装+ROS配置全过程+小海龟+RVIZ
win系统下安装 Linux 双系统教程 [系统名称]: Linux [系统大小]: 1.82G [系统版本]: 18.04.1 [安装环境]: win10 [下载方式]: 百度网盘: https:/ ...
最新文章
- B/S模式下如何使软件屏蔽系统热键
- php调取 zabbix实时数据_zabbix-基础系列(三)-zabbix安装[官方版]
- Chrome开发者工具一个有用的快捷键组合:Ctrl+Shift+E
- webpack多个Html,少量修改webpack配置支持打包多页面
- php实验星星塔,简单编程(九)编程制作特殊图案 星星塔(3) 左右星星塔 for循环的嵌套编程...
- mysql char 二进制_SQL:char 和 varchar、binary 和 varbinary、二进制字符串、严格模式、汉字编码方式...
- android获取spinner的值_在Android的Spinner中实现键值对的正确方法是什么
- MikroTik RouterOS 6.x版本开始支持使用img镜像安装(U盘安装的终极解决方法)
- C#强制关闭Excel进程(通过COM使用Excel时)
- libevhtp介绍与demo构建
- Python 中Python 为什么要继承 object 类
- 【Java思维导图】
- 【业务实战】批量生成二维码并打成压缩包
- win10 SVN 图标不显示的解决办法
- 汇编语言期末复习总结
- JVM源码分析之Attach机制实现完全解读
- 基于jsp,javaweb、ssm教务管理系统
- 程序员的自我进化:学习之道,如何更有效的学习
- 一个公司有m名推销员,他们都推销n种不同的产品。其中m>=l;m<=100,n>=l,n<=10。每天,每个推销员都要为售出的每一种产品交上来一个卡片。
- Photoshop CC 2017 在Mac上安装报错解决办法
热门文章
- 项目从SVN修改成git
- java中关于数组的长度
- 践行新金融理念——建行广东江门分行提升信用卡业务精细化管理水平
- 【TIFF】三.用libtiff读写黑白TIFF
- STM32单片机中WIFI模块数据传输问题(float->u32->u8/u8->u32->float)
- h5调用本地摄像头和麦克风一
- 2022年的falg
- 【搜索】 来自风平浪静的明天
- 【隧道篇 / IPsec】(5.2) ❀ 02. IPsec - 固定IP宽带 to 固定IP宽带 (接口模式) ❀ FortiGate 防火墙
- 导数的应用如何运用计算机教学,如何运用多媒体数学教学