ros控制ur5步骤
原理
ros-industrial通过网线与UR机器人的控制器链接,通过网线向ur控制器上传URscript脚本程序,运行脚本程序并时刻接收ros-industrial的消息,脚本程序将ros消息转为机器执行命令。
控制UR5所需的包
1. ur_modern_driver:支持UR v3以上版本的ros驱动程序。通过该程序与UR控制器建立网络通讯,负责将ros的控制指令上传至UR控制器,也实时获取UR控制器的反馈信息并发布出来。
2. ros-kinetic-ur-description:里面包含了ur机器人的模型参数等信息,统一使用xacro格式进行保存。
3. ros-kinetic-moveit:一个机械臂运动规划库,上位机可以通过调用moveit!的函数解算达到目标所需的机械臂运动参数。
在Gazebo仿真环境中对ur5进行控制
步骤:
1. 启动Gazebo同时导入ur5的模型信息:
roslaunch ur_gazebo ur5.launch limited:=true
2. 启动moveit!的节点,并导入ur5的moveit!配置文件:
roslaunch ur5_moveit_config ur5_moveit_planning_execution.launch sim:=true limited:=true
3. 打开可视化可交互的Rviz界面:
roslaunch ur5_moveit_config moveit_rviz.launch config:=true
样本采集程序设计
目前需要一个训练样本的采集程序(图2为采集数据的过程),需要同时获得图像与图像于参考坐标系的位姿信息。
疑问
1. 要控制机械臂,在采集程序里直接调用moveit!的函数就可以了吗?
2. 预设点位需要统一到一个参考坐标系,比如我要以ur5基座的坐标系为参考坐标系,这该怎么设置?
3. 当启动ur_modern_driver之后,手动移动机械臂,机械臂的运动信息是否会反馈至上位机,并且可以通过moveit!实时获取该信息吗?
4. 机械臂上会安装上夹爪和相机,按照官网教程,需要用示教器在PolyScope里设置TCP信息(重量,重心等),这些信息需要在data_acquisition程序中设置,还是只在PolyScope中设置就可以了?
5. 在模拟规划控制的时候,有时会出现异常的规划,比如机械臂摆动幅度过大,一般怎么避免呢?
6. 完成这个data_acquisition程序还有什么要注意的地方?