# Revision history [back]

I don't think this has anything to do with specifying negative limits for your joints, that is well supported (would be very strange if it weren't).

As the error tells you, a name containing a - is not allowed. Looking at your urdf, I see joint names like Base-Servo2.

I think if you change those, things will start to work.

You can find more about what are considered valid names in ROS on wiki/Names.

I don't think this has anything to do with specifying negative limits for your joints, that is well supported (would be very strange if it weren't).

As the error tells you, a name containing a - is not allowed. Looking at your urdf, I see joint names like Base-Servo2.

I think if you change those, things will start to work.

You can find more about what are considered valid names in ROS on wiki/Names.

PS: besides the illegal dash, I'd also recommend you don't use capitals anywhere: not in names of xacro/urdf entities (ie: joints, links), but also not in filenames or extensions. Rationale: if there are never any capitals, you cannot by mistake use the wrong capitalisation anywhere. Seeing as Linux FS are case-sensitive, that is a good thing.

I don't think this has anything to do with specifying negative limits for your joints, that is well supported (would be very strange if it weren't).

As the error tells you, a name containing a - is not allowed. Looking at your urdf, I see joint names like Base-Servo2.

I think if you change those, things will start to work.

You can find more about what are considered valid names in ROS on wiki/Names.

PS: besides the illegal dash, I'd also recommend you don't use capitals anywhere: not in names of xacro/urdf entities (ie: joints, links), but also not in filenames or extensions. Rationale: if there are never any capitals, you cannot by mistake use the wrong capitalisation anywhere. Seeing as Linux FS are case-sensitive, that is a good thing.

Edit:

reconstruct my solidworks model so all servos are in the 0 position to begin with, rather than the home position. Then, the home position can be created as a pose later on.

If I may suggest, I would do this in any case. By convention, ROS urdfs are modelled with the robot in its zero position, which isn't necessarily its home position. Zero poses for robots typically don't change (as that would mean changing the positions of encoders on joints), home positions do. By coupling the urdf to your home position, you'd have to update the urdf whenever the home position changes.

Why doesn't it like negative radian values for limits? And what is the best way to fix this?

I don't think this has anything to do with specifying negative limits for your joints, that is perfectly well supported (would be very strange if it weren't).

As the error tells you, a name containing a - is not allowed. Looking at your urdf, I see joint names like Base-Servo2.

I think if you change those, things will start to work.

You can find more about what are considered valid names in ROS on wiki/Names.

PS: besides the illegal dash, I'd also recommend you don't use capitals anywhere: not in names of xacro/urdf entities (ie: joints, links), but also not in filenames or extensions. Rationale: if there are never any capitals, you cannot by mistake use the wrong capitalisation anywhere. Seeing as Linux FS are case-sensitive, that is a good thing.

Edit:

reconstruct my solidworks model so all servos are in the 0 position to begin with, rather than the home position. Then, the home position can be created as a pose later on.

If I may suggest, I would do this in any case. By convention, ROS urdfs are modelled with the robot in its zero position, which isn't necessarily its home position. Zero poses for robots typically don't change (as that would mean changing the positions of encoders on joints), home positions do. By coupling the urdf to your home position, you'd have to update the urdf whenever the home position changes.

Why doesn't it like negative radian values for limits? And what is the best way to fix this?

I don't think this has anything to do with specifying negative limits for your joints, that is perfectly well supported (would be very strange if it weren't).

As the error tells you, a name containing a - is not allowed. Looking at your urdf, I see joint names like Base-Servo2.

. MoveIt uses the names of the joints as part of parameter names, and those cannot contain dashes. You can see the offending parameter name in the error message:

robot_description_planning/joint_limits/Base-Servo2/max_position


I think if you change those, the joint names, things will start to work.

You can find more about what are considered valid names in ROS on wiki/Names.

PS: besides the illegal dash, I'd also recommend you don't use capitals anywhere: not in names of xacro/urdf entities (ie: joints, links), but also not in filenames or extensions. Rationale: if there are never any capitals, you cannot by mistake use the wrong capitalisation anywhere. Seeing as Linux FS are case-sensitive, that is a good thing.

Edit:

reconstruct my solidworks model so all servos are in the 0 position to begin with, rather than the home position. Then, the home position can be created as a pose later on.

If I may suggest, I would do this in any case. By convention, ROS urdfs are modelled with the robot in its zero position, which isn't necessarily its home position. Zero poses for robots typically don't change (as that would mean changing the positions of encoders on joints), home positions do. By coupling the urdf to your home position, you'd have to update the urdf whenever the home position changes.