kinova_j2s6s300【Cartesian position control & Finger position control】

1、Cartesian position control

笛卡尔位置控制可以通过在自定义节点中调用KinovaComm::setCartesianPosition()来实现。或者,您可以简单地调用 kinova_demo 包中的节点pose_action_client.py

这个函数需要三个参数:kinova_robotType (eg. j2n6s300), unit {mq | mdeg | mrad}(指的是米和四元数、米和度和米和弧度)和pose_value
在这里插入图片描述
最后一个参数pose_value是位置(坐标x,y,z)后跟方向(是3个还是4个值取决于单位)。位置单位总是米,旋转单位不同。度数和弧度与 XYZ 顺序的欧拉角有关。请注意,使用四元数和欧拉角时参数的个数是不同的。

该函数采用选项 -r 来告诉机器人角度值是相对的还是绝对的。它还具有用于更详细输出的选项 -v 和用于帮助的 -h 选项。以下代码将驱动 Jaco2 机器人沿 +x 轴移动 1cm,并沿手轴旋转 +10 度。

eg: rosrun kinova_demo pose_action_client.py -v -r j2n6s300 mdeg -- 0.01 0 0 0 0 10
机器人根坐标系的笛卡尔坐标由以下规则定义:

  • 原点是底面与圆柱中心线的交点。
  • +x 轴在面对底板时指向左侧(电源开关和电缆插座所在的位置)。
  • +y 轴面向底板时朝向用户。
  • 当机器人站在平面上时,+z 轴向上。

kinova_tool_pose_action(由pose_action_client.py调用的动作服务器)将向机器人发送笛卡尔位置命令,并在机器人内处理逆运动学。
重要信息 在 Kinova 机器人中实施的逆运动学算法经过编程,可自动避免奇点和自碰撞。为了避免这些情况,算法将限制对机器人工作区某些部分的访问。你发送的笛卡尔姿态目标虽然属于机器人的工作空间,但可能会出现机器人无法达到的情况。

根据经验,如果您无法通过使用 Kinova 操纵杆移动 Kinova 机器人来达到您在pose_action_client.py中命令的姿势,则机器人也将无法通过动作服务器达到相同的姿势。如果您不想使用机器人的 IK 解算器,您可以始终使用 MoveIt。

当前笛卡尔位置通过主题/'${kinova_robotType}_driver'/out/tool_pose发布
此外,末端执行器的扳手通过主题/'${kinova_robotType}_driver'/out/tool_wrench发布

同样,您还可以在 Rviz 中使用交互式标记作为笛卡尔位置:

  • 1、启动驱动程序:roslaunch kinova_bringup kinova_robot.launch kinova_robotType:=j2n6s300
  • 2、启动交互控制节点:rosrun kinova_driver kinova_interactive_control j2n6s300
  • 3、打开 Rviz:rosrun rviz rviz
  • 4、在 RViz 中(在显示部分)将 Global Options -> Fixed Frame 更改为world
  • 5、使用 Add -> RobotModel(在 rviz 文件夹中)添加机器人模型
  • 6、使用 Add -> InteractiveMarkers(在 rviz 文件夹中) 添加交互式标记
  • 7、将 InteractiveMarkers -> Updated Topic 更改为/j2n6s300_interactive_control_Cart/update
  • 末端执行器应出现一个具有 3 轴(平移)和 3 个环(旋转)的立方体,您可以通过拖动轴或环来移动机器人。

New in release 1.2.0
不停止地执行多个笛卡尔路点
action 客户端一次执行一个目标。如果用户想为机器人提供多个路点而不在每个航点处停下来,可以使用服务 AddPoseToCartesianTrajectories。此服务将指令姿势添加到由机器人维护的缓冲区中。机器人按照添加顺序执行此缓冲区中的指令姿势,而不会在不同的姿势之间停止。
服务ClearTrajectories可用于清除原有的轨迹缓冲区。

2、Finger position control

手指位置控制可以通过在自定义节点中调用KinovaComm::setFingerPositions()来实现。

或者,可以简单地调用 kinova_demo 包中的节点finger_action_client.py。这个函数需要三个参数:kinova_robotType(eg. j2n6s300), unit {turn | mm | percent}finger_value
在这里插入图片描述
手指基本上是通过turn来控制的,其余的单元为了方便而按比例turn。值 0 表示完全打开,而finger_maxTurn表示完全关闭。finger_maxTurn的值可能因多种因素而异。手指转动的正确参考值是 0(全开)到 6800(全关)。如有必要,请在代码中修改此变量。该函数还采用选项 -r 来告诉机器人角度值是相对的还是绝对的。它还具有用于更详细输出的选项 -v 和用于帮助的 -h 选项。以下代码完全闭合手指。

eg: rosrun kinova_demo fingers_action_client.py j2n6s300 percent -- 100 100 100
手指位置通过主题/'${kinova_robotType}_driver'/out/finger_position发布

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值