Joint State Publisher not working

Hi all,

I want to use a skid steer robot in Isaac, and I tried to use the joint-state command from ros bridge but it does not work when I try to control the joints using velocity drives. It works fine using position drives though.

Basically if I use the python example called moveit.py with franka it works well. However, if I replace franka by the jetbot, I cannot control the joints. I can see the state of the joints, but when I publish a command to a joint it does not work.

Is there something I am doing wrong? A post from last year mentioned that this would be possible with the next release (as of today, the current one). Here is the command I am sending from ROS.

 rostopic pub -r 50 /joint_command sensor_msgs/JointState "header:
  seq: 0
  stamp: {secs: 0, nsecs: 0}
  frame_id: ''
name: ['left_wheel_joint']
position: [0]
velocity: [100]
effort: [0]" 

I guess I could do it manually using something like that with dynamic control:

self._wheel_right = self._dc.find_articulation_dof(self._ar, "left_wheel_joint")
self._wheel_left = self._dc.find_articulation_dof(self._ar, "right_wheel_joint")

vel_props = _dynamic_control.DofProperties()
vel_props.drive_mode = _dynamic_control.DRIVE_VEL
vel_props.damping = 1e8
vel_props.stiffness = 0
_dc.set_dof_properties(_wheel_right, vel_props)
_dc.set_dof_properties(_wheel_left, vel_props)

But doing it through the rosbridge would be more convenient.

To reproduce this issue, one can replace the starting lines in moveit.py like so:

#FRANKA_STAGE_PATH = "/Franka"
FRANKA_STAGE_PATH = "/jetbot"
FRANKA_USD_PATH = "/Isaac/Robots/Jetbot/jetbot.usd"
#FRANKA_USD_PATH = "/Isaac/Robots/Franka/franka_alt_fingers.usd"
BACKGROUND_STAGE_PATH = "/background"
#BACKGROUND_USD_PATH = "/Isaac/Environments/Simple_Room/simple_room.usd"
BACKGROUND_USD_PATH = "/Isaac/Environments/Simple_Warehouse/warehouse.usd"

Thanks in advance,

Best,

Antoine

Simple fix, when you publish the command message, leave the position/effort fields blank, whats happening is that the first command gets applied (in this case position of zero) and the rest are ignored.

This should work:

 rostopic pub -r 50 /joint_command sensor_msgs/JointState "header:
  seq: 0
  stamp: {secs: 0, nsecs: 0}
  frame_id: ''
name: ['left_wheel_joint']
position: []
velocity: [100]
effort: []" 

Thanks for the tip it works flawlessly with the fields empty.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.