新增 mycobot600 机械臂跟随仿真运动

This commit is contained in:
Tenero-Jz 2024-08-13 10:14:26 +08:00
parent 4117a757bf
commit 4388a637b4
120 changed files with 3601 additions and 883 deletions

View file

@ -13,7 +13,7 @@ def talker():
rospy.init_node("display", anonymous=True) rospy.init_node("display", anonymous=True)
print("Try connect real mycobot...") print("Try connect real mycobot...")
port = rospy.get_param("~port", "/dev/ttyUSB0") port = rospy.get_param("~port", "/dev/ttyACM0")
baud = rospy.get_param("~baud", 115200) baud = rospy.get_param("~baud", 115200)
print("port: {}, baud: {}\n".format(port, baud)) print("port: {}, baud: {}\n".format(port, baud))
try: try:
@ -41,6 +41,7 @@ def talker():
joint_state_send.header = Header() joint_state_send.header = Header()
joint_state_send.name = [ joint_state_send.name = [
"joint2_to_joint1", "joint2_to_joint1",
"joint3_to_joint2", "joint3_to_joint2",
"joint4_to_joint3", "joint4_to_joint3",

View file

@ -6,6 +6,6 @@ moveit_setup_assistant_config:
SRDF: SRDF:
relative_path: config/firefighter.srdf relative_path: config/firefighter.srdf
CONFIG: CONFIG:
author_name: wwj author_name: Jz
author_email: wwj@elephantrobot.com author_email: Jz@elephantrobot.com
generated_timestamp: 1683628879 generated_timestamp: 1683628879

View file

@ -2,18 +2,25 @@ controller_list:
- name: fake_arm_group_controller - name: fake_arm_group_controller
type: $(arg fake_execution_type) type: $(arg fake_execution_type)
joints: joints:
# - joint2_to_joint1
# - joint3_to_joint2
# - joint4_to_joint3
# - joint5_to_joint4
# - joint6_to_joint5
# - joint6output_to_joint6
- joint1_to_base
- joint2_to_joint1 - joint2_to_joint1
- joint3_to_joint2 - joint3_to_joint2
- joint4_to_joint3 - joint4_to_joint3
- joint5_to_joint4 - joint5_to_joint4
- joint6_to_joint5 - joint6_to_joint5
- joint6output_to_joint6 - joint6output_to_tool1
- name: fake_gripper_group_controller - name: fake_gripper_group_controller
type: $(arg fake_execution_type) type: $(arg fake_execution_type)
joints: joints:
- gripper_controller - gripper_controller
initial: # Define initial robot poses per group # initial: # Define initial robot poses per group
- group: arm_group # - group: arm_group
pose: init_pose # pose: init_pose
- group: gripper_group # - group: gripper_group
pose: init_gripper # pose: init_gripper

View file

@ -1,6 +1,6 @@
Panels: Panels:
- Class: rviz/Displays - Class: rviz/Displays
Help Height: 84 Help Height: 0
Name: Displays Name: Displays
Property Tree Widget: Property Tree Widget:
Expanded: Expanded:
@ -9,7 +9,7 @@ Panels:
- /MotionPlanning1/Planning Request1 - /MotionPlanning1/Planning Request1
- /MotionPlanning1/Planned Path1 - /MotionPlanning1/Planned Path1
Splitter Ratio: 0.5 Splitter Ratio: 0.5
Tree Height: 109 Tree Height: 200
- Class: rviz/Help - Class: rviz/Help
Name: Help Name: Help
- Class: rviz/Views - Class: rviz/Views
@ -45,6 +45,7 @@ Visualization Manager:
- Acceleration_Scaling_Factor: 0.1 - Acceleration_Scaling_Factor: 0.1
Class: moveit_rviz_plugin/MotionPlanning Class: moveit_rviz_plugin/MotionPlanning
Enabled: true Enabled: true
JointsTab_Use_Radians: true
Move Group Namespace: "" Move Group Namespace: ""
MoveIt_Allow_Approximate_IK: true MoveIt_Allow_Approximate_IK: true
MoveIt_Allow_External_Program: false MoveIt_Allow_External_Program: false
@ -52,7 +53,7 @@ Visualization Manager:
MoveIt_Allow_Sensor_Positioning: false MoveIt_Allow_Sensor_Positioning: false
MoveIt_Planning_Attempts: 10 MoveIt_Planning_Attempts: 10
MoveIt_Planning_Time: 5 MoveIt_Planning_Time: 5
MoveIt_Use_Cartesian_Path: false MoveIt_Use_Cartesian_Path: true
MoveIt_Use_Constraint_Aware_IK: true MoveIt_Use_Constraint_Aware_IK: true
MoveIt_Workspace: MoveIt_Workspace:
Center: Center:
@ -78,10 +79,6 @@ Visualization Manager:
Show Axes: false Show Axes: false
Show Trail: false Show Trail: false
Value: true Value: true
base_footprint:
Alpha: 1
Show Axes: false
Show Trail: false
gripper_base: gripper_base:
Alpha: 1 Alpha: 1
Show Axes: false Show Axes: false
@ -117,32 +114,42 @@ Visualization Manager:
Show Axes: false Show Axes: false
Show Trail: false Show Trail: false
Value: true Value: true
link1: joint1:
Alpha: 1 Alpha: 1
Show Axes: false Show Axes: false
Show Trail: false Show Trail: false
Value: true Value: true
link2: joint2:
Alpha: 1 Alpha: 1
Show Axes: false Show Axes: false
Show Trail: false Show Trail: false
Value: true Value: true
link3: joint3:
Alpha: 1 Alpha: 1
Show Axes: false Show Axes: false
Show Trail: false Show Trail: false
Value: true Value: true
link4: joint4:
Alpha: 1 Alpha: 1
Show Axes: false Show Axes: false
Show Trail: false Show Trail: false
Value: true Value: true
link5: joint5:
Alpha: 1 Alpha: 1
Show Axes: false Show Axes: false
Show Trail: false Show Trail: false
Value: true Value: true
link6: joint6:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
tool1:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
tool2:
Alpha: 1 Alpha: 1
Show Axes: false Show Axes: false
Show Trail: false Show Trail: false
@ -168,11 +175,11 @@ Visualization Manager:
Colliding Link Color: 255; 0; 0 Colliding Link Color: 255; 0; 0
Goal State Alpha: 1 Goal State Alpha: 1
Goal State Color: 250; 128; 0 Goal State Color: 250; 128; 0
Interactive Marker Size: 0.15000000596046448 Interactive Marker Size: 0.20000000298023224
Joint Violation Color: 255; 0; 255 Joint Violation Color: 255; 0; 255
Planning Group: arm_group Planning Group: arm_group
Query Goal State: true Query Goal State: true
Query Start State: false Query Start State: true
Show Workspace: false Show Workspace: false
Start State Alpha: 1 Start State Alpha: 1
Start State Color: 0; 255; 0 Start State Color: 0; 255; 0
@ -198,10 +205,6 @@ Visualization Manager:
Show Axes: false Show Axes: false
Show Trail: false Show Trail: false
Value: true Value: true
base_footprint:
Alpha: 1
Show Axes: false
Show Trail: false
gripper_base: gripper_base:
Alpha: 1 Alpha: 1
Show Axes: false Show Axes: false
@ -237,32 +240,42 @@ Visualization Manager:
Show Axes: false Show Axes: false
Show Trail: false Show Trail: false
Value: true Value: true
link1: joint1:
Alpha: 1 Alpha: 1
Show Axes: false Show Axes: false
Show Trail: false Show Trail: false
Value: true Value: true
link2: joint2:
Alpha: 1 Alpha: 1
Show Axes: false Show Axes: false
Show Trail: false Show Trail: false
Value: true Value: true
link3: joint3:
Alpha: 1 Alpha: 1
Show Axes: false Show Axes: false
Show Trail: false Show Trail: false
Value: true Value: true
link4: joint4:
Alpha: 1 Alpha: 1
Show Axes: false Show Axes: false
Show Trail: false Show Trail: false
Value: true Value: true
link5: joint5:
Alpha: 1 Alpha: 1
Show Axes: false Show Axes: false
Show Trail: false Show Trail: false
Value: true Value: true
link6: joint6:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
tool1:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
tool2:
Alpha: 1 Alpha: 1
Show Axes: false Show Axes: false
Show Trail: false Show Trail: false
@ -314,7 +327,7 @@ Visualization Manager:
Views: Views:
Current: Current:
Class: rviz/Orbit Class: rviz/Orbit
Distance: 2 Distance: 1.4812843799591064
Enable Stereo Rendering: Enable Stereo Rendering:
Stereo Eye Separation: 0.05999999865889549 Stereo Eye Separation: 0.05999999865889549
Stereo Focal Distance: 1 Stereo Focal Distance: 1
@ -322,17 +335,17 @@ Visualization Manager:
Value: false Value: false
Field of View: 0.75 Field of View: 0.75
Focal Point: Focal Point:
X: -0.10000000149011612 X: -0.07944566011428833
Y: 0.25 Y: 0.29104751348495483
Z: 0.30000001192092896 Z: 0.29134249687194824
Focal Shape Fixed Size: true Focal Shape Fixed Size: true
Focal Shape Size: 0.05000000074505806 Focal Shape Size: 0.05000000074505806
Invert Z Axis: false Invert Z Axis: false
Name: Current View Name: Current View
Near Clip Distance: 0.009999999776482582 Near Clip Distance: 0.009999999776482582
Pitch: 0.3399999737739563 Pitch: 1.0449998378753662
Target Frame: base Target Frame: base
Yaw: 2.9449498653411865 Yaw: 6.149951934814453
Saved: Saved:
- Class: rviz/Orbit - Class: rviz/Orbit
Distance: 2 Distance: 2
@ -357,7 +370,7 @@ Visualization Manager:
Window Geometry: Window Geometry:
Displays: Displays:
collapsed: false collapsed: false
Height: 919 Height: 820
Help: Help:
collapsed: false collapsed: false
Hide Left Dock: false Hide Left Dock: false
@ -366,9 +379,9 @@ Window Geometry:
collapsed: false collapsed: false
MotionPlanning - Trajectory Slider: MotionPlanning - Trajectory Slider:
collapsed: false collapsed: false
QMainWindow State: 000000ff00000000fd0000000100000000000001f30000033dfc0200000007fb000000100044006900730070006c006100790073010000003d000000fe000000c900fffffffb0000000800480065006c00700000000342000000bb0000006e00fffffffb0000000a00560069006500770073000000010c000000a4000000a400fffffffb0000000c00430061006d00650072006100000002ff000001610000000000000000fb0000001e004d006f00740069006f006e00200050006c0061006e006e0069006e00670100000374000001890000000000000000fb00000044004d006f00740069006f006e0050006c0061006e006e0069006e00670020002d0020005400720061006a006500630074006f0072007900200053006c00690064006500720100000141000000520000004100fffffffb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e00670100000199000001e10000017d00ffffff000003120000033d00000001000000020000000100000002fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 QMainWindow State: 000000ff00000000fd0000000100000000000001f3000002dafc0200000007fb000000100044006900730070006c006100790073010000003d00000105000000c900fffffffb0000000800480065006c00700000000342000000bb0000006e00fffffffb0000000a00560069006500770073000000010c000000a4000000a400fffffffb0000000c00430061006d00650072006100000002ff000001610000000000000000fb0000001e004d006f00740069006f006e00200050006c0061006e006e0069006e00670100000374000001890000000000000000fb00000044004d006f00740069006f006e0050006c0061006e006e0069006e00670020002d0020005400720061006a006500630074006f0072007900200053006c00690064006500720100000148000000410000004100fffffffb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e0067010000018f000001880000017d00ffffff00000539000002da00000001000000020000000100000002fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
Views: Views:
collapsed: false collapsed: false
Width: 1291 Width: 1842
X: 454 X: 72
Y: 27 Y: 27

View file

@ -6,10 +6,12 @@
<arg name="robot_description" default="robot_description"/> <arg name="robot_description" default="robot_description"/>
<!-- Load universal robot description format (URDF) --> <!-- Load universal robot description format (URDF) -->
<param if="$(arg load_robot_description)" name="$(arg robot_description)" textfile="$(find mycobot_description)/urdf/mycobot_320_m5_2020/mycobot_pro_320_m5_2020_gripper.urdf"/> <!-- <param if="$(arg load_robot_description)" name="$(arg robot_description)" textfile="$(find mycobot_description)/urdf/mycobot_320_m5_2020/mycobot_pro_320_m5_2020_gripper.urdf"/> -->
<param if="$(arg load_robot_description)" name="$(arg robot_description)" textfile="$(find mycobot_description)/urdf/mycobot_pro_630/mycobot_630_gripper.urdf"/>
<!-- The semantic description that corresponds to the URDF --> <!-- The semantic description that corresponds to the URDF -->
<param name="$(arg robot_description)_semantic" textfile="$(find mycobot_320_gripper_moveit)/config/firefighter.srdf" /> <!-- <param name="$(arg robot_description)_semantic" textfile="$(find mycobot_320_gripper_moveit)/config/firefighter.srdf" /> -->
<param name="$(arg robot_description)_semantic" textfile="$(find new_mycobot_630_gripper_moveit)/config/firefighter.srdf" />
<!-- Load updated joint limits (override information from URDF) --> <!-- Load updated joint limits (override information from URDF) -->
<group ns="$(arg robot_description)_planning"> <group ns="$(arg robot_description)_planning">

View file

@ -8,7 +8,16 @@ Passable parameters:
port: serial prot string. Defaults is '/dev/ttyUSB0' port: serial prot string. Defaults is '/dev/ttyUSB0'
baud: serial prot baudrate. Defaults is 115200. baud: serial prot baudrate. Defaults is 115200.
""" """
from socket import *
import math
import sys
import time
from multiprocessing import Lock
import rospy
from sensor_msgs.msg import JointState
from pymycobot.elephantrobot import ElephantRobot
import rospy import rospy
import time import time
from sensor_msgs.msg import JointState from sensor_msgs.msg import JointState
@ -38,17 +47,24 @@ def callback(data):
def listener(): def listener():
global mc global mc
global gripper_value global gripper_value
rospy.init_node("control_slider", anonymous=True) rospy.init_node("control_slider", anonymous=True)
ip = rospy.get_param("~ip", "192.168.1.161")
port = rospy.get_param("~port", 5001)
print (ip, port)
mc = ElephantRobot(ip, int(port))
# START CLIENT,启动客户端
res = mc.start_client()
if res != "":
sys.exit(1)
mc.set_speed(90)
rospy.Subscriber("joint_states", JointState, callback) rospy.Subscriber("joint_states", JointState, callback)
port = rospy.get_param("~port", "/dev/ttyUSB0")
baud = rospy.get_param("~baud", 115200)
print(port, baud)
mc = MyCobot(port, baud)
# spin() simply keeps python from exiting until this node is stopped # spin() simply keeps python from exiting until this node is stopped
print("spin ...") # spin()只是阻止python退出直到该节点停止
print ("sping ...")
rospy.spin() rospy.spin()

View file

@ -0,0 +1,102 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from socket import *
import math
import sys
import time
from multiprocessing import Lock
import numpy as np
import rospy
from sensor_msgs.msg import JointState
from pymycobot.elephantrobot import ElephantRobot
global mc
gripper_value = []
def linear_mapping(value, input_start, input_end, output_start, output_end):
"""
Maps a value from one range to another using a linear transformation.
Args:
value (float): The input value to be mapped.
input_start (float): The start of the input range.
input_end (float): The end of the input range.
output_start (float): The start of the output range.
output_end (float): The end of the output range.
Returns:
float: The mapped value in the output range.
"""
# Calculate the slope of the linear function
slope = (output_end - output_start) / (input_end - input_start)
# Calculate the mapped value
mapped_value = output_start + slope * (value - input_start)
return mapped_value
def callback(data):
"""callback function,回调函数"""
# rospy.loginfo(rospy.get_caller_id() + "%s", data.position)
data_list = []
for index, value in enumerate(data.position):
radians_to_angles = round(math.degrees(value), 2)
data_list.append(radians_to_angles)
rospy.loginfo(rospy.get_caller_id() + "%s", data_list)
# mc.write_angles(data_list, 800)
list_i = []
for i in data_list[:6]:
list_i.append(i)
mc.write_angles(list_i,800)
list_j = []
for j in data_list[6:]:
list_j.append(j)
# list_j = [int(a) for a in list_j]
mc.set_gripper_mode(0)
# Define the input and output ranges
input_start = 17
input_end = -40
output_start = 100
output_end = 0
num = [linear_mapping(value, input_start, input_end, output_start, output_end) for value in list_j]
num2 = [int(i) for i in num]
num2 = num2[1]
mc.set_gripper_value(num2,100)
rospy.loginfo(num2)
def listener():
global mc
global gripper_value
rospy.init_node("control_slider", anonymous=True)
ip = rospy.get_param("~ip", "192.168.1.161")
port = rospy.get_param("~port", 5001)
print (ip, port)
mc = ElephantRobot(ip, int(port))
# START CLIENT,启动客户端
res = mc.start_client()
if res != "":
sys.exit(1)
mc.set_speed(90)
rospy.Subscriber("joint_states", JointState, callback)
# spin() simply keeps python from exiting until this node is stopped
# spin()只是阻止python退出直到该节点停止
print ("sping ...")
rospy.spin()
if __name__ == "__main__":
listener()

View file

@ -0,0 +1,35 @@
from pymycobot.elephantrobot import ElephantRobot
import time
global mc
mc = ElephantRobot("192.168.1.161",5001)
# 启动机器人必要指令
mc.start_client()
time.sleep(1)
mc.set_gripper_mode(0)
time.sleep(1)
# mc.power_off()#夹爪透传换IO模式时需要先关闭机器再重启机器人一次仅使用夹爪透传模式不必关闭机器人
# mc.state_off()
# time.sleep(3)
# mc.power_on()
# time.sleep(3)
# mc.state_on()
# time.sleep(3)
# mc.set_gripper_mode(0)
mc.set_gripper_calibrate()
# #透传模式
# for i in range(3):
# mc.set_gripper_value(46, 20)
# time.sleep(1)
# mc.set_gripper_value(96, 20)
# time.sleep(1)

View file

@ -291,8 +291,8 @@
<limit effort = "1000.0" lower = "-3.14" upper = "3.14" velocity = "0"/> <limit effort = "1000.0" lower = "-3.14" upper = "3.14" velocity = "0"/>
<parent link="link1"/> <parent link="link1"/>
<child link="link2"/> <child link="link2"/>
<!-- <origin xyz= "0 0 0" rpy = "1.5708 -1.5708 0"/> --> <!-- <origin xyz= "0 0 0" rpy = "1.5708 0 0"/> -->
<origin xyz= "0 0.04 0.085" rpy = "1.5708 0 0"/> <origin xyz= "0 0.04 0.085" rpy = "1.5706 1.5706 0"/>
</joint> </joint>
@ -310,8 +310,8 @@
<limit effort = "1000.0" lower = "-2.97" upper = "2.97" velocity = "0"/> <limit effort = "1000.0" lower = "-2.97" upper = "2.97" velocity = "0"/>
<parent link="link3"/> <parent link="link3"/>
<child link="link4"/> <child link="link4"/>
<!-- <origin xyz= "0.25 0 -0.1091" rpy = "0 0 1.5708"/> --> <!-- <origin xyz= "0.25 0 -0.1091" rpy = "0 0 0"/> -->
<origin xyz= "0 0.25 0.025" rpy = "0 0 0"/> <origin xyz= "0 0.25 0.025" rpy = "0 0 -1.5706"/>
</joint> </joint>
<joint name="joint6_to_joint5" type="revolute"> <joint name="joint6_to_joint5" type="revolute">
@ -330,7 +330,7 @@
<origin xyz= "-0.076 0 0.05" rpy = "-1.57080 0 0 "/> <origin xyz= "-0.076 0 0.05" rpy = "-1.57080 0 0 "/>
</joint> </joint>
<joint name="joint6output_to_tool1" type="revolute"> <joint name="joint6output_to_tool1" type="fixed">
<axis xyz="0 1 0"/> <axis xyz="0 1 0"/>
<limit effort = "1000.0" lower = "-3.05" upper = "3.05" velocity = "0"/> <limit effort = "1000.0" lower = "-3.05" upper = "3.05" velocity = "0"/>
<parent link="link6" /> <parent link="link6" />

View file

@ -378,39 +378,39 @@
<joint name="joint1_to_base" type="revolute"> <joint name="joint1_to_base" type="revolute">
<axis xyz="0 0 -1" /> <axis xyz="0 0 1" />
<limit effort="1000.0" lower="-3.14" upper="3.14159" velocity="0" /> <limit effort="1000.0" lower="-3.14" upper="3.14159" velocity="0" />
<parent link="base" /> <parent link="base" />
<child link="joint1" /> <child link="joint1" />
<origin xyz="0 0 0.16034" rpy="0 0 0" /> <origin xyz="0 0 0.16034" rpy="0 0 0" />
</joint> </joint>
<joint name="joint2_to_joint1" type="revolute"> <joint name="joint2_to_joint1" type="revolute">
<axis xyz="0 0 -1" /> <axis xyz="0 0 1" />
<limit effort="1000.0" lower="-3.14" upper="3.14" velocity="0" /> <limit effort="1000.0" lower="-3.14" upper="3.14" velocity="0" />
<parent link="joint1" /> <parent link="joint1" />
<child link="joint2" /> <child link="joint2" />
<origin xyz="0 0.06 0.038" rpy="1.5707 0 3.14159" /> <origin xyz="0 0.06 0.038" rpy="1.5707 -1.5706 3.14159" />
</joint> </joint>
<joint name="joint3_to_joint2" type="revolute"> <joint name="joint3_to_joint2" type="revolute">
<axis xyz=" 0 0 -1" /> <axis xyz=" 0 0 1" />
<limit effort="1000.0" lower="-3.14" upper="3.14" velocity="0" /> <limit effort="1000.0" lower="-3.14" upper="3.14" velocity="0" />
<parent link="joint2" /> <parent link="joint2" />
<child link="joint3" /> <child link="joint3" />
<origin xyz="0 0.2685 0 " rpy="0 0 0" /> <origin xyz="0 0.2685 0 " rpy="0 0 0" />
</joint> </joint>
<joint name="joint4_to_joint3" type="revolute"> <joint name="joint4_to_joint3" type="revolute">
<axis xyz=" 0 0 -1" /> <axis xyz=" 0 0 1" />
<limit effort="1000.0" lower="-3.14" upper="3.14" velocity="0" /> <limit effort="1000.0" lower="-3.14" upper="3.14" velocity="0" />
<parent link="joint3" /> <parent link="joint3" />
<child link="joint4" /> <child link="joint4" />
<origin xyz="0 0.2663 0 " rpy="0 0 0" /> <origin xyz="0 0.2663 0 " rpy="0 0 1.5706" />
</joint> </joint>
<joint name="joint5_to_joint4" type="revolute"> <joint name="joint5_to_joint4" type="revolute">
<axis xyz="0 0 1" /> <axis xyz="0 0 1" />
<limit effort="1000.0" lower="-2.99" upper="2.99" velocity="0" /> <limit effort="1000.0" lower="-2.99" upper="2.99" velocity="0" />
<parent link="joint4" /> <parent link="joint4" />
<child link="joint5" /> <child link="joint5" />
<origin xyz="0 0.055 0.039" rpy="1.5707 -1.5707 0" /> <origin xyz="0 0.055 0.039" rpy="1.5707 0 0" />
</joint> </joint>
<joint name="joint6_to_joint5" type="revolute"> <joint name="joint6_to_joint5" type="revolute">
<axis xyz="1 0 0" /> <axis xyz="1 0 0" />
@ -420,7 +420,7 @@
<origin xyz="0 0.04 -0.0385" rpy="-1.5707 0 1.5706 " /> <origin xyz="0 0.04 -0.0385" rpy="-1.5707 0 1.5706 " />
</joint> </joint>
<joint name="joint6output_to_tool1" type="revolute"> <joint name="joint6output_to_tool1" type="fixed">
<axis xyz="0 1 0"/> <axis xyz="0 1 0"/>
<limit effort = "1000.0" lower = "-3.05" upper = "3.05" velocity = "0"/> <limit effort = "1000.0" lower = "-3.05" upper = "3.05" velocity = "0"/>
<parent link="joint6" /> <parent link="joint6" />

View file

@ -246,7 +246,7 @@ Visualization Manager:
Views: Views:
Current: Current:
Class: rviz/Orbit Class: rviz/Orbit
Distance: 0.6429708003997803 Distance: 1.742307186126709
Enable Stereo Rendering: Enable Stereo Rendering:
Stereo Eye Separation: 0.05999999865889549 Stereo Eye Separation: 0.05999999865889549
Stereo Focal Distance: 1 Stereo Focal Distance: 1
@ -254,17 +254,17 @@ Visualization Manager:
Value: false Value: false
Field of View: 0.7853981852531433 Field of View: 0.7853981852531433
Focal Point: Focal Point:
X: 0.05385429784655571 X: -0.07060671597719193
Y: 0.09180382639169693 Y: 0.09759367257356644
Z: 0.726940929889679 Z: 0.5344932079315186
Focal Shape Fixed Size: true Focal Shape Fixed Size: true
Focal Shape Size: 0.05000000074505806 Focal Shape Size: 0.05000000074505806
Invert Z Axis: false Invert Z Axis: false
Name: Current View Name: Current View
Near Clip Distance: 0.009999999776482582 Near Clip Distance: 0.009999999776482582
Pitch: 0.2553977966308594 Pitch: 0.4803977310657501
Target Frame: <Fixed Frame> Target Frame: <Fixed Frame>
Yaw: 2.845386028289795 Yaw: 3.7303872108459473
Saved: ~ Saved: ~
Window Geometry: Window Geometry:
Displays: Displays:

View file

@ -0,0 +1,11 @@
<launch>
<arg name="model" default="$(find mycobot_description)/urdf/mycobot_pro_600/mycobot_pro_600_moveit.urdf"/>
<arg name="rvizconfig" default="$(find mycobot_600)/config/mycobot_600.rviz" />
<param name="robot_description" command="$(find xacro)/xacro --inorder $(arg model)" />
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" >
<rosparam param="source_list" subst_value="true">["joint_states"]</rosparam>
</node>
<node name="rviz" pkg="rviz" type="rviz" args="-d $(arg rvizconfig)" required="true" />
</launch>

View file

@ -0,0 +1,105 @@
#!/usr/bin/env python2
# -*- coding:utf-8 -*-
from cgi import print_environ
import time
import rospy
from sensor_msgs.msg import JointState
from std_msgs.msg import Header
from visualization_msgs.msg import Marker
from pymycobot.mycobot import MyCobot
def talker():
rospy.init_node("display", anonymous=True)
print("Try connect real mycobot...")
port = rospy.get_param("~port", "/dev/ttyUSB0")
baud = rospy.get_param("~baud", 115200)
print("port: {}, baud: {}\n".format(port, baud))
try:
mycobot = MyCobot(port, baud)
except Exception as e:
print(e)
print(
"""\
\rTry connect mycobot failed!
\rPlease check wether connected with mycobot.
\rPlease chckt wether the port or baud is right.
"""
)
exit(1)
mycobot.release_all_servos()
time.sleep(0.1)
print("Rlease all servos over.\n")
pub = rospy.Publisher("joint_states", JointState, queue_size=10)
pub_marker = rospy.Publisher("visualization_marker", Marker, queue_size=10)
rate = rospy.Rate(30) # 30hz
# pub joint state
joint_state_send = JointState()
joint_state_send.header = Header()
joint_state_send.name = [
"joint2_to_joint1",
"joint3_to_joint2",
"joint4_to_joint3",
"joint5_to_joint4",
"joint6_to_joint5",
"joint6output_to_joint6",
]
joint_state_send.velocity = [0]
joint_state_send.effort = []
marker_ = Marker()
marker_.header.frame_id = "/joint1"
marker_.ns = "my_namespace"
print("publishing ...")
while not rospy.is_shutdown():
joint_state_send.header.stamp = rospy.Time.now()
angles = mycobot.get_radians()
data_list = []
for index, value in enumerate(angles):
data_list.append(value)
# rospy.loginfo('{}'.format(data_list))
joint_state_send.position = data_list
pub.publish(joint_state_send)
coords = mycobot.get_coords()
# marker
marker_.header.stamp = rospy.Time.now()
marker_.type = marker_.SPHERE
marker_.action = marker_.ADD
marker_.scale.x = 0.04
marker_.scale.y = 0.04
marker_.scale.z = 0.04
# marker position initial
if not coords:
coords = [0, 0, 0, 0, 0, 0]
rospy.loginfo("error [101]: can not get coord values")
marker_.pose.position.x = coords[1] / 1000 * -1
marker_.pose.position.y = coords[0] / 1000
marker_.pose.position.z = coords[2] / 1000
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,23 @@
from pymycobot import ElephantRobot
import time
if __name__=='__main__':
# "Connect to robot server"
elephant_client = ElephantRobot("192.168.1.6", 5001)
# "Enable TCP communication"
elephant_client.start_client()
# "Setting"
# elephant_client.set_speed(20) # set speed(20%)
# elephant_client.set_payload(2.0) # set payload(2.0Kg)
# "Power on the robot"
# elephant_client.power_on()
# "Start the system"
# elephant_client.state_on()
# "test move"
elephant_client.write_coords([-108, -140, 620, 88, -2, -37], 3000)
elephant_client.wait(3)
elephant_client.command_wait_done()

0
mycobot_pro/mycobot_600_gripper_moveit/CMakeLists.txt Normal file → Executable file
View file

View file

View file

View file

@ -1,7 +1,14 @@
controller_list: controller_list:
- name: fake_arm_controller - name: fake_arm_group_controller
type: $(arg fake_execution_type) type: $(arg fake_execution_type)
joints: joints:
# - joint2_to_joint1
# - joint3_to_joint2
# - joint4_to_joint3
# - joint5_to_joint4
# - joint6_to_joint5
# - joint6output_to_joint6
- joint2_to_joint1 - joint2_to_joint1
- joint3_to_joint2 - joint3_to_joint2
- joint4_to_joint3 - joint4_to_joint3
@ -9,12 +16,12 @@ controller_list:
- joint6_to_joint5 - joint6_to_joint5
- joint6output_to_joint6 - joint6output_to_joint6
- joint6output_to_tool1 - joint6output_to_tool1
- name: fake_gripper_controller - name: fake_gripper_group_controller
type: $(arg fake_execution_type) type: $(arg fake_execution_type)
joints: joints:
- gripper_controller - gripper_controller
initial: # Define initial robot poses per group # initial: # Define initial robot poses per group
# - group: arm # - group: arm_group
# pose: home # pose: init_pose
# - group: gripper_group
[] # pose: init_gripper

View file

@ -9,30 +9,136 @@
<!--JOINTS: When a joint is specified, the child link of that joint (which will always exist) is automatically included--> <!--JOINTS: When a joint is specified, the child link of that joint (which will always exist) is automatically included-->
<!--CHAINS: When a chain is specified, all the links along the chain (including endpoints) are included in the group. Additionally, all the joints that are parents to included links are also included. This means that joints along the chain and the parent joint of the base link are included in the group--> <!--CHAINS: When a chain is specified, all the links along the chain (including endpoints) are included in the group. Additionally, all the joints that are parents to included links are also included. This means that joints along the chain and the parent joint of the base link are included in the group-->
<!--SUBGROUPS: Groups can also be formed by referencing to already defined group names--> <!--SUBGROUPS: Groups can also be formed by referencing to already defined group names-->
<group name="arm"> <group name="arm_group">
<joint name="joint2_to_joint1"/> <chain base_link="base" tip_link="link6"/>
<joint name="joint3_to_joint2"/>
<joint name="joint4_to_joint3"/>
<joint name="joint5_to_joint4"/>
<joint name="joint6_to_joint5"/>
<joint name="joint6output_to_joint6"/>
<joint name="joint6output_to_tool1"/>
<joint name="tool1_to_tool2"/>
</group> </group>
<group name="gripper"> <group name="gripper_group">
<joint name="tool2_to_gripper_base"/> <chain base_link="gripper_base" tip_link="gripper_left3"/>
<joint name="gripper_base_to_gripper_left2"/>
<joint name="gripper_base_to_gripper_right2"/>
<joint name="gripper_base_to_gripper_right3"/>
<joint name="gripper_right3_to_gripper_right1"/>
<joint name="gripper_controller"/>
<joint name="gripper_left3_to_gripper_left1"/>
</group> </group>
<!--GROUP STATES: Purpose: Define a named state for a particular group, in terms of joint values. This is useful to define states like 'folded arms'-->
<group_state name="init_pose" group="arm_group">
<joint name="joint2_to_joint1" value="0"/>
<joint name="joint3_to_joint2" value="0"/>
<joint name="joint4_to_joint3" value="0"/>
<joint name="joint5_to_joint4" value="0"/>
<joint name="joint6_to_joint5" value="0"/>
<joint name="joint6output_to_joint6" value="0"/>
</group_state>
<!-- <group_state name="init_gripper" group="gripper_group">
<joint name="gripper_controller" value="0"/>
</group_state> -->
<!--END EFFECTOR: Purpose: Represent information about an end effector.--> <!--END EFFECTOR: Purpose: Represent information about an end effector.-->
<end_effector name="hand" parent_link="tool2" group="gripper"/> <end_effector name="gripper" parent_link="link6" group="gripper_group" parent_group="arm_group"/>
<!--VIRTUAL JOINT: Purpose: this element defines a virtual joint between a robot link and an external frame of reference (considered fixed with respect to the robot)-->
<virtual_joint name="virtual_joint" type="fixed" parent_frame="world" child_link="base"/>
<!--PASSIVE JOINT: Purpose: this element is used to mark joints that are not actuated-->
<passive_joint name="gripper_base_to_gripper_left2"/>
<passive_joint name="gripper_base_to_gripper_right2"/>
<passive_joint name="gripper_base_to_gripper_right3"/>
<passive_joint name="gripper_right3_to_gripper_right1"/>
<passive_joint name="gripper_left3_to_gripper_left1"/>
<!--DISABLE COLLISIONS: By default it is assumed that any link of the robot could potentially come into collision with any other link in the robot. This tag disables collision checking between a specified pair of links. --> <!--DISABLE COLLISIONS: By default it is assumed that any link of the robot could potentially come into collision with any other link in the robot. This tag disables collision checking between a specified pair of links. -->
<!-- <disable_collisions link1="base" link2="gripper_base" reason="Default"/>
<disable_collisions link1="base" link2="gripper_left1" reason="Default"/>
<disable_collisions link1="base" link2="gripper_left2" reason="Default"/>
<disable_collisions link1="base" link2="gripper_left3" reason="Default"/>
<disable_collisions link1="base" link2="gripper_right1" reason="Default"/>
<disable_collisions link1="base" link2="gripper_right2" reason="Default"/>
<disable_collisions link1="base" link2="gripper_right3" reason="Default"/>
<disable_collisions link1="base" link2="link1" reason="Adjacent"/> <disable_collisions link1="base" link2="link1" reason="Adjacent"/>
<disable_collisions link1="base" link2="link2" reason="Never"/> <disable_collisions link1="base" link2="link2" reason="Never"/>
<disable_collisions link1="base" link2="link3" reason="Never"/>
<disable_collisions link1="base" link2="link4" reason="Never"/>
<disable_collisions link1="base" link2="link5" reason="Never"/>
<disable_collisions link1="base" link2="link6" reason="Never"/>
<disable_collisions link1="gripper_base" link2="gripper_left1" reason="Never"/>
<disable_collisions link1="gripper_base" link2="gripper_left2" reason="Adjacent"/>
<disable_collisions link1="gripper_base" link2="gripper_left3" reason="Adjacent"/>
<disable_collisions link1="gripper_base" link2="gripper_right1" reason="Never"/>
<disable_collisions link1="gripper_base" link2="gripper_right2" reason="Adjacent"/>
<disable_collisions link1="gripper_base" link2="gripper_right3" reason="Adjacent"/>
<disable_collisions link1="gripper_base" link2="link1" reason="Never"/>
<disable_collisions link1="gripper_base" link2="link2" reason="Never"/>
<disable_collisions link1="gripper_base" link2="link3" reason="Never"/>
<disable_collisions link1="gripper_base" link2="link4" reason="Never"/>
<disable_collisions link1="gripper_base" link2="link5" reason="Never"/>
<disable_collisions link1="gripper_base" link2="link6" reason="Adjacent"/>
<disable_collisions link1="gripper_left1" link2="gripper_left2" reason="Default"/>
<disable_collisions link1="gripper_left1" link2="gripper_left3" reason="Adjacent"/>
<disable_collisions link1="gripper_left1" link2="gripper_right1" reason="Never"/>
<disable_collisions link1="gripper_left1" link2="gripper_right2" reason="Never"/>
<disable_collisions link1="gripper_left1" link2="gripper_right3" reason="Never"/>
<disable_collisions link1="gripper_left1" link2="link1" reason="Never"/>
<disable_collisions link1="gripper_left1" link2="link2" reason="Never"/>
<disable_collisions link1="gripper_left1" link2="link3" reason="Never"/>
<disable_collisions link1="gripper_left1" link2="link4" reason="Never"/>
<disable_collisions link1="gripper_left1" link2="link5" reason="Never"/>
<disable_collisions link1="gripper_left1" link2="link6" reason="Never"/>
<disable_collisions link1="gripper_left2" link2="gripper_left3" reason="Default"/>
<disable_collisions link1="gripper_left2" link2="gripper_right1" reason="Never"/>
<disable_collisions link1="gripper_left2" link2="gripper_right2" reason="Never"/>
<disable_collisions link1="gripper_left2" link2="gripper_right3" reason="Never"/>
<disable_collisions link1="gripper_left2" link2="link1" reason="Never"/>
<disable_collisions link1="gripper_left2" link2="link2" reason="Never"/>
<disable_collisions link1="gripper_left2" link2="link3" reason="Never"/>
<disable_collisions link1="gripper_left2" link2="link4" reason="Never"/>
<disable_collisions link1="gripper_left2" link2="link5" reason="Never"/>
<disable_collisions link1="gripper_left2" link2="link6" reason="Never"/>
<disable_collisions link1="gripper_left3" link2="gripper_right1" reason="Never"/>
<disable_collisions link1="gripper_left3" link2="gripper_right2" reason="Never"/>
<disable_collisions link1="gripper_left3" link2="gripper_right3" reason="Default"/>
<disable_collisions link1="gripper_left3" link2="link1" reason="Never"/>
<disable_collisions link1="gripper_left3" link2="link2" reason="Never"/>
<disable_collisions link1="gripper_left3" link2="link3" reason="Never"/>
<disable_collisions link1="gripper_left3" link2="link4" reason="Never"/>
<disable_collisions link1="gripper_left3" link2="link5" reason="Never"/>
<disable_collisions link1="gripper_left3" link2="link6" reason="Never"/>
<disable_collisions link1="gripper_right1" link2="gripper_right2" reason="Default"/>
<disable_collisions link1="gripper_right1" link2="gripper_right3" reason="Adjacent"/>
<disable_collisions link1="gripper_right1" link2="link1" reason="Never"/>
<disable_collisions link1="gripper_right1" link2="link2" reason="Never"/>
<disable_collisions link1="gripper_right1" link2="link3" reason="Never"/>
<disable_collisions link1="gripper_right1" link2="link4" reason="Never"/>
<disable_collisions link1="gripper_right1" link2="link5" reason="Never"/>
<disable_collisions link1="gripper_right1" link2="link6" reason="Never"/>
<disable_collisions link1="gripper_right2" link2="gripper_right3" reason="Never"/>
<disable_collisions link1="gripper_right2" link2="link1" reason="Never"/>
<disable_collisions link1="gripper_right2" link2="link2" reason="Never"/>
<disable_collisions link1="gripper_right2" link2="link3" reason="Never"/>
<disable_collisions link1="gripper_right2" link2="link4" reason="Never"/>
<disable_collisions link1="gripper_right2" link2="link5" reason="Never"/>
<disable_collisions link1="gripper_right2" link2="link6" reason="Never"/>
<disable_collisions link1="gripper_right3" link2="link1" reason="Never"/>
<disable_collisions link1="gripper_right3" link2="link2" reason="Never"/>
<disable_collisions link1="gripper_right3" link2="link3" reason="Never"/>
<disable_collisions link1="gripper_right3" link2="link4" reason="Never"/>
<disable_collisions link1="gripper_right3" link2="link5" reason="Never"/>
<disable_collisions link1="gripper_right3" link2="link6" reason="Never"/>
<disable_collisions link1="link1" link2="link2" reason="Adjacent"/>
<disable_collisions link1="link1" link2="link3" reason="Never"/>
<disable_collisions link1="link1" link2="link4" reason="Never"/>
<disable_collisions link1="link1" link2="link5" reason="Never"/>
<disable_collisions link1="link1" link2="link6" reason="Never"/>
<disable_collisions link1="link2" link2="link3" reason="Adjacent"/>
<disable_collisions link1="link2" link2="link4" reason="Never"/>
<disable_collisions link1="link2" link2="link5" reason="Never"/>
<disable_collisions link1="link2" link2="link6" reason="Never"/>
<disable_collisions link1="link3" link2="link4" reason="Adjacent"/>
<disable_collisions link1="link3" link2="link5" reason="Never"/>
<disable_collisions link1="link3" link2="link6" reason="Never"/>
<disable_collisions link1="link4" link2="link5" reason="Adjacent"/>
<disable_collisions link1="link5" link2="link6" reason="Adjacent"/> -->
<disable_collisions link1="base" link2="link1" reason="Adjacent"/>
<disable_collisions link1="base" link2="link2" reason="Never"/>
<disable_collisions link1="base" link2="gripper_base" reason="Never"/>
<disable_collisions link1="base" link2="gripper_left3" reason="Never"/>
<disable_collisions link1="base" link2="gripper_right3" reason="Never"/>
<!-- <disable_collisions link1="base" link2="gripper_base" reason="Default"/>
<disable_collisions link1="base" link2="gripper_base" reason="Default"/>
<disable_collisions link1="base" link2="gripper_base" reason="Default"/>
<disable_collisions link1="base" link2="gripper_base" reason="Default"/> -->
<disable_collisions link1="gripper_base" link2="gripper_left1" reason="Never"/> <disable_collisions link1="gripper_base" link2="gripper_left1" reason="Never"/>
<disable_collisions link1="gripper_base" link2="gripper_left2" reason="Adjacent"/> <disable_collisions link1="gripper_base" link2="gripper_left2" reason="Adjacent"/>
<disable_collisions link1="gripper_base" link2="gripper_left3" reason="Adjacent"/> <disable_collisions link1="gripper_base" link2="gripper_left3" reason="Adjacent"/>

View file

View file

@ -1,579 +0,0 @@
<?xml version="1.0" ?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="firefighter">
<xacro:property name="width" value=".2" />
<link name="base">
<visual>
<geometry>
<!--- 0.0 0 -0.04 1.5708 3.14159-->
<mesh filename="package://mycobot_description/urdf/mycobot_pro_600/J1-mm.dae" />
</geometry>
<origin xyz="0 0 0 " rpy=" 0 0 0" />
</visual>
<collision>
<geometry>
<!--- 0.0 0 -0.04 1.5708 3.14159-->
<mesh filename="package://mycobot_description/urdf/mycobot_pro_600/J1-mm.dae" />
</geometry>
<origin xyz="0 0 0 " rpy=" 0 0 0" />
</collision>
<inertial>
<mass value="0.1" />
<origin xyz="0 0 0" rpy="0 0 0" />
<inertia ixx="0.03" iyy="0.03" izz="0.03" ixy="0.0" ixz="0.0" iyz="0.0" />
</inertial>
</link>
<link name="link1">
<visual>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_pro_600/J2-mm.dae" />
</geometry>
<origin xyz="0 0 0 " rpy="0 0 0" />
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_pro_600/J2-mm.dae" />
</geometry>
<origin xyz="0 0 0 " rpy=" 0 0 0" />
</collision>
<inertial>
<mass value="0.1" />
<origin xyz="0 0 0" rpy="0 0 0" />
<inertia ixx="0.03" iyy="0.03" izz="0.03" ixy="0.0" ixz="0.0" iyz="0.0" />
</inertial>
</link>
<link name="link2">
<visual>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_pro_600/J3-mm.dae" />
</geometry>
<origin xyz="0 0.0 0.0 " rpy=" 3.1415926 0 3.1415926" />
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_pro_600/J3-mm.dae" />
</geometry>
<origin xyz="0 0.0 0.0 " rpy=" 3.1415926 0 3.1415926" />
</collision>
<inertial>
<mass value="0.1" />
<origin xyz="0 0 0" rpy="0 0 0" />
<inertia ixx="0.03" iyy="0.03" izz="0.03" ixy="0.0" ixz="0.0" iyz="0.0" />
</inertial>
</link>
<link name="link3">
<visual>
<geometry>
<!--- 0.0 0 -0.04 -->
<mesh filename="package://mycobot_description/urdf/mycobot_pro_600/J4-mm.dae" />
</geometry>
<origin xyz="0 0 0.0 " rpy=" 3.1415926 3.14159 3.1415926" />
</visual>
<collision>
<geometry>
<!--- 0.0 0 -0.04 -->
<mesh filename="package://mycobot_description/urdf/mycobot_pro_600/J4-mm.dae" />
</geometry>
<origin xyz="0 0 0.0 " rpy="3.1415926 03.14159 3.1415926" />
</collision>
<inertial>
<mass value="0.1" />
<origin xyz="0 0 0" rpy="0 0 0" />
<inertia ixx="0.03" iyy="0.03" izz="0.03" ixy="0.0" ixz="0.0" iyz="0.0" />
</inertial>
</link>
<link name="link4">
<visual>
<geometry>
<!--- 0.0 0 -0.04 -->
<mesh filename="package://mycobot_description/urdf/mycobot_pro_600/J5-mm.dae" />
</geometry>
<origin xyz="0 0 0 " rpy=" 0 3.1415926 0" />
</visual>
<collision>
<geometry>
<!--- 0.0 0 -0.04 -->
<mesh filename="package://mycobot_description/urdf/mycobot_pro_600/J5-mm.dae" />
</geometry>
<origin xyz="0 0 0 " rpy=" 0 3.1415926 0" />
</collision>
<inertial>
<mass value="0.1" />
<origin xyz="0 0 0" rpy="0 0 0" />
<inertia ixx="0.03" iyy="0.03" izz="0.03" ixy="0.0" ixz="0.0" iyz="0.0" />
</inertial>
</link>
<link name="link5">
<visual>
<geometry>
<!--- 0.0 0 -0.04 -->
<mesh filename="package://mycobot_description/urdf/mycobot_pro_600/J6-mm.dae" />
</geometry>
<origin xyz="0 0 0 " rpy=" 0 0 -1.5706" />
</visual>
<collision>
<geometry>
<!--- 0.0 0 -0.04 -->
<mesh filename="package://mycobot_description/urdf/mycobot_pro_600/J6-mm.dae" />
</geometry>
<origin xyz="0 0 0 " rpy=" 0 0 -1.5706" />
</collision>
<inertial>
<mass value="0.1" />
<origin xyz="0 0 0" rpy="0 0 0" />
<inertia ixx="0.03" iyy="0.03" izz="0.03" ixy="0.0" ixz="0.0" iyz="0.0" />
</inertial>
</link>
<link name="link6">
<visual>
<geometry>
<!--- 0.0 0 -0.04 -->
<mesh filename="package://mycobot_description/urdf/mycobot_pro_600/J6-tool-mm.dae" />
</geometry>
<material name="grey">
<color rgba="0.5 0.5 0.5 1" />
</material>
<origin xyz="0.02 0 0" rpy=" 0 -1.5707 0" />
</visual>
<collision>
<geometry>
<!--- 0.0 0 -0.04 -->
<mesh filename="package://mycobot_description/urdf/mycobot_pro_600/J6-tool-mm.dae" />
</geometry>
<material name="grey">
<color rgba="0.5 0.5 0.5 1" />
</material>
<origin xyz="0.02 0 0" rpy=" 0 -1.5707 0" />
</collision>
<inertial>
<mass value="0.1" />
<origin xyz="0 0 0" rpy="0 0 0" />
<inertia ixx="0.03" iyy="0.03" izz="0.03" ixy="0.0" ixz="0.0" iyz="0.0" />
</inertial>
</link>
<link name="tool1">
<visual>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_pro_600/tool1-mm.dae" />
</geometry>
<origin xyz="0.0 0 0" rpy=" -1.5706 0 0" />
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_pro_600/tool1-mm.dae" />
</geometry>
<origin xyz="0.0 0 0" rpy=" -1.5706 0 0" />
</collision>
<inertial>
<mass value="0.1" />
<origin xyz="0 0 0" rpy="0 0 0" />
<inertia ixx="0.03" iyy="0.03" izz="0.03" ixy="0.0" ixz="0.0" iyz="0.0" />
</inertial>
</link>
<link name="tool2">
<visual>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_pro_600/tool2-mm.dae" />
</geometry>
<origin xyz="0.0 0 0" rpy=" 0 0 -1.5706" />
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_pro_600/tool2-mm.dae" />
</geometry>
<origin xyz="0.0 0 0" rpy=" 0 0 -1.5706" />
</collision>
<inertial>
<mass value="0.1" />
<origin xyz="0 0 0" rpy="0 0 0" />
<inertia ixx="0.03" iyy="0.03" izz="0.03" ixy="0.0" ixz="0.0" iyz="0.0" />
</inertial>
</link>
<link name="gripper_base">
<visual>
<geometry>
<!--- 0.0 0 -0.04 -->
<mesh filename="package://mycobot_description/urdf/mycobot_320_m5_2022/gripper_base.dae" />
</geometry>
<origin xyz="-0.02 0.012 -0.018 " rpy=" 0 0 1.5708" />
</visual>
<collision>
<geometry>
<!--- 0.0 0 -0.04 -->
<mesh filename="package://mycobot_description/urdf/mycobot_320_m5_2022/gripper_base.dae" />
</geometry>
<origin xyz="-0.02 0.012 -0.018 " rpy=" 0 0 1.5708" />
</collision>
<inertial>
<mass value="0.1" />
<origin xyz="0 0 0" rpy="0 0 0" />
<inertia ixx="0.03" iyy="0.03" izz="0.03" ixy="0.0" ixz="0.0" iyz="0.0" />
</inertial>
</link>
<link name="gripper_left1">
<visual>
<geometry>
<!--- 0.0 0 -0.04 -->
<mesh filename="package://mycobot_description/urdf/mycobot_320_m5_2022/gripper_left1.dae" />
</geometry>
<origin xyz="0.036 -0.052 0.0 " rpy=" 0 0 1.5708" />
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_320_m5_2022/gripper_left1.dae" />
</geometry>
<origin xyz="0.036 -0.052 0.0 " rpy=" 0 0 1.5708" />
</collision>
<inertial>
<mass value="0.1" />
<origin xyz="0 0 0" rpy="0 0 0" />
<inertia ixx="0.03" iyy="0.03" izz="0.03" ixy="0.0" ixz="0.0" iyz="0.0" />
</inertial>
</link>
<link name="gripper_left2">
<visual>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_320_m5_2022/gripper_left2.dae" />
</geometry>
<origin xyz="0.03 0.024 -0.018 " rpy=" 0 0 1.5708" />
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_320_m5_2022/gripper_left2.dae" />
</geometry>
<origin xyz="0.03 0.024 -0.018 " rpy=" 0 0 1.5708" />
</collision>
<inertial>
<mass value="0.1" />
<origin xyz="0 0 0" rpy="0 0 0" />
<inertia ixx="0.03" iyy="0.03" izz="0.03" ixy="0.0" ixz="0.0" iyz="0.0" />
</inertial>
</link>
<link name="gripper_left3">
<visual>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_320_m5_2022/gripper_left3.dae" />
</geometry>
<origin xyz="0.034 0.0 -0.012 " rpy=" 0 3.14159 -1.5708" />
<!-- <origin xyz = "0.0 0 0 " rpy = " 0 0 0"/> -->
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_320_m5_2022/gripper_left3.dae" />
</geometry>
<origin xyz="0.034 0.0 -0.012 " rpy=" 0 3.14159 -1.5708" />
</collision>
<inertial>
<mass value="0.1" />
<origin xyz="0 0 0" rpy="0 0 0" />
<inertia ixx="0.03" iyy="0.03" izz="0.03" ixy="0.0" ixz="0.0" iyz="0.0" />
</inertial>
</link>
<link name="gripper_right1">
<visual>
<geometry>
<!--- 0.0 0 -0.04 -->
<mesh filename="package://mycobot_description/urdf/mycobot_320_m5_2022/gripper_right1.dae" />
</geometry>
<origin xyz="-0.072 -0.05 0.0 " rpy=" 0 0 1.5708" />
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_320_m5_2022/gripper_right1.dae" />
</geometry>
<origin xyz="-0.072 -0.05 0.0 " rpy=" 0 0 1.5708" />
</collision>
<inertial>
<mass value="0.1" />
<origin xyz="0 0 0" rpy="0 0 0" />
<inertia ixx="0.03" iyy="0.03" izz="0.03" ixy="0.0" ixz="0.0" iyz="0.0" />
</inertial>
</link>
<link name="gripper_right2">
<visual>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_320_m5_2022/gripper_right2.dae" />
</geometry>
<origin xyz="-0.066 0.023 -0.018 " rpy=" 0 0 1.5708" />
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_320_m5_2022/gripper_right2.dae" />
</geometry>
<origin xyz="-0.066 0.023 -0.018 " rpy=" 0 0 1.5708" />
</collision>
<inertial>
<mass value="0.1" />
<origin xyz="0 0 0" rpy="0 0 0" />
<inertia ixx="0.03" iyy="0.03" izz="0.03" ixy="0.0" ixz="0.0" iyz="0.0" />
</inertial>
</link>
<link name="gripper_right3">
<visual>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_320_m5_2022/gripper_right3.dae" />
</geometry>
<origin xyz="0 0.0 -0.012 " rpy=" 0 3.14159 -1.5708" />
</visual>
<collision>
<geometry>
<mesh filename="package://mycobot_description/urdf/mycobot_320_m5_2022/gripper_right3.dae" />
</geometry>
<origin xyz="0.0 0.0 -0.012 " rpy=" 0 3.14159 -1.5708" />
</collision>
<inertial>
<mass value="0.1" />
<origin xyz="0 0 0" rpy="0 0 0" />
<inertia ixx="0.03" iyy="0.03" izz="0.03" ixy="0.0" ixz="0.0" iyz="0.0" />
</inertial>
</link>
<joint name="joint2_to_joint1" type="revolute">
<axis xyz="0 0 1" />
<limit effort="1000.0" lower="-3.14" upper="3.14159" velocity="0" />
<parent link="base" />
<child link="link1" />
<origin xyz="0 0 0.1655" rpy="0 0 0" />
</joint>
<joint name="joint3_to_joint2" type="revolute">
<axis xyz="0 0 -1" />
<!-- <limit effort = "1000.0" lower = "-4.71" upper = "1.5708" velocity = "0"/> -->
<limit effort="1000.0" lower="-3.14" upper="3.14" velocity="0" />
<parent link="link1" />
<child link="link2" />
<!-- <origin xyz= "0 0 0" rpy = "1.5708 -1.5708 0"/> -->
<origin xyz="0 0.04 0.085" rpy="1.5708 0 0" />
</joint>
<joint name="joint4_to_joint3" type="revolute">
<axis xyz=" 0 0 -1" />
<limit effort="1000.0" lower="-2.61" upper="2.618" velocity="0" />
<parent link="link2" />
<child link="link3" />
<origin xyz="0.0 0.25 0 " rpy="0 0 0" />
</joint>
<joint name="joint5_to_joint4" type="revolute">
<axis xyz=" 0 0 -1" />
<!-- <limit effort = "1000.0" lower = "-4.53" upper = "1.3962" velocity = "0"/> -->
<limit effort="1000.0" lower="-2.97" upper="2.97" velocity="0" />
<parent link="link3" />
<child link="link4" />
<!-- <origin xyz= "0.25 0 -0.1091" rpy = "0 0 1.5708"/> -->
<origin xyz="0 0.25 0.025" rpy="0 0 0" />
</joint>
<joint name="joint6_to_joint5" type="revolute">
<axis xyz="0 0 1" />
<limit effort="1000.0" lower="-2.93" upper="2.9321" velocity="0" />
<parent link="link4" />
<child link="link5" />
<origin xyz="0 0.058 -0.05" rpy="1.57080 -1.57080 3.14159" />
</joint>
<joint name="joint6output_to_joint6" type="revolute">
<axis xyz="-1 0 0" />
<limit effort="1000.0" lower="-3.03" upper="3.0368" velocity="0" />
<parent link="link5" />
<child link="link6" />
<origin xyz="-0.076 0 0.05" rpy="-1.57080 0 0 " />
</joint>
<joint name="joint6output_to_tool1" type="revolute">
<axis xyz="0 1 0" />
<limit effort="1000.0" lower="-3.05" upper="3.05" velocity="0" />
<parent link="link6" />
<child link="tool1" />
<origin xyz="0.0079 0.0 0.0" rpy="1.5708 -1.5706 0" />
</joint>
<joint name="tool1_to_tool2" type="fixed">
<axis xyz="0 0 1" />
<limit effort="1000.0" lower="-3.05" upper="3.05" velocity="0" />
<parent link="tool1" />
<child link="tool2" />
<origin xyz="0.0 0.008 0.00" rpy="1.5708 -1.5706 3.14159" />
</joint>
<joint name="tool2_to_gripper_base" type="fixed">
<axis xyz="0 0 -1" />
<limit effort="1000.0" lower="-3.05" upper="3.05" velocity="0" />
<parent link="tool2" />
<child link="gripper_base" />
<origin xyz="0.0 0.0 0.04" rpy="1.5706 0 1.5706" />
</joint>
<joint name="gripper_controller" type="revolute">
<axis xyz="0 0 1" />
<limit effort="1000.0" lower="-0.7" upper="0.3" velocity="0" />
<parent link="gripper_base" />
<child link="gripper_left3" />
<origin xyz="-0.018 0.016 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.05 -0.01 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.0356 0.051 -0.018" 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.3" upper="0.7" velocity="0" />
<parent link="gripper_base" />
<child link="gripper_right3" />
<origin xyz="0.018 0.016 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.046 -0.01 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.033 0.051 -0.018" rpy="0 0 0" />
<mimic joint="gripper_controller" multiplier="1.0" offset="0" />
</joint>
<transmission name="trans_joint2_to_joint1">
<type>transmission_interface/SimpleTransmission</type>
<joint name="joint2_to_joint1">
<hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
</joint>
<actuator name="joint2_to_joint1_motor">
<hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="trans_joint3_to_joint2">
<type>transmission_interface/SimpleTransmission</type>
<joint name="joint3_to_joint2">
<hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
</joint>
<actuator name="joint3_to_joint2_motor">
<hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="trans_joint4_to_joint3">
<type>transmission_interface/SimpleTransmission</type>
<joint name="joint4_to_joint3">
<hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
</joint>
<actuator name="joint4_to_joint3_motor">
<hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="trans_joint5_to_joint4">
<type>transmission_interface/SimpleTransmission</type>
<joint name="joint5_to_joint4">
<hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
</joint>
<actuator name="joint5_to_joint4_motor">
<hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="trans_joint6_to_joint5">
<type>transmission_interface/SimpleTransmission</type>
<joint name="joint6_to_joint5">
<hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
</joint>
<actuator name="joint6_to_joint5_motor">
<hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="trans_joint6output_to_joint6">
<type>transmission_interface/SimpleTransmission</type>
<joint name="joint6output_to_joint6">
<hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
</joint>
<actuator name="joint6output_to_joint6_motor">
<hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="trans_joint6output_to_tool1">
<type>transmission_interface/SimpleTransmission</type>
<joint name="joint6output_to_tool1">
<hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
</joint>
<actuator name="joint6output_to_tool1_motor">
<hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="trans_gripper_controller">
<type>transmission_interface/SimpleTransmission</type>
<joint name="gripper_controller">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="gripper_controller_motor">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="trans_gripper_base_to_gripper_left2">
<type>transmission_interface/SimpleTransmission</type>
<joint name="gripper_base_to_gripper_left2">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="gripper_base_to_gripper_left2_motor">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="trans_gripper_left3_to_gripper_left1">
<type>transmission_interface/SimpleTransmission</type>
<joint name="gripper_left3_to_gripper_left1">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="gripper_left3_to_gripper_left1_motor">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="trans_gripper_base_to_gripper_right3">
<type>transmission_interface/SimpleTransmission</type>
<joint name="gripper_base_to_gripper_right3">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="gripper_base_to_gripper_right3_motor">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="trans_gripper_base_to_gripper_right2">
<type>transmission_interface/SimpleTransmission</type>
<joint name="gripper_base_to_gripper_right2">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="gripper_base_to_gripper_right2_motor">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="trans_gripper_right3_to_gripper_right1">
<type>transmission_interface/SimpleTransmission</type>
<joint name="gripper_right3_to_gripper_right1">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="gripper_right3_to_gripper_right1_motor">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<gazebo>
<plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so">
<robotNamespace>/</robotNamespace>
</plugin>
</gazebo>
</robot>

View file

@ -8,36 +8,11 @@ default_acceleration_scaling_factor: 0.1
# Specific joint properties can be changed with the keys [max_position, min_position, max_velocity, max_acceleration] # Specific joint properties can be changed with the keys [max_position, min_position, max_velocity, max_acceleration]
# Joint limits can be turned off with [has_velocity_limits, has_acceleration_limits] # Joint limits can be turned off with [has_velocity_limits, has_acceleration_limits]
joint_limits: joint_limits:
gripper_base_to_gripper_left2:
has_velocity_limits: false
max_velocity: 0
has_acceleration_limits: false
max_acceleration: 0
gripper_base_to_gripper_right2:
has_velocity_limits: false
max_velocity: 0
has_acceleration_limits: false
max_acceleration: 0
gripper_base_to_gripper_right3:
has_velocity_limits: false
max_velocity: 0
has_acceleration_limits: false
max_acceleration: 0
gripper_controller: gripper_controller:
has_velocity_limits: false has_velocity_limits: false
max_velocity: 0 max_velocity: 0
has_acceleration_limits: false has_acceleration_limits: false
max_acceleration: 0 max_acceleration: 0
gripper_left3_to_gripper_left1:
has_velocity_limits: false
max_velocity: 0
has_acceleration_limits: false
max_acceleration: 0
gripper_right3_to_gripper_right1:
has_velocity_limits: false
max_velocity: 0
has_acceleration_limits: false
max_acceleration: 0
joint2_to_joint1: joint2_to_joint1:
has_velocity_limits: false has_velocity_limits: false
max_velocity: 0 max_velocity: 0
@ -64,11 +39,6 @@ joint_limits:
has_acceleration_limits: false has_acceleration_limits: false
max_acceleration: 0 max_acceleration: 0
joint6output_to_joint6: joint6output_to_joint6:
has_velocity_limits: false
max_velocity: 0
has_acceleration_limits: false
max_acceleration: 0
joint6output_to_tool1:
has_velocity_limits: false has_velocity_limits: false
max_velocity: 0 max_velocity: 0
has_acceleration_limits: false has_acceleration_limits: false

View file

@ -1,7 +1,10 @@
arm: arm_group:
# arm:
kinematics_solver: kdl_kinematics_plugin/KDLKinematicsPlugin kinematics_solver: kdl_kinematics_plugin/KDLKinematicsPlugin
kinematics_solver_search_resolution: 0.005 kinematics_solver_search_resolution: 0.005
kinematics_solver_timeout: 0.005 kinematics_solver_timeout: 0.005
goal_joint_tolerance: 0.0001 gripper_group:
goal_position_tolerance: 0.0001 # gripper:
goal_orientation_tolerance: 0.001 kinematics_solver: kdl_kinematics_plugin/KDLKinematicsPlugin
kinematics_solver_search_resolution: 0.005
kinematics_solver_timeout: 0.005

View file

@ -51,8 +51,8 @@ planner_configs:
temp_change_factor: 2.0 # how much to increase or decrease temp. default: 2.0 temp_change_factor: 2.0 # how much to increase or decrease temp. default: 2.0
min_temperature: 10e-10 # lower limit of temp change. default: 10e-10 min_temperature: 10e-10 # lower limit of temp change. default: 10e-10
init_temperature: 10e-6 # initial temperature. default: 10e-6 init_temperature: 10e-6 # initial temperature. default: 10e-6
frontier_threshold: 0.0 # dist new state to nearest neighbor to disqualify as frontier. default: 0.0 set in setup() frountier_threshold: 0.0 # dist new state to nearest neighbor to disqualify as frontier. default: 0.0 set in setup()
frontier_node_ratio: 0.1 # 1/10, or 1 nonfrontier for every 10 frontier. default: 0.1 frountierNodeRatio: 0.1 # 1/10, or 1 nonfrontier for every 10 frontier. default: 0.1
k_constant: 0.0 # value used to normalize expresssion. default: 0.0 set in setup() k_constant: 0.0 # value used to normalize expresssion. default: 0.0 set in setup()
PRM: PRM:
type: geometric::PRM type: geometric::PRM
@ -95,8 +95,8 @@ planner_configs:
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup() range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
temp_change_factor: 0.1 # how much to increase or decrease temp. default: 0.1 temp_change_factor: 0.1 # how much to increase or decrease temp. default: 0.1
init_temperature: 100 # initial temperature. default: 100 init_temperature: 100 # initial temperature. default: 100
frontier_threshold: 0.0 # dist new state to nearest neighbor to disqualify as frontier. default: 0.0 set in setup() frountier_threshold: 0.0 # dist new state to nearest neighbor to disqualify as frontier. default: 0.0 set in setup()
frontier_node_ratio: 0.1 # 1/10, or 1 nonfrontier for every 10 frontier. default: 0.1 frountier_node_ratio: 0.1 # 1/10, or 1 nonfrontier for every 10 frontier. default: 0.1
cost_threshold: 1e300 # the cost threshold. Any motion cost that is not better will not be expanded. default: inf cost_threshold: 1e300 # the cost threshold. Any motion cost that is not better will not be expanded. default: inf
LBTRRT: LBTRRT:
type: geometric::LBTRRT type: geometric::LBTRRT
@ -127,44 +127,9 @@ planner_configs:
sparse_delta_fraction: 0.25 # delta fraction for connection distance. This value represents the visibility range of sparse samples. default: 0.25 sparse_delta_fraction: 0.25 # delta fraction for connection distance. This value represents the visibility range of sparse samples. default: 0.25
dense_delta_fraction: 0.001 # delta fraction for interface detection. default: 0.001 dense_delta_fraction: 0.001 # delta fraction for interface detection. default: 0.001
max_failures: 5000 # maximum consecutive failure limit. default: 5000 max_failures: 5000 # maximum consecutive failure limit. default: 5000
AITstar: arm_group:
type: geometric::AITstar # arm:
use_k_nearest: 1 # whether to use a k-nearest RGG connection model (1) or an r-disc model (0). Default: 1 default_planner_config: RRTConnect
rewire_factor: 1.001 # rewire factor of the RGG. Valid values: [1.0:0.01:3.0]. Default: 1.001
samples_per_batch: 100 # batch size. Valid values: [1:1:1000]. Default: 100
use_graph_pruning: 1 # enable graph pruning (1) or not (0). Default: 1
find_approximate_solutions: 0 # track approximate solutions (1) or not (0). Default: 0
set_max_num_goals: 1 # maximum number of goals sampled from sampleable goal regions. Valid values: [1:1:1000]. Default: 1
ABITstar:
type: geometric::ABITstar
use_k_nearest: 1 # whether to use a k-nearest RGG connection model (1) or an r-disc model (0). Default: 1
rewire_factor: 1.001 # rewire factor of the RGG. Valid values: [1.0:0.01:3.0]. Default: 1.001
samples_per_batch: 100 # batch size. Valid values: [1:1:1000]. Default: 100
use_graph_pruning: 1 # enable graph pruning (1) or not (0). Default: 1
prune_threshold_as_fractional_cost_change: 0.1 # fractional change in the solution cost AND problem measure necessary for pruning to occur. Default: 0.1
delay_rewiring_to_first_solution: 0 # delay (1) or not (0) rewiring until a solution is found. Default: 0
use_just_in_time_sampling: 0 # delay the generation of samples until they are * necessary. Only works with r-disc connection and path length minimization. Default: 0
drop_unconnected_samples_on_prune: 0 # drop unconnected samples when pruning, regardless of their heuristic value. Default: 0
stop_on_each_solution_improvement: 0 # stop the planner each time a solution improvement is found. Useful for debugging. Default: 0
use_strict_queue_ordering: 0 # sort edges in the queue at the end of the batch (0) or after each rewiring (1). Default: 0
find_approximate_solutions: 0 # track approximate solutions (1) or not (0). Default: 0
initial_inflation_factor: 1000000 # inflation factor for the initial search. Valid values: [1.0:0.01:1000000.0]. Default: 1000000
inflation_scaling_parameter: 10 # scaling parameter for the inflation factor update policy. Valid values: [1.0:0.01:1000000.0]. Default: 0
truncation_scaling_parameter: 5.0 # scaling parameter for the truncation factor update policy. Valid values: [1.0:0.01:1000000.0]. Default: 0
BITstar:
type: geometric::BITstar
use_k_nearest: 1 # whether to use a k-nearest RGG connection model (1) or an r-disc model (0). Default: 1
rewire_factor: 1.001 # rewire factor of the RGG. Valid values: [1.0:0.01:3.0]. Default: 1.001
samples_per_batch: 100 # batch size. Valid values: [1:1:1000]. Default: 100
use_graph_pruning: 1 # enable graph pruning (1) or not (0). Default: 1
prune_threshold_as_fractional_cost_change: 0.1 # fractional change in the solution cost AND problem measure necessary for pruning to occur. Default: 0.1
delay_rewiring_to_first_solution: 0 # delay (1) or not (0) rewiring until a solution is found. Default: 0
use_just_in_time_sampling: 0 # delay the generation of samples until they are * necessary. Only works with r-disc connection and path length minimization. Default: 0
drop_unconnected_samples_on_prune: 0 # drop unconnected samples when pruning, regardless of their heuristic value. Default: 0
stop_on_each_solution_improvement: 0 # stop the planner each time a solution improvement is found. Useful for debugging. Default: 0
use_strict_queue_ordering: 0 # sort edges in the queue at the end of the batch (0) or after each rewiring (1). Default: 0
find_approximate_solutions: 0 # track approximate solutions (1) or not (0). Default: 0
arm:
planner_configs: planner_configs:
- AnytimePathShortening - AnytimePathShortening
- SBL - SBL
@ -190,12 +155,11 @@ arm:
- LazyPRMstar - LazyPRMstar
- SPARS - SPARS
- SPARStwo - SPARStwo
- AITstar
- ABITstar
- BITstar
projection_evaluator: joints(joint2_to_joint1,joint3_to_joint2) projection_evaluator: joints(joint2_to_joint1,joint3_to_joint2)
longest_valid_segment_fraction: 0.005 longest_valid_segment_fraction: 0.005
gripper: gripper_group:
# gripper:
default_planner_config: RRTConnect
planner_configs: planner_configs:
- AnytimePathShortening - AnytimePathShortening
- SBL - SBL
@ -221,6 +185,3 @@ gripper:
- LazyPRMstar - LazyPRMstar
- SPARS - SPARS
- SPARStwo - SPARStwo
- AITstar
- ABITstar
- BITstar

View file

@ -1,5 +1,6 @@
arm_controller: arm_group_controller:
type: position_controllers/JointTrajectoryController # arm_controller:
type: effort_controllers/JointTrajectoryController
joints: joints:
- joint2_to_joint1 - joint2_to_joint1
- joint3_to_joint2 - joint3_to_joint2
@ -7,7 +8,6 @@ arm_controller:
- joint5_to_joint4 - joint5_to_joint4
- joint6_to_joint5 - joint6_to_joint5
- joint6output_to_joint6 - joint6output_to_joint6
- joint6output_to_tool1
gains: gains:
joint2_to_joint1: joint2_to_joint1:
p: 100 p: 100
@ -39,7 +39,13 @@ arm_controller:
d: 1 d: 1
i: 1 i: 1
i_clamp: 1 i_clamp: 1
joint6output_to_tool1: gripper_group_controller:
# gripper_controller:
type: effort_controllers/JointTrajectoryController
joints:
- gripper_controller
gains:
gripper_controller:
p: 100 p: 100
d: 1 d: 1
i: 1 i: 1

View file

View file

@ -1,5 +1,6 @@
controller_list: controller_list:
- name: arm_controller - name: arm_group_controller
# - name: arm_controller
action_ns: follow_joint_trajectory action_ns: follow_joint_trajectory
type: FollowJointTrajectory type: FollowJointTrajectory
default: True default: True
@ -10,4 +11,10 @@ controller_list:
- joint5_to_joint4 - joint5_to_joint4
- joint6_to_joint5 - joint6_to_joint5
- joint6output_to_joint6 - joint6output_to_joint6
- joint6output_to_tool1 - name: gripper_group_controller
# - name: gripper_controller
action_ns: follow_joint_trajectory
type: FollowJointTrajectory
default: True
joints:
- gripper_controller

View file

@ -1,5 +1,5 @@
stomp/arm: stomp/arm_group:
group_name: arm group_name: arm_group
optimization: optimization:
num_timesteps: 60 num_timesteps: 60
num_iterations: 40 num_iterations: 40
@ -11,7 +11,7 @@ stomp/arm:
task: task:
noise_generator: noise_generator:
- class: stomp_moveit/NormalDistributionSampling - class: stomp_moveit/NormalDistributionSampling
stddev: [0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05] stddev: [0.05, 0.05, 0.05, 0.05, 0.05, 0.05]
cost_functions: cost_functions:
- class: stomp_moveit/CollisionCheck - class: stomp_moveit/CollisionCheck
collision_penalty: 1.0 collision_penalty: 1.0
@ -37,8 +37,8 @@ stomp/arm:
publish_intermediate: True publish_intermediate: True
marker_topic: stomp_trajectory marker_topic: stomp_trajectory
marker_namespace: optimized marker_namespace: optimized
stomp/gripper: stomp/gripper_group:
group_name: gripper group_name: gripper_group
optimization: optimization:
num_timesteps: 60 num_timesteps: 60
num_iterations: 40 num_iterations: 40

View file

@ -3,8 +3,7 @@
<arg name="jiggle_fraction" default="0.05" /> <arg name="jiggle_fraction" default="0.05" />
<!-- The request adapters (plugins) used when planning. ORDER MATTERS! --> <!-- The request adapters (plugins) used when planning. ORDER MATTERS! -->
<arg name="planning_adapters" <arg name="planning_adapters"
default="default_planner_request_adapters/LimitMaxCartesianLinkSpeed default="default_planner_request_adapters/AddTimeParameterization
default_planner_request_adapters/AddTimeParameterization
default_planner_request_adapters/ResolveConstraintFrames default_planner_request_adapters/ResolveConstraintFrames
default_planner_request_adapters/FixWorkspaceBounds default_planner_request_adapters/FixWorkspaceBounds
default_planner_request_adapters/FixStartStateBounds default_planner_request_adapters/FixStartStateBounds
@ -17,5 +16,8 @@
<param name="start_state_max_bounds_error" value="$(arg start_state_max_bounds_error)" /> <param name="start_state_max_bounds_error" value="$(arg start_state_max_bounds_error)" />
<param name="jiggle_fraction" value="$(arg jiggle_fraction)" /> <param name="jiggle_fraction" value="$(arg jiggle_fraction)" />
<!-- Add MoveGroup capabilities specific to this pipeline -->
<!-- <param name="capabilities" value="" /> -->
<rosparam command="load" file="$(find mycobot_600_gripper_moveit)/config/chomp_planning.yaml" /> <rosparam command="load" file="$(find mycobot_600_gripper_moveit)/config/chomp_planning.yaml" />
</launch> </launch>

View file

@ -24,6 +24,9 @@
<arg name="use_rviz" default="true" /> <arg name="use_rviz" default="true" />
<!-- If needed, broadcast static tf for robot root --> <!-- If needed, broadcast static tf for robot root -->
<node pkg="tf2_ros" type="static_transform_publisher" name="virtual_joint_broadcaster_0" args="0 0 0 0 0 0 world base" />
<group if="$(eval arg('moveit_controller_manager') == 'fake')"> <group if="$(eval arg('moveit_controller_manager') == 'fake')">
<!-- We do not have a real robot connected, so publish fake joint states via a joint_state_publisher <!-- We do not have a real robot connected, so publish fake joint states via a joint_state_publisher

View file

@ -1,20 +1,20 @@
<?xml version="1.0"?>
<launch> <launch>
<!-- MoveIt options -->
<arg name="pipeline" default="ompl" doc="Planning pipeline to use with MoveIt"/>
<!-- Gazebo options --> <!-- specify the planning pipeline -->
<arg name="gazebo_gui" default="true" doc="Start Gazebo GUI"/> <arg name="pipeline" default="ompl" />
<arg name="paused" default="false" doc="Start Gazebo paused"/>
<arg name="world_name" default="worlds/empty.world" doc="Gazebo world file"/>
<arg name="world_pose" default="-x 0 -y 0 -z 0 -R 0 -P 0 -Y 0" doc="Pose to spawn the robot at"/>
<!-- Launch Gazebo and spawn the robot --> <!-- Gazebo specific options -->
<include file="$(dirname)/gazebo.launch" pass_all_args="true"/> <arg name="gazebo_gui" default="true"/>
<arg name="paused" default="false"/>
<!-- launch the gazebo simulator and spawn the robot -->
<include file="$(dirname)/gazebo.launch" >
<arg name="paused" value="$(arg paused)"/>
<arg name="gazebo_gui" value="$(arg gazebo_gui)"/>
</include>
<!-- Launch MoveIt -->
<include file="$(dirname)/demo.launch" pass_all_args="true"> <include file="$(dirname)/demo.launch" pass_all_args="true">
<!-- robot_description is loaded by gazebo.launch, to enable Gazebo features --> <!-- robot description is loaded by gazebo.launch, to enable Gazebo features -->
<arg name="load_robot_description" value="false" /> <arg name="load_robot_description" value="false" />
<arg name="moveit_controller_manager" value="ros_control" /> <arg name="moveit_controller_manager" value="ros_control" />
</include> </include>

View file

@ -1,34 +1,32 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<launch> <launch>
<!-- Gazebo options --> <arg name="paused" default="false"/>
<arg name="gazebo_gui" default="true" doc="Start Gazebo GUI"/> <arg name="gazebo_gui" default="true"/>
<arg name="paused" default="false" doc="Start Gazebo paused"/> <arg name="initial_joint_positions" doc="Initial joint configuration of the robot"
<arg name="world_name" default="worlds/empty.world" doc="Gazebo world file"/> default=" -J gripper_controller 0 -J joint2_to_joint1 0 -J joint3_to_joint2 0 -J joint4_to_joint3 0 -J joint5_to_joint4 0 -J joint6_to_joint5 0 -J joint6output_to_joint6 0"/>
<arg name="world_pose" default="-x 0 -y 0 -z 0 -R 0 -P 0 -Y 0" doc="Pose to spawn the robot at"/>
<arg name="initial_joint_positions" default="" doc="Initial joint configuration of the robot"/>
<!-- Start Gazebo paused to allow the controllers to pickup the initial pose --> <!-- startup simulated world -->
<include file="$(find gazebo_ros)/launch/empty_world.launch" pass_all_args="true"> <include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="world_name" default="worlds/empty.world"/>
<arg name="paused" value="true"/> <arg name="paused" value="true"/>
<arg name="gui" value="$(arg gazebo_gui)"/>
</include> </include>
<!-- Set the robot urdf on the parameter server --> <!-- send robot urdf to param server -->
<param name="robot_description" textfile="$(find mycobot_600_gripper_moveit)/config/gazebo_firefighter.urdf" /> <param name="robot_description" textfile="$(find mycobot_description)/urdf/mycobot_320_m5_2020/mycobot_pro_320_m5_2020_gripper.urdf" />
<!-- Unpause the simulation after loading the robot model --> <!-- unpause only after loading robot model -->
<arg name="unpause" value="$(eval '' if arg('paused') else '-unpause')" /> <arg name="unpause" value="$(eval '' if arg('paused') else '-unpause')" />
<!-- push robot_description to factory and spawn robot in gazebo at the origin, change x,y,z arguments to spawn in a different position -->
<!-- Spawn the robot in Gazebo --> <arg name="world_pose" value="-x 0 -y 0 -z 0" />
<node name="spawn_gazebo_model" pkg="gazebo_ros" type="spawn_model" args="-urdf -param robot_description -model robot $(arg unpause) $(arg world_pose) $(arg initial_joint_positions)" <node name="spawn_gazebo_model" pkg="gazebo_ros" type="spawn_model" args="-urdf -param robot_description -model robot $(arg unpause) $(arg world_pose) $(arg initial_joint_positions)"
respawn="false" output="screen" /> respawn="false" output="screen" />
<!-- Load the controller parameters onto the parameter server --> <!-- Load joint controller parameters for Gazebo -->
<rosparam file="$(find mycobot_600_gripper_moveit)/config/gazebo_controllers.yaml" /> <rosparam file="$(find mycobot_600_gripper_moveit)/config/gazebo_controllers.yaml" />
<!-- Spawn Gazebo ROS controllers -->
<node name="gazebo_controller_spawner" pkg="controller_manager" type="spawner" respawn="false" output="screen" args="joint_state_controller" />
<!-- Load ROS controllers -->
<include file="$(dirname)/ros_controllers.launch"/> <include file="$(dirname)/ros_controllers.launch"/>
<!-- Spawn the Gazebo ROS controllers -->
<node name="gazebo_controller_spawner" pkg="controller_manager" type="spawner" respawn="false" output="screen" args="joint_state_controller" />
<!-- Given the published joint states, publish tf for the robot links -->
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" respawn="true" output="screen" />
</launch> </launch>

View file

View file

@ -91,10 +91,6 @@
<param name="capabilities" value="$(arg capabilities)" /> <param name="capabilities" value="$(arg capabilities)" />
<param name="disable_capabilities" value="$(arg disable_capabilities)" /> <param name="disable_capabilities" value="$(arg disable_capabilities)" />
<!-- do not copy dynamics information from /joint_states to internal robot monitoring
default to false, because almost nothing in move_group relies on this information -->
<param name="monitor_dynamics" value="false" />
<!-- Publish the planning scene of the physical robot so that rviz plugin can know actual robot --> <!-- Publish the planning scene of the physical robot so that rviz plugin can know actual robot -->
<param name="planning_scene_monitor/publish_planning_scene" value="$(arg publish_monitored_planning_scene)" /> <param name="planning_scene_monitor/publish_planning_scene" value="$(arg publish_monitored_planning_scene)" />
<param name="planning_scene_monitor/publish_geometry_updates" value="$(arg publish_monitored_planning_scene)" /> <param name="planning_scene_monitor/publish_geometry_updates" value="$(arg publish_monitored_planning_scene)" />

306
mycobot_pro/mycobot_600_gripper_moveit/launch/moveit.rviz Normal file → Executable file
View file

@ -1,12 +1,15 @@
Panels: Panels:
- Class: rviz/Displays - Class: rviz/Displays
Help Height: 84 Help Height: 0
Name: Displays Name: Displays
Property Tree Widget: Property Tree Widget:
Expanded: Expanded:
- /MotionPlanning1 - /MotionPlanning1
- /MotionPlanning1/Scene Robot1
- /MotionPlanning1/Planning Request1
- /MotionPlanning1/Planned Path1
Splitter Ratio: 0.5 Splitter Ratio: 0.5
Tree Height: 226 Tree Height: 200
- Class: rviz/Help - Class: rviz/Help
Name: Help Name: Help
- Class: rviz/Views - Class: rviz/Views
@ -14,6 +17,10 @@ Panels:
- /Current View1 - /Current View1
Name: Views Name: Views
Splitter Ratio: 0.5 Splitter Ratio: 0.5
Preferences:
PromptSaveOnExit: true
Toolbars:
toolButtonStyle: 2
Visualization Manager: Visualization Manager:
Class: "" Class: ""
Displays: Displays:
@ -23,7 +30,7 @@ Visualization Manager:
Color: 160; 160; 164 Color: 160; 160; 164
Enabled: true Enabled: true
Line Style: Line Style:
Line Width: 0.03 Line Width: 0.029999999329447746
Value: Lines Value: Lines
Name: Grid Name: Grid
Normal Cell Count: 0 Normal Cell Count: 0
@ -35,32 +42,144 @@ Visualization Manager:
Plane Cell Count: 10 Plane Cell Count: 10
Reference Frame: <Fixed Frame> Reference Frame: <Fixed Frame>
Value: true Value: true
- Class: moveit_rviz_plugin/MotionPlanning - Acceleration_Scaling_Factor: 0.1
Class: moveit_rviz_plugin/MotionPlanning
Enabled: true Enabled: true
JointsTab_Use_Radians: true
Move Group Namespace: ""
MoveIt_Allow_Approximate_IK: true
MoveIt_Allow_External_Program: false
MoveIt_Allow_Replanning: false
MoveIt_Allow_Sensor_Positioning: false
MoveIt_Planning_Attempts: 10
MoveIt_Planning_Time: 5
MoveIt_Use_Cartesian_Path: true
MoveIt_Use_Constraint_Aware_IK: true
MoveIt_Workspace:
Center:
X: 0
Y: 0
Z: 0
Size:
X: 2
Y: 2
Z: 2
Name: MotionPlanning Name: MotionPlanning
Planned Path: Planned Path:
Links: ~ Color Enabled: false
Loop Animation: true Interrupt Display: false
Links:
All Links Enabled: true
Expand Joint Details: false
Expand Link Details: false
Expand Tree: false
Link Tree Style: Links in Alphabetic Order
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
Show Trail: false
Value: true
joint2:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
joint3:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
joint4:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
joint5:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
joint6:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
tool1:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
tool2:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
Loop Animation: false
Robot Alpha: 0.5 Robot Alpha: 0.5
Robot Color: 150; 50; 150
Show Robot Collision: false Show Robot Collision: false
Show Robot Visual: true Show Robot Visual: true
Show Trail: false Show Trail: false
State Display Time: 0.05 s State Display Time: 0.05 s
Trail Step Size: 1
Trajectory Topic: move_group/display_planned_path Trajectory Topic: move_group/display_planned_path
Use Sim Time: false
Planning Metrics: Planning Metrics:
Payload: 1 Payload: 1
Show Joint Torques: false Show Joint Torques: false
Show Manipulability: false Show Manipulability: false
Show Manipulability Index: false Show Manipulability Index: false
Show Weight Limit: false Show Weight Limit: false
TextHeight: 0.07999999821186066
Planning Request: Planning Request:
Colliding Link Color: 255; 0; 0 Colliding Link Color: 255; 0; 0
Goal State Alpha: 1 Goal State Alpha: 1
Goal State Color: 250; 128; 0 Goal State Color: 250; 128; 0
Interactive Marker Size: 0 Interactive Marker Size: 0.20000000298023224
Joint Violation Color: 255; 0; 255 Joint Violation Color: 255; 0; 255
Planning Group: arm_group
Query Goal State: true Query Goal State: true
Query Start State: false Query Start State: true
Show Workspace: false Show Workspace: false
Start State Alpha: 1 Start State Alpha: 1
Start State Color: 0; 255; 0 Start State Color: 0; 255; 0
@ -68,19 +187,136 @@ Visualization Manager:
Robot Description: robot_description Robot Description: robot_description
Scene Geometry: Scene Geometry:
Scene Alpha: 1 Scene Alpha: 1
Scene Color: 50; 230; 50
Scene Display Time: 0.009999999776482582
Show Scene Geometry: true Show Scene Geometry: true
Voxel Coloring: Z-Axis Voxel Coloring: Z-Axis
Voxel Rendering: Occupied Voxels Voxel Rendering: Occupied Voxels
Scene Robot: Scene Robot:
Attached Body Color: 150; 50; 150 Attached Body Color: 150; 50; 150
Links: ~ Links:
All Links Enabled: true
Expand Joint Details: false
Expand Link Details: false
Expand Tree: false
Link Tree Style: Links in Alphabetic Order
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
Show Trail: false
Value: true
joint2:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
joint3:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
joint4:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
joint5:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
joint6:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
tool1:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
tool2:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
Robot Alpha: 0.5 Robot Alpha: 0.5
Show Scene Robot: true Show Robot Collision: false
Show Robot Visual: true
Value: true
Velocity_Scaling_Factor: 0.1
- Class: rviz/Marker
Enabled: true
Marker Topic: visualization_marker
Name: Marker
Namespaces:
{}
Queue Size: 100
Value: true
- Class: rviz/InteractiveMarkers
Enable Transparency: true
Enabled: true
Name: InteractiveMarkers
Show Axes: false
Show Descriptions: true
Show Visual Aids: false
Update Topic: ""
Value: true
- Class: rviz/InteractiveMarkers
Enable Transparency: true
Enabled: true
Name: InteractiveMarkers
Show Axes: false
Show Descriptions: true
Show Visual Aids: false
Update Topic: ""
Value: true Value: true
Enabled: true Enabled: true
Global Options: Global Options:
Background Color: 48; 48; 48 Background Color: 48; 48; 48
Default Light: true
Fixed Frame: base Fixed Frame: base
Frame Rate: 30
Name: root Name: root
Tools: Tools:
- Class: rviz/Interact - Class: rviz/Interact
@ -91,30 +327,50 @@ Visualization Manager:
Views: Views:
Current: Current:
Class: rviz/Orbit Class: rviz/Orbit
Distance: 2.0 Distance: 1.4812843799591064
Enable Stereo Rendering: Enable Stereo Rendering:
Stereo Eye Separation: 0.06 Stereo Eye Separation: 0.05999999865889549
Stereo Focal Distance: 1 Stereo Focal Distance: 1
Swap Stereo Eyes: false Swap Stereo Eyes: false
Value: false Value: false
Field of View: 0.75 Field of View: 0.75
Focal Point: Focal Point:
X: -0.1 X: -0.07944566011428833
Y: 0.25 Y: 0.29104751348495483
Z: 0.30 Z: 0.29134249687194824
Focal Shape Fixed Size: true Focal Shape Fixed Size: true
Focal Shape Size: 0.05 Focal Shape Size: 0.05000000074505806
Invert Z Axis: false Invert Z Axis: false
Name: Current View Name: Current View
Near Clip Distance: 0.01 Near Clip Distance: 0.009999999776482582
Pitch: 0.5 Pitch: 1.0449998378753662
Target Frame: base Target Frame: base
Yaw: -0.6232355833053589 Yaw: 6.149951934814453
Saved: ~ Saved:
- Class: rviz/Orbit
Distance: 2
Enable Stereo Rendering:
Stereo Eye Separation: 0.05999999865889549
Stereo Focal Distance: 1
Swap Stereo Eyes: false
Value: false
Field of View: 0.75
Focal Point:
X: -0.10000000149011612
Y: 0.25
Z: 0.30000001192092896
Focal Shape Fixed Size: true
Focal Shape Size: 0.05000000074505806
Invert Z Axis: false
Name: Orbit
Near Clip Distance: 0.009999999776482582
Pitch: 0.3399999737739563
Target Frame: base
Yaw: 2.9449498653411865
Window Geometry: Window Geometry:
Displays: Displays:
collapsed: false collapsed: false
Height: 848 Height: 820
Help: Help:
collapsed: false collapsed: false
Hide Left Dock: false Hide Left Dock: false
@ -123,9 +379,9 @@ Window Geometry:
collapsed: false collapsed: false
MotionPlanning - Trajectory Slider: MotionPlanning - Trajectory Slider:
collapsed: false collapsed: false
QMainWindow State: 000000ff00000000fd0000000100000000000001f0000002f6fc0200000007fb000000100044006900730070006c006100790073010000003d00000173000000c900fffffffb0000000800480065006c00700000000342000000bb0000006e00fffffffb0000000a00560069006500770073000000010c000000a4000000a400fffffffb0000000c00430061006d00650072006100000002ff000001610000000000000000fb0000001e004d006f00740069006f006e00200050006c0061006e006e0069006e00670100000374000001890000000000000000fb00000044004d006f00740069006f006e0050006c0061006e006e0069006e00670020002d0020005400720061006a006500630074006f0072007900200053006c00690064006500720000000000ffffffff0000001600000016fb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e006701000001b60000017d0000017d00ffffff00000315000002f600000001000000020000000100000002fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 QMainWindow State: 000000ff00000000fd0000000100000000000001f3000002dafc0200000007fb000000100044006900730070006c006100790073010000003d00000105000000c900fffffffb0000000800480065006c00700000000342000000bb0000006e00fffffffb0000000a00560069006500770073000000010c000000a4000000a400fffffffb0000000c00430061006d00650072006100000002ff000001610000000000000000fb0000001e004d006f00740069006f006e00200050006c0061006e006e0069006e00670100000374000001890000000000000000fb00000044004d006f00740069006f006e0050006c0061006e006e0069006e00670020002d0020005400720061006a006500630074006f0072007900200053006c00690064006500720100000148000000410000004100fffffffb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e0067010000018f000001880000017d00ffffff00000539000002da00000001000000020000000100000002fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
Views: Views:
collapsed: false collapsed: false
Width: 1291 Width: 1842
X: 454 X: 72
Y: 25 Y: 27

View file

View file

@ -0,0 +1,69 @@
<launch>
<!-- specify the planning pipeline -->
<arg name="pipeline" default="ompl" />
<!-- By default, we do not start a database (it can be large) -->
<arg name="db" default="false" />
<!-- Allow user to specify database location -->
<arg name="db_path" default="$(find mycobot_600_gripper_moveit)/default_warehouse_mongo_db" />
<!-- By default, we are not in debug mode -->
<arg name="debug" default="false" />
<!-- By default, we will load or override the robot_description -->
<arg name="load_robot_description" default="true"/>
<!-- Choose controller manager: fake, simple, or ros_control -->
<arg name="moveit_controller_manager" default="fake" />
<!-- Set execution mode for fake execution controllers -->
<arg name="fake_execution_type" default="interpolate" />
<!-- By default, hide joint_state_publisher's GUI in 'fake' controller_manager mode -->
<arg name="use_gui" default="false" />
<arg name="use_rviz" default="true" />
<!-- If needed, broadcast static tf for robot root -->
<node pkg="tf2_ros" type="static_transform_publisher" name="virtual_joint_broadcaster_0" args="0 0 0 0 0 0 world base" />
<group if="$(eval arg('moveit_controller_manager') == 'fake')">
<!-- We do not have a real robot connected, so publish fake joint states via a joint_state_publisher
MoveIt's fake controller's joint states are considered via the 'source_list' parameter -->
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" unless="$(arg use_gui)">
<rosparam param="source_list">[move_group/fake_controller_joint_states]</rosparam>
</node>
<!-- If desired, a GUI version is available allowing to move the simulated robot around manually
This corresponds to moving around the real robot without the use of MoveIt. -->
<node name="joint_state_publisher" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" if="$(arg use_gui)">
<rosparam param="source_list">[move_group/fake_controller_joint_states]</rosparam>
</node>
<!-- Given the published joint states, publish tf for the robot links -->
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" respawn="true" output="screen" />
</group>
<!-- Run the main MoveIt executable without trajectory execution (we do not have controllers configured by default) -->
<include file="$(dirname)/move_group.launch">
<arg name="allow_trajectory_execution" value="true"/>
<arg name="moveit_controller_manager" value="$(arg moveit_controller_manager)" />
<arg name="fake_execution_type" value="$(arg fake_execution_type)"/>
<arg name="info" value="true"/>
<arg name="debug" value="$(arg debug)"/>
<arg name="pipeline" value="$(arg pipeline)"/>
<arg name="load_robot_description" value="$(arg load_robot_description)"/>
</include>
<!-- Run Rviz and load the default config to see the state of the move_group node -->
<include file="$(dirname)/moveit_rviz.launch" if="$(arg use_rviz)">
<arg name="rviz_config" value="$(dirname)/moveit.rviz"/>
<arg name="debug" value="$(arg debug)"/>
</include>
<!-- If database loading was enabled, start mongodb as well -->
<include file="$(dirname)/default_warehouse_db.launch" if="$(arg db)">
<arg name="moveit_warehouse_database_path" value="$(arg db_path)"/>
</include>
</launch>

View file

@ -1,19 +1,18 @@
<launch> <launch>
<!-- load OMPL planning pipeline, but add the CHOMP planning adapter. --> <!-- load OMPL planning pipeline, but add the CHOMP planning adapter. -->
<include file="$(find mycobot_600_gripper_moveit)/launch/ompl_planning_pipeline.launch.xml"> <include file="$(find panda_moveit_config)/launch/ompl_planning_pipeline.launch.xml">
<arg name="planning_adapters" <arg name="planning_adapters" value="
default="default_planner_request_adapters/LimitMaxCartesianLinkSpeed default_planner_request_adapters/AddTimeParameterization
default_planner_request_adapters/AddTimeParameterization default_planner_request_adapters/FixWorkspaceBounds
default_planner_request_adapters/FixWorkspaceBounds default_planner_request_adapters/FixStartStateBounds
default_planner_request_adapters/FixStartStateBounds default_planner_request_adapters/FixStartStateCollision
default_planner_request_adapters/FixStartStateCollision default_planner_request_adapters/FixStartStatePathConstraints
default_planner_request_adapters/FixStartStatePathConstraints chomp/OptimizerAdapter"
chomp/OptimizerAdapter" />
/>
</include> </include>
<!-- load chomp config --> <!-- load chomp config -->
<rosparam command="load" file="$(find mycobot_600_gripper_moveit)/config/chomp_planning.yaml" /> <rosparam command="load" file="$(find panda_moveit_config)/config/chomp_planning.yaml"/>
<!-- override trajectory_initialization_method: Use OMPL-generated trajectory --> <!-- override trajectory_initialization_method: Use OMPL-generated trajectory -->
<param name="trajectory_initialization_method" value="fillTrajectory"/> <param name="trajectory_initialization_method" value="fillTrajectory"/>

View file

@ -2,8 +2,7 @@
<!-- The request adapters (plugins) used when planning with OMPL. ORDER MATTERS! --> <!-- The request adapters (plugins) used when planning with OMPL. ORDER MATTERS! -->
<arg name="planning_adapters" <arg name="planning_adapters"
default="default_planner_request_adapters/LimitMaxCartesianLinkSpeed default="default_planner_request_adapters/AddTimeParameterization
default_planner_request_adapters/AddTimeParameterization
default_planner_request_adapters/ResolveConstraintFrames default_planner_request_adapters/ResolveConstraintFrames
default_planner_request_adapters/FixWorkspaceBounds default_planner_request_adapters/FixWorkspaceBounds
default_planner_request_adapters/FixStartStateBounds default_planner_request_adapters/FixStartStateBounds
@ -19,6 +18,9 @@
<param name="start_state_max_bounds_error" value="$(arg start_state_max_bounds_error)" /> <param name="start_state_max_bounds_error" value="$(arg start_state_max_bounds_error)" />
<param name="jiggle_fraction" value="$(arg jiggle_fraction)" /> <param name="jiggle_fraction" value="$(arg jiggle_fraction)" />
<!-- Add MoveGroup capabilities specific to this pipeline -->
<!-- <param name="capabilities" value="" /> -->
<rosparam command="load" file="$(find mycobot_600_gripper_moveit)/config/ompl_planning.yaml"/> <rosparam command="load" file="$(find mycobot_600_gripper_moveit)/config/ompl_planning.yaml"/>
</launch> </launch>

View file

@ -6,9 +6,11 @@
<arg name="robot_description" default="robot_description"/> <arg name="robot_description" default="robot_description"/>
<!-- Load universal robot description format (URDF) --> <!-- Load universal robot description format (URDF) -->
<!-- <param if="$(arg load_robot_description)" name="$(arg robot_description)" textfile="$(find mycobot_description)/urdf/mycobot_320_m5_2020/mycobot_pro_320_m5_2020_gripper.urdf"/> -->
<param if="$(arg load_robot_description)" name="$(arg robot_description)" textfile="$(find mycobot_description)/urdf/mycobot_pro_600/mycobot_pro_600_gripper.urdf"/> <param if="$(arg load_robot_description)" name="$(arg robot_description)" textfile="$(find mycobot_description)/urdf/mycobot_pro_600/mycobot_pro_600_gripper.urdf"/>
<!-- The semantic description that corresponds to the URDF --> <!-- The semantic description that corresponds to the SRDF -->
<!-- <param name="$(arg robot_description)_semantic" textfile="$(find mycobot_600_gripper_moveit)/config/firefighter.srdf" /> -->
<param name="$(arg robot_description)_semantic" textfile="$(find mycobot_600_gripper_moveit)/config/firefighter.srdf" /> <param name="$(arg robot_description)_semantic" textfile="$(find mycobot_600_gripper_moveit)/config/firefighter.srdf" />
<!-- Load updated joint limits (override information from URDF) --> <!-- Load updated joint limits (override information from URDF) -->

View file

@ -6,6 +6,6 @@
<!-- Load the controllers --> <!-- Load the controllers -->
<node name="controller_spawner" pkg="controller_manager" type="spawner" respawn="false" <node name="controller_spawner" pkg="controller_manager" type="spawner" respawn="false"
output="screen" args="arm_controller "/> output="screen" args="arm_group_controller gripper_group_controller "/>
</launch> </launch>

View file

View file

@ -6,8 +6,7 @@
<arg name="jiggle_fraction" value="0.05" /> <arg name="jiggle_fraction" value="0.05" />
<!-- The request adapters (plugins) used when planning. ORDER MATTERS! --> <!-- The request adapters (plugins) used when planning. ORDER MATTERS! -->
<arg name="planning_adapters" <arg name="planning_adapters"
default="default_planner_request_adapters/LimitMaxCartesianLinkSpeed default="default_planner_request_adapters/AddTimeParameterization
default_planner_request_adapters/AddTimeParameterization
default_planner_request_adapters/FixWorkspaceBounds default_planner_request_adapters/FixWorkspaceBounds
default_planner_request_adapters/FixStartStateBounds default_planner_request_adapters/FixStartStateBounds
default_planner_request_adapters/FixStartStateCollision default_planner_request_adapters/FixStartStateCollision
@ -19,5 +18,8 @@
<param name="start_state_max_bounds_error" value="$(arg start_state_max_bounds_error)" /> <param name="start_state_max_bounds_error" value="$(arg start_state_max_bounds_error)" />
<param name="jiggle_fraction" value="$(arg jiggle_fraction)" /> <param name="jiggle_fraction" value="$(arg jiggle_fraction)" />
<!-- Add MoveGroup capabilities specific to this pipeline -->
<!-- <param name="capabilities" value="" /> -->
<rosparam command="load" file="$(find mycobot_600_gripper_moveit)/config/stomp_planning.yaml"/> <rosparam command="load" file="$(find mycobot_600_gripper_moveit)/config/stomp_planning.yaml"/>
</launch> </launch>

View file

10
mycobot_pro/mycobot_600_gripper_moveit/package.xml Normal file → Executable file
View file

@ -5,21 +5,21 @@
<description> <description>
An automatically generated package with all the configuration and launch files for using the firefighter with the MoveIt Motion Planning Framework An automatically generated package with all the configuration and launch files for using the firefighter with the MoveIt Motion Planning Framework
</description> </description>
<author email="aa@123.com">aa</author> <author email="jz@elephantrobot.com">jz</author>
<maintainer email="aa@123.com">aa</maintainer> <maintainer email="jz@elephantrobot.com">jz</maintainer>
<license>BSD</license> <license>BSD</license>
<url type="website">http://moveit.ros.org/</url> <url type="website">http://moveit.ros.org/</url>
<url type="bugtracker">https://github.com/moveit/moveit/issues</url> <url type="bugtracker">https://github.com/ros-planning/moveit/issues</url>
<url type="repository">https://github.com/moveit/moveit</url> <url type="repository">https://github.com/ros-planning/moveit</url>
<buildtool_depend>catkin</buildtool_depend> <buildtool_depend>catkin</buildtool_depend>
<run_depend>moveit_ros_move_group</run_depend> <run_depend>moveit_ros_move_group</run_depend>
<run_depend>moveit_fake_controller_manager</run_depend> <run_depend>moveit_fake_controller_manager</run_depend>
<run_depend>moveit_kinematics</run_depend> <run_depend>moveit_kinematics</run_depend>
<run_depend>moveit_planners</run_depend> <run_depend>moveit_planners_ompl</run_depend>
<run_depend>moveit_ros_visualization</run_depend> <run_depend>moveit_ros_visualization</run_depend>
<run_depend>moveit_setup_assistant</run_depend> <run_depend>moveit_setup_assistant</run_depend>
<run_depend>moveit_simple_controller_manager</run_depend> <run_depend>moveit_simple_controller_manager</run_depend>

View file

@ -0,0 +1,102 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from socket import *
import math
import sys
import time
from multiprocessing import Lock
import numpy as np
import rospy
from sensor_msgs.msg import JointState
from pymycobot.elephantrobot import ElephantRobot
global mc
gripper_value = []
def linear_mapping(value, input_start, input_end, output_start, output_end):
"""
Maps a value from one range to another using a linear transformation.
Args:
value (float): The input value to be mapped.
input_start (float): The start of the input range.
input_end (float): The end of the input range.
output_start (float): The start of the output range.
output_end (float): The end of the output range.
Returns:
float: The mapped value in the output range.
"""
# Calculate the slope of the linear function
slope = (output_end - output_start) / (input_end - input_start)
# Calculate the mapped value
mapped_value = output_start + slope * (value - input_start)
return mapped_value
def callback(data):
"""callback function,回调函数"""
# rospy.loginfo(rospy.get_caller_id() + "%s", data.position)
data_list = []
for index, value in enumerate(data.position):
radians_to_angles = round(math.degrees(value), 2)
data_list.append(radians_to_angles)
rospy.loginfo(rospy.get_caller_id() + "%s", data_list)
# mc.write_angles(data_list, 800)
list_i = []
for i in data_list[:6]:
list_i.append(i)
mc.write_angles(list_i,800)
list_j = []
for j in data_list[6:]:
list_j.append(j)
# list_j = [int(a) for a in list_j]
mc.set_gripper_mode(0)
# Define the input and output ranges
input_start = 17
input_end = -40
output_start = 100
output_end = 0
num = [linear_mapping(value, input_start, input_end, output_start, output_end) for value in list_j]
num2 = [int(i) for i in num]
num2 = num2[1]
mc.set_gripper_value(num2,100)
rospy.loginfo(num2)
def listener():
global mc
global gripper_value
rospy.init_node("control_slider", anonymous=True)
ip = rospy.get_param("~ip", "192.168.1.161")
port = rospy.get_param("~port", 5001)
print (ip, port)
mc = ElephantRobot(ip, int(port))
# START CLIENT,启动客户端
res = mc.start_client()
if res != "":
sys.exit(1)
mc.set_speed(90)
rospy.Subscriber("joint_states", JointState, callback)
# spin() simply keeps python from exiting until this node is stopped
# spin()只是阻止python退出直到该节点停止
print ("sping ...")
rospy.spin()
if __name__ == "__main__":
listener()

View file

@ -0,0 +1,88 @@
#!/usr/bin/env python3
# -*- coding: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/ttyUSB0'
baud: serial prot baudrate. Defaults is 115200.
"""
from socket import *
import math
import sys
import time
from multiprocessing import Lock
import rospy
from sensor_msgs.msg import JointState
from pymycobot.elephantrobot import ElephantRobot
import rospy
import time
from sensor_msgs.msg import JointState
from pymycobot.mycobot import MyCobot
mc = None
gripper_value = []
def callback(data):
global mc
# rospy.loginfo(rospy.get_caller_id() + "%s", data.position)
data_list = []
for index, value in enumerate(data.position):
data_list.append(round(value, 3))
data_list = data_list[:7]
print("radians:%s"%data_list[:6])
mc.send_radians(data_list[:6], 80)
gripper_value = int(abs(-0.7-data_list[6])* 117)
print("gripper_value:%s"%gripper_value)
# mc.set_gripper_mode(0)
# time.sleep(1)
mc.set_gripper_value(gripper_value, 100)
def listener():
# global mc
# global gripper_value
# rospy.init_node("control_slider", anonymous=True)
# rospy.Subscriber("joint_states", JointState, callback)
# port = rospy.get_param("~port", "/dev/ttyUSB0")
# baud = rospy.get_param("~baud", 115200)
# print(port, baud)
# mc = MyCobot(port, baud)
# # spin() simply keeps python from exiting until this node is stopped
# print("spin ...")
# rospy.spin()
global mc
global gripper_value
rospy.init_node("control_slider", anonymous=True)
ip = rospy.get_param("~ip", "192.168.1.161")
port = rospy.get_param("~port", 5001)
print (ip, port)
mc = ElephantRobot(ip, int(port))
# START CLIENT,启动客户端
res = mc.start_client()
if res != "":
sys.exit(1)
mc.set_speed(90)
rospy.Subscriber("joint_states", JointState, callback)
# spin() simply keeps python from exiting until this node is stopped
# spin()只是阻止python退出直到该节点停止
print ("sping ...")
rospy.spin()
if __name__ == "__main__":
listener()

View file

@ -0,0 +1,37 @@
from pymycobot import ElephantRobot
import time
global mc
mc = ElephantRobot("192.168.1.6",5001)
# 启动机器人必要指令
mc.start_client()
time.sleep(1)
# mc.set_gripper_calibrate()
# time.sleep(1)
# mc.set_gripper_mode(0)
# time.sleep(1)
# mc.power_off()#夹爪透传换IO模式时需要先关闭机器再重启机器人一次仅使用夹爪透传模式不必关闭机器人
mc.state_off()
time.sleep(3)
mc.power_on()
time.sleep(3)
mc.state_on()
time.sleep(3)
mc.set_gripper_mode(0)
#透传模式
for i in range(3):
mc.set_gripper_value(10, 20)
time.sleep(1)
mc.set_gripper_value(96, 20)
time.sleep(1)

View file

@ -0,0 +1,11 @@
<launch>
<arg name="model" default="$(find mycobot_description)/urdf/mycobot_pro_630/mycobot_pro_630.urdf"/>
<arg name="rvizconfig" default="$(find mycobot_630)/config/mycobot_630.rviz" />
<param name="robot_description" command="$(find xacro)/xacro --inorder $(arg model)" />
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" >
<rosparam param="source_list" subst_value="true">["joint_states"]</rosparam>
</node>
<node name="rviz" pkg="rviz" type="rviz" args="-d $(arg rvizconfig)" required="true" />
</launch>

View file

@ -0,0 +1,105 @@
#!/usr/bin/env python2
# -*- coding:utf-8 -*-
from cgi import print_environ
import time
import rospy
from sensor_msgs.msg import JointState
from std_msgs.msg import Header
from visualization_msgs.msg import Marker
from pymycobot.mycobot import MyCobot
def talker():
rospy.init_node("display", anonymous=True)
print("Try connect real mycobot...")
port = rospy.get_param("~port", "/dev/ttyUSB0")
baud = rospy.get_param("~baud", 115200)
print("port: {}, baud: {}\n".format(port, baud))
try:
mycobot = MyCobot(port, baud)
except Exception as e:
print(e)
print(
"""\
\rTry connect mycobot failed!
\rPlease check wether connected with mycobot.
\rPlease chckt wether the port or baud is right.
"""
)
exit(1)
mycobot.release_all_servos()
time.sleep(0.1)
print("Rlease all servos over.\n")
pub = rospy.Publisher("joint_states", JointState, queue_size=10)
pub_marker = rospy.Publisher("visualization_marker", Marker, queue_size=10)
rate = rospy.Rate(30) # 30hz
# pub joint state
joint_state_send = JointState()
joint_state_send.header = Header()
joint_state_send.name = [
"joint1_to_base",
"joint2_to_joint1",
"joint3_to_joint2",
"joint4_to_joint3",
"joint5_to_joint4",
"joint6_to_joint5",
]
joint_state_send.velocity = [0]
joint_state_send.effort = []
marker_ = Marker()
marker_.header.frame_id = "/joint1"
marker_.ns = "my_namespace"
print("publishing ...")
while not rospy.is_shutdown():
joint_state_send.header.stamp = rospy.Time.now()
angles = mycobot.get_radians()
data_list = []
for index, value in enumerate(angles):
data_list.append(value)
# rospy.loginfo('{}'.format(data_list))
joint_state_send.position = data_list
pub.publish(joint_state_send)
coords = mycobot.get_coords()
# marker
marker_.header.stamp = rospy.Time.now()
marker_.type = marker_.SPHERE
marker_.action = marker_.ADD
marker_.scale.x = 0.04
marker_.scale.y = 0.04
marker_.scale.z = 0.04
# marker position initial
if not coords:
coords = [0, 0, 0, 0, 0, 0]
rospy.loginfo("error [101]: can not get coord values")
marker_.pose.position.x = coords[1] / 1000 * -1
marker_.pose.position.y = coords[0] / 1000
marker_.pose.position.z = coords[2] / 1000
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

@ -1,6 +1,6 @@
controller_list: controller_list:
- name: fake_arm_controller - name: fake_arm_controller
type: $(arg fake_execution_type) # type: $(arg fake_execution_type)
joints: joints:
- joint1_to_base - joint1_to_base
- joint2_to_joint1 - joint2_to_joint1
@ -10,7 +10,7 @@ controller_list:
- joint6_to_joint5 - joint6_to_joint5
- joint6output_to_tool1 - joint6output_to_tool1
- name: fake_gripper_controller - name: fake_gripper_controller
type: $(arg fake_execution_type) # type: $(arg fake_execution_type)
joints: joints:
- gripper_controller - gripper_controller
initial: # Define initial robot poses per group initial: # Define initial robot poses per group

View file

@ -9,7 +9,7 @@
<!--JOINTS: When a joint is specified, the child link of that joint (which will always exist) is automatically included--> <!--JOINTS: When a joint is specified, the child link of that joint (which will always exist) is automatically included-->
<!--CHAINS: When a chain is specified, all the links along the chain (including endpoints) are included in the group. Additionally, all the joints that are parents to included links are also included. This means that joints along the chain and the parent joint of the base link are included in the group--> <!--CHAINS: When a chain is specified, all the links along the chain (including endpoints) are included in the group. Additionally, all the joints that are parents to included links are also included. This means that joints along the chain and the parent joint of the base link are included in the group-->
<!--SUBGROUPS: Groups can also be formed by referencing to already defined group names--> <!--SUBGROUPS: Groups can also be formed by referencing to already defined group names-->
<group name="arm"> <!-- <group name="arm">
<joint name="joint1_to_base"/> <joint name="joint1_to_base"/>
<joint name="joint2_to_joint1"/> <joint name="joint2_to_joint1"/>
<joint name="joint3_to_joint2"/> <joint name="joint3_to_joint2"/>
@ -27,9 +27,32 @@
<joint name="gripper_right3_to_gripper_right1"/> <joint name="gripper_right3_to_gripper_right1"/>
<joint name="gripper_controller"/> <joint name="gripper_controller"/>
<joint name="gripper_left3_to_gripper_left1"/> <joint name="gripper_left3_to_gripper_left1"/>
</group> -->
<group name="arm_group">
<chain base_link="base" tip_link="joint6"/>
</group> </group>
<group name="gripper_group">
<chain base_link="gripper_base" tip_link="gripper_left3"/>
</group>
<group_state name="init_pose" group="arm_group">
<joint name="joint1_to_base" value="0"/>
<joint name="joint2_to_joint1" value="0"/>
<joint name="joint3_to_joint2" value="0"/>
<joint name="joint4_to_joint3" value="0"/>
<joint name="joint5_to_joint4" value="0"/>
<joint name="joint6_to_joint5" value="0"/>
<!-- <joint name="joint6output_to_joint6" value="0"/> -->
</group_state>
<!--END EFFECTOR: Purpose: Represent information about an end effector.--> <!--END EFFECTOR: Purpose: Represent information about an end effector.-->
<end_effector name="gripper_end" parent_link="tool2" group="gripper"/> <end_effector name="gripper" parent_link="joint6" group="gripper_group" parent_group="arm_group"/>
<!--VIRTUAL JOINT: Purpose: this element defines a virtual joint between a robot link and an external frame of reference (considered fixed with respect to the robot)-->
<virtual_joint name="virtual_joint" type="fixed" parent_frame="world" child_link="base"/>
<!--END EFFECTOR: Purpose: Represent information about an end effector.-->
<!-- <end_effector name="gripper_end" parent_link="tool2" group="gripper"/> -->
<!--PASSIVE JOINT: Purpose: this element is used to mark joints that are not actuated--> <!--PASSIVE JOINT: Purpose: this element is used to mark joints that are not actuated-->
<passive_joint name="gripper_base_to_gripper_left2"/> <passive_joint name="gripper_base_to_gripper_left2"/>
<passive_joint name="gripper_base_to_gripper_right2"/> <passive_joint name="gripper_base_to_gripper_right2"/>

View file

@ -2,6 +2,7 @@ arm:
kinematics_solver: kdl_kinematics_plugin/KDLKinematicsPlugin kinematics_solver: kdl_kinematics_plugin/KDLKinematicsPlugin
kinematics_solver_search_resolution: 0.005 kinematics_solver_search_resolution: 0.005
kinematics_solver_timeout: 0.005 kinematics_solver_timeout: 0.005
# kinematics_solver_attempts: 3
goal_joint_tolerance: 0.0001 goal_joint_tolerance: 0.0001
goal_position_tolerance: 0.0001 goal_position_tolerance: 0.0001
goal_orientation_tolerance: 0.001 goal_orientation_tolerance: 0.001

View file

@ -43,6 +43,7 @@ planner_configs:
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup() range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
goal_bias: 0.05 # When close to goal select goal, with this probability? default: 0.05 goal_bias: 0.05 # When close to goal select goal, with this probability? default: 0.05
delay_collision_checking: 1 # Stop collision checking as soon as C-free parent found. default 1 delay_collision_checking: 1 # Stop collision checking as soon as C-free parent found. default 1
planning_attempts: 3
TRRT: TRRT:
type: geometric::TRRT type: geometric::TRRT
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup() range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()

View file

@ -7,7 +7,7 @@ Panels:
- /MotionPlanning1 - /MotionPlanning1
- /MotionPlanning1/Planning Request1 - /MotionPlanning1/Planning Request1
Splitter Ratio: 0.5 Splitter Ratio: 0.5
Tree Height: 388 Tree Height: 200
- Class: rviz/Help - Class: rviz/Help
Name: Help Name: Help
- Class: rviz/Views - Class: rviz/Views
@ -40,18 +40,18 @@ Visualization Manager:
Plane Cell Count: 10 Plane Cell Count: 10
Reference Frame: <Fixed Frame> Reference Frame: <Fixed Frame>
Value: true Value: true
- Acceleration_Scaling_Factor: 0.1 - Acceleration_Scaling_Factor: 1
Class: moveit_rviz_plugin/MotionPlanning Class: moveit_rviz_plugin/MotionPlanning
Enabled: true Enabled: true
JointsTab_Use_Radians: true JointsTab_Use_Radians: true
Move Group Namespace: "" Move Group Namespace: ""
MoveIt_Allow_Approximate_IK: false MoveIt_Allow_Approximate_IK: true
MoveIt_Allow_External_Program: false MoveIt_Allow_External_Program: false
MoveIt_Allow_Replanning: false MoveIt_Allow_Replanning: false
MoveIt_Allow_Sensor_Positioning: false MoveIt_Allow_Sensor_Positioning: false
MoveIt_Planning_Attempts: 10 MoveIt_Planning_Attempts: 10
MoveIt_Planning_Time: 5 MoveIt_Planning_Time: 5
MoveIt_Use_Cartesian_Path: true MoveIt_Use_Cartesian_Path: false
MoveIt_Use_Constraint_Aware_IK: true MoveIt_Use_Constraint_Aware_IK: true
MoveIt_Workspace: MoveIt_Workspace:
Center: Center:
@ -177,10 +177,10 @@ Visualization Manager:
Joint Violation Color: 255; 0; 255 Joint Violation Color: 255; 0; 255
Planning Group: arm Planning Group: arm
Query Goal State: true Query Goal State: true
Query Start State: false Query Start State: true
Show Workspace: false Show Workspace: false
Start State Alpha: 1 Start State Alpha: 1
Start State Color: 0; 255; 0 Start State Color: 115; 210; 22
Planning Scene Topic: move_group/monitored_planning_scene Planning Scene Topic: move_group/monitored_planning_scene
Robot Description: robot_description Robot Description: robot_description
Scene Geometry: Scene Geometry:
@ -280,9 +280,9 @@ Visualization Manager:
Value: true Value: true
Robot Alpha: 0.5 Robot Alpha: 0.5
Show Robot Collision: false Show Robot Collision: false
Show Robot Visual: true Show Robot Visual: false
Value: true Value: true
Velocity_Scaling_Factor: 0.1 Velocity_Scaling_Factor: 1
- Alpha: 1 - Alpha: 1
Class: rviz/RobotModel Class: rviz/RobotModel
Collision Enabled: false Collision Enabled: false
@ -411,14 +411,14 @@ Visualization Manager:
Invert Z Axis: false Invert Z Axis: false
Name: Current View Name: Current View
Near Clip Distance: 0.009999999776482582 Near Clip Distance: 0.009999999776482582
Pitch: 0.5400000810623169 Pitch: 0.4850001335144043
Target Frame: base Target Frame: base
Yaw: 4.9563188552856445 Yaw: 6.006320953369141
Saved: ~ Saved: ~
Window Geometry: Window Geometry:
Displays: Displays:
collapsed: false collapsed: false
Height: 1016 Height: 820
Help: Help:
collapsed: false collapsed: false
Hide Left Dock: false Hide Left Dock: false
@ -427,9 +427,9 @@ Window Geometry:
collapsed: false collapsed: false
MotionPlanning - Trajectory Slider: MotionPlanning - Trajectory Slider:
collapsed: false collapsed: false
QMainWindow State: 000000ff00000000fd0000000100000000000001f30000039efc0200000007fb000000100044006900730070006c006100790073010000003d000001c1000000c900fffffffb0000000800480065006c00700000000342000000bb0000006e00fffffffb0000000a00560069006500770073000000010c000000a4000000a400fffffffb0000000c00430061006d00650072006100000002ff000001610000000000000000fb0000001e004d006f00740069006f006e00200050006c0061006e006e0069006e00670100000374000001890000000000000000fb00000044004d006f00740069006f006e0050006c0061006e006e0069006e00670020002d0020005400720061006a006500630074006f0072007900200053006c00690064006500720000000000ffffffff0000001600000016fb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e00670100000204000001d70000017d00ffffff0000053f0000039e00000001000000020000000100000002fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 QMainWindow State: 000000ff00000000fd0000000100000000000001f3000002dafc0200000007fb000000100044006900730070006c006100790073010000003d00000105000000c900fffffffb0000000800480065006c00700000000342000000bb0000006e00fffffffb0000000a00560069006500770073000000010c000000a4000000a400fffffffb0000000c00430061006d00650072006100000002ff000001610000000000000000fb0000001e004d006f00740069006f006e00200050006c0061006e006e0069006e00670100000374000001890000000000000000fb00000044004d006f00740069006f006e0050006c0061006e006e0069006e00670020002d0020005400720061006a006500630074006f0072007900200053006c00690064006500720100000148000000410000004100fffffffb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e0067010000018f000001880000017d00ffffff00000539000002da00000001000000020000000100000002fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
Views: Views:
collapsed: false collapsed: false
Width: 1848 Width: 1842
X: 72 X: 72
Y: 27 Y: 27

View file

@ -20,5 +20,7 @@
<param name="jiggle_fraction" value="$(arg jiggle_fraction)" /> <param name="jiggle_fraction" value="$(arg jiggle_fraction)" />
<rosparam command="load" file="$(find mycobot_630_gripper_moveit)/config/ompl_planning.yaml"/> <rosparam command="load" file="$(find mycobot_630_gripper_moveit)/config/ompl_planning.yaml"/>
<!-- <rosparam command="load" file="$(find mycobot_630_moveit)/config/ompl_planning.yaml"/> -->
</launch> </launch>

View file

@ -16,6 +16,8 @@
<!-- Start Benchmark Executable --> <!-- Start Benchmark Executable -->
<node name="$(anon moveit_benchmark)" pkg="moveit_ros_benchmarks" type="moveit_run_benchmark" args="$(arg cfg) --benchmark-planners" respawn="false" output="screen"> <node name="$(anon moveit_benchmark)" pkg="moveit_ros_benchmarks" type="moveit_run_benchmark" args="$(arg cfg) --benchmark-planners" respawn="false" output="screen">
<rosparam command="load" file="$(find mycobot_630_gripper_moveit)/config/ompl_planning.yaml"/> <rosparam command="load" file="$(find mycobot_630_gripper_moveit)/config/ompl_planning.yaml"/>
<!-- <rosparam command="load" file="$(find mycobot_630_moveit)/config/ompl_planning.yaml"/> -->
<rosparam command="load" file="$(find mycobot_630_gripper_moveit)/config/kinematics.yaml"/>
</node> </node>
</launch> </launch>

View file

@ -0,0 +1,68 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from socket import *
import math
import sys
import time
from multiprocessing import Lock
import rospy
from sensor_msgs.msg import JointState
from pymycobot.elephantrobot import ElephantRobot
global mc
def callback(data):
"""callback function,回调函数"""
# rospy.loginfo(rospy.get_caller_id() + "%s", data.position)
data_list = []
for index, value in enumerate(data.position):
radians_to_angles = round(math.degrees(value), 2)
data_list.append(radians_to_angles)
rospy.loginfo(rospy.get_caller_id() + "%s", data_list)
# mc.write_angles(data_list, 800)
for joint,angle in enumerate(data_list[:6]):
mc.write_angle(joint,angle,800)
for gripper_angle in data_list[6:]:
mc.set_cag_gripper_value(gripper_angle,800)
# excepted_joint_count = 13
# if len(data_list) == excepted_joint_count:
# mc.write_angles(data_list, 800)
# else:
# rospy.logwarn("关节数量不匹配,期望数量是%d,实际数量是%d",excepted_joint_count,len(data_list))
def listener():
global mc
rospy.init_node("control_slider", anonymous=True)
ip = rospy.get_param("~ip", "192.168.1.161")
port = rospy.get_param("~port", 5001)
print (ip, port)
mc = ElephantRobot(ip, int(port))
# START CLIENT,启动客户端
res = mc.start_client()
if res != "":
sys.exit(1)
mc.set_speed(90)
rospy.Subscriber("joint_states", JointState, callback)
# spin() simply keeps python from exiting until this node is stopped
# spin()只是阻止python退出直到该节点停止
print ("sping ...")
rospy.spin()
if __name__ == "__main__":
listener()

View file

@ -1,9 +1,12 @@
<launch> <launch>
<!-- <arg name="fake_execution_type" default="interpolate" /> -->
<!-- Set the param that trajectory_execution_manager needs to find the controller plugin --> <!-- Set the param that trajectory_execution_manager needs to find the controller plugin -->
<param name="moveit_controller_manager" value="moveit_fake_controller_manager/MoveItFakeControllerManager"/> <param name="moveit_controller_manager" value="moveit_fake_controller_manager/MoveItFakeControllerManager"/>
<!-- The rest of the params are specific to this plugin --> <!-- The rest of the params are specific to this plugin -->
<rosparam file="$(find mycobot_630_moveit)/config/fake_controllers.yaml"/> <rosparam file="$(find mycobot_630_moveit)/config/fake_controllers.yaml"/>
<!-- <rosparam subst_value="true" file="$(find mycobot_630_gripper_moveit)/config/fake_controllers.yaml"/> -->
</launch> </launch>

View file

@ -7,4 +7,5 @@
<!-- loads ros_controllers to the param server --> <!-- loads ros_controllers to the param server -->
<rosparam file="$(find mycobot_630_moveit)/config/ros_controllers.yaml"/> <rosparam file="$(find mycobot_630_moveit)/config/ros_controllers.yaml"/>
</launch> </launch>

View file

@ -5,14 +5,13 @@ Panels:
Property Tree Widget: Property Tree Widget:
Expanded: Expanded:
- /MotionPlanning1 - /MotionPlanning1
- /MotionPlanning1/Status1
- /MotionPlanning1/Scene Geometry1 - /MotionPlanning1/Scene Geometry1
- /MotionPlanning1/Scene Robot1 - /MotionPlanning1/Scene Robot1
- /MotionPlanning1/Planning Request1 - /MotionPlanning1/Planning Request1
- /MotionPlanning1/Planned Path1 - /MotionPlanning1/Planned Path1
- /RobotModel1 - /RobotModel1
Splitter Ratio: 0.4869215190410614 Splitter Ratio: 0.4869215190410614
Tree Height: 274 Tree Height: 396
- Class: rviz/Help - Class: rviz/Help
Name: Help Name: Help
- Class: rviz/Views - Class: rviz/Views
@ -82,6 +81,41 @@ Visualization Manager:
Show Axes: false Show Axes: false
Show Trail: false Show Trail: false
Value: true 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: joint1:
Alpha: 1 Alpha: 1
Show Axes: false Show Axes: false
@ -112,6 +146,16 @@ Visualization Manager:
Show Axes: false Show Axes: false
Show Trail: false Show Trail: false
Value: true Value: true
tool1:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
tool2:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
Loop Animation: false Loop Animation: false
Robot Alpha: 0.5 Robot Alpha: 0.5
Robot Color: 150; 50; 150 Robot Color: 150; 50; 150
@ -133,9 +177,9 @@ Visualization Manager:
Colliding Link Color: 255; 0; 0 Colliding Link Color: 255; 0; 0
Goal State Alpha: 1 Goal State Alpha: 1
Goal State Color: 250; 128; 0 Goal State Color: 250; 128; 0
Interactive Marker Size: 0.10000000149011612 Interactive Marker Size: 0.20000000298023224
Joint Violation Color: 255; 0; 255 Joint Violation Color: 255; 0; 255
Planning Group: arm_group Planning Group: arm
Query Goal State: true Query Goal State: true
Query Start State: true Query Start State: true
Show Workspace: false Show Workspace: false
@ -163,6 +207,41 @@ Visualization Manager:
Show Axes: false Show Axes: false
Show Trail: false Show Trail: false
Value: true 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: joint1:
Alpha: 1 Alpha: 1
Show Axes: false Show Axes: false
@ -193,6 +272,16 @@ Visualization Manager:
Show Axes: false Show Axes: false
Show Trail: false Show Trail: false
Value: true Value: true
tool1:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
tool2:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
Robot Alpha: 0.5 Robot Alpha: 0.5
Show Robot Collision: false Show Robot Collision: false
Show Robot Visual: false Show Robot Visual: false
@ -224,6 +313,41 @@ Visualization Manager:
Show Axes: false Show Axes: false
Show Trail: false Show Trail: false
Value: true 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: joint1:
Alpha: 1 Alpha: 1
Show Axes: false Show Axes: false
@ -254,6 +378,16 @@ Visualization Manager:
Show Axes: false Show Axes: false
Show Trail: false Show Trail: false
Value: true Value: true
tool1:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
tool2:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
Robot Alpha: 1 Robot Alpha: 1
Show Robot Collision: false Show Robot Collision: false
Show Robot Visual: true Show Robot Visual: true
@ -273,6 +407,41 @@ Visualization Manager:
Show Axes: false Show Axes: false
Show Trail: false Show Trail: false
Value: true 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: joint1:
Alpha: 1 Alpha: 1
Show Axes: false Show Axes: false
@ -303,6 +472,16 @@ Visualization Manager:
Show Axes: false Show Axes: false
Show Trail: false Show Trail: false
Value: true Value: true
tool1:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
tool2:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
Name: RobotModel Name: RobotModel
Robot Description: robot_description Robot Description: robot_description
TF Prefix: "" TF Prefix: ""
@ -333,17 +512,17 @@ Visualization Manager:
Value: false Value: false
Field of View: 0.7853981852531433 Field of View: 0.7853981852531433
Focal Point: Focal Point:
X: -0.06067162752151489 X: 0.041976600885391235
Y: 0.045795738697052 Y: -0.019326984882354736
Z: 1.490174383889098e-08 Z: 1.490174383889098e-08
Focal Shape Fixed Size: true Focal Shape Fixed Size: true
Focal Shape Size: 0.05000000074505806 Focal Shape Size: 0.05000000074505806
Invert Z Axis: false Invert Z Axis: false
Name: Current View Name: Current View
Near Clip Distance: 0.009999999776482582 Near Clip Distance: 0.009999999776482582
Pitch: 0.25979647040367126 Pitch: 0.5597964525222778
Target Frame: base Target Frame: base
Yaw: 3.2899534702301025 Yaw: 6.1299567222595215
Saved: ~ Saved: ~
Window Geometry: Window Geometry:
Displays: Displays:
@ -357,7 +536,7 @@ Window Geometry:
collapsed: false collapsed: false
MotionPlanning - Trajectory Slider: MotionPlanning - Trajectory Slider:
collapsed: false collapsed: false
QMainWindow State: 000000ff00000000fd0000000100000000000001f30000039efc0200000007fb000000100044006900730070006c006100790073010000003d0000014f000000c900fffffffb0000000800480065006c00700000000342000000bb0000006e00fffffffb0000000a0056006900650077007300000003b0000000b0000000a400fffffffb0000000c00430061006d00650072006100000002ff000001610000000000000000fb0000001e004d006f00740069006f006e00200050006c0061006e006e0069006e00670100000374000001890000000000000000fb00000044004d006f00740069006f006e0050006c0061006e006e0069006e00670020002d0020005400720061006a006500630074006f0072007900200053006c00690064006500720100000192000000530000004100fffffffb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e006701000001eb000001f00000018800ffffff0000053f0000039e00000001000000020000000100000002fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 QMainWindow State: 000000ff00000000fd0000000100000000000001f30000039efc0200000007fb000000100044006900730070006c006100790073010000003d000001c9000000c900fffffffb0000000800480065006c00700000000342000000bb0000006e00fffffffb0000000a0056006900650077007300000003b0000000b0000000a400fffffffb0000000c00430061006d00650072006100000002ff000001610000000000000000fb0000001e004d006f00740069006f006e00200050006c0061006e006e0069006e00670100000374000001890000000000000000fb00000044004d006f00740069006f006e0050006c0061006e006e0069006e00670020002d0020005400720061006a006500630074006f0072007900200053006c0069006400650072010000020c000000410000004100fffffffb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e00670100000253000001880000018800ffffff0000053f0000039e00000001000000020000000100000002fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
Views: Views:
collapsed: false collapsed: false
Width: 1848 Width: 1848

View file

@ -6,24 +6,28 @@
<arg name="robot_description" default="robot_description"/> <arg name="robot_description" default="robot_description"/>
<!-- Load universal robot description format (URDF) --> <!-- Load universal robot description format (URDF) -->
<!-- <param if="$(arg load_robot_description)" name="$(arg robot_description)" textfile="$(find mycobot_description)/urdf/mycobot_pro_630/mycobot_pro_630.urdf"/> -->
<param if="$(arg load_robot_description)" name="$(arg robot_description)" textfile="$(find mycobot_description)/urdf/mycobot_pro_630/mycobot_630.urdf"/> <param if="$(arg load_robot_description)" name="$(arg robot_description)" textfile="$(find mycobot_description)/urdf/mycobot_pro_630/mycobot_630.urdf"/>
<!-- <param if="$(arg load_robot_description)" name="$(arg robot_description)" textfile="$(find mycobot_description)/urdf/mycobot_pro_630/mycobot_630_gripper.urdf"/> -->
<!-- The semantic description that corresponds to the URDF --> <!-- The semantic description that corresponds to the URDF -->
<param name="$(arg robot_description)_semantic" textfile="$(find mycobot_630_moveit)/config/firefighter.srdf" /> <param name="$(arg robot_description)_semantic" textfile="$(find mycobot_630_moveit)/config/firefighter.srdf" />
<!-- <param name="$(arg robot_description)_semantic" textfile="$(find mycobot_280_moveit)/config/firefighter.srdf" /> --> <!-- <param name="$(arg robot_description)_semantic" textfile="$(find mycobot_630_gripper_moveit)/config/firefighter.srdf" /> -->
<!-- Load updated joint limits (override information from URDF) --> <!-- Load updated joint limits (override information from URDF) -->
<group ns="$(arg robot_description)_planning"> <group ns="$(arg robot_description)_planning">
<rosparam command="load" file="$(find mycobot_630_moveit)/config/joint_limits.yaml"/> <rosparam command="load" file="$(find mycobot_630_moveit)/config/joint_limits.yaml"/>
<!-- <rosparam command="load" file="$(find mycobot_630_gripper_moveit)/config/joint_limits.yaml"/>
<rosparam command="load" file="$(find mycobot_630_gripper_moveit)/config/cartesian_limits.yaml"/> -->
</group> </group>
<!-- Load default settings for kinematics; these settings are overridden by settings in a node's namespace --> <!-- Load default settings for kinematics; these settings are overridden by settings in a node's namespace -->
<group ns="$(arg robot_description)_kinematics"> <group ns="$(arg robot_description)_kinematics">
<rosparam command="load" file="$(find mycobot_630_moveit)/config/kinematics.yaml"/> <rosparam command="load" file="$(find mycobot_630_moveit)/config/kinematics.yaml"/>
<!-- <rosparam command="load" file="$(find mycobot_630_gripper_moveit)/config/kinematics.yaml"/> -->
</group> </group>
</launch> </launch>

View file

@ -31,7 +31,7 @@ def listener():
global mc global mc
rospy.init_node("control_slider", anonymous=True) rospy.init_node("control_slider", anonymous=True)
ip = rospy.get_param("~ip", "192.168.1.159") ip = rospy.get_param("~ip", "192.168.1.161")
port = rospy.get_param("~port", 5001) port = rospy.get_param("~port", 5001)
print (ip, port) print (ip, port)
mc = ElephantRobot(ip, int(port)) mc = ElephantRobot(ip, int(port))

View file

@ -0,0 +1,10 @@
cmake_minimum_required(VERSION 3.1.3)
project(new_mycobot_630_gripper_moveit)
find_package(catkin REQUIRED)
catkin_package()
install(DIRECTORY launch DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
PATTERN "setup_assistant.launch" EXCLUDE)
install(DIRECTORY config DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION})

View file

@ -0,0 +1,5 @@
cartesian_limits:
max_trans_vel: 1
max_trans_acc: 2.25
max_trans_dec: -5
max_rot_vel: 1.57

View file

@ -0,0 +1,18 @@
planning_time_limit: 10.0
max_iterations: 200
max_iterations_after_collision_free: 5
smoothness_cost_weight: 0.1
obstacle_cost_weight: 1.0
learning_rate: 0.01
smoothness_cost_velocity: 0.0
smoothness_cost_acceleration: 1.0
smoothness_cost_jerk: 0.0
ridge_factor: 0.0
use_pseudo_inverse: false
pseudo_inverse_ridge_factor: 1e-4
joint_update_limit: 0.1
collision_clearance: 0.2
collision_threshold: 0.07
use_stochastic_descent: true
enable_failure_recovery: false
max_recovery_attempts: 5

View file

@ -0,0 +1,26 @@
controller_list:
- name: fake_arm_group_controller
type: $(arg fake_execution_type)
joints:
# - joint2_to_joint1
# - joint3_to_joint2
# - joint4_to_joint3
# - joint5_to_joint4
# - joint6_to_joint5
# - joint6output_to_joint6
- joint1_to_base
- joint2_to_joint1
- joint3_to_joint2
- joint4_to_joint3
- joint5_to_joint4
- joint6_to_joint5
- joint6output_to_tool1
- name: fake_gripper_group_controller
type: $(arg fake_execution_type)
joints:
- gripper_controller
# initial: # Define initial robot poses per group
# - group: arm_group
# pose: init_pose
# - group: gripper_group
# pose: init_gripper

View file

@ -0,0 +1,225 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--This does not replace URDF, and is not an extension of URDF.
This is a format for representing semantic information about the robot structure.
A URDF file must exist for this robot as well, where the joints and the links that are referenced are defined
-->
<robot name="firefighter">
<!--GROUPS: Representation of a set of joints and links. This can be useful for specifying DOF to plan for, defining arms, end effectors, etc-->
<!--LINKS: When a link is specified, the parent joint of that link (if it exists) is automatically included-->
<!--JOINTS: When a joint is specified, the child link of that joint (which will always exist) is automatically included-->
<!--CHAINS: When a chain is specified, all the links along the chain (including endpoints) are included in the group. Additionally, all the joints that are parents to included links are also included. This means that joints along the chain and the parent joint of the base link are included in the group-->
<!--SUBGROUPS: Groups can also be formed by referencing to already defined group names-->
<!-- <group name="arm">
<joint name="joint1_to_base"/>
<joint name="joint2_to_joint1"/>
<joint name="joint3_to_joint2"/>
<joint name="joint4_to_joint3"/>
<joint name="joint5_to_joint4"/>
<joint name="joint6_to_joint5"/>
<joint name="joint6output_to_tool1"/>
<joint name="tool1_to_tool2"/>
</group>
<group name="gripper">
<joint name="tool2_to_gripper_base"/>
<joint name="gripper_base_to_gripper_left2"/>
<joint name="gripper_base_to_gripper_right2"/>
<joint name="gripper_base_to_gripper_right3"/>
<joint name="gripper_right3_to_gripper_right1"/>
<joint name="gripper_controller"/>
<joint name="gripper_left3_to_gripper_left1"/>
</group> -->
<group name="arm_group">
<chain base_link="base" tip_link="joint6"/>
</group>
<group name="gripper_group">
<chain base_link="gripper_base" tip_link="gripper_left3"/>
</group>
<group_state name="init_pose" group="arm_group">
<joint name="joint1_to_base" value="0"/>
<joint name="joint2_to_joint1" value="0"/>
<joint name="joint3_to_joint2" value="0"/>
<joint name="joint4_to_joint3" value="0"/>
<joint name="joint5_to_joint4" value="0"/>
<joint name="joint6_to_joint5" value="0"/>
<!-- <joint name="joint6output_to_joint6" value="0"/> -->
</group_state>
<!--END EFFECTOR: Purpose: Represent information about an end effector.-->
<end_effector name="gripper" parent_link="joint6" group="gripper_group" parent_group="arm_group"/>
<!--VIRTUAL JOINT: Purpose: this element defines a virtual joint between a robot link and an external frame of reference (considered fixed with respect to the robot)-->
<virtual_joint name="virtual_joint" type="fixed" parent_frame="world" child_link="base"/>
<!--END EFFECTOR: Purpose: Represent information about an end effector.-->
<!-- <end_effector name="gripper_end" parent_link="tool2" group="gripper"/> -->
<!--PASSIVE JOINT: Purpose: this element is used to mark joints that are not actuated-->
<passive_joint name="gripper_base_to_gripper_left2"/>
<passive_joint name="gripper_base_to_gripper_right2"/>
<passive_joint name="gripper_base_to_gripper_right3"/>
<passive_joint name="gripper_right3_to_gripper_right1"/>
<passive_joint name="gripper_left3_to_gripper_left1"/>
<!--DISABLE COLLISIONS: By default it is assumed that any link of the robot could potentially come into collision with any other link in the robot. This tag disables collision checking between a specified pair of links. -->
<!-- <disable_collisions link1="base" link2="gripper_base" reason="Never"/>
<disable_collisions link1="base" link2="gripper_left1" reason="Never"/>
<disable_collisions link1="base" link2="gripper_left2" reason="Never"/>
<disable_collisions link1="base" link2="gripper_left3" reason="Never"/>
<disable_collisions link1="base" link2="gripper_right1" reason="Never"/>
<disable_collisions link1="base" link2="gripper_right2" reason="Never"/>
<disable_collisions link1="base" link2="joint1" reason="Adjacent"/>
<disable_collisions link1="gripper_base" link2="gripper_left1" reason="Never"/>
<disable_collisions link1="gripper_base" link2="gripper_left2" reason="Adjacent"/>
<disable_collisions link1="gripper_base" link2="gripper_left3" reason="Adjacent"/>
<disable_collisions link1="gripper_base" link2="gripper_right1" reason="Never"/>
<disable_collisions link1="gripper_base" link2="gripper_right2" reason="Adjacent"/>
<disable_collisions link1="gripper_base" link2="gripper_right3" reason="Adjacent"/>
<disable_collisions link1="gripper_base" link2="joint1" reason="Never"/>
<disable_collisions link1="gripper_base" link2="joint2" reason="Never"/>
<disable_collisions link1="gripper_base" link2="joint3" reason="Never"/>
<disable_collisions link1="gripper_base" link2="joint4" reason="Never"/>
<disable_collisions link1="gripper_base" link2="joint5" reason="Never"/>
<disable_collisions link1="gripper_base" link2="joint6" reason="Never"/>
<disable_collisions link1="gripper_base" link2="tool1" reason="Never"/>
<disable_collisions link1="gripper_base" link2="tool2" reason="Adjacent"/>
<disable_collisions link1="gripper_left1" link2="gripper_left2" reason="Default"/>
<disable_collisions link1="gripper_left1" link2="gripper_left3" reason="Adjacent"/>
<disable_collisions link1="gripper_left1" link2="gripper_right1" reason="Never"/>
<disable_collisions link1="gripper_left1" link2="gripper_right2" reason="Never"/>
<disable_collisions link1="gripper_left1" link2="gripper_right3" reason="Never"/>
<disable_collisions link1="gripper_left1" link2="joint1" reason="Never"/>
<disable_collisions link1="gripper_left1" link2="joint2" reason="Never"/>
<disable_collisions link1="gripper_left1" link2="joint3" reason="Never"/>
<disable_collisions link1="gripper_left1" link2="joint4" reason="Never"/>
<disable_collisions link1="gripper_left1" link2="joint5" reason="Never"/>
<disable_collisions link1="gripper_left1" link2="joint6" reason="Never"/>
<disable_collisions link1="gripper_left1" link2="tool1" reason="Never"/>
<disable_collisions link1="gripper_left1" link2="tool2" reason="Never"/>
<disable_collisions link1="gripper_left2" link2="gripper_left3" reason="Default"/>
<disable_collisions link1="gripper_left2" link2="gripper_right1" reason="Never"/>
<disable_collisions link1="gripper_left2" link2="gripper_right2" reason="Never"/>
<disable_collisions link1="gripper_left2" link2="gripper_right3" reason="Never"/>
<disable_collisions link1="gripper_left2" link2="joint1" reason="Never"/>
<disable_collisions link1="gripper_left2" link2="joint2" reason="Never"/>
<disable_collisions link1="gripper_left2" link2="joint3" reason="Never"/>
<disable_collisions link1="gripper_left2" link2="joint4" reason="Never"/>
<disable_collisions link1="gripper_left2" link2="joint5" reason="Never"/>
<disable_collisions link1="gripper_left2" link2="joint6" reason="Never"/>
<disable_collisions link1="gripper_left2" link2="tool1" reason="Never"/>
<disable_collisions link1="gripper_left2" link2="tool2" reason="Never"/>
<disable_collisions link1="gripper_left3" link2="gripper_right1" reason="Never"/>
<disable_collisions link1="gripper_left3" link2="gripper_right2" reason="Never"/>
<disable_collisions link1="gripper_left3" link2="gripper_right3" reason="Default"/>
<disable_collisions link1="gripper_left3" link2="joint1" reason="Never"/>
<disable_collisions link1="gripper_left3" link2="joint2" reason="Never"/>
<disable_collisions link1="gripper_left3" link2="joint3" reason="Never"/>
<disable_collisions link1="gripper_left3" link2="joint4" reason="Never"/>
<disable_collisions link1="gripper_left3" link2="joint5" reason="Never"/>
<disable_collisions link1="gripper_left3" link2="joint6" reason="Never"/>
<disable_collisions link1="gripper_left3" link2="tool1" reason="Never"/>
<disable_collisions link1="gripper_left3" link2="tool2" reason="Never"/>
<disable_collisions link1="gripper_right1" link2="gripper_right2" reason="Default"/>
<disable_collisions link1="gripper_right1" link2="gripper_right3" reason="Adjacent"/>
<disable_collisions link1="gripper_right1" link2="joint1" reason="Never"/>
<disable_collisions link1="gripper_right1" link2="joint2" reason="Never"/>
<disable_collisions link1="gripper_right1" link2="joint3" reason="Never"/>
<disable_collisions link1="gripper_right1" link2="joint4" reason="Never"/>
<disable_collisions link1="gripper_right1" link2="joint5" reason="Never"/>
<disable_collisions link1="gripper_right1" link2="joint6" reason="Never"/>
<disable_collisions link1="gripper_right1" link2="tool1" reason="Never"/>
<disable_collisions link1="gripper_right1" link2="tool2" reason="Never"/>
<disable_collisions link1="gripper_right2" link2="gripper_right3" reason="Never"/>
<disable_collisions link1="gripper_right2" link2="joint1" reason="Never"/>
<disable_collisions link1="gripper_right2" link2="joint2" reason="Never"/>
<disable_collisions link1="gripper_right2" link2="joint3" reason="Never"/>
<disable_collisions link1="gripper_right2" link2="joint4" reason="Never"/>
<disable_collisions link1="gripper_right2" link2="joint5" reason="Never"/>
<disable_collisions link1="gripper_right2" link2="joint6" reason="Never"/>
<disable_collisions link1="gripper_right2" link2="tool1" reason="Never"/>
<disable_collisions link1="gripper_right2" link2="tool2" reason="Never"/>
<disable_collisions link1="gripper_right3" link2="joint5" reason="Default"/>
<disable_collisions link1="gripper_right3" link2="joint6" reason="Default"/>
<disable_collisions link1="gripper_right3" link2="tool1" reason="Default"/>
<disable_collisions link1="gripper_right3" link2="tool2" reason="Default"/>
<disable_collisions link1="joint1" link2="joint2" reason="Adjacent"/>
<disable_collisions link1="joint1" link2="joint4" reason="Never"/>
<disable_collisions link1="joint2" link2="joint3" reason="Adjacent"/>
<disable_collisions link1="joint3" link2="joint4" reason="Adjacent"/>
<disable_collisions link1="joint3" link2="joint5" reason="Never"/>
<disable_collisions link1="joint3" link2="joint6" reason="Never"/>
<disable_collisions link1="joint4" link2="joint5" reason="Adjacent"/>
<disable_collisions link1="joint4" link2="joint6" reason="Never"/>
<disable_collisions link1="joint4" link2="tool1" reason="Never"/>
<disable_collisions link1="joint4" link2="tool2" reason="Never"/>
<disable_collisions link1="joint5" link2="joint6" reason="Adjacent"/>
<disable_collisions link1="joint5" link2="tool1" reason="Never"/>
<disable_collisions link1="joint5" link2="tool2" reason="Never"/>
<disable_collisions link1="joint6" link2="tool1" reason="Adjacent"/>
<disable_collisions link1="joint6" link2="tool2" reason="Never"/>
<disable_collisions link1="tool1" link2="tool2" reason="Adjacent"/> -->
<disable_collisions link1="base" link2="joint1" reason="Adjacent"/>
<disable_collisions link1="base" link2="joint2" reason="Never"/>
<disable_collisions link1="gripper_base" link2="gripper_left1" reason="Never"/>
<disable_collisions link1="gripper_base" link2="gripper_left2" reason="Adjacent"/>
<disable_collisions link1="gripper_base" link2="gripper_left3" reason="Adjacent"/>
<disable_collisions link1="gripper_base" link2="gripper_right1" reason="Never"/>
<disable_collisions link1="gripper_base" link2="gripper_right2" reason="Adjacent"/>
<disable_collisions link1="gripper_base" link2="gripper_right3" reason="Adjacent"/>
<disable_collisions link1="gripper_base" link2="joint5" reason="Never"/>
<disable_collisions link1="gripper_base" link2="joint6" reason="Never"/>
<disable_collisions link1="gripper_base" link2="tool1" reason="Never"/>
<disable_collisions link1="gripper_base" link2="tool2" reason="Adjacent"/>
<disable_collisions link1="gripper_left1" link2="gripper_left2" reason="Adjacent"/>
<disable_collisions link1="gripper_left1" link2="gripper_left3" reason="Adjacent"/>
<disable_collisions link1="gripper_left1" link2="gripper_right1" reason="Default"/>
<disable_collisions link1="gripper_left1" link2="gripper_right2" reason="Never"/>
<disable_collisions link1="gripper_left1" link2="gripper_right3" reason="Never"/>
<disable_collisions link1="gripper_left1" link2="joint5" reason="Never"/>
<disable_collisions link1="gripper_left1" link2="joint6" reason="Never"/>
<disable_collisions link1="gripper_left1" link2="tool1" reason="Never"/>
<disable_collisions link1="gripper_left1" link2="tool2" reason="Never"/>
<disable_collisions link1="gripper_left2" link2="gripper_left3" reason="Default"/>
<disable_collisions link1="gripper_left2" link2="gripper_right1" reason="Never"/>
<disable_collisions link1="gripper_left2" link2="gripper_right2" reason="Never"/>
<disable_collisions link1="gripper_left2" link2="gripper_right3" reason="Never"/>
<disable_collisions link1="gripper_left2" link2="joint5" reason="Never"/>
<disable_collisions link1="gripper_left2" link2="joint6" reason="Never"/>
<disable_collisions link1="gripper_left2" link2="tool1" reason="Never"/>
<disable_collisions link1="gripper_left2" link2="tool2" reason="Never"/>
<disable_collisions link1="gripper_left3" link2="gripper_right1" reason="Never"/>
<disable_collisions link1="gripper_left3" link2="gripper_right2" reason="Never"/>
<disable_collisions link1="gripper_left3" link2="gripper_right3" reason="Never"/>
<disable_collisions link1="gripper_left3" link2="joint5" reason="Never"/>
<disable_collisions link1="gripper_left3" link2="joint6" reason="Never"/>
<disable_collisions link1="gripper_left3" link2="tool1" reason="Never"/>
<disable_collisions link1="gripper_left3" link2="tool2" reason="Never"/>
<disable_collisions link1="gripper_right1" link2="gripper_right2" reason="Adjacent"/>
<disable_collisions link1="gripper_right1" link2="gripper_right3" reason="Adjacent"/>
<disable_collisions link1="gripper_right1" link2="joint5" reason="Never"/>
<disable_collisions link1="gripper_right1" link2="joint6" reason="Never"/>
<disable_collisions link1="gripper_right1" link2="tool1" reason="Never"/>
<disable_collisions link1="gripper_right1" link2="tool2" reason="Never"/>
<disable_collisions link1="gripper_right2" link2="gripper_right3" reason="Default"/>
<disable_collisions link1="gripper_right2" link2="joint5" reason="Never"/>
<disable_collisions link1="gripper_right2" link2="joint6" reason="Never"/>
<disable_collisions link1="gripper_right2" link2="tool1" reason="Never"/>
<disable_collisions link1="gripper_right2" link2="tool2" reason="Never"/>
<disable_collisions link1="gripper_right3" link2="joint5" reason="Never"/>
<disable_collisions link1="gripper_right3" link2="joint6" reason="Never"/>
<disable_collisions link1="gripper_right3" link2="tool1" reason="Never"/>
<disable_collisions link1="gripper_right3" link2="tool2" reason="Never"/>
<disable_collisions link1="joint1" link2="joint2" reason="Adjacent"/>
<disable_collisions link1="joint1" link2="tool2" reason="Never"/>
<disable_collisions link1="joint2" link2="joint3" reason="Adjacent"/>
<disable_collisions link1="joint2" link2="tool2" reason="Never"/>
<disable_collisions link1="joint3" link2="joint4" reason="Adjacent"/>
<disable_collisions link1="joint3" link2="tool2" reason="Never"/>
<disable_collisions link1="joint4" link2="joint5" reason="Adjacent"/>
<disable_collisions link1="joint4" link2="tool2" reason="Never"/>
<disable_collisions link1="joint5" link2="joint6" reason="Adjacent"/>
<disable_collisions link1="joint5" link2="tool2" reason="Never"/>
<disable_collisions link1="joint6" link2="tool1" reason="Adjacent"/>
<disable_collisions link1="joint6" link2="tool2" reason="Never"/>
<disable_collisions link1="tool1" link2="tool2" reason="Adjacent"/>
</robot>

View file

@ -0,0 +1,4 @@
# Publish joint_states
joint_state_controller:
type: joint_state_controller/JointStateController
publish_rate: 50

View file

@ -0,0 +1,45 @@
# joint_limits.yaml allows the dynamics properties specified in the URDF to be overwritten or augmented as needed
# For beginners, we downscale velocity and acceleration limits.
# You can always specify higher scaling factors (<= 1.0) in your motion requests. # Increase the values below to 1.0 to always move at maximum speed.
default_velocity_scaling_factor: 0.1
default_acceleration_scaling_factor: 0.1
# Specific joint properties can be changed with the keys [max_position, min_position, max_velocity, max_acceleration]
# Joint limits can be turned off with [has_velocity_limits, has_acceleration_limits]
joint_limits:
gripper_controller:
has_velocity_limits: false
max_velocity: 0
has_acceleration_limits: false
max_acceleration: 0
joint2_to_joint1:
has_velocity_limits: false
max_velocity: 0
has_acceleration_limits: false
max_acceleration: 0
joint3_to_joint2:
has_velocity_limits: false
max_velocity: 0
has_acceleration_limits: false
max_acceleration: 0
joint4_to_joint3:
has_velocity_limits: false
max_velocity: 0
has_acceleration_limits: false
max_acceleration: 0
joint5_to_joint4:
has_velocity_limits: false
max_velocity: 0
has_acceleration_limits: false
max_acceleration: 0
joint6_to_joint5:
has_velocity_limits: false
max_velocity: 0
has_acceleration_limits: false
max_acceleration: 0
joint6output_to_joint6:
has_velocity_limits: false
max_velocity: 0
has_acceleration_limits: false
max_acceleration: 0

View file

@ -0,0 +1,10 @@
arm_group:
# arm:
kinematics_solver: kdl_kinematics_plugin/KDLKinematicsPlugin
kinematics_solver_search_resolution: 0.005
kinematics_solver_timeout: 0.005
gripper_group:
# gripper:
kinematics_solver: kdl_kinematics_plugin/KDLKinematicsPlugin
kinematics_solver_search_resolution: 0.005
kinematics_solver_timeout: 0.005

View file

@ -0,0 +1,187 @@
planner_configs:
AnytimePathShortening:
type: geometric::AnytimePathShortening
shortcut: true # Attempt to shortcut all new solution paths
hybridize: true # Compute hybrid solution trajectories
max_hybrid_paths: 24 # Number of hybrid paths generated per iteration
num_planners: 4 # The number of default planners to use for planning
planners: "" # A comma-separated list of planner types (e.g., "PRM,EST,RRTConnect"Optionally, planner parameters can be passed to change the default:"PRM[max_nearest_neighbors=5],EST[goal_bias=.5],RRT[range=10. goal_bias=.1]"
SBL:
type: geometric::SBL
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
EST:
type: geometric::EST
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0 setup()
goal_bias: 0.05 # When close to goal select goal, with this probability. default: 0.05
LBKPIECE:
type: geometric::LBKPIECE
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
border_fraction: 0.9 # Fraction of time focused on boarder default: 0.9
min_valid_path_fraction: 0.5 # Accept partially valid moves above fraction. default: 0.5
BKPIECE:
type: geometric::BKPIECE
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
border_fraction: 0.9 # Fraction of time focused on boarder default: 0.9
failed_expansion_score_factor: 0.5 # When extending motion fails, scale score by factor. default: 0.5
min_valid_path_fraction: 0.5 # Accept partially valid moves above fraction. default: 0.5
KPIECE:
type: geometric::KPIECE
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
goal_bias: 0.05 # When close to goal select goal, with this probability. default: 0.05
border_fraction: 0.9 # Fraction of time focused on boarder default: 0.9 (0.0,1.]
failed_expansion_score_factor: 0.5 # When extending motion fails, scale score by factor. default: 0.5
min_valid_path_fraction: 0.5 # Accept partially valid moves above fraction. default: 0.5
RRT:
type: geometric::RRT
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
goal_bias: 0.05 # When close to goal select goal, with this probability? default: 0.05
RRTConnect:
type: geometric::RRTConnect
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
RRTstar:
type: geometric::RRTstar
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
goal_bias: 0.05 # When close to goal select goal, with this probability? default: 0.05
delay_collision_checking: 1 # Stop collision checking as soon as C-free parent found. default 1
TRRT:
type: geometric::TRRT
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
goal_bias: 0.05 # When close to goal select goal, with this probability? default: 0.05
max_states_failed: 10 # when to start increasing temp. default: 10
temp_change_factor: 2.0 # how much to increase or decrease temp. default: 2.0
min_temperature: 10e-10 # lower limit of temp change. default: 10e-10
init_temperature: 10e-6 # initial temperature. default: 10e-6
frountier_threshold: 0.0 # dist new state to nearest neighbor to disqualify as frontier. default: 0.0 set in setup()
frountierNodeRatio: 0.1 # 1/10, or 1 nonfrontier for every 10 frontier. default: 0.1
k_constant: 0.0 # value used to normalize expresssion. default: 0.0 set in setup()
PRM:
type: geometric::PRM
max_nearest_neighbors: 10 # use k nearest neighbors. default: 10
PRMstar:
type: geometric::PRMstar
FMT:
type: geometric::FMT
num_samples: 1000 # number of states that the planner should sample. default: 1000
radius_multiplier: 1.1 # multiplier used for the nearest neighbors search radius. default: 1.1
nearest_k: 1 # use Knearest strategy. default: 1
cache_cc: 1 # use collision checking cache. default: 1
heuristics: 0 # activate cost to go heuristics. default: 0
extended_fmt: 1 # activate the extended FMT*: adding new samples if planner does not finish successfully. default: 1
BFMT:
type: geometric::BFMT
num_samples: 1000 # number of states that the planner should sample. default: 1000
radius_multiplier: 1.0 # multiplier used for the nearest neighbors search radius. default: 1.0
nearest_k: 1 # use the Knearest strategy. default: 1
balanced: 0 # exploration strategy: balanced true expands one tree every iteration. False will select the tree with lowest maximum cost to go. default: 1
optimality: 1 # termination strategy: optimality true finishes when the best possible path is found. Otherwise, the algorithm will finish when the first feasible path is found. default: 1
heuristics: 1 # activates cost to go heuristics. default: 1
cache_cc: 1 # use the collision checking cache. default: 1
extended_fmt: 1 # Activates the extended FMT*: adding new samples if planner does not finish successfully. default: 1
PDST:
type: geometric::PDST
STRIDE:
type: geometric::STRIDE
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
goal_bias: 0.05 # When close to goal select goal, with this probability. default: 0.05
use_projected_distance: 0 # whether nearest neighbors are computed based on distances in a projection of the state rather distances in the state space itself. default: 0
degree: 16 # desired degree of a node in the Geometric Near-neightbor Access Tree (GNAT). default: 16
max_degree: 18 # max degree of a node in the GNAT. default: 12
min_degree: 12 # min degree of a node in the GNAT. default: 12
max_pts_per_leaf: 6 # max points per leaf in the GNAT. default: 6
estimated_dimension: 0.0 # estimated dimension of the free space. default: 0.0
min_valid_path_fraction: 0.2 # Accept partially valid moves above fraction. default: 0.2
BiTRRT:
type: geometric::BiTRRT
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
temp_change_factor: 0.1 # how much to increase or decrease temp. default: 0.1
init_temperature: 100 # initial temperature. default: 100
frountier_threshold: 0.0 # dist new state to nearest neighbor to disqualify as frontier. default: 0.0 set in setup()
frountier_node_ratio: 0.1 # 1/10, or 1 nonfrontier for every 10 frontier. default: 0.1
cost_threshold: 1e300 # the cost threshold. Any motion cost that is not better will not be expanded. default: inf
LBTRRT:
type: geometric::LBTRRT
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
goal_bias: 0.05 # When close to goal select goal, with this probability. default: 0.05
epsilon: 0.4 # optimality approximation factor. default: 0.4
BiEST:
type: geometric::BiEST
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
ProjEST:
type: geometric::ProjEST
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
goal_bias: 0.05 # When close to goal select goal, with this probability. default: 0.05
LazyPRM:
type: geometric::LazyPRM
range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
LazyPRMstar:
type: geometric::LazyPRMstar
SPARS:
type: geometric::SPARS
stretch_factor: 3.0 # roadmap spanner stretch factor. multiplicative upper bound on path quality. It does not make sense to make this parameter more than 3. default: 3.0
sparse_delta_fraction: 0.25 # delta fraction for connection distance. This value represents the visibility range of sparse samples. default: 0.25
dense_delta_fraction: 0.001 # delta fraction for interface detection. default: 0.001
max_failures: 1000 # maximum consecutive failure limit. default: 1000
SPARStwo:
type: geometric::SPARStwo
stretch_factor: 3.0 # roadmap spanner stretch factor. multiplicative upper bound on path quality. It does not make sense to make this parameter more than 3. default: 3.0
sparse_delta_fraction: 0.25 # delta fraction for connection distance. This value represents the visibility range of sparse samples. default: 0.25
dense_delta_fraction: 0.001 # delta fraction for interface detection. default: 0.001
max_failures: 5000 # maximum consecutive failure limit. default: 5000
arm_group:
# arm:
default_planner_config: RRTConnect
planner_configs:
- AnytimePathShortening
- SBL
- EST
- LBKPIECE
- BKPIECE
- KPIECE
- RRT
- RRTConnect
- RRTstar
- TRRT
- PRM
- PRMstar
- FMT
- BFMT
- PDST
- STRIDE
- BiTRRT
- LBTRRT
- BiEST
- ProjEST
- LazyPRM
- LazyPRMstar
- SPARS
- SPARStwo
projection_evaluator: joints(joint2_to_joint1,joint3_to_joint2)
longest_valid_segment_fraction: 0.005
gripper_group:
# gripper:
default_planner_config: RRTConnect
planner_configs:
- AnytimePathShortening
- SBL
- EST
- LBKPIECE
- BKPIECE
- KPIECE
- RRT
- RRTConnect
- RRTstar
- TRRT
- PRM
- PRMstar
- FMT
- BFMT
- PDST
- STRIDE
- BiTRRT
- LBTRRT
- BiEST
- ProjEST
- LazyPRM
- LazyPRMstar
- SPARS
- SPARStwo

View file

@ -0,0 +1,52 @@
arm_group_controller:
# arm_controller:
type: effort_controllers/JointTrajectoryController
joints:
- joint2_to_joint1
- joint3_to_joint2
- joint4_to_joint3
- joint5_to_joint4
- joint6_to_joint5
- joint6output_to_joint6
gains:
joint2_to_joint1:
p: 100
d: 1
i: 1
i_clamp: 1
joint3_to_joint2:
p: 100
d: 1
i: 1
i_clamp: 1
joint4_to_joint3:
p: 100
d: 1
i: 1
i_clamp: 1
joint5_to_joint4:
p: 100
d: 1
i: 1
i_clamp: 1
joint6_to_joint5:
p: 100
d: 1
i: 1
i_clamp: 1
joint6output_to_joint6:
p: 100
d: 1
i: 1
i_clamp: 1
gripper_group_controller:
# gripper_controller:
type: effort_controllers/JointTrajectoryController
joints:
- gripper_controller
gains:
gripper_controller:
p: 100
d: 1
i: 1
i_clamp: 1

View file

@ -0,0 +1,2 @@
sensors:
[]

View file

@ -0,0 +1,20 @@
controller_list:
- name: arm_group_controller
# - name: arm_controller
action_ns: follow_joint_trajectory
type: FollowJointTrajectory
default: True
joints:
- joint2_to_joint1
- joint3_to_joint2
- joint4_to_joint3
- joint5_to_joint4
- joint6_to_joint5
- joint6output_to_joint6
- name: gripper_group_controller
# - name: gripper_controller
action_ns: follow_joint_trajectory
type: FollowJointTrajectory
default: True
joints:
- gripper_controller

View file

@ -0,0 +1,78 @@
stomp/arm_group:
group_name: arm_group
optimization:
num_timesteps: 60
num_iterations: 40
num_iterations_after_valid: 0
num_rollouts: 30
max_rollouts: 30
initialization_method: 1 # [1 : LINEAR_INTERPOLATION, 2 : CUBIC_POLYNOMIAL, 3 : MININUM_CONTROL_COST]
control_cost_weight: 0.0
task:
noise_generator:
- class: stomp_moveit/NormalDistributionSampling
stddev: [0.05, 0.05, 0.05, 0.05, 0.05, 0.05]
cost_functions:
- class: stomp_moveit/CollisionCheck
collision_penalty: 1.0
cost_weight: 1.0
kernel_window_percentage: 0.2
longest_valid_joint_move: 0.05
noisy_filters:
- class: stomp_moveit/JointLimits
lock_start: True
lock_goal: True
- class: stomp_moveit/MultiTrajectoryVisualization
line_width: 0.02
rgb: [255, 255, 0]
marker_array_topic: stomp_trajectories
marker_namespace: noisy
update_filters:
- class: stomp_moveit/PolynomialSmoother
poly_order: 6
- class: stomp_moveit/TrajectoryVisualization
line_width: 0.05
rgb: [0, 191, 255]
error_rgb: [255, 0, 0]
publish_intermediate: True
marker_topic: stomp_trajectory
marker_namespace: optimized
stomp/gripper_group:
group_name: gripper_group
optimization:
num_timesteps: 60
num_iterations: 40
num_iterations_after_valid: 0
num_rollouts: 30
max_rollouts: 30
initialization_method: 1 # [1 : LINEAR_INTERPOLATION, 2 : CUBIC_POLYNOMIAL, 3 : MININUM_CONTROL_COST]
control_cost_weight: 0.0
task:
noise_generator:
- class: stomp_moveit/NormalDistributionSampling
stddev: [0.05]
cost_functions:
- class: stomp_moveit/CollisionCheck
collision_penalty: 1.0
cost_weight: 1.0
kernel_window_percentage: 0.2
longest_valid_joint_move: 0.05
noisy_filters:
- class: stomp_moveit/JointLimits
lock_start: True
lock_goal: True
- class: stomp_moveit/MultiTrajectoryVisualization
line_width: 0.02
rgb: [255, 255, 0]
marker_array_topic: stomp_trajectories
marker_namespace: noisy
update_filters:
- class: stomp_moveit/PolynomialSmoother
poly_order: 6
- class: stomp_moveit/TrajectoryVisualization
line_width: 0.05
rgb: [0, 191, 255]
error_rgb: [255, 0, 0]
publish_intermediate: True
marker_topic: stomp_trajectory
marker_namespace: optimized

View file

@ -0,0 +1,23 @@
<launch>
<arg name="start_state_max_bounds_error" default="0.1" />
<arg name="jiggle_fraction" default="0.05" />
<!-- The request adapters (plugins) used when planning. ORDER MATTERS! -->
<arg name="planning_adapters"
default="default_planner_request_adapters/AddTimeParameterization
default_planner_request_adapters/ResolveConstraintFrames
default_planner_request_adapters/FixWorkspaceBounds
default_planner_request_adapters/FixStartStateBounds
default_planner_request_adapters/FixStartStateCollision
default_planner_request_adapters/FixStartStatePathConstraints"
/>
<param name="planning_plugin" value="chomp_interface/CHOMPPlanner" />
<param name="request_adapters" value="$(arg planning_adapters)" />
<param name="start_state_max_bounds_error" value="$(arg start_state_max_bounds_error)" />
<param name="jiggle_fraction" value="$(arg jiggle_fraction)" />
<!-- Add MoveGroup capabilities specific to this pipeline -->
<!-- <param name="capabilities" value="" /> -->
<rosparam command="load" file="$(find new_mycobot_630_gripper_moveit)/config/chomp_planning.yaml" />
</launch>

View file

@ -0,0 +1,15 @@
<launch>
<arg name="reset" default="false"/>
<!-- If not specified, we'll use a default database location -->
<arg name="moveit_warehouse_database_path" default="$(find new_mycobot_630_gripper_moveit)/default_warehouse_mongo_db" />
<!-- Launch the warehouse with the configured database location -->
<include file="$(dirname)/warehouse.launch">
<arg name="moveit_warehouse_database_path" value="$(arg moveit_warehouse_database_path)" />
</include>
<!-- If we want to reset the database, run this node -->
<node if="$(arg reset)" name="$(anon moveit_default_db_reset)" type="moveit_init_demo_warehouse" pkg="moveit_ros_warehouse" respawn="false" output="screen" />
</launch>

View file

@ -0,0 +1,69 @@
<launch>
<!-- specify the planning pipeline -->
<arg name="pipeline" default="ompl" />
<!-- By default, we do not start a database (it can be large) -->
<arg name="db" default="false" />
<!-- Allow user to specify database location -->
<arg name="db_path" default="$(find new_mycobot_630_gripper_moveit)/default_warehouse_mongo_db" />
<!-- By default, we are not in debug mode -->
<arg name="debug" default="false" />
<!-- By default, we will load or override the robot_description -->
<arg name="load_robot_description" default="true"/>
<!-- Choose controller manager: fake, simple, or ros_control -->
<arg name="moveit_controller_manager" default="fake" />
<!-- Set execution mode for fake execution controllers -->
<arg name="fake_execution_type" default="interpolate" />
<!-- By default, hide joint_state_publisher's GUI in 'fake' controller_manager mode -->
<arg name="use_gui" default="false" />
<arg name="use_rviz" default="true" />
<!-- If needed, broadcast static tf for robot root -->
<node pkg="tf2_ros" type="static_transform_publisher" name="virtual_joint_broadcaster_0" args="0 0 0 0 0 0 world base" />
<group if="$(eval arg('moveit_controller_manager') == 'fake')">
<!-- We do not have a real robot connected, so publish fake joint states via a joint_state_publisher
MoveIt's fake controller's joint states are considered via the 'source_list' parameter -->
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" unless="$(arg use_gui)">
<rosparam param="source_list">[move_group/fake_controller_joint_states]</rosparam>
</node>
<!-- If desired, a GUI version is available allowing to move the simulated robot around manually
This corresponds to moving around the real robot without the use of MoveIt. -->
<node name="joint_state_publisher" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" if="$(arg use_gui)">
<rosparam param="source_list">[move_group/fake_controller_joint_states]</rosparam>
</node>
<!-- Given the published joint states, publish tf for the robot links -->
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" respawn="true" output="screen" />
</group>
<!-- Run the main MoveIt executable without trajectory execution (we do not have controllers configured by default) -->
<include file="$(dirname)/move_group.launch">
<arg name="allow_trajectory_execution" value="true"/>
<arg name="moveit_controller_manager" value="$(arg moveit_controller_manager)" />
<arg name="fake_execution_type" value="$(arg fake_execution_type)"/>
<arg name="info" value="true"/>
<arg name="debug" value="$(arg debug)"/>
<arg name="pipeline" value="$(arg pipeline)"/>
<arg name="load_robot_description" value="$(arg load_robot_description)"/>
</include>
<!-- Run Rviz and load the default config to see the state of the move_group node -->
<include file="$(dirname)/moveit_rviz.launch" if="$(arg use_rviz)">
<arg name="rviz_config" value="$(dirname)/moveit.rviz"/>
<arg name="debug" value="$(arg debug)"/>
</include>
<!-- If database loading was enabled, start mongodb as well -->
<include file="$(dirname)/default_warehouse_db.launch" if="$(arg db)">
<arg name="moveit_warehouse_database_path" value="$(arg db_path)"/>
</include>
</launch>

View file

@ -0,0 +1,21 @@
<launch>
<!-- specify the planning pipeline -->
<arg name="pipeline" default="ompl" />
<!-- Gazebo specific options -->
<arg name="gazebo_gui" default="true"/>
<arg name="paused" default="false"/>
<!-- launch the gazebo simulator and spawn the robot -->
<include file="$(dirname)/gazebo.launch" >
<arg name="paused" value="$(arg paused)"/>
<arg name="gazebo_gui" value="$(arg gazebo_gui)"/>
</include>
<include file="$(dirname)/demo.launch" pass_all_args="true">
<!-- robot description is loaded by gazebo.launch, to enable Gazebo features -->
<arg name="load_robot_description" value="false" />
<arg name="moveit_controller_manager" value="ros_control" />
</include>
</launch>

View file

@ -0,0 +1,12 @@
<launch>
<!-- execute the trajectory in 'interpolate' mode or jump to goal position in 'last point' mode -->
<arg name="fake_execution_type" default="interpolate" />
<!-- Set the param that trajectory_execution_manager needs to find the controller plugin -->
<param name="moveit_controller_manager" value="moveit_fake_controller_manager/MoveItFakeControllerManager"/>
<!-- The rest of the params are specific to this plugin -->
<rosparam subst_value="true" file="$(find new_mycobot_630_gripper_moveit)/config/fake_controllers.yaml"/>
</launch>

View file

@ -0,0 +1,3 @@
<launch>
</launch>

View file

@ -0,0 +1,32 @@
<?xml version="1.0"?>
<launch>
<arg name="paused" default="false"/>
<arg name="gazebo_gui" default="true"/>
<arg name="initial_joint_positions" doc="Initial joint configuration of the robot"
default=" -J gripper_controller 0 -J joint2_to_joint1 0 -J joint3_to_joint2 0 -J joint4_to_joint3 0 -J joint5_to_joint4 0 -J joint6_to_joint5 0 -J joint6output_to_joint6 0"/>
<!-- startup simulated world -->
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="world_name" default="worlds/empty.world"/>
<arg name="paused" value="true"/>
<arg name="gui" value="$(arg gazebo_gui)"/>
</include>
<!-- send robot urdf to param server -->
<param name="robot_description" textfile="$(find mycobot_description)/urdf/mycobot_320_m5_2020/mycobot_pro_320_m5_2020_gripper.urdf" />
<!-- unpause only after loading robot model -->
<arg name="unpause" value="$(eval '' if arg('paused') else '-unpause')" />
<!-- push robot_description to factory and spawn robot in gazebo at the origin, change x,y,z arguments to spawn in a different position -->
<arg name="world_pose" value="-x 0 -y 0 -z 0" />
<node name="spawn_gazebo_model" pkg="gazebo_ros" type="spawn_model" args="-urdf -param robot_description -model robot $(arg unpause) $(arg world_pose) $(arg initial_joint_positions)"
respawn="false" output="screen" />
<!-- Load joint controller parameters for Gazebo -->
<rosparam file="$(find new_mycobot_630_gripper_moveit)/config/gazebo_controllers.yaml" />
<!-- Spawn Gazebo ROS controllers -->
<node name="gazebo_controller_spawner" pkg="controller_manager" type="spawner" respawn="false" output="screen" args="joint_state_controller" />
<!-- Load ROS controllers -->
<include file="$(dirname)/ros_controllers.launch"/>
</launch>

View file

@ -0,0 +1,17 @@
<launch>
<!-- See moveit_ros/visualization/doc/joystick.rst for documentation -->
<arg name="dev" default="/dev/input/js0" />
<!-- Launch joy node -->
<node pkg="joy" type="joy_node" name="joy">
<param name="dev" value="$(arg dev)" /> <!-- Customize this to match the location your joystick is plugged in on-->
<param name="deadzone" value="0.2" />
<param name="autorepeat_rate" value="40" />
<param name="coalesce_interval" value="0.025" />
</node>
<!-- Launch python interface -->
<node pkg="moveit_ros_visualization" type="moveit_joy.py" output="screen" name="moveit_joy"/>
</launch>

View file

@ -0,0 +1,101 @@
<launch>
<!-- GDB Debug Option -->
<arg name="debug" default="false" />
<arg unless="$(arg debug)" name="launch_prefix" value="" />
<arg if="$(arg debug)" name="launch_prefix"
value="gdb -x $(dirname)/gdb_settings.gdb --ex run --args" />
<!-- Verbose Mode Option -->
<arg name="info" default="$(arg debug)" />
<arg unless="$(arg info)" name="command_args" value="" />
<arg if="$(arg info)" name="command_args" value="--debug" />
<!-- move_group settings -->
<arg name="pipeline" default="ompl" />
<arg name="allow_trajectory_execution" default="true"/>
<arg name="moveit_controller_manager" default="simple" />
<arg name="fake_execution_type" default="interpolate"/>
<arg name="max_safe_path_cost" default="1"/>
<arg name="publish_monitored_planning_scene" default="true"/>
<arg name="capabilities" default=""/>
<arg name="disable_capabilities" default=""/>
<!-- load these non-default MoveGroup capabilities (space seperated) -->
<!--
<arg name="capabilities" value="
a_package/AwsomeMotionPlanningCapability
another_package/GraspPlanningPipeline
" />
-->
<!-- inhibit these default MoveGroup capabilities (space seperated) -->
<!--
<arg name="disable_capabilities" value="
move_group/MoveGroupKinematicsService
move_group/ClearOctomapService
" />
-->
<arg name="load_robot_description" default="false" />
<!-- load URDF, SRDF and joint_limits configuration -->
<include file="$(dirname)/planning_context.launch">
<arg name="load_robot_description" value="$(arg load_robot_description)" />
</include>
<!-- Planning Pipelines -->
<group ns="move_group/planning_pipelines">
<!-- OMPL -->
<include file="$(dirname)/planning_pipeline.launch.xml">
<arg name="pipeline" value="ompl" />
</include>
<!-- CHOMP -->
<include file="$(dirname)/planning_pipeline.launch.xml">
<arg name="pipeline" value="chomp" />
</include>
<!-- Pilz Industrial Motion -->
<include file="$(dirname)/planning_pipeline.launch.xml">
<arg name="pipeline" value="pilz_industrial_motion_planner" />
</include>
<!-- Support custom planning pipeline -->
<include if="$(eval arg('pipeline') not in ['ompl', 'chomp', 'pilz_industrial_motion_planner'])"
file="$(dirname)/planning_pipeline.launch.xml">
<arg name="pipeline" value="$(arg pipeline)" />
</include>
</group>
<!-- Trajectory Execution Functionality -->
<include ns="move_group" file="$(dirname)/trajectory_execution.launch.xml" if="$(arg allow_trajectory_execution)">
<arg name="moveit_manage_controllers" value="true" />
<arg name="moveit_controller_manager" value="$(arg moveit_controller_manager)" />
<arg name="fake_execution_type" value="$(arg fake_execution_type)" />
</include>
<!-- Sensors Functionality -->
<include ns="move_group" file="$(dirname)/sensor_manager.launch.xml" if="$(arg allow_trajectory_execution)">
<arg name="moveit_sensor_manager" value="firefighter" />
</include>
<!-- Start the actual move_group node/action server -->
<node name="move_group" launch-prefix="$(arg launch_prefix)" pkg="moveit_ros_move_group" type="move_group" respawn="false" output="screen" args="$(arg command_args)">
<!-- Set the display variable, in case OpenGL code is used internally -->
<env name="DISPLAY" value="$(optenv DISPLAY :0)" />
<param name="allow_trajectory_execution" value="$(arg allow_trajectory_execution)"/>
<param name="sense_for_plan/max_safe_path_cost" value="$(arg max_safe_path_cost)"/>
<param name="default_planning_pipeline" value="$(arg pipeline)" />
<param name="capabilities" value="$(arg capabilities)" />
<param name="disable_capabilities" value="$(arg disable_capabilities)" />
<!-- Publish the planning scene of the physical robot so that rviz plugin can know actual robot -->
<param name="planning_scene_monitor/publish_planning_scene" value="$(arg publish_monitored_planning_scene)" />
<param name="planning_scene_monitor/publish_geometry_updates" value="$(arg publish_monitored_planning_scene)" />
<param name="planning_scene_monitor/publish_state_updates" value="$(arg publish_monitored_planning_scene)" />
<param name="planning_scene_monitor/publish_transforms_updates" value="$(arg publish_monitored_planning_scene)" />
</node>
</launch>

View file

@ -0,0 +1,387 @@
Panels:
- Class: rviz/Displays
Help Height: 0
Name: Displays
Property Tree Widget:
Expanded:
- /MotionPlanning1
- /MotionPlanning1/Scene Robot1
- /MotionPlanning1/Planning Request1
- /MotionPlanning1/Planned Path1
Splitter Ratio: 0.5
Tree Height: 200
- Class: rviz/Help
Name: Help
- Class: rviz/Views
Expanded:
- /Current View1
Name: Views
Splitter Ratio: 0.5
Preferences:
PromptSaveOnExit: true
Toolbars:
toolButtonStyle: 2
Visualization Manager:
Class: ""
Displays:
- Alpha: 0.5
Cell Size: 1
Class: rviz/Grid
Color: 160; 160; 164
Enabled: true
Line Style:
Line Width: 0.029999999329447746
Value: Lines
Name: Grid
Normal Cell Count: 0
Offset:
X: 0
Y: 0
Z: 0
Plane: XY
Plane Cell Count: 10
Reference Frame: <Fixed Frame>
Value: true
- Acceleration_Scaling_Factor: 0.1
Class: moveit_rviz_plugin/MotionPlanning
Enabled: true
JointsTab_Use_Radians: true
Move Group Namespace: ""
MoveIt_Allow_Approximate_IK: true
MoveIt_Allow_External_Program: false
MoveIt_Allow_Replanning: false
MoveIt_Allow_Sensor_Positioning: false
MoveIt_Planning_Attempts: 10
MoveIt_Planning_Time: 5
MoveIt_Use_Cartesian_Path: true
MoveIt_Use_Constraint_Aware_IK: true
MoveIt_Workspace:
Center:
X: 0
Y: 0
Z: 0
Size:
X: 2
Y: 2
Z: 2
Name: MotionPlanning
Planned Path:
Color Enabled: false
Interrupt Display: false
Links:
All Links Enabled: true
Expand Joint Details: false
Expand Link Details: false
Expand Tree: false
Link Tree Style: Links in Alphabetic Order
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
Show Trail: false
Value: true
joint2:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
joint3:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
joint4:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
joint5:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
joint6:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
tool1:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
tool2:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
Loop Animation: false
Robot Alpha: 0.5
Robot Color: 150; 50; 150
Show Robot Collision: false
Show Robot Visual: true
Show Trail: false
State Display Time: 0.05 s
Trail Step Size: 1
Trajectory Topic: move_group/display_planned_path
Use Sim Time: false
Planning Metrics:
Payload: 1
Show Joint Torques: false
Show Manipulability: false
Show Manipulability Index: false
Show Weight Limit: false
TextHeight: 0.07999999821186066
Planning Request:
Colliding Link Color: 255; 0; 0
Goal State Alpha: 1
Goal State Color: 250; 128; 0
Interactive Marker Size: 0.20000000298023224
Joint Violation Color: 255; 0; 255
Planning Group: arm_group
Query Goal State: true
Query Start State: true
Show Workspace: false
Start State Alpha: 1
Start State Color: 0; 255; 0
Planning Scene Topic: move_group/monitored_planning_scene
Robot Description: robot_description
Scene Geometry:
Scene Alpha: 1
Scene Color: 50; 230; 50
Scene Display Time: 0.009999999776482582
Show Scene Geometry: true
Voxel Coloring: Z-Axis
Voxel Rendering: Occupied Voxels
Scene Robot:
Attached Body Color: 150; 50; 150
Links:
All Links Enabled: true
Expand Joint Details: false
Expand Link Details: false
Expand Tree: false
Link Tree Style: Links in Alphabetic Order
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
Show Trail: false
Value: true
joint2:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
joint3:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
joint4:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
joint5:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
joint6:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
tool1:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
tool2:
Alpha: 1
Show Axes: false
Show Trail: false
Value: true
Robot Alpha: 0.5
Show Robot Collision: false
Show Robot Visual: true
Value: true
Velocity_Scaling_Factor: 0.1
- Class: rviz/Marker
Enabled: true
Marker Topic: visualization_marker
Name: Marker
Namespaces:
{}
Queue Size: 100
Value: true
- Class: rviz/InteractiveMarkers
Enable Transparency: true
Enabled: true
Name: InteractiveMarkers
Show Axes: false
Show Descriptions: true
Show Visual Aids: false
Update Topic: ""
Value: true
- Class: rviz/InteractiveMarkers
Enable Transparency: true
Enabled: true
Name: InteractiveMarkers
Show Axes: false
Show Descriptions: true
Show Visual Aids: false
Update Topic: ""
Value: true
Enabled: true
Global Options:
Background Color: 48; 48; 48
Default Light: true
Fixed Frame: base
Frame Rate: 30
Name: root
Tools:
- Class: rviz/Interact
Hide Inactive Objects: true
- Class: rviz/MoveCamera
- Class: rviz/Select
Value: true
Views:
Current:
Class: rviz/Orbit
Distance: 1.4812843799591064
Enable Stereo Rendering:
Stereo Eye Separation: 0.05999999865889549
Stereo Focal Distance: 1
Swap Stereo Eyes: false
Value: false
Field of View: 0.75
Focal Point:
X: 0.25592494010925293
Y: 0.2098711133003235
Z: 0.08102890849113464
Focal Shape Fixed Size: true
Focal Shape Size: 0.05000000074505806
Invert Z Axis: false
Name: Current View
Near Clip Distance: 0.009999999776482582
Pitch: 0.5900000929832458
Target Frame: base
Yaw: 6.124949932098389
Saved:
- Class: rviz/Orbit
Distance: 2
Enable Stereo Rendering:
Stereo Eye Separation: 0.05999999865889549
Stereo Focal Distance: 1
Swap Stereo Eyes: false
Value: false
Field of View: 0.75
Focal Point:
X: -0.10000000149011612
Y: 0.25
Z: 0.30000001192092896
Focal Shape Fixed Size: true
Focal Shape Size: 0.05000000074505806
Invert Z Axis: false
Name: Orbit
Near Clip Distance: 0.009999999776482582
Pitch: 0.3399999737739563
Target Frame: base
Yaw: 2.9449498653411865
Window Geometry:
Displays:
collapsed: false
Height: 820
Help:
collapsed: false
Hide Left Dock: false
Hide Right Dock: false
MotionPlanning:
collapsed: false
MotionPlanning - Trajectory Slider:
collapsed: false
QMainWindow State: 000000ff00000000fd0000000100000000000001f3000002dafc0200000007fb000000100044006900730070006c006100790073010000003d00000105000000c900fffffffb0000000800480065006c00700000000342000000bb0000006e00fffffffb0000000a00560069006500770073000000010c000000a4000000a400fffffffb0000000c00430061006d00650072006100000002ff000001610000000000000000fb0000001e004d006f00740069006f006e00200050006c0061006e006e0069006e00670100000374000001890000000000000000fb00000044004d006f00740069006f006e0050006c0061006e006e0069006e00670020002d0020005400720061006a006500630074006f0072007900200053006c00690064006500720100000148000000410000004100fffffffb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e0067010000018f000001880000018800ffffff00000539000002da00000001000000020000000100000002fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
Views:
collapsed: false
Width: 1842
X: 72
Y: 27

View file

@ -0,0 +1,15 @@
<launch>
<arg name="debug" default="false" />
<arg unless="$(arg debug)" name="launch_prefix" value="" />
<arg if="$(arg debug)" name="launch_prefix" value="gdb --ex run --args" />
<arg name="rviz_config" default="" />
<arg if="$(eval rviz_config=='')" name="command_args" value="" />
<arg unless="$(eval rviz_config=='')" name="command_args" value="-d $(arg rviz_config)" />
<node name="$(anon rviz)" launch-prefix="$(arg launch_prefix)" pkg="rviz" type="rviz" respawn="false"
args="$(arg command_args)" output="screen">
</node>
</launch>

Some files were not shown because too many files have changed in this diff Show more