private void Update() { // Move our position a step closer to the target. float step = speed * Time.deltaTime; // calculate distance to move cube.transform.position = Vector3.MoveTowards(cube.transform.position, destination, step); if (Vector3.Distance(cube.transform.position, destination) < delta && Time.time > awaitingResponseUntilTimestamp) { Debug.Log("Destination reached."); PosRotMsg cubePos = new PosRotMsg( cube.transform.position.x, cube.transform.position.y, cube.transform.position.z, cube.transform.rotation.x, cube.transform.rotation.y, cube.transform.rotation.z, cube.transform.rotation.w ); PositionServiceRequest positionServiceRequest = new PositionServiceRequest(cubePos); // Send message to ROS and return the response ros.SendServiceMessage <PositionServiceResponse>(serviceName, positionServiceRequest, Callback_Destination); awaitingResponseUntilTimestamp = Time.time + 1.0f; // don't send again for 1 second, or until we receive a response } }
private void Update() { timeElapsed += Time.deltaTime; if (timeElapsed > publishMessageFrequency) { cube.transform.rotation = Random.rotation; PosRotMsg cubePos = new PosRotMsg( cube.transform.position.x, cube.transform.position.y, cube.transform.position.z, cube.transform.rotation.x, cube.transform.rotation.y, cube.transform.rotation.z, cube.transform.rotation.w ); // Finally send the message to server_endpoint.py running in ROS ros.Publish(topicName, cubePos); timeElapsed = 0; } }