项目实训 - 智能车系统 - 第十一周记录
日期:5.2 – 5.8
项目进度
本周工作进展:
- 信号量版本
- 测试tcp版本的可视化
1、信号量版本通信机制
通信机制-新:
-
一写一读
- 当一个话题对应多个订阅者时,拆分成多个话题(针对项目来说,最多两个订阅者)
- 分别为读者和写者分配一个信号量,用来互相阻塞
-
增加了两个变量,用来存储两个信号量的标识符。
struct MemoryDefinition
{
int fd;
void* point;
int pub_sem_id; //信号量标识符
int sub_sem_id;
};
- 具体代码不做记录,后面又进行了几次的修改,之后直接记录一下最终版本。
在具体代码中也要进行相应的修改
- 接口发生变化,需要创建共享内存的同时,传入一个参数用来创建信号量
- 发布者信号量初始值为1
- 接收者信号量初始值为0
- 发布 和 接收 前需要判断自己的信号量是否为1
- 1,发送,然后-1
- 0,阻塞,等待对方+1
修改完代码后,进行测试,直接解决了性能问题
在服务器上和开发板上的运行效果:
到此为止,我负责的lio-sam的移植工作已经结束,剩下的工作就是与其他成员负责的部分进行相应的对接,并在对接的过程中发现问题,微调代码。
2、tcp版本的可视化的测试
这个是与同学的对接工作。
之前的可视化是在本地直接接收数据,渲染后呈现。考虑到实际的应用的场景,为了减轻工控机的负载,考虑增加上位机,将数据传输到上位机,在上位机上进行可视化的工作。
队友做完工作后,进行了一下调试。
- 在开发板上部署了服务器端,用来发送数据
- 在上位机(服务器)上部署了客户端,用来接收数据,并可视化
经过一段时间的调试后(出现的bug基本上都是开的内存空间不够之类的,这里不做记录),测成通过。
目前的流程大概是:
- 启动数据包
- 启动数据转换器
- 启动项目
- 启动可视化服务器端
- 启动可视化客户端
技术难点
无
bug记录
没啥大bug
其他
无