【ROS_SDF】

SDF文件在Gazebo中的实现与控制

引言

最近尝试在Gazebo中仿真轮腿式机器人,目的是实现在Gazebo中实现控制。但是发现轮腿属于闭链机器人,无论是RM常用五连杆还是ascento或sk8o这类的机器人,URDF格式都是不支持的,只能使用SDF

在Gazebo中实现

主要参考了油管上的Gazebo Q&A,介绍了如何在Gazebo中显示SDF文件模型
如何需要观看链接放在最下面

首先依旧是创建功能包,最后这两个依赖不能少,否则运行不起来

catkin_create_pkg _name_ rospy gazebo_ros
catkin_make

没有报错后在功能包内创建launch和models
在这里插入图片描述
spawn_test.launch文件中主要做设置参数,加载Gazebo仿真环境,加载机器人sdf文件
spawn_sdf.launch主要负责将模型在gazebo中实例化

以下是为编写的文件内容,仅供参考

<?xml version="1.0" encoding="UTF-8"?>
<launch>
    <!-- 设置launch文件的参数 -->
    <arg name="paused" default="false"/>
    <arg name="use_sim_time" default="true"/>
    <arg name="gui" default="true"/>
    <arg name="headless" default="false"/>
    <arg name="debug" default="false"/>

    <!-- 运行gazebo仿真环境 -->
    <include file="$(find gazebo_ros)/launch/empty_world.launch">
        <arg name="debug" value="$(arg debug)" />
        <arg name="gui" value="$(arg gui)" />
        <arg name="paused" value="$(arg paused)"/>
        <arg name="use_sim_time" value="$(arg use_sim_time)"/>
        <arg name="headless" value="$(arg headless)"/>
    </include>

    <include file="$(find my_sdf)/launch/spawn_sdf.launch">
        <arg name="robot_name" value="stoupento" />
        <arg name="x" value="0.0" />
        <arg name="y" value="0.0" />
        <arg name="z" value="1.0" />
        <arg name="roll" value="0" />
        <arg name="pitch" value="0" />
        <arg name="yaw" value="0" />
        <arg name="sdf_robot_file" value="$(find my_sdf)/models/stoupento/model.sdf" />
    </include>
</launch>
<?xml version="1.0" encoding="UTF-8"?>
<launch>
    <arg name="robot_name" default="" />
    <arg name="x" default="0.0" />
    <arg name="y" default="0.0" />
    <arg name="z" default="1.0" />
    <arg name="roll" default="0" />
    <arg name="pitch" default="0" />
    <arg name="yaw" default="0" />
    <arg name="sdf_robot_file" default="" />

    <node name="$(arg robot_name)_spawn_urdf" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen"
    args="-file $(arg sdf_robot_file) -sdf -x $(arg x) -y $(arg y) -z $(arg z) -R $(arg roll) -P $(arg pitch) -Y $(arg yaw) -model $(arg robot_name)" />
        
</launch>


在这里插入图片描述

SDF控制

事实上,完成SDF显示后我就想着怎么让机器人动动了。最先想到的就是像过去parm加载机器人参数,再发布机器人状态和关节状态,并在rviz中显示。毫无疑问,我失败了。查阅大量资料后,发现rviz只支持URDF,并不支持SDF格式。同时,加载机器人参数的“robot_description”并没有支持sdf的示例,只有urdf和xacro。我在查找,直接发现ros_control都不支持SDF,同时发现,要想实现对SDF格式模型的控制,只有两种办法:其一,将SDF转URDF;其二,通过Gazebo预留的API自己编写控制plugin。

第一个方法首先pass,就是因为URDF不支持闭链运动所以才采用SDF的,没必要再转回去。第二个方法我还不会,但是留下方法,供读者参考,并希望可以有所感悟之后发布一个博客,提醒一下小白我,我必前来学习。

https://classic.gazebosim.org/tutorials?cat=guided_i&tut=guided_i5

对于五连杆的轮腿式机器人,up历识咩咩已经描述的很清楚了,使用了URDF文件外加了一个gazebo的关节去起固定作用,为这边就不再赘述了。
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值