-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAMCLSubscriber.cs
45 lines (38 loc) · 1.37 KB
/
AMCLSubscriber.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using Unity.Robotics.ROSTCPConnector;
using Unity.Robotics.ROSTCPConnector.ROSGeometry;
using RosMessageTypes.Geometry;
using RosMessageTypes.Std;
using RosMessageTypes.BuiltinInterfaces;
using PointMsg = RosMessageTypes.Geometry.PointMsg;
using QuaternionMsg = RosMessageTypes.Geometry.QuaternionMsg;
public class AMCLSubscriber : MonoBehaviour
{
[SerializeField] string rosTopicName = "amcl_pose";
private Vector3 robotAMCLPosition = new Vector3();
private Quaternion robotAMCLPosture = new Quaternion();
void Start()
{
ROSConnection.GetOrCreateInstance().Subscribe<PoseWithCovarianceStampedMsg>(rosTopicName, AMCLPoseUpdate);
}
void AMCLPoseUpdate(PoseWithCovarianceStampedMsg AMCLPoseMessage)
{
PointMsg rosOdomPositionMsg = AMCLPoseMessage.pose.pose.position;
QuaternionMsg rosOdomPostureMsg = AMCLPoseMessage.pose.pose.orientation;
// 座標変換
robotAMCLPosition = rosOdomPositionMsg.From<FLU>();
robotAMCLPosture = rosOdomPostureMsg.From<FLU>();
}
public Vector3 GetRobotAMCLPosition()
{
return robotAMCLPosition;
}
public Quaternion GetRobotAMCLPosture()
{
return robotAMCLPosture;
}
}