ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

clarkeaa's profile - activity

2022-10-21 09:54:01 -0500 received badge  Good Question (source)
2019-12-06 22:53:45 -0500 received badge  Nice Question (source)
2015-11-04 09:42:35 -0500 received badge  Famous Question (source)
2015-07-28 11:45:51 -0500 received badge  Taxonomist
2015-04-23 17:17:18 -0500 received badge  Famous Question (source)
2015-01-06 04:55:10 -0500 received badge  Notable Question (source)
2015-01-06 04:55:10 -0500 received badge  Popular Question (source)
2014-12-17 06:13:11 -0500 received badge  Famous Question (source)
2014-12-17 06:13:11 -0500 received badge  Notable Question (source)
2014-12-01 10:08:15 -0500 received badge  Famous Question (source)
2014-12-01 10:08:15 -0500 received badge  Notable Question (source)
2014-11-26 03:06:05 -0500 received badge  Famous Question (source)
2014-10-23 11:50:25 -0500 received badge  Notable Question (source)
2014-10-23 11:50:25 -0500 received badge  Popular Question (source)
2014-10-01 12:22:34 -0500 received badge  Famous Question (source)
2014-09-22 19:27:43 -0500 received badge  Notable Question (source)
2014-08-28 19:41:14 -0500 received badge  Popular Question (source)
2014-08-22 04:40:46 -0500 received badge  Popular Question (source)
2014-08-21 17:12:49 -0500 asked a question How can I restart rospy after pressing Ctrl-C? (Python, Bash)

Hello,

I searched through the rospy section of the tutorials but I can't find out simply how to restart rospy after it has been shutdown. I made a code that runs a routine, then asks if the user wants to restart the routine. If i press yes, it will restart successfully if the routine was complete. But if I press ctrl-C within the routine to interrupt it, it asks if the user wants to restart the routine, and then if you choose Yes, it will run the loop again except rospy is no longer running, so nothing happens. I put test messages in my code in order to verify that the loop is indeed running again, and I found that the sections where I run "while not rospy.is_shutdown" all fail to run. Therefore I know that rospy is shutting down as soon as I press ctrl-C. How can I either prevent shutdown or restart rospy after pressing ctrl-C?

Here is the form of my code:

 def robot_exec():
   # Initialize Rospy
   rospy.init_node('my_robot_exec')

   # List of robot arm poses:
   *many_many_lines_of_position_vectors*

   # List of robot gripper poses:
   *open_position*
   *close_position*

   while 1:
     #*Call function that moves the robot arm(s) to a position on the list using publisher*
     #*Call function that moves the robot gripper(s) to a position on the list using publisher*
     #*continue calling functions many times until the desired routine is complete*
     n = raw_input("Restart the routine? (Y/N)")
     if n.strip() == 'n' or 'N':
       break
     elif n.strip() == 'y' or 'Y':
       continue
     else:
       print "Invalid input. Exiting..."
       break
2014-08-18 13:30:54 -0500 asked a question Goal Tolerance for Inverse Kinematics - How does it work?

Hello,

I am using Move-It! to control a Kuka youBot arm. Within Move-It!, which uses something called "KDL Kinematics Plugin" to do its inverse kinematics by default, there is an option to set goal tolerances. I set my goal tolerance in position to 0.01, and my goal tolerance in orientation to 0.1. Then I commanded the robot to 2 poses which I already knew what it was supposed to look like. Move It! claimed that it could not "sample any valid states for the goal tree," and the process failed on the second of the two poses. Initially I thought the tolerance was too low so I increased position tolerance to 0.1, and now the other pose which used to succeed fails and the youBot can't do either pose. So I decreased my tolerances back to 0.01 in position, and then decreased the tolerance to 0.01 in orientation, and suddenly the robot can do both poses.

Here's my question. Can anyone tell me:

  1. why a LOWER tolerance results in more successfully sampled goal states? My logic is, when the robot has more freedom to move, it should sample plenty of reasonable goal states. But apparently it is the opposite, and tightening the tolerances actually results in more frequent success.

  2. What the units are of MoveIt!'s goal tolerance? I assumed meters for position and radians for orientation.

Thank you,

-Adrian

EDIT: I tried many different tolerances and they all give different results. So it isn't actually guaranteed that a lower tolerance will work better than a higher one.

2014-08-12 03:00:55 -0500 received badge  Popular Question (source)
2014-08-11 15:01:34 -0500 received badge  Notable Question (source)
2014-08-11 15:01:01 -0500 asked a question How can I do rosdep init without the internet?

Hello,

I am working in a lab which does not allow direct internet access. Basically the way that we download packages and such is to ssh into another computer with internet access that can get these files. So installing anything over the internet is still possible.

However, there is a problem with two things: 1. running "rosdep init" and 2. setting up ROS keys.

Both of these seem to want to directly access GitHub in order to complete their task. I have directly obtained the sources.list file that rosdep init uses and it is now on the computer. However, rosdep init still wants to access GitHub even though the sources.list file is now on the computer and can be accessed without the internet. What can I do to circumvent this problem?

Eventually I think I will run into the same sort of issue with setting up the ROS keys, but for now I just want to solve the rosdep init problem.

I found this other question that I think is related, but it seems that the problem was not solved: http://answers.ros.org/question/13291...

Thank you,

-Adrian

2014-08-06 09:03:40 -0500 received badge  Enthusiast
2014-08-01 13:31:27 -0500 received badge  Organizer (source)
2014-08-01 13:30:52 -0500 asked a question Gazebo Youbot Arm Slowly Drifting

Hi,

I am running a simulation with a (supposed to be) fixed to the ground youBot arm. I notice that at the first spawn, it doesn't move at all, but then I will send a command to the arm. It normally executes perfectly fine, but then the arm is supposed to hold that position indefinitely until I tell it to do something different. However, I notice that the entire arm drifts slowly (yet significantly enough to see it happening) and will rotate very slowly or do some other weird stuff. Is there a way to fix the robot to the gazebo "floor" so that this doesn't happen? I cannot ascertain as to whether the joints themselves are drifting too, but at the very least I would like the youBot arm to stay put on the ground.

Thank you,

-Adrian

2014-07-30 12:14:43 -0500 received badge  Popular Question (source)
2014-07-30 09:14:05 -0500 received badge  Editor (source)
2014-07-29 16:16:17 -0500 asked a question What happened to the Youbot Applications package? I need it for tuning controller gains.

Hello,

I am currently working with the youBot and attempting to implement torque control as has been done by Benjamin Keiser ( http://www.youbot-store.com/youbot-de... ). Actually, I would be satisfied with any sort of ability to change the youBot control configuration... At any rate, the way to change the controller gains as done in the master's thesis project by Keiser is to use a package called "youbot_applications" ( https://github.com/youbot/youbot_appl... ). However I could not find this using apt-cache search. Has this been deprecated as of ROS Hydro? I don't want to simply git clone the thing because I don't know if there is a missing dependency or something that is necessary for it to work properly. Is there any other way to change the controller gains of the youBot? In a section of "youbot_applications" there is the option to change the PID gains for current, velocity, and position.

Thank you,

-Adrian

2014-07-29 11:16:31 -0500 commented answer Controlling two joints simultaneously

Should I publish the goal directly onto the topic "arm_1/gripper_controller/position_command?"

2014-07-29 09:37:40 -0500 commented answer Controlling two joints simultaneously

It does not work, but I think it is because there is no action server defined for gripper control. The youbot driver has a built in arm trajectory action but not gripper control. I don't think I can use action servers with gripper control unfortunately...

2014-07-28 11:22:57 -0500 asked a question Youbot Driver: Global Name error but joint is still properly defined?

Hi, I am running the youbot_driver_ros_interface. I launch the youbot driver, and all of the joints are properly calibrated. I would like to control the gripper joints simultaneously as in this previous question that I asked: answers.ros.org/question/187890/controlling-two-joints-simultaneously/ .

I am receiving the following error:

"NameError: global name 'gripper_finger_joint_l' is not defined" despite the fact that the youbot driver says that the joints of the gripper are indeed named "gripper_finger_joint_l" and "gripper_finger_joint_r." What are the possible reasons for this Name Error? Here is an excerpt of the code:

def GripperCommand_client(action_server_name):

  ## First initialize rospy.
  print "============ Starting tutorial setup"
  rospy.init_node('my_gripper_client',
                  anonymous=False)

  ## Create a client for the action server
  rospy.loginfo("Create gripper command action client " + action_server_name)
  client = actionlib.SimpleActionClient(action_server_name, 
                                        control_msgs.msg.GripperCommandAction)

  # Waits until the action server has started up and started
  # listening for goals.
  client.wait_for_server() 

  # Creates two separate JointValue variables for brics_actuator.
  jvl = brics_actuator.msg.JointValue()
  jvr = brics_actuator.msg.JointValue()
  jvl.joint_uri = gripper_finger_joint_l
  jvr.joint_uri = gripper_finger_joint_r
  jvl.unit = m
  jvr.unit = m
  jvl.value = 0.01
  jvr.value = 0.01

  # Creates a goal to send to the action server.
  goal = brics_actuator.msg.JointPositions()

  # Pushes back the joint values onto goal.positions. This allows
  # for simultaneous movement of both gripper finger joints.
  goal.positions.push_back(jvl)
  goal.positions.push_back(jvr)

  # Sends the goal to the action server.
  client.send_goal(goal, feedback_cb=gcg_feedback_cb)

  # Waits for the server to finish performing the action.
  client.wait_for_result()  

  # log that the action is complete
  rospy.loginfo("Action complete")
  rospy.loginfo(client.get_result())
2014-07-28 11:00:58 -0500 commented answer Controlling two joints simultaneously

Thank you, this makes sense.

2014-07-27 22:56:51 -0500 received badge  Notable Question (source)
2014-07-26 14:23:58 -0500 received badge  Popular Question (source)
2014-07-26 12:56:11 -0500 commented answer Controlling two joints simultaneously

Thanks for the response. However I am not sure what you mean by "push back." So I would create something like: first_finger = timeStamp1, joint_uri1, unit1, value1, and second_finger = timeStamp2, joint_uri2, unit2, value2?

2014-07-25 15:49:20 -0500 asked a question Controlling two joints simultaneously

Hello,

I am using the Kuka Youbot arm ( http://www.youbot-store.com/youbot-st... ). When running the youbot_driver, several topics are created including a topic called "arm_1/gripper_controller/position_command" which takes the message type "brics_actuator/JointPositions." However, the gripper consists of two separate joints: one for the left finger, and one for the right finger. If I try to input a command using rostopic pub, I will have to specify which finger I want to move, either "gripper_finger_joint_l" or "gripper_finger_joint_r." This is a problem because i want the gripper to open or close by moving both fingers simultaneously. How can I do this? At first, I thought that I would try to add a "mimic" tag in the URDF but apparently this is no longer supported. What other options do I have for controlling both gripper joints at the same time?

My ultimate goal is to create an action server that takes something like "control_msgs/GripperCommandAction" with the opening width specified, and it will just open or close to that width.

Thank you, -Adrian

2014-07-25 15:25:22 -0500 received badge  Supporter (source)