doosan-robotics / doosan-robot2

ROS 2 for Doosan Robot
BSD 3-Clause "New" or "Revised" License
69 stars 48 forks source link

Wrong Value when Get request of AUX_CONTROL service #73

Closed Bkyb closed 3 months ago

Bkyb commented 3 months ago

I'm using Ubuntu 22.04 humble-devel version. When I request 'aux_control service', ALL values are ""ZERO"". How can I solve it?

$ ros2 service call /dsr01/aux_control/get_current_rotm dsr_msgs2/srv/GetCurrentRotm "{ref: 0}"
requester: making request: dsr_msgs2.srv.GetCurrentRotm_Request(ref=0)

response:
dsr_msgs2.srv.GetCurrentRotm_Response(rot_matrix=[std_msgs.msg.Float64MultiArray(layout=std_msgs.msg.MultiArrayLayout(dim=[], data_offset=0), data=[0.0, 0.0, 0.0]), std_msgs.msg.Float64MultiArray(layout=std_msgs.msg.MultiArrayLayout(dim=[], data_offset=0), data=[0.0, 0.0, 0.0]), std_msgs.msg.Float64MultiArray(layout=std_msgs.msg.MultiArrayLayout(dim=[], data_offset=0), data=[0.0, 0.0, 0.0])], success=True)
ros2 service call /dsr01/aux_control/get_control_mode dsr_msgs2/srv/GetControlMode 
requester: making request: dsr_msgs2.srv.GetControlMode_Request()

response:
dsr_msgs2.srv.GetControlMode_Response(control_mode=0, success=True)

Other requests are executed without problems.

ros2 service call /dsr01/system/get_current_pose dsr_msgs2/srv/GetCurrentPose "{space_type: 1}"
requester: making request: dsr_msgs2.srv.GetCurrentPose_Request(space_type=1)

response:
dsr_msgs2.srv.GetCurrentPose_Response(pos=array([ -34.49781036,  558.99615479,  651.42028809,   97.49585724,
       -179.99205017,    7.49585772]), success=True)

Log

ros2 launch dsr_bringup2 dsr_bringup2_rviz.launch.py mode:=real host:=192.168.137.100 port:=12345 model:=m1013
[INFO] [launch]: All log files can be found below /home/bkyb/.ros/log/2024-07-04-20-23-42-165232-bkyb-20688
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [connection-1]: process started with pid [20691]
[INFO] [ros2_control_node-2]: process started with pid [20693]
[INFO] [robot_state_publisher-3]: process started with pid [20695]
[INFO] [spawner-4]: process started with pid [20697]
[INFO] [spawner-5]: process started with pid [20699]
[robot_state_publisher-3] [INFO] [1720092222.506361376] [dsr01.robot_state_publisher]: got segment base_link
[robot_state_publisher-3] [INFO] [1720092222.506450292] [dsr01.robot_state_publisher]: got segment link_1
[robot_state_publisher-3] [INFO] [1720092222.506472711] [dsr01.robot_state_publisher]: got segment link_2
[robot_state_publisher-3] [INFO] [1720092222.506477392] [dsr01.robot_state_publisher]: got segment link_3
[robot_state_publisher-3] [INFO] [1720092222.506481590] [dsr01.robot_state_publisher]: got segment link_4
[robot_state_publisher-3] [INFO] [1720092222.506485504] [dsr01.robot_state_publisher]: got segment link_5
[robot_state_publisher-3] [INFO] [1720092222.506489544] [dsr01.robot_state_publisher]: got segment link_6
[robot_state_publisher-3] [INFO] [1720092222.506493428] [dsr01.robot_state_publisher]: got segment world
[ros2_control_node-2] [WARN] [1720092222.515445472] [dsr01.controller_manager]: [Deprecated] Passing the robot description parameter directly to the control_manager node is deprecated. Use '~/robot_description' topic from 'robot_state_publisher' instead.
[ros2_control_node-2] [INFO] [1720092222.515713792] [resource_manager]: Loading hardware 'm1013' 
[ros2_control_node-2] [INFO] [1720092222.519088578] [resource_manager]: Initialize hardware 'm1013' 
[spawner-4] [INFO] [1720092224.787306936] [dsr01.spawner_dsr_controller2]: Waiting for '/dsr01/controller_manager' services to be available
[spawner-5] [INFO] [1720092224.804373380] [dsr01.spawner_joint_state_broadcaster]: Waiting for '/dsr01/controller_manager' services to be available
[spawner-4] [INFO] [1720092226.808810036] [dsr01.spawner_dsr_controller2]: Waiting for '/dsr01/controller_manager' services to be available
[spawner-5] [INFO] [1720092226.825089830] [dsr01.spawner_joint_state_broadcaster]: Waiting for '/dsr01/controller_manager' services to be available
[spawner-4] [INFO] [1720092228.830294463] [dsr01.spawner_dsr_controller2]: Waiting for '/dsr01/controller_manager' services to be available
[spawner-5] [INFO] [1720092228.844451908] [dsr01.spawner_joint_state_broadcaster]: Waiting for '/dsr01/controller_manager' services to be available
[ros2_control_node-2] [INFO] [1720092230.528251729] [dsr01.dsr_hw_interface2]: name: dsr01
[ros2_control_node-2] [INFO] [1720092230.528299267] [dsr01.dsr_hw_interface2]: rate: 100
[ros2_control_node-2] [INFO] [1720092230.528322448] [dsr01.dsr_hw_interface2]: standby: 5000
[ros2_control_node-2] [INFO] [1720092230.528337053] [dsr01.dsr_hw_interface2]: command: true
[ros2_control_node-2] [INFO] [1720092230.528344417] [dsr01.dsr_hw_interface2]: host: 192.168.137.100
[ros2_control_node-2] [INFO] [1720092230.528353013] [dsr01.dsr_hw_interface2]: port: 12345
[ros2_control_node-2] [INFO] [1720092230.528360142] [dsr01.dsr_hw_interface2]: mode: real
[ros2_control_node-2] [INFO] [1720092230.528378149] [dsr01.dsr_hw_interface2]: model: m1013
[ros2_control_node-2] [INFO] [1720092230.528384864] [dsr01.dsr_hw_interface2]: gripper: none
[ros2_control_node-2] [INFO] [1720092230.528401444] [dsr01.dsr_hw_interface2]: mobile: none
[ros2_control_node-2] [INFO] [1720092230.528463612] [dsr_hw_interface2]: _______________________________________________
[ros2_control_node-2] 
[ros2_control_node-2] [INFO] [1720092230.528472618] [dsr_hw_interface2]:     INITAILIZE
[ros2_control_node-2] [INFO] [1720092230.528475943] [dsr_hw_interface2]: _______________________________________________
[ros2_control_node-2] 
[ros2_control_node-2] [callback OnMonitoringAccessControlCB] eAccCtrl: 3
[ros2_control_node-2] [callback OnTpInitializingCompletedCB] tp initializing completed
[ros2_control_node-2] [callback OnMonitoringStateCB] current state: (1) STANDBY
[ros2_control_node-2] [callback OnMonitoringStateCB] current state: (3) SAFE_OFF
[ros2_control_node-2] [callback OnMonitoringAccessControlCB] eAccCtrl: 2
[ros2_control_node-2] [INFO] [1720092230.637759203] [dsr_hw_interface2]: _______________________________________________
[ros2_control_node-2] 
[ros2_control_node-2] [INFO] [1720092230.637844186] [dsr_hw_interface2]:     Access control granted 
[ros2_control_node-2] [INFO] [1720092230.637864214] [dsr_hw_interface2]: _______________________________________________
[ros2_control_node-2] 
[spawner-4] [INFO] [1720092230.851092661] [dsr01.spawner_dsr_controller2]: Waiting for '/dsr01/controller_manager' services to be available
[spawner-5] [INFO] [1720092230.863733662] [dsr01.spawner_joint_state_broadcaster]: Waiting for '/dsr01/controller_manager' services to be available
[ros2_control_node-2] [callback OnMonitoringStateCB] current state: (3) SAFE_OFF
[ros2_control_node-2] [callback OnMonitoringStateCB] current state: (3) SAFE_OFF
[ros2_control_node-2] [INFO] [1720092231.183111137] [dsr_hw_interface2]: _______________________________________________
[ros2_control_node-2] 
[ros2_control_node-2] [INFO] [1720092231.183181095] [dsr_hw_interface2]:     OPEN CONNECTION
[ros2_control_node-2] [INFO] [1720092231.183202433] [dsr_hw_interface2]: _______________________________________________
[ros2_control_node-2] 
[ros2_control_node-2] [INFO] [1720092231.184174251] [dsr_hw_interface2]:     Real Robot Mode
[ros2_control_node-2] [INFO] [1720092231.184220590] [dsr_hw_interface2]:     DRCF version = GF02070201
[ros2_control_node-2] [INFO] [1720092231.184254462] [dsr_hw_interface2]:     DRFL version = GL010118
[ros2_control_node-2] [INFO] [1720092231.184271961] [dsr_hw_interface2]:     m_nVersionDRCF = 2070201
[ros2_control_node-2] [INFO] [1720092231.184288660] [dsr_hw_interface2]: _______________________________________________
[ros2_control_node-2] 
[ros2_control_node-2] [callback OnMonitoringStateCB] current state: (1) STANDBY
[ros2_control_node-2] [INFO] [1720092232.432866001] [dsr_hw_interface2]:     [init]::read 0-pos:   0.000
[ros2_control_node-2] [INFO] [1720092232.432893782] [dsr_hw_interface2]:     [init]::read 1-pos:   0.000
[ros2_control_node-2] [INFO] [1720092232.432901633] [dsr_hw_interface2]:     [init]::read 2-pos:   0.000
[ros2_control_node-2] [INFO] [1720092232.432907118] [dsr_hw_interface2]:     [init]::read 3-pos:   0.000
[ros2_control_node-2] [INFO] [1720092232.432912254] [dsr_hw_interface2]:     [init]::read 4-pos:   0.000
[ros2_control_node-2] [INFO] [1720092232.432917972] [dsr_hw_interface2]:     [init]::read 5-pos:   0.000
[ros2_control_node-2] [INFO] [1720092232.432938645] [resource_manager]: Successful initialization of hardware 'm1013'
[ros2_control_node-2] [callback StateInterface] StateInterface state_interfaces: 0
[ros2_control_node-2] [callback StateInterface] StateInterface state_interfaces: 0
[ros2_control_node-2] [callback StateInterface] StateInterface state_interfaces: 0
[ros2_control_node-2] [callback StateInterface] StateInterface state_interfaces: 0
[ros2_control_node-2] [callback StateInterface] StateInterface state_interfaces: 0
[ros2_control_node-2] [callback StateInterface] StateInterface state_interfaces: 0
[ros2_control_node-2] [callback CommandInterface] CommandInterface joint_position_command_: 0
[ros2_control_node-2] [callback CommandInterface] CommandInterface joint_position_command_: 0
[ros2_control_node-2] [callback CommandInterface] CommandInterface joint_position_command_: 0
[ros2_control_node-2] [callback CommandInterface] CommandInterface joint_position_command_: 0
[ros2_control_node-2] [callback CommandInterface] CommandInterface joint_position_command_: 0
[ros2_control_node-2] [callback CommandInterface] CommandInterface joint_position_command_: 0
[ros2_control_node-2] [INFO] [1720092232.433221044] [resource_manager]: 'configure' hardware 'm1013' 
[ros2_control_node-2] [INFO] [1720092232.433234700] [resource_manager]: Successful 'configure' of hardware 'm1013'
[ros2_control_node-2] [INFO] [1720092232.433245267] [resource_manager]: 'activate' hardware 'm1013' 
[ros2_control_node-2] [INFO] [1720092232.433252903] [resource_manager]: Successful 'activate' of hardware 'm1013'
[ros2_control_node-2] [INFO] [1720092232.437257945] [dsr01.controller_manager]: update rate is 10 Hz
[ros2_control_node-2] [INFO] [1720092232.437379259] [dsr01.controller_manager]: RT kernel is recommended for better performance
[ros2_control_node-2] [INFO] [1720092232.476108472] [dsr01.controller_manager]: Loading controller 'dsr_controller2'
[ros2_control_node-2] [INFO] [1720092232.485150328] [dsr_hw_interface2]: [DRFL address] 0x7f7bc6fae000
[ros2_control_node-2] [INFO] [1720092232.525755598] [dsr_hw_interface2]: [callback OnLogAlarm]
[ros2_control_node-2] [INFO] [1720092232.525779372] [dsr_hw_interface2]:  level : 1
[ros2_control_node-2] [INFO] [1720092232.525786409] [dsr_hw_interface2]:  group : 1
[ros2_control_node-2] [INFO] [1720092232.525791974] [dsr_hw_interface2]:  index : 1037
[ros2_control_node-2] [INFO] [1720092232.525797449] [dsr_hw_interface2]:  param : 
[ros2_control_node-2] [INFO] [1720092232.525802892] [dsr_hw_interface2]:  param : 
[ros2_control_node-2] [INFO] [1720092232.525808330] [dsr_hw_interface2]:  param : 
[spawner-4] [INFO] [1720092232.538834966] [dsr01.spawner_dsr_controller2]: Loaded dsr_controller2
[ros2_control_node-2] [INFO] [1720092232.539813216] [dsr01.controller_manager]: Loading controller 'joint_state_broadcaster'
[ros2_control_node-2] [INFO] [1720092232.638161798] [dsr01.controller_manager]: Configuring controller 'dsr_controller2'
[spawner-5] [INFO] [1720092232.640838695] [dsr01.spawner_joint_state_broadcaster]: Loaded joint_state_broadcaster
[ros2_control_node-2] [INFO] [1720092232.738332359] [dsr01.controller_manager]: Configuring controller 'joint_state_broadcaster'
[ros2_control_node-2] [INFO] [1720092232.738517822] [dsr01.joint_state_broadcaster]: 'joints' or 'interfaces' parameter is empty. All available state interfaces will be published
[spawner-4] [INFO] [1720092233.038312257] [dsr01.spawner_dsr_controller2]: Configured and activated dsr_controller2
[INFO] [spawner-4]: process has finished cleanly [pid 20697]
[INFO] [rviz2-6]: process started with pid [20785]
[spawner-5] [INFO] [1720092233.238439571] [dsr01.spawner_joint_state_broadcaster]: Configured and activated joint_state_broadcaster
[INFO] [spawner-5]: process has finished cleanly [pid 20699]
[rviz2-6] [INFO] [1720092233.838637436] [rviz2]: Stereo is NOT SUPPORTED
[rviz2-6] [INFO] [1720092233.838694937] [rviz2]: OpenGl version: 4.6 (GLSL 4.6)
[rviz2-6] [INFO] [1720092233.938667828] [rviz2]: Stereo is NOT SUPPORTED
[ros2_control_node-2] [INFO] [1720092242.186128214] [dsr_controller2]: movej_cb() 0x7f7bc6fae000
[ros2_control_node-2] [INFO] [1720092242.186174170] [dsr_controller2]: movej_cb() called and calling Drfl->movej
[ros2_control_node-2] [callback OnMonitoringStateCB] current state: (2) MOVING
[ros2_control_node-2] [callback OnMonitoringStateCB] current state: (1) STANDBY
[ros2_control_node-2] [callback OnMonitoringStateCB] current state: (3) SAFE_OFF
[ros2_control_node-2] [INFO] [1720092547.335876269] [dsr_hw_interface2]: [callback OnLogAlarm]
[ros2_control_node-2] [INFO] [1720092547.335939258] [dsr_hw_interface2]:  level : 1
[ros2_control_node-2] [INFO] [1720092547.335961343] [dsr_hw_interface2]:  group : 1
[ros2_control_node-2] [INFO] [1720092547.335978284] [dsr_hw_interface2]:  index : 1038
[ros2_control_node-2] [INFO] [1720092547.335995067] [dsr_hw_interface2]:  param : 
[ros2_control_node-2] [INFO] [1720092547.336013816] [dsr_hw_interface2]:  param : 
[ros2_control_node-2] [INFO] [1720092547.336029588] [dsr_hw_interface2]:  param : 
[ros2_control_node-2] [callback OnMonitoringStateCB] current state: (1) STANDBY
[ros2_control_node-2] [INFO] [1720092707.429710152] [dsr_controller2]: get_current_pose_cb() called and calling Drfl->get_current_pose(1)
[ros2_control_node-2] [callback OnMonitoringStateCB] current state: (3) SAFE_OFF
[ros2_control_node-2] [INFO] [1720092847.826820990] [dsr_hw_interface2]: [callback OnLogAlarm]
[ros2_control_node-2] [INFO] [1720092847.826882583] [dsr_hw_interface2]:  level : 1
[ros2_control_node-2] [INFO] [1720092847.826904071] [dsr_hw_interface2]:  group : 1
[ros2_control_node-2] [INFO] [1720092847.826921445] [dsr_hw_interface2]:  index : 1038
[ros2_control_node-2] [INFO] [1720092847.826938315] [dsr_hw_interface2]:  param : 
[ros2_control_node-2] [INFO] [1720092847.826954096] [dsr_hw_interface2]:  param : 
[ros2_control_node-2] [INFO] [1720092847.826969600] [dsr_hw_interface2]:  param : 
[ros2_control_node-2] [callback OnMonitoringStateCB] current state: (1) STANDBY
Bkyb commented 3 months ago

It is not a solution to this problem, but I modified "dsr_hw_interface2.h" and "dsr_hw_interface2.cpp" to publish the desired value.

dsr_hw_interface2.h

...
unsigned int m_port;
rclcpp::Publisher<sensor_msgs::msg::JointState>::SharedPtr m_joint_state_pub_;  

rclcpp::Publisher<std_msgs::msg::Float64MultiArray>::SharedPtr  here_CurrentRotm; // I changed here 
...

dsr_hw_interface2.cpp

...
auto qos = rclcpp::QoS(rclcpp::QoSInitialization::from_rmw(rmw_qos_profile_default));
m_joint_state_pub_ = m_node_->create_publisher<sensor_msgs::msg::JointState>("joint_states", qos);
here_CurrentRotm = m_node_->create_publisher<std_msgs::msg::Float64MultiArray>("msg/current_rotm", 10); // I changed here
...
...
    /* I changed here  */
    auto heremsg = std_msgs::msg::Float64MultiArray();

    heremsg.layout.dim.resize(2);
    heremsg.layout.dim[0].label = "rows";
    heremsg.layout.dim[0].size = 3;
    heremsg.layout.dim[0].stride = 9;
    heremsg.layout.dim[1].label = "cols";
    heremsg.layout.dim[1].size = 3;
    heremsg.layout.dim[1].stride = 3;
    heremsg.data.resize(9);

    for(int i = 0; i < 3; i++){
        for(int j = 0; j < 3; j++){
            if(pData){
                g_stDrState.fRotationMatrix[j][i] = pData->_tCtrl._tTask._fRotationMatrix[j][i];    // Rotation Matrix
                heremsg.data[i * 3 + j] = pData->_tCtrl._tTask._fRotationMatrix[j][i]; // 

            }
        }
    }
    here_CurrentRotm -> publish(heremsg);
...

Result

ros2 topic echo /dsr01/msg/current_rotm 
layout:
  dim:
  - label: rows
    size: 3
    stride: 9
  - label: cols
    size: 3
    stride: 3
  data_offset: 0
data:
- -0.001293396227993071
- -0.9999966621398926
- 0.0022363809403032064
- -0.9999990463256836
- 0.001292342902161181
- -0.00047234821249730885
- 0.00046945648500695825
- -0.0022369897924363613
- -0.9999973773956299
---
Bkyb commented 3 months ago

It is not a solution to this problem, but I modified "dsr_hw_interface2.h" and "dsr_hw_interface2.cpp" to publish the desired value.