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

maztentropy's profile - activity

2019-09-24 02:58:32 -0500 received badge  Famous Question (source)
2017-02-20 03:33:20 -0500 received badge  Favorite Question (source)
2016-12-16 04:27:36 -0500 received badge  Taxonomist
2016-11-15 23:18:47 -0500 received badge  Famous Question (source)
2016-09-20 04:15:58 -0500 received badge  Nice Question (source)
2016-02-02 09:04:46 -0500 received badge  Famous Question (source)
2016-01-26 03:08:15 -0500 marked best answer SDF to URDF conversion

Hello everyone!

I am starting from scratch with ROS (just recently installed Jade) and I wanted to ask for some guidance. I have followed all basic ROS tutorials already and my idea was to develop a simulation model with Gazebo that I can control through ROS nodes. I would afterwards move on to the real robot but only after the simulation model is complete and working properly.

I followed Gazebo's basic tutorials as well (still have some to go through) but the first problem I encountered is my robot has mecanum wheels. I read that the easiest way to go is using the Planar Move Plugin so I looked it up in here and apparently I should first develop a URDF file of my robot. I have been going through the tutorials (first had to learn tf) but I am starting to wonder. Do I really need the URDF file? Is there any way to work directly with SDF files both in ROS and gazebo or at least generate the URDF from the SDF I already have?

I would really appreciate it if someone could clarify this for me.

2016-01-22 08:44:13 -0500 received badge  Notable Question (source)
2015-10-26 14:25:00 -0500 received badge  Famous Question (source)
2015-10-23 14:59:51 -0500 received badge  Notable Question (source)
2015-10-23 08:32:07 -0500 answered a question HardwareInterface problem with Gazebo and ros_control

Solved: It turns out I was starting gazebo's plugin ros_control twice and the second one was giving me the error. Fixed it by removing one of the executions.

I still do not know why the joint interfaces change type but it is not giving me an error anymore so I consider this solved.

2015-10-23 00:10:10 -0500 received badge  Popular Question (source)
2015-10-22 10:29:04 -0500 asked a question HardwareInterface problem with Gazebo and ros_control

Hello! I am trying to simulate a full custom robot with Gazebo and MoveIt but I am running into one problem: gazebo cannot find the proper hardware interface for the joints in the URDF file.

I need to control two arms (UR10) so similarly to what's done in the package universal_robot I define a controller for each joint type position_controllers/JointTrajectoryController. My URDF file uses UR10's original URDF file which defines the transmission elements as "PositionJointInterface":

    <transmission name="${prefix}shoulder_pan_trans">
  <type>transmission_interface/SimpleTransmission</type>
  <joint name="${prefix}shoulder_pan_joint">
    <hardwareInterface>PositionJointInterface</hardwareInterface>
  </joint>
  <actuator name="${prefix}shoulder_pan_motor">
    <mechanicalReduction>1</mechanicalReduction>
  </actuator>
</transmission>

And yet when I try to run gazebo and spawn the controllers I get this error:

[ERROR] [1445527289.044457090, 0.821000000]: Could not find joint 'leftshoulder_pan_joint' in 'hardware_interface::PositionJointInterface'.
[ERROR] [1445527289.044594098, 0.821000000]: Failed to initialize the controller

I have been digging around trying to find the problem and I noticed that after my URDF was converted with xacro PositionJointInterfaces turned into EffortJointInterfaces:

  <transmission name="leftshoulder_pan_trans">
<type>transmission_interface/SimpleTransmission</type>
<joint name="leftshoulder_pan_joint">
  <hardwareInterface>EffortJointInterface</hardwareInterface>
</joint>
<actuator name="leftshoulder_pan_motor">
  <mechanicalReduction>1</mechanicalReduction>
</actuator>
  </transmission>

Can somebody explain what is going on?

2015-10-06 03:48:25 -0500 received badge  Notable Question (source)
2015-10-01 02:00:40 -0500 received badge  Popular Question (source)
2015-09-30 09:14:12 -0500 asked a question How to control UR5/UR10

I have been digging into the topic and apparently there are at least three options when it comes to controlling both UR models:

  • Action interface: I would need to learn how to use actionlib properly and then try to apply it to the UR.
  • Topic interface: I think I posses the knowledge to carry this path.
  • MoveIt!: It seems to be a big deal in ROS Industrial but unfortunately I haven't used it as of today.

I was trying to control a simulated UR10 (in Gazebo using Indigo) which I will later have to synchronize with a real UR10 and I guess I know how to continue using the topic interface. My question is which one out the three options would you recommend and why?

Edit:

Regarding the package I've been using: I downloaded and built the package "universal_robot" inside of which you can find "ur_gazebo". It contains a launch file for the UR10 (and UR5) which for testing purposes creates the arm in gazebo and defines a joint_trajectory_controller to which you should be able to send commands through the topic interface.

My goal is teleoperation but I might want to add automatic collision avoidance of some known objects in 3D space.

2015-09-04 03:18:59 -0500 received badge  Famous Question (source)
2015-09-03 02:44:17 -0500 commented answer Help using epos_hardware

I used the serial number obtained from "list_devices" (which I think is already hex). I have anyway tried different ways of inputting the number and none of them worked. The ROS_INFO message which parses the device you're connecting to kept saying "0x7461757463416e6f" or "0x0".

2015-08-31 11:04:38 -0500 commented answer Help using epos_hardware

I did try that form also, but in the example provided in the package is was entered as '662080006193' that's why I have used it for the post. Thanks for your interest anyway.

2015-08-31 07:51:03 -0500 answered a question Help using epos_hardware

I sort of made it work for now. As I initially suspected the problem was in the way the serial number is handled internally. I manually changed the file "epos.cpp" and recompiled and the issue was solved. This is the change I did in case anyone is interested:

   if(!config_nh_.getParam("serial_number", serial_number_str)) {
     ROS_ERROR("You must specify a serial number");
     valid_ = false;
  }
  else {

    ROS_ASSERT(SerialNumberFromHex(serial_number_str, &serial_number_));
  }

I changed it to:

config_nh_.getParam("serial_number", serial_number_str);
ROS_ASSERT(SerialNumberFromHex(serial_number_str, &serial_number_));

I think that serial_number_str was not being collected properly but I am no expert. How can I make it known to the author?

2015-08-31 01:36:38 -0500 received badge  Famous Question (source)
2015-08-24 04:47:07 -0500 received badge  Notable Question (source)
2015-08-24 03:41:10 -0500 received badge  Supporter (source)
2015-08-24 03:00:19 -0500 received badge  Editor (source)
2015-08-24 02:35:10 -0500 received badge  Popular Question (source)
2015-08-21 07:39:49 -0500 asked a question Help using epos_hardware

Hello everyone! I am trying to add 4 maxon motors controlled by 4 maxon drives (EPOS2 70/10) and I have been unsuccessful so far. I have communicated with the EPOS2 in Windows and have gone through the initial setup correctly. EDIT: I will summarize the post in order to make it easier to read.

At first I had some USB permission problem which was solved by giving the device special permissions in udev/rules.d. I thought that was not enough and made this post but as ahendrix pointed out probably only by rebooting my computer did the permission change take effect.

I am still trying to make the example work with my own EPOS2 + Motor and the following issue still puzzles me: I have edited the example.yaml file that came with the epos_hardware to fit my motor. Still when I run the example.launch file I get:

[ERROR] [1440402458.067846767]: Could not find motor
[ERROR] [1440402458.067882353]: Could not configure motor: my_joint_actuator
[FATAL] [1440402458.067895978]: Failed to initialize motors

I realized something trying to troubleshoot the problem. My device's serial number is:

Serial Number: 0x662080006193

The package documentation states:

~/motor_name/serial_number (string)

The serial number of the motor (in hex). This is used to locate the motor.

So I have introduced: serial_number: '662080006193'. No problems so far but whenever I try to run the example and check rqt_console I get this ROS_INFO message:

Initializing: 0x7461757463416e6f

Which could be the cause of the problem since to my understanding it is trying to connect to a different device (correct me if I'm wrong). I have tried introducing the number in a variety of ways but I either got the same number (0x7461757463416e6f) or zero (0x0). Does anybody have any clues as to what's happening behind the curtain? Is the number being converted to hex twice? I have tried introducing the decimal equivalent but then I get zero in rqt_console...

Now the latest update I have is I have tried running roswtf with epos_hardware's example.launch file and this is what I get:

ERROR The following packages have rpath issues in manifest.xml:
 * epos_hardware: found flag "-L/opt/ros/indigo/share/controller_manager/lib", but no matching "-Wl,-rpath,/opt/ros/indigo/share/controller_manager/lib"
 * controller_manager: found flag "-L/opt/ros/indigo/share/controller_manager/lib", but no matching "-Wl,-rpath,/opt/ros/indigo/share/controller_manager/lib"

Could this be the source of the problem or at least a part of it? How do I fix it? I have checked package.xml in both epos_hardware and controller_manager but I am not exactly sure about what to do. I have tried commenting the following line in controller_manager's package.xml but although roswtf gave me no errors I still get the same problem when I try to execute the example:

  <export>
    <cpp lflags="-L${prefix}/lib -lcontroller_manager" cflags="-I${prefix}/include"/>
  </export>