-
Notifications
You must be signed in to change notification settings - Fork 116
/
wiki_src.txt
185 lines (157 loc) · 6.38 KB
/
wiki_src.txt
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
== Overview ==
Interface (driver) software, including ROS node, for Microstrain 3DM-GX5-45.
The interface makes use of the MIP SDK Version 1.1 from Microstrain to communicate with the device. Includes the following applications:
=== Supported Devices ===
== ROS Nodes ==
{{{
#!clearsilver CS/NodeAPI
node.0 {
name = microstrain_3dm_gx5_45
desc = ROS node that captures IMU/GPS data.
pub {
0.name= gps/fix
0.type= sensor_msgs/NavSatFix
0.desc= See [[#gpsmsg|Navsatfix message description]] below.
1.name= imu/data
1.type= sensor_msgs/Imu
1.desc= See [[#imumsg|Imu message description]] below
2.name= nav/odom
2.type= nav_msgs/Odometry
2.desc= See [[#odommsg|Odometry message description]] below
3.name= nav/status
3.type= std_msgs/Int16MultiArray
3.desc= See below [[#navstatusmsg|Nav Status message description]]
}
srv {
0.name = reset_kf
0.type = std_srvs/Empty
0.desc = Resets the Kalman filter on the device
}
param {
0.name = port
0.type = string
0.desc = Serial port - Linux only
0.default = /dev/ttyACM0
1.name = baud_rate
1.type = int
1.desc = Baud rate of serial connection
1.default = 115200
2.name= device_setup
2.type= bool
2.desc= If true, puts device in idle mode and configures the device.If false, skips configuration. Important: the configuration parameters below are not effective unless this flag is true.
2.default= true
3.name= readback_settings
3.type= bool
3.desc= coming soon
3.default= true
4.name= auto-init
4.type= bool
4.desc= tbd
4.default= true
5.name=dynamics_mode
5.type=int
5.desc=Vehicle dynamics mode 0x01=Portable, 0x02=Automotive, 0x03=Airborne
5.default = 1
6.name=declination_source
6.type=int
6.desc=Possible declination sources: 0x01=Node, device reports magnetic north, 0x02=Internal World Magnetic Model, 0x03=Manual (see declination parameter)
6.default=2
8.name=gps_frame_id
8.type=string
8.desc= Value for the frame_id field in the header of the NavSatFix message published on the gps/fix topic
8.default=wgs84
9.name=imu_frame_id
9.type=string
9.desc=Value of the frame_id field in the header of the Imu message publised in the imu/data topic
9.default=base_link
10.name=odom_frame_id
10.type=string
10.desc=Value of the frame_id field in the header of the Odometry message published on the nav/odom topic
10.default=wgs84
11.name=odom_child_frame_id
11.type=string
11.desc=Value of the child_frame_id field in the Odometry message published on the nav/odom topic.
11.default=base_link
12.name=publish_gps
12.type=bool
12.desc=Sets if ~gps/fix should be advertised/published or not. Note - to maximize performance you may want to only publish the Odometry messages
12.default=true
13.name=publish_imu
13.type=bool
13.desc= Sets if ~imu/data should be advertised/published or not.
13.default=true
14.name=publish_gps
14.type=bool
14.desc=Sets if ~nav/odom should be advertised/published or not.
14.default=true
15.name=gps_rate
15.type=int
15.desc=Target update (publishing) rate for gps/fix messages. See [[#rates|Update Rates]] below.
15.default=1
16.name=imu_rate
16.type=int
16.desc=Target update (publishing) rate for imu/data messages. See [[#rates|Update Rates]] below.
16.default=10
17.name=odom_rate
17.type=int
17.desc=Target update (publishing) rate for nav/odom messages. See [[#rates|Update Rates]] below.
17.default=10
}
}
}}}
<<Anchor(rates)>>>
=== Update Rates ===
The rates are set as a target value in Hz. The device accepts a decimation value for each output; the packet rate is base_rate/decimation, where decimation is an integer. The program calculates the decimation to get close the the desired rate, based on polling the sensor for its base rate.
For the 3DM-GX4-45 and 3DM-GX5-45 devices tested the base rates were...
* GPS - base rate = 4 Hz
* IMU - base rate = 500 Hz
* Filter - base rate = 500 Hz
<<Anchor(gpsmsg)>>
=== Nav Sat Fix message description ==
Position covariance is populated with diagonals based on reported horizontal and vertical accuracy. The status.status field is the LLH position data "valid flag"-1. The valid flag mapping from the 3DM protocol is
* 0x0001 – Latitude and Longitude Valid
* 0x0002 – Ellipsoid Height Valid
* 0x0004 – MSL Height Valid
* 0x0008 – Horizontal Accuracy Valid
* 0x0010 – Vertical Accuracy Valid
* E.g., if all valid, then the status.status field should be 30.
<<Anchor(imumsg)>>
=== IMU message description ===
Coming soon
<<Anchor(odommsg)>>
=== Odometry message description ===
* Currently the pose.position is the longitude (x), latitude (y) and ellipsoid height (z)
* pose.covariance and twist.covariance include diagonal elements for position and attitude
<<Anchor(navstatusmsg)>>
== Nav Status message description ===
* Includes three values - see communication protocol for full documentation.
* filter_state
* 0x00 – Startup
* 0x01 – Initialization (see status flags)
* 0x02 – Running, Solution Valid
* 0x03 – Running, Solution Error (see status flags)
* dynamics mode
* 0x01 – Portable (device default)
* 0x02 – Automotive
* 0x03 – Airborne
* status_flags
* See device documentation
== Build Instructions ==
Building from source
{{{
DISTRO={hydro|indigo}
cd ~/catkin_ws
rosdep update
rosdep check --from-paths src/microstrain_3dm_gx5_45/ --rosdistro=$DISRO
rosdep install --from-paths src/microstrain_3dm_gx5_45/ --ignore-src --rosdistro=$DISTRO --simulate
rosdep install --from-paths src/microstrain_3dm_gx5_45/ --ignore-src --rosdistro=$DISTRO
catkin_make
source devel/setup.bash
}}}
== Dev Notes ==
The mip_sdk_user_functions are C functions that need to be called by various parts of the SDK. The main purpose of these functions is to implement the platform-specific serial (RS232) port elements. The prototype serial port open function takes the COM number as an integer input - which is clunky for Linux serial ports. Changed this to take a string defining the port (e.g., /dev/ttyS0), but this necessitated also modifying the mip_sdk_interface.[ch] files, since this is what is called by the application - changed the mip_interface_init function to accept a string argument for specifying the port.
== TODO ==
* Verify order of quaternions
== Examples ==
== Launch File Examples ==
Example launch files are provided with the package to illustrate setting the various parameters.