博客
关于我
ROS学习笔记十二:使用gazebo在ROS中仿真
阅读量:444 次
发布时间:2019-03-06

本文共 2594 字,大约阅读时间需要 8 分钟。

在ROS系统中进行机器人仿真,Gazebo是一个强大的选择。它支持复杂的室内和室外环境,能够在三维空间中模拟多个机器人、传感器和物体,并生成真实的传感器反馈和物理响应。

在Gazebo中使用URDF模型需要先安装ROS功能包与Gazebo交互。通过以下命令安装:

sudo apt-get install ros-indigo-gazebo-ros-pkgs ros-indigo-ros-control

接下来,使用.xacro文件定义机器人模型。例如,chapter7_tutorials/robot1_description/urdf/robot1_base_01.xacro文件中包含了机器人底盘的定义。需要注意的是,collisioninertial部分对于模型的物理响应至关重要。

为了在Gazebo中启动这些模型,创建一个名为gazebo.launch的文件到chapter7_tutorials/robot1_gazebo/launch文件夹,并添加以下内容:

使用以下命令启动仿真:

roslaunch robot1_gazebo gazebo.launch model:="`rospack find robot1_description`/urdf/robot1_base_01.xacro"

此时,仿真初始状态是暂停的,可以点击“Play”开始运行。注意,模型此时没有纹理渲染。在Gazebo中添加纹理需要在robot.gazebo文件中添加相关代码,将robot1_base_01.xacro另存为robot1_base_02.xacro,并包含:

启动后,机器人将带有纹理。

在Gazebo中添加传感器,例如激光雷达和摄像头。向robot1_base_02.xacro文件中添加激光雷达代码,并另存为robot1_base_03.xacro

robot.gazebo文件中添加激光雷达插件:

0 0 0 0 0 0
false
40
720
1
-1.570796
1.570796
0.10
30.0
0.01
gaussian
0.0
0.01
/scan
hokuyo_link

启动激光雷达模型:

roslaunch robot1_gazebo gazebo.launch model:="`rospack find robot1_description`/urdf/robot1_base_03.xacro"

同样方法,向模型中添加摄像头,并启动仿真:

roslaunch robot1_gazebo gazebo.launch model:="`rospack find robot1_description`/urdf/robot1_base_04.xacro"

在Gazebo中使用地图,启动willowgarage_world.launch文件:

roslaunch gazebo_ros willowgarage_world.launch

为了实现机器人在地图中移动和接收传感器数据,可以在robot1_base_04.xacro文件中添加以下代码:

100.0
/
base_to_wheel1
base_to_wheel3
base_to_wheel2
base_to_wheel4
4
0.1
base_link
1
cmd_vel
0

启动带有控制器、机器人和地图的模型:

roslaunch robot1_gazebo gazebo_wg.launch

使用键盘控制机器人移动,运行以下命令:

sudo apt-get install ros-indigo-teleop-twist-keyboardrosrun teleop_twist_keyboard teleop_twist_keyboard.py

通过终端输入命令,可以控制机器人在Gazebo中移动,并接收激光雷达和摄像头的仿真数据。

转载地址:http://amsyz.baihongyu.com/

你可能感兴趣的文章
Objective-C实现adaboost算法(附完整源码)
查看>>
Objective-C实现Adler32算法(附完整源码)
查看>>
Objective-C实现AffineCipher仿射密码算法(附完整源码)
查看>>
Objective-C实现all combinations所有组合算法(附完整源码)
查看>>
Objective-C实现all permutations所有排列算法(附完整源码)
查看>>
Objective-C实现all subsequences所有子序列算法(附完整源码)
查看>>
Objective-C实现AlphaNumericalSort字母数字排序算法(附完整源码)
查看>>
Objective-C实现alternate disjoint set不相交集算法(附完整源码)
查看>>
Objective-C实现An Armstrong number阿姆斯特朗数算法(附完整源码)
查看>>
Objective-C实现anagrams字谜算法(附完整源码)
查看>>
Objective-C实现ApproximationMonteCarlo蒙特卡洛方法计算pi值算法 (附完整源码)
查看>>
Objective-C实现area under curve曲线下面积算法(附完整源码)
查看>>
Objective-C实现arithmetic算术算法(附完整源码)
查看>>
Objective-C实现armstrong numbers阿姆斯壮数算法(附完整源码)
查看>>
Objective-C实现articulation-points(关键点)(割点)算法(附完整源码)
查看>>
Objective-C实现atoi函数功能(附完整源码)
查看>>
Objective-C实现average absolute deviation平均绝对偏差算法(附完整源码)
查看>>
Objective-C实现average mean平均数算法(附完整源码)
查看>>
Objective-C实现average median平均中位数算法(附完整源码)
查看>>
Objective-C实现average mode平均模式算法(附完整源码)
查看>>