Skip to content

Commit 92ae3d2

Browse files
rsasaki0109Aoki-TK
andauthored
v1.7.2-ros2 (#327)
* Add static initilization skip mode (#271) * Add covariance in nmea2fix (#272) * Galactit build (#276) * Add velocity subscriver in slip_angle_node (#278) * fixed stop judgment bug (#290) * Change of coordinate system for Eagleye's standard input IMU (#296) * Revert "Change of coordinate system for Eagleye's standard input IMU (#296)" (#297) This reverts commit 03f9e1f. * Change of coordinate system for Eagleye's standard input IMU (#299) * Change of coordinate system for Eagleye's standard input IMU * Correction of Response * fix compile warning (#305) * add missing dependencies in package.xml (#306) * Fix height in eagleye_fix (#307) * Add architecture svg (#308) * S^Cit fix2pose into two separate nodes (#316) * [ROS2]Fixed heading estimation bug in multi-antenna mode at standstill. (#322) * Fixed heading estimation bug in multi-antenna mode at standstill. * Add comment about is_first_correction_velocity in multi-antenna mode --------- Co-authored-by: Aoki-Takanose <49303804+Aoki-Takanose@users.noreply.github.com>
1 parent 5c7b244 commit 92ae3d2

33 files changed

+670
-477
lines changed

README.md

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ Eagleye is an open-source software for vehicle localization utilizing GNSS and I
1212

1313
![Flowchart of Eagleye](docs/flowchart.png)
1414

15+
## Architecture
16+
17+
![Architecture of Eagleye](docs/eagleye_architecture.drawio.svg)
18+
1519
## Recommended Sensors
1620
**GNSS receiver**
1721
* [Septentrio Mosaic development kit with GNSS antenna](https://shop.septentrio.com/en/shop/mosaic-x5-devkit)
@@ -76,6 +80,16 @@ Access mosaic's web ui and upload the following file in Admin/Configuration.
7680

7781
https://www.dropbox.com/s/uckt9
7882

83+
### IMU
84+
85+
1. IMU settings.
86+
87+
* Output rate 50Hz
88+
89+
2. Please be careful with the coordinate system when using the [tamagawa ros driver](https://github.com/MapIV/tamagawa_imu_driver) created by MAP IV. If the x-direction indicated on the IMU is set to the vehicle's direction and the y-direction to the right side of the vehicle, please set the `roll` in the `eagleye/eagleye_util/tf/config/sensors_tf.yaml file` to `3.14159`.
90+
91+
roll: 3.14159
92+
7993
### Eagleye parameters
8094

8195
The parameters of eagleye can be set in the [eagleye_config.yaml](https://github.com/MapIV/eagleye/tree/ros2-galactic-v1.1.5/eagleye_rt/config/eagleye_config.yaml). The default settings are 5Hz for GNSS and 50Hz for IMU.
@@ -157,7 +171,8 @@ To visualize the eagleye output location /eagleye/fix, for example, use the foll
157171

158172
To convert from eagleye/fix to eagleye/pose, use the following command 
159173

160-
ros2 launch eagleye_fix2pose fix2pose.xml
174+
ros2 launch eagleye_geo_pose_fusion geo_pose_fusion.launch.xml
175+
ros2 launch eagleye_geo_pose_converter geo_pose_converter.launch.xml
161176

162177
## Sample data
163178
### ROSBAG(ROS1)

docs/eagleye_architecture.drawio.svg

Lines changed: 4 additions & 0 deletions
Loading

eagleye_core/navigation/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
1515
# add_compile_options(-Wall -Wextra -Wpedantic)
1616
endif()
1717

18+
if($ENV{ROS_DISTRO} STREQUAL "galactic")
19+
add_definitions(-DROS_DISTRO_GALACTIC)
20+
endif()
21+
1822
# find dependencies
1923
find_package(ament_cmake_auto REQUIRED)
2024
find_package(eagleye_coordinate REQUIRED)

eagleye_core/navigation/src/angular_velocity_offset_stop.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ void angular_velocity_offset_stop_estimate(const geometry_msgs::msg::TwistStampe
7070
angular_velocity_stop_status->yaw_rate_buffer.erase(angular_velocity_stop_status->yaw_rate_buffer.begin());
7171
}
7272

73-
if (velocity.twist.linear.x < angular_velocity_stop_parameter.stop_judgment_threshold)
73+
if (std::abs(velocity.twist.linear.x) < angular_velocity_stop_parameter.stop_judgment_threshold)
7474
{
7575
++angular_velocity_stop_status->stop_count;
7676
}

eagleye_core/navigation/src/position.cpp

Lines changed: 1 addition & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -60,42 +60,7 @@ void position_estimate_(geometry_msgs::msg::TwistStamped velocity,eagleye_msgs::
6060
enu_pos[1] = position_status->enu_pos[1];
6161
enu_pos[2] = position_status->enu_pos[2];
6262

63-
if(!position_status->gnss_update_failure)
64-
{
65-
gnss_status = true;
66-
67-
geometry_msgs::msg::PoseStamped pose;
68-
69-
pose.pose.position.x = enu_pos[0];
70-
pose.pose.position.y = enu_pos[1];
71-
pose.pose.position.z = enu_pos[2];
72-
73-
heading_interpolate_3rd.heading_angle = fmod(heading_interpolate_3rd.heading_angle,2*M_PI);
74-
tf2::Transform transform;
75-
tf2::Quaternion q;
76-
transform.setOrigin(tf2::Vector3(pose.pose.position.x, pose.pose.position.y, pose.pose.position.z));
77-
q.setRPY(0, 0, (90* M_PI / 180)-heading_interpolate_3rd.heading_angle);
78-
transform.setRotation(q);
79-
80-
tf2::Transform transform2, transform3;
81-
tf2::Quaternion q2(position_parameter.tf_gnss_rotation_x,position_parameter.tf_gnss_rotation_y,
82-
position_parameter.tf_gnss_rotation_z,position_parameter.tf_gnss_rotation_w);
83-
transform2.setOrigin(tf2::Vector3(position_parameter.tf_gnss_translation_x, position_parameter.tf_gnss_translation_y,
84-
position_parameter.tf_gnss_translation_z));
85-
transform2.setRotation(q2);
86-
transform3 = transform * transform2.inverse();
87-
88-
tf2::Vector3 tmp_pos;
89-
tmp_pos = transform3.getOrigin();
90-
91-
enu_pos[0] = tmp_pos.getX();
92-
enu_pos[1] = tmp_pos.getY();
93-
enu_pos[2] = tmp_pos.getZ();
94-
}
95-
else
96-
{
97-
gnss_status = false;
98-
}
63+
gnss_status = !position_status->gnss_update_failure;
9964

10065
if (heading_interpolate_3rd.status.estimate_status == true && velocity_status.status.enabled_status == true)
10166
{

eagleye_core/navigation/src/rtk_dead_reckoning.cpp

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -64,31 +64,6 @@ void rtk_dead_reckoning_estimate_(geometry_msgs::msg::Vector3Stamped enu_vel, nm
6464
llh2xyz(llh_rtk,ecef_rtk);
6565
xyz2enu(ecef_rtk,ecef_base_pos,enu_rtk);
6666

67-
geometry_msgs::msg::PoseStamped pose;
68-
69-
pose.pose.position.x = enu_rtk[0];
70-
pose.pose.position.y = enu_rtk[1];
71-
pose.pose.position.z = enu_rtk[2];
72-
73-
heading.heading_angle = fmod(heading.heading_angle,2*M_PI);
74-
tf2::Transform transform;
75-
tf2::Quaternion q;
76-
transform.setOrigin(tf2::Vector3(pose.pose.position.x, pose.pose.position.y, pose.pose.position.z));
77-
q.setRPY(0, 0, (90* M_PI / 180)-heading.heading_angle);
78-
transform.setRotation(q);
79-
80-
tf2::Transform transform2;
81-
tf2::Quaternion q2(rtk_dead_reckoning_parameter.tf_gnss_rotation_x,rtk_dead_reckoning_parameter.tf_gnss_rotation_y,rtk_dead_reckoning_parameter.tf_gnss_rotation_z,rtk_dead_reckoning_parameter.tf_gnss_rotation_w);
82-
transform2.setOrigin(transform*tf2::Vector3(-rtk_dead_reckoning_parameter.tf_gnss_translation_x, -rtk_dead_reckoning_parameter.tf_gnss_translation_y,-rtk_dead_reckoning_parameter.tf_gnss_translation_z));
83-
transform2.setRotation(transform*q2);
84-
85-
tf2::Vector3 tmp_pos;
86-
tmp_pos = transform2.getOrigin();
87-
88-
enu_rtk[0] = tmp_pos.getX();
89-
enu_rtk[1] = tmp_pos.getY();
90-
enu_rtk[2] = tmp_pos.getZ();
91-
9267
if (rtk_dead_reckoning_status->position_stamp_last != gga_time && gga.gps_qual == 4)
9368
{
9469
rtk_dead_reckoning_status->provisional_enu_pos_x = enu_rtk[0];

eagleye_core/navigation/src/yaw_rate_offset_stop.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ void yaw_rate_offset_stop_estimate(const geometry_msgs::msg::TwistStamped veloci
5959
yaw_rate_offset_stop_status->yaw_rate_buffer.erase(yaw_rate_offset_stop_status->yaw_rate_buffer.begin());
6060
}
6161

62-
if (velocity.twist.linear.x < yaw_rate_offset_stop_parameter.stop_judgment_threshold)
62+
if (std::abs(velocity.twist.linear.x) < yaw_rate_offset_stop_parameter.stop_judgment_threshold)
6363
{
6464
++yaw_rate_offset_stop_status->stop_count;
6565
}

eagleye_rt/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
1010
add_compile_options(-Wall -Wextra -Wpedantic)
1111
endif()
1212

13+
if($ENV{ROS_DISTRO} STREQUAL "galactic")
14+
add_definitions(-DROS_DISTRO_GALACTIC)
15+
endif()
16+
1317
# find dependencies
1418
find_package(ament_cmake_auto REQUIRED)
1519
find_package(PkgConfig REQUIRED)

eagleye_rt/config/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,8 @@ Figure shows the relationship between these parameters.
111111
| outlier_ratio_threshold | double | Ratio of allowable outliers in the interval (Value from 0~1) | 0.5 |
112112
| curve_judgment_threshold | double | Yaw rate threshold for curve determination [rad/s] | 0.0873 (5 deg/s) |
113113
| init_STD | double | Standard deviation of Doppler azimuth angle [rad] | 0.0035 (0.2 deg) |
114+
| skip_static_initialization | bool | Whether to skip initial static estimation of yaw rate offset | false |
115+
| yaw_rate_offset_stop_in_skip_mode | double | Initial yaw rate offset stop in skip mode [rad/sec] | 0.0 |
114116

115117
### heading_interpolate
116118

eagleye_rt/config/eagleye_config.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@
3131
z : 0.0
3232
use_ecef_base_position : false
3333

34-
reverse_imu_wz: false
35-
3634
# Eagleye Navigation Parameters
3735
# Basic Navigation Functions
3836
common:
@@ -72,6 +70,8 @@
7270
outlier_ratio_threshold: 0.5
7371
curve_judgment_threshold: 0.0873
7472
init_STD: 0.0035 #[rad] (= 0.2 [deg])
73+
skip_static_initialization: false
74+
yaw_rate_offset_stop_in_skip_mode: 0.0
7575

7676
heading_interpolate:
7777
sync_search_period: 2

0 commit comments

Comments
 (0)