|
19 | 19 | }, |
20 | 20 | { |
21 | 21 | "cell_type": "code", |
22 | | - "execution_count": null, |
| 22 | + "execution_count": 2, |
23 | 23 | "id": "2687846d", |
24 | 24 | "metadata": {}, |
25 | 25 | "outputs": [], |
|
101 | 101 | }, |
102 | 102 | { |
103 | 103 | "cell_type": "code", |
104 | | - "execution_count": 2, |
| 104 | + "execution_count": null, |
105 | 105 | "id": "29fd011d", |
106 | 106 | "metadata": {}, |
107 | 107 | "outputs": [ |
108 | 108 | { |
109 | | - "ename": "AttributeError", |
110 | | - "evalue": "module 'numpy' has no attribute 'complex'.\n`np.complex` was a deprecated alias for the builtin `complex`. To avoid this error in existing code, use `complex` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.complex128` here.\nThe aliases was originally deprecated in NumPy 1.20; for more details and guidance see the original release note at:\n https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations", |
| 109 | + "ename": "NameError", |
| 110 | + "evalue": "name 'gem' is not defined", |
111 | 111 | "output_type": "error", |
112 | 112 | "traceback": [ |
113 | 113 | "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", |
114 | | - "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", |
115 | | - "Cell \u001b[1;32mIn[2], line 19\u001b[0m\n\u001b[0;32m 16\u001b[0m env \u001b[38;5;241m=\u001b[39m gem\u001b[38;5;241m.\u001b[39mmake(env_id, physical_system_wrappers\u001b[38;5;241m=\u001b[39mphysical_system_wrappers)\n\u001b[0;32m 18\u001b[0m \u001b[38;5;66;03m# Initialize the controller\u001b[39;00m\n\u001b[1;32m---> 19\u001b[0m c \u001b[38;5;241m=\u001b[39m \u001b[43mgc\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mGemController\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmake\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 20\u001b[0m \u001b[43m \u001b[49m\u001b[43menv\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 21\u001b[0m \u001b[43m \u001b[49m\u001b[43menv_id\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 22\u001b[0m \u001b[43m \u001b[49m\u001b[43ma\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m8\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 23\u001b[0m \u001b[43m \u001b[49m\u001b[43mblock_diagram\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[0;32m 24\u001b[0m \u001b[43m \u001b[49m\u001b[43mcurrent_safety_margin\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m0.25\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 25\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;66;43;03m# save_block_diagram_as=(),\u001b[39;49;00m\n\u001b[0;32m 26\u001b[0m \u001b[43m)\u001b[49m\n\u001b[0;32m 28\u001b[0m \u001b[38;5;66;03m# Control the environment\u001b[39;00m\n\u001b[0;32m 29\u001b[0m c\u001b[38;5;241m.\u001b[39mcontrol_environment(env, n_steps\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m30000\u001b[39m, render_env\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m, max_episode_length\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m10000\u001b[39m)\n", |
116 | | - "File \u001b[1;32mc:\\Users\\Valliammai\\PE_proj\\gym-electric-motor\\src\\gem_controllers\\gem_controller.py:94\u001b[0m, in \u001b[0;36mGemController.make\u001b[1;34m(cls, env, env_id, decoupling, current_safety_margin, base_current_controller, base_speed_controller, a, should_plot, plot_references, block_diagram, save_block_diagram_as)\u001b[0m\n\u001b[0;32m 91\u001b[0m controller \u001b[38;5;241m=\u001b[39m gc\u001b[38;5;241m.\u001b[39mGymElectricMotorAdapter(env, env_id, controller)\n\u001b[0;32m 93\u001b[0m \u001b[38;5;66;03m# Fit the controllers parameters to the environment\u001b[39;00m\n\u001b[1;32m---> 94\u001b[0m controller\u001b[38;5;241m.\u001b[39mtune(env, env_id, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mtuner_kwargs)\n\u001b[0;32m 96\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m block_diagram:\n\u001b[0;32m 97\u001b[0m controller\u001b[38;5;241m.\u001b[39mbuild_block_diagram(env_id, save_block_diagram_as)\n", |
117 | | - "File \u001b[1;32mc:\\Users\\Valliammai\\PE_proj\\gym-electric-motor\\src\\gem_controllers\\gem_adapter.py:110\u001b[0m, in \u001b[0;36mGymElectricMotorAdapter.tune\u001b[1;34m(self, env, env_id, tune_controller, **kwargs)\u001b[0m\n\u001b[0;32m 108\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_output_stage\u001b[38;5;241m.\u001b[39mtune(env, env_id)\n\u001b[0;32m 109\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m tune_controller:\n\u001b[1;32m--> 110\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_controller\u001b[38;5;241m.\u001b[39mtune(env, env_id, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m 112\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_reference_plotter\u001b[38;5;241m.\u001b[39mtune(\n\u001b[0;32m 113\u001b[0m env,\n\u001b[0;32m 114\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_controller\u001b[38;5;241m.\u001b[39mreferenced_states,\n\u001b[0;32m 115\u001b[0m plot_references\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m,\n\u001b[0;32m 116\u001b[0m maximum_reference\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_controller\u001b[38;5;241m.\u001b[39mmaximum_reference,\n\u001b[0;32m 117\u001b[0m )\n", |
118 | | - "File \u001b[1;32mc:\\Users\\Valliammai\\PE_proj\\gym-electric-motor\\src\\gem_controllers\\torque_controller.py:114\u001b[0m, in \u001b[0;36mTorqueController.tune\u001b[1;34m(self, env, env_id, current_safety_margin, tune_current_controller, **kwargs)\u001b[0m\n\u001b[0;32m 112\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_current_controller\u001b[38;5;241m.\u001b[39mtune(env, env_id, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m 113\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_clipping_stage\u001b[38;5;241m.\u001b[39mtune(env, env_id, margin\u001b[38;5;241m=\u001b[39mcurrent_safety_margin)\n\u001b[1;32m--> 114\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_operation_point_selection\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtune\u001b[49m\u001b[43m(\u001b[49m\u001b[43menv\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43menv_id\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcurrent_safety_margin\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 115\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_referenced_currents \u001b[38;5;241m=\u001b[39m gc\u001b[38;5;241m.\u001b[39mparameter_reader\u001b[38;5;241m.\u001b[39mcurrents[gc\u001b[38;5;241m.\u001b[39mutils\u001b[38;5;241m.\u001b[39mget_motor_type(env_id)]\n\u001b[0;32m 116\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m current, action_range_low, action_range_high \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mzip\u001b[39m(\n\u001b[0;32m 117\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_referenced_currents, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_clipping_stage\u001b[38;5;241m.\u001b[39maction_range[\u001b[38;5;241m0\u001b[39m], \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_clipping_stage\u001b[38;5;241m.\u001b[39maction_range[\u001b[38;5;241m1\u001b[39m]\n\u001b[0;32m 118\u001b[0m ):\n", |
119 | | - "File \u001b[1;32mc:\\Users\\Valliammai\\PE_proj\\gym-electric-motor\\src\\gem_controllers\\stages\\operation_point_selection\\eesm_ops.py:108\u001b[0m, in \u001b[0;36mEESMOperationPointSelection.tune\u001b[1;34m(self, env, env_id, current_safety_margin)\u001b[0m\n\u001b[0;32m 94\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mloss \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mlambda\u001b[39;00m i_d, i_q, i_e: np\u001b[38;5;241m.\u001b[39mabs(i_d) \u001b[38;5;241m*\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mr_s \u001b[38;5;241m+\u001b[39m np\u001b[38;5;241m.\u001b[39mabs(i_q) \u001b[38;5;241m*\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mr_s \u001b[38;5;241m+\u001b[39m np\u001b[38;5;241m.\u001b[39mabs(i_e) \u001b[38;5;241m*\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mr_e\n\u001b[0;32m 96\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpoly \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mlambda\u001b[39;00m i_e, psi, torque: [\n\u001b[0;32m 97\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39ml_d\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m2\u001b[39m \u001b[38;5;241m*\u001b[39m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39ml_d \u001b[38;5;241m-\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39ml_q) \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m \u001b[38;5;241m2\u001b[39m,\n\u001b[0;32m 98\u001b[0m \u001b[38;5;241m2\u001b[39m \u001b[38;5;241m*\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39ml_d\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m2\u001b[39m \u001b[38;5;241m*\u001b[39m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39ml_d \u001b[38;5;241m-\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39ml_q) \u001b[38;5;241m*\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39ml_m \u001b[38;5;241m*\u001b[39m i_e\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 105\u001b[0m ((\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39ml_m \u001b[38;5;241m*\u001b[39m i_e) \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m \u001b[38;5;241m2\u001b[39m \u001b[38;5;241m-\u001b[39m psi\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m2\u001b[39m) \u001b[38;5;241m*\u001b[39m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39ml_m \u001b[38;5;241m*\u001b[39m i_e) \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m \u001b[38;5;241m2\u001b[39m \u001b[38;5;241m+\u001b[39m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39ml_q \u001b[38;5;241m*\u001b[39m torque \u001b[38;5;241m/\u001b[39m (\u001b[38;5;241m3\u001b[39m \u001b[38;5;241m*\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mp)) \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m \u001b[38;5;241m2\u001b[39m,\n\u001b[0;32m 106\u001b[0m ]\n\u001b[1;32m--> 108\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_calculate_luts\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", |
120 | | - "File \u001b[1;32mc:\\Users\\Valliammai\\PE_proj\\gym-electric-motor\\src\\gem_controllers\\stages\\operation_point_selection\\eesm_ops.py:184\u001b[0m, in \u001b[0;36mEESMOperationPointSelection._calculate_luts\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 180\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mi_q_opt \u001b[38;5;241m=\u001b[39m sp_interpolate\u001b[38;5;241m.\u001b[39minterp1d(best_params[:, \u001b[38;5;241m0\u001b[39m], best_params[:, \u001b[38;5;241m3\u001b[39m], kind\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcubic\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 181\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mi_e_opt \u001b[38;5;241m=\u001b[39m sp_interpolate\u001b[38;5;241m.\u001b[39minterp1d(best_params[:, \u001b[38;5;241m0\u001b[39m], best_params[:, \u001b[38;5;241m4\u001b[39m], kind\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcubic\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 183\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mt_grid, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpsi_grid \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mmgrid[\n\u001b[1;32m--> 184\u001b[0m \u001b[38;5;241m0\u001b[39m : \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mt_max : \u001b[43mnp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcomplex\u001b[49m(\u001b[38;5;241m0\u001b[39m, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mt_grid_count), \u001b[38;5;241m0\u001b[39m : \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpsi_max : np\u001b[38;5;241m.\u001b[39mcomplex(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpsi_grid_count)\n\u001b[0;32m 185\u001b[0m ]\n\u001b[0;32m 187\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mi_d_inter \u001b[38;5;241m=\u001b[39m sp_interpolate\u001b[38;5;241m.\u001b[39mgriddata(\n\u001b[0;32m 188\u001b[0m (best_params_psi[:, \u001b[38;5;241m0\u001b[39m], best_params_psi[:, \u001b[38;5;241m1\u001b[39m]),\n\u001b[0;32m 189\u001b[0m best_params_psi[:, \u001b[38;5;241m2\u001b[39m],\n\u001b[0;32m 190\u001b[0m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mt_grid, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpsi_grid),\n\u001b[0;32m 191\u001b[0m method\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mlinear\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m 192\u001b[0m )\n\u001b[0;32m 193\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mi_q_inter \u001b[38;5;241m=\u001b[39m sp_interpolate\u001b[38;5;241m.\u001b[39mgriddata(\n\u001b[0;32m 194\u001b[0m (best_params_psi[:, \u001b[38;5;241m0\u001b[39m], best_params_psi[:, \u001b[38;5;241m1\u001b[39m]),\n\u001b[0;32m 195\u001b[0m best_params_psi[:, \u001b[38;5;241m3\u001b[39m],\n\u001b[0;32m 196\u001b[0m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mt_grid, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpsi_grid),\n\u001b[0;32m 197\u001b[0m method\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mlinear\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m 198\u001b[0m )\n", |
121 | | - "File \u001b[1;32mc:\\Users\\Valliammai\\anaconda3\\envs\\proj\\lib\\site-packages\\numpy\\__init__.py:424\u001b[0m, in \u001b[0;36m__getattr__\u001b[1;34m(attr)\u001b[0m\n\u001b[0;32m 419\u001b[0m warnings\u001b[38;5;241m.\u001b[39mwarn(\n\u001b[0;32m 420\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mIn the future `np.\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mattr\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m` will be defined as the \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 421\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcorresponding NumPy scalar.\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;167;01mFutureWarning\u001b[39;00m, stacklevel\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m2\u001b[39m)\n\u001b[0;32m 423\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m attr \u001b[38;5;129;01min\u001b[39;00m __former_attrs__:\n\u001b[1;32m--> 424\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mAttributeError\u001b[39;00m(__former_attrs__[attr])\n\u001b[0;32m 426\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m attr \u001b[38;5;129;01min\u001b[39;00m __expired_attributes__:\n\u001b[0;32m 427\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mAttributeError\u001b[39;00m(\n\u001b[0;32m 428\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m`np.\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mattr\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m` was removed in the NumPy 2.0 release. \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 429\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m__expired_attributes__[attr]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 430\u001b[0m )\n", |
122 | | - "\u001b[1;31mAttributeError\u001b[0m: module 'numpy' has no attribute 'complex'.\n`np.complex` was a deprecated alias for the builtin `complex`. To avoid this error in existing code, use `complex` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.complex128` here.\nThe aliases was originally deprecated in NumPy 1.20; for more details and guidance see the original release note at:\n https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations" |
| 114 | + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", |
| 115 | + "Cell \u001b[1;32mIn[4], line 18\u001b[0m\n\u001b[0;32m 15\u001b[0m physical_system_wrappers \u001b[38;5;241m=\u001b[39m (FluxObserver(),) \u001b[38;5;28;01mif\u001b[39;00m motor_type \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mSCIM\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m ()\n\u001b[0;32m 17\u001b[0m \u001b[38;5;66;03m# Initilize the environment\u001b[39;00m\n\u001b[1;32m---> 18\u001b[0m env \u001b[38;5;241m=\u001b[39m \u001b[43mgem\u001b[49m\u001b[38;5;241m.\u001b[39mmake(env_id, physical_system_wrappers\u001b[38;5;241m=\u001b[39mphysical_system_wrappers)\n\u001b[0;32m 20\u001b[0m \u001b[38;5;66;03m# Initialize the controller\u001b[39;00m\n\u001b[0;32m 21\u001b[0m c \u001b[38;5;241m=\u001b[39m gc\u001b[38;5;241m.\u001b[39mGemController\u001b[38;5;241m.\u001b[39mmake(\n\u001b[0;32m 22\u001b[0m env,\n\u001b[0;32m 23\u001b[0m env_id,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 27\u001b[0m \u001b[38;5;66;03m# save_block_diagram_as=(),\u001b[39;00m\n\u001b[0;32m 28\u001b[0m )\n", |
| 116 | + "\u001b[1;31mNameError\u001b[0m: name 'gem' is not defined" |
123 | 117 | ] |
124 | 118 | } |
125 | 119 | ], |
|
0 commit comments