使用ros-master控制kinova jaco2机械臂

kinova 6自由度 j2n6s200

安装

cd ~/catkin_ws/src
git clone https://github.com/Kinovarobotics/kinova-ros.git kinova-ros
cd ~/catkin_ws
catkin_make

编译成功如下图
编译成功应如图

复制规则文件10-kinova-arm.rules(默认装在~/catkin_ws/src/kinova-ros/kinova_driver/udev中,如果)
使用命令复制:sudo cp ~/catkin_ws/src/kinova-ros/kinova_driver/udev/10-kinova-arm.rules /etc/udev/rules.d/
进入文件–计算机–etc–udev–rules.d ,可以看到10-kinova-arm.rlues文件已存在,代表复制成功

启动驱动程序

  1. 进入kinova_robot.launch所在的目录(我的是~/catkin_ws/src/kinova-ros/kinova_bringup/launch文件夹)
    在这里插入图片描述
    输入命令:
    $ roslaunch kinova_bringup kinova_robot.launch

在这里插入图片描述
(如果不成功会显示如下,可能是工作空间没有设置好和环境变量的问题,请参考:https://blog.csdn.net/tao_sc/article/details/89217864
https://zhangrelay.blog.csdn.net/article/details/51384724

在这里插入图片描述

控制

启动交互式控制的节点: rosrun kinova_driver kinova_interactive_control j2n6s200

关节位置控制

这是关于joints_action_client.py的帮助
通过-h命令查看:
rosrun kinova_demo joints_action_client.py -h
usage: joints_action_client.py [-h] [-r] [-v]
kinova_robotType [unit]
[joint_value [joint_value …]]

Drive robot joint to command position

positional arguments:
kinova_robotType kinova_RobotType is in format of:
[{j|m|r|c}{1|2}{s|n}{4|6|7}{s|a}{2|3}{0}{0}]. eg: j2n6a300
refers to jaco v2 6DOF assistive 3fingers. Please be noted
that not all options are valided for different robot
types.
unit Unit of joiint motion command, in degree, radian
joint_value joint values, length equals to number of joints.

optional arguments:
-h, --help show this help message and exit
-r, --relative the input values are relative values to current position.
-v, --verbose display joint values in alternative convention(degree or
radian)

可以调用kinova_demo包里的joints_action_client.py:
$ rosrun kinova_demo joints_action_client.py -v -r j2n6s200 degree -- 0 0 0 50 0 0
注意: j2n6s200是对应的机械臂型号,请确保你已通过usb正确连接虚拟机和机械臂。
此时机械臂的第四个关节会在当前角度的基础上正向运动50°
我用ubuntu20,装python3执行高命令提示文件有错误,这里因为py3和py2里面,print用法的不一样
在这里插入图片描述原文56行print 'position listener obtained message for joint position. ’
改为print ('position listener obtained message for joint position. ')
就是加上括号,因为在py3里print改为函数了,一定用英文括号,不然报错,改了就可以成功运行

笛卡尔位置控制

py程序文件为pose_action_client.py
如:

rosrun kinova_demo pose_action_client.py -v -r j2n6s200 mdeg -- 0 0 0 10 10 10

详细信息通过同上,使用-h命令查看

关节空间、笛卡尔空间速度控制

使用话题发布命令rostopic pub -r 100 /m1n4s200_driver/in/cartesian_velocity kinova_msgs/PoseVelocity+参数
参数格式可采用Tab键补全
-h获取详细信息

机械臂速度控制出现卡顿、无法达到设置速度

踩个坑,如果使用的是虚拟机,需要将虚拟机USB控制器的USB兼容性从2.0设置为3.0以上
在这里插入图片描述

用moveit和Rviz做仿真

1.先安装moveit
2.已经有ros-master包,在的工作空间里
在这里插入图片描述
3.启动ros

$ roscore

4.在kinova-ros包里,有kinova的模型kinova-ros/kinova_moveit/robot_configs
里面应该有四个文件夹,是四种型号的机械臂模型,我们用j2n6s300
在这里插入图片描述
5.打开j2n6s300_moveit_config/launch/ ,可以看到launch文件,启动demo

$ roslaunch j2n6s300_moveit_config demo.launch

可以看到kinova模型已经启动
6.可以用moveit的用户界面直接操作模型
7.使用moveit_commander控制机械臂

$ rosrun moveit_commander moveit_commander_cmdline.py

启动该脚本你就可以使用moveit_commander的命令直接和模型交互控制。

8.可以用python写脚本控制你的kinova模型,可以直接在j2n6s300_moveit_config文件夹下面创建一个scripts文件夹,存放写好的python脚本。
(注意,写完脚本之后要把python文件属性改为读写、可作为执行程序,否则运行会报错)

这是一个python脚本例子:在这里插入图片描述

#!/usr/bin/env python

import rospy, sys
import moveit_commander

class MyFkDemo:
    def __init__(self):
        # 初始化move_group的API
        moveit_commander.roscpp_initialize(sys.argv)

        # 初始化ROS节点
        rospy.init_node('my_fk_demo', anonymous=True)
 
        # 初始化需要使用move group控制的机械臂中的arm group
        arm = moveit_commander.MoveGroupCommander('arm')
        
        # 设置机械臂运动的允许误差值
        arm.set_goal_joint_tolerance(0.001)

        # 设置允许的最大速度和加速度
        arm.set_max_acceleration_scaling_factor(0.5)
        arm.set_max_velocity_scaling_factor(0.5)
        
         
        # 设置机械臂的目标位置,使用六轴的位置数据进行描述(单位:弧度)
        joint_positions = [-7.76161670485, 2.92477582596 ,1.00193522987 ,-2.07991521338 ,1.44570212266 ,1.3232299191]
        arm.set_joint_value_target(joint_positions)
                 
        # 控制机械臂完成运动
        arm.go()
        rospy.sleep(1)

        
        # 关闭并退出moveit
        moveit_commander.roscpp_shutdown()
        moveit_commander.os._exit(0)

if __name__ == "__main__":
    try:
        MyFkDemo()
    except rospy.ROSInterruptException:
        pass

这只提供一个范本,注意

        # 初始化需要使用move group控制的机械臂中的arm group
        arm = moveit_commander.MoveGroupCommander('arm')

这里的(‘arm’) 是你的模型中的move group ,请对应

moveit控制真实kinova

首先确保机械臂启动

roslaunch kinova_bringup kinova_robot.launch kinova_robotType:=*robot_type*

启动机械臂轨迹控制服务端

rosrun kinova_driver joint_trajectory_action_server kinova_robotType:=*robot_type*

启动moveit

roslaunch robot_name_moveit_config robot_name_demo.launch
  • 2
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用ROS-Melodic和MoveIt来进行UR5机械臂的仿真控制。以下是一个基本的步骤: 1. 安装ROS-Melodic:请根据ROS官方文档的说明安装ROS-Melodic。确保你的系统满足所有的依赖项。 2. 安装MoveIt:在终端中运行以下命令来安装MoveIt: ``` sudo apt-get install ros-melodic-moveit ``` 3. 配置工作空间:创建一个新的工作空间,并将其初始化为ROS工作空间。例如,你可以运行以下命令: ``` mkdir -p ~/catkin_ws/src cd ~/catkin_ws/ catkin_make ``` 4. 下载UR5机械臂包:在终端中运行以下命令来下载UR5机械臂ROS软件包: ``` cd ~/catkin_ws/src git clone https://github.com/ros-industrial/universal_robot.git ``` 5. 下载MoveIt配置文件:在终端中运行以下命令来下载MoveIt配置文件: ``` cd ~/catkin_ws/src git clone https://github.com/ros-planning/moveit_resources.git ``` 6. 构建和编译:在终端中运行以下命令来构建和编译你的工作空间: ``` cd ~/catkin_ws/ catkin_make ``` 7. 启动仿真环境:在终端中运行以下命令来启动UR5机械臂的仿真环境: ``` roslaunch ur_gazebo ur5.launch ``` 8. 启动MoveIt RViz:在终端中运行以下命令来启动MoveIt RViz界面: ``` roslaunch ur5_moveit_config moveit_rviz.launch config:=true ``` 9. 进行控制:在RViz界面中,你可以使用MoveIt插件来规划和控制UR5机械臂的运动。你可以设置目标位置、执行运动等。 这些是基本的步骤,可以帮助你开始使用ROS-Melodic和MoveIt进行UR5机械臂的仿真控制。你可以根据自己的需求进行进一步的定制和开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值