4 机器人仿真

  • 机器人URDF模型优化
  • ArbotiX+rviz功能仿真
  • Gazebo物理仿真环境搭建

机器人URDF模型优化

URDF模型的进化版本——xacro模型文件

精简模型代码

  • 创建宏定义
  • 文件包含

提供可编程接口

  • 常量
  • 变量
  • 数字计算
  • 条件语句
常量定义

常量定义
<xacro:property name="M_PI" value="3.14159" />
常量使用
<origin xyz="0 0 0" rpy="${M_PI/2} 0 0" />

数学计算

<origin xyz="0 ${(motor_length+wheel_length)/2} 0" rpy="0 0 0"/>
注意:所有数学运算都会转换成浮点数进行,以保证运算精度

宏定义

宏定义
<xacro:macro name="name" params="A B C">
......
</xacro:macro>
宏调用
<name A="A_value" B="B_value" C="C_value" />

文件包含

<xacro:include filename="$(find mbot_description)/urdf/xacro/mbot_base.xacro" />

模型显示

方法一.将xacro文件转换成URDF文件后显示
rosrun xacro xacro.py mbot.xacro > mbot.urdf
方法二.直接调用xacro文件解析器(在launch文件中进行)
<arg name="model" default="$(find xacro)/xacro --inorder '$(find mbot_description)/urdf/xacro/mbot.xacro'" />
<param name="robot_description" command="$(arg model)" />

ArbotiX+rviz功能仿真

ArbotiX:

  • 一种控制电机、舵机的硬件控制板
  • 提供了相应的ROS功能包
  • 提供了一个差速控制器,通过接受速度控制指令,更新机器人的里程计状态。
    ps.http://wiki.ros.org/arbotix
安装Arbotix功能包

git clone https://github.com/vanadiumlabs/arbotix_ros.git
catkin_make

注意:arbotix_ros中的Python文件需要添加可执行权限


添加可执行权限
配置ArbotiX控制器

第一步:创建launch文件arbotix_mbot_with_camera_xacro.launch

<launch>
    <arg name="model" default="$(find xacro)/xacro --inorder '$(find mbot_description)/urdf/xacro/mbot_with_camera.xacro'" />
    <arg name="gui" default="false" />

    <param name="robot_description" command="$(arg model)" />

    <!-- 设置GUI参数,显示关节控制插件 -->
    <param name="use_gui" value="$(arg gui)"/>

    <node name="arbotix" pkg="arbotix_python" type="arbotix_driver" output="screen">
        <rosparam file="$(find mbot_description)/config/fake_mbot_arbotix.yaml" command="load" />
        <param name="sim" value="true"/>
    </node>

    <!-- 运行joint_state_publisher节点,发布机器人的关节状态  -->
    <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />

    <!-- 运行robot_state_publisher节点,发布tf  -->
    <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />

    <!-- 运行rviz可视化界面 -->
    <node name="rviz" pkg="rviz" type="rviz" args="-d $(find mbot_description)/config/mbot_arbotix.rviz" required="true" />

</launch>

第二步:创建配置文件

controllers: {
   base_controller: {
       type: diff_controller, 
       base_frame_id: base_footprint, 
       base_width: 0.26, 
       ticks_meter: 4100, 
       Kp: 12, 
       Kd: 12, 
       Ki: 0, 
       Ko: 50, 
       accel_limit: 1.0 
    }
}

第三步:启动仿真器
roslaunch mbot_description arbotix_mbot_with_camera_xacro.launch

第四步:启动键盘控制
另外打开一个终端,输入指令

导航仿真示例

安装turtlebot包
sudo apt-get install ros-kinetic-turtlebot-*

安装ROS by example书配套的代码包rbx1
cd ~/catkin_ws/src
git clone https://github.com/pirobot/rbx1.git
cd ..
catkin_make

运行示例程序
roslaunch rbx1_bringup fake_turtlebot.launch
roslaunch rbx1_nav fake_amcl.launch map:=test_map.yaml
rosrun rviz rviz -d rospack find rbx1_nav/nav.rviz
运行结果:点击rviz画面中的2D Nav Goal 随便标记地图中的一点,小车可以根据路径规划进行导航

在三个终端中输入上述三个命令,结果如图

导航效果如图

Gazebo物理仿真环境搭建

  • ros_control

ROS为开发者提供的机器人控制中间件
包含一系列控制器接口、传动装置接口、硬件接口、控制器工具箱等等
可以帮助机器人应用功能包快速落地,提高开发效率

  • 常用控制器(Controllers)

joint_effort_controller
joint_state_controller
joint_position_controller
joint_velocity_controller

  • 仿真步骤

配置机器人模型
创建仿真环境
开始仿真

配置物理仿真模型

1.为link添加惯性参数和碰撞属性
2.为link添加gazebo标签
3.为joint添加传动装置<transmission> </transmission>
4.添加gazebo控制器插件

<robotNamespace>
<leftJoint> <rightJoint>
<wheelSeparation> <wheelDiameter>
<commandTopic>
<odometryFrame>

创建仿真环境

在gazebo中加载机器人模型
view_mbot_gazebo_empty_world.launch

空环境中的机器人
roslaunch mbot_gazebo view_mbot_gazebo_empty_world.launch

启动之后的效果
创建仿真环境的两种方法

方法一:直接添加仿真环境


点击左上角Insert,选择模型添加至环境

方法二:使用Building Editor


编辑效果

编辑
保存

加载
启动

开始仿真

启动仿真环境

roslaunch mbot_gazebo view_mbot_gazebo_play_ground.launch


启动成功

启动键盘控制 roslaunch mbot_teleop mbot_teleop.launch

查看里程计信息rostopic echo odom

传感器仿真

  • 摄像头仿真
    <sensor>:描述传感器。type:传感器类型,camera。name:摄像头命名,自由设置
    <camera>:描述摄像头参数。分辨率,编码格式,图像范围,噪音参数等
    <plugin>:加载摄像头仿真插件。


    查看摄像头仿真图像rqt_image_view
  • RGB-D摄像头仿真
    启动launch文件


    启动rviz,添加点云话题,添加图像话题

-激光雷达仿真
启动launch文件


添加RobotModel、LaserScan话题
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容