URDF文件是机器人模型描述格式,一个完整的机器人模型是由一系列link和joint组成。
建模过程:
- 创建机器人功能包mbot_description,以及依赖文件urdf和xacro,
~/catkin_ws/src$ catkin_create_pkg mbot_description urdf xacro
cd ~/catkin_ws/
catkin_make #编译
source devel/setup.bash #设置环境变量
- 创建新文件夹:
urdf:存放机器人模型的URDF文件或xacro文件;
config:保存rviz配置文件;并在rviz文件夹下放置rviz的配置文件mbot_urdf.rviz;
launch:保存相关启动文件;
meshes:放置URDF中引用的模型渲染文件。
- 在mbot_base.urdf文件中使用一系列link和joint对机器人外形进行描述,依次加入车体、车轮、激光雷达、kinect等部件。
<?xml version="1.0" ?>
<robot name="mbot_base">
<link name="base_link">
<visual>
<origin xyz=" 0 0 0" rpy="0 0 0" />
<geometry>
<cylinder length="0.16" radius="0.20"/>
</geometry>
<material name="yellow">
<color rgba="1 0.4 0 1"/>
</material>
</visual>
</link>
</robot>
安装命令:sudo apt-get install liburdfom-tools
检查模型~check_urdf mbot_base.urdf(在urdf文件下打开终端)
编译后进行验证,并用urdf_to_graphiz mbot_base.urdf生成pdf文件,可以看到模型的整体结构图。
- 编写launch文件,调用mbot_base.urdf文件,
<launch>
<param name="mbot_description" textfile="$(find mbot_description)/urdf/mbot_base.urdf" />
<!-- 设置GUI参数,显示关节控制插件 -->
<param name="use_gui" value="true"/>
<!-- 运行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="state_publisher" />
<!-- 运行rviz可视化界面 -->
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find mrobot_description)/
config/mrobot_urdf.rviz"required="true" />
</launch>
运行~roslaunch mbot_description display_mbot_base_urdf.launch
出错:模型没有出来
参考博文http://lijianxun.cn/2019/12/179
2、xacro优化urdf模型
(1)xacro文件优势:
精简模型代码:创建宏定义、文件包含
提供可编程接口:常量、变量、数学计算、条件语句
(2)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)"/>
3、配置Arbotix控制器
(1)创建launch文件
在launch文件中, 加入Arbotix和要调用的文件。
(2)创建配置文件
controllers{
//加入你要控制的信息
}
(3)启动仿真器
4、Gazebo物理仿真环境搭建
(1)在xacro文件中为所有的joint和link添加惯性属性(collision)和矩阵参数(cylinder)
(2)为link添加gazebo标签
(3)为joint添加传动装置(transmission)
(4)添加Gazebo控制器插件(plugin)
5、rosbag 数据记录与回放
(1)首先启动例程所有节点:
roscore
rosrun turtlelesim turtlelesim_node
rosrun turtlelesim turtle_teleop_key
(2)查看ROS系统中到底存在哪些话题:
rostopic list -v
(3)打包文件到指定文件夹:
mkdir ~/bagfiles
cd ~/bagfiles
rosbag record -a
产生一个以时间命名的.bag为后缀的文件,就产生了数据记录文件。
(4)回放数据,查看数据记录文件的详细信息:
rosbag info
(5) 回放记录的话题数据:
rosbag play