6.28-机器人模拟器Gazebo基础

gazebo基础学习

前言

  • 在算法人员开发出可以真机使用的算法之前进行仿真
  • 学习机器人物理仿真器的基本使用,包括创建场景,制作ROS控制接口等

目录

TOC

参考

gazebo_ros_pkgs
ros intergration with gazebo
gazebo tutorials
sdf file specification
plugins 101
ROS探索总结(二十四)——使用gazebo中的插件

学习记录

基础

安装gazebo7(ubuntu 14.04)

  • 注意:ros-indigo-desktop-full 与 gazebo2共同依赖libsdformat1,安装gazebo7需要卸载gazebo2,也会卸载ros-indigo-desktop-full,注意之后还要继续安装ros-indigo-desktop,以保证其他包不被autoremove掉
  • 注意:以后不要使用sudo apt-get autoremove
sudo apt-get remove gazebo2
sudo apt-get install ros-indigo-desktop
sudo apt-get install gazebo7
sudo apt-get install 
liballegro4.4 liballegro4.4-plugin-alsa libcegui-mk2-0.7.6 libcegui-mk2-dev
  libdevil-dev libdevil1c2 libfltk1.1 libfltk1.1-dev liblcms1 liblcms1-dev
  liblcms2-dev liblodo3.0 liblua5.1-0-dev libmng-dev libois-1.3.0 libpmap3.0
  libreadline-dev libreadline6-dev libsilly robot-player
  ros-indigo-driver-base ros-indigo-stage ros-indigo-stage-ros

安装ROS通讯包

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

ros-kinetic自带gazebo7不能正常打开

  • 由于gazebo无法自动成功下载到应该有的模型
  • 将下载好的模型复制到~/.gazebo/models中即可
  • 调试技巧-gazebo --verbose

cs架构

  • gazebo实际上运行了两个可执行程序,一个是gzserver,一个是gzclient。gzserver运行传感器数据产生程序和物理引擎更新程序,能够脱离图形界面独立运行,一个例子是gzserver运行于云计算机上;gzclient运行一个基于QT的用户界面,作为仿真的可视化以及一些仿真参数的设置。
  • 当分别运行gzserver和gzclient时,可以运行多个gzclient实例。

World Files环境文件

  • 环境描述文件包含仿真中所有的元素,包括机器人,光线,传感器以及静物等。此文件具有SDF格式,以*.world为扩展名
  • sdf文件是一种xml格式文件,用于描述机器人仿真器的物体和环境,经过多年发展SDF已经成为一个稳定,鲁棒的格式,并已经具有描述各种形式的机器人,静态或运动的物体,光线,障碍,甚至物理属性。

Model Files模型文件

  • 模型文件拥有与环境文件一样的文件语法SDF,但是只能包含一个 对,此文件的用途是重复使用模型文件,下面的语法可以使用模型文件
<include>
  <uri>model://model_file_name</uri>
</include>

环境变量

GAZEBO_MODEL_PATH
GAZEBO_RESOURCE_PATH    # 其他搜索资源,如环境和媒体文件的路径 # gzserver,gazebo目标文件位置相对路径的起点
GAZEBO_MASTER_URI
GAZEBO_PLUGIN_PATH    # 放置插件的路径
GSZEBO_MODEL_DATABASE_URI    # 在线下载模型的网络地址
  • 默认的setup.bash存放在
source <install_path>/share/gazebo/setup.sh
  • 插件打开方法示例
gzserver -s <plugin_filename> <world_file>
gzclient -g <plugin_filename>

模型构建

单个模型构建

创建一个基本sdf模型

添加力学特性:惯性

添加运动关节

添加传感器

添加外观

  • 使用freecad,blender,采用中间格式dae
  • 使用solidworks也是可以的

模型拓扑结构

  • .config文件中声明sdf文件,sdf文件中包含.world内容和机器人部件sdf内容,sdf文件中包含dae,模型和力学特性内容

使用meshes

  • 也就是在sdf文件的 中定义 等内容

模型纹理和花纹

传感器定义及噪声

显示传感器数据

添加噪声

  • 在sdf文件中添加 等参数

写插件来使用这个传感器

  • 是一个cpp文件
  • 添加CMake支持,生成一个插件名称和一个.so库文件
  • 在world文件中添加一些声明,与插件绑定

源文件中加载这个模型和插件

  • 在源文件中编辑,添加这个传感器,创建接口API即消息发送和接收渠道
  • 测试

与ROS连接

  • 添加ROS的传输层,在源文件中编辑
  • 修改CMakeLists.txt,编译
  • 完成了

猜你喜欢

转载自www.cnblogs.com/lizhensheng/p/11117519.html