您的位置:首页 > 其它

使用简单的URDF模型文件结合ros小车实现同步运动

2017-08-08 17:19 441 查看
苦闷了好几天研究相关urdf到底是如何与实际的机器人进行相关的通讯,是如何做到的动作的同步?重要的还有我该如何将自己的小车的模型与实际的小车进行一个同步操作,如何去实现呢?现在 我就把实现的方法给大家说一下,在这里还要感谢 思蓝科技的赵咏华 华哥的指导,还有ROS小课堂的指导哦!

下面 我们进入正题:

1 首先 创建我们自己的小车模型文件:my01.urdf

文件描述如下:

<!-- -->
<robot name="test_robot">
<link name="base_link">
<visual>
<geometry>
<box size="0.3 .2 .1"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0.1"/>
<material name="yellow">
<color rgba="1 0 0 1"/>
</material>
</visual>
</link>

<link name="wheel_1">
<visual>
<geometry>
<cylinder length="0.05" radius="0.05"/>
</geometry>
<origin rpy="1.65 0 0" xyz="0.075 0 0"/>
<material name="black">
<color rgba="0 0 0 1"/>
</material>
</visual>
</link>

<link name="wheel_3">
<visual>
<geomet
4000
ry>
<cylinder length="0.05" radius="0.05"/>
</geometry>
<origin rpy="1.65 0 0" xyz="-0.1 -0.1 0"/>
<material name="black"/>
</visual>
</link>

<link name="wheel_4">
<visual>
<geometry>
<cylinder length="0.05" radius="0.05"/>
</geometry>
<origin rpy="1.5 0 0" xyz="-0.1 0.1 0"/>
<material name="black"/>
</visual>
</link>

<joint name="joint_base_wheel1" type="continuous">
<parent link="base_link"/>
<child link="wheel_1"/>
</joint>

<joint name="joint_base_wheel3" type="continuous">
<parent link="base_link"/>
<child link="wheel_3"/>
</joint>

<joint name="joint_base_wheel4" type="continuous">
<parent link="base_link"/>
<child link="wheel_4"/>
</joint>
</robot>


这个是我自己的模型文件,大家也可以去网上进行参考,相关的资料很多,可以去学习相关的URDF文件或者xacro

小车的模型文件创建完毕,可以使用check——urdf相关的指令去查下我们的指令是否有错误,这个指令靠大家去找了,因为网上一堆。

下面我做的是一个 实际的小车建图过程的一个实际操作,让我的小车正常运行起来哦 ,

首先我启动我的 底层控制板,

roslaunch gmapping的文件

开启键盘控制

最后加入 rviz的显示,这里我用的turtlebot_rviz_launch 文件下的view_navigation.launch文件,大家可以拷贝过来修改下

那这个最后的第4步也就是很重要了,我们需要如下修改RVIZ文件

<launch>
<arg name="model" default="$(find urdf_tutorial)/urdf/my01.urdf"/>
<arg name="gui" default="true" />
<arg name="rvizconfig" default="$(find urdf_tutorial)/rviz/urdf.rviz" />

<param name="robot_description" command="$(find xacro)/xacro.py $(arg model)" />
<param name="use_gui" value="$(arg gui)"/>

<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
<node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find turtlebot_rviz_launchers)/rviz/navigation.rviz"/>
</launch>


至此 你的小车就可以和模型同步运行了,是不是感觉很神奇 为什么这样就可以实现了呢,其实主要是前面的工作已经将tf变换给你转换好了,你在去订阅机器人状态 关节状态他就可以自己的链接上,我是这么想的,因为内部的代码我也没有仔细看,但是这一步却实现了我的功能……

有什么问题可以跟我交流哦 大家一起进步~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: