ROS下的机器人建模与仿真

1 创建工作空间及功能包 1.1 创建工作空间

$ mkdir -p ~/catkin_ws/src#在home目录下创建两个文件夹/catkin_ws/src $ cd ~/catkin_ws/src#转移到/catkin_ws/src目录下 $ catkin_init_workspace#初始化工作空间

1.2编译工作空间
$ cd ~/catkin_ws/#返回/catkin_ws目录下 $ catkin_make#编译工作空间

1.3 设置环境变量
$ gedit ~/.bashrc#打开home目录下的.bashrc文件

在.bashrc最后一行添加“source ~/catkin_ws/devel/setup.bash”
ROS下的机器人建模与仿真
文章图片

1.4 机器人模型功能包
$ cd ~/catkin_ws/src #转移到/catkin_ws/src目录下 $ catkin_create_pkg mbot_description urdf xacrogazebo_pluginsgazebo_ros gazebo_ros_controlroscpprospy#创建“mbot_description”功能包,依赖“urdf xacro…...” $ cd ~/catkin_ws #返回到/catkin_ws目录下 $ catkin_make#编译工作空间

完成上述步骤后,home下会有“catkin_ws”
ROS下的机器人建模与仿真
文章图片

“catkin_ws”中有“build”、“devel”、“src”:
ROS下的机器人建模与仿真
文章图片

“src”中有“mot_description”和“CMakeLists.txt”:
ROS下的机器人建模与仿真
文章图片

1.5完善机器人描述功能包
在“mbot_description”中创建以下文件夹:“urdf”、“meshes”、“launch”、“config”
ROS下的机器人建模与仿真
文章图片

2 完成机器人的URDF模型 2.1创建机器人启动文件
display_mbot_base_urdf.launch
ROS下的机器人建模与仿真
文章图片

2.2 创建机器人urdf模型
2.2.1机器人车体 在mbot_description/urdf下创建“mbot_base.urdf”文件,并写入以下内容
ROS下的机器人建模与仿真
文章图片

运行
$ roslaunch mbot_description display_mbot_base_urdf.launch

若RVIZ没有显示机器人模型
(1)在“Fixed Frame”下选择“base_link”
ROS下的机器人建模与仿真
文章图片

(2)点击“add”添加“RobotModel”
ROS下的机器人建模与仿真
文章图片

(3)若要观察坐标关系,还可以添加“TF”
2.2.2机器人添加车轮 在mbot_description/urdf的“mbot_base.urdf”文件添加车轮相关描述代码,并运行launch文件显示
ROS下的机器人建模与仿真
文章图片

2.2.3机器人添加前后支撑轮
在mbot_description/urdf的“mbot_base.urdf”文件添加支撑轮相关描述代码,并运行launch文件显示
ROS下的机器人建模与仿真
文章图片

2.2.4机器人添加kinect传感器
在mbot_description/urdf的“mbot_base.urdf”文件添加kinect传感器相关描述代码,并运行launch文件显示,需要将课程例程的“meshes”文件夹中的kinect描述文件添加到功能包的“meshes”下。
ROS下的机器人建模与仿真
文章图片

2.2.5检查URDF模型的整体结构
运行
$ urdf_to_graphiz mbot_base.urdf
ROS下的机器人建模与仿真
文章图片

3机器人仿真 3.1 创建仿真相关文件
在“mbot_description/urdf”下创建“mbot_base_gazebo.urdf”,并把“mbot_base.urdf”的内容复制到“mbot_base_gazebo.urdf”中。在“mbot_description/launch”下创建“gazebo_mbot_base_urdf.launch” 。
ROS下的机器人建模与仿真
文章图片

3.2 为机器人模型添加惯性参量和碰撞参量
车身base_link:
ROS下的机器人建模与仿真
文章图片

左右轮right、left_wheel_link:
ROS下的机器人建模与仿真
文章图片

前后支撑轮front、back_caster_link
ROS下的机器人建模与仿真
文章图片

3.3设置kinect传感器
3.3.1为kinect传感器配置碰撞属性和惯性属性(可选) ROS下的机器人建模与仿真
文章图片

3.3.2 新建一个虚拟link来解决坐标变换的问题
ROS下的机器人建模与仿真
文章图片

3.3.3插入kinect传感器插件
ROS下的机器人建模与仿真
文章图片

传感器插入后可运行
$ roslaunch mbot_description gazebo_mbot_base_urdf.launch

来查看传感器的效果,运行后,在RVIZ 的“add”中添加点云图像
ROS下的机器人建模与仿真
文章图片

然后在gazebo中放入任意物体
ROS下的机器人建模与仿真
文章图片

然后在rviz的点云信息中显示
ROS下的机器人建模与仿真
文章图片

3.4 添加控制器插件
3.4.1为左右轮添加传动机构
ROS下的机器人建模与仿真
文章图片

3.4.2添加差速运动控制器
ROS下的机器人建模与仿真
文章图片

3.4.3测试控制程序
首先,把附件的mbot_teleop功能包添加到工作空间源文件目录(~/catkin_ws/src)下,然后
$ cd ~/catkin_ws/#返回/catkin_ws目录下 $ catkin_make#编译工作空间 $ roslaunch mbot_description gazebo_mbot_base_urdf.launch#运行仿真程序

打开一个新的终端:
$ roslaunch mbot_teleop mbot_teleop.launch

如图所示,通过键盘对应按键就能控制机器人运动
ROS下的机器人建模与仿真
文章图片

4 查看整个系统的计算图 运行$rqt_graph
可以看到整个系统的计算图,/mbot_teleop发送控制命令/cmd_vel给仿真环境/gazebo的车,/gazebo经过计算之后把坐标变换输出,而/joint_state_publisher则控制机体内部关节的坐标变换。
ROS下的机器人建模与仿真
文章图片

5 参考 【ROS下的机器人建模与仿真】古月居的博客

    推荐阅读