Building consumer products with open source

AI科技热点日报 | 2026年6月14日 6月14日AI领域重磅事件密集:四部门联合发布的《人工智能生成合成内容标识办法》全网统一落地执行,AI短视频必须开头3秒标注"AI生成";华为开发者大会HDC 2026闭幕日发布开源盘古2.0模型(最高505B参数),HarmonyOS 7全面拥抱AI向Agent架构演进;2026未来汽车AI技术展6月13日在重庆启幕聚焦"AI+汽车"全产业链;美国商务部以国家安全为由暂停Anthropic Claude Fable 5和Mythos 5全球访问,Anthropic罕见公开反驳政府结论; 阅读详情
Foreword: This thoughtful essay by Dr. Ari Jaaksi, Nokia's director of open source, explores Nokia's experience developing a commercial software environment based two-thirds on open-source software. Jaaksi lists a few challenges, but concludes that tapping into open-source components and the developer community saves time and resources. Enjoy . . . !



Building consumer products with open source

by Ari Jaaksi


Spread the word:
digg this story
Nokia launched its first Linux and open source based product, the Nokia 770 Internet Tablet, and the www.maemo.org community web site in 2005. Internet tablets are a new kind of mobile internet devices and the community web site supports application development on these devices. These initiatives provide Nokia with an open source based software platform for handheld devices. This article discusses our experiences of using Linux and open source at Nokia.


1. THE PRODUCT

The Nokia 770 Internet Tablet, illustrated in Figure 1, is a handheld device optimized for internet. It can access internet services, such as email, browsing, media, internet telephony, and chat in WiFi hotspots or over a cellular network.

The Nokia 770's dimensions are 141 x 79 x 19 mm and it weights 185 g. It has a touch screen with an 800x480 pixel resolution. The product is build around the Texas Instruments OMAP 1710 platform with 128Mb Flash and 64Mb RAM memory. Additional data can be stored on a MMC card. The connectivity is provided over an 802.11g wireless network, and over a Bluetooth to a cellular network using a phone as a modem. The street price is approximately $350.


Figure 1: Nokia 770 Internet tablet 2
(Click to enlarge)



2. THE ARCHITECTURE

We used open source extensively in the creation of the Nokia 770. We favored components that were developed by active communities and already used by many. Thus, instead of an embedded version of a component, we rather used a mainstream desktop component when possible.


Figure 2: The Nokia 770 software architecture
(Click to enlarge)


Figure 2 illustrates our software architecture. The majority of the code is licensed under open source licenses. In addition, we have closed components developed by Nokia or third parties. An example of such component is the Real audio & video plug-in. We keep some limited parts of the software that are very close to our hardware close. Examples of such components are the boot loader and battery charging.

End users can flash a new firmware into Nokia 770 to get new features, improved performance, and bug fixes. Nokia can thus develop and improve software in customers' devices.

2.1 Kernel

Our software is currently based on Linux 2.6 kernel. We source the kernel directly from the kernel.org.

We do not to use any commercial Linux distributions, but follow the Debian [Debian 2006] distribution closely. As an example, we use Debian package management. This provides us with a standard way of managing component dependencies.

Working directly at kernel.org provides us with the latest technology and direct access to community work. It allows us to flexibly use our own staff, subcontractors, and open source communities all working on our own hardware.

2.2 Middleware

The big touch screen of the Nokia 770 enables rich user experience. We therefore use the GNOME [GNOME 2006] desktop environment as the basis of our application framework. GNOME has a vibrant community and Nokia is well integrated with the project. As a part of GNOME environment, we use the GTK+ [GTK 2006] multi-platform toolkit for creating graphical user interfaces.

We created a new desktop and the user interface style optimized for internet tablets, as illustrated in Figure 1. Our desktop is based on GNOME and we call it the Hildon Application Framework. It includes, among other things, a task navigator to manage application executions, a home view to embed different plug-ins and a status bar to communicate device status changes. In addition, we provide new widgets and theming modifications on top of the GTK+ to match the Nokia user interface style and various services for third party applications to integrate with the Nokia platform.

We use the Matchbox window manager. It is a lightweight window manager for X11 supporting a PDA style windowing. D-BUS is our message bus system for applications and libraries to talk to one another.

We use D-BUS for system notifications between applications, for separating applications, user interfaces, and engines, and for launching applications from our task navigator.

2.3 Applications

Our applications typically consist of two components. Application engines provide the application functionality, and application user interfaces provide the visible look and feel of applications. This two-level architecture allows us to develop and manage functionality and visual appearance separately, similar to the MVC (model-view-controller) approach [Krasner and Pope 1988, Jaaksi 1995]. We can, for example, change the engine under the visual UI implementation if we need to.

Application engines are either from open source, such as our email engine, closed third party components, such as the handwriting recognition engine, or developed by Nokia. Various application user interfaces that provide the Nokia user experience are closed source.


3. DEVELOPING THE PRODUCT USING LINUX AND OPEN SOURCE

3.1 Selecting the core components

In the beginning of the product development, we analyzed different technologies and architectural solutions. When selecting open source components we took technical, community, roadmap, and legal and IPR (intellectual property rights) aspects into account.

We analyzed the technical suitability of various components and subsystems. A selected component needed to fulfill our functional requirements and be suitable for our hardware specifications. The component also needed to be of good quality and mature enough for a consumer product.

We then analyzed the communities developing the components or subsystems. We wanted to integrate ourselves with vibrant communities to ensure that the selected subsystem would develop further over time. The more active the community, the better.

We analyzed the roadmaps and future plans for the selected technologies. We wanted to ensure that the goals of the development communities would meet those of ours. This all happened through face-to-face discussions in open source conferences, over direct email discussions with key developers, and with participation of discussion in community mailing lists and other such forums.

Finally, we analyzed the legal and IPR aspects of the components under consideration. It was important for us that the open source components used have been licensed under proper licenses and have clear copyright and licensing information attached to them. We also wanted to select components that do not lock us into one vendor, for example through a mandatory copyright donation or a dual licensing model.

It is important that certain components are licensed under an open source license, such as LGPL, that allows us to integrate also proprietary components on our platform. We need to offer the best possible user experience to our customers. In some cases, such as with audio and video, that requires commercial closed components.

For the major components and subsystems we did not have too many options to choose from. For example, the only true graphical environment alternatives were Qt and Gtk+ [Trolltech 2006, GTK 2006].

We selected Gtk+ for it is developed by a vibrant multi-polar community with no single company dominance. It is therefore easy to contribute our changes to Gtk+ on the basis of general usefulness and technical merit only. Also, Gtk+ is licensed under LGPL and that allows us to mix proprietary UI elements without a dual commercial license.

3.2 Creating software as a part of communities

We integrated tens of unmodified open source components on our platform. We also sponsored the enhancements of many existing open source components to. Finally, we developed new components from scratch and open sourced them.

We used existing open sourced components such as the gnuchess chess game engine, bzip2 data compressor, id3lib for manipulating ID3v1 and ID3v2 tags in digital audio files, and many more as such, whenever that was possible. The bigger the component or subsystem was, the better. When possible, we reused an entire subsystem and subsystem architectures, such as GNOME [GNOME 2006] and Debian [Debian 2006]. Instead of separate components we reused architectural blocks that already integrate several independent components.

In several cases we sponsored the development of existing components, such as the Linux kernel, DBUS, GNOME-VFS, GTK+, GStreamer, and OBEX to make them better meet our requirements. The additional work was needed especially in the areas of UI and usability, power management, performance, and memory management. Our engineers worked directly with communities' participating development projects. We also hired and asked developers within the communities to enhance components based on our needs.

As an example, we sponsored the development of the D-BUS [D-BUS 2006] message bus system. We selected D-BUS because it addressed our technical requirements well at the outset. In addition, there was an active community around D-BUS, and we and the community had very similar goals. We believed that we can become a part of the community and there is no need to branch the development for our needs. We believed we can get our requirements and contributions accepted to the project.

We hired key developers from the D-BUS community to work for us. We contributed code and participated in the development of D-BUS through these developers. In addition, we performed a lot of testing that helped in reaching the needed product quality. Finally, we promoted the use of D-BUS in various conferences and articles. The more developers come and use D-BUS the better for us and everybody else. Having a good interprocess communication mechanism available benefits everybody! We open sourced also new components and subsystems that we had developed.

A good example of such component is the Hildon application framework. We soon realized that after open sourcing our own code, we need to ensure that our developers continue to work with the open sourced components. We must be able to continue to support the code in open source so that the code will meet our future needs, too. Just releasing code with no plans to develop it further won't benefit us.

As a recent development, we have opened the development of our application framework and selected other middleware components at the maemo Sardine [Sardine 2006]. Open middleware development enables application developers to follow the latest changes in our code so they can test their applications against the latest changes, update them as a result of any API changes, and pilot the latest additions to our software. This open development also allows anybody to participate in the development of the middleware code and see where it's heading to. This all is available before a stable release of the software for the end-users.

A lot of the code for our yet-to-be released future products is now available and developed jointly with open source developers. We believe this approach is unique and provides an access for developers to participate in the creation of the future Nokia devices.

3.3 The developer platform -- maemo

We utilize the open model in the creation of our products. In addition, we want others to execute their software development projects on our software and devices.


Figure 3: The maemo developer platform
(Click to enlarge)


For that reason we manage the www.maemo.org web site, illustrated in Figure 3. Maemo is an open source development environment for Nokia 770 Internet Tablet, targeted to open source developers and innovation houses. It provides tools to develop and share your own applications for the Nokia 770. We opened the maemo site months before the devices were commercially available to provide early access to developers.

The key features of the maemo site include a test and debug environment on x86, flashing tools, a developer root file system, the Hildon Application Framework and UI, the Scratchbox cross-compilation toolkit, developer documentation, sample applications, mailing lists, wiki and planet for discussion, announcements and support, and bug reporting system. In addition, the site provides a forum to share applications and code for the Nokia 770 internet tablets.


4. BENEFITS OF OPEN SOURCE

We can conclude that it is very beneficial to use open source in consumer product creation. Our experiences are limited, though. We developed only one single software platform and product category within one company. On the other hand, our experiences include all the phases starting from initial screening to selling the devices, participating with many other companies and open source projects, and offering upgrade software for end users.

4.1 Cost savings

The biggest cost savings came from the utilization of already available components. We utilized several free components and subsystems as such, with no modifications.

We also improved several components to better meet our requirements. Such improvement is cheaper than creating the needed functionality from scratch.

Some two-thirds of the code of the Nokia 770 is licensed under an open source license. These components made it possible for us to build the software cheaper than we could have done using closed and proprietary technologies.

4.2 Quality and flexibility

Our code comes from different sources. The majority of the code originates from open source projects.

Some code, such as the application user interfaces, is developed by us. Some code, such as the browser engine, is provided as binaries to us. So we have no access to the code.

If we compare the code from open source to the code developed by us, our conclusion is that open source is of better quality. We have more bugs and problems in the Nokia developed code. This is only natural because the majority of the Nokia code is build from scratch and is thus very young. Open source code, on the other hand, has mostly been used by others already. They have fixed the most severe errors already before we started to use the code.

If we compare open source code to commercial components used on our platform, the quality difference is not that obvious. The commercial components have typically been used by others, too. That has improved their quality.

Open source is flexible when we needed to fix a problem or change functionality. We often requested bug fixes or modifications to the commercial closed components on our platform. If the vendors didn't have the capacity or will to fix the problem on time, we had few options. We could not fix problems ourselves because the companies using closed source didn't want us to access their source code. With open source components, though, we fixed bugs ourself, hired somebody else to fix them, or worked with the communities for the modifications. We thus had many options available, and in most cases we managed to fix the problems at hand. The free access to the code and to the developers improved the quality of open source originated components within the final product.

4.3 Speed and time

It is clear that using available subsystems such as the Linux kernel or the GTK+ toolkit saves time and resources. Actually, developing an operating system and middleware was never even an option for us.

In reality, we had two different options for the Nokia 770 internet tablets: either use an existing commercial and closed operating system and middleware, or then use an existing open source operating system and middleware. We used the open approach because we believed it saves time and money, and enables us to freely mold and shape our products according to the market needs.

We use widely known components and architectures. Such familiarity speeds up our development.

Developers, even newcomers, know the technologies in use. Packaging technologies, such as the Debian packages, or interprocess communication technologies, such a D-BUS, provides the backbone for our integration. Such software architecture is understood by all developers.

We believe that we saved time in integrating open source components to our architecture compared to using closed ones. Familiar subsystems, architectures, and free access to the source code made integration fast.

4.4 Software licensing

Software licensing is often a complicated and time consuming process. It requires a lot of negotiations between the licenser and the licensee. Based on our experience, an average in-licensing process for a software component takes 6 to 12 months. It is only then when you know if you can really use the component in your project or whether you need to find other solutions.

Licensing is simpler with open source. The licensor has already done most of the due diligence work in advance. In most cases, the licensor keeps the copyright, doesn't give any exclusivity, and gives the licenser full right to use the component any way needed. At the financial side, licenser has decided that the code is free, but the licenser may offer support or engineering services for money. Nothing prevents the licensor to go elsewhere for help, if so needed.

All the source code is available for the licensor to study and evaluate. The licensor can assess the community, companies, and available hackers supporting the technology in question. Also, the licensor can talk to others without worrying about trade secrets.

Open source simplifies and accelerates software licensing, and reduces technology and quality risks.

Instead of negotiation for months, the technical work can start immediately.

4.5 Available developers

We often analyzed the code of a developer or a subcontractor before hiring. If a developer or a subcontractor has submitted code to an open source project, its quality is easy to verify. Also, it is important to study the level of involvement the candidates -- both individuals and companies -- have on the communities and components in question.

Linux and open source have created a common vocabulary, architectural reference, and common tools for software development. Almost all developers graduating from universities are familiar with Linux and open source, and many know GNOME, Debian and other such technologies. This all simplifies the recruiting process as well as newcomer introduction. There is no need to arrange long training sessions for new developers on proprietary tools and architectures.

4.6 Road mapping and future

A roadmap of an open sourced component or subsystem is typically discussed openly, and is open for contributions. Some may claim that utilizing open source would leave a company with no control over the used technology. This is not true. We influence the development of relevant technologies through the community work. Actually, things are better with open source than with closed components.

With open source, decisions are done openly. We join technical discussions and roadmapping processes.

We contribute our ideas, submit our code, and discuss requirements to influence the direction of a component or technology. We are not only a licensor but also a licensee at the same time! The choices are more limited with closed source commercial components. Companies developing closed source components typically decide themselves about the future of their technology. They may choose to reveal parts of they plans. They may choose to take external input into account. But, unlike in the open source, you cannot participate yourself and contribute in an open fashion.

4.7 Open source and confidentiality

We worked intensively with communities already before we announced the Nokia 770 Internet Tablet.

Open source approach requires openness and information sharing during development. A high publicity launch, on the other hand, is the way to introduce consumer products to the public and you do not want to reveal the products before the launch date. There is thus a potential conflict between the open source openness and product launch secrecy.

The credentials, work, and history of open source hackers are open for everybody to see. The hackers typically want to work with interesting things also in the future. Therefore, they don't want to become famous for jeopardizing somebody else's project and misusing their trust. Thus, openness and open source can actually be a much stronger bond than any NDA (non-disclosure agreement) or monetary sanction one can put on an individual or a company.

Based on our experiences, we can combine open communication and product confidentiality. We had no information leakage prior to the commercial product announcements, although we had had tens of developers working on the software with us. For some of the developers, we had told very detailed information about the forthcoming product. Developing products in open source and yet maintaining the confidentiality of the product plans and roadmaps was possible for us.


5. CHALLENGES

The benefits of using open source are clear. However, we also experienced some challenges when utilizing open source in product development.

5.1 From hacking to stabilizing

In the early stages of the development, we worked closely with communities, individual hackers, and hacker companies. We made core technical decisions and outlined the software architecture. A lot of ideas were discussed, a lot of trials were made, and a lot of hacking was taking place.

Soon, we froze our requirements to get things focused. The requirements were allocated to individual engineering teams. The teams continued the work in a close collaboration with external parties to add features, and enhance components to meet our needs. We had an internal milestone when we expect all software functionality to be implemented.

We predict when the software is ready for shipping to synchronize marketing activities, and reserve a factory production line. At this milestone the system testing can run all test cases. All features are implemented, but the system is still unstable and buggy. From that point on, all effort is put into bug fixing and stabilization of the system.

At this milestone, the whole organization moves from hacking and development to integration and stabilizing. While hacking and development happens around independent components within teams, the integration and stabilizing happens around the entire software stack and between teams. We shift from a component view to a system view of software development.

Based on our experience this step is more radical with open source than with closed proprietary code.

The open source culture is very much for trials, hacking, innovation and other creative aspects of software development. Meeting deadlines, dropping your latest crazy idea, and making compromises to gain stability are not what many open source communities or developers naturally do. In addition to us, the Linux project, Debian, and others seem to have difficulties making a final good quality release on time [Glance, 2004], [Brockmeier 2005]. In that sense our distro is no different that others'.

In the current projects we try to tackle this challenge by making the move from the hacking to stabilizing more apparent and strict. It seems we must make the change very explicit in our process, and enforce it even more than in some conventional product development projects.

5.2 Architecture management

Open source requires that you manage your architecture not only from the conventional 4+1 point of view [Kruchten, 1995] but also from the legal and IPR point of view. As some components are available only as closed source components, we need to mix open source and proprietary code. This mixing calls for proper architecture management to manage different licensing rules within the product code.

We manage the legal and IPR status of each software component. It is not enough to manage the architecture in terms of the development time API compatibility or run time performance, but we also need to manage the mix of various open source and closed source licensing rules. This is a complex task because not all licensing terms are compatible or clear. This is an additional job that we need to do when developing products based on open source.

5.3 Additional investments

Using open source code effectively requires community participation. It is sometimes possible to use a component as such. Such participation is almost free of charge. In many cases, though, we work with communities to enhance components and develop them further. Such participation requires extra resources.

We have open sourced individual components and participated some development with no clear benefit for us. We have either been left alone to develop the component, or our needs have not been taken into account when developing a component further. In these cases the joint open source development didn't happen or it didn't benefit us. We therefore now observe individual projects and try to identify when the open source investment pays off and when it doesn't.


6. SUMMARY

We have created a consumer device, the Nokia 770 Internet Tablet, utilizing open source software. Our experiences demonstrate that open source technologies and development model suit very well such devices. We created the product in shorter time and with fewer resources, compared to other products utilizing proprietary software. In essence, open source offers time and cost savings in a form of readily available components and subsystems, available developers, and effective development model.

Open source doesn't solve all the problems, though. As a device manufacturer, we alone are responsible for the quality of the end product. We must therefore utilize all quality and software engineering mechanisms to achieve the needed quality. One cannot skip specification, integration, testing, and documentation, for example. In addition, open source introduces certain new requirements, such as community interaction and legal and IPR management.

Open source doesn't make software development free or easy. It provides effective tools for product creation. Combining these new tools, such as community involvement, and utilization of open components, with more traditional software and product engineering practices is a good mix.



References


About the author: Dr. Ari Jaaksi is Nokia's director of open source. "I've got 2 kids, an old wooden house, and I run Nokia's open source software operations ...including 770 development," Jaaksi writes, on his blog.


 
具身智能【2026-01】:Being-H0.5【VLA + Flow Matching】【MoT+MoE架构】【UniHand2.0数据集:4 亿个样本/35000小时 】 BeingBeyond Teamhttps://research.beingbeyond.com/being-h05Real-World Deployment Figure 1: Being-H0.5 at a Glance. We scale human-centric robot learning with Being-H0.5 toward cross-embodiment generalization. We introduce UniHand-2.0, a large-scale corpus 阅读详情

相关推荐

fibplus-8.0.0.zip

FIBPlus 是一套面向 Delphi / C++Builder 的 Firebird、InterBase 数据库访问组件,特点是直接走原生客户端 API,不经 BDE/ODBC,速度快且可控性强。8.0.0 版本主要适配 Delphi 2009 及以后的版本(Delphi 6–2007 需用 7.9.x),核心组件包括 TpFIBDatabase、TpFIBTransaction、TpFIBDataSet 等,支持精细事务管理、本地缓存、BLOB 处理和备份恢复等数据库服务。该库原为 Devrace 的商业组件,现由社区在 GitHub 的 madorin/fibplus 项目开源维护,建议从官方仓库获取源码而非第三方网盘压缩包。安装时解压后用对应版本的工程组(10.4+ 统一为 `FIB.groupproj`)Build 全部包,再 Install `dclFIB` 并在 Library 路径加入 Source 目录即可。新项目中若需官方技术支持,也可考虑 FireDAC、IBDAC 等更现代的替代方案。

Matchbox总结1(××,××)

一、关于Matchbox Window Manager:1,关于启动:当X-server启动并且DISPLAY环境变量已经设置好了,通过如下命令行方式来启动matchbox-windowmanager:$matchbox-window-manager [options]这里,我们一般不用使用命令行来指定[options],可以通过配置文件来指定(前提是在编译的时候 X Resource 的支持没有

QuietHeart的专栏 1923

基于K8S + apisix/istio 实现云原生模块化微服务.自带代码生成器,能够生成对表的增删改查的逻辑代码

基于K8S + apisix/istio 实现云原生模块化微服务.自带代码生成器,能够生成对表的增删改查的逻辑代码.是标准Maven项目,只依赖springboot,没有hibernate,struts,ibatis,数据库调优可以使用druid输出慢sql,比分析xml中的语句更直观,springrain所有的sql语句都使用Finder封装管理,只要查看Finder的引用即可.

notify_one() 或 notify_all() 在c++中的使用要点

notify_one() 或 notify_all() 如果在锁(mutex spin_lock)里调用,可能会导致被立刻唤醒的线程继续阻塞,因为锁被notify线程持有。 c++标准上说,一些实现(尤其是许多 pthread 的实现)为了归避这种情况,在通知调用中,直接将等待线程从条件变量队列转移到互斥队列,而不唤醒它,来避免此"hurry up and wait"--急于求成 的场景 官方文档: https://en.cppreference.com/w/cpp/thread/conditi...

一缕阳光的博客 2423

工艺部2026年终总结及2027工作规划PPT.pptx

制造业生产、工艺、设备、质量全套 PPT 资料,包含月度经营复盘、季度数据分析、部门年终总结规划、产线与检验规范、TPM 设备保全、质量意识、质量总监高阶培训等课件。内容兼顾经营指标偏差分析、述职汇报、现场制度宣贯、岗位技能教学。 适合操作工、检验员、设备维保员、工艺 / 品质 / 设备工程师、生产主管、各部门部长、质量总监、厂长、内部培训师、精益专员使用,覆盖一线执行、骨干分析、部门负责人述职、高管进阶全层级,可直接用于工厂汇报、内部培训、述职复盘。

wordbuddy破甲经验分享

wordbuddy破甲经验分享

MariaDB远程运维教程:Debian安装、Prometheus监控与公网连接

本文分享在Debian 12上部署MariaDB并配置Prometheus监控的实践:通过添加官方APT源安装MariaDB,安全初始化后,使用mysqld_exporter采集性能指标,实现对数据库连接、资源与运行状态的实时监控。重点解决远程故障排查时的访问延迟问题,提前建立稳定监控与远程接入能力,提升运维效率。

2401_84813926的博客 1万+

双闭环PWM整流器VOC控制 +SVPWM调制仿真(Simulink仿真实现)

内容概要:本文详细介绍了一种基于Simulink的双闭环PWM整流器采用虚拟同步发电机控制(VOC)策略与空间矢量脉宽调制(SVPWM)技术的仿真模型。该模型在dq同步旋转坐标系下构建电压定向控制系统,实现了电压外环与电流内环的双闭环控制结构,重点阐述了VOC控制原理、SVPWM调制算法的实现方法及其在Simulink环境中的模块化搭建过程。通过该仿真平台,能够有效实现单位功率因数运行、直流母线电压稳定控制以及优异的动态响应性能,适用于电力电子变换器、新能源并网系统及电机驱动等领域的控制策略验证与性能评估。; 适合人群:电气工程、自动化、电力电子与电力传动等相关专业的高年级本科生、研究生,以及从事电力电子系统仿真、新能源并网控制研究的科研人员和技术工程师。; 使用场景及目标:①深入理解三相PWM整流器在dq坐标系下的数学建模与控制机理;②掌握VOC控制策略的核心思想及其相较于传统矢量控制的优势;③学习SVPWM调制技术的实现流程与Simulink建模技巧;④通过仿真实验验证双闭环控制系统的静态精度与动态稳定性,提升对先进电力电子控制系统的分析与设计能力。; 阅读建议:建议结合电力电子技术、现代控制理论和电机控制相关基础知识进行学习,按照仿真模型的结构逐步分析各功能模块的信号流向与参数配置,重点关注锁相环(PLL)、坐标变换、PI控制器设计及SVPWM模块的实现细节,并可通过调整控制参数观察系统响应变化,以深化对控制策略动态特性的理解。

Debian如何配置Python调试工具

下面按**从基础到进阶**的方式,说明在 **Debian** 上配置 **Python 调试工具** 的常见做法

2601_96798737的博客 220

储能双向Buck-Boost+模型预测电流控制+电压下垂控制仿真【附参考文献】(Simulink仿真实现)

内容概要:本文系统介绍了基于Simulink平台构建的储能双向Buck-Boost变换器仿真模型,融合模型预测电流控制与电压下垂控制策略,面向锂电池储能系统的高效充放电管理。该模型深入实现了双闭环控制架构的设计与动态性能分析,涵盖系统建模、关键控制算法实现及稳定性验证,并配套提供参考文献以支撑理论深度与技术复现性。资源包还整合了多种典型电力电子拓扑的仿真案例,如各类DC-DC变换器、谐振变换器、PWM整流器等,充分体现了其在新能源发电、微电网能量调度及电力系统稳定控制中的广泛应用价值和技术延展性。; 适合人群:适用于电气工程、自动化、电力电子及相关专业的高校研究生、科研人员以及从事能源系统仿真与控制设计的工程技术人员;要求具备一定的Simulink/MATLAB操作能力及电力电子与自动控制基础知识;; 使用场景及目标:①深入理解双向Buck-Boost电路在储能系统中的工作机理与能量双向流动控制方法;②掌握模型预测控制(MPC)与下垂控制在实际电力变换系统中的建模流程与参数整定技巧;③为科研课题、学位论文或工程项目提供高可靠性、可复用的仿真原型与技术参考方案; 阅读建议:建议结合文中列出的参考文献与网盘提供的完整仿真资源,按照目录结构循序渐进地学习各模块案例,重点剖析控制逻辑搭建、调节器设计与系统动态响应特性,通过动手仿真与参数调试深化对控制策略性能与鲁棒性的理解。

产业园区在推动科技成果落地时,如何高效匹配企业与技术供给方.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

dubbo-admin

ZooKeeper 3.4.14 + Java 21(本地环境变量 JAVA_HOME)旧版 ZooKeeper Java 客户端与较新 JDK 的兼容性问题。

thulium_kyg的博客 160

全桥LLC谐振(变频+移相混合控制)变换器闭环仿真模型(Simulink仿真实现)

内容概要:本文详细介绍了基于Simulink平台构建的全桥LLC谐振变换器闭环仿真模型,采用变频控制与移相控制相结合的混合调制策略,实现高效电能转换与高精度输出稳压。模型完整涵盖了系统建模、谐振腔参数设计、软开关技术实现、双闭环控制系统(如电压外环与频率/相位内环)设计及仿真验证全过程,重点突出零电压开通(ZVS)与零电流关断(ZCS)的实现机制,以显著降低开关损耗,提升变换器效率与动态响应性能。配套资源包含完整的Simulink仿真文件、详细的参数设计报告及核心参考文献,为深入理解LLC谐振变换器的工作机理、控制策略优化及其在开关电源、新能源发电等领域的工程应用提供了坚实的技术支撑。; 适合人群:具备电力电子技术、自动控制理论基础,从事高频开关电源、新能源变换器、车载充电机或相关方向研究的研究生、科研人员及电气工程师。; 使用场景及目标:①系统学习全桥LLC谐振变换器的精确建模与仿真方法;②掌握变频+移相混合控制策略的设计原理与实现技巧;③开展高效率、高功率密度电源变换器的科研攻关与工程项目开发;④深入理解软开关技术在实际电路中的应用与优势; 阅读建议:建议结合所提供的仿真模型与设计报告进行动手实践,重点分析控制器参数整定过程、谐振元件(Lr, Cr, Lm)的参数匹配关系,并仔细观察仿真波形,以深刻把握系统的稳态特性、瞬态响应能力及控制稳定性,从而全面提升对复杂谐振变换器系统的设计与分析水平。

ClickHouse 数据目录迁移翻车实录:整十分 SIGQUIT 疑云、uuid 撞车双节点互踢与 ZooKeeper 僵尸副本排查(附迁移 SOP)

ClickHouse 两节点集群做数据目录迁移,迁完节点 2 后节点 1 无故 stop,此后两节点随便启动哪个都会被自动终止——退出全部发生在整十分,日志写着 Received termination signal (Quit)。本文完整还原排查:信号溯源五步法(journalctl/strace si_pid/auditd)、整点规律与 ZK 分桶过期的辨析、system.replicas 三板斧取证,最终锁定 rsync 迁移经典坑:/var/lib/clickhouse/uuid 撞车导致双节点互踢

Sayai的专栏 212

zynq+LWIP 裸机双网口实现(MIO+EMIO)+程序下载

芯片型号: ZYNQ: XC7Z010clg400开发软件:Vivado2022 + Xilinx Vitis 2022网卡芯片:RTL8211FDI(需要根据网口芯片型号修改对应的硬件配置代码。

thinking in 小宇宙 3405

hCaptcha Enterprise绕过方案对比:四种Capsolver任务类型怎么选?

本文深入评测了hCaptcha Enterprise的四种Capsolver任务类型(HCaptchaEnterpriseTask、HCaptchaEnterpriseTaskProxyLess、HCaptchaTurboTask和HCaptchaTurboTaskProxyLess),分析其技术架构、性能表现及适用场景。通过基准测试和成本模型比较,帮助技术团队选择最优解决方案,提升自动化流程的验证通过率与成本效益。

rrr55的博客 321

什么是 Redis 以及如何在系统(Ubuntu、Debian、AlmaLinux、Rocky 或 CentOS)上安装它

Redis是基于内存的高速数据存储系统,广泛用于缓存、会话管理和任务队列。在Ubuntu/Debian上用apt安装,AlmaLinux/Rocky/CentOS上用dnf安装,均通过systemctl enable --now redis-server启动并设为开机自启。使用redis-cli测试ping响应及set/get操作验证功能。务必配置bind 127.0.0.1和requirepass密码以保障安全,避免暴露于公网。适用于WordPress、Laravel等应用加速。

csdn_aspnet的专栏,请点击博客主页右上角三个点中的私信联系 288

5分钟快速搭建:使用ros1_bridge实现ROS2容器与ROS1主机的无缝通信

本文详细介绍了如何在5分钟内快速搭建基于ros1_bridge的通信方案,实现运行在Docker容器中的ROS2节点与宿主机ROS1系统的无缝数据交换。通过环境隔离、Docker容器化部署及选择性桥接配置,该方案能有效整合新旧系统,避免大规模代码重构,是机器人项目渐进式升级的实用策略。

weixin_29268637的博客 178

Zookeeper集群(3.8.2)添加用户密码认证

本文主要介绍zk集群添加用户密码认证

weixin_44418421的博客 262

处理图数据, 安装“Pytorch“ + 图神经网络开源框架“PyG “+ “ogb“使用

"OGB" OSError: [WinError 127] 找不到指定的程序。1.[遇到这类问题往往跟torch安装的工具包(如torch-sparse,torch-scatter,torch-cluster)版本没对应上有关](https://blog.youkuaiyun.com/weixin_42358688/article/details/117433691)2.[OGB使用环境安装与依赖](https://ogb.stanford.edu/docs/home/)Data Loaders3.[torch-geo

Fuguir™的博客 3698

使用Transformer实现自动调制识别(RML2016a)

image_size = 128 # resize重置输入大小patch_size = 2 # 从输入图片(信号看作图片)中将被提取的块大小# 分成 num_patches 个块num_patches = (image_size // patch_size) #(72/6)**2 横着裁剪),],return x)(x1, x1)# MLP.# Add MLP.x=x_train,y=y_train,filepath,round。

QAQIknow的博客 6276

UOS/Debian AIDE:文件完整性基线与变更检测验证

1. 服务介绍 AIDE 对比文件属性和内容哈希,检测新增、删除与修改,适合网站目录、关键配置和系统文件完整性检查。它不实时阻止修改,也不是备份工具;可信初始数据库是判断变更的依据。 2. 准备运行环境 原实验UOS/Debian系、管理员权限、可信且无已知异常的系统状态。先记录软件版本和包内配置方式,留足基线数据库空间。仅在独立测试目录模拟变更,不修改真实

weixin_44524357的博客 184

GEE:提取研究区 NDVI/LST/RVI 并进行时间序列线性插值填补缺失像素和Savitsky-Golay(SG)滤波平滑处理

养乐多_本文将介绍使用Landsat数据集,构建时间序列,并使用线性插值算法填补缺失数据,或者去云空洞,并进一步对完整的时间序列数据进行SG滤波处理。

养乐多的博客 3196

MySQL 专题 · 第 1 章:环境搭建(Ubuntu/Debian 系 vs CentOS/RHEL 系

本文系统解析MySQL在Ubuntu/Debian与CentOS/RHEL系下的安装差异,聚焦包管理、服务名、配置路径及root认证方式三大核心区别。重点揭示MySQL 8.0默认使用caching_sha2_password导致老客户端连接失败的根源,并提供两套可直接复用的安装与初始化命令。强调装完必做四件事:自启、安全加固、认证插件调整(适配老应用)、验证配置。附5.7与8.0关键差异速查表,为“装得起、连得上”提供实战指南,为后续架构与排错打下基础。

weixin_42211117的博客 257

【毕设全程指导】基于YOLOv8的包装商品检测与可视化系统(SKU110K实战)

本文介绍了一个基于YOLOv8的包装商品检测与可视化系统毕业设计方案。项目采用SKU110K数据集,通过CSV转TXT格式转换适配YOLO模型训练,包含详细的环境搭建、模型配置和训练流程。系统实现了包装商品的自动化检测,并开发了Tkinter可视化界面进行交互式检测展示。该方案结合产业应用需求与技术深度,既具备实用价值,又能充分展示学生的技术能力,适合作为计算机视觉相关专业的毕业设计选题。整个项目从数据准备到界面开发完整覆盖,帮助学生系统掌握目标检测项目的完整实现流程。

LXY_LOVE36的博客 145

uniapp [安卓苹果App端] - 实现集成微信一键登录及授权获取用户信息全流程源码,uniApp唤起微信客户端app实现微信授权头像昵称手机号(提供移动应用/开放平台/资质认证/签名/权限申请

uni-app,安卓Android,苹果ios,安卓app端,苹果App端,uniapp苹果安卓app,微信一键登录,uniapp项目App端实现微信登录,Uniapp实现微信授权登录,调起微信客户端授权用户信息,uniappapp端微信一键登录打开手机微信app,app端如何唤起用户本机微信应用并授权登陆,如何申请微信一键登录,uniapp实现APP微信登录流程,打开本地微信软件,接入微信登录,UniApp实现微信登录教程,获取头像昵称手机号用户数据,超详细实现微信登录功能,唤起没反应,授权失败,获取

🏆 前端领域优质创作者 1万+
上一篇: SIP:构建新一代SoftSwitch
下一篇: 2.6 内核驱动框架
suacker
博客等级 码龄24年 46粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值