Skip to content

Commit d312d2b

Browse files
authored
Merge pull request #4 from InfiniteSenseLab/main
[13 May] Merge main
2 parents 3937cba + 88a310d commit d312d2b

24 files changed

Lines changed: 325 additions & 141 deletions

README.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,11 @@
2929

3030
# News
3131

32-
>1. Demo程序还在开发中,敬请期待!如果熟悉ZMQ,可以尝试了解一下SDK,并自己编写Demo程序。
33-
>2. 开发者文档正在编写中,敬请期待!
34-
>3. 关于第四代同步板还是希望尽可能非常稳定后再上架!硬件的稳定是我们最重视的。
32+
>1. 开发者文档正在编写中,敬请期待!
33+
34+
<p align="center">
35+
<img style="width:50%;" alt="V4_board" src="assets/picture/v4_board.png">
36+
</p>
3537

3638
# 支持设备
3739

@@ -44,6 +46,7 @@
4446
>| RTK/GPS | | NMEA |
4547
>| 主机(ARM/X86) | Intel/AMD/Jetson/RockChip/... | PTP |
4648
49+
4750
# 开始使用
4851
## 下载安装
4952
```bash
@@ -55,7 +58,7 @@ cmake..
5558
```
5659
## [同步板配置](assets/doc/board_config.md)
5760
## [传感器接线](assets/doc/connection_config.md)
58-
## [Demo运行](assets/doc/run_demo.md)
61+
## [Demo运行与调试](assets/doc/run_demo.md)
5962
## [协议解析](assets/doc/data_info.md)
6063

61-
# 常见问题
64+
# 常见问题以及提问

assets/doc/board_config.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11

22
# 第四代同步板(V4)
33

4+
## 如何更新固件
5+
## 如何重启
6+
7+
## 如何连接网络
8+
9+
## 如何配置同步板参数
410
(可选)串口工具安装:
511

612
```bash

assets/doc/connection_config.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# 相机类传感器连接配置
2+
## 工业相机类
3+
## 带有触发器的相机
4+
5+
# 雷达类传感器连接配置
6+
# Mid360配置
7+
8+
# GPS类传感器连接配置
9+
10+
11+
# IMU类传感器连接配置
12+
13+
# 其他传感器连接配置

assets/doc/data_info.md

Lines changed: 41 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,44 @@
1+
# 如何查看同步板上传数据
2+
如果是USB连接:则需要安装串口工具,如:cutecom。
3+
```bash
4+
sudo apt-get install cutecom # 下载(可选)
5+
sudo cutecom # 启动
6+
```
7+
<p align="center">
8+
<img style="width:50%;" alt="cutecom" src="../picture/cutecom.png">
9+
</p>
10+
11+
如果是网口连接: 则使用nc指令,Linux中nc命令是一个功能强大的网络工具,全称是netcat
12+
13+
```bash
14+
# 192.168.1.188 8888 表示同步板的IP地址和端口
15+
echo “Hello InfiniteSense” | nc -u 192.168.1.188 8888
16+
```
17+
<p align="center">
18+
<img style="width:50%;" alt="nc" src="../picture/nc.png">
19+
</p>
120

21+
---
222
# IMU Data
323
```json
424
{
5-
"f": "imu",
6-
"t": 1745767254869878,
7-
"c": 920480,
8-
"d": [
9-
0.416606,
10-
-0.181966,
11-
9.993754,
12-
0.003141,
13-
0.001038,
14-
0.000016,
15-
28.50241
25+
"f": "imu", # 数据类型
26+
"t": 1745767254869878, # 时间戳
27+
"c": 920480, # 采集帧数
28+
"d": [ # IMU原始数据
29+
0.416606, # 加速度计x轴
30+
-0.181966, # 加速度计y轴
31+
9.993754, # 加速度计z轴
32+
0.003141, # 陀螺仪x轴
33+
0.001038, # 陀螺仪y轴
34+
0.000016, # 陀螺仪z轴
35+
28.50241 # 温度
1636
],
17-
"q": [
18-
0.999765,
19-
-0.009251,
20-
-0.021048,
21-
-0.013569
37+
"q": [ # 自带IMU计算的姿态
38+
0.999765, # 四元数w
39+
-0.009251, # 四元数x
40+
-0.021048, # 四元数y
41+
-0.013569 # 四元数z
2242
]
2343
}
2444
```
@@ -27,8 +47,8 @@
2747
# Sync Time Data
2848
```json
2949
{
30-
"a": 1740815274,
3150
"f": "b",
51+
"a": 1740815274,
3252
"b": 1740815274
3353
}
3454

@@ -37,9 +57,9 @@
3757
# Device trigger status
3858
```json
3959
{
40-
"f": "t",
41-
"s": 32,
42-
"t": 1745767200873878,
43-
"c": 893482
60+
"f": "t", # 数据类型
61+
"s": 32, # (uint8_t)状态位
62+
"t": 1745767200873878, # 时间戳
63+
"c": 893482 # 采集帧数
4464
}
4565
```

assets/doc/run_demo.md

Lines changed: 67 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,68 @@
1-
# 系统正常运行打印输出
2-
```python
3-
(串口打开状态)
4-
serial_manager.cpp:25 Serial port: /dev/ttyACM0 initialized and opened.
5-
serial_manager.cpp:44 Serial manager started ( 使用串口通信 )
6-
infinite_sense.cpp:49 Synchronizer started
7-
messenger.cpp:16 ZMQ PUB: tcp://0.0.0.0:40295 ( 当前使用的ZMQ通讯地址 )
8-
infinite_sense.cpp:68
9-
--- Topic Monitor ---
10-
Active Topics (8): ( 活跃话题数量 )
11-
• imu1 (num: 100) (1秒内收到收到消息数量 )
12-
• trigger/imu_1 (num: 100) ( 触发状态 )
13-
• trigger/cam_4 (num: 8)
14-
• trigger/cam_3 (num: 4)
15-
• trigger/cam_2 (num: 2)
16-
• trigger/laser (num: 1)
17-
• trigger/cam_1 (num: 1)
18-
• trigger/imu_2 (num: 1)
19-
---------------------
1+
# 下载安装
2+
```bash
3+
sudo apt-get install libzmq3-dev # 安装ZeroMQ(可选)
4+
git clone git@github.com:InfiniteSenseLab/InfiniteSenseSDK2.0.git -b main
5+
cd InfiniteSenseSDK2.0
6+
mkdir build && cd build
7+
cmake..
8+
```
9+
# 编译运行
10+
## 运行监听程序(可选)
11+
运行话题监听程序,可以帮助检查是否有数据接收与数据上传频率是否正常。
12+
```bash
13+
cd build/tools
14+
./monitor
15+
```
16+
## 运行example中的程序
17+
### 运行工业相机Demo
18+
```bash
19+
cd build/examples/GigeCam
20+
./gige_cam
21+
```
22+
### 运行工业相机ROS节点
23+
24+
25+
26+
27+
## 使用SDKC++开发的基本流程如下:
28+
```C++
29+
// 加入SDK头文件
30+
#include "infinite_sense.h"
31+
// 加入工业相机头文件
32+
#include "mv_cam.h"
33+
using namespace infinite_sense;
34+
// 自定义回调函数
35+
void ImuCallback(const void* msg, size_t) {
36+
const auto* imu_data = static_cast<const ImuData*>(msg);
37+
// 处理IMU数据
38+
}
39+
// 自定义回调函数
40+
void ImageCallback(const void* msg, size_t) {
41+
const auto* cam_data = static_cast<const CamData*>(msg);
42+
// 处理图像数据
43+
}
44+
int main() {
45+
// 1.创建同步器
46+
Synchronizer synchronizer;
47+
synchronizer.SetUsbLink("/dev/ttyACM0", 921600);
48+
49+
// 2.配置同步接口
50+
auto mv_cam = std::make_shared<MvCam>();
51+
mv_cam->SetParams({{"camera_1", CAM_1}});
52+
synchronizer.UseSensor(mv_cam);
53+
54+
// 3.开启同步
55+
synchronizer.Start();
56+
57+
// 4.接收数据
58+
Messenger::GetInstance().SubStruct("imu_1", ImuCallback);
59+
Messenger::GetInstance().SubStruct("camera_1", ImageCallback);
60+
// 阻塞线程
61+
while (true) {
62+
std::this_thread::sleep_for(std::chrono::milliseconds(100));
63+
}
64+
// 5.停止同步
65+
synchronizer.Stop();
66+
return 0;
67+
}
2068
```

assets/picture/boardv4.jpg

1.01 MB
Loading

assets/picture/cutecom.png

282 KB
Loading

assets/picture/nc.png

343 KB
Loading

assets/picture/v4_board.png

2.63 MB
Loading

example/CustomCam/cus_cam.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,18 @@ void CustomCam::Stop() {
2424
void CustomCam::Receive(void *handle, const std::string &name) {
2525
Messenger &messenger = Messenger::GetInstance();
2626
while (is_running) {
27+
// 1. 初始化相机数据
2728
CamData cam_data;
29+
// 2. 读取相机同步时间戳
2830
if (params.find(name) != params.end()) {
2931
if (uint64_t time; GET_LAST_TRIGGER_STATUS(params[name], time)) {
3032
cam_data.time_stamp_us = time;
3133
}
3234
}
35+
// 3. 读取相机图像
36+
cam_data.name = name;
3337
cam_data.image = GMat();
38+
// 4. 发布相机数据
3439
messenger.PubStruct(name,&cam_data,sizeof(cam_data));
3540
std::this_thread::sleep_for(std::chrono::milliseconds{1});
3641
}

0 commit comments

Comments
 (0)