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下的机器人建模与仿真](https://img.it610.com/image/info8/fa20c950de764d92a31b6e5525525919.jpg)
文章图片
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下的机器人建模与仿真](https://img.it610.com/image/info8/a43c26c67e504cf68eb9cae3f61a05bc.jpg)
文章图片
“catkin_ws”中有“build”、“devel”、“src”:
![ROS下的机器人建模与仿真](https://img.it610.com/image/info8/6a40235b61964f259f3dd53e114e9b2c.jpg)
文章图片
“src”中有“mot_description”和“CMakeLists.txt”:
![ROS下的机器人建模与仿真](https://img.it610.com/image/info8/beef7e801ee1446a8903364848749a32.jpg)
文章图片
1.5完善机器人描述功能包
在“mbot_description”中创建以下文件夹:“urdf”、“meshes”、“launch”、“config”
![ROS下的机器人建模与仿真](https://img.it610.com/image/info8/e20784f244f04bc1ab1a64bf42c10d77.jpg)
文章图片
2 完成机器人的URDF模型 2.1创建机器人启动文件
display_mbot_base_urdf.launch
![ROS下的机器人建模与仿真](https://img.it610.com/image/info8/cf4f88c476ec4c4687f6fd53e95bf72b.jpg)
文章图片
2.2 创建机器人urdf模型
2.2.1机器人车体 在mbot_description/urdf下创建“mbot_base.urdf”文件,并写入以下内容
![ROS下的机器人建模与仿真](https://img.it610.com/image/info8/aaa7bef41ba84b40acc9af62453f7ec4.jpg)
文章图片
运行
$ roslaunch mbot_description display_mbot_base_urdf.launch
若RVIZ没有显示机器人模型
(1)在“Fixed Frame”下选择“base_link”
![ROS下的机器人建模与仿真](https://img.it610.com/image/info8/5f77ff0d73da4ca6b1afe1bde229f93e.jpg)
文章图片
(2)点击“add”添加“RobotModel”
![ROS下的机器人建模与仿真](https://img.it610.com/image/info8/ccc3704917584c5c826d4ec747fd1d0f.jpg)
文章图片
(3)若要观察坐标关系,还可以添加“TF”
2.2.2机器人添加车轮 在mbot_description/urdf的“mbot_base.urdf”文件添加车轮相关描述代码,并运行launch文件显示
![ROS下的机器人建模与仿真](https://img.it610.com/image/info8/d130bde337f441aa92953890dc86d720.jpg)
文章图片
2.2.3机器人添加前后支撑轮
在mbot_description/urdf的“mbot_base.urdf”文件添加支撑轮相关描述代码,并运行launch文件显示
![ROS下的机器人建模与仿真](https://img.it610.com/image/info8/268153ffdc23491a844ab57a652eda95.jpg)
文章图片
2.2.4机器人添加kinect传感器
在mbot_description/urdf的“mbot_base.urdf”文件添加kinect传感器相关描述代码,并运行launch文件显示,需要将课程例程的“meshes”文件夹中的kinect描述文件添加到功能包的“meshes”下。
![ROS下的机器人建模与仿真](https://img.it610.com/image/info8/619a7b88811e4b7f996e5b04a50470fa.jpg)
文章图片
2.2.5检查URDF模型的整体结构
运行
$ urdf_to_graphiz mbot_base.urdf
![ROS下的机器人建模与仿真](https://img.it610.com/image/info8/97e75a4eeb02452a80d5efed2cccadbd.jpg)
文章图片
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下的机器人建模与仿真](https://img.it610.com/image/info8/96813b01cf224e33bb54e3bbac8ce306.jpg)
文章图片
3.2 为机器人模型添加惯性参量和碰撞参量
车身base_link:
![ROS下的机器人建模与仿真](https://img.it610.com/image/info8/1b02a6fec27d417bb3f6ede2e384f131.jpg)
文章图片
左右轮right、left_wheel_link:
![ROS下的机器人建模与仿真](https://img.it610.com/image/info8/c15c5f279d2c4519905a6bb3fc2a3b8a.jpg)
文章图片
前后支撑轮front、back_caster_link
![ROS下的机器人建模与仿真](https://img.it610.com/image/info8/747abc411e244c24ba51e2c0a4a9e950.jpg)
文章图片
3.3设置kinect传感器
3.3.1为kinect传感器配置碰撞属性和惯性属性(可选)
![ROS下的机器人建模与仿真](https://img.it610.com/image/info8/d39da8565bc8448f8d7194a5371cbc55.jpg)
文章图片
3.3.2 新建一个虚拟link来解决坐标变换的问题
![ROS下的机器人建模与仿真](https://img.it610.com/image/info8/4b646b19457f40b1b8f08fefeca39740.jpg)
文章图片
3.3.3插入kinect传感器插件
![ROS下的机器人建模与仿真](https://img.it610.com/image/info8/9d8c3ce8f1d142be9775091299d74817.jpg)
文章图片
传感器插入后可运行
$ roslaunch mbot_description gazebo_mbot_base_urdf.launch
来查看传感器的效果,运行后,在RVIZ 的“add”中添加点云图像
![ROS下的机器人建模与仿真](https://img.it610.com/image/info8/dc8ae9470a004edcaaa75543b4777a73.jpg)
文章图片
然后在gazebo中放入任意物体
![ROS下的机器人建模与仿真](https://img.it610.com/image/info8/a9195205dddc418e8014b7968ecc7750.jpg)
文章图片
然后在rviz的点云信息中显示
![ROS下的机器人建模与仿真](https://img.it610.com/image/info8/70e463298f4d421f828af825290cac5d.jpg)
文章图片
3.4 添加控制器插件
3.4.1为左右轮添加传动机构
![ROS下的机器人建模与仿真](https://img.it610.com/image/info8/4264f69d8fac4abd86fb64c1bf4fa690.jpg)
文章图片
3.4.2添加差速运动控制器
![ROS下的机器人建模与仿真](https://img.it610.com/image/info8/47e32c507e9c448d8b0e78a718dfcde5.jpg)
文章图片
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下的机器人建模与仿真](https://img.it610.com/image/info8/30b765b4b6a24663bc6fd0c3293eebf6.jpg)
文章图片
4 查看整个系统的计算图 运行$rqt_graph
可以看到整个系统的计算图,/mbot_teleop发送控制命令/cmd_vel给仿真环境/gazebo的车,/gazebo经过计算之后把坐标变换输出,而/joint_state_publisher则控制机体内部关节的坐标变换。
![ROS下的机器人建模与仿真](https://img.it610.com/image/info8/0ea0d6ae4faf45f5b9e8280248e745d0.jpg)
文章图片
5 参考 【ROS下的机器人建模与仿真】古月居的博客
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 一个人的旅行,三亚
- 布丽吉特,人生绝对的赢家
- 慢慢的美丽
- 尽力
- 一个小故事,我的思考。
- 家乡的那条小河
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量