栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

[ROS] turtle bot在gazebo仿真环境下做圆周运动

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[ROS] turtle bot在gazebo仿真环境下做圆周运动

先建一个新的工作空间

mkdir -p turtlebot_ws/src

然后进入到src文件内下载turtlebot的功能包

cd turtlebot_ws/src
git clone https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
git clone https://github.com/ROBOTIS-GIT/turtlebot3.git
git clone https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git

下载完后给工作空间安装相关依赖项,并编译

cd ../
rosdep install --from-paths src -i -y
catkin_make

编译完成后,我们还需要将工作空间添加到环境变量,这里直接将其设为永久的环境变量并更新

echo "source ~/turtlebot_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

然后开始进行模拟,先运行选择一个gazebo环境下的机器人,

export TURTLEBOT3_MODEL=burger                 # burger型机器人

export TURTLEBOT3_MODEL=waffle                 # waffle型机器人

再运行gazebo

roslaunch turtlebot3_gazebo turtlebot3_world.launch

 

查看相关的节点、话题消息,可以得到用于控制机器人运动的/cmd_vel话题

rostopic list

 

接下来我们就需要基于对/cmd_vel发布做圆周运动的消息,在学习中我采用了python来编写

#! usr/bin/env python
# coding=utf-8
import rospy
from geometry_msgs.msg import Twist                               # Twist通常含有各种速度类型的消息类型

def ss():
    msg=Twist()                                                      # 设定消息载体
    msg.linear.x=0.5                                                 # 给线速度、角速度赋值
    msg.angular.z=0.2
    pub = rospy.Publisher("/cmd_vel",Twist,queue_size=10)          # 定义向/cmd_vel话题发送Twist
    rate = rospy.Rate(2)                                           # 定义发布速率
    while not rospy.is_shutdown():                                 # 发布消息
        pub.publish(msg)                                           
        #rospy.loginfo("发布的线速度数据是:n ",msg.linear.x)
        #rospy.loginfo("发布的角速度数据是:n ",msg.angular.z)
        rate.sleep()                                               # 通过rate::sleep()处理睡眠的时间来控制对应的发布频率
        print('====================')


if __name__ == "__main__":
    rospy.init_node("turtlebot_test_2")                            # 注册、初始化节点
    ss()

最终代码运行成功。

自己写完才算理解了发布和订阅的方式,比如在这次仿真里,我们可以先运行官方的键盘操纵机器人的launch文件(在运行前,同样需要在终端内选择机器人)

roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

并通过rqt_graph来查看节点与节点间通过什么话题来传达消息

rqt_graph

 可以看出键盘节点是通过/cmd_vel话题来控制/gazebo,所以我们已经知道了/gazebp订阅了/cmd_vel话题,我们在编写时只需要向这个话题发布我们想要的行为即可。

暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1015630.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号