增加280JN自适应夹爪URDF模型

This commit is contained in:
wangWking 2024-09-12 09:58:02 +08:00
parent f23363f4a8
commit f4434066c2
25 changed files with 3402 additions and 433 deletions

View file

@ -26,9 +26,7 @@ catkin_install_python(PROGRAMS
scripts/teleop_keyboard.py
scripts/listen_real.py
scripts/listen_real_of_topic.py
scripts/detect_marker.py
scripts/following_marker.py
scripts/follow_and_pump.py
scripts/slider_control_gripper.py
scripts/simple_gui.py
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

View file

@ -9,7 +9,7 @@ Panels:
- /RobotModel1
- /TF1
Splitter Ratio: 0.5
Tree Height: 579
Tree Height: 609
- Class: rviz/Selection
Name: Selection
- Class: rviz/Tool Properties
@ -63,6 +63,46 @@ Visualization Manager:
Expand Link Details: false
Expand Tree: false
Link Tree Style: Links in Alphabetic Order
g_base:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
gripper_base:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
gripper_left1:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
gripper_left2:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
gripper_left3:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
gripper_right1:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
gripper_right2:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
gripper_right3:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
joint1:
Alpha: 1
Show Axes: false
@ -106,9 +146,27 @@ Visualization Manager:
Visual Enabled: true
- Class: rviz/TF
Enabled: true
Filter (blacklist): ""
Filter (whitelist): ""
Frame Timeout: 15
Frames:
All Enabled: true
g_base:
Value: true
gripper_base:
Value: true
gripper_left1:
Value: true
gripper_left2:
Value: true
gripper_left3:
Value: true
gripper_right1:
Value: true
gripper_right2:
Value: true
gripper_right3:
Value: true
joint1:
Value: true
joint2:
@ -124,20 +182,31 @@ Visualization Manager:
joint6_flange:
Value: true
Marker Alpha: 1
Marker Scale: 0.30000001192092896
Marker Scale: 0.10000000149011612
Name: TF
Show Arrows: true
Show Axes: true
Show Names: true
Tree:
joint1:
joint2:
joint3:
joint4:
joint5:
joint6:
joint6_flange:
{}
g_base:
joint1:
joint2:
joint3:
joint4:
joint5:
joint6:
joint6_flange:
gripper_base:
gripper_left2:
{}
gripper_left3:
gripper_left1:
{}
gripper_right2:
{}
gripper_right3:
gripper_right1:
{}
Update Interval: 0
Value: true
Enabled: true
@ -184,17 +253,17 @@ Visualization Manager:
Invert Z Axis: false
Name: Current View
Near Clip Distance: 0.009999999776482582
Pitch: 0.44039833545684814
Pitch: 0.7653981447219849
Target Frame: <Fixed Frame>
Yaw: 0.43038973212242126
Yaw: 3.990389108657837
Saved: ~
Window Geometry:
Displays:
collapsed: false
Height: 876
Height: 906
Hide Left Dock: false
Hide Right Dock: false
QMainWindow State: 000000ff00000000fd00000004000000000000016a000002cefc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d000002ce000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000022f000002cefc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000003d000002ce000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000007380000003efc0100000002fb0000000800540069006d0065010000000000000738000003bc00fffffffb0000000800540069006d0065010000000000000450000000000000000000000393000002ce00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
QMainWindow State: 000000ff00000000fd00000004000000000000016a000002ecfc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d000002ec000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000022f000002ecfc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000003d000002ec000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000007380000003efc0100000002fb0000000800540069006d0065010000000000000738000003bc00fffffffb0000000800540069006d0065010000000000000450000000000000000000000393000002ec00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
Selection:
collapsed: false
Time:

View file

@ -1,18 +0,0 @@
<launch>
<!-- Load URDF, rviz, etc. on the parameter server,加载参数服务器上的URDF、rviz等 -->
<arg name="model" default="$(find mycobot_description)/urdf/mycobot_280_jn/mycobot_280_jn.urdf"/>
<arg name="rvizconfig" default="$(find mycobot_280)/config/mycobot_with_marker.rviz" />
<arg name="gui" default="true" />
<arg name="num" default="0" />
<!-- Add model control,添加模型控制 -->
<include file="$(find mycobot_280jn)/launch/slider_control.launch">
<arg name="model" value="$(arg model)" />
<arg name="rvizconfig" value="$(arg rvizconfig)" />
<arg name="gui" value="$(arg gui)" />
</include>
<!-- vision node -->
<node name="opencv_camera" pkg="mycobot_280jn" type="opencv_camera" args="$(arg num)"/>
<node name="detect_marker" pkg="mycobot_280jn" type="detect_marker.py" />
<node name="following_marker" pkg="mycobot_280jn" type="following_marker.py" />
</launch>

View file

@ -3,28 +3,22 @@
<arg name="port" default="/dev/ttyTHS1" />
<arg name="baud" default="1000000" />
<!-- Load URDF, rviz, etc. on the parameter server,加载参数服务器上的URDF、rviz等 -->
<arg name="model" default="$(find mycobot_description)/urdf/mycobot_280_jn/mycobot_280_jn.urdf"/>
<arg name="rvizconfig" default="$(find mycobot_280)/config/mycobot_with_marker.rviz" />
<arg name="model" default="$(find mycobot_description)/urdf/mycobot_280_jn/mycobot_280_jn_adaptive_gripper_parallel.urdf"/>
<arg name="rvizconfig" default="$(find mycobot_280jn)/config/mycobot_jn.rviz" />
<arg name="gui" default="false" />
<arg name="num" default="0" />
<param name="robot_description" command="$(find xacro)/xacro --inorder $(arg model)" />
<!-- Combinejoin values to TF 将值合并到TF-->
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
<!-- Show in Rviz显示在Rviz -->
<!-- Show in Rviz 显示在Rviz-->
<node name="rviz" pkg="rviz" type="rviz" args="-d $(arg rvizconfig)" required="true" />
<!-- mycobot-topics mycobot-话题-->
<include file="$(find mycobot_communication)/launch/communication_topic.launch">
<include file="$(find mycobot_communication)/launch/communication_jsnn.launch">
<arg name="port" value="$(arg port)" />
<arg name="baud" value="$(arg baud)" />
</include>
<!-- listen and pub the real angles ,监听并发布真实的角度-->
<node name="real_listener" pkg="mycobot_280jn" type="listen_real_of_topic.py" />
<!-- vision node -->
<node name="opencv_camera" pkg="mycobot_280jn" type="opencv_camera" args="$(arg num)"/>
<node name="detect_marker" pkg="mycobot_280jn" type="detect_marker.py" />
<node name="following_marker" pkg="mycobot_280jn" type="following_marker.py" />
<node name="real_listener" pkg="mycobot_280jn" type="listen_real.py" />
<node name="simple_gui" pkg="mycobot_280jn" type="simple_gui.py" />
</launch>

View file

@ -0,0 +1,20 @@
<launch>
<!-- <arg name="port" default="/dev/ttyTHS1" />
<arg name="baud" default="1000000" /> -->
<!-- Load URDF, rviz, etc. on the parameter server,加载参数服务器上的URDF、rviz等 -->
<arg name="model" default="$(find mycobot_description)/urdf/mycobot_280_jn/mycobot_280_jn_adaptive_gripper_parallel.urdf"/>
<arg name="rvizconfig" default="$(find mycobot_280jn)/config/mycobot_jn.rviz" />
<arg name="gui" default="true" />
<param name="robot_description" command="$(find xacro)/xacro --inorder $(arg model)" />
<!-- Combinejoin values to TF. 将值合并到TF-->
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
<node name="joint_state_publisher_gui" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui">
<!-- <param name="use_gui" value="$(arg gui)" /> -->
<!-- <rosparam param="source_list" subst_value="true">["joint_states"]</rosparam> -->
</node>
<!-- Show in Rviz .显示在Rviz-->
<node name="rviz" pkg="rviz" type="rviz" args="-d $(arg rvizconfig)" required="true" />
</launch>

View file

@ -0,0 +1,23 @@
<launch>
<!-- Select connecting device and serial port ,选择连接设备及串口-->
<arg name="port" default="/dev/ttyTHS1" />
<arg name="baud" default="1000000" />
<!-- Load URDF, rviz, etc. on the parameter server,加载参数服务器上的URDF、rviz等 -->
<arg name="model" default="$(find mycobot_description)/urdf/mycobot_280_jn/mycobot_280_jn_adaptive_gripper_parallel.urdf"/>
<arg name="rvizconfig" default="$(find mycobot_280jn)/config/mycobot_jn.rviz" />
<arg name="gui" default="false" />
<param name="robot_description" command="$(find xacro)/xacro --inorder $(arg model)" />
<!-- Combinejoin values to TF 将值合并到TF-->
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
<!-- Show in Rviz 显示在Rviz-->
<node name="rviz" pkg="rviz" type="rviz" args="-d $(arg rvizconfig)" required="true" />
<include file="$(find mycobot_communication)/launch/communication_jsnn.launch">
<arg name="port" value="$(arg port)" />
<arg name="baud" value="$(arg baud)" />
</include>
<!-- listen and pub the real angles ,监听并发布真实的角度-->
<node name="real_listener" pkg="mycobot_280jn" type="listen_real.py" />
</launch>

View file

@ -0,0 +1,18 @@
<launch>
<!-- Load URDF, rviz, etc. on the parameter server,加载参数服务器上的URDF、rviz等 -->
<arg name="model" default="$(find mycobot_description)/urdf/mycobot_280_jn/mycobot_280_jn_adaptive_gripper_parallel.urdf"/>
<!-- <arg name="model" default="$(find mycobot_description)/urdf/mycobot_280_jn/mycobot_280_jn_adaptive_gripper_vertical.urdf"/> -->
<arg name="rvizconfig" default="$(find mycobot_280jn)/config/mycobot_jn.rviz" />
<arg name="gui" default="true" />
<param name="robot_description" command="$(find xacro)/xacro --inorder $(arg model)" />
<!-- Combinejoin values to TF ,将值合并到TF-->
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
<node name="joint_state_publisher_gui" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui">
<param name="use_gui" value="$(arg gui)" />
<!-- <rosparam param="source_list" subst_value="true">["joint_states"]</rosparam> -->
</node>
<!-- Show in Rviz 显示在Rviz-->
<node name="rviz" pkg="rviz" type="rviz" args="-d $(arg rvizconfig)" required="true" />
</launch>

View file

@ -0,0 +1,17 @@
<launch>
<!-- Load URDF, rviz, etc. on the parameter server,加载参数服务器上的URDF、rviz等 -->
<arg name="model" default="$(find mycobot_description)/urdf/mycobot_280_jn/mycobot_280_jn_camera_flange.urdf"/>
<arg name="rvizconfig" default="$(find mycobot_280jn)/config/mycobot_jn.rviz" />
<arg name="gui" default="true" />
<param name="robot_description" command="$(find xacro)/xacro --inorder $(arg model)" />
<!-- Combinejoin values to TF ,将值合并到TF-->
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
<node name="joint_state_publisher_gui" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui">
<param name="use_gui" value="$(arg gui)" />
<!-- <rosparam param="source_list" subst_value="true">["joint_states"]</rosparam> -->
</node>
<!-- Show in Rviz 显示在Rviz-->
<node name="rviz" pkg="rviz" type="rviz" args="-d $(arg rvizconfig)" required="true" />
</launch>

View file

@ -1,123 +0,0 @@
#!/usr/bin/env python
import rospy
import cv2 as cv
import numpy as np
from cv_bridge import CvBridge, CvBridgeError
from sensor_msgs.msg import Image
import tf
from tf.broadcaster import TransformBroadcaster
import tf_conversions
from mycobot_communication.srv import (
GetCoords,
SetCoords,
GetAngles,
SetAngles,
GripperStatus,
)
class ImageConverter:
def __init__(self):
self.br = TransformBroadcaster()
self.bridge = CvBridge()
self.aruco_dict = cv.aruco.Dictionary_get(cv.aruco.DICT_6X6_250)
self.aruo_params = cv.aruco.DetectorParameters_create()
calibrationParams = cv.FileStorage(
"calibrationFileName.xml", cv.FILE_STORAGE_READ
)
self.dist_coeffs = calibrationParams.getNode("distCoeffs").mat()
self.camera_matrix = None
# subscriber, listen wether has img come in. 订阅者监听是否有img
self.image_sub = rospy.Subscriber("/camera/image", Image, self.callback)
def callback(self, data):
"""Callback function.
Process image with OpenCV, detect Mark to get the pose. Then acccording the
pose to transforming.
"""
try:
# trans `rgb` to `gbr` for opencv. 将 `rgb` 转换为 opencv 的 `gbr`。
cv_image = self.bridge.imgmsg_to_cv2(data, "bgr8")
except CvBridgeError as e:
print(e)
size = cv_image.shape
focal_length = size[1]
center = [size[1] / 2, size[0] / 2]
if self.camera_matrix is None:
# calc the camera matrix, if don't have.如果没有,则计算相机矩阵
self.camera_matrix = np.array(
[
[focal_length, 0, center[0]],
[0, focal_length, center[1]],
[0, 0, 1],
],
dtype=np.float32,
)
gray = cv.cvtColor(cv_image, cv.COLOR_BGR2GRAY)
# detect aruco marker.检测 aruco 标记
ret = cv.aruco.detectMarkers(gray, self.aruco_dict, parameters=self.aruo_params)
corners, ids = ret[0], ret[1]
# process marker data.处理标记数据
if len(corners) > 0:
if ids is not None:
# print('corners:', corners, 'ids:', ids)
# detect marker pose. 检测marker位姿。
# argument:
# marker corners,标记角
# marker size (meter),标记尺寸(米)
ret = cv.aruco.estimatePoseSingleMarkers(
corners, 0.05, self.camera_matrix, self.dist_coeffs
)
(rvec, tvec) = (ret[0], ret[1])
(rvec - tvec).any()
print("rvec:", rvec, "tvec:", tvec)
# just select first one detected marker.只需选择第一个检测到的标记。
for i in range(rvec.shape[0]):
cv.aruco.drawDetectedMarkers(cv_image, corners)
cv.aruco.drawAxis(
cv_image,
self.camera_matrix,
self.dist_coeffs,
rvec[i, :, :],
tvec[i, :, :],
0.03,
)
xyz = tvec[0, 0, :]
xyz = [xyz[0] - 0.045, xyz[1], xyz[2] - 0.03]
# get quaternion for ros. 为ros获取四元数
euler = rvec[0, 0, :]
tf_change = tf.transformations.quaternion_from_euler(
euler[0], euler[1], euler[2]
)
print("tf_change:", tf_change)
# trans pose according [joint1],根据 [joint1] 变换姿势
self.br.sendTransform(
xyz, tf_change, rospy.Time.now(), "basic_shapes", "joint6_flange"
)
# [x, y, z, -172, 3, -46.8]
cv.imshow("Image", cv_image)
cv.waitKey(3)
try:
pass
except CvBridgeError as e:
print(e)
if __name__ == "__main__":
try:
rospy.init_node("detect_marker")
rospy.loginfo("Starting cv_bridge_test node")
ImageConverter()
rospy.spin()
except KeyboardInterrupt:
print("Shutting down cv_bridge_test node.")
cv.destroyAllWindows()

View file

@ -1,194 +0,0 @@
#!/usr/bin/env python2
# coding:utf-8
import rospy
from visualization_msgs.msg import Marker
import time
import os
# Type of message communicated with mycobot与 mycobot 通信的消息类型
from mycobot_communication.msg import MycobotSetAngles, MycobotSetCoords, MycobotPumpStatus
rospy.init_node("gipper_subscriber", anonymous=True)
# Control the topic of mycobot, followed by angle, coordinates, gripper
# 控制 mycobot 的 topic依次是角度、坐标、夹爪
angle_pub = rospy.Publisher("mycobot/angles_goal",
MycobotSetAngles, queue_size=5)
coord_pub = rospy.Publisher("mycobot/coords_goal",
MycobotSetCoords, queue_size=5)
# 判断设备ttyUSB*为M5ttyACM*为wioJudging equipment: ttyUSB* is M5ttyACM* is wio
robot = os.popen("ls /dev/ttyUSB*").readline()
if "dev" in robot:
Pin = [2, 5]
else:
Pin = [20, 21]
pump_pub = rospy.Publisher("mycobot/pump_status",
MycobotPumpStatus, queue_size=5)
# instantiate the message object实例化消息对象
angles = MycobotSetAngles()
coords = MycobotSetCoords()
pump = MycobotPumpStatus()
# Deviation value from mycobot's real position,与 mycobot 真实位置的偏差值
x_offset = -20
y_offset = 20
z_offset = 110
# With this variable limit, the fetching behavior is only done once
# 通过该变量限制,抓取行为只做一次
flag = False
# In order to compare whether the QR code moves later,为了后面比较二维码是否移动
temp_x = temp_y = temp_z = 0.0
temp_time = time.time()
def pub_coords(x, y, z, rx=-150, ry=10, rz=-90, sp=70, m=2):
"""Post coordinates,发布坐标"""
coords.x = x
coords.y = y
coords.z = z
coords.rx = rx
coords.ry = ry
coords.rz = rz
coords.speed = 70
coords.model = m
# print(coords)
coord_pub.publish(coords)
def pub_angles(a, b, c, d, e, f, sp):
"""Publishing angle,发布角度"""
angles.joint_1 = float(a)
angles.joint_2 = float(b)
angles.joint_3 = float(c)
angles.joint_4 = float(d)
angles.joint_5 = float(e)
angles.joint_6 = float(f)
angles.speed = sp
angle_pub.publish(angles)
def pub_pump(flag, Pin):
"""Publish gripper status,发布夹爪状态"""
pump.Status = flag
pump.Pin1 = Pin[0]
pump.Pin2 = Pin[1]
pump_pub.publish(pump)
def target_is_moving(x, y, z):
"""Determine whether the target moves"""
"""判断目标是否移动"""
count = 0
for o, n in zip((x, y, z), (temp_x, temp_y, temp_z)):
print(o, n)
if abs(o - n) < 2:
count += 1
print(count)
if count == 3:
return False
return True
def grippercallback(data):
"""callback function,回调函数"""
global flag, temp_x, temp_y, temp_z
# rospy.loginfo('gripper_subscriber get date :%s', data)
if flag:
return
# Parse out the coordinate value,解析出坐标值
# pump length: 88mm
x = float(format(data.pose.position.x * 1000, ".2f"))
y = float(format(data.pose.position.y * 1000, ".2f"))
z = float(format(data.pose.position.z * 1000, ".2f"))
# When the running time is less than 30s, or the target position is still changing, perform tracking behavior
# 当运行时间小于 30s或目标位置还在改变时进行追踪行为
if (
time.time() - temp_time < 30
or (temp_x == temp_y == temp_z == 0.0)
or target_is_moving(x - x_offset, y - y_offset, z)
):
x -= x_offset
y -= y_offset
pub_coords(x - 20, y, 280)
time.sleep(0.1)
temp_x, temp_y, temp_z = x, y, z
return
else: #Indicates that the target is stationary and can try to grab, 表示目标处于静止状态,可以尝试抓取
print(x, y, z)
# detect heigth + pump height + limit height + offset
x += x_offset
y += y_offset
z = z + 88 + z_offset
pub_coords(x, y, z)
time.sleep(2.5)
# down
for i in range(1, 17):
pub_coords(x, y, z - i * 5, rx=-160, sp=10)
time.sleep(0.1)
time.sleep(2)
pub_pump(True, Pin)
# pump on
pub_coords(x, y, z + 20, -165)
time.sleep(1.5)
pub_angles(0, 30, -50, -40, 0, 0, 50)
time.sleep(1.5)
put_z = 140
pub_coords(39.4, -174.7, put_z, -177.13, -4.13, -152.59, 70, 2)
time.sleep(1.5)
for i in range(1, 8):
pub_coords(39.4, -174.7, put_z - i * 5, -
177.13, -4.13, -152.59, 15, 2)
time.sleep(0.1)
pub_pump(False, Pin)
time.sleep(0.5)
pub_angles(0, 30, -50, -40, 0, 0, 50)
time.sleep(1.5)
# finally
flag = True
def main():
for _ in range(10):
# pub_coords(150, 20, 220, -175, 0, -90, 70, 2)
pub_angles(0, 30, -50, -40, 0, 0, 50)
# pub_angles(random.randint(-30, 30), random.randint(-30, 30), random.randint(-30, 30), random.randint(-30, 30), random.randint(-30, 30), random.randint(-30, 30), 70)
time.sleep(0.5)
pub_pump(False, Pin)
# time.sleep(2.5)
# subscribers to mark informationmark 信息的订阅者
rospy.Subscriber("visualization_marker", Marker,
grippercallback, queue_size=1)
print("gripper test")
rospy.spin()
if __name__ == "__main__":
main()

View file

@ -1,64 +0,0 @@
#!/usr/bin/env python2
import time
import rospy
from sensor_msgs.msg import JointState
from std_msgs.msg import Header
from visualization_msgs.msg import Marker
import tf
def talker():
rospy.init_node("following_marker", anonymous=True)
pub_marker = rospy.Publisher("visualization_marker", Marker, queue_size=10)
rate = rospy.Rate(20)
listener = tf.TransformListener()
marker_ = Marker()
marker_.header.frame_id = "/joint1"
marker_.ns = "basic_cube"
print("publishing ...")
while not rospy.is_shutdown():
now = rospy.Time.now() - rospy.Duration(0.1)
try:
trans, rot = listener.lookupTransform("joint1", "basic_shapes", now)
except Exception as e:
print(e)
continue
print(type(trans), trans)
print(type(rot), rot)
# marker
marker_.header.stamp = now
marker_.type = marker_.CUBE
marker_.action = marker_.ADD
marker_.scale.x = 0.04
marker_.scale.y = 0.04
marker_.scale.z = 0.04
# marker position initial,标记位置初始化
marker_.pose.position.x = trans[0]
marker_.pose.position.y = trans[1]
marker_.pose.position.z = trans[2]
marker_.pose.orientation.x = rot[0]
marker_.pose.orientation.y = rot[1]
marker_.pose.orientation.z = rot[2]
marker_.pose.orientation.w = rot[3]
marker_.color.a = 1.0
marker_.color.g = 1.0
pub_marker.publish(marker_)
rate.sleep()
if __name__ == "__main__":
try:
talker()
except rospy.ROSInterruptException:
pass

View file

@ -0,0 +1,57 @@
#!/usr/bin/env python3
# encoding:utf-8
"""[summary]
This file obtains the joint angle of the manipulator in ROS,
and then sends it directly to the real manipulator using `pymycobot` API.
This file is [slider_control.launch] related script.
Passable parameters:
port: serial prot string. Defaults is '/dev/ttyTHS1'
baud: serial prot baudrate. Defaults is 1000000.
"""
import time
import math
import rospy
from sensor_msgs.msg import JointState
from pymycobot.mycobot import MyCobot
mc = None
def callback(data):
# rospy.loginfo(rospy.get_caller_id() + "%s", data.position)
data_list = []
for index, value in enumerate(data.position):
data_list.append(round(value,3))
# print(data_list[6:])
data_list = data_list[:7]
print("radians:%s"%data_list[:6])
mc.send_radians(data_list[:6], 25)
gripper_value = int(abs(-0.7-data_list[6])* 117)
print("gripper_value:%s"%gripper_value)
mc.set_gripper_value(gripper_value, 80, 1)
def listener():
global mc
rospy.init_node("control_slider", anonymous=True)
rospy.Subscriber("joint_states", JointState, callback)
port = rospy.get_param("~port", "/dev/ttyTHS1")
baud = rospy.get_param("~baud", 1000000)
print(port, baud)
mc = MyCobot(port, baud)
time.sleep(0.05)
mc.set_fresh_mode(1)
time.sleep(0.05)
# spin() simply keeps python from exiting until this node is stopped
# spin()只是阻止python退出直到该节点停止
print("spin ...")
rospy.spin()
if __name__ == "__main__":
listener()

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -3,6 +3,20 @@
<xacro:property name="width" value=".2" />
<link name="g_base">
<visual>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/G_base.dae"/>
</geometry>
<origin xyz = "0.0 0 -0.032" rpy = "0 0 1.5708"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/G_base.dae"/>
</geometry>
<origin xyz = "0.0 0 -0.032" rpy = "0 0 1.5708"/>
</collision>
</link>
<link name="joint1">
<visual>
@ -123,9 +137,18 @@
</link>
<joint name="g_base_to_joint1" type="fixed">
<axis xyz="0 0 0"/>
<limit effort = "1000.0" lower = "-3.14" upper = "3.14159" velocity = "0"/>
<parent link="g_base"/>
<child link="joint1"/>
<origin xyz= "0 0 0" rpy = "0 0 0"/>
</joint>
<joint name="joint2_to_joint1" type="revolute">
<axis xyz="0 0 1"/>
<limit effort = "1000.0" lower = "-3.14" upper = "3.14159" velocity = "0"/>
<limit effort = "1000.0" lower = "-2.9321" upper = "2.9321" velocity = "0"/>
<parent link="joint1"/>
<child link="joint2"/>
<origin xyz= "0 0 0.15756" rpy = "0 0 0"/>
@ -134,7 +157,7 @@
<joint name="joint3_to_joint2" type="revolute">
<axis xyz="0 0 1"/>
<limit effort = "1000.0" lower = "-3.14" upper = "3.14159" velocity = "0"/>
<limit effort = "1000.0" lower = "-2.0943" upper = "2.0943" velocity = "0"/>
<parent link="joint2"/>
<child link="joint3"/>
<origin xyz= "0 0 -0.001" rpy = "0 1.5708 -1.5708"/>
@ -143,7 +166,7 @@
<joint name="joint4_to_joint3" type="revolute">
<axis xyz=" 0 0 1"/>
<limit effort = "1000.0" lower = "-3.14" upper = "3.14159" velocity = "0"/>
<limit effort = "1000.0" lower = "-2.6179" upper = "2.6179" velocity = "0"/>
<parent link="joint3"/>
<child link="joint4"/>
<origin xyz= " -0.1104 0 0 " rpy = "0 0 0"/>
@ -153,7 +176,7 @@
<joint name="joint5_to_joint4" type="revolute">
<axis xyz=" 0 0 1"/>
<limit effort = "1000.0" lower = "-3.14" upper = "3.14159" velocity = "0"/>
<limit effort = "1000.0" lower = "-2.5307" upper = "2.5307" velocity = "0"/>
<parent link="joint4"/>
<child link="joint5"/>
<origin xyz= "-0.096 0 0.06462" rpy = "0 0 -1.5708"/>
@ -161,7 +184,7 @@
<joint name="joint6_to_joint5" type="revolute">
<axis xyz="0 0 1"/>
<limit effort = "1000.0" lower = "-3.14" upper = "3.14159" velocity = "0"/>
<limit effort = "1000.0" lower = "-2.8797" upper = "2.8797" velocity = "0"/>
<parent link="joint5"/>
<child link="joint6"/>
<origin xyz= "0 -0.07318 0" rpy = "1.5708 -1.5708 0"/>

View file

@ -0,0 +1,375 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="firefighter" >
<xacro:property name="width" value=".2" />
<link name="g_base">
<visual>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/G_base.dae"/>
</geometry>
<origin xyz = "0.0 0 -0.032" rpy = "0 0 1.5708"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/G_base.dae"/>
</geometry>
<origin xyz = "0.0 0 -0.032" rpy = "0 0 1.5708"/>
</collision>
</link>
<link name="joint1">
<visual>
<geometry>
<!--- 0.0 0 -0.04 1.5708 3.14159-->
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint1_jet.dae"/>
</geometry>
<origin xyz = "0.0 0 0 " rpy = " 0 0 3.14159"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint1_jet.dae"/>
</geometry>
<origin xyz = "0.0 0 0" rpy = "0 0 3.14159"/>
</collision>
</link>
<link name="joint2">
<visual>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint2.dae"/>
</geometry>
<origin xyz = "0.0 0 -0.06096 " rpy = " 0 0 -1.5708"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint2.dae"/>
</geometry>
<origin xyz = "0.0 0 -0.06096" rpy = "0 0 -1.5708"/>
</collision>
</link>
<link name="joint3">
<visual>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint3.dae"/>
</geometry>
<origin xyz = "0.0 0 0.03256 " rpy = " 0 -1.5708 0"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint3.dae"/>
</geometry>
<origin xyz = "0.0 0 0.03256" rpy = "0 -1.5708 0"/>
</collision>
</link>
<link name="joint4">
<visual>
<geometry>
<!--- 0.0 0 -0.04 -->
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint4.dae"/>
</geometry>
<origin xyz = "0.0 0 0.03056 " rpy = " 0 -1.5708 0"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint4.dae"/>
</geometry>
<origin xyz = "0.0 0 0.03056" rpy = "0 -1.5708 0"/>
</collision>
</link>
<link name="joint5">
<visual>
<geometry>
<!--- 0.0 0 -0.04 -->
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint5.dae"/>
</geometry>
<origin xyz = "0.0 0 -0.03356 " rpy = " 0 -1.5708 1.5708"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint5.dae"/>
</geometry>
<origin xyz = "0.0 0 -0.03356" rpy = "0 -1.5708 1.5708"/>
</collision>
</link>
<link name="joint6">
<visual>
<geometry>
<!--- 0.0 0 -0.04 -->
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint6.dae"/>
</geometry>
<origin xyz = "0 0.00 -0.038 " rpy = " 0 0 0"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint6.dae"/>
</geometry>
<origin xyz = "0 0.00 -0.038" rpy = "0 0 0"/>
</collision>
</link>
<link name="joint6_flange">
<visual>
<geometry>
<!--- 0.0 0 -0.04 -->
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint7.dae"/>
</geometry>
<origin xyz = "0.0 0 -0.012 " rpy = " 0 0 0"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint7.dae"/>
</geometry>
<origin xyz = "0.0 0 -0.012" rpy = "0 0 0"/>
</collision>
</link>
<link name="gripper_base">
<visual>
<geometry>
<!--- 0.0 0 -0.04 -->
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/gripper_base.dae"/>
</geometry>
<origin xyz = "0.0 0 -0.012 " rpy = " 0 0 0"/>
</visual>
<collision>
<geometry>
<!--- 0.0 0 -0.04 -->
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/gripper_base.dae"/>
</geometry>
<origin xyz = "0.0 0 -0.012 " rpy = " 0 0 0"/>
</collision>
</link>
<link name="gripper_left1">
<visual>
<geometry>
<!--- 0.0 0 -0.04 -->
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/gripper_left1.dae"/>
</geometry>
<origin xyz = "0.039 -0.0133 -0.012 " rpy = " 0 0 0"/>
<!-- <origin xyz = "0.0 0 -0.012 " rpy = " 0 0 0"/> -->
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/gripper_left1.dae"/>
</geometry>
<origin xyz = "0.039 -0.0133 -0.012 " rpy = " 0 0 0"/>
</collision>
</link>
<link name="gripper_left2">
<visual>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/gripper_left2.dae"/>
</geometry>
<origin xyz = "0.005 -0.0195 -0.012 " rpy = " 0 0 0"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/gripper_left2.dae"/>
</geometry>
<origin xyz = "0.005 -0.0195 -0.012 " rpy = " 0 0 0"/>
</collision>
</link>
<link name="gripper_left3">
<visual>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/gripper_left3.dae"/>
</geometry>
<origin xyz = "0.012 0.0025 -0.012 " rpy = " 0 0 0"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/gripper_left3.dae"/>
</geometry>
<origin xyz = "0.012 0.0025 -0.012 " rpy = " 0 0 0"/>
</collision>
</link>
<link name="gripper_right1">
<visual>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/gripper_right1.dae"/>
</geometry>
<origin xyz = "-0.039 -0.0133 -0.012 " rpy = " 0 0 0"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/gripper_right1.dae"/>
</geometry>
<origin xyz = "-0.039 -0.0133 -0.012 " rpy = " 0 0 0"/>
</collision>
</link>
<link name="gripper_right2">
<visual>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/gripper_right2.dae"/>
</geometry>
<origin xyz = "-0.005 -0.0195 -0.012 " rpy = " 0 0 0"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/gripper_right2.dae"/>
</geometry>
<origin xyz = "-0.005 -0.0195 -0.012 " rpy = " 0 0 0"/>
</collision>
</link>
<link name="gripper_right3">
<visual>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/gripper_right3.dae"/>
</geometry>
<origin xyz = "-0.012 0.0025 -0.012 " rpy = " 0 0 0"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/gripper_right3.dae"/>
</geometry>
<origin xyz = "-0.012 0.0025 -0.012" rpy = " 0 0 0"/>
</collision>
</link>
<joint name="g_base_to_joint1" type="fixed">
<axis xyz="0 0 0"/>
<limit effort = "1000.0" lower = "-3.14" upper = "3.14159" velocity = "0"/>
<parent link="g_base"/>
<child link="joint1"/>
<origin xyz= "0 0 0" rpy = "0 0 0"/>
</joint>
<joint name="joint2_to_joint1" type="revolute">
<axis xyz="0 0 1"/>
<limit effort = "1000.0" lower = "-2.9321" upper = "2.9321" velocity = "0"/>
<parent link="joint1"/>
<child link="joint2"/>
<origin xyz= "0 0 0.15756" rpy = "0 0 0"/>
</joint>
<joint name="joint3_to_joint2" type="revolute">
<axis xyz="0 0 1"/>
<limit effort = "1000.0" lower = "-2.0943" upper = "2.0943" velocity = "0"/>
<parent link="joint2"/>
<child link="joint3"/>
<origin xyz= "0 0 -0.001" rpy = "0 1.5708 -1.5708"/>
</joint>
<joint name="joint4_to_joint3" type="revolute">
<axis xyz=" 0 0 1"/>
<limit effort = "1000.0" lower = "-2.6179" upper = "2.6179" velocity = "0"/>
<parent link="joint3"/>
<child link="joint4"/>
<origin xyz= " -0.1104 0 0 " rpy = "0 0 0"/>
</joint>
<joint name="joint5_to_joint4" type="revolute">
<axis xyz=" 0 0 1"/>
<limit effort = "1000.0" lower = "-2.5307" upper = "2.5307" velocity = "0"/>
<parent link="joint4"/>
<child link="joint5"/>
<origin xyz= "-0.096 0 0.06462" rpy = "0 0 -1.5708"/>
</joint>
<joint name="joint6_to_joint5" type="revolute">
<axis xyz="0 0 1"/>
<limit effort = "1000.0" lower = "-2.8797" upper = "2.8797" velocity = "0"/>
<parent link="joint5"/>
<child link="joint6"/>
<origin xyz= "0 -0.07318 0" rpy = "1.5708 -1.5708 0"/>
</joint>
<joint name="joint6output_to_joint6" type="revolute">
<axis xyz="0 0 1"/>
<limit effort = "1000.0" lower = "-3.14" upper = "3.14159" velocity = "0"/>
<parent link="joint6"/>
<child link="joint6_flange"/>
<origin xyz= "0 0.0456 0" rpy = "-1.5708 0 0"/>
</joint>
<joint name="joint6output_to_gripper_base" type="fixed">
<!-- <axis xyz="0 0 1"/>
<limit effort = "1000.0" lower = "-3.14" upper = "3.14159" velocity = "0"/> -->
<parent link="joint6_flange"/>
<child link="gripper_base"/>
<origin xyz= "0 0 0.034" rpy = "1.579 0 0"/>
</joint>
<joint name="gripper_controller" type="revolute">
<axis xyz="0 0 1"/>
<limit effort = "1000.0" lower = "-0.7" upper = "0.15" velocity = "0"/>
<parent link="gripper_base"/>
<child link="gripper_left3"/>
<origin xyz= "-0.012 0.005 0" rpy = "0 0 0"/>
</joint>
<joint name="gripper_base_to_gripper_left2" type="revolute">
<axis xyz="0 0 1"/>
<limit effort = "1000.0" lower = "-0.8" upper = "0.5" velocity = "0"/>
<parent link="gripper_base"/>
<child link="gripper_left2"/>
<origin xyz= "-0.005 0.027 0" rpy = "0 0 0"/>
<mimic joint="gripper_controller" multiplier="1.0" offset="0" />
</joint>
<joint name="gripper_left3_to_gripper_left1" type="revolute">
<axis xyz="0 0 1"/>
<limit effort = "1000.0" lower = "-0.5" upper = "0.5" velocity = "0"/>
<parent link="gripper_left3"/>
<child link="gripper_left1"/>
<origin xyz= "-0.027 0.016 0" rpy = "0 0 0"/>
<mimic joint="gripper_controller" multiplier="-1.0" offset="0" />
</joint>
<joint name="gripper_base_to_gripper_right3" type="revolute">
<axis xyz="0 0 1"/>
<limit effort = "1000.0" lower = "-0.15" upper = "0.7" velocity = "0"/>
<parent link="gripper_base"/>
<child link="gripper_right3"/>
<origin xyz= "0.012 0.005 0" rpy = "0 0 0"/>
<mimic joint="gripper_controller" multiplier="-1.0" offset="0" />
</joint>
<joint name="gripper_base_to_gripper_right2" type="revolute">
<axis xyz="0 0 1"/>
<limit effort = "1000.0" lower = "-0.5" upper = "0.8" velocity = "0"/>
<parent link="gripper_base"/>
<child link="gripper_right2"/>
<origin xyz= "0.005 0.027 0" rpy = "0 0 0"/>
<mimic joint="gripper_controller" multiplier="-1.0" offset="0" />
</joint>
<joint name="gripper_right3_to_gripper_right1" type="revolute">
<axis xyz="0 0 1"/>
<limit effort = "1000.0" lower = "-0.5" upper = "0.5" velocity = "0"/>
<parent link="gripper_right3"/>
<child link="gripper_right1"/>
<origin xyz= "0.027 0.016 0" rpy = "0 0 0"/>
<mimic joint="gripper_controller" multiplier="1.0" offset="0" />
</joint>
</robot>

View file

@ -0,0 +1,372 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="firefighter" >
<xacro:property name="width" value=".2" />
<link name="g_base">
<visual>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/G_base.dae"/>
</geometry>
<origin xyz = "0.0 0 -0.032" rpy = "0 0 1.5708"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/G_base.dae"/>
</geometry>
<origin xyz = "0.0 0 -0.032" rpy = "0 0 1.5708"/>
</collision>
</link>
<link name="joint1">
<visual>
<geometry>
<!--- 0.0 0 -0.04 1.5708 3.14159-->
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint1_jet.dae"/>
</geometry>
<origin xyz = "0.0 0 0 " rpy = " 0 0 3.14159"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint1_jet.dae"/>
</geometry>
<origin xyz = "0.0 0 0" rpy = "0 0 3.14159"/>
</collision>
</link>
<link name="joint2">
<visual>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint2.dae"/>
</geometry>
<origin xyz = "0.0 0 -0.06096 " rpy = " 0 0 -1.5708"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint2.dae"/>
</geometry>
<origin xyz = "0.0 0 -0.06096" rpy = "0 0 -1.5708"/>
</collision>
</link>
<link name="joint3">
<visual>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint3.dae"/>
</geometry>
<origin xyz = "0.0 0 0.03256 " rpy = " 0 -1.5708 0"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint3.dae"/>
</geometry>
<origin xyz = "0.0 0 0.03256" rpy = "0 -1.5708 0"/>
</collision>
</link>
<link name="joint4">
<visual>
<geometry>
<!--- 0.0 0 -0.04 -->
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint4.dae"/>
</geometry>
<origin xyz = "0.0 0 0.03056 " rpy = " 0 -1.5708 0"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint4.dae"/>
</geometry>
<origin xyz = "0.0 0 0.03056" rpy = "0 -1.5708 0"/>
</collision>
</link>
<link name="joint5">
<visual>
<geometry>
<!--- 0.0 0 -0.04 -->
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint5.dae"/>
</geometry>
<origin xyz = "0.0 0 -0.03356 " rpy = " 0 -1.5708 1.5708"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint5.dae"/>
</geometry>
<origin xyz = "0.0 0 -0.03356" rpy = "0 -1.5708 1.5708"/>
</collision>
</link>
<link name="joint6">
<visual>
<geometry>
<!--- 0.0 0 -0.04 -->
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint6.dae"/>
</geometry>
<origin xyz = "0 0.00 -0.038 " rpy = " 0 0 0"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint6.dae"/>
</geometry>
<origin xyz = "0 0.00 -0.038" rpy = "0 0 0"/>
</collision>
</link>
<link name="joint6_flange">
<visual>
<geometry>
<!--- 0.0 0 -0.04 -->
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint7.dae"/>
</geometry>
<origin xyz = "0.0 0 -0.012 " rpy = " 0 0 0"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint7.dae"/>
</geometry>
<origin xyz = "0.0 0 -0.012" rpy = "0 0 0"/>
</collision>
</link>
<link name="gripper_base">
<visual>
<geometry>
<!--- 0.0 0 -0.04 -->
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/gripper_base.dae"/>
</geometry>
<origin xyz = "0.0 0.0077 -0.012 " rpy = " 0 0 0"/>
</visual>
<collision>
<geometry>
<!--- 0.0 0 -0.04 -->
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/gripper_base.dae"/>
</geometry>
<origin xyz = "0.0 0.0077 -0.012 " rpy = " 0 0 0"/>
</collision>
</link>
<link name="gripper_left1">
<visual>
<geometry>
<!--- 0.0 0 -0.04 -->
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/gripper_left1.dae"/>
</geometry>
<origin xyz = "0.039 -0.0133 -0.012 " rpy = " 0 0 0"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/gripper_left1.dae"/>
</geometry>
<origin xyz = "0.039 -0.0133 -0.012 " rpy = " 0 0 0"/>
</collision>
</link>
<link name="gripper_left2">
<visual>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/gripper_left2.dae"/>
</geometry>
<origin xyz = "0.005 -0.0195 -0.012 " rpy = " 0 0 0"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/gripper_left2.dae"/>
</geometry>
<origin xyz = "0.005 -0.0195 -0.012 " rpy = " 0 0 0"/>
</collision>
</link>
<link name="gripper_left3">
<visual>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/gripper_left3.dae"/>
</geometry>
<origin xyz = "0.012 0.0025 -0.012 " rpy = " 0 0 0"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/gripper_left3.dae"/>
</geometry>
<origin xyz = "0.012 0.0025 -0.012 " rpy = " 0 0 0"/>
</collision>
</link>
<link name="gripper_right1">
<visual>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/gripper_right1.dae"/>
</geometry>
<origin xyz = "-0.039 -0.0133 -0.012 " rpy = " 0 0 0"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/gripper_right1.dae"/>
</geometry>
<origin xyz = "-0.039 -0.0133 -0.012 " rpy = " 0 0 0"/>
</collision>
</link>
<link name="gripper_right2">
<visual>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/gripper_right2.dae"/>
</geometry>
<origin xyz = "-0.005 -0.0195 -0.012 " rpy = " 0 0 0"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/gripper_right2.dae"/>
</geometry>
<origin xyz = "-0.005 -0.0195 -0.012 " rpy = " 0 0 0"/>
</collision>
</link>
<link name="gripper_right3">
<visual>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/gripper_right3.dae"/>
</geometry>
<origin xyz = "-0.012 0.0025 -0.012 " rpy = " 0 0 0"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/gripper_right3.dae"/>
</geometry>
<origin xyz = "-0.012 0.0025 -0.012" rpy = " 0 0 0"/>
</collision>
</link>
<joint name="g_base_to_joint1" type="fixed">
<axis xyz="0 0 0"/>
<limit effort = "1000.0" lower = "-3.14" upper = "3.14159" velocity = "0"/>
<parent link="g_base"/>
<child link="joint1"/>
<origin xyz= "0 0 0" rpy = "0 0 0"/>
</joint>
<joint name="joint2_to_joint1" type="revolute">
<axis xyz="0 0 1"/>
<limit effort = "1000.0" lower = "-2.9321" upper = "2.9321" velocity = "1.0"/>
<parent link="joint1"/>
<child link="joint2"/>
<origin xyz= "0 0 0.15756" rpy = "0 0 0"/>
</joint>
<joint name="joint3_to_joint2" type="revolute">
<axis xyz="0 0 1"/>
<limit effort = "1000.0" lower = "-2.0943" upper = "2.0943" velocity = "0"/>
<parent link="joint2"/>
<child link="joint3"/>
<origin xyz= "0 0 -0.001" rpy = "0 1.5708 -1.5708"/>
</joint>
<joint name="joint4_to_joint3" type="revolute">
<axis xyz=" 0 0 1"/>
<limit effort = "1000.0" lower = "-2.6179" upper = "2.6179" velocity = "0"/>
<parent link="joint3"/>
<child link="joint4"/>
<origin xyz= " -0.1104 0 0 " rpy = "0 0 0"/>
</joint>
<joint name="joint5_to_joint4" type="revolute">
<axis xyz=" 0 0 1"/>
<limit effort = "1000.0" lower = "-2.5307" upper = "2.5307" velocity = "0"/>
<parent link="joint4"/>
<child link="joint5"/>
<origin xyz= "-0.096 0 0.06462" rpy = "0 0 -1.5708"/>
</joint>
<joint name="joint6_to_joint5" type="revolute">
<axis xyz="0 0 1"/>
<limit effort = "1000.0" lower = "-2.8797" upper = "2.8797" velocity = "0"/>
<parent link="joint5"/>
<child link="joint6"/>
<origin xyz= "0 -0.07318 0" rpy = "1.5708 -1.5708 0"/>
</joint>
<joint name="joint6output_to_joint6" type="revolute">
<axis xyz="0 0 1"/>
<limit effort = "1000.0" lower = "-3.14" upper = "3.14" velocity = "0"/>
<parent link="joint6"/>
<child link="joint6_flange"/>
<origin xyz= "0 0.0456 0" rpy = "-1.5708 0 0"/>
</joint>
<joint name="joint6output_to_gripper_base" type="fixed">
<!-- <axis xyz="0 0 1"/>
<limit effort = "1000.0" lower = "-3.14" upper = "3.14159" velocity = "0"/> -->
<parent link="joint6_flange"/>
<child link="gripper_base"/>
<origin xyz= "0 0 0.0139" rpy = "0 0 3.14159"/>
</joint>
<joint name="gripper_controller" type="revolute">
<axis xyz="0 0 1"/>
<limit effort = "1000.0" lower = "-0.7" upper = "0.15" velocity = "0"/>
<parent link="gripper_base"/>
<child link="gripper_left3"/>
<origin xyz= "-0.012 0.005 0" rpy = "0 0 0"/>
</joint>
<joint name="gripper_base_to_gripper_left2" type="revolute">
<axis xyz="0 0 1"/>
<limit effort = "1000.0" lower = "-0.8" upper = "0.5" velocity = "0"/>
<parent link="gripper_base"/>
<child link="gripper_left2"/>
<origin xyz= "-0.005 0.027 0" rpy = "0 0 0"/>
<mimic joint="gripper_controller" multiplier="1.0" offset="0" />
</joint>
<joint name="gripper_left3_to_gripper_left1" type="revolute">
<axis xyz="0 0 1"/>
<limit effort = "1000.0" lower = "-0.5" upper = "0.5" velocity = "0"/>
<parent link="gripper_left3"/>
<child link="gripper_left1"/>
<origin xyz= "-0.027 0.016 0" rpy = "0 0 0"/>
<mimic joint="gripper_controller" multiplier="-1.0" offset="0" />
</joint>
<joint name="gripper_base_to_gripper_right3" type="revolute">
<axis xyz="0 0 1"/>
<limit effort = "1000.0" lower = "-0.15" upper = "0.7" velocity = "0"/>
<parent link="gripper_base"/>
<child link="gripper_right3"/>
<origin xyz= "0.012 0.005 0" rpy = "0 0 0"/>
<mimic joint="gripper_controller" multiplier="-1.0" offset="0" />
</joint>
<joint name="gripper_base_to_gripper_right2" type="revolute">
<axis xyz="0 0 1"/>
<limit effort = "1000.0" lower = "-0.5" upper = "0.8" velocity = "0"/>
<parent link="gripper_base"/>
<child link="gripper_right2"/>
<origin xyz= "0.005 0.027 0" rpy = "0 0 0"/>
<mimic joint="gripper_controller" multiplier="-1.0" offset="0" />
</joint>
<joint name="gripper_right3_to_gripper_right1" type="revolute">
<axis xyz="0 0 1"/>
<limit effort = "1000.0" lower = "-0.5" upper = "0.5" velocity = "0"/>
<parent link="gripper_right3"/>
<child link="gripper_right1"/>
<origin xyz= "0.027 0.016 0" rpy = "0 0 0"/>
<mimic joint="gripper_controller" multiplier="1.0" offset="0" />
</joint>
</robot>

View file

@ -0,0 +1,227 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="firefighter" >
<xacro:property name="width" value=".2" />
<link name="g_base">
<visual>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/G_base.dae"/>
</geometry>
<origin xyz = "0.0 0 -0.032" rpy = "0 0 1.5708"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/G_base.dae"/>
</geometry>
<origin xyz = "0.0 0 -0.032" rpy = "0 0 1.5708"/>
</collision>
</link>
<link name="joint1">
<visual>
<geometry>
<!--- 0.0 0 -0.04 1.5708 3.14159-->
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint1_jet.dae"/>
</geometry>
<origin xyz = "0.0 0 0 " rpy = " 0 0 3.14159"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint1_jet.dae"/>
</geometry>
<origin xyz = "0.0 0 0" rpy = "0 0 3.14159"/>
</collision>
</link>
<link name="joint2">
<visual>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint2.dae"/>
</geometry>
<origin xyz = "0.0 0 -0.06096 " rpy = " 0 0 -1.5708"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint2.dae"/>
</geometry>
<origin xyz = "0.0 0 -0.06096" rpy = "0 0 -1.5708"/>
</collision>
</link>
<link name="joint3">
<visual>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint3.dae"/>
</geometry>
<origin xyz = "0.0 0 0.03256 " rpy = " 0 -1.5708 0"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint3.dae"/>
</geometry>
<origin xyz = "0.0 0 0.03256" rpy = "0 -1.5708 0"/>
</collision>
</link>
<link name="joint4">
<visual>
<geometry>
<!--- 0.0 0 -0.04 -->
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint4.dae"/>
</geometry>
<origin xyz = "0.0 0 0.03056 " rpy = " 0 -1.5708 0"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint4.dae"/>
</geometry>
<origin xyz = "0.0 0 0.03056" rpy = "0 -1.5708 0"/>
</collision>
</link>
<link name="joint5">
<visual>
<geometry>
<!--- 0.0 0 -0.04 -->
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint5.dae"/>
</geometry>
<origin xyz = "0.0 0 -0.03356 " rpy = " 0 -1.5708 1.5708"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint5.dae"/>
</geometry>
<origin xyz = "0.0 0 -0.03356" rpy = "0 -1.5708 1.5708"/>
</collision>
</link>
<link name="joint6">
<visual>
<geometry>
<!--- 0.0 0 -0.04 -->
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint6.dae"/>
</geometry>
<origin xyz = "0 0.00 -0.038 " rpy = " 0 0 0"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint6.dae"/>
</geometry>
<origin xyz = "0 0.00 -0.038" rpy = "0 0 0"/>
</collision>
</link>
<link name="joint6_flange">
<visual>
<geometry>
<!--- 0.0 0 -0.04 -->
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint7.dae"/>
</geometry>
<origin xyz = "0.0 0 -0.012 " rpy = " 0 0 0"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/joint7.dae"/>
</geometry>
<origin xyz = "0.0 0 -0.012" rpy = "0 0 0"/>
</collision>
</link>
<link name="camera_flange">
<visual>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/camera_flange.dae"/>
</geometry>
<origin xyz = "0.024 -0.008 0.0 " rpy = " 0 3.14159 0"/>
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_280_jn/camera_flange.dae"/>
</geometry>
<origin xyz = "0.024 -0.008 0.0 " rpy = " 0 3.14159 0"/>
</collision>
</link>
<joint name="g_base_to_joint1" type="fixed">
<axis xyz="0 0 0"/>
<limit effort = "1000.0" lower = "-3.14" upper = "3.14159" velocity = "0"/>
<parent link="g_base"/>
<child link="joint1"/>
<origin xyz= "0 0 0" rpy = "0 0 0"/>
</joint>
<joint name="joint2_to_joint1" type="revolute">
<axis xyz="0 0 1"/>
<limit effort = "1000.0" lower = "-2.9321" upper = "2.9321" velocity = "0"/>
<parent link="joint1"/>
<child link="joint2"/>
<origin xyz= "0 0 0.15756" rpy = "0 0 0"/>
</joint>
<joint name="joint3_to_joint2" type="revolute">
<axis xyz="0 0 1"/>
<limit effort = "1000.0" lower = "-2.0943" upper = "2.0943" velocity = "0"/>
<parent link="joint2"/>
<child link="joint3"/>
<origin xyz= "0 0 -0.001" rpy = "0 1.5708 -1.5708"/>
</joint>
<joint name="joint4_to_joint3" type="revolute">
<axis xyz=" 0 0 1"/>
<limit effort = "1000.0" lower = "-2.6179" upper = "2.6179" velocity = "0"/>
<parent link="joint3"/>
<child link="joint4"/>
<origin xyz= " -0.1104 0 0 " rpy = "0 0 0"/>
</joint>
<joint name="joint5_to_joint4" type="revolute">
<axis xyz=" 0 0 1"/>
<limit effort = "1000.0" lower = "-2.5307" upper = "2.5307" velocity = "0"/>
<parent link="joint4"/>
<child link="joint5"/>
<origin xyz= "-0.096 0 0.06462" rpy = "0 0 -1.5708"/>
</joint>
<joint name="joint6_to_joint5" type="revolute">
<axis xyz="0 0 1"/>
<limit effort = "1000.0" lower = "-2.8797" upper = "2.8797" velocity = "0"/>
<parent link="joint5"/>
<child link="joint6"/>
<origin xyz= "0 -0.07318 0" rpy = "1.5708 -1.5708 0"/>
</joint>
<joint name="joint6output_to_joint6" type="revolute">
<axis xyz="0 0 1"/>
<limit effort = "1000.0" lower = "-3.14" upper = "3.14159" velocity = "0"/>
<parent link="joint6"/>
<child link="joint6_flange"/>
<origin xyz= "0 0.0456 0" rpy = "-1.5708 0 0"/>
</joint>
<joint name="joint6output_to_camera_flange" type="fixed">
<!-- <axis xyz="0 0 1"/>
<limit effort = "1000.0" lower = "-3.14" upper = "3.14159" velocity = "0"/> -->
<parent link="joint6_flange"/>
<child link="camera_flange"/>
<!-- <origin xyz= "0 0.0 0" rpy = "-1.5708 0 0"/> -->
<origin xyz= "0 0 0.01" rpy = "1.579 0 0"/>
</joint>
</robot>