该项目在Gazebo中搭建一款机器人模型,其底盘使用turtlebot移动机器人底盘,机械臂采用结构较为简单的turtlebot_arm,并在底盘上添加kinect深度相机。最终该机器人可实现自主导航、物体定位、规则物体抓取功能。
- 首先需要将机械臂模型移植到移动底盘上,创建出一个最终整合版的urdf机器人描述文件。该过程需要注意要保持tf树状结构,建议的配置形式是将arm_base_link直接连到底盘的base_link上。为了确定各link坐标系之间的位置关系,可以打开rviz将tf_tree可视化显示出来,便于调试。
- 配置机器人各元件的控制器,需选用Gazebo支持的控制器接口。若使用Moveit!进行机械臂控制的话,需要建立Moveit!与Gazebo之间的控制器通讯,因此需要修改机械臂的ros_controller.yaml文件。进行机械臂配置的另一种方法是,使用Moveit!提供的moveit_setup_assistant, 其提供了可视化的交互界面,极易上手。
roslaunch moveit_setup_assistant setup_assistant.launch
3. 当仿真硬件配置结束后,需检查一遍。较方便的调试工具是使用rviz中的moveit模块,可以直接调整各关节目标姿态。当给定目标姿态后,观察机械臂是否开始规划并在Gazebo中执行。如果机械臂执行过程中出现震荡抖动,可能原因是:各关节控制器的pid参数设置的不合理,需要在ros_controller.yaml中进行调参。通常的pid tuning步骤为:先将intregration、derivative项设为0,增大proportional, 直至系统输出出现类似等幅震荡。后根据震荡周期T、和p项参数K,使用齐格勒-尼科尔斯(Ziegler-Nichols)频率法确定出PID各项经验参数。为了观察到关节角的输出曲线,可以使用rqt_console监听关节话题消息,绘制出随时间变化的输出曲线。如果不要求控制器有较高的控制性能,只调节P参数就好。
至于Kinect深度相机和激光雷达的配置,这里并未列出。至于使用深度相机物体识别定位、抓姿定位、以及机械臂抓取流程的实现,留待下次更新了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)