仿真实验

Gazebo是一个功能十分强大的三维仿真软件,与ROS可以无缝连接进行机器人仿真。更多关于Gazebo的信息请参考Gazebo官网和ROS官网的Gazebo Wiki。本章讲解如何控制HandsFree的机器人模型在Gazebo的三维世界中进行移动。


在安装ROS的时候一般已经默认安装了Gazebo,ROS Indigo默认安装Gazebo2.0版本,ROS Kinetic默认安装Gazebo7.0版本。在如何配置环境章节已经安装了连接ROS与Gazebo的依赖包。
通过以下命令测试Gazebo是否能正常工作:

roslaunch gazebo_ros empty_world.launch

如果能正常启动Gazebo,并且可以成功加载一个空白的世界模型,那就表示Gazebo可以正常工作。
正常加载empty_world模型:
picture
此外,Gazebo对电脑显卡有一定要求,对Nvida显卡支持较好,对AMD的显卡支持较差,如果是AMD的显卡,复杂的世界模型一般加载不出来,例如下面的模型:

roslaunch gazebo_ros willowgarage_world.launch

一般AMD的显卡可以启动Gazebo,但是界面是黑屏状态,无法加载模型。由于本章节的演示所加载的模型较简单,故对本章节要进行的仿真演示没有影响。下面进入正文。

添加驱动插件至机器人模型

handsfree/handsfree_gazebo/urdf目录下是HandsFree的机器人模型文件,为了驱动机器人模型,使其在Gazebo中运动,我们需要向模型文件中添加驱动插件,添加如下内容至handsfree_base.xacro文件的</xacro:macro>上方:

<gazebo>
<plugin name="differential_drive_controller" filename="libgazebo_ros_diff_drive.so">
<alwaysOn>true</alwaysOn>
<updateRate>100</updateRate>
<leftJoint>wheel_right_slipping</leftJoint>
<rightJoint>wheel_left_slipping</rightJoint>
<wheelSeparation>0.36</wheelSeparation>
<wheelDiameter>0.06</wheelDiameter>
<torque>10</torque>
<commandTopic>cmd_vel</commandTopic>
<odometryTopic>odom</odometryTopic>
<odometryFrame>odom</odometryFrame>
<robotBaseFrame>base_link</robotBaseFrame>
<broadcastTF>0</broadcastTF>
</plugin>
</gazebo>

上述添加的内容主要作用是表明使用差分方式驱动的轮子的标号,以及速度控制命令的话题是/cmd_vel,也就是说之后我们只要以/cmd_vel话题发布速度消息就可以控制机器人在Gazebo中运动了。关于上述内容的详细介绍请参考Gazebo官方教程
然后使用如下命令打开Gazebo并加载HandsFree的机器人模型:

roslaunch handsfree_gazebo handsfree_gazebo.launch

如果一切正常的话,可以在Gazebo的空白世界中看到HandsFree的Stone机器人模型。
picture

发送速度消息

为了使机器人运动,我们需要以/cmd_vel话题发送速度消息,在此我们使用Turtlebot_teleop节点,将话题/turtlebot_teleop/cmd_vel重映射到/cmd_vel就行了。
使用如下命令打开发送界面:

rosrun turtlebot_teleop turtlebot_teleop_key /turtlebot_teleop/cmd_vel:=/cmd_vel

结果显示如下:

Control Your Turtlebot!
---------------------------
Moving around:
   u    i    o
   j    k    l
   m    ,    .

q/z : increase/decrease max speeds by 10%
w/x : increase/decrease only linear speed by 10%
e/c : increase/decrease only angular speed by 10%
space key, k : force stop
anything else : stop smoothly

CTRL-C to quit

currently:    speed 0.2    turn 1

打开后的界面与遥控机器人教程中键盘遥控机器人运动的一样,使用ijl等键控制机器人在Gazebo中运动。
到此完成控制机器人在Gazebo中运动,这只是一个简单的Gazebo例程,更多应用请参考Gazebo官方教程

Copyright © handsfree.org.cn 2017 all right reserved,powered by Gitbook该文件修订时间: 2018-02-02 07:22:38

results matching ""

    No results matching ""