web 端使用ros通信-订阅发布以及服务请求
发布话题 publish 发布取放货操作
const pickGoodsPublish = new ROSLIB.Topic({
ros: ros,
name: '/pick_drop_goods',
messageType: 'geometry_msgs/Goods'
});
const goodsMessage = new ROSLIB.Message({
control:0
})
function setGoodsMessage(value) {
goodsMessage.control = value
pickGoodsPublish.publish(goodsMessage)
}
订阅话题 subscribe 订阅机器人的实时位置
var sub_goalpose = null;
var goal_marker = null;
goal_marker = new createjs.Shape();
goal_marker.graphics.beginFill(createjs.Graphics.getRGB(255, 0, 0, 0.66));
goal_marker.graphics.drawCircle(0, 0, 5);
function subGoalPoseCallback(pose) {
goal_marker.x = pose.x;
goal_marker.y = -pose.y;
goal_marker.scaleX = 1.0 / handle_stage.scaleX;
goal_marker.scaleY = 1.0 / handle_stage.scaleY;
handle_stage.addChild(goal_marker);
}
sub_goalpose = new ROSLIB.Topic({
ros: ros,
name: '/goal_pose',
messageType: 'geometry_msgs/Pose2D',
throttle_rate: 100
});
sub_goalpose.subscribe(subGoalPoseCallback);
服务请求 ServiceRequest
var clt_map_create = new ROSLIB.Service({
ros : ros,
name : '/map_create_srv',
serviceType: 'api_srvs/MapCreate'
});
var requset_map_create = new ROSLIB.ServiceRequest({
cmd : {
func_type : FUNC_TYPE_CREATE_MAP,
map_name : '',
map_path : '',
}
});
function MapCreateServiceCall(value) {
switch (value) {
case FUNC_TYPE_CREATE_MAP:
{
requset_map_create.cmd.func_type = FUNC_TYPE_CREATE_MAP;
clt_map_create.callService(requset_map_create, function(result) {
console.info('Result for service call on' + clt_map_create.name + ': ' + result.ret);
});
break;
}
}
}