I've been trying to run robot_state_publisher and joint_state_publisher on a remote TX1 running Ubuntu 16.04 and ROS Kinetic. When running the node from a local launch file (manually ssh into the remote machine and run launch file), everything runs fine. However, when I try to run a launch file from my local machine (launches nodes from remote machine using the < machine > tag), I get this error in my terminal:

[]: [robot_state_publisher-28] process has died [pid 26798, exit code 255, cmd /opt/ros/kinetic/lib/robot_state_publisher/state_publisher __name:=robot_state_publisher log:=/home/nvidia/.ros/log/038bfbd8-7afb-11e8-b9f2-ac220b57ae89/robot_state_publisher-28.log].

log file: /home/nvidia/.ros/log/038bfbd8-7afb-11e8-b9f2-ac220b57ae89/robot_state_publisher-28*.log []: [joint_state_publisher-27] process has died [pid 26780, exit code 1, cmd /opt/ros/kinetic/lib/joint_state_publisher/joint_state_publisher __name:=joint_state_publisher log:=/home/nvidia/.ros/log/038bfbd8-7afb-11e8-b9f2-ac220b57ae89/joint_state_publisher-27.log].

log file: /home/nvidia/.ros/log/038bfbd8-7afb-11e8-b9f2-ac220b57ae89/joint_state_publisher-27*.log

How can I fix this? Here's my launch file:


    <!-- ROS parameters -->
    <!-- remote machine (wheatley) -->

        <machine name="wheatley" address="" env-loader="/home/nvidia/catkin_ws/devel/env.sh" user="nvidia" password="nvidia" default="true" />
        <include file="freenect.launch"/>
                    <arg name="depth_registration" value="true" />
                    <arg name="publish_tf" value="false" />
        <include file="mpu_9250.launch" />

        <arg name="model" default="wheatley.urdf"/>

        <param name="robot_description" command="$(find xacro)/xacro --inorder $(arg model)"/>

        <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
                <param name="use_gui" value="false" />
        <node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />
            <param name="use_gui" value="false" />

            <!-- IMU frame: just over the RGB camera -->
            <!--node pkg="tf" type="static_transform_publisher" name="rgb_to_imu_tf" args="0 0.0 0 0.0 0.0 0.0 /sensor_link /imu_link 50" /-->

            <arg name="pi/2" value="1.5707963267948966" />
            <arg name="optical_rotate" value="0 0 0 0 0 0" />
            <node pkg="tf" type="static_transform_publisher" name="optical_rotation" args="$(arg optical_rotate) /sensor_link /camera_link 50" /> 

        <include file="rtabmap.launch">
            <arg name="rtabmap_args" value="--delete_db_on_start"/>


Here's the error traceback on the robot:

Traceback (most recent call last):
  File "/home/nvidia/catkin_ws/src/joint_state_publisher/joint_state_publisher/joint_state_publisher", line 474, in <module>
    jsp = JointStatePublisher()
  File "/home/nvidia/catkin_ws/src/joint_state_publisher/joint_state_publisher/joint_state_publisher", line 149, in __init__
    robot = xml.dom.minidom.parseString(description)
  File "/usr/lib/python2.7/xml/dom/minidom.py", line 1928, in parseString
    return expatbuilder.parseString(string)
  File "/usr/lib/python2.7/xml/dom/expatbuilder.py", line 940, in parseString
    return builder.parseString(string)
  File "/usr/lib/python2.7/xml/dom/expatbuilder.py", line 223, in parseString
    parser.Parse(string, True)
TypeError: Parse() argument 1 must be string or read-only buffer, not None

**EDIT: ** Here's the error from robot-state-publisher:

[ERROR] [1530379066.805335879]: Could not find parameter robot_description on parameter server


1 Answer 1


So robot_state_publisher uses the parameter robot_description and the joint positions from the topic /joint_states (published using joint_state_publisher in your case) to calculate the forward kinematics of the robot and publish the results on topic \tf. From the trace it looks like the parameter robot_description has not been set, I would suggest debugging where you set the param. Either directly load the xml file,

<!-- Load the urdf into the parameter server. -->
<param name="my_robot_description" textfile="$(find mypackage)/urdf/robotmodel.xml"/>

Or set the param on command line using rosparam set.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.