1
$\begingroup$

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:

[192.168.1.237-0]: [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 [192.168.1.237-0]: [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:

<launch> <!-- ROS parameters --> <!-- remote machine (wheatley) --> <group> <machine name="wheatley" address="192.168.1.237" 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"/> </include> </group> </launch> 

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

$\endgroup$

1 Answer 1

0
$\begingroup$

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.

$\endgroup$

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.