{"id":6115,"date":"2021-08-27T12:40:50","date_gmt":"2021-08-27T16:40:50","guid":{"rendered":"https:\/\/blogs.mathworks.com\/student-lounge\/?p=6115"},"modified":"2021-08-30T09:24:56","modified_gmt":"2021-08-30T13:24:56","slug":"virtual-suspension-design-processes-with-mcgill-formula-electric","status":"publish","type":"post","link":"https:\/\/blogs.mathworks.com\/student-lounge\/2021\/08\/27\/virtual-suspension-design-processes-with-mcgill-formula-electric\/","title":{"rendered":"Virtual suspension design processes with McGill Formula Electric"},"content":{"rendered":"<p><span data-contrast=\"auto\">For today&#8217;s blog post, Sam Reinsel is happy to host for the 2nd time the\u00a0<\/span><a href=\"https:\/\/www.mcgillformulaelectric.com\/\"><span data-contrast=\"none\">Mcgill\u00a0Formula electric<\/span><\/a><span data-contrast=\"auto\">\u00a0team at McGill University in Montreal, Canada.\u00a0<\/span><a href=\"https:\/\/www.linkedin.com\/in\/kattly-li\/\"><span data-contrast=\"none\">Kattly<\/span><\/a><span data-contrast=\"auto\">,\u00a0<\/span><a href=\"https:\/\/www.linkedin.com\/in\/andrew-medina-92838079\/\"><span data-contrast=\"none\">Andrew<\/span><\/a><span data-contrast=\"auto\">,\u00a0<\/span><a href=\"https:\/\/www.linkedin.com\/in\/garrett-gerrard-4a7a6617a\/\"><span data-contrast=\"none\">Garrett<\/span><\/a><span data-contrast=\"auto\">,\u00a0<\/span><a href=\"https:\/\/www.linkedin.com\/in\/cyril-comaty\/\"><span data-contrast=\"none\">Cyril<\/span><\/a><span data-contrast=\"auto\">, and\u00a0<\/span><a href=\"https:\/\/www.linkedin.com\/in\/nicolas-thirion\/\"><span data-contrast=\"none\">Nicolas<\/span><\/a><span data-contrast=\"auto\">\u00a0are here as guest bloggers to explain some of the work they poured time into while working\u00a0remote. It&#8217;s a great example of how to push forward and ensure that your team not only\u00a0learns, but\u00a0improves when circumstances are against you.\u00a0<\/span><\/p>\n<h1 aria-level=\"1\"><b><span data-contrast=\"auto\">Introduction<\/span><\/b><span data-ccp-props=\"{&quot;201341983&quot;:2,&quot;335559738&quot;:140,&quot;335559739&quot;:140,&quot;335559740&quot;:0}\">\u00a0<\/span><\/h1>\n<p><span data-contrast=\"auto\">In\u00a0<\/span><a href=\"https:\/\/blogs.mathworks.com\/racing-lounge\/2019\/10\/09\/mcgill_formula_electric\/\"><span data-contrast=\"none\">our last blog post<\/span><\/a><span data-contrast=\"auto\">, we discussed our first attempt at using Simulink to support our vehicle development. With a year of experience behind us, we are here today to show some of what we\u00a0made\u00a0in that time. Without a physical car to test (due to unforeseen circumstances in 2020), we ramped up simulation work instead. Investing\u00a0into\u00a0software tools built using\u00a0MATLAB\u00a0and Simulink has proven useful, as they enabled us to better understand and analyze the systems we were working on. Here are some cool tools we built that we thought you might enjoy.\u00a0<\/span><\/p>\n<h2 aria-level=\"1\"><b><span data-contrast=\"auto\">Ride Model<\/span><\/b><span data-ccp-props=\"{&quot;201341983&quot;:2,&quot;335559738&quot;:140,&quot;335559739&quot;:140,&quot;335559740&quot;:0}\">\u00a0<\/span><\/h2>\n<p><span data-contrast=\"auto\">Although simple, we found that a \u00bc car model (<\/span><a href=\"https:\/\/www.mathworks.com\/matlabcentral\/fileexchange\/72842-quarter_car\"><span data-contrast=\"none\">like the one we posted in the previous blog post<\/span><\/a><span data-contrast=\"auto\">)\u00a0was\u00a0sufficient to find general trends to guide on-track setup tuning and cross-check higher-complexity model data. It served us well to return to first principles with the \u00bc car model instead of jumping straight into a 7DOF ride model, as discussed in our previous blog post. Simple analytical models are both easier to validate and less computationally expensive.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:210,&quot;335559739&quot;:210,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">We also found it easy to transfer the analysis techniques we built on the \u00bc car to other simulations. We were able to learn a lot about our car\u2019s sensitivities to various\u00a0settings, and\u00a0could find a good first-base\u00a0vehicle setup by optimizing it. Because we had a high-downforce car, pitch\/roll and ride height sensitivity had big effects on performance. To\u00a0examine these parameters, we built a \u00bd car model in\u00a0Simscape\u00a0and applied the knowledge gleaned from the \u00bc car. In the graph below, you can see there are tradeoffs between road holding, load variation, and ground clearance parameters. MATLAB and Simulink helped us quantify those tradeoffs.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:210,&quot;335559739&quot;:210,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:210,&quot;335559739&quot;:210,&quot;335559740&quot;:259}\">\u00a0<img decoding=\"async\" loading=\"lazy\" width=\"573\" height=\"432\" class=\"aligncenter size-full wp-image-6118\" src=\"https:\/\/blogs.mathworks.com\/student-lounge\/files\/2021\/08\/image_0.png\" alt=\"\" \/><\/span><\/p>\n<h2 aria-level=\"1\"><b><span data-contrast=\"auto\">Tire modeling<\/span><\/b><span data-ccp-props=\"{&quot;201341983&quot;:2,&quot;335559738&quot;:140,&quot;335559739&quot;:140,&quot;335559740&quot;:0}\">\u00a0<\/span><\/h2>\n<p><span data-contrast=\"auto\">Last year, we decided to move forward with 16\u201d tires instead of 18\u201d tires. Data from the Tire Testing Consortium (TTC) is essential for this process. Starting with the high-level view that the\u00a0laptime\u00a0simulation provided, we then quantified effects of tire mass and inertia, examined effects of tire temperature, and analyzed pure slip sweeps using a tire model we had built in\u00a0MATLAB. Building our own model enabled greater flexibility and ease of integration with our team\u2019s other simulation tools.\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:210,&quot;335559739&quot;:210,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><img decoding=\"async\" loading=\"lazy\" width=\"571\" height=\"399\" class=\"aligncenter size-full wp-image-6121\" src=\"https:\/\/blogs.mathworks.com\/student-lounge\/files\/2021\/08\/image_1.png\" alt=\"\" \/><\/p>\n<h2 aria-level=\"1\"><b><span data-contrast=\"auto\">Yaw moment diagram<\/span><\/b><span data-ccp-props=\"{&quot;201341983&quot;:2,&quot;335559738&quot;:140,&quot;335559739&quot;:140,&quot;335559740&quot;:0}\">\u00a0<\/span><\/h2>\n<p><span data-contrast=\"auto\">We also created a Yaw Moment diagram tool in\u00a0MATLAB\u00a0that is integrated with our tire model. The YMD tool is integrated with both our suspension kinematics calculation tool as well as 5D aero\u00a0maps generated from our CFD simulations as it is important to account for kinematic and aero variations in different situations. Our YMD tool is used in both the design stage, and for helping us optimize the car\u2019s setup. During the design stage, different\u00a0suspension configurations can be compared to see their effects on the car\u2019s handling characteristics. Additionally, we can perform sensitivity sweeps to compare different setup options (like toe, camber, tire pressure,\u00a0etc).\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:210,&quot;335559739&quot;:210,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:210,&quot;335559739&quot;:210,&quot;335559740&quot;:259}\">\u00a0<img decoding=\"async\" loading=\"lazy\" width=\"523\" height=\"401\" class=\"aligncenter size-full wp-image-6124\" src=\"https:\/\/blogs.mathworks.com\/student-lounge\/files\/2021\/08\/image_2.png\" alt=\"\" \/><\/span><\/p>\n<h2 aria-level=\"1\"><b><span data-contrast=\"auto\">Suspension design app<\/span><\/b><span data-ccp-props=\"{&quot;201341983&quot;:2,&quot;335559738&quot;:140,&quot;335559739&quot;:140,&quot;335559740&quot;:0}\">\u00a0<\/span><\/h2>\n<p><span data-contrast=\"auto\">Suspension is crucial to a vehicle\u2019s performance, and designing\u00a0new\u00a0suspension is always a challenge. Programs like\u00a0OptimumK\u00a0are\u00a0really helpful\u00a0to analyze kinematics and inform the design process. However, we became limited as we could not get\u00a0OptimumK\u00a0to interface with our programs and analyses in\u00a0MATLAB. To resolve this\u00a0limitation,\u00a0 using\u00a0kinematics and\u00a0MathWorks\u2019\u00a0great documentation, we made our own Suspension Design App in MATLAB. The simulation and logic, the \u2018backend\u2019 of the app, was written as\u00a0MATLAB\u00a0code. To make the app user friendly and intuitive, a UI was created using the app designer which also allowed us to package everything as a standalone app. We can apply motion to the chassis (heave,\u00a0pitch\u00a0and roll) and animate the motion of the points. All relevant kinematic parameters (camber, toe, motion ratio\u00a0etc\u2026) can be graphed and analyzed fully. With this tool, we can easily change suspension points to evaluate their motion, visualize their effects on overall vehicle dynamics, and ensure we are rules compliant.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:210,&quot;335559739&quot;:210,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:210,&quot;335559739&quot;:210,&quot;335559740&quot;:259}\">\u00a0<img decoding=\"async\" loading=\"lazy\" width=\"975\" height=\"610\" class=\"aligncenter size-full wp-image-6127\" src=\"https:\/\/blogs.mathworks.com\/student-lounge\/files\/2021\/08\/image_3.png\" alt=\"\" \/><\/span><\/p>\n<p><span data-contrast=\"auto\">We can apply motion to the chassis (heave,\u00a0pitch\u00a0and roll) and animate the motion of the points. All relevant kinematic parameters (camber, toe, motion ratio\u00a0etc\u2026) can be graphed and analyzed fully. With this tool, we can easily change suspension points to evaluate their motion, visualize their effects on overall vehicle dynamics, and ensure we are rules compliant.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:210,&quot;335559739&quot;:210,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:210,&quot;335559739&quot;:210,&quot;335559740&quot;:259}\">\u00a0<img decoding=\"async\" loading=\"lazy\" width=\"1240\" height=\"806\" class=\"aligncenter size-full wp-image-6130\" src=\"https:\/\/blogs.mathworks.com\/student-lounge\/files\/2021\/08\/mcgill_suspension.gif\" alt=\"\" \/><\/span><\/p>\n<p><span data-contrast=\"auto\">Although it took a lot of time to create, being able to change our suspension points directly in\u00a0MATLAB\u00a0gives us greater control and saves time in debugging as we have the source code. As well, we no longer\u00a0have to\u00a0import configurations into our Simulink models which has resulted in greater integration within our simulation work. Integration with the ride model as we move to decoupled\u00a0suspension is one case where this tool provides an overall greater focus on vehicle dynamics in our design process. Creating a stronger software architecture has supported us in the development of new models and simulations we want to build in the future.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:210,&quot;335559739&quot;:210,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<h1 aria-level=\"1\"><b><span data-contrast=\"auto\">Closing<\/span><\/b><span data-ccp-props=\"{&quot;201341983&quot;:2,&quot;335559738&quot;:140,&quot;335559739&quot;:140,&quot;335559740&quot;:0}\">\u00a0<\/span><\/h1>\n<p><span data-contrast=\"auto\">These are some of the cool simulations we\u2019ve been able to make using\u00a0MATLAB\/Simulink since our last in-person FSAE competition. Our team is still new to the world of simulation, but we are seeing a great push towards virtualization and simulation\u00a0work in industry. Gaining an understanding of the car is hard enough, but some investment in building up a strong software architecture to support simulations helped us tremendously. We hope that you\u00a0found\u00a0the tools as interesting as we think they are!<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559738&quot;:210,&quot;335559739&quot;:210,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"overview-image\"><img src=\"https:\/\/blogs.mathworks.com\/student-lounge\/files\/2021\/08\/mcgill_suspension.gif\" class=\"img-responsive attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"\" decoding=\"async\" loading=\"lazy\" \/><\/div>\n<p>For today&#8217;s blog post, Sam Reinsel is happy to host for the 2nd time the\u00a0Mcgill\u00a0Formula electric\u00a0team at McGill University in Montreal, Canada.\u00a0Kattly,\u00a0Andrew,\u00a0Garrett,\u00a0Cyril, and\u00a0Nicolas\u00a0are&#8230; <a class=\"read-more\" href=\"https:\/\/blogs.mathworks.com\/student-lounge\/2021\/08\/27\/virtual-suspension-design-processes-with-mcgill-formula-electric\/\">read more >><\/a><\/p>\n","protected":false},"author":174,"featured_media":6130,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[4,13],"tags":[70,30,17,56],"_links":{"self":[{"href":"https:\/\/blogs.mathworks.com\/student-lounge\/wp-json\/wp\/v2\/posts\/6115"}],"collection":[{"href":"https:\/\/blogs.mathworks.com\/student-lounge\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.mathworks.com\/student-lounge\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/student-lounge\/wp-json\/wp\/v2\/users\/174"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/student-lounge\/wp-json\/wp\/v2\/comments?post=6115"}],"version-history":[{"count":5,"href":"https:\/\/blogs.mathworks.com\/student-lounge\/wp-json\/wp\/v2\/posts\/6115\/revisions"}],"predecessor-version":[{"id":6151,"href":"https:\/\/blogs.mathworks.com\/student-lounge\/wp-json\/wp\/v2\/posts\/6115\/revisions\/6151"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/student-lounge\/wp-json\/wp\/v2\/media\/6130"}],"wp:attachment":[{"href":"https:\/\/blogs.mathworks.com\/student-lounge\/wp-json\/wp\/v2\/media?parent=6115"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/student-lounge\/wp-json\/wp\/v2\/categories?post=6115"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/student-lounge\/wp-json\/wp\/v2\/tags?post=6115"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}