---恢復內容開始---
終於有機械臂了,
首先先下載包
cd ~/catkin_ws/src git clone https://github.com/Kinovarobotics/kinova-ros.git kinova-ros cd ~/catkin catkin_make
To access the arm via usb copy the udev rule file 10-kinova-arm.rules from
~/catkin_ws/src/kinova-ros/kinova_driver/udev to /etc/udev/rules.d/:
綁定usb端口
sudo cp ~/catkin_ws/src/kinova-ros/kinova_driver/udev/10-kinova-arm.rules /etc/udev/rules.d/
我的直接默認參數啟動kinova_robot.launch文件即可
<launch>
<arg name="use_urdf" default="true"/>
<arg name="kinova_robotType" default="j2n6a300" />
<node name="$(arg kinova_robotType)_driver" pkg="kinova_driver" type="kinova_arm_driver" output="screen" cwd="node" args="$(arg kinova_robotType)">
<!-- Set this parameter to use a specific arm on your system -->
<!-- <param name="serial_number" value="PJ00000001030703130" /> -->
</node>
<group unless="$(arg use_urdf)">
<node name="$(arg kinova_robotType)_tf_updater" pkg="kinova_driver" type="kinova_tf_updater" output="screen" cwd="node" args="$(arg kinova_robotType)">
<remap from="/$(arg kinova_robotType)_tf_updater/in/joint_angles" to="/$(arg kinova_robotType)_driver/out/joint_angles"/>
</node>
</group>
<group if="$(arg use_urdf)">
<param name="robot_description" command="$(find xacro)/xacro.py '$(find kinova_description)/urdf/$(arg kinova_robotType)_standalone.xacro'" />
<node name="$(arg kinova_robotType)_state_publisher"
pkg="robot_state_publisher"
type="robot_state_publisher">
<remap from="joint_states" to="/$(arg kinova_robotType)_driver/out/joint_state"/>
</node>
</group>
</launch>
kinova為了支持不同的產品,利用8個字節的字符串kinova_robotType來配置參數,參數范圍[{j|m|r|c}{1|2}{s|n}{4|6|7}{s|a}{2|3}{0}{0}]
{j|m|r|c} 代表產品 jaco, mico, roco and customized
{1|2} 版本號
{s|n} wrist type 手腕類型
{4|6|7} 幾自由度的機械臂
{s|a} 機器人模型
{2|3} 手指的個數
最后兩位還沒有被定義
默認參數j2n6a300 是jaco v2 6DOF assistive 3 fingers機械臂
根據自己的進行相應修改
然后運行
roslaunch kinova_bringup kinova_robot.launch
rosrun rviz rviz
在rviz中添加機器人模型選項

然后在demo文件夾下有相應的測試程序
fingers_action_client.py joints_action_client.py pose_action_client.py
控制6個關節
rosrun kinova_demo joints_action_client.py -v -r j2n6a300 degree -- 0 0 0 10 0 0
-v 代表輸出顯示所有關節的當前角度值
-r代表修改關節位置使用相對原來位置加或減去對應值,一定要加上此參數
j2n6a300 前面說的類型號
后邊為6個關節<Angle_J1> <Angle_J2> <Angle_J3> <Angle_J4> <Angle_J5> <Angle_J6>

六個關節的角度信息被發布到這個話題上:
/'${kinova_robotType}_driver'/out/joint_angles

直接修改機械臂手的空間位置
rosrun kinova_demo pose_action_client.py -v -r j2n6a300 mdeg -- 0.01 0 0 0 10 10
mdeg {mq | mdeg | mrad} mq代表米&四元數 mdeg米&角度 米&弧度
<pos x> <pos y> <pos z> 三軸角度<Angle_x> <Angle_y> <Angle_z>或四元數<ori x> <ori y> <ori z> <ori w>

當前笛卡爾坐標被發布到這個話題
/'${kinova_robotType}_driver'/out/tool_pose

末端力旋量也就是手爪的力
/'${kinova_robotType}_driver'/out/tool_wrench

機械臂也是靠力的數據來保護它不硬撞上東西


控制機械手
rosrun kinova_demo fingers_action_client.py -v j2n6a300 percent 50 50 50

percent {turn | mm | percent}三種控制方式,turn [0, 6800]從張開到閉合 mm手指從張開移動距離[0,9.45] percent[0,100]閉合百分比
這幾種控制方式都是控制手指的閉合度
手位置信息被發布到這個話題/'${kinova_robotType}_driver'/out/finger_position

機械臂也能通過控制每個關節的角速度,或坐標系的線速度來控制 就不一一寫了
另外 kinova公司提供了API接口,可使用其庫函數
庫在kinova-ros/kinova_driver/lib/文件夾下
