ros-industrial / motoman

ROS-Industrial Motoman support (http://wiki.ros.org/motoman)
146 stars 195 forks source link

Motion Streaming Interface for CSDA10F - ASSERTION FAILED: Called to publisher on and invalid Publisher #209

Closed Danfoa closed 6 years ago

Danfoa commented 6 years ago

Good day,

We (@ogunniran and me) are trying to interface the CSDA10F robot with an FS100 controller with ROS using the motoman driver provided in this repository, after finishing up all the configuration files of the robot and for communication we are getting an error while launching the robot_interface_streaming_csda10f.launch (this is on a personal repository but it is launching nodes from the motoman package).

If we disconnect the Ethernet cable and launch the file, the launching does not failed and just tries to connect to the IP given without any answer off course, but when we connect the controller and computer with the Ethernet cable and launch we get the following output:

SUMMARY
========

PARAMETERS
 * /controller_joint_names: ['arm_left_joint_...
 * /robot_ip_address: 192.168.0.1
 * /rosdistro: kinetic
 * /rosversion: 1.12.13
 * /topic_list: [{'joints': ['arm...

NODES
  /
    joint_state (motoman_driver/robot_state_bswap)
    joint_trajectory_action (motoman_driver/motoman_driver_joint_trajectory_action)
    motion_streaming_interface (motoman_driver/motion_streaming_interface_bswap)

auto-starting new master
process[master]: started with pid [4791]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to 08058708-4930-11e8-90b0-54e1adbb4e7b
process[rosout-1]: started with pid [4804]
started core service [/rosout]
process[joint_state-2]: started with pid [4807]
process[motion_streaming_interface-3]: started with pid [4809]
process[joint_trajectory_action-4]: started with pid [4823]
[FATAL] [1524733128.278551932]: ASSERTION FAILED
    file = /opt/ros/kinetic/include/ros/publisher.h
    line = 102
    cond = false
    message =
[FATAL] [1524733128.278578784]: Call to publish() on an invalid Publisher
[FATAL] [1524733128.278610387]:

[joint_state-2] process has died [pid 4807, exit code -5, cmd /home/invite/catkin_ws/devel/lib/motoman_driver/robot_state_bswap __name:=joint_state __log:=/home/invite/.ros/log/08058708-4930-11e8-90b0-54e1adbb4e7b/joint_state-2.log].
log file: /home/invite/.ros/log/08058708-4930-11e8-90b0-54e1adbb4e7b/joint_state-2*.log

We are basing all the configuration files similar to the SDA10F robot due to its similarity with ours, but we do not know from where comes this problem. The same issue was faced by Carol Martinez on this google group (in which @shaun-edwards @gavanderhoorn and @ted-miller participated, but no assertion on why it occurs was given).

We will be contacting Yaskawa representatives but as stated in the google group it seems to be a problem with this package or our configuration files (which you can find here). We haven't been able to test them but they are pretty similar to the already accepted ones from the SDA10F,

PS: We are calling the robot invite_motoman... since we are doing the interfacing first for the company Invite GmbH, but once we run test successfully we will be doing a PR for the CSDA10F robot on the proper repositories (the URDF configuration files were already accepted on the motoman_experimental repo) PS: @ogunniran could you please upload a picture of the motion group configuration on the robot controller (pendant image), maybe this information might help.

gavanderhoorn commented 6 years ago

First thing I notice is that your group definitions start at 1, not at 0:

topic_list:
    - name: csda10f_r1_controller
      ns: csda10f
      group: 1
      joints: ['arm_left_joint_1_s','arm_left_joint_2_l','arm_left_joint_3_e','arm_left_joint_4_u','arm_left_joint_5_r','arm_left_joint_6_b','arm_left_joint_7_t','arm_left_joint_tool0','arm_left_joint_tcp']
    - name: csda10f_r2_controller
      ns: csda10f
      group: 2
      joints: ['arm_right_joint_1_s','arm_right_joint_2_l','arm_right_joint_3_e','arm_right_joint_4_u','arm_right_joint_5_r','arm_right_joint_6_b','arm_right_joint_7_t','arm_right_joint_tool0','arm_right_joint_tcp']
    - name: csda10f_b1_controller
      ns: csda10f
      group: 3
      joints: ['torso_joint_b1']
    - name: csda10f_b2_controller
      ns: csda10f
      group: 4
      joints: ['torso_joint_b2']

That is legal, but only if your controller has things configured that way as well.

With an SDA10, I doubt that is the case.

Note that the Creating a Dual-Arm System does have a 0 group.

gavanderhoorn commented 6 years ago

Note that there is still an open issue that I believe may come to bite you later: #84.

I believe there is a PR that should fix that, but the proposed solution was (iirc) not entirely acceptable (broke functionality for robots with < 4 groups).

Danfoa commented 6 years ago

Thank you very much @gavanderhoorn, changing the group numbers seem to remove the publisher error, and now we are getting the joint states from the controller.

As far to the problem while planning with two arms and torso together, the pull request you mention is this #79 ?

gavanderhoorn commented 6 years ago

No, it was actually #135.

gavanderhoorn commented 6 years ago

Seeing as your original issue has been addressed, I would suggest to close this ticket.