ROS探索总结(二十七)——ROS Industrial

39657
86
2016年9月23日 15时49分

工业机器人是机器人中非常重要的一个部分,在工业领域应用广泛而且成熟,ROS迅猛发展的过程中,也不断渗入到工业领域,从而产生了一个新的分支——ROS-IndustrialROS-I)。

      ROS-I的官网: http://rosindustrial.org/

Capture

一、ROS-I的目标

  1. ROS强大的功能应用到工业生产的过程中;
  2. 为工业机器人的研究与应用提供快捷有效的开发途径;
  3. 为工业机器人创建一个强大的社区支持;
  4. 为工业机器人提供一站式的工业级ROS应用开发支持。

      ROS向工业领域的渗透,可以将ROS中丰富的功能、特性带给工业机器人,比如运动规划,运动学算法,视觉感知,还有rvizgazebo等工具,不仅降低了原本复杂严格的工业机器人研发门槛,而且在研发成本发面也具有极大的优势。

二、ROS-I的安装

在完整安装ROS之后,通过以下的命令就可以安装ROS-I了:

$ sudo apt-get install ros-indigo-industrial-core ros-indigo-open-industrial-ros-controllers

三、ROS-I的架构

clip_image004[4]

  1. GUI:上层UI分为两个部分:一个部分是ROS中现在已有的UI工具;另外一个部分是专门针对工业机器人通用的UI工具,不过是将来才会实现。
  2. ROS LayerROS基础框架,提供核心通讯机制
  3. MoveIt! Layer:为工业机器人提供规划、运动学等核心功能的解决方案
  4. ROS-I Application Layer:处理工业生产的具体应用,也是针对将来的规划
  5. ROS-I Interface Layer:接口层,包括工业机器人的客户端,可以通过 simple message协议与机器人的控制器通信
  6. ROS-I Simple Message Layer:通信层,定义了通信的协议,打包和解析通信数据
  7. ROS-I Controller Layer:机器人厂商开发的工业机器人控制器。

从上边的架构我们可以看到,ROS-I在复用已有ROS框架、功能的基础上,针对工业领域进行了针对性的拓展,而且可以通用于不同厂家的机器人控制器。

   

四、ROS-I控制UR机械臂

Universal Robots是丹麦的一家工业机器人制作商,主要的机器人产品有:UR3UR5UR10,分别针对不同的负载:

clip_image006[4]

我们以该机器人作为示例,看一下ROS-I的应用。

4.1 安装

   首先我们需要安装UR机器人的ROS功能包集。

$ sudo apt-get install ros-indigo-universal-robot

   该功能包集包含了UR仿真、运行需要的主要功能包:ur_description ur_driver ur_bringup ur_gazebo ur_msgsur10_moveit_config/ur5_moveit_config ur_kinematics

 

4.2 运行

安装完成后,使用下边的命令,我们就可以看到UR10的机器人模型了(第一次运行需要等待较长时间完成模型加载):

$ roslaunch ur_gazebo ur10.launch

    clip_image008[4]

然后我们让机械臂动起来,需要运行MoveIt运动规划的节点:

$ roslaunch ur10_moveit_config ur10_moveit_planning_execution.launch sim:=true

然后运行rviz

$ roslaunch ur10_moveit_config moveit_rviz.launch config:=true

clip_image010[4]

启动之后,我们可以看到rivz中的机器人模型和gazebo中的机器人模型应该是一样的姿态。在rviz中,我们可以用鼠标拖动机器人的终端,然后点击planning标签页中的plan nad execute就可以让机器人规划路径并且到达目标位置了,gazebo中的模型也会跟随变化。

clip_image012[4]

 4.3 分析

看到这里,也许我们会有一个疑问:这不就是MoveIt那一套东西么, 感觉和ROS-I并没有什么关系?再回头看ROS-I的架构,这种架构的上层控制本身就是复用的已有的软件包,ROS-I目前主要关注的是如何使用这些软件包来控制工业机械臂,也就是最下边的三层结构。我们把这三层从上到下分析一下:

首先是ROS-I Interface Layer层,这一层需要我们设计一个机器人的客户端节点,主要功能是完成数据从ROS到机械臂的转发,ROS-I为我们提供了许多编程接口,可以帮助我们快速开发,下图就是几个比较常用的API,具体API的使用说明可以查看官方文档。

clip_image014[5]

对于机械臂来讲,这里最重要的是 robot_state joint_trajectory robot_state包括很多状态信息,ROS-I都已经帮我们定义好了,可以去industrial_msgs包里看到消息的定义文件。joint_trajectory订阅了MoveIt规划出来的路径消息,然后打包发送给最下层的机器人服务器端。通常会把这一层的功能封装成robot_name_driver功能包,可以看ROS-IABBUR的机械臂都是这样的,可以参考他们的源码进行设计。

然后是ROS-I Simple Message Layer层,这一层主要是上下两层的通信协议。Simple Message这个协议是基于TCP的,上下层客户端和服务器端的消息交互,全部通过这一层提供的API进行打包和解析。具体使用方法可以参考http://wiki.ros.org/simple_message,也可以直接看ROS-I的源码:https://github.com/ros-industrial/industrial_core,主要实现SimpleSerializeTypedMessage两个类的功能即可。

最下层的ROS-I Controller Layer是厂家自己的控制器,考虑到实时性的要求,一般不会使用ROS,只要留出TCP的接口即可,接收到trajectory消息解析之后,就按照厂家自己的算法完成动作了。

可见,如果我们想要通过ROS-I来控制自己的机械臂,最下边的三层使我们需要实现的重点,上层运动规划部分可以交给ROS来完成。

发表评论

后才能评论

评论列表(86条)

  • superjeary 2020年1月6日 下午7:11

    古月老师,我想在gazebo中加载多个UR机器人,我该如何操作

    • 古月 回复 superjeary 2020年1月19日 下午11:09

      同样的方式加载即可,不要放到同一个位置,如果用moveit控制的话,注意模型中的tf名称不能冲突

  • 贝贝 2019年11月4日 下午9:44

    古月大大,我仿真ur3加robotiq爪子的时候遇到了个问题,规划在rviz上机械臂实体不动,在gazebo里面会动,这是什么情况
    [ WARN] [1572512221.642363535, 174.782000000]: Controller ur3/manipulator_controller failed with error code PATH_TOLERANCE_VIOLATED
    [ WARN] [1572512221.642494963, 174.782000000]: Controller handle ur3/manipulator_controller reports status ABORTED

  • scott 2019年7月28日 下午9:42

    胡老师:我安装的是UBUNTU 18.04的版本,怎么执行
    sudo apt-get install ros-kinetic-industrial-core ros-kinetic-open-industrial-ros-controllers 的时候,提示如下信息:
    E: 无法定位软件包 ros-kinetic-industrial-core
    E: 无法定位软件包 ros-kinetic-open-industrial-ros-controllers
    请问如何解决呢?

    • 古月 回复 scott 2019年8月1日 下午4:51

      M版本里目前还没集成,需要源码编译安装

    • 王鑫 回复 古月 2019年9月25日 下午9:18

      胡老师,我是kinetic版的,也是无法定位ros-kinetic-open-industrial-ros-controllers

    • 古月 回复 王鑫 2019年10月28日 下午5:43

      把open-industrial去掉

  • 于广大 2019年7月8日 下午7:51

    古月老师您好,请问在gazebo内可以跟rviz一样显示机器人末端的运行轨迹吗? 谢谢.

    • 古月 回复 于广大 2019年7月9日 下午8:07

      好象不行

    • 于广大 回复 古月 2019年7月12日 下午3:37

      老师您好,我在rviz中做的轨迹比较长,然后前面的轨迹就会一点点的消失.请问有什么解决办法吗?

    • 古月 回复 于广大 2019年7月12日 下午10:09

      这个不清楚

  • zhenxiaoyang 2019年5月22日 下午12:06

    您好,我刚刚开始学习ROS,买的参考书就是您的《ROS机器人开发实践》,受益良多,在此表示感谢!现在我遇到了一个问题,rviz打开后,我看到MotionPlanning→Context→OMPL这里显示了很多种算法,但是我发现我这边不管选择什么算法,终端输出都显示是默认的RRTConnect算法。请问一下这是为什么呢?(盼复!感谢!

    • 古月 回复 zhenxiaoyang 2019年5月23日 下午5:16

      也可以修改ompl.yaml配置文件

    • zhenxiaoyang 回复 古月 2019年5月23日 下午8:00

      问题已解决,感谢您~

  • wangdan 2019年4月8日 下午5:39

    您好,我下载UR功能包后 启动moveIT的launch文件 报错
    [ERROR] [1554716095.267451870]: Robot model parameter not found! Did you remap ‘robot_description’?
    [ERROR] [1554716095.435311147]: Robot model not loaded
    [ERROR] [1554716095.575964152]: Planning scene not configured

    • 古月 回复 wangdan 2019年4月8日 下午8:52

      机器人模型没有加载?

    • 王鑫 回复 古月 2019年9月25日 下午9:19

      胡老师,我也遇到这个问题了,请问一下怎么解决?

  • wave.LT 2019年1月18日 上午9:06

    胡老师,现在可以通过ROS运行Python下的轨迹程序使ur3实体机器人动起来。但是我可以用在ROS下运行python写的轨迹然后在通过gazebo来模拟我python程序下的路径吗,我想现在gazebo中模拟之后再去实体上操作。这个要怎么才能实现。谢谢

    • 古月 回复 wave.LT 2019年1月19日 下午6:28

      可以的,请参考《ROS机器人开发实践》或gazebo仿真教程

  • 张桥 2018年12月10日 下午2:02

    胡老师好,想请教您两个问题,
    第一个:请问用ROS moveit驱动UR或者其他机器人,echo joint_state节点可以在终端实时得到机器人的每个关节的位置信息,但是有没有哪个节点可以实时得输出关节电机的扭矩信息日志呢?

    第二个:请问用echo命令实时输出的日志信息,比如以一定频率采样的机器人各个关节的数据,可否转换成类似记事本的文件输出?

    谢谢胡老师

    • 古月 回复 张桥 2018年12月14日 下午8:46

      1. 应该没有,具体要看驱动是否支持
      2. 命令行重定向可保存到文件

  • 云隐 2018年11月26日 下午5:07

    古月老师,我关于这个ros-EtherCAT系统流程还有一些疑惑,SpHwInterface硬件接口里面有一些关节状态接口、关节位置接口等。这个硬件接口和controller manager有什么关系,和controller manager里面的controller有什么关系呢?

    • 古月 回复 云隐 2018年11月27日 下午5:59

      这些相当于是controller的接口

    • 云隐 回复 古月 2018年11月30日 下午5:24

      controller manager 和moveit!是什么关系呢,并列的还是包含的?

    • 古月 回复 云隐 2018年12月1日 上午12:22

      controller manager是控制器的管理器,用来启动、停止位置、速度等控制器
      moveit是运动规划平台,包括运动规划、避障、运动学等算法和ui界面
      一个是上层规划,一个是下层控制

    • 云隐 回复 古月 2018年12月3日 上午10:20

      感谢古月老师的耐心解答,现在虽然功能实现了但是概念原理还是没有怎么搞清楚,所以向您请教。
      class spHwInterface : public hardware_interface::RobotHW

      SpHwInterface robot;
      controller_manager::ControllerManager cm(&robot, nh);
      ros::Rate rate(1.0 / robot.getPeriod().toSec());
      ros::AsyncSpinner spinner(1);
      spinner.start();
      while (ros::ok())
      {
      robot.update();
      cm.update(robot.getTime(), robot.getPeriod());
      rate.sleep();
      }
      1.这里面的这个robot是不是算controller manager 里面的其中一个controller?
      2.如果这个robot不算controller的话,那是不是一个接口对应一个ros默认自带控制器?如关节状态接口对应关节状态控制器,关节位置接口对应关节位置控制器。
      3.如果这个robot算controller的话,那我这个下层控制与moveit上层规划中间是通过ros话题订阅发布或者action来实现通信的吗?这两者中间是否也有一个类似接口的存在?

    • 古月 回复 云隐 2018年12月4日 下午5:36

      1. 是的
      3. 是的

  • 王东兴 2018年11月13日 下午7:22

    您好,现在我有一个.rviz文件,要求用rviz显示出来,怎么做呢?

    • 古月 回复 王东兴 2018年11月14日 下午8:24

      打开rviz之后,在菜单栏中选择打开配置文件,选择自己的.rviz就行了

  • 王东兴 2018年11月13日 下午5:57

    CMake Error at /opt/ros/kinetic/share/catkin/cmake/catkinConfig.cmake:84 (find_package):
    Could not find a package configuration file provided by “pcl_ros” with any
    of the following names:

    pcl_rosConfig.cmake
    pcl_ros-config.cmake

    Add the installation prefix of “pcl_ros” to CMAKE_PREFIX_PATH or set
    “pcl_ros_DIR” to a directory containing one of the above files. If
    “pcl_ros” provides a separate development package or SDK, be sure it has
    been installed.
    我尝试sudo apt-get install pcl_ros
    提示无法定位软件包,请问有什么别的办法吗?

    • 古月 回复 王东兴 2018年11月14日 下午8:24

      安装:sudo apt-get install ros-kinetic-pcl-ros

  • 洋洋 2018年11月6日 下午10:11

    [ WARN] [1541512998.531560505, 13.284000000]: Dropping first 1 trajectory point(s) out of 10, as they occur before the current time.
    First valid point will be reached in 0.517s.
    [ WARN] [1541512999.103229605, 13.789000000]: Controller arm_controller failed with error code PATH_TOLERANCE_VIOLATED

    老师您好在运行moveit 与 gazebo控制时发生如下问题导致无法规划出路径,请问什么问题

  • 云隐 2018年10月18日 下午6:43

    大神,请问我用qt5做了一个工业机器人操作界面,包括示教点动这些功能。我现在的ros做到了用rviz控制机械臂动这一步,然后有用一些Python写一些基本功能节点。现在我想把qt做的界面和ros连接一起,请问通过什么方式或者有什么接口吗?十分感谢

    • 古月 回复 云隐 2018年10月19日 下午2:40

      请参考:http://www.guyuehome.com/945

    • 云隐 回复 古月 2018年10月22日 下午4:51

      古月老师,那ros上面有没有工业机器人点动、示教等等功能的功能包呢,自己写写的不好又花时间

    • 古月 回复 云隐 2018年10月23日 下午4:54

      这个没有,要自己实现

  • 样样洋洋 2018年9月3日 下午10:29

    为什么安装上面步骤会出现这样的,在运行gazebo中,之后gazebo就
    死机。
    nouveau: 0x0000214a
    nouveau: 0x0000214b
    nouveau: 0x0000214c
    nouveau: 0x0000214d
    nouveau: 0x0000214e
    nouveau: 0x0000214f
    nouveau: 0x00002150
    nouveau: 0x00002151

    • 古月 回复 样样洋洋 2018年9月5日 上午10:21

      gazebo对硬件有一定要求,使用的是虚拟机么?可以重装gazebo试下

    • 样样洋洋 回复 古月 2018年9月5日 下午10:00

      不是虚拟机,就是电脑里只有ubuntu这个系统

    • 古月 回复 样样洋洋 2018年9月9日 下午3:07

      那就不清楚了,重新安装下gazebo试试

  • 赵申申 2018年7月26日 下午7:56

    古月大神你好,我现在有两台UR的机械臂,我想在ros中同时驱动两个机械臂,但是只有一个驱动包,可以实现吗,相同的机械臂他们的控制器,描述文件等都是相同的,有办法解决吗?

    • 古月 回复 赵申申 2018年7月27日 上午10:23

      是可以实现的,但是重复的参数应该要重映射一下,可以参考PR2这样的双臂机器人看看

  • 韩鑫磊 2018年7月9日 下午4:28

    使用这个能不能连接真实的机器人啊?我们这里有一台ABB1200,想要做一些轨迹规划的东西,刚刚接触还无从下手。。。

    • 古月 回复 韩鑫磊 2018年7月9日 下午5:25

      是可以连接真实机器人的,可以参考http://wiki.ros.org/abb_irb1200_support

    • 小马 回复 古月 2018年11月28日 下午10:25

      你好,老师。你说的这个irb200_support文件中没有机器人模型的碰撞参数。为了将机器人加载到gazebo中需要惯性参数,但是怎么计算惯性参数呀?谢谢!这是真是机器人,所以不知道还有没有比较完整的irb1200的机器人模型

    • 古月 回复 小马 2018年12月1日 上午12:09

      一般都是通过solidworks导出urdf的时候自动计算的

    • 小马 回复 韩鑫磊 2018年11月28日 下午10:26

      你好,为了将机器人irb1200加载到gazebo中需要惯性参数,但是怎么计算惯性参数呀?谢谢!这是真是机器人,所以不知道还有没有比较完整的irb1200的机器人模型

  • luo 2018年4月11日 下午7:32

    您好,当我设置PC-数莓派主从机时出现以下错误,您知道是哪里出问题了吗?
    [FATAL] [1523445862.640188209]: Couldn’t parse the master URI [https://10.139.51.53:11311] into a host:port pair.
    Couldn’t find an AF_INET address for []
    Couldn’t find an AF_INET address for []
    [ERROR] [1523445862.677728048]: [registerPublisher] Failed to contact master at [:0]. Retrying…
    Couldn’t find an AF_INET address for []
    Couldn’t find an AF_INET address for []
    Couldn’t find an AF_INET address for []
    Couldn’t find an AF_INET address for []
    Couldn’t find an AF_INET address for []
    Couldn’t find an AF_INET address for []
    Couldn’t find an AF_INET address for []
    Couldn’t find an AF_INET address for []

    • 古月 回复 luo 2018年4月12日 下午2:32

      IP地址可以ping通么?可以在hosts里边设置一个IP和电脑名的映射

  • 李胜飞 2018年4月10日 下午8:09

    古月君,你好!我按照你4.2的步骤运行了我的一个仿真,结果rviz中规划,机械臂动作了,但是gazebo中机械臂没有任何动作,请问这是什么原因?

    • 古月 回复 李胜飞 2018年4月11日 上午9:36

      那应该是控制器没连接上,你有修改过这个包么?默认应该是配置好的,检查一下controller都启动没有

    • 李胜飞 回复 古月 2018年4月11日 下午6:48

      谢谢胡老师,确实是controller的问题。

  • - 2018年4月3日 下午3:22

    您好,当我运行ros rviz rviz时,出现断错误,是什么原因造成的。
    QT : XKEYBOARD extension not present on the X server
    xlib: extension “RANDR” missing on display “:10.0”
    [INFO] [1522739508.125884770]: rviz version 1.12.11
    [INFO] [[1522739508.126225846]: compiled against QTversion 5.5.1
    [INFO] [[1522739508.126351360]: compiled against OGRE version 1.9.0 (Ghadamon)
    段错误

    • 古月 回复 - 2018年4月3日 下午6:32

      看上去是依赖的QT版本有问题了,你用的是什么版本的ROS和ubuntu,有没有自己装过Qt?

    • - 回复 - 2018年4月3日 下午7:30

      kinetic版本的,ubuntu16.04,没有QT

    • 古月 回复 - 2018年4月4日 下午3:57

      你用命令行重新装一次rviz试试

    • - 回复 古月 2018年4月9日 上午10:11

      重装一次还是会提示段错误的提示

  • 灰太狼 2018年3月12日 下午4:55

    古月大神,我在ur_grzebo/controller目录下找到了arm_controller_ur10.yaml,里面这样的:
    arm_controller:
    type: position_controllers/JointTrajectoryController
    joints:
    – shoulder_pan_joint
    – shoulder_lift_joint
    – elbow_joint
    – wrist_1_joint
    – wrist_2_joint
    – wrist_3_joint
    constraints:
    goal_time: 0.6
    stopped_velocity_tolerance: 0.05
    shoulder_pan_joint: {trajectory: 0.1, goal: 0.1}
    shoulder_lift_joint: {trajectory: 0.1, goal: 0.1}
    elbow_joint: {trajectory: 0.1, goal: 0.1}
    wrist_1_joint: {trajectory: 0.1, goal: 0.1}
    wrist_2_joint: {trajectory: 0.1, goal: 0.1}
    wrist_3_joint: {trajectory: 0.1, goal: 0.1}
    stop_trajectory_duration: 0.5
    state_publish_rate: 25
    action_monitor_rate: 10
    请问下这是否就是你说的插补功能相关代码?如果不是麻烦给说明下具体目录,我找了很久了。

  • 灰太狼 2018年3月9日 下午1:10

    古月大神,再请教下。我现在就拿UR10来举例,我在ur10_moveit_config文件夹下找到了controllers.yaml.里面是这样的
    controller_list:
    – name: “”
    action_ns: follow_joint_trajectory
    type: FollowJointTrajectory
    joints:
    – shoulder_pan_joint
    – shoulder_lift_joint
    – elbow_joint
    – wrist_1_joint
    – wrist_2_joint
    – wrist_3_joint
    你说需要配置下controller,这个该如何配置啊?我要如何操作才能获取到moveIT规划出来的路径数据?你给我的参考链接我看了下,也没找到具体配置的方法,麻烦赐教!谢谢

    • 古月 回复 灰太狼 2018年3月9日 下午3:07

      这个就是UR机器人的controller配置,它这里已经配置好了,不需要修改。如果是自己创建的包,这个文件默认是空的,可以仿照他这里的配置做。
      以UR机器人为例,运行仿真器和moveit:
      roslaunch ur_gazebo ur5.launch
      roslaunch ur5_moveit_config ur5_moveit_planning_execution.launch sim:=true
      roslaunch ur5_moveit_config moveit_rviz.launch config:=true
      上边三个启动完成后,就会打开gazebo和moveit的界面,然后再开一个终端,订阅以下话题:
      rostopic echo /arm_controller/follow_joint_trajectory/goal
      然后在moveit界面中做目标规划执行,就可以看到订阅到的轨迹点了,由一系列路径点组成,大概10个左右。

    • 灰太狼 回复 古月 2018年3月9日 下午4:03

      按照你说的操作得到10组这样的轨迹数据:
      positions: [6.310422092893633e-05, -0.1744431725310756, -0.000815697548054767, -0.17445541412962917, -3.656963720477127e-05, 8.441200831647394e-05]
      velocities: [-5.4005555435684414e-05, -0.7343696991862021, 0.00039190707159373066, -0.734325456659709, 4.962654035698225e-05, -4.807676412504832e-05]
      accelerations: [-0.0001546103299687222, -2.1023974403045798, 0.001121974974006939, -2.1022707801570344, 0.00014207382403346805, -0.00013763703206523564]
      effort: []
      time_from_start:
      secs: 0
      nsecs: 401618713
      以下问题:
      1.按照你的其他文章说的方法,就是根据这10组数据来做插补吧?(两种方法:一种是用ROS自带的joint_trajectory_controller包的插补,第二种方法就是你采用的在非ROS环境中实时计算插补的,自己写插补算法,这种方法需要把这10组轨迹点实时传输到非ROS环境的Linux下吧?)
      2.我现在先不管插补,我想先把这10组数据的轨迹点传给运动控制卡(运动控制卡那边是接收6个轴的目标角度即可),那么我想知道positions这个参数后面的6个数是否就是6个关节的角度?如果是,那是不是把positions的数据传给运动控制卡,就可驱动相应电机运动到特定的位置(这里不考虑我的机械臂结构参数是否和UR10一致,因为我目前只是想驱动6轴的电机,还没有成型的机械臂),如果不是这样,那需要如何做才能转换成运动控制卡需要的目标角度值?
      3.velocities,accelerations,effort,time_from_start,secs,nsecs这六个参数是做插补算法是必须要用到的么?分别有何作用?它们与我想把目标角度传递给运动控制卡有没什么关联?谢谢

    • 古月 回复 灰太狼 2018年3月9日 下午6:46

      1. 是的,根据这里的数据插补
      2. positions、velocities、accelerations对应六个轴的位置、速度、加速度。数据是这样的,需要看你用的运动控制卡的接口需求了。
      3. effort用不到,time_from_start、secs、nsecs都是时间参数,代表这个路径点的时间点,插补算法是需要的,周期插补输入的就是时间参数,输出是关节位置。运动控制卡我不了解,你要参考运动控制卡的需求。

    • 灰太狼 回复 古月 2018年3月9日 下午7:33

      1.我和运动控制卡厂家沟通了,就是需要插补后输出的关节角度即可,那么我想先采用ROS里面的插补算法来实现(先不考虑实时性),你说插补算法在joint_trajectory_controller包,这个我需要如何调用相关接口?有没有资料可参考?我想看到插补后输出的数据(还是以UR10为例子,就像你上面用rostopic echo /arm_controller/follow_joint_trajectory/goal查看moveIT规划的10组轨迹一样。)
      2.我看资料说ROS自带的插补输出周期500ms,这是真的么?还是我误解了?如果的确是500ms,那是否就是这个原因导致自带的插补实时性太差?所以你们才选择非ROS环境自己写插补?

    • 古月 回复 灰太狼 2018年3月10日 上午10:13

      1. 按照我的理解,你输入运动控制卡的应该是这10组轨迹点,运动控制卡没有插补功能?如果是轨迹点的话,可以用moveit的编程接口获取,具体可以看moveit的API和编程方法。如果确实需要插补值,那就需要考虑插补的实时性了。
      2. ROS本身的通讯机制决定了它不具备实时性,所以我并没有测试ROS的插补周期,也没有用ROS的这部分功能。我们没有用运动控制卡,底层的关节插补都是自己实现的。

    • 灰太狼 回复 古月 2018年3月10日 上午11:13

      我这卡没有插补功能,我先不考虑实时性,因为这也不是做产品,我现在想用ROS自带的插补,就是你说的在joint_trajectory_controller包,这个该如何调用啊?还是以UR10为例,把得到的这10组轨迹点数据传给插补的插件么?这方面有没资料,我搜索了ROS自带插补相关信息,没找到方法,还望指点,非常感谢你!

    • 古月 回复 灰太狼 2018年3月11日 上午12:22

      JointTrajectoryController内部的实现使用的是五次样条或者三次样条,这个可以看源码的,具体插补的输出我也只是在仿真里用过。这部分的资料确实很少,只能看源码,源码包里会有单元测试,从这些单元测试中可以找到使用方法。
      另外插补算法本身不复杂,自己写一个也时可以的。

  • 灰太狼 2018年3月7日 下午2:48

    古月大神,请教下如何接收到trajectory来的路径消息?我想查看MoveIt规划出来的路径,是否能看到规划路径每个点的目标角度制?在RViz里context下有个warehouse,Host地址是做什么用的呢?谢谢

  • pdmike 2017年9月12日 下午4:44

    大神 您好 请问下 我运行roslaunch ur_gazebo ur10.launch时 发生以下错误
    while processing /opt/ros/indigo/share/ur_description/launch/ur10_upload.launch:
    Invalid tag: Cannot load command parameter [robot_description]: command [/opt/ros/indigo/lib/xacro/xacro –inorder ‘/opt/ros/indigo/share/ur_description/urdf/ur10_robot.urdf.xacro’] returned with code [2].

    Param xml is
    The traceback for the exception was written to the log file
    我UR的所有package应该都装了 是什么问题 跪求

    • 古月 回复 pdmike 2017年9月13日 下午2:21

      这个错误提示是说模型文件有问题,无法解析,一般是因为xacro模型文件中的元素有问题

    • pdmike 回复 古月 2017年9月13日 下午3:15

      您说的是 ur10_robot.urdf.xacro 中元素有问题?这些我是直接用sudo apt-get install 直接下载的,会有问题吗?另外用这个指令下载完package以后还需要操作什么步骤?需要编译吗?

    • 古月 回复 pdmike 2017年9月14日 上午9:39

      直接下载的应该不会有问题,我在我的电脑上试过是可以运行的,下载之后也不需要编译。ur10_robot.urdf.xacro这个文件是确定存在的吧?

    • 古月 回复 pdmike 2017年9月14日 上午9:42

      试一下这个帖子的方法:https://groups.google.com/a/rethinkrobotics.com/forum/#!topic/brr-users/JS-Kb5NbYEE
      把ur10_upload.launch中的–inorder删掉试试

    • sslss 回复 古月 2017年9月30日 下午5:30

      请问下 显示和调整机械臂每个轴位置的界面 joint state 是怎么调出来的 是在RVIZ中还是gazbo中?

    • 古月 回复 sslss 2017年10月1日 下午8:35

      在rviz中,启动joint_state_publisher,并且启动gui

    • 张桥 回复 古月 2018年12月10日 下午2:04

      请问胡老师,如何在rviz界面启动joint_state_publisher呢?是直接add吗?

    • 古月 回复 张桥 2018年12月14日 下午8:45

      在launch里启动是添加use_gui=true的配置

    • erice 回复 pdmike 2018年6月26日 下午10:46

      你好, 我运行roslaunch ur_gazebo ur10.launch时 也发生一样的错误,请问你这个问题是如何解决的。
      while processing /opt/ros/indigo/share/ur_description/launch/ur10_upload.launch:
      Invalid tag: Cannot load command parameter [robot_description]: command [/opt/ros/indigo/lib/xacro/xacro –inorder ‘/opt/ros/indigo/share/ur_description/urdf/ur10_robot.urdf.xacro’] returned with code [2].

  • 豆豆 2017年4月7日 下午9:04

    ros-I和ros_control是什么关系

    • 古月 回复 豆豆 2017年4月8日 上午9:47

      ROS-I是ROS应用于工业机器人的一套框架,ros_control是针对机器人底层控制的功能包集,不限于工业机器人

  • 章金锋 2016年9月23日 下午5:28

    古月 看下邮件 ,我给您发了邮件了 谢谢!盼复