“互联网造车”的误会

前些天有个朋友问我,为什么你们搞互联网的工程师,最近几年,都开始往汽车行业里挤了呢?

虽说之前网上也有过各种说互联网造车不靠谱的文章了,但当这个问题被真实地问到自己的时候我还是蛮惊讶的,当时脑海里第一时间的反应是,一场误会,一场误会。

Tesla是最早被贴上“互联网造车”标签的公司,而国内互联网造车的不靠谱新闻,最早或可追溯至2015年,某汽车startup一场发布会之后,被网友在知乎爆出其demo车是拿Tesla改装的PPT造车事件。此后,互联网背景的老板进入汽车行业便被贴上了“互联网造车”的标签。或许这个标签对于资本市场有着不同的含义,但其实在一个比赛里各个选手无论被外界贴着什么标签,最终的成绩仅与自己和对手的发挥有关。本文尝试从一个技术人员的角度来聊聊开头这个问题。

互联网造车不是让软件工程师去做底盘

专业的事情交给专业的人做,这是一个企业能够壮大发展的一个用人基本原则。汽车行业百年的发展历史,在汽车底盘,动力总成等各个地方已经累计非常丰富的行业经验和人才。被贴着“互联网造车”标签的公司,老板们可都不是傻子呀,自然也不会在这些地方重新发明轮子。一方面,整车架构的团队,往往会聘用拥有多年相关领域从事经验的专家和工程师;另一方面,“互联网造车”公司也会选择与各个零部件供应商合作,共创的方式快速整合行业的优质资源。所以请放心,你花三四十万买到的互联网造车上装的是博世iBooster的制动系统,不是码农纯手工打造的。

整车EE架构的进化产生了大量的软件需求

近几年,汽车EE架构从分散的众多单一功能的ECU,架构逐步集中化,分域控制,跨域融合,最终趋向形成一个或几个中央电脑控制全车IO(传感器和执行器)的架构(参考:特斯拉智能化路上的左脑与右脑)。

单一功能的ECU,通常只会包含相对简单的逻辑执行,计算能力和可编程的能力有限。功能ECU各自分离,无法实现多功能协同的智能化,这个阶段的软件人才需求量相对小。而随着域控制器和中央电脑的出现,整车架构算力集中化,传感器数据和执行器被集中连接到若干个电脑,使得大量过去由于单ECU功能限制无法实现的智能化功能得以实现。

举个栗子,当我打开全车窗的时候,可能不再需要空调冷气了,过去空调和车窗各自独立,人们往往需要自行关闭空调,而当有连接着空调和车窗控制器的中央智能模块后,这样一个“打开车窗自动关闭空调”的功能就可以通过编写软件来实现了。这是个简单的协同智能化的例子,而自动驾驶相关的功能可视为更高级的协同智能化。

车上有了电脑之后,谁来在电脑上写软件实现智能化呢?最擅长于做这块事情的无疑是各大院校计算机专业毕业的人才呀,而他们目前就散布在各大互联网高科技企业里。

智能汽车的产业链需要优秀的软件人才

在智能汽车的产业链里,整车厂和零部件供应商的发展是一个相互促进共同创新的过程。整车功能和架构的创新对零部件供应商提出了新的需求,零部件供应商的创新为整车厂带来了新的解决方案。当零部件供应商没跟上整车厂的步伐时,整车厂往往会选择自研。当同一个创新需求有多家整车厂都需要时,满足这样共同需求的创新公司会出现。近几年萌生的自动驾驶和智能网联的startup正是这样的科技公司,区别于传统的零部件供应商,它们也是计算机高科技人才集聚的地方。

曾经有一个同事问我,互联网人进入了汽车行业工作后,是不是将来就业面窄了很多?原本有很多互联网公司可以选择,现在是不是只能在少数几家造车新势力里做选择?

其实不然。一方面,智能汽车行业的发展,对跨界人才的需求只会越来越大,过去我们想去招一个既懂互联网又懂汽车电子的人,只能在美国设研发中心招特斯拉的工程师。而现在,国内蔚来,小鹏等造车新势力经过四五年的实战经验,培养了不少这样的综合型人才。另一方面,计算机原理是相通的(大学课上教的计算机知识可没说只能局限于某个领域),熟悉服务端分布式系统开发的同学,进入车载环境后,会发现车里其实也是一个分布式系统。进入智能汽车行业只是让你的计算机技能应用面更广了,并非换了一个技能。

自主研发不等于什么都自己干

最后,伴随着互联网造车的误会的往往还有自主研发。人们在探讨概念的时候习惯性的会忽略掉一些定语和前置条件。自主研发于整车厂在于研发有竞争力的整车平台架构,以支持更多有竞争力的车型推出。比如通用近期发布的下一代电子架构平台,凯迪拉克CT5将率先搭载。而整车平台上使用的各个零部件是否都需要自研?其实不然,如果市场上有合适的解决方案,车厂往往会选择共赢的合作开发,毕竟这是一个商业社会。

End

新建"智能汽车与互联网技术"群聊,欢迎添加群主微信 6080901 添加入群(备注公司名入群)。

推荐干货

关注我们

公众号:曲奇泡芙

扫码关注不迷路

点这里批评⬇️

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
非常抱歉对您的问题理解有误。如果您已经自己重写了QChartView类,并想要在其中实现改变点的大小,您可以通过重写paintEvent()方法来实现。 下面是一个示例代码,展示了如何在自定义的QChartView类中改变点的大小: ```cpp class CustomChartView : public QChartView { public: CustomChartView(QChart *chart, QWidget *parent = nullptr) : QChartView(chart, parent) {} protected: void paintEvent(QPaintEvent *event) override { QChartView::paintEvent(event); // 获取图表对象 QChart *chart = this->chart(); if (!chart) return; // 遍历图表中的系列 QList<QAbstractSeries *> seriesList = chart->series(); for (QAbstractSeries *series : seriesList) { // 判断是否为散点系列 QScatterSeries *scatterSeries = qobject_cast<QScatterSeries *>(series); if (scatterSeries) { // 设置点的大小 scatterSeries->setMarkerSize(10); // 设置点的大小为10像素 } } } }; ``` 在这个示例中,我们创建了一个名为CustomChartView的自定义QChartView类,并重写了其paintEvent()方法。在paintEvent()方法中,我们首先获取图表对象,然后遍历图表中的系列。如果发现某个系列是散点系列,则设置其点的大小为10像素。 然后,您可以使用CustomChartView来替代原来的QChartView对象,以实现设置点的大小的功能。只需将图表对象设置到CustomChartView中,然后将CustomChartView作为窗口部件添加到应用程序中即可: ```cpp QChart *chart = new QChart(); // 创建系列并添加数据点 QScatterSeries *scatterSeries = new QScatterSeries(); scatterSeries->append(0, 0); scatterSeries->append(1, 1); scatterSeries->append(2, 2); chart->addSeries(scatterSeries); CustomChartView *chartView = new CustomChartView(chart); chartView->setRenderHint(QPainter::Antialiasing); // 将CustomChartView作为窗口部件添加到应用程序中 // ... ``` 这样,您应该能够在自定义的QChartView类中成功实现改变点的大小的功能。请注意,在paintEvent()方法中,我们只处理了散点系列(QScatterSeries),您可以根据需要进行适当的修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值