Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
9445be0
servo driver work in progress
futureneer Jul 15, 2014
69016ce
working on servo control
Jul 15, 2014
d43c830
woring on freedrive mode
Jul 15, 2014
dbe5628
cleaned up trajectory action code that was commented out. This is al…
futureneer Jul 16, 2014
d9f4d38
finally got compliant mode working, enable only
Jul 17, 2014
4f1703e
now can engage and dissengage freedrive
Jul 17, 2014
a58f732
working on switching programs
Jul 17, 2014
a0ba1a5
class-ifying driver and cleaning up
Jul 17, 2014
0ca3ab7
more clean up
Jul 17, 2014
30035b7
cleaned up unused functions
Jul 17, 2014
c9999e8
teach mode now works with the robot
Jul 17, 2014
43493b8
fixed servo c code
Jul 18, 2014
51bea98
added interface for recieveing published poses, working on hydra tele…
Jul 18, 2014
96fca26
adding more testing code, and a status interface, also, added a freed…
Jul 18, 2014
3926293
rearranged the interface, now need a servo activate service
Jul 18, 2014
4d3b5c1
adding aditional services, in progress
Jul 19, 2014
1165268
fixed cartesian movement over published topic
Jul 22, 2014
a0c0a32
adding position saving and settings
Jul 22, 2014
3b5cc60
now keeps track of servoing status
Jul 23, 2014
3d69d81
fixed control pannel for proper servo control
Jul 24, 2014
68c10e7
working on marker teleop
Jul 24, 2014
9688021
working on marker teleop
Jul 24, 2014
c10b389
fixed cartesian endpoint control with the marker_teleop interface
Jul 25, 2014
390cac2
Merge pull request #1 from futureneer/working_global
futureneer Jul 25, 2014
19611c6
removing unnecessary files
Jul 25, 2014
7aa46f8
removed comments from xacro file
Jul 25, 2014
e9e1839
changed service names
Jul 25, 2014
6c34f46
fixed message in debug statements of servo_driver.py
Jul 25, 2014
64f92a3
now runs with robotiq gripper
Jul 26, 2014
d9593da
added more verbose return statements from service calls
Jul 27, 2014
cb1fefb
changes to status pannel for robotiq gripper, might make sense to go …
Jul 27, 2014
3392ce6
fixed status ui for robotiq gripper
Jul 28, 2014
42c7a40
working on rqt widgets
Jul 30, 2014
d23d6a4
fixed bugs with rqt pannels of status and marker interfaces
Jul 30, 2014
8c34d2e
added check for max vel and accel violation
futureneer Jul 30, 2014
be0037e
fixed interface file for rqt, new service format
futureneer Jul 30, 2014
f701932
changes for rqt
Jul 30, 2014
c7d38ee
Merge branch 'servo_working' of github.com:jhu-lcsr-forks/universal_r…
Jul 30, 2014
4fc82eb
small changes to update to new service names
Jul 31, 2014
076a5dd
removed junk from freedrive program
futureneer Jul 31, 2014
76c7d2b
Merge branch 'servo_working' of github.com:jhu-lcsr-forks/universal_r…
futureneer Jul 31, 2014
c79829b
working on servo code
futureneer Feb 3, 2016
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<xacro:robot></xacro:robot>


<xacro:include filename="$(find ur5_robotiq_description)/src/urdf/robotiq.urdf.xacro" />
<!-- <xacro:include filename="$(find ur5_robotiq_description)/src/urdf/robotiq.urdf.xacro" /> -->
<xacro:robotiq_c_model root_link="ee_fixed_link" show_underactuated="false" gravity="false"></xacro:robotiq_c_model>

<!--
Expand Down
8 changes: 4 additions & 4 deletions ur_description/urdf/ur5.urdf.xacro
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ center_of_mass = [ [0, -0.02561, 0.00193], [0.2125, 0, 0.11336], [0.11993, 0.0,
<geometry>
<mesh filename="package://ur_description/meshes/ur5/visual/Base.dae" />
</geometry>
<origin xyz="0.0 0.0 0.003" rpy="0.0 0.0 ${3.0 * pi / 4.0}" />
<origin xyz="0.0 0.0 0.003" rpy="0.0 0.0 ${-pi/4.0}" />
</visual>
<collision>
<geometry>
Expand All @@ -73,7 +73,7 @@ center_of_mass = [ [0, -0.02561, 0.00193], [0.2125, 0, 0.11336], [0.11993, 0.0,
<joint name="${prefix}shoulder_pan_joint" type="revolute">
<parent link="${prefix}base_link" />
<child link = "${prefix}shoulder_link" />
<origin xyz="0.0 0.0 ${shoulder_height}" rpy="0.0 0.0 0.0" />
<origin xyz="0.0 0.0 ${shoulder_height}" rpy="0.0 0.0 3.1415" />
<axis xyz="0 0 1" />
<limit lower="${-2.0 * pi}" upper="${2.0 * pi}" effort="150.0" velocity="${pi}"/>
<dynamics damping="0.4" friction="0.0"/>
Expand Down Expand Up @@ -247,8 +247,8 @@ center_of_mass = [ [0, -0.02561, 0.00193], [0.2125, 0, 0.11336], [0.11993, 0.0,
</joint>

<link name="${prefix}ee_link" />

<xacro:ur5_arm_transmission prefix="${prefix}" />
<!-- KGUERIN CHANGED TO FIX ERROR IN URDF_PARSER_PY -->
<!-- <xacro:ur5_arm_transmission prefix="${prefix}" /> -->
<xacro:ur5_arm_gazebo prefix="${prefix}" />

</xacro:macro>
Expand Down
1 change: 1 addition & 0 deletions ur_driver/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.ini
43 changes: 29 additions & 14 deletions ur_driver/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,12 @@ project(ur_driver)
## Find catkin macros and libraries
## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
## is used, also find other catkin packages
find_package(catkin REQUIRED)
find_package(catkin REQUIRED COMPONENTS
message_generation
geometry_msgs
rospy
rqt_gui
rqt_gui_py)

## System dependencies are found with CMake's conventions
# find_package(Boost REQUIRED COMPONENTS system)
Expand All @@ -26,18 +31,24 @@ catkin_python_setup()
# Message2.msg
# )

## Generate services in the 'srv' folder
# add_service_files(
# FILES
# Service1.srv
# Service2.srv
# )
# Generate services in the 'srv' folder
add_service_files(
FILES
FreeDrive.srv
GetTcpPose.srv
ServoToPose.srv
ServoEnable.srv
MoveToPose.srv
Home.srv
Stop.srv
)

## Generate added messages and services with any dependencies listed here
# generate_messages(
# DEPENDENCIES
# control_msgs# sensor_msgs
# )
# Generate added messages and services with any dependencies listed here
generate_messages(
DEPENDENCIES
std_msgs
geometry_msgs# sensor_msgs
)

###################################
## catkin specific configuration ##
Expand All @@ -47,7 +58,9 @@ catkin_python_setup()
## LIBRARIES: libraries you create in this project that dependent projects also need
## CATKIN_DEPENDS: catkin_packages dependent projects also need
## DEPENDS: system dependencies of this project that dependent projects also need
catkin_package()
catkin_package(
CATKIN_DEPENDS message_runtime
)


###########
Expand All @@ -56,7 +69,9 @@ catkin_package()

## Specify additional locations of header files
## Your package locations should be listed before other locations
# include_directories(include ${catkin_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS})
include_directories(
${catkin_INCLUDE_DIRS}
)

## Declare a cpp library
# add_library(ur_driver
Expand Down
38 changes: 38 additions & 0 deletions ur_driver/freedrive_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#!/usr/bin/env python
import time
import roslib; roslib.load_manifest('ur_driver')
import rospy
import actionlib
from control_msgs.msg import *
from trajectory_msgs.msg import *
from geometry_msgs.msg import *
import PyKDL
from ur_driver.srv import *
import tf_conversions as tf_c

if __name__ == '__main__':
current_pose = None

rospy.init_node("test_servo", anonymous=True, disable_signals=True)

print 'waiting for service'
rospy.wait_for_service('/ur_driver/free_drive')
print 'calling service with true'
try:
free_drive_service = rospy.ServiceProxy('/ur_driver/free_drive',free_drive)
result = free_drive_service(True)
print 'Service returned: ' + str(result.ack)
except rospy.ServiceException, e:
print e

rospy.sleep(5)

print 'waiting for service'
rospy.wait_for_service('/ur_driver/free_drive')
print 'calling service with false'
try:
free_drive_service = rospy.ServiceProxy('/ur_driver/free_drive',free_drive)
result = free_drive_service(False)
print 'Service returned: ' + str(result.ack)
except rospy.ServiceException, e:
print e
16 changes: 16 additions & 0 deletions ur_driver/launch/servo_driver.launch
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?xml version="1.0"?>

<launch>
<!-- robot_ip: IP-address of the robot's socket-messaging server -->
<arg name="robot_ip" />

<!-- copy the specified IP address to be consistant with ROS-Industrial spec.
NOTE: The ip address is actually passed to the driver on the command line -->
<param name="/robot_ip_address" type="str" value="$(arg robot_ip)"/>

<node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />

<!-- driver -->
<node name="ur_driver" pkg="ur_driver" type="servo_driver.py" args="$(arg robot_ip)" output="screen" />

</launch>
30 changes: 30 additions & 0 deletions ur_driver/launch/test_common.launch
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?xml version="1.0"?>
<!--
Universal robot common bringup. Starts ur driver node and robot state
publisher (translates joint positions to propper tfs).

NOTE: This launch file also starts a tf2 node, which is not typically
used

Usage:
ur_common.launch robot_ip:=<value>
-->
<launch>
<!-- robot_ip: IP-address of the robot's socket-messaging server -->
<arg name="robot_ip" />

<!-- copy the specified IP address to be consistant with ROS-Industrial spec.
NOTE: The ip address is actually passed to the driver on the command line -->
<param name="/robot_ip_address" type="str" value="$(arg robot_ip)"/>

<node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />

<!-- driver -->
<node name="ur_driver" pkg="ur_driver" type="driver.py" args="$(arg robot_ip)" output="screen" />

<!-- TF Buffer Server -->
<node pkg="tf2_ros" type="buffer_server" name="tf2_buffer_server">
<param name="buffer_size" value="120.0"/>
</node>

</launch>
52 changes: 52 additions & 0 deletions ur_driver/launch/test_servo_driver.launch
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
<?xml version="1.0"?>

<launch>

<!-- <node name="rviz" pkg="rviz" type="rviz" args="-d $(find ur_driver)/ur.rviz" /> -->

<!-- <node name="ur_status_interface" pkg="ur_driver" type="ur_status_interface.py"/> -->
<!-- <node name="marker_teleop_interface" pkg="ur_driver" type="marker_teleop_interface.py"/> -->

<node name="target_frame_broadcaster" pkg="lcsr_tf_tools" type="interactive_transform_publisher" args="-.109 -.72 1.47 3.1415 0 -1.5707 /world /target_frame 10"/>

<!-- <node pkg="tf" type="static_transform_publisher" name="world_to_ur_base" args=" 0 0 0 0 0 0 /world /base_link 100"/> -->

<!-- <node pkg="tf" type="static_transform_publisher" name="world_to_base_link" args=" 0 0 1.4605 0 0 2.3565 /world /base_link 10"/> -->
<node pkg="tf" type="static_transform_publisher" name="world_to_base_link" args=" 0 0 1.4605 3.1415 0 -2.3565 /world /base_link 10"/>

<node pkg="tf" type="static_transform_publisher" name="ee_to_robotiq_c" args=" 0 0 0 0 0 0 /ee_link /robotiq_85_adapter_link 10"/>

<node pkg="tf" type="static_transform_publisher" name="ee_to_wrist_camera" args=" 0 0 -.045 0 0 0 /ee_link /camera_1_link 10"/>

<!-- robot_ip: IP-address of the robot's socket-messaging server -->
<arg name="robot_ip" />
<arg name="limited" default="false"/>

<!-- robot model -->
<include file="$(find ur_description)/launch/ur5_upload.launch">
<arg name="limited" value="$(arg limited)"/>
</include>

<!-- gripper model -->
<group ns="/ur5/gripper">
<arg name="model" default="$(find robotiq_c_model_visualization)/cfg/robotiq_c_model.urdf" />
<arg name="gui" default="False" />
<param name="robot_description" textfile="$(arg model)" />
<param name="use_gui" value="$(arg gui)"/>
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" >
<remap from="joint_states" to="/ur5/gripper/joint_states"/>
</node>
<node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher">
<remap from="joint_states" to="/ur5/gripper/joint_states"/>
</node>
<rosparam>
source_list: [/ur5/gripper/joint_states]
</rosparam>
</group>

<!-- ur common -->
<include file="$(find ur_driver)/launch/servo_driver.launch">
<arg name="robot_ip" value="$(arg robot_ip)" />
</include>

</launch>
Loading