前言
之前用turtlebot仿真过巡线机器人,但是turtlebot略显笨重,为了纪念下本科参加的飞思卡尔,尝试着做一套ROS的仿真SmartCar。
创建工作空间
创建工作目录,工作空间为SmartCar_ws,资源文件夹src
mkdir -p ~/SmartCar_ws/src
初始化工作空间
cd ~/SmartCar_ws/src
catkin_init_workspace
创建SmartCar代码包
创建SmartCar包
cd ~/SmartCar_ws/src
catkin_create_pkg smartcar rospy geometry_msgs
创建智能车模型描述文件
创建智能车模型描述文件夹smartcar_description
cd ~/SmartCar_ws/src
roscreate-pkg smartcar_description urdf
在模型描述文件夹下创建智能车的描述文件SmartCar.urdf
cd ~/SmartCar_ws/src/smartcar_description
mkdir urdf
cd ~/SmartCar_ws/src/smartcar_description/urdf
sudo gedit SmartCar.urdf
贴上下列代码:
<?xml version="1.0"?>
<robot name="smartcar">
<link name="base_link">
<visual>
<geometry>
<box size="0.25 .16 .05"/>
</geometry>
<origin rpy="0 0 1.57075" xyz="0 0 0"/>
<material name="blue">
<color rgba="0 .5 .8 1"/>
</material>
</visual>
</link>
<link name="right_front_wheel">
<visual>
<geometry>
<cylinder length=".02" radius="0.025"/>
</geometry>
<material name="black">
<color rgba="0 0 0 1"/>
</material>
</visual>
</link>
<joint name="right_front_wheel_joint" type="continuous">
<axis xyz="0 0 1"/>
<parent link="base_link"/>
<child link="right_front_wheel"/>
<origin rpy="0 1.57075 0" xyz="0.08 0.1 -0.03"/>
<limit effort="100" velocity="100"/>
<joint_properties damping="0.0" friction="0.0"/>
</joint>
<link name="right_back_wheel">
<visual>
<geometry>
<cylinder length=".02" radius="0.025"/>
</geometry>
<material name="black">
<color rgba="0 0 0 1"/>
</material>
</visual>
</link>
<joint name="right_back_wheel_joint" type="continuous">
<axis xyz="0 0 1"/>
<parent link="base_link"/>
<child link="right_back_wheel"/>
<origin rpy="0 1.57075 0" xyz="0.08 -0.1 -0.03"/>
<limit effort="100" velocity="100"/>
<joint_properties damping="0.0" friction="0.0"/>
</joint>
<link name="left_front_wheel">
<visual>
<geometry>
<cylinder length=".02" radius="0.025"/>
</geometry>
<material name="black">
<color rgba="0 0 0 1"/>
</material>
</visual>
</link>
<joint name="left_front_wheel_joint" type="continuous">
<axis xyz="0 0 1"/>
<parent link="base_link"/>
<child link="left_front_wheel"/>
<origin rpy="0 1.57075 0" xyz="-0.08 0.1 -0.03"/>
<limit effort="100" velocity="100"/>
<joint_properties damping="0.0" friction="0.0"/>
</joint>
<link name="left_back_wheel">
<visual>
<geometry>
<cylinder length=".02" radius="0.025"/>
</geometry>
<material name="black">
<color rgba="0 0 0 1"/>
</material>
</visual>
</link>
<joint name="left_back_wheel_joint" type="continuous">
<axis xyz="0 0 1"/>
<parent link="base_link"/>
<child link="left_back_wheel"/>
<origin rpy="0 1.57075 0" xyz="-0.08 -0.1 -0.03"/>
<limit effort="100" velocity="100"/>
<joint_properties damping="0.0" friction="0.0"/>
</joint>
<link name="head">
<visual>
<geometry>
<box size=".02 .03 .03"/>
</geometry>
<material name="white">
<color rgba="1 1 1 1"/>
</material>
</visual>
</link>
<joint name="tobox" type="fixed">
<parent link="base_link"/>
<child link="head"/>
<origin xyz="0 0.08 0.025"/>
</joint>
</robot>
这个模型描述不是重点,不详细讲含义,想了解含义可以手动修改里面的参数看看形状变化即可知道。建立的模型样子如下图: 创建描述文件的launch文件夹 cd ~/SmartCar_ws/src/smartcar_description mkdir launch cd ~/SmartCar_ws/src/smartcar_description/launch sudo gedit base.urdf.rviz.launch
编译工程
编译
cd ~/SmartCar_ws
catkin_make
source环境变量
source ./devel/setup.bash
展示模型
运行launch文件
roslaunch smartcar_description base.urdf.rviz.launch
运行成功自动打开rviz如图: 点击左下角的Add添加我们想看的控件选择RobotModel点击OK: 显示如下图:
修改配置
修改左侧一栏中Fixed Frame右边的选项框为 展示如下图: