Skip to content

Commit 87a04ee

Browse files
committed
multiple changes.
1 parent eb7b15d commit 87a04ee

File tree

7 files changed

+87
-10
lines changed

7 files changed

+87
-10
lines changed

.gitignore

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,5 @@ result_gps.txt
1515
camera_camera_calib.yaml
1616
camera_chessboard_data.dat
1717
*.log
18-
.idea/
18+
.idea/
19+
**/result

README.md

+40-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,48 @@
1-
# VINS-Fusion
2-
## An optimization-based multi-sensor state estimator
1+
# Stereo-VPCCD
2+
3+
## An Pointcloud Change Detection pipeline based on VINS-Fusion
4+
5+
## 1.Prerequisites
6+
7+
You can use any Linux distros as you like, most of the prerequisites are same with VINS-Fusion.
8+
9+
### 1.1 **Linux** and **ROS**
10+
11+
Ubuntu 20.04 recommended, cause this project switch the OpenCV major version from 3 to 4, and
12+
ROS Noetic is the first ROS 1 distro integrated with OpenCV 4.
13+
14+
### 1.2 Ceres Solver
15+
16+
If you use Ubuntu 20.04, simply do:`sudo apt install libceres* -y`.
17+
Manually installation please follow [Ceres Installation](http://ceres-solver.org/installation.html).
18+
19+
### 1.3 PointCloud Library(PCL)
20+
21+
I think pcl version 1.10 will be a good choice. If you are using Ubuntu 20.04, `sudo apt install libpcl-dev -y`
22+
will do that. Else follow [PCL](https://github.com/PointCloudLibrary/pcl). Version lower than 1.10 may works, but v1.12
23+
never works.
24+
25+
**MAKE SURE YOU INSTALL RIGHT VERSION BEFORE NEXT STEP.**
26+
27+
Cause FAST-GICP will run into bug if you use a higher version of pcl.
28+
29+
### 1.4 FAST-GICP
30+
31+
Follow [fast_gicp](https://github.com/SMRT-AIST/fast_gicp), follow the installation with ros.
32+
33+
34+
____
335

436
<img src="https://github.com/HKUST-Aerial-Robotics/VINS-Fusion/blob/master/support_files/image/vins_logo.png" width = 55% height = 55% div align=left />
537
<img src="https://github.com/HKUST-Aerial-Robotics/VINS-Fusion/blob/master/support_files/image/kitti.png" width = 34% height = 34% div align=center />
638

7-
VINS-Fusion is an optimization-based multi-sensor state estimator, which achieves accurate self-localization for autonomous applications (drones, cars, and AR/VR). VINS-Fusion is an extension of [VINS-Mono](https://github.com/HKUST-Aerial-Robotics/VINS-Mono), which supports multiple visual-inertial sensor types (mono camera + IMU, stereo cameras + IMU, even stereo cameras only). We also show a toy example of fusing VINS with GPS.
39+
VINS-Fusion is an optimization-based multi-sensor state estimator, which achieves accurate self-localization for
40+
autonomous applications (drones, cars, and AR/VR). VINS-Fusion is an extension
41+
of [VINS-Mono](https://github.com/HKUST-Aerial-Robotics/VINS-Mono), which supports multiple visual-inertial sensor
42+
types (mono camera + IMU, stereo cameras + IMU, even stereo cameras only). We also show a toy example of fusing VINS
43+
with GPS.
844
**Features:**
45+
946
- multiple sensors support (stereo cameras / mono camera+IMU / stereo cameras+IMU)
1047
- online spatial calibration (transformation between camera and IMU)
1148
- online temporal calibration (time offset between camera and IMU)

config/stereo_450p.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ validate_frames: 3
4848
multiple_thread: 1
4949

5050
#feature traker paprameters
51-
max_cnt: 150 # max feature number in feature tracking
51+
max_cnt: 100 # max feature number in feature tracking
5252
min_dist: 25 # min distance between two features
5353
freq: 0 # frequence (Hz) of publish tracking result. At least 10Hz for good estimation. If set 0, the frequence will be same as raw image
5454
F_threshold: 1.0 # ransac threshold (pixel)

prior_fusion

prior_locate

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Subproject commit 15eacdbe1aaf10d85481687c844e11615956b9b9
1+
Subproject commit 0f8bd7722d1c3f89f6e5954420036cbb993c8750

utils/record_gicp_path.py

+30-3
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,43 @@
11
import rospy
22
import rospy_message_converter.json_message_converter as jmc
33
from nav_msgs.msg import Path
4+
from geometry_msgs.msg import PoseWithCovarianceStamped, PoseStamped
45
import json
56

7+
ndt_path = Path()
68

7-
def path_cb(msg: Path):
9+
10+
# def ndt_cb(msg: PoseWithCovarianceStamped):
11+
# tmp_pose = PoseStamped()
12+
# tmp_pose.header = msg.header
13+
# tmp_pose.pose = msg.pose.pose
14+
# ndt_path.poses.append(tmp_pose)
15+
# ndt_path.header = msg.header
16+
# json_msg = jmc.convert_ros_message_to_json(ndt_path)
17+
# with open('/home/lnex/ndt_path.json', 'w') as file:
18+
# file.write(json_msg)
19+
20+
def gt_cb(msg: Path):
21+
json_msg = jmc.convert_ros_message_to_json(msg)
22+
with open('/home/lnex/path/gt.json', 'w') as file:
23+
file.write(json_msg)
24+
25+
26+
def vins_cb(msg: Path):
27+
json_msg = jmc.convert_ros_message_to_json(msg)
28+
with open('/home/lnex/path/stamped_traj_estimate.json', 'w') as file:
29+
file.write(json_msg)
30+
31+
32+
def global_cb(msg: Path):
833
json_msg = jmc.convert_ros_message_to_json(msg)
9-
with open('/home/lnex/path.json', 'w') as file:
34+
with open('/home/lnex/path/stamped_prior_estimate.json', 'w') as file:
1035
file.write(json_msg)
1136

1237

1338
if __name__ == '__main__':
1439
rospy.init_node("asdf", anonymous=True)
15-
rospy.Subscriber("/ndt_path", Path, callback=path_cb, queue_size=1)
40+
# rospy.Subscriber("/vins_estimator/gt_path", Path, callback=gt_cb, queue_size=1)
41+
rospy.Subscriber("/vins_estimator/path", Path, callback=vins_cb, queue_size=1)
42+
rospy.Subscriber("/priorOptNode/global_path", Path, callback=global_cb, queue_size=1)
1643
rospy.spin()

vins_estimator/launch/vins_all.launch

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<launch>
2+
<node name="vins_estimator" pkg="vins" type="vins_node" output="log" args="$(find vins)/../config/stereo_450p.yaml"/>
3+
<node name="priorOptNode" pkg="prior_fusion" type="prior_fusion_node">
4+
<param name="resultDir" type="str" value="$(find vins)/../result/1"/>
5+
</node>
6+
<node name="depth_pred_node" pkg="prior_locate" type="prior_locate_node" launch-prefix="gdb -ex run --args">
7+
<param name="priorMapFile" type="str" value="/home/lnex/pcd/prior/4x.pcd"/>
8+
<param name="resultDir" type="str" value="$(find vins)/../result/1"/>
9+
<param name="confFile" type="str" value="$(find vins)/../config/stereo_450p.yaml"/>
10+
</node>
11+
<!-- <node name="rvizvisualisation" pkg="rviz" type="rviz" output="log" args="-d $(find vins)/../config/vins_rviz_config.rviz" /> -->
12+
</launch>

0 commit comments

Comments
 (0)