一、首先创建一个功能包

跳转到src目录下
catkin_create_pkg 功能包名字
进入目录,创建一个script目录(主要使用py来写)
然后创建一个py文件,取名draw_circle.py  默认是没有可执行权限的,要手动加上

二、控制机器人做圆周运动

思路:通过给机器人持续发布一个含有角速度和线速度的运动指令,让机器人实现一个圆周运动

开始写代码

#!/usr/bin/python    这个必写的啦
import rospy        这个也是必写的啦
from geometry_msg.msg import Twist
(我们要发布一个速度指令,之前在执行机器人例程中,启动的键盘发布节点,发布的消息名是cmd_vel,消息类型则是Twist,所以我们import Twist这个消息)先创建一个发布器
def cmd_vel_pub():rospy.init_node(‘draw_circle’,anonymous=False)    初始化一个节点,取名draw_circle,anonymous为false让节点名保持不变再创建一个发布器,消息名取cmd_vel,消息类型是Twist,设置一个缓存队列queue_size=10,这样最多可以缓存10条消息cmd_pub = rospy.Publisher(‘cmd_vel’,Twist,queue_size=10)设置一个发布频率,设置为10赫兹,一秒钟发布10次消息rate = rospy.Rate(10)然后创建一个Twist类型的消息twist = Twist()这时可以输出一条消息,比如“开始控制机器人”rospy.loginfo(‘Start Control Robot Draw a Circle’)然后进入一个循环,并设置,只要节点没有结束,就一直循环while not rospy.is.shutdown():然后我们在这里循环发布消息,要给twist里面进行赋值我们先查看twist消息中包含哪些内容,可以打开终端,用rosmsg show geometry_msgs/Twist查看

 可以看到包含了linear的向量,里面有xyz(线速度),以及角速度的xyz先给线速度赋值twist.linear.x = 0.2   咱沿着x方向运动,设定以0.2米每秒的速度twist.angular.z = 0.4 角速度我们赋值给z,我们是绕着z轴旋转,0.4弧度每秒根据v(线速度)=Ω(角速度)*r(半径)可以算出,r=0.5米(0.2 = 0.4*0.5)赋值完之后,我们发布出去cmd_pub.publish(twist)发布完成后,我们把剩余的时间用sleep消耗掉rate.sleep()然后写主函数if  __name__ == '__main__':try:cmd_vel_pub()except rospy.ROSInternalException:pass

写完了,完整代码:

#!/usr/bin/python
import rospy
from geometry_msgs.msg import Twistdef cmd_vel_pub():rospy.init_node('draw_circle',anonymous=False)cmd_pub = rospy.Publisher('cmd_vel',Twist,queue_size=10)rate = rospy.Rate(10)twist = Twist()rospy.loginfo('Start Control Robot Draw a Circle')while not rospy.is_shutdown():twist.linear.x = 0.2twist.angular.z = 0.4cmd_pub.publish(twist)rate.sleep()if  __name__ == '__main__':try:   cmd_vel_pub()except rospy.ROSInternalException:   pass

总结步骤:
1、初始化一个节点
2、创建发布器
3、设置一个发布频率
4、创建消息类型
5、发布消息(可循环发布,也可指定发布次数)
1、为消息赋值
2、发布消息
6、主函数调用

可以在我们的仿真器中运行一下看看
查看我们的pc中master节点是机器人还是我们pc自己,如果是机器人,就改成我们自己为master
在.bashrc 中修改

输入指令

 roslaunch robot_simulation simulation_one_robot.launch   启动仿真器

编译工作空间,然后再新开窗口,启动我们编写的节点

rosrun yjc_application_test draw_circle.py



小车开始画圆了
查看一下速度发布器的信息
仿真器作为订阅者,画圆的程序作为发布者

然后在真的机器人上试试
先启动机器人底盘节点
pc端配置分布式通讯,把master节点设置回机器人ip

然后启动程序,机器人开始画圆~

以上。

ROS小车应用:控制机器人做圆周运动相关推荐

  1. ros小车控制学习-------控制真实机器人做圆周运动

    ros课程的期末作业是控制真实机器人做运动,自行设计小车运动轨迹为特定图案.接下来描述一下控制真实机器人做圆周运动的简单步骤以及可能遇到的问题和我的解决办法. 个人建议是使用软件Bitvise SSH ...

  2. ROS+科大讯飞语音识别控制机器人

    科大讯飞语音识别控制实际机器人运动. 本文将ros与语音识别想结合进行开发.进行以下步骤, 1.创作ros工作空间 2.安装mpalyer播放器 sudo apt-get install mplaye ...

  3. 基于ROS的语音控制机器人(一):基本功能的实现

    文章目录 目录 文章目录 前言 一.ubuntu16.04和树莓派安装ROS-kinetic 二.树莓派和PC机之间的ros通信 1.修改环境变量 2.数据通信 三.科大讯飞sdk下载 四.树莓派和S ...

  4. python机器人编程——差速机器人小车的控制,控制模型、轨迹跟踪,轨迹规划、自动泊车(上)

    目录 一.前言 二.差速小车机器人的运动分析 三.正向运动控制模型推导 3.1问题描述 3.2符号定义 3.3算式推导 Step1 寻找数量关系,求出圆周半径,角度变化 Step2 获取相对坐标 St ...

  5. ROS小车基于yocs_smoother_velocity做速度平滑处理

    文章目录 做速度平滑处理的背景 yocs_smoother_velocity功能包解析 如何使用yocs_smoother_velocity 注意事项 功能拓展 做速度平滑处理的背景 ROS 导航模块 ...

  6. ROS小车打造(12)--Arduino订阅cmd_vel实现差速控制

    基本思路: 上一篇已经能实现arduino对ROS节点的订阅与发布,所以只要订阅到ROS的移动控制消息,并把它转换为小车的移动命令即可实现ROS对小车的移动驱动. ROS小车打造(十一)--ardui ...

  7. ROS小车——登录和简单控制(1)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.无线连接wifi和ssh登录 二.AP热点和ssh登录 1.ROS小车开机 2.电脑连接ROS小车热点 3.使用p ...

  8. [转]基于ROS平台的移动机器人-4-通过ROS利用键盘控制小车移动

    原文出处: https://blog.csdn.net/Forrest_Z/article/details/55002484 准备工作 1.下载串口通信的ROS包 (1)cd ~/catkin_ws/ ...

  9. 使用ROS melodic下 控制真实UR5机器人 手把手教程

    背景如题 参考:https://blog.csdn.net/weixin_37806591/article/details/119387696 https://blog.csdn.net/Dawn_y ...

最新文章

  1. 深入解析Java编译器学习笔记
  2. 支付宝支付后回调通知中responseTxt=true isSign=False可能的问题
  3. linux应用系统使用率,Linux性能优化实战:系统CPU使用率高,但为啥找不到高的应用(06)...
  4. 怎么在图片上面加个div层,让它浮于图片上方
  5. Mapreduce执行过程分析(基于Hadoop2.4)——(一)
  6. hashmap为什么是2的倍数_HashMap源码解析(jdk1.8)
  7. kali201904更新国内源的步骤
  8. python自动化控制_python用于自动化控制编程
  9. java请求百度短链接_长链接生成短链接Java源码(调用百度接口)
  10. linux系统管理考试试题及答案,Linux系统管理一测试题-附答案
  11. Directed Minimum Spanning Tree: Chu-Liu/Edmonds Algorithm
  12. LINUX下类似画图板Paint的工具
  13. python lasso回归分析_解析python实现Lasso回归
  14. 【基于机器视觉与深度学习的人机对弈机器人——决策篇】
  15. 各类后台脚本语言区别(PHP、JSP、ASP和ASPX)
  16. [JavaScript] 模拟京东快递单号查询案例
  17. stellarium-0.19.3.1-win64.exe下载
  18. Visual studio 2015(VS2015)的下载和安装,以及安装VS2015中的C++
  19. 什么是储蓄池抽样(Reservoir Sampling)算法?
  20. 马士兵—JVM—内存溢出—2.arthas阿里线上Java诊断工具

热门文章

  1. eclipse连接SQL Server数据库(详解很细心)
  2. 阿里云服务器ECS Ubuntu16.04-64-bit学习之一:配置桌面(进阶-脚本一键执行)
  3. 2021.5.13 易协同访客数据
  4. 联想LJ2000打印机Mac OS/Linux驱动程序
  5. IDEA如何删除项目-小白实操记录
  6. error uploading crisocket: timed out waiting for the conditionswapoff -a # will turn off the swap
  7. 什么是钕铁硼渗镝渗铽技术?
  8. 软件开发主要流程步骤
  9. 中国制造2025-智能制造是强国必由之路
  10. JAVA与MAVEN打包