-
Notifications
You must be signed in to change notification settings - Fork 71
getParam (and getParams) not returning anything #129
Description
Using Ros2 Web Bridge on ROS2 Eloquent:
I am calling getParam with a valid node name but not getting param data back. The callback is not executed. I do get plenty of subscription callbacks so the websocket and communication to ros2 web bridge is working fine. Inspecting the network tab details, I see that the request is properly going out but the web bridge is replying back with a non-descript error. You can see in this screenshot a bunch of /compliance/params subscription events (great!) but the service call to rosapi/get_param is failing with set_level "error":

I enabled debug stats in the ros2 bridge using:
DEBUG=ros2-web-bridge:Bridge node bin/rosbridge.js
...and I get this related error:
ros2-web-bridge:Bridge JSON command received: {"op":"call_service","id":"call_service:/rosapi/get_param:44","service":"/rosapi/get_param","type":"rosapi/GetParam","args":{"name":"/imu"}} +71ms
ros2-web-bridge:Bridge Exception caught in Bridge.executeCommand(): Error: The message required does not exist: rosapi, srv, GetParam +1ms
ros2-web-bridge:Bridge Error: Error: The message required does not exist: rosapi, srv, GetParam happened when executing command call_service +0ms
ros2-web-bridge:Bridge Response: {"op":"set_level","id":"call_service:/rosapi/get_param:44","level":"error"} +0ms
It suggests the rosapi.srv.GetParam message doesnt exist. I took a gander around the rclnodejs generated directory and I indeed can't find the message. Seems like the relevant service messages would be in generated/rcl_interfaces, yes? I see in that folder a bunch of param server and request/result messages. Grep'ing for msgname within all those generated files I get:
$ find node_modules/rclnodejs/generated/rcl_interfaces -exec grep "msgName\": " {} \;
"msgName": "SetParametersAtomically_Request"
"msgName": "GetParameterTypes_Response"
"msgName": "ParameterValue"
"msgName": "GetParameters_Response"
"msgName": "GetParameters_Request"
"msgName": "ListParametersResult"
"msgName": "Log"
"msgName": "ParameterEventDescriptors"
"msgName": "FloatingPointRange"
"msgName": "SetParametersResult"
"msgName": "IntegerRange"
"msgName": "ListParameters_Response"
"msgName": "ParameterType"
"msgName": "ListParameters_Request"
"msgName": "GetParameterTypes_Request"
"msgName": "SetParametersAtomically_Response"
"msgName": "Parameter"
"msgName": "IntraProcessMessage"
"msgName": "SetParameters_Response"
"msgName": "SetParameters_Request"
"msgName": "ParameterEvent"
"msgName": "DescribeParameters_Request"
"msgName": "DescribeParameters_Response"
"msgName": "ParameterDescriptor"
Did Eloquent perhaps change the Param service messages? Any other advice/suggestions?
Thank you,
Colin