QUANSER
8a5c4974d95e16f055aac33d3715281
  • 首页
    HOME
  • 产品&实验室解决方案
    PRODUCTS&LAB SOLUTIONS
  • 资讯&动态
    NEWS
  • 全球客户
    QUANSER COMMUNITY
  • 技术支持
    SUPPORT
  • 关于我们
    ABOUT US
QCar平台在Python环境下的通信 关闭 返回上一级  
 
QCar平台在Python环境下的通信
+ 查看更多
作者:姜岩

    在我之前的文章中,我向大家介绍了Simulink环境下如何使用通信模块建立两个Simulink程序之间的数据传输,而对于无人驾驶平台Qcar的用户来说,由于QCar支持了多种编程语言,如果使用了Python作为编程语言,就会遇到两台QCar通信以及QCar与其他只支持Simulink编程的设备之间的通信问题。在本篇文章中我将向各位介绍QCar在Python环境下通信的使用方式。

    首先对于仅使用Simulink的用户而言,通信模块的使用与上一篇文章中提到的使用方法一致,都是利用Quarc提供的Simulink模块去构建程序之间的通信。假设我们构建了一个在主机端运行的信号灯控制系统,以及多个在QCar上运行的控制程序,我们就可以利用通信模块去实现主机与QCar、QCar与QCar之间的通信,从而搭建出基于网络通信的智慧交通系统模型。

    而在我的假设的基础上,可能有的用户已经使用Python设计了一套完整的无人驾驶控制系统,现在他想要将他的算法移植到QCar,那么选择利用QCar对Python的支持,直接使用Python编程显然是更加方便的。如果要将运行Python程序的QCar融入到智慧交通的系统中,就要考虑Python环境下通信模块的使用。

    这里我先给大家简单介绍一下我们为QCar提供的Python上的支持。我们在QCar的Linux系统中已经预装了Python3和Quanser相关API的内容,这是我们让QCar使用Python的最底层配置,在此基础上,我们提供了驱动QCar的Python模块库:

33333

    其中有包含了QCar接口调用相关Class的product_QCar.py,包含通信相关Class的q_misc.py,以及一个可以使用的PI速度控制的函数q_control.py等一系列Class和函数。这些Class和函数帮助用户可以快速使用Python代码驱动QCar硬件,而不是投入大量时间研究底层接口,减少移植算法的难度,让用户更快的将其想法在QCar实现。

    这里我们重点要讲的就是q_misc.py中与通信相关的Class:BasicStream
44444

    该Class包含了对IP地址、缓冲区的设置等初始化信息、收发数据的函数、通信是否成功的检测等功能。

    我们可以看到再设置初始化信息处,与使用Simulink模块的设置是有许多的相似处。首先设置uri,即IP地址;之后是设置agent值,当agent=‘s’时,这意味着将其设置为与StreamServer相同的功能,简单的讲就是以所填的IP为中心收发数据流,当agent=‘c’时,模块将被设置为与StreamClient相同的功能,即与所填IP对应的StreamServer模块进行数据交互;send_buffer_size和 recv_buffer_size则是对收发数据的缓冲区大写进行设置,在使用Simulink通信模块时我们也需要进行这样的操作。

    接着我们打开提供的数据通信的Demo:Stream_Clinent.py及Stream_Server.py。

5555

    Demo程序的功能是,Client端采集一个摄像头的图像,将图像信息发送给Server端,在Server端弹窗显示该图像。我们可以看到程序中调用了q_misc的模块库,并使用了BasicStream的Class,在进行初始设置时,agent值的不同区分开了两个模块的功能;以IP地址为192.168.2.19的设备为Server端,通信通道为18001,Clinet端同样设置了这个IP,构建起了两个程序的连接;send_buffer_size和 recv_buffer_size设置为单帧图像信息的大小。之后Server端采用了receive,Client端采用了send,实现了数据的接受与发送。

6666

    通过与我们Demo类似的方式,即可建立起两个或多个QCar之间的联系。

    回到我们一开始假设的情景,现在车与车的通信可以解决,那车与信号灯控制系统的通信又该如何解决呢?答案是使用Simulink中的StreamServer和StreamClient模块。

    之前的文章我们多次提到,Quanser设备间的通信是采用的tcpip协议,QCar也不例外,在使用同种通信协议并且装有QuanserAPI的情况下,实现Python程序与Simulink程序的通信自然不在话下,而且,Quanser工程师在编写Class时,采用了与Simulink模块相似的结构,来帮助我们更好的理解其使用方式。以Python的通信Demo为例,我们只需要在Simulink中使用StreamServer模块,并且设置好IP地址和缓冲区等信息,PC端的Simulink程序就可以接收到来自Strean_Client.py程序发来的图像信息并显示。同理,利用这些模块,就可以建立起运行Python的QCar与原本的基于Simulink的交通系统的连接。
22222

    其实不仅仅在我假设的智慧交通的情景下需要用到设备间的通信,一些特殊情况,比如需要将QCar上Python程序的运行数据保存并进行数据分析,就可以利用我介绍的通信模块,将QCar的数据发送到Matlab/Simulink,利用Matlab/Simulink的相关工具进行数据的处理和分析。或者说利用PC端装载的更高性能的显卡进行神经网络训练、图像处理,仅将处理后得到的结果发送到QCar一端,以此获得更好的效果等等。了解了QCar通信的使用,相信用户会有更多的灵感,能以此展开更丰富的研究。

分享到:
新闻资讯
为您实时提供Quanser的最新动态,各类会议资讯以及活动
  • webwxgetmsgimg.
    Quanser祝大家圣诞节快乐
    发布日期:2022-12-23
  • 微信图片_20221128133515
    Quanser鲲航助力2022年江苏省自动化学术年会
    发布日期:2022-11-28
  • 微信图片_20221102091349
    Quanser鲲航助力2022中国车辆控制与智能化大会
    发布日期:2022-11-02
  • WebpageBanner-1100x479
    国际工程教育协会联合会(IFEES)&全球工程院长理事会(GEDC)2022年度大会
    发布日期:2022-06-17
  • webwxgetmsgimg
    上海海事大学无人机团队假期实践活动
    发布日期:2022-01-13
  • a348c712d3ee65121d1e36cb964d53c
    Quanser鲲航助力第36届中国自动化学会青年学术年会
    发布日期:2021-06-07
  • 1617975904345
    Quanser Café
    发布日期:2021-04-27
  • b93ff3f50482cac43ecbc70d62d57cc
    Quanser祝大家圣诞节快乐
    发布日期:2020-12-22
  • 2020-11-13 102549(1)
    Quanser鲲航助力2020中国自动化大会
    发布日期:2020-11-18
  • 2020-11-13 102620(6)(1)
    Quanser鲲航助力第35届中国自动化学会青年学术年会
    发布日期:2020-11-16
产品展示
RENDER_10K_MK5crop-600x295
沪ICP备19038303号-1       © 2022 Quanser中国        
沪公网安备 31011202011813号


联系我们

感谢您浏览QUANSER中国网站,现在就和我们联系吧。

客服QQ

 点击这里给我发消息

如果我们的客服QQ不在线,请填写表单。

发送

很高兴为您服务。

会话结束
点击回车发送