Skip to main content

Matlab to C/C++ code development - Some learning points

Over the last few years, the engineers at the company have invested both their time and sleepless nights in formulating a process for the development of Machine learning algorithms that will satisfy real-time constraints with minimal RAM usage. This is quite a tall task as per default, that would force one to do their development directly in C language. Although that seems like the right choice, the downside is the direct correlation of the debugging time with algorithm complexity. 

Such a time could have been rather used in optimizing the algorithm within the MATLAB environment which has excellent tools for the analysis, plotting and debugging. So it was decided to rather learn the Code generation process with the hope that future algorithm could be designed in a similar fashion without the hassle of the compiler-specific run-time issues.

The development of this machine learning algorithm would eventually be implemented in a 32bit, 160Mhz speed, 260KB RAM microcontroller. Although it is a huge step-up from an 8bit Arduino, it's a far cry from the Raspberry Pi 1Ghz 1GB RAM microcomputer. The engineers felt that succumbing to the pressure of complex algorithm optimization for the sake of the faster computer would defeat the culture of the company of the "low-cost, high-impact" which forces innovation to be at the core of every product or service we provide.

So given a successful implementation last week on the above-mentioned microcontroller, the following discoveries have been highlighted as pointers to successful Code generation:


  • Always generate your algorithm with comments included, the Code generation allows the comments to remain in the final source code, allowing for faster debugging.
  • Ensure that you have test data that has 100% script coverage. This ensures that the code generation can be compared in the event you want to produce a MEX equivalent.
  • Assign and initialize your variables before using them. This is crucial as it will prevent the code generation from optimizing your code beyond its intended purpose.
  • Unless specified, all variables are treated as double-precision "floats". This is 64bit (or 8 bytes) whereby an 8bit integer could have sufficed (such as flags). 
Although there are many other factors ensuring a trouble-free Matlab code generation process, I hope you are intrigued about trying this process (provided you have all the necessary toolboxes) and accelerating your algorithm development and hardware integration.

Until next time!

Comments

  1. The Seven Luck Casino is certainly one of two casinos in Seoul, South Korea that offer poker. But even with a pleasant edge on the opposition, she or he might not be sufficiently better to beat the sport with its stiff 토토사이트 rake. Ø Three to 5 years experience casino/hotel, customer support, host or other account administration experience required . Three to 5 years of experience casino/hotel, customer support, host or other account administration experience required . Once you be part of, you can to|you presumably can} take advantage of|benefit from|reap the benefits of} many alternative promotions corresponding to welcome bonuses and free spin presents.

    ReplyDelete

Post a Comment

Popular posts from this blog

Setting up the Tarot T4-3D gimbal on the Pixhawk 2.4.8 with Specktrum dx6 Gen2 toggle switch

So i took the challenge of setting up the Tarot gimbal not just for inherent stable video footage but also the flexibility of controlling it from the radio control. However, I encountered quite a few challenges which made me aware that I'm not the one only in this battle . It's quite clear that the setup of the Tarot gimbal using its own software is completely different from how it's been described in the Ardupilot/Arducopter webpage and in mission Planner. In Mission Planner and it's associated site makes one believe that it should be done through software, only to realize that in actual fact the setup is more complex than that.  After two evenings of trying various combinations, I realized the getting the pixhawk Aux channels to communicate with the T4 gimbal requires the following steps: - The Pixhawk Pin9 (Aux1) needed to be activated to pass through user-chosen channel from the transmitter. For the Dx6 Gen2 it was the channel 6, which can assigned the ...

Setup ArduPilot flight modes with DX6 Gen 2

Hi, I've looked around the web to get an understanding the setup of the Ardupilot flight modes with a Spektrum DX6 2nd generation and there was none. So I decided to write this blog. The few things to consider when doing this: Please follow the instruction given on the ardupilot webpage . Have the Pixhawk hardware connected to Mission Planner (I have 1.3.50 - Copter V3.5.3)  Use the display bar in the Radio Calibration page as a guide while changing the rate pulse widths on your transmitter. I've used switch D to change the pulse width ranges on channel 5.