Hello Nathaniel,
Simulink simulation honors the sample time set by you in the model. So, reducing sample time of the model would run your algorithm at a higher frequency in simulation. There are 2 ways to achieve this.
- You can set the sample time parameter for all the source blocks in your model to your desired frequency,
- Set all source blocks to inherit sample time, setting the value in block parameters to -1, and set the FixedStepSize parameter of your Simulink model as shown below (using either MATLAB Command
set_param('robotROSFeedbackControlExample20b','FixedStepSize','0.01');
or Simulink Configuration Parameters)
However, the stability would depend on many factors and since Simulation is running on a host computer, the resource contention may affect your Simulation (may be if you shutdown everything else except Simulink simulation). Especially for Simulink model containing ROS (Publish, Subscribe) blocks, there is an inherent overhead of converting the ROS messages that could also affect your throughput.
While selecting the sample time, you need to consider the controller algorithm complexity and account for the ROS message to Simulink bus conversion. For instance, verify if your controller algorithm finishes processing loop within the desired sample time. You can use Simulink Profiler to get this information. Moreover, deploying the Simulink model as a node would provide more stable execution, since that would run as a standalone application on your robot. But that too has its limitation on how fast you can schedule a thread on Linux. Typically 1 ms is widely accepted limit of most desktop Linux systems. Beyond this limit, the desktop operating system cannot sustain real-time execution (meeting the deadline) of your algorithm. Let me know if you need further information.
-Abhijeet