├── README.md ├── RPInstall.mlx ├── Robotics Playground.mltbx ├── doc ├── GettingStarted.mlx └── html │ ├── 360_sensor.htm │ ├── 360_sensor_files │ ├── colorschememapping.xml │ ├── filelist.xml │ ├── image001.png │ └── themedata.thmx │ ├── Blocks.html │ ├── Environments.html │ ├── GettingStarted.html │ ├── MATLAB_robot.htm │ ├── MATLAB_robot_files │ ├── colorschememapping.xml │ ├── filelist.xml │ ├── image001.png │ ├── image002.jpg │ └── themedata.thmx │ ├── Robotics_Playground_Toolbox.htm │ ├── Robotics_Playground_Toolbox_files │ ├── image001.jpg │ ├── image002.jpg │ └── image003.jpg │ ├── Sensors.html │ ├── SimulinkExamples.html │ ├── SimulinkExamplesImages │ ├── autonomy_model.PNG │ ├── gamepad_model.PNG │ ├── object_model.PNG │ ├── obstacle_model.PNG │ └── sumo_model.PNG │ ├── compass_sensor.htm │ ├── compass_sensor_files │ ├── colorschememapping.xml │ ├── filelist.xml │ ├── image001.png │ ├── image002.png │ ├── image003.jpg │ └── themedata.thmx │ ├── contact_switch.htm │ ├── contact_switch_files │ ├── colorschememapping.xml │ ├── filelist.xml │ ├── image001.png │ ├── image002.png │ ├── image003.jpg │ └── themedata.thmx │ ├── distance_sensor.htm │ ├── distance_sensor_files │ ├── colorschememapping.xml │ ├── filelist.xml │ ├── image001.png │ ├── image002.png │ ├── image003.jpg │ └── themedata.thmx │ ├── encoder_sensor.htm │ ├── encoder_sensor_files │ ├── colorschememapping.xml │ ├── filelist.xml │ ├── image001.png │ └── themedata.thmx │ ├── gyro_sensor.htm │ ├── gyro_sensor_files │ ├── colorschememapping.xml │ ├── filelist.xml │ ├── image001.png │ └── themedata.thmx │ ├── helpsearch-v3 │ ├── _0.cfe │ ├── _0.cfs │ ├── _0.si │ ├── segments.gen │ └── segments_1 │ ├── helptoc.xml │ ├── mlrobot_doc.html │ ├── mlrobotreadcompassangle_doc.html │ ├── mlrobotreadwheelspeed_doc.html │ ├── mlrobotsetmotorvoltage_doc.html │ ├── mlrobotstart_doc.html │ ├── mlrobotstop_doc.html │ ├── motor.htm │ ├── motor_files │ ├── colorschememapping.xml │ ├── filelist.xml │ ├── image001.png │ └── themedata.thmx │ ├── object_arena.htm │ ├── object_arena_files │ ├── colorschememapping.xml │ ├── filelist.xml │ ├── image001.png │ ├── image002.jpg │ ├── image003.png │ ├── image004.jpg │ ├── image005.png │ ├── image006.jpg │ ├── image007.png │ ├── image008.jpg │ ├── image009.png │ ├── image010.jpg │ ├── image011.png │ ├── image012.jpg │ └── themedata.thmx │ ├── object_sensor.htm │ ├── object_sensor_files │ ├── colorschememapping.xml │ ├── filelist.xml │ ├── image001.png │ ├── image002.png │ ├── image003.jpg │ ├── image004.png │ ├── image005.jpg │ └── themedata.thmx │ ├── obstacle_arena.htm │ ├── obstacle_arena_files │ ├── colorschememapping.xml │ ├── filelist.xml │ ├── image001.png │ ├── image002.jpg │ ├── image003.png │ ├── image004.jpg │ ├── image005.png │ ├── image006.jpg │ ├── image007.png │ ├── image008.jpg │ ├── image009.png │ ├── image010.jpg │ ├── image011.png │ ├── image012.jpg │ ├── image013.png │ ├── image014.jpg │ └── themedata.thmx │ ├── pick_color.htm │ ├── pick_color_files │ ├── colorschememapping.xml │ ├── filelist.xml │ ├── image001.png │ ├── image002.png │ ├── image003.jpg │ ├── image004.png │ └── themedata.thmx │ ├── sumo_game.htm │ └── sumo_game_files │ ├── colorschememapping.xml │ ├── filelist.xml │ ├── image001.png │ ├── image002.jpg │ ├── image003.png │ ├── image004.jpg │ ├── image005.png │ ├── image006.jpg │ ├── image007.png │ ├── image008.jpg │ └── themedata.thmx ├── examples ├── BESTRobotics │ ├── 2020Outbreak │ │ ├── BEST2020_autonomous_template.slx │ │ ├── BEST2020_gamepad_template.slx │ │ ├── BEST2020_keyboard_template.slx │ │ └── FieldConfigs │ │ │ ├── BEST2020GameConfig1.m │ │ │ ├── BEST2020GameConfig2.m │ │ │ ├── BEST2020GameConfig3.m │ │ │ └── BEST2020GameConfigRand.m │ └── 2021DemoDaze │ │ ├── BEST2021_autonomous_template.slx │ │ ├── BEST2021_gamepad_template.slx │ │ ├── BEST2021_keyboard_template.slx │ │ ├── CAD │ │ ├── BRIbox.step │ │ ├── BRItower.step │ │ ├── Part 1.step │ │ ├── Part 2.step │ │ ├── Pentagon.step │ │ ├── cup.step │ │ ├── cylinder.step │ │ ├── mount.step │ │ ├── pole mount.step │ │ ├── tree.step │ │ └── triangle.step │ │ └── FieldConfigs │ │ ├── BEST2021GameConfigP1.m │ │ ├── BEST2021GameConfigP2.m │ │ └── BEST2021GameConfigP3.m ├── lessons │ ├── Intro to VEX and Student Resources │ │ └── Intro to VEX and Student Resources.pdf │ ├── Unit 1 Intro to MATLAB │ │ ├── Exercises │ │ │ ├── calcHypot.m │ │ │ ├── hypotenuse_solution.m │ │ │ └── myFirstScript_solution.m │ │ └── Intro to MATLAB.pdf │ ├── Unit 2 Basic Robot Movements │ │ ├── Basic Robot Movements.pdf │ │ └── Exercises │ │ │ ├── MoveForwardAndBack_solution.m │ │ │ ├── MoveForwardAndBack_start.m │ │ │ ├── MoveForward_solution.m │ │ │ ├── MoveForward_start.m │ │ │ ├── PlotOrientation_solution.m │ │ │ └── PlotOrientation_start.m │ ├── Unit 3 Intro to Simulink │ │ ├── Exercises │ │ │ ├── Hypotenuse_simplified.slx │ │ │ ├── Hypotenuse_solution.slx │ │ │ ├── Hypotenuse_start.slx │ │ │ ├── Hypotenuse_subsystem.slx │ │ │ └── timeBasedSources.slx │ │ └── Intro to Simulink.pdf │ ├── Unit 4 Robot Controls │ │ ├── Exercises │ │ │ ├── ArcadeControl_solution.slx │ │ │ ├── ArcadeControl_start.slx │ │ │ ├── MoveForward_solution.slx │ │ │ ├── MoveForward_start.slx │ │ │ ├── TankControl_solution.slx │ │ │ └── TankControl_start.slx │ │ └── Robot Controls.pdf │ ├── Unit 5 Using a Distance Sensor │ │ ├── Exercises │ │ │ ├── AvoidWall_solution.slx │ │ │ ├── AvoidWall_start.slx │ │ │ ├── TrackWall_solution.slx │ │ │ └── TrackWall_start.slx │ │ └── Using a Distance Sensor.pdf │ ├── Unit 6 Using MATLAB Functions │ │ ├── Exercises │ │ │ ├── MATLAB_Fcn_solution.slx │ │ │ └── MATLAB_Fcn_start.slx │ │ └── Using MATLAB Functions.pdf │ ├── Unit 7 Intro to Stateflow │ │ ├── Exercises │ │ │ ├── navigateObstacle_SF_solution.slx │ │ │ ├── navigateObstacle_SF_start.slx │ │ │ ├── trackWall_SF_solution.slx │ │ │ └── trackWall_SF_start.slx │ │ └── Intro to Stateflow.pdf │ ├── Unit 8 Maze Solving Robot │ │ ├── Exercises │ │ │ ├── MazeRobot_solution.slx │ │ │ └── MazeRobot_start.slx │ │ └── Maze Solving Robot.pdf │ └── Unit 9 Clawbot Pick and Place │ │ ├── Exercises │ │ ├── RP_Clawbot_Lesson1.slx │ │ ├── RP_Clawbot_Lesson2_Start.slx │ │ └── RP_Clawbot_Lesson3_Start.slx │ │ └── Solutions │ │ ├── RP_Clawbot_Lesson2_Solution.slx │ │ └── RP_Clawbot_Lesson3_Solution.slx ├── models │ ├── ClawbotSim_CAD │ │ ├── V5 Clawbot Drive Base Simple NoWheel.stl │ │ ├── V5 Clawbot Lower arm subassembly Simple.stl │ │ ├── V5 Clawbot Upper arm subassembly Simple.stl │ │ ├── Wheel Assembly (2).stl │ │ ├── claw │ │ │ ├── Claw mount.stl │ │ │ ├── Left Pivot.stl │ │ │ ├── Left Gear.stl │ │ │ ├── Left Pincher.stl │ │ │ ├── right gear.stl │ │ │ ├── right pincher.stl │ │ │ └── right pivot.stl │ │ └── rear-wheel-276-6298-000 Rev1.stl │ ├── ClawbotSim_Icons │ │ ├── Arm and Claw.PNG │ │ ├── CameraIcon.PNG │ │ ├── Claw Mount.PNG │ │ ├── Clawbot Simscape.PNG │ │ ├── Environment Simscape.PNG │ │ ├── Front Wheel.PNG │ │ ├── Higher Arm.PNG │ │ ├── Lower Arm.PNG │ │ ├── Pincher.PNG │ │ ├── Rear Wheel.PNG │ │ ├── Simscape Environment.PNG │ │ ├── Vehicle Base.PNG │ │ └── batteryVex.jpg │ ├── RP_1_Lesson_Plan_Self_Paced.slx │ ├── RP_Autonomous_Maze_Solver_Stateflow.slx │ ├── RP_Autonomous_Move_Signal_Builder.slx │ ├── RP_ClawbotSim_Battery_Motor.slx │ ├── RP_ClawbotSim_auto.slx │ ├── RP_ClawbotSim_perception.slx │ ├── RP_ClawbotSim_teleop.slx │ ├── RP_Keyboard_Control.slx │ ├── RP_MATLAB_Disc_robot.slx │ ├── RP_Object_Detector.slx │ ├── RP_Object_Environment_Dashboard.slx │ ├── RP_Object_Environment_Gamepad.slx │ ├── RP_Obstacle_Environment_Dashboard.slx │ ├── RP_Obstacle_Environment_Gamepad.slx │ ├── RP_Obstacle_Environment_Signal_Builder.slx │ ├── RP_Sumo_Dashboard.slx │ ├── RP_Sumo_Gamepads.slx │ ├── RP_VEX_V5_Gamepad_Control.slx │ ├── SimulinkExamples.mlx │ └── html │ │ └── SimulinkExamples.html └── scripts │ ├── html │ └── mlrobot_getting_started.html │ └── mlrobot_getting_started.m └── lib ├── BEST Robotics DemoDaze.mlappinstall ├── Resources ├── CFL_Libs │ ├── Libraries │ │ ├── Contact_Forces_Lib.slx │ │ ├── Images │ │ │ ├── BoxB_Corners_IMAGE.jpg │ │ │ ├── BoxF_Corners_IMAGE.jpg │ │ │ ├── Box_to_Belt_Contact_IMAGE.jpg │ │ │ ├── Box_to_Belt_Ends_IMAGE.jpg │ │ │ ├── Box_to_Belt_Faces_IMAGE.jpg │ │ │ ├── Box_to_Box_Contact_IMAGE.jpg │ │ │ ├── Circle_to_Circle_Contact_Enabled_IMAGE.jpg │ │ │ ├── Circle_to_Circle_Contact_IMAGE.jpg │ │ │ ├── Circle_to_Finite_Line_Contact_Enabled_IMAGE.jpg │ │ │ ├── Circle_to_Finite_Line_Contact_IMAGE.jpg │ │ │ ├── Circle_to_Hole_Attraction_IMAGE.jpg │ │ │ ├── Circle_to_Ring_Contact_IMAGE.jpg │ │ │ ├── Face_to_Belt_Faces_IMAGE.jpg │ │ │ ├── Face_to_Plane_Contact_IMAGE.jpg │ │ │ ├── Sphere_in_Sphere_Contact_IMAGE.jpg │ │ │ ├── Sphere_to_Cone_Contact_IMAGE.jpg │ │ │ ├── Sphere_to_Plane_Contact_Enabled_IMAGE.jpg │ │ │ ├── Sphere_to_Plane_Contact_IMAGE.jpg │ │ │ ├── Sphere_to_Sphere_Contact_IMAGE.jpg │ │ │ └── Sphere_to_Tube_Contact_IMAGE.jpg │ │ ├── Parts_Lib.slx │ │ └── slblocks.m │ ├── README.txt │ ├── Scripts_Data │ │ ├── CFL_friction_setModel.m │ │ ├── CFL_visual_setOnOff.m │ │ ├── CheckAnim.m │ │ └── Extrusions │ │ │ ├── Extr_Data_Box.m │ │ │ ├── Extr_Data_Cam_Circles.m │ │ │ ├── Extr_Data_Ellipse.m │ │ │ ├── Extr_Data_Frustum_Conical.m │ │ │ ├── Extr_Data_LinkHoles.m │ │ │ └── Extr_Data_Ring.m │ └── startup_Contact_Forces.m ├── Images │ ├── BEST2020Arena.png │ ├── BEST2020Cells.png │ ├── BEST2020Environment.png │ ├── BEST2020Robot.png │ ├── BEST2020Vaccines.png │ ├── BEST2021arena.png │ ├── BEST2021environment.png │ ├── BEST2021lightpoles.png │ ├── BEST2021objects.png │ ├── BESTRobotics_Usage_Logo.jpg │ ├── BlueObjD.png │ ├── ClawbotIcon.png │ ├── Compass.png │ ├── CompassVisual.PNG │ ├── ContactSwitch.png │ ├── DashboardControls.PNG │ ├── Gamepad_Controller.png │ ├── GlobeMotor.png │ ├── GreenObjD.png │ ├── Gyroscope.png │ ├── KeyboardIcon.PNG │ ├── Lidar.png │ ├── MLRobot.PNG │ ├── ObjectArena.PNG │ ├── ObjectDetector.png │ ├── ObjectDetectorVisual.PNG │ ├── ObjectEnv.PNG │ ├── ObstacleArena.PNG │ ├── ObstacleEnv.PNG │ ├── PlaygroundImage.PNG │ ├── RP_app.PNG │ ├── RP_icon.PNG │ ├── RedObjD.png │ ├── SumoArena.PNG │ ├── SumoGame.PNG │ ├── SwitchVisual.PNG │ ├── USVisual.PNG │ ├── advanced_sensors_lib.PNG │ ├── arcadeModule.png │ ├── contactDiscDisc.PNG │ ├── discRobot.PNG │ ├── encoder.jpg │ ├── environments_lib.PNG │ ├── lamps.png │ ├── latchGraph.png │ ├── objectContact.PNG │ ├── objectWallContact.PNG │ ├── obstacle-environment.png │ ├── obstacle-tower.png │ ├── obstacle-tree.png │ ├── obstacleContactDisc.PNG │ ├── plowRobot.PNG │ ├── sensors_lib.PNG │ ├── ultrasonic_sensor.jpg │ ├── vexv5GamepadSimInput.PNG │ ├── vexv5GamepadSimInput2.PNG │ └── wallContactDisc.PNG ├── RP_Simulator_Components.slx ├── Utils │ ├── Extr_Data_Mesh.m │ ├── LidarSensorRP.m │ ├── ObjectDetectorRP.m │ ├── PlaygroundCreateSimMap.m │ ├── RPInit.m │ ├── addSensors.m │ ├── bestrobotics.m │ ├── commentObstacles.m │ ├── createMapFromName.m │ ├── disableObstacles.m │ ├── mlrobot_src │ │ ├── mlrobot.m │ │ ├── mlrobotreadcompassangle.m │ │ ├── mlrobotreadwheelspeed.m │ │ ├── mlrobotsetmotorvoltage.m │ │ ├── mlrobotstart.m │ │ └── mlrobotstop.m │ ├── motorCheck.m │ ├── roboticsplayground.m │ ├── setObjects.m │ └── setObstaclesUI.m └── Winner.stl ├── Robotics Playground App.mlappinstall ├── RoboticsPlayground.slx ├── RoboticsPlaygroundInstall.m └── slblocks.m /README.md: -------------------------------------------------------------------------------- 1 | # Robotics Playground [![View Robotics Playground on File Exchange](https://www.mathworks.com/matlabcentral/images/matlab-file-exchange.svg)](https://www.mathworks.com/matlabcentral/fileexchange/67157-robotics-playground) [![Open in MATLAB Online](https://www.mathworks.com/images/responsive/global/open-in-matlab-online.svg)](https://matlab.mathworks.com/open/github/v1?repo=mathworks-robotics/robotics-playground&file=RPInstall.mlx) 2 | 3 | 4 | Copyright 2019 The MathWorks, Inc. 5 | # Description 6 | MATLAB and Simulink library of virtual environments designed to aid in the teaching of basic concepts in robotics such as driver control, autonomy programming, obstacle avoidance and object interactions. 7 | 8 | https://www.mathworks.com/videos/matlab-and-simulink-pass-competitions-hub-getting-started-with-robotics-playground-virtual-worlds-1533569380647.html 9 | 10 | ![RP Robot](https://github.com/mathworks-robotics/robotics-playground/blob/master/lib/Resources/Images/RP_app.PNG) 11 | 12 | ![Sumo Game](https://github.com/mathworks-robotics/robotics-playground/blob/master/lib/Resources/Images/SumoGame.PNG) 13 | 14 | ![Obstacle Environment](https://github.com/mathworks-robotics/robotics-playground/blob/master/lib/Resources/Images/ObstacleEnv.PNG) 15 | 16 | ![Object Environment](https://github.com/mathworks-robotics/robotics-playground/blob/master/lib/Resources/Images/environments_lib.PNG) 17 | 18 | ![Clawbot Environment](https://github.com/mathworks-robotics/robotics-playground/blob/master/lib/Resources/Images/ClawbotIcon.png) 19 | -------------------------------------------------------------------------------- /RPInstall.mlx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/RPInstall.mlx -------------------------------------------------------------------------------- /Robotics Playground.mltbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/Robotics Playground.mltbx -------------------------------------------------------------------------------- /doc/GettingStarted.mlx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/GettingStarted.mlx -------------------------------------------------------------------------------- /doc/html/360_sensor.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/360_sensor.htm -------------------------------------------------------------------------------- /doc/html/360_sensor_files/colorschememapping.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /doc/html/360_sensor_files/filelist.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /doc/html/360_sensor_files/image001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/360_sensor_files/image001.png -------------------------------------------------------------------------------- /doc/html/360_sensor_files/themedata.thmx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/360_sensor_files/themedata.thmx -------------------------------------------------------------------------------- /doc/html/Blocks.html: -------------------------------------------------------------------------------- 1 | 2 | Robotics Playground Block Reference

-------------------------------------------------------------------------------- /doc/html/Environments.html: -------------------------------------------------------------------------------- 1 | 2 | Robotics Playground Environments

Robotics Playground Environments

Environments

-------------------------------------------------------------------------------- /doc/html/MATLAB_robot.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/MATLAB_robot.htm -------------------------------------------------------------------------------- /doc/html/MATLAB_robot_files/colorschememapping.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /doc/html/MATLAB_robot_files/filelist.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /doc/html/MATLAB_robot_files/image001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/MATLAB_robot_files/image001.png -------------------------------------------------------------------------------- /doc/html/MATLAB_robot_files/image002.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/MATLAB_robot_files/image002.jpg -------------------------------------------------------------------------------- /doc/html/MATLAB_robot_files/themedata.thmx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/MATLAB_robot_files/themedata.thmx -------------------------------------------------------------------------------- /doc/html/Robotics_Playground_Toolbox.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 42 | 43 | 44 | 45 | 46 | 47 |
48 | 49 |

Robotics Playground Toolbox

51 | 52 |

57 | 58 |

 

59 | 60 |

This toolbox provides a collection of virtual environments 61 | for robotics education created using Simulink products.

62 | 63 |

Here 64 | is a link

65 | 66 |
67 | 68 | 69 | 70 | 71 | -------------------------------------------------------------------------------- /doc/html/Robotics_Playground_Toolbox_files/image001.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/Robotics_Playground_Toolbox_files/image001.jpg -------------------------------------------------------------------------------- /doc/html/Robotics_Playground_Toolbox_files/image002.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/Robotics_Playground_Toolbox_files/image002.jpg -------------------------------------------------------------------------------- /doc/html/Robotics_Playground_Toolbox_files/image003.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/Robotics_Playground_Toolbox_files/image003.jpg -------------------------------------------------------------------------------- /doc/html/Sensors.html: -------------------------------------------------------------------------------- 1 | 2 | Robotics Playground Sensors
-------------------------------------------------------------------------------- /doc/html/SimulinkExamplesImages/autonomy_model.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/SimulinkExamplesImages/autonomy_model.PNG -------------------------------------------------------------------------------- /doc/html/SimulinkExamplesImages/gamepad_model.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/SimulinkExamplesImages/gamepad_model.PNG -------------------------------------------------------------------------------- /doc/html/SimulinkExamplesImages/object_model.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/SimulinkExamplesImages/object_model.PNG -------------------------------------------------------------------------------- /doc/html/SimulinkExamplesImages/obstacle_model.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/SimulinkExamplesImages/obstacle_model.PNG -------------------------------------------------------------------------------- /doc/html/SimulinkExamplesImages/sumo_model.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/SimulinkExamplesImages/sumo_model.PNG -------------------------------------------------------------------------------- /doc/html/compass_sensor.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/compass_sensor.htm -------------------------------------------------------------------------------- /doc/html/compass_sensor_files/colorschememapping.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /doc/html/compass_sensor_files/filelist.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /doc/html/compass_sensor_files/image001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/compass_sensor_files/image001.png -------------------------------------------------------------------------------- /doc/html/compass_sensor_files/image002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/compass_sensor_files/image002.png -------------------------------------------------------------------------------- /doc/html/compass_sensor_files/image003.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/compass_sensor_files/image003.jpg -------------------------------------------------------------------------------- /doc/html/compass_sensor_files/themedata.thmx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/compass_sensor_files/themedata.thmx -------------------------------------------------------------------------------- /doc/html/contact_switch.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/contact_switch.htm -------------------------------------------------------------------------------- /doc/html/contact_switch_files/colorschememapping.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /doc/html/contact_switch_files/filelist.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /doc/html/contact_switch_files/image001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/contact_switch_files/image001.png -------------------------------------------------------------------------------- /doc/html/contact_switch_files/image002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/contact_switch_files/image002.png -------------------------------------------------------------------------------- /doc/html/contact_switch_files/image003.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/contact_switch_files/image003.jpg -------------------------------------------------------------------------------- /doc/html/contact_switch_files/themedata.thmx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/contact_switch_files/themedata.thmx -------------------------------------------------------------------------------- /doc/html/distance_sensor.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/distance_sensor.htm -------------------------------------------------------------------------------- /doc/html/distance_sensor_files/colorschememapping.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /doc/html/distance_sensor_files/filelist.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /doc/html/distance_sensor_files/image001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/distance_sensor_files/image001.png -------------------------------------------------------------------------------- /doc/html/distance_sensor_files/image002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/distance_sensor_files/image002.png -------------------------------------------------------------------------------- /doc/html/distance_sensor_files/image003.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/distance_sensor_files/image003.jpg -------------------------------------------------------------------------------- /doc/html/distance_sensor_files/themedata.thmx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/distance_sensor_files/themedata.thmx -------------------------------------------------------------------------------- /doc/html/encoder_sensor.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/encoder_sensor.htm -------------------------------------------------------------------------------- /doc/html/encoder_sensor_files/colorschememapping.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /doc/html/encoder_sensor_files/filelist.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /doc/html/encoder_sensor_files/image001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/encoder_sensor_files/image001.png -------------------------------------------------------------------------------- /doc/html/encoder_sensor_files/themedata.thmx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/encoder_sensor_files/themedata.thmx -------------------------------------------------------------------------------- /doc/html/gyro_sensor.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/gyro_sensor.htm -------------------------------------------------------------------------------- /doc/html/gyro_sensor_files/colorschememapping.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /doc/html/gyro_sensor_files/filelist.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /doc/html/gyro_sensor_files/image001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/gyro_sensor_files/image001.png -------------------------------------------------------------------------------- /doc/html/gyro_sensor_files/themedata.thmx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/gyro_sensor_files/themedata.thmx -------------------------------------------------------------------------------- /doc/html/helpsearch-v3/_0.cfe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/helpsearch-v3/_0.cfe -------------------------------------------------------------------------------- /doc/html/helpsearch-v3/_0.cfs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/helpsearch-v3/_0.cfs -------------------------------------------------------------------------------- /doc/html/helpsearch-v3/_0.si: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/helpsearch-v3/_0.si -------------------------------------------------------------------------------- /doc/html/helpsearch-v3/segments.gen: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/helpsearch-v3/segments.gen -------------------------------------------------------------------------------- /doc/html/helpsearch-v3/segments_1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/helpsearch-v3/segments_1 -------------------------------------------------------------------------------- /doc/html/helptoc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Robotics Playground Toolbox 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | Block Reference 20 | 21 | Environments 22 | 23 | Obstacle Environment 24 | Object Environment 25 | Sumo Game 26 | MATLAB Disc Robot 27 | 28 | 29 | 30 | Sensors 31 | 32 | Robot Motor 33 | Encoder 34 | Distance Sensor 35 | Gyro Sensor 36 | Compass Sensor 37 | Contact Switch 38 | 360 Range Sensor 39 | Object Sensor 40 | 41 | 42 | 43 | 44 | 45 | Function Reference (MATLAB Robot API) 47 | 48 | 49 | mlrobot 50 | mlrobotstart 51 | mlrobotstop 52 | mlrobotsetmotorvoltage 53 | mlrobotreadwheelspeed 54 | mlrobotreadcompassangle 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /doc/html/motor.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/motor.htm -------------------------------------------------------------------------------- /doc/html/motor_files/colorschememapping.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /doc/html/motor_files/filelist.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /doc/html/motor_files/image001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/motor_files/image001.png -------------------------------------------------------------------------------- /doc/html/motor_files/themedata.thmx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/motor_files/themedata.thmx -------------------------------------------------------------------------------- /doc/html/object_arena.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/object_arena.htm -------------------------------------------------------------------------------- /doc/html/object_arena_files/colorschememapping.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /doc/html/object_arena_files/filelist.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /doc/html/object_arena_files/image001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/object_arena_files/image001.png -------------------------------------------------------------------------------- /doc/html/object_arena_files/image002.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/object_arena_files/image002.jpg -------------------------------------------------------------------------------- /doc/html/object_arena_files/image003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/object_arena_files/image003.png -------------------------------------------------------------------------------- /doc/html/object_arena_files/image004.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/object_arena_files/image004.jpg -------------------------------------------------------------------------------- /doc/html/object_arena_files/image005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/object_arena_files/image005.png -------------------------------------------------------------------------------- /doc/html/object_arena_files/image006.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/object_arena_files/image006.jpg -------------------------------------------------------------------------------- /doc/html/object_arena_files/image007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/object_arena_files/image007.png -------------------------------------------------------------------------------- /doc/html/object_arena_files/image008.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/object_arena_files/image008.jpg -------------------------------------------------------------------------------- /doc/html/object_arena_files/image009.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/object_arena_files/image009.png -------------------------------------------------------------------------------- /doc/html/object_arena_files/image010.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/object_arena_files/image010.jpg -------------------------------------------------------------------------------- /doc/html/object_arena_files/image011.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/object_arena_files/image011.png -------------------------------------------------------------------------------- /doc/html/object_arena_files/image012.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/object_arena_files/image012.jpg -------------------------------------------------------------------------------- /doc/html/object_arena_files/themedata.thmx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/object_arena_files/themedata.thmx -------------------------------------------------------------------------------- /doc/html/object_sensor.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/object_sensor.htm -------------------------------------------------------------------------------- /doc/html/object_sensor_files/colorschememapping.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /doc/html/object_sensor_files/filelist.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /doc/html/object_sensor_files/image001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/object_sensor_files/image001.png -------------------------------------------------------------------------------- /doc/html/object_sensor_files/image002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/object_sensor_files/image002.png -------------------------------------------------------------------------------- /doc/html/object_sensor_files/image003.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/object_sensor_files/image003.jpg -------------------------------------------------------------------------------- /doc/html/object_sensor_files/image004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/object_sensor_files/image004.png -------------------------------------------------------------------------------- /doc/html/object_sensor_files/image005.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/object_sensor_files/image005.jpg -------------------------------------------------------------------------------- /doc/html/object_sensor_files/themedata.thmx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/object_sensor_files/themedata.thmx -------------------------------------------------------------------------------- /doc/html/obstacle_arena.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/obstacle_arena.htm -------------------------------------------------------------------------------- /doc/html/obstacle_arena_files/colorschememapping.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /doc/html/obstacle_arena_files/filelist.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /doc/html/obstacle_arena_files/image001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/obstacle_arena_files/image001.png -------------------------------------------------------------------------------- /doc/html/obstacle_arena_files/image002.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/obstacle_arena_files/image002.jpg -------------------------------------------------------------------------------- /doc/html/obstacle_arena_files/image003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/obstacle_arena_files/image003.png -------------------------------------------------------------------------------- /doc/html/obstacle_arena_files/image004.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/obstacle_arena_files/image004.jpg -------------------------------------------------------------------------------- /doc/html/obstacle_arena_files/image005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/obstacle_arena_files/image005.png -------------------------------------------------------------------------------- /doc/html/obstacle_arena_files/image006.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/obstacle_arena_files/image006.jpg -------------------------------------------------------------------------------- /doc/html/obstacle_arena_files/image007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/obstacle_arena_files/image007.png -------------------------------------------------------------------------------- /doc/html/obstacle_arena_files/image008.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/obstacle_arena_files/image008.jpg -------------------------------------------------------------------------------- /doc/html/obstacle_arena_files/image009.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/obstacle_arena_files/image009.png -------------------------------------------------------------------------------- /doc/html/obstacle_arena_files/image010.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/obstacle_arena_files/image010.jpg -------------------------------------------------------------------------------- /doc/html/obstacle_arena_files/image011.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/obstacle_arena_files/image011.png -------------------------------------------------------------------------------- /doc/html/obstacle_arena_files/image012.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/obstacle_arena_files/image012.jpg -------------------------------------------------------------------------------- /doc/html/obstacle_arena_files/image013.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/obstacle_arena_files/image013.png -------------------------------------------------------------------------------- /doc/html/obstacle_arena_files/image014.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/obstacle_arena_files/image014.jpg -------------------------------------------------------------------------------- /doc/html/obstacle_arena_files/themedata.thmx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/obstacle_arena_files/themedata.thmx -------------------------------------------------------------------------------- /doc/html/pick_color.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/pick_color.htm -------------------------------------------------------------------------------- /doc/html/pick_color_files/colorschememapping.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /doc/html/pick_color_files/filelist.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /doc/html/pick_color_files/image001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/pick_color_files/image001.png -------------------------------------------------------------------------------- /doc/html/pick_color_files/image002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/pick_color_files/image002.png -------------------------------------------------------------------------------- /doc/html/pick_color_files/image003.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/pick_color_files/image003.jpg -------------------------------------------------------------------------------- /doc/html/pick_color_files/image004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/pick_color_files/image004.png -------------------------------------------------------------------------------- /doc/html/pick_color_files/themedata.thmx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/pick_color_files/themedata.thmx -------------------------------------------------------------------------------- /doc/html/sumo_game.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/sumo_game.htm -------------------------------------------------------------------------------- /doc/html/sumo_game_files/colorschememapping.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /doc/html/sumo_game_files/filelist.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /doc/html/sumo_game_files/image001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/sumo_game_files/image001.png -------------------------------------------------------------------------------- /doc/html/sumo_game_files/image002.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/sumo_game_files/image002.jpg -------------------------------------------------------------------------------- /doc/html/sumo_game_files/image003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/sumo_game_files/image003.png -------------------------------------------------------------------------------- /doc/html/sumo_game_files/image004.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/sumo_game_files/image004.jpg -------------------------------------------------------------------------------- /doc/html/sumo_game_files/image005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/sumo_game_files/image005.png -------------------------------------------------------------------------------- /doc/html/sumo_game_files/image006.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/sumo_game_files/image006.jpg -------------------------------------------------------------------------------- /doc/html/sumo_game_files/image007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/sumo_game_files/image007.png -------------------------------------------------------------------------------- /doc/html/sumo_game_files/image008.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/sumo_game_files/image008.jpg -------------------------------------------------------------------------------- /doc/html/sumo_game_files/themedata.thmx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/doc/html/sumo_game_files/themedata.thmx -------------------------------------------------------------------------------- /examples/BESTRobotics/2020Outbreak/BEST2020_autonomous_template.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/BESTRobotics/2020Outbreak/BEST2020_autonomous_template.slx -------------------------------------------------------------------------------- /examples/BESTRobotics/2020Outbreak/BEST2020_gamepad_template.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/BESTRobotics/2020Outbreak/BEST2020_gamepad_template.slx -------------------------------------------------------------------------------- /examples/BESTRobotics/2020Outbreak/BEST2020_keyboard_template.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/BESTRobotics/2020Outbreak/BEST2020_keyboard_template.slx -------------------------------------------------------------------------------- /examples/BESTRobotics/2020Outbreak/FieldConfigs/BEST2020GameConfig1.m: -------------------------------------------------------------------------------- 1 | % Position of cells [x y] in meters from the center of the field 2 | cellPose=[0.920 1.265;... 3 | 1.035 1.265;... 4 | 0.805 1.265;... 5 | 0.920 0.920;... 6 | 1.035 0.920;... 7 | 0.805 0.920;... 8 | 1.035 0.460;... 9 | 0.920 0.345;... 10 | 0.805 0.345;... 11 | 0.575 0.115;... 12 | 0.460 0.000;... 13 | 0.345 0.115;... 14 | 0.805 -0.575;... 15 | 1.035 -0.460;... 16 | 0.920 -0.575;... 17 | 0.920 -0.805;... 18 | 0.805 -0.805;... 19 | 1.035 -0.920;... 20 | 1.265 -1.495;... 21 | 1.380 -1.265;... 22 | 1.495 -1.495]; 23 | 24 | cellLevel=[0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 ]; 25 | cellTypeArray=[1 2 0 0 0 1 0 1 0 0 0 0 0 2 1 2 0 1 1 0 0 ]; 26 | isoPoses=[0.91 0;-0.91/2 0.91;-0.91/2 -0.91]; 27 | platformPoses=[0.91 0.91;1.37 -1.37]; 28 | -------------------------------------------------------------------------------- /examples/BESTRobotics/2020Outbreak/FieldConfigs/BEST2020GameConfig2.m: -------------------------------------------------------------------------------- 1 | % Position of cells [x y] in meters from the center of the field 2 | cellPose=[0.920 1.495;... 3 | 1.035 1.380;... 4 | 0.805 1.380;... 5 | 0.920 0.805;... 6 | 1.035 1.035;... 7 | 0.805 0.920;... 8 | 1.035 0.345;... 9 | 0.920 0.460;... 10 | 0.805 0.460;... 11 | 0.575 -0.115;... 12 | 0.460 0.000;... 13 | 0.345 0.000;... 14 | 0.805 -0.460;... 15 | 1.035 -0.575;... 16 | 0.920 -0.460;... 17 | 0.920 -0.920;... 18 | 0.805 -0.920;... 19 | 1.035 -1.035;... 20 | 1.265 -1.380;... 21 | 1.380 -1.265;... 22 | 1.495 -1.380]; 23 | 24 | cellLevel=[0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 ]; 25 | cellTypeArray=[0 0 1 1 0 2 0 0 0 1 2 0 0 0 2 0 1 0 1 0 1 ]; 26 | isoPoses=[0.91 0;-0.91/2 0.91;-0.91/2 -0.91]; 27 | platformPoses=[0.91 0.91;1.37 -1.37]; 28 | -------------------------------------------------------------------------------- /examples/BESTRobotics/2020Outbreak/FieldConfigs/BEST2020GameConfig3.m: -------------------------------------------------------------------------------- 1 | % Position of cells [x y] in meters from the center of the field 2 | cellPose=[0.920 1.265;... 3 | 0.805 1.380;... 4 | 1.035 1.380;... 5 | 0.920 1.035;... 6 | 0.805 0.920;... 7 | 1.035 0.805;... 8 | 0.920 0.575;... 9 | 0.805 0.345;... 10 | 1.035 0.460;... 11 | 0.460 -0.115;... 12 | 0.345 0.115;... 13 | 0.575 0.115;... 14 | 0.920 -0.460;... 15 | 0.805 -0.575;... 16 | 1.035 -0.460;... 17 | 0.920 -0.920;... 18 | 0.805 -0.805;... 19 | 1.035 -0.920;... 20 | 1.380 -1.265;... 21 | 1.265 -1.265;... 22 | 1.495 -1.380]; 23 | 24 | cellLevel=[0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0]; 25 | cellTypeArray=[1 0 0 0 0 0 2 0 0 1 1 0 1 0 0 1 2 0 2 0 1]; 26 | isoPoses=[0.91 0;-0.91/2 0.91;-0.91/2 -0.91]; 27 | platformPoses=[0.91 0.91;1.37 -1.37]; 28 | -------------------------------------------------------------------------------- /examples/BESTRobotics/2020Outbreak/FieldConfigs/BEST2020GameConfigRand.m: -------------------------------------------------------------------------------- 1 | % Position of cells [x y] in meters from the center of the field 2 | cellPose=[0.920 1.380;... 3 | 0.805 1.380;... 4 | 1.035 1.380;... 5 | 0.805 0.920;... 6 | 1.035 0.920;... 7 | 0.920 0.460;... 8 | 0.805 0.460;... 9 | 1.035 0.460;... 10 | 0.460 0.000;... 11 | 0.345 0.000;... 12 | 0.575 0.000;... 13 | 0.920 -0.460;... 14 | 0.805 -0.460;... 15 | 1.035 -0.460;... 16 | 0.920 -0.920;... 17 | 0.805 -0.920;... 18 | 1.035 -0.920;... 19 | 1.265 -1.380;... 20 | 1.495 -1.380;... 21 | 0.920 0.920;... 22 | 1.380 -1.380]; 23 | cellPose(:,2)=cellPose(:,2)+(0.115*(randi(3,[21 1])-2)); 24 | 25 | cellLevel=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1]; 26 | cellTypeArray=[0 1 2 0 1 0 0 0 1 2 0 1 0 0 0 1 2 0 1 0 0]; 27 | cellTypeArray=cellTypeArray(randperm(21)); 28 | isoPoses=[0.91 0;-0.91/2 0.91;-0.91/2 -0.91]; 29 | platformPoses=[0.91 0.91;1.37 -1.37]; 30 | -------------------------------------------------------------------------------- /examples/BESTRobotics/2021DemoDaze/BEST2021_autonomous_template.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/BESTRobotics/2021DemoDaze/BEST2021_autonomous_template.slx -------------------------------------------------------------------------------- /examples/BESTRobotics/2021DemoDaze/BEST2021_gamepad_template.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/BESTRobotics/2021DemoDaze/BEST2021_gamepad_template.slx -------------------------------------------------------------------------------- /examples/BESTRobotics/2021DemoDaze/BEST2021_keyboard_template.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/BESTRobotics/2021DemoDaze/BEST2021_keyboard_template.slx -------------------------------------------------------------------------------- /examples/BESTRobotics/2021DemoDaze/CAD/cylinder.step: -------------------------------------------------------------------------------- 1 | ISO-10303-21; 2 | HEADER; 3 | /* Generated by software containing ST-Developer 4 | * from STEP Tools, Inc. (www.steptools.com) 5 | */ 6 | /* OPTION: using custom renumber hook */ 7 | 8 | FILE_DESCRIPTION( 9 | /* description */ ('STEP AP214'), 10 | /* implementation_level */ '2;1'); 11 | 12 | FILE_NAME( 13 | /* name */ '610725e88a0b5e178e473528', 14 | /* time_stamp */ '2021-08-01T22:53:28+00:00', 15 | /* author */ (''), 16 | /* organization */ (''), 17 | /* preprocessor_version */ 'ST-DEVELOPER v18.1', 18 | /* originating_system */ ' ', 19 | /* authorisation */ ' '); 20 | 21 | FILE_SCHEMA (('AUTOMOTIVE_DESIGN {1 0 10303 214 3 1 1}')); 22 | ENDSEC; 23 | 24 | DATA; 25 | #10=PROPERTY_DEFINITION_REPRESENTATION(#14,#12); 26 | #11=PROPERTY_DEFINITION_REPRESENTATION(#15,#13); 27 | #12=REPRESENTATION('',(#16),#83); 28 | #13=REPRESENTATION('',(#17),#83); 29 | #14=PROPERTY_DEFINITION('pmi validation property','',#88); 30 | #15=PROPERTY_DEFINITION('pmi validation property','',#88); 31 | #16=VALUE_REPRESENTATION_ITEM('number of annotations',COUNT_MEASURE(0.)); 32 | #17=VALUE_REPRESENTATION_ITEM('number of views',COUNT_MEASURE(0.)); 33 | #18=SHAPE_REPRESENTATION_RELATIONSHIP('','',#55,#19); 34 | #19=ADVANCED_BREP_SHAPE_REPRESENTATION('',(#53),#83); 35 | #20=PLANE('',#60); 36 | #21=PLANE('',#61); 37 | #22=ORIENTED_EDGE('',*,*,#26,.F.); 38 | #23=ORIENTED_EDGE('',*,*,#27,.T.); 39 | #24=ORIENTED_EDGE('',*,*,#26,.T.); 40 | #25=ORIENTED_EDGE('',*,*,#27,.F.); 41 | #26=EDGE_CURVE('',#28,#28,#30,.T.); 42 | #27=EDGE_CURVE('',#29,#29,#31,.T.); 43 | #28=VERTEX_POINT('',#77); 44 | #29=VERTEX_POINT('',#79); 45 | #30=CIRCLE('',#58,0.0242091481233481); 46 | #31=CIRCLE('',#59,0.0242091481233481); 47 | #32=EDGE_LOOP('',(#22)); 48 | #33=EDGE_LOOP('',(#23)); 49 | #34=EDGE_LOOP('',(#24)); 50 | #35=EDGE_LOOP('',(#25)); 51 | #36=FACE_BOUND('',#32,.T.); 52 | #37=FACE_BOUND('',#33,.T.); 53 | #38=FACE_BOUND('',#34,.T.); 54 | #39=FACE_BOUND('',#35,.T.); 55 | #40=CYLINDRICAL_SURFACE('',#57,0.0242091481233481); 56 | #41=ADVANCED_FACE('',(#36,#37),#40,.T.); 57 | #42=ADVANCED_FACE('',(#38),#20,.T.); 58 | #43=ADVANCED_FACE('',(#39),#21,.F.); 59 | #44=CLOSED_SHELL('',(#41,#42,#43)); 60 | #45=STYLED_ITEM('',(#46),#53); 61 | #46=PRESENTATION_STYLE_ASSIGNMENT((#47)); 62 | #47=SURFACE_STYLE_USAGE(.BOTH.,#48); 63 | #48=SURFACE_SIDE_STYLE('',(#49)); 64 | #49=SURFACE_STYLE_FILL_AREA(#50); 65 | #50=FILL_AREA_STYLE('',(#51)); 66 | #51=FILL_AREA_STYLE_COLOUR('',#52); 67 | #52=COLOUR_RGB('',0.615686274509804,0.811764705882353,0.929411764705882); 68 | #53=MANIFOLD_SOLID_BREP('Part 1',#44); 69 | #54=SHAPE_DEFINITION_REPRESENTATION(#88,#55); 70 | #55=SHAPE_REPRESENTATION('Part 1',(#56),#83); 71 | #56=AXIS2_PLACEMENT_3D('',#74,#62,#63); 72 | #57=AXIS2_PLACEMENT_3D('',#75,#64,#65); 73 | #58=AXIS2_PLACEMENT_3D('',#76,#66,#67); 74 | #59=AXIS2_PLACEMENT_3D('',#78,#68,#69); 75 | #60=AXIS2_PLACEMENT_3D('',#80,#70,#71); 76 | #61=AXIS2_PLACEMENT_3D('',#81,#72,#73); 77 | #62=DIRECTION('',(0.,0.,1.)); 78 | #63=DIRECTION('',(1.,0.,0.)); 79 | #64=DIRECTION('',(0.,1.,0.)); 80 | #65=DIRECTION('',(0.,0.,1.)); 81 | #66=DIRECTION('',(0.,-1.,0.)); 82 | #67=DIRECTION('',(0.,0.,-1.)); 83 | #68=DIRECTION('',(0.,-1.,0.)); 84 | #69=DIRECTION('',(0.,0.,-1.)); 85 | #70=DIRECTION('',(0.,-1.,0.)); 86 | #71=DIRECTION('',(1.,0.,0.)); 87 | #72=DIRECTION('',(0.,-1.,0.)); 88 | #73=DIRECTION('',(1.,0.,0.)); 89 | #74=CARTESIAN_POINT('',(0.,0.,0.)); 90 | #75=CARTESIAN_POINT('',(0.,-0.07,1.48238278796712E-18)); 91 | #76=CARTESIAN_POINT('',(0.,-0.07,1.48238278796712E-18)); 92 | #77=CARTESIAN_POINT('',(0.,-0.07,-0.0242091481233481)); 93 | #78=CARTESIAN_POINT('',(0.,0.,1.48238278796712E-18)); 94 | #79=CARTESIAN_POINT('',(0.,0.,-0.0242091481233481)); 95 | #80=CARTESIAN_POINT('',(0.,-0.07,0.)); 96 | #81=CARTESIAN_POINT('',(0.,0.,0.)); 97 | #82=MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#45),#83); 98 | #83=( 99 | GEOMETRIC_REPRESENTATION_CONTEXT(3) 100 | GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#84)) 101 | GLOBAL_UNIT_ASSIGNED_CONTEXT((#87,#86,#85)) 102 | REPRESENTATION_CONTEXT('Part 1','TOP_LEVEL_ASSEMBLY_PART') 103 | ); 104 | #84=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(5.E-6),#87, 105 | 'DISTANCE_ACCURACY_VALUE','Maximum Tolerance applied to model'); 106 | #85=( 107 | NAMED_UNIT(*) 108 | SI_UNIT($,.STERADIAN.) 109 | SOLID_ANGLE_UNIT() 110 | ); 111 | #86=( 112 | NAMED_UNIT(*) 113 | PLANE_ANGLE_UNIT() 114 | SI_UNIT($,.RADIAN.) 115 | ); 116 | #87=( 117 | LENGTH_UNIT() 118 | NAMED_UNIT(*) 119 | SI_UNIT($,.METRE.) 120 | ); 121 | #88=PRODUCT_DEFINITION_SHAPE('','',#89); 122 | #89=PRODUCT_DEFINITION('','',#91,#90); 123 | #90=PRODUCT_DEFINITION_CONTEXT('',#97,'design'); 124 | #91=PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE('','',#93, 125 | .NOT_KNOWN.); 126 | #92=PRODUCT_RELATED_PRODUCT_CATEGORY('','',(#93)); 127 | #93=PRODUCT('Part 1','Part 1','Part 1',(#95)); 128 | #94=PRODUCT_CATEGORY('',''); 129 | #95=PRODUCT_CONTEXT('',#97,'mechanical'); 130 | #96=APPLICATION_PROTOCOL_DEFINITION('international standard', 131 | 'automotive_design',2010,#97); 132 | #97=APPLICATION_CONTEXT( 133 | 'core data for automotive mechanical design processes'); 134 | ENDSEC; 135 | END-ISO-10303-21; 136 | -------------------------------------------------------------------------------- /examples/BESTRobotics/2021DemoDaze/FieldConfigs/BEST2021GameConfigP1.m: -------------------------------------------------------------------------------- 1 | % Position of cells [x y] in meters from the center of the field 2 | cellPose=[-1.400 -0.750;... 3 | -1.400 -1.090;... 4 | -1.400 -1.400;... 5 | -1.400 -0.400;... 6 | -0.200 -2.500;... 7 | 0.600 -2.500;... 8 | -1.376 0.893;... 9 | 0.000 -2.500;... 10 | 0.800 -2.500;... 11 | -0.970 0.375;... 12 | 0.200 -2.500;... 13 | 1.000 -2.500;... 14 | 0.704 -0.460;... 15 | 0.400 -2.500;... 16 | 1.200 -2.500;... 17 | 0.682 1.167;... 18 | -0.038 -0.696;... 19 | 0.442 -1.241;... 20 | -0.523 0.669;... 21 | 1.419 -0.680;... 22 | 0.000 0.000]; 23 | 24 | objectLevel=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ]; 25 | objectTypeArray=[0 0 0 0 5 7 2 6 8 1 5 7 2 6 8 1 3 3 4 4 ]; 26 | isoPoses=[-1 -3;1 -3;0 0]; 27 | platformPoses=[-0.01 1.37;1.37 -1.37]; 28 | -------------------------------------------------------------------------------- /examples/BESTRobotics/2021DemoDaze/FieldConfigs/BEST2021GameConfigP2.m: -------------------------------------------------------------------------------- 1 | % Position of cells [x y] in meters from the center of the field 2 | cellPose=[-1.400 -0.750;... 3 | -1.400 -1.090;... 4 | -1.400 -1.400;... 5 | -1.400 -0.400;... 6 | 1.430 -1.191;... 7 | -0.043 1.082;... 8 | -0.472 1.373;... 9 | 0.316 -1.094;... 10 | 0.803 -1.091;... 11 | 0.217 1.090;... 12 | 0.068 -0.575;... 13 | 0.986 0.315;... 14 | 0.704 -0.460;... 15 | -1.227 0.794;... 16 | -0.915 0.537;... 17 | 0.310 -0.417;... 18 | -0.968 1.422;... 19 | 0.671 1.080;... 20 | 1.347 0.047;... 21 | -1.046 -1.140;... 22 | 0.000 0.000]; 23 | 24 | objectLevel=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ]; 25 | objectTypeArray=[0 0 0 0 5 7 2 6 8 1 5 7 2 6 8 1 3 3 4 4 ]; 26 | isoPoses=[-1 -3;1 -3;0 0]; 27 | platformPoses=[-0.01 1.37;1.37 -1.37]; 28 | -------------------------------------------------------------------------------- /examples/BESTRobotics/2021DemoDaze/FieldConfigs/BEST2021GameConfigP3.m: -------------------------------------------------------------------------------- 1 | % Position of cells [x y] in meters from the center of the field 2 | cellPose=[-1.400 -0.750;... 3 | -1.400 -1.090;... 4 | -1.400 -1.400;... 5 | -1.400 -0.400;... 6 | 1.059 0.216;... 7 | 0.126 0.313;... 8 | -1.250 0.705;... 9 | -0.918 -0.548;... 10 | 0.359 -0.457;... 11 | -1.003 0.358;... 12 | 0.139 -1.142;... 13 | 1.469 -0.438;... 14 | 0.666 -0.553;... 15 | -0.377 1.075;... 16 | 0.686 -1.163;... 17 | 0.763 1.284;... 18 | -0.097 -0.695;... 19 | 0.364 -0.948;... 20 | -0.428 0.436;... 21 | 1.402 -0.714;... 22 | 0.000 0.000]; 23 | 24 | objectLevel=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ]; 25 | objectTypeArray=[0 0 0 0 5 7 2 6 8 1 5 7 2 6 8 1 3 3 4 4 ]; 26 | isoPoses=[-1.016 1.345;-0.342 -0.512;0 0]; 27 | platformPoses=[-0.01 1.37;1.37 -1.37]; 28 | -------------------------------------------------------------------------------- /examples/lessons/Intro to VEX and Student Resources/Intro to VEX and Student Resources.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Intro to VEX and Student Resources/Intro to VEX and Student Resources.pdf -------------------------------------------------------------------------------- /examples/lessons/Unit 1 Intro to MATLAB/Exercises/calcHypot.m: -------------------------------------------------------------------------------- 1 | function c = calcHypot(a,b) 2 | %calcHypoth Solution 3 | 4 | % This function calculates the hypothenuse given the length 5 | % of two for the sides of a right triangle 6 | c=sqrt(a^2+b^2); 7 | 8 | end 9 | 10 | -------------------------------------------------------------------------------- /examples/lessons/Unit 1 Intro to MATLAB/Exercises/hypotenuse_solution.m: -------------------------------------------------------------------------------- 1 | clear 2 | clc 3 | 4 | a=12; 5 | b=17; 6 | c=sqrt(a^2 + b^2) -------------------------------------------------------------------------------- /examples/lessons/Unit 1 Intro to MATLAB/Exercises/myFirstScript_solution.m: -------------------------------------------------------------------------------- 1 | clear 2 | clc 3 | 4 | result1=2+3; 5 | result2=4+5; 6 | result3=result1 + result2 -------------------------------------------------------------------------------- /examples/lessons/Unit 1 Intro to MATLAB/Intro to MATLAB.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 1 Intro to MATLAB/Intro to MATLAB.pdf -------------------------------------------------------------------------------- /examples/lessons/Unit 2 Basic Robot Movements/Basic Robot Movements.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 2 Basic Robot Movements/Basic Robot Movements.pdf -------------------------------------------------------------------------------- /examples/lessons/Unit 2 Basic Robot Movements/Exercises/MoveForwardAndBack_solution.m: -------------------------------------------------------------------------------- 1 | % Create virtual robot 2 | myRobot=mlrobot; 3 | 4 | % Start running the virtual environment simulation 5 | mlrobotstart(myRobot); 6 | 7 | % Set both motors to a value that will make the robot move forward 8 | % NOTE: The direction of one motor is inverted use a negative value if 9 | % necessary 10 | % HINT: use "mlrobotsetmotorvoltage" 11 | 12 | mlrobotsetmotorvoltage(myRobot,'left',-3); 13 | mlrobotsetmotorvoltage(myRobot,'right',3); 14 | 15 | % delay for 5 seconds so the robot moves forward 16 | pause(5); 17 | 18 | % Set motors to same values to make the robot turn 19 | 20 | mlrobotsetmotorvoltage(myRobot,'left',-3); 21 | mlrobotsetmotorvoltage(myRobot,'right',-3); 22 | 23 | % Wait for a period of time until the robot is facing in the opporite 24 | % direction 25 | 26 | pause(6); 27 | 28 | % Set motor values again to make robot move forward 29 | 30 | mlrobotsetmotorvoltage(myRobot,'left',-3); 31 | mlrobotsetmotorvoltage(myRobot,'right',3); 32 | 33 | % Wait until the robot reaches its original position 34 | 35 | pause(5); 36 | 37 | % Set both motors to zero voltage 38 | % HINT: use "mlrobotsetmotorvoltage" 39 | 40 | mlrobotsetmotorvoltage(myRobot,'left',0); 41 | mlrobotsetmotorvoltage(myRobot,'right',0); 42 | 43 | % Stop simulation 44 | mlrobotstop(myRobot); 45 | -------------------------------------------------------------------------------- /examples/lessons/Unit 2 Basic Robot Movements/Exercises/MoveForwardAndBack_start.m: -------------------------------------------------------------------------------- 1 | % Create virtual robot 2 | myRobot=mlrobot; 3 | 4 | % Start running the virtual environment simulation 5 | mlrobotstart(myRobot); 6 | 7 | % Set both motors to a value that will make the robot move forward 8 | % NOTE: The direction of one motor is inverted use a negative value if 9 | % necessary 10 | % HINT: use "mlrobotsetmotorvoltage" 11 | 12 | mlrobotsetmotorvoltage(myRobot,'left',-3); 13 | mlrobotsetmotorvoltage(myRobot,'right',3); 14 | 15 | % delay for 5 seconds so the robot moves forward 16 | pause(5); 17 | 18 | % Set motors to opposing values to make the robot turn 19 | 20 | % mlrobotsetmotorvoltage(myRobot,'left',); 21 | % mlrobotsetmotorvoltage(myRobot,'right',); 22 | 23 | % Wait for a period of time until the robot is facing in the opporite 24 | % direction 25 | 26 | % pause(); 27 | 28 | % Set motor values again to make robot move forward 29 | 30 | % mlrobotsetmotorvoltage(myRobot,'left',); 31 | % mlrobotsetmotorvoltage(myRobot,'right',); 32 | 33 | % Wait until the robot reaches its original position 34 | 35 | % pause(); 36 | 37 | % Set both motors to zero voltage 38 | % HINT: use "mlrobotsetmotorvoltage" 39 | 40 | mlrobotsetmotorvoltage(myRobot,'left',0); 41 | mlrobotsetmotorvoltage(myRobot,'right',0); 42 | 43 | % Stop simulation 44 | mlrobotstop(myRobot); 45 | -------------------------------------------------------------------------------- /examples/lessons/Unit 2 Basic Robot Movements/Exercises/MoveForward_solution.m: -------------------------------------------------------------------------------- 1 | % Create virtual robot 2 | myRobot=mlrobot; 3 | 4 | % Start running the virtual environment simulation 5 | mlrobotstart(myRobot); 6 | 7 | % Set both motors to a value that will make the robot move forward 8 | % NOTE: The direction of one motor is inverted use a negative value if 9 | % necessary 10 | % HINT: use "mlrobotsetmotorvoltage" 11 | 12 | mlrobotsetmotorvoltage(myRobot,'left',-3); 13 | mlrobotsetmotorvoltage(myRobot,'right',3); 14 | 15 | % delay for 5 seconds so the robot moves forward 16 | pause(5); 17 | 18 | % Set motors to opposing values to make the robot turn 19 | 20 | % Wait for a period of time until the robot is facing in the opporite 21 | % direction 22 | 23 | % Set both motors to zero voltage 24 | % HINT: use "mlrobotsetmotorvoltage" 25 | 26 | mlrobotsetmotorvoltage(myRobot,'left',0); 27 | mlrobotsetmotorvoltage(myRobot,'right',0); 28 | 29 | % Stop simulation 30 | mlrobotstop(myRobot); 31 | -------------------------------------------------------------------------------- /examples/lessons/Unit 2 Basic Robot Movements/Exercises/MoveForward_start.m: -------------------------------------------------------------------------------- 1 | % Create virtual robot 2 | myRobot=mlrobot; 3 | 4 | % Start running the virtual environment simulation 5 | mlrobotstart(myRobot); 6 | 7 | % Set both motors to a value that will make the robot move forward 8 | % NOTE: The direction of one motor is inverted use a negative value if 9 | % necessary 10 | % HINT: use "mlrobotsetmotorvoltage" 11 | 12 | 13 | 14 | % delay for 5 seconds so the robot moves forward 15 | pause(5); 16 | 17 | % Set both motors to zero voltage 18 | % HINT: use "mlrobotsetmotorvoltage" 19 | 20 | 21 | 22 | % Stop simulation 23 | mlrobotstop(myRobot); 24 | -------------------------------------------------------------------------------- /examples/lessons/Unit 2 Basic Robot Movements/Exercises/PlotOrientation_solution.m: -------------------------------------------------------------------------------- 1 | % Create virtual robot 2 | myRobot=mlrobot; 3 | 4 | % Start running the virtual environment simulation 5 | mlrobotstart(myRobot); 6 | 7 | % Fill in the for loop in order to read the robot's angle 8 | 9 | for i=1:30 10 | mlrobotsetmotorvoltage(myRobot,'left',5); 11 | mlrobotsetmotorvoltage(myRobot,'right',5); 12 | 13 | % Assign the output of a "mlrobotreadcompassangle" to a variable 14 | % named "angle" 15 | 16 | angle(i)=mlrobotreadcompassangle(myRobot); 17 | 18 | % Wait for 0.1 seconds before reading the next robot angle 19 | pause(0.1); 20 | end 21 | 22 | % Stop simulation 23 | mlrobotstop(myRobot); 24 | 25 | % Create a time array to plot against 26 | time=0.1:0.1:3; 27 | 28 | % Use the "plot" command to plot the robot angle vs time 29 | plot(time,angle) 30 | 31 | title('Robot Orientation vs Time'); 32 | xlabel('Time (s)') 33 | ylabel('Robot Orientation (Degrees)') -------------------------------------------------------------------------------- /examples/lessons/Unit 2 Basic Robot Movements/Exercises/PlotOrientation_start.m: -------------------------------------------------------------------------------- 1 | % Create virtual robot 2 | myRobot=mlrobot; 3 | 4 | % Start running the virtual environment simulation 5 | mlrobotstart(myRobot); 6 | 7 | % Fill in the for loop in order to read the robot's angle 8 | 9 | for i=1:30 10 | mlrobotsetmotorvoltage(myRobot,'left',5); 11 | mlrobotsetmotorvoltage(myRobot,'right',5); 12 | 13 | % Assign the output of a "mlrobotreadcompassangle" to a variable 14 | % named "angle" 15 | 16 | angle(i)= % Complete this statement 17 | 18 | % Wait for 0.1 seconds before reading the next robot angle 19 | pause(0.1); 20 | end 21 | 22 | % Stop simulation 23 | mlrobotstop(myRobot); 24 | 25 | % Create a time array to plot against 26 | time=0.1:0.1:3; 27 | 28 | % Use the "plot" command to plot the robot angle vs time 29 | plot() % Use the variables time and angle 30 | 31 | % Add Title and labels to your graph to make sure the information has some 32 | % context X-axis is Time in Seconds, Y-axis is Orientation in Degrees and title is Robot Orientation 33 | % vs Time 34 | 35 | %title(''); 36 | %xlabel(''); 37 | %ylabel(''); 38 | 39 | -------------------------------------------------------------------------------- /examples/lessons/Unit 3 Intro to Simulink/Exercises/Hypotenuse_simplified.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 3 Intro to Simulink/Exercises/Hypotenuse_simplified.slx -------------------------------------------------------------------------------- /examples/lessons/Unit 3 Intro to Simulink/Exercises/Hypotenuse_solution.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 3 Intro to Simulink/Exercises/Hypotenuse_solution.slx -------------------------------------------------------------------------------- /examples/lessons/Unit 3 Intro to Simulink/Exercises/Hypotenuse_start.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 3 Intro to Simulink/Exercises/Hypotenuse_start.slx -------------------------------------------------------------------------------- /examples/lessons/Unit 3 Intro to Simulink/Exercises/Hypotenuse_subsystem.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 3 Intro to Simulink/Exercises/Hypotenuse_subsystem.slx -------------------------------------------------------------------------------- /examples/lessons/Unit 3 Intro to Simulink/Exercises/timeBasedSources.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 3 Intro to Simulink/Exercises/timeBasedSources.slx -------------------------------------------------------------------------------- /examples/lessons/Unit 3 Intro to Simulink/Intro to Simulink.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 3 Intro to Simulink/Intro to Simulink.pdf -------------------------------------------------------------------------------- /examples/lessons/Unit 4 Robot Controls/Exercises/ArcadeControl_solution.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 4 Robot Controls/Exercises/ArcadeControl_solution.slx -------------------------------------------------------------------------------- /examples/lessons/Unit 4 Robot Controls/Exercises/ArcadeControl_start.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 4 Robot Controls/Exercises/ArcadeControl_start.slx -------------------------------------------------------------------------------- /examples/lessons/Unit 4 Robot Controls/Exercises/MoveForward_solution.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 4 Robot Controls/Exercises/MoveForward_solution.slx -------------------------------------------------------------------------------- /examples/lessons/Unit 4 Robot Controls/Exercises/MoveForward_start.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 4 Robot Controls/Exercises/MoveForward_start.slx -------------------------------------------------------------------------------- /examples/lessons/Unit 4 Robot Controls/Exercises/TankControl_solution.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 4 Robot Controls/Exercises/TankControl_solution.slx -------------------------------------------------------------------------------- /examples/lessons/Unit 4 Robot Controls/Exercises/TankControl_start.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 4 Robot Controls/Exercises/TankControl_start.slx -------------------------------------------------------------------------------- /examples/lessons/Unit 4 Robot Controls/Robot Controls.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 4 Robot Controls/Robot Controls.pdf -------------------------------------------------------------------------------- /examples/lessons/Unit 5 Using a Distance Sensor/Exercises/AvoidWall_solution.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 5 Using a Distance Sensor/Exercises/AvoidWall_solution.slx -------------------------------------------------------------------------------- /examples/lessons/Unit 5 Using a Distance Sensor/Exercises/AvoidWall_start.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 5 Using a Distance Sensor/Exercises/AvoidWall_start.slx -------------------------------------------------------------------------------- /examples/lessons/Unit 5 Using a Distance Sensor/Exercises/TrackWall_solution.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 5 Using a Distance Sensor/Exercises/TrackWall_solution.slx -------------------------------------------------------------------------------- /examples/lessons/Unit 5 Using a Distance Sensor/Exercises/TrackWall_start.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 5 Using a Distance Sensor/Exercises/TrackWall_start.slx -------------------------------------------------------------------------------- /examples/lessons/Unit 5 Using a Distance Sensor/Using a Distance Sensor.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 5 Using a Distance Sensor/Using a Distance Sensor.pdf -------------------------------------------------------------------------------- /examples/lessons/Unit 6 Using MATLAB Functions/Exercises/MATLAB_Fcn_solution.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 6 Using MATLAB Functions/Exercises/MATLAB_Fcn_solution.slx -------------------------------------------------------------------------------- /examples/lessons/Unit 6 Using MATLAB Functions/Exercises/MATLAB_Fcn_start.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 6 Using MATLAB Functions/Exercises/MATLAB_Fcn_start.slx -------------------------------------------------------------------------------- /examples/lessons/Unit 6 Using MATLAB Functions/Using MATLAB Functions.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 6 Using MATLAB Functions/Using MATLAB Functions.pdf -------------------------------------------------------------------------------- /examples/lessons/Unit 7 Intro to Stateflow/Exercises/navigateObstacle_SF_solution.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 7 Intro to Stateflow/Exercises/navigateObstacle_SF_solution.slx -------------------------------------------------------------------------------- /examples/lessons/Unit 7 Intro to Stateflow/Exercises/navigateObstacle_SF_start.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 7 Intro to Stateflow/Exercises/navigateObstacle_SF_start.slx -------------------------------------------------------------------------------- /examples/lessons/Unit 7 Intro to Stateflow/Exercises/trackWall_SF_solution.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 7 Intro to Stateflow/Exercises/trackWall_SF_solution.slx -------------------------------------------------------------------------------- /examples/lessons/Unit 7 Intro to Stateflow/Exercises/trackWall_SF_start.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 7 Intro to Stateflow/Exercises/trackWall_SF_start.slx -------------------------------------------------------------------------------- /examples/lessons/Unit 7 Intro to Stateflow/Intro to Stateflow.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 7 Intro to Stateflow/Intro to Stateflow.pdf -------------------------------------------------------------------------------- /examples/lessons/Unit 8 Maze Solving Robot/Exercises/MazeRobot_solution.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 8 Maze Solving Robot/Exercises/MazeRobot_solution.slx -------------------------------------------------------------------------------- /examples/lessons/Unit 8 Maze Solving Robot/Exercises/MazeRobot_start.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 8 Maze Solving Robot/Exercises/MazeRobot_start.slx -------------------------------------------------------------------------------- /examples/lessons/Unit 8 Maze Solving Robot/Maze Solving Robot.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 8 Maze Solving Robot/Maze Solving Robot.pdf -------------------------------------------------------------------------------- /examples/lessons/Unit 9 Clawbot Pick and Place/Exercises/RP_Clawbot_Lesson1.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 9 Clawbot Pick and Place/Exercises/RP_Clawbot_Lesson1.slx -------------------------------------------------------------------------------- /examples/lessons/Unit 9 Clawbot Pick and Place/Exercises/RP_Clawbot_Lesson2_Start.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 9 Clawbot Pick and Place/Exercises/RP_Clawbot_Lesson2_Start.slx -------------------------------------------------------------------------------- /examples/lessons/Unit 9 Clawbot Pick and Place/Exercises/RP_Clawbot_Lesson3_Start.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 9 Clawbot Pick and Place/Exercises/RP_Clawbot_Lesson3_Start.slx -------------------------------------------------------------------------------- /examples/lessons/Unit 9 Clawbot Pick and Place/Solutions/RP_Clawbot_Lesson2_Solution.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 9 Clawbot Pick and Place/Solutions/RP_Clawbot_Lesson2_Solution.slx -------------------------------------------------------------------------------- /examples/lessons/Unit 9 Clawbot Pick and Place/Solutions/RP_Clawbot_Lesson3_Solution.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/lessons/Unit 9 Clawbot Pick and Place/Solutions/RP_Clawbot_Lesson3_Solution.slx -------------------------------------------------------------------------------- /examples/models/ClawbotSim_CAD/V5 Clawbot Drive Base Simple NoWheel.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/ClawbotSim_CAD/V5 Clawbot Drive Base Simple NoWheel.stl -------------------------------------------------------------------------------- /examples/models/ClawbotSim_CAD/V5 Clawbot Lower arm subassembly Simple.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/ClawbotSim_CAD/V5 Clawbot Lower arm subassembly Simple.stl -------------------------------------------------------------------------------- /examples/models/ClawbotSim_CAD/V5 Clawbot Upper arm subassembly Simple.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/ClawbotSim_CAD/V5 Clawbot Upper arm subassembly Simple.stl -------------------------------------------------------------------------------- /examples/models/ClawbotSim_CAD/Wheel Assembly (2).stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/ClawbotSim_CAD/Wheel Assembly (2).stl -------------------------------------------------------------------------------- /examples/models/ClawbotSim_CAD/claw/Claw mount.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/ClawbotSim_CAD/claw/Claw mount.stl -------------------------------------------------------------------------------- /examples/models/ClawbotSim_CAD/claw/Left Pivot.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/ClawbotSim_CAD/claw/Left Pivot.stl -------------------------------------------------------------------------------- /examples/models/ClawbotSim_CAD/claw/Left Gear.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/ClawbotSim_CAD/claw/Left Gear.stl -------------------------------------------------------------------------------- /examples/models/ClawbotSim_CAD/claw/Left Pincher.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/ClawbotSim_CAD/claw/Left Pincher.stl -------------------------------------------------------------------------------- /examples/models/ClawbotSim_CAD/claw/right gear.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/ClawbotSim_CAD/claw/right gear.stl -------------------------------------------------------------------------------- /examples/models/ClawbotSim_CAD/claw/right pincher.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/ClawbotSim_CAD/claw/right pincher.stl -------------------------------------------------------------------------------- /examples/models/ClawbotSim_CAD/claw/right pivot.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/ClawbotSim_CAD/claw/right pivot.stl -------------------------------------------------------------------------------- /examples/models/ClawbotSim_CAD/rear-wheel-276-6298-000 Rev1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/ClawbotSim_CAD/rear-wheel-276-6298-000 Rev1.stl -------------------------------------------------------------------------------- /examples/models/ClawbotSim_Icons/Arm and Claw.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/ClawbotSim_Icons/Arm and Claw.PNG -------------------------------------------------------------------------------- /examples/models/ClawbotSim_Icons/CameraIcon.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/ClawbotSim_Icons/CameraIcon.PNG -------------------------------------------------------------------------------- /examples/models/ClawbotSim_Icons/Claw Mount.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/ClawbotSim_Icons/Claw Mount.PNG -------------------------------------------------------------------------------- /examples/models/ClawbotSim_Icons/Clawbot Simscape.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/ClawbotSim_Icons/Clawbot Simscape.PNG -------------------------------------------------------------------------------- /examples/models/ClawbotSim_Icons/Environment Simscape.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/ClawbotSim_Icons/Environment Simscape.PNG -------------------------------------------------------------------------------- /examples/models/ClawbotSim_Icons/Front Wheel.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/ClawbotSim_Icons/Front Wheel.PNG -------------------------------------------------------------------------------- /examples/models/ClawbotSim_Icons/Higher Arm.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/ClawbotSim_Icons/Higher Arm.PNG -------------------------------------------------------------------------------- /examples/models/ClawbotSim_Icons/Lower Arm.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/ClawbotSim_Icons/Lower Arm.PNG -------------------------------------------------------------------------------- /examples/models/ClawbotSim_Icons/Pincher.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/ClawbotSim_Icons/Pincher.PNG -------------------------------------------------------------------------------- /examples/models/ClawbotSim_Icons/Rear Wheel.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/ClawbotSim_Icons/Rear Wheel.PNG -------------------------------------------------------------------------------- /examples/models/ClawbotSim_Icons/Simscape Environment.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/ClawbotSim_Icons/Simscape Environment.PNG -------------------------------------------------------------------------------- /examples/models/ClawbotSim_Icons/Vehicle Base.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/ClawbotSim_Icons/Vehicle Base.PNG -------------------------------------------------------------------------------- /examples/models/ClawbotSim_Icons/batteryVex.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/ClawbotSim_Icons/batteryVex.jpg -------------------------------------------------------------------------------- /examples/models/RP_1_Lesson_Plan_Self_Paced.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/RP_1_Lesson_Plan_Self_Paced.slx -------------------------------------------------------------------------------- /examples/models/RP_Autonomous_Maze_Solver_Stateflow.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/RP_Autonomous_Maze_Solver_Stateflow.slx -------------------------------------------------------------------------------- /examples/models/RP_Autonomous_Move_Signal_Builder.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/RP_Autonomous_Move_Signal_Builder.slx -------------------------------------------------------------------------------- /examples/models/RP_ClawbotSim_Battery_Motor.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/RP_ClawbotSim_Battery_Motor.slx -------------------------------------------------------------------------------- /examples/models/RP_ClawbotSim_auto.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/RP_ClawbotSim_auto.slx -------------------------------------------------------------------------------- /examples/models/RP_ClawbotSim_perception.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/RP_ClawbotSim_perception.slx -------------------------------------------------------------------------------- /examples/models/RP_ClawbotSim_teleop.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/RP_ClawbotSim_teleop.slx -------------------------------------------------------------------------------- /examples/models/RP_Keyboard_Control.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/RP_Keyboard_Control.slx -------------------------------------------------------------------------------- /examples/models/RP_MATLAB_Disc_robot.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/RP_MATLAB_Disc_robot.slx -------------------------------------------------------------------------------- /examples/models/RP_Object_Detector.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/RP_Object_Detector.slx -------------------------------------------------------------------------------- /examples/models/RP_Object_Environment_Dashboard.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/RP_Object_Environment_Dashboard.slx -------------------------------------------------------------------------------- /examples/models/RP_Object_Environment_Gamepad.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/RP_Object_Environment_Gamepad.slx -------------------------------------------------------------------------------- /examples/models/RP_Obstacle_Environment_Dashboard.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/RP_Obstacle_Environment_Dashboard.slx -------------------------------------------------------------------------------- /examples/models/RP_Obstacle_Environment_Gamepad.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/RP_Obstacle_Environment_Gamepad.slx -------------------------------------------------------------------------------- /examples/models/RP_Obstacle_Environment_Signal_Builder.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/RP_Obstacle_Environment_Signal_Builder.slx -------------------------------------------------------------------------------- /examples/models/RP_Sumo_Dashboard.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/RP_Sumo_Dashboard.slx -------------------------------------------------------------------------------- /examples/models/RP_Sumo_Gamepads.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/RP_Sumo_Gamepads.slx -------------------------------------------------------------------------------- /examples/models/RP_VEX_V5_Gamepad_Control.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/RP_VEX_V5_Gamepad_Control.slx -------------------------------------------------------------------------------- /examples/models/SimulinkExamples.mlx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/examples/models/SimulinkExamples.mlx -------------------------------------------------------------------------------- /examples/scripts/mlrobot_getting_started.m: -------------------------------------------------------------------------------- 1 | %% MLRobot Getting Started 2 | % Copyright 2018 The MathWorks, Inc. 3 | 4 | % Start the simulation environment by creating a robot and starting the 5 | % simulation 6 | 7 | myRobot = mlrobot; 8 | mlrobotstart(myRobot); 9 | 10 | %% Interact with Robot 11 | % 12 | % Set the motor voltages to have the robot move forward 13 | mlrobotsetmotorvoltage(myRobot,'left',-3); 14 | mlrobotsetmotorvoltage(myRobot,'right',3); 15 | 16 | % Wait for a period of time so the robot moves some distance 17 | pause(5) 18 | 19 | % Set the motor voltages so the robot will turn 20 | 21 | mlrobotsetmotorvoltage(myRobot,'left',3); 22 | mlrobotsetmotorvoltage(myRobot,'right',3); 23 | pause(3) 24 | 25 | % Set back the motor voltages so the robot will go straight 26 | 27 | mlrobotsetmotorvoltage(myRobot,'left',-3); 28 | mlrobotsetmotorvoltage(myRobot,'right',3); 29 | pause(5) 30 | 31 | % Set the motor voltages so the robot will keep spinning 32 | 33 | mlrobotsetmotorvoltage(myRobot,'left',-5); 34 | mlrobotsetmotorvoltage(myRobot,'right',-5); 35 | pause(8) 36 | 37 | %% Stop the simulation 38 | 39 | mlrobotstop(myRobot); 40 | -------------------------------------------------------------------------------- /lib/BEST Robotics DemoDaze.mlappinstall: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/BEST Robotics DemoDaze.mlappinstall -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Libraries/Contact_Forces_Lib.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/CFL_Libs/Libraries/Contact_Forces_Lib.slx -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Libraries/Images/BoxB_Corners_IMAGE.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/CFL_Libs/Libraries/Images/BoxB_Corners_IMAGE.jpg -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Libraries/Images/BoxF_Corners_IMAGE.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/CFL_Libs/Libraries/Images/BoxF_Corners_IMAGE.jpg -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Libraries/Images/Box_to_Belt_Contact_IMAGE.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/CFL_Libs/Libraries/Images/Box_to_Belt_Contact_IMAGE.jpg -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Libraries/Images/Box_to_Belt_Ends_IMAGE.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/CFL_Libs/Libraries/Images/Box_to_Belt_Ends_IMAGE.jpg -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Libraries/Images/Box_to_Belt_Faces_IMAGE.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/CFL_Libs/Libraries/Images/Box_to_Belt_Faces_IMAGE.jpg -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Libraries/Images/Box_to_Box_Contact_IMAGE.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/CFL_Libs/Libraries/Images/Box_to_Box_Contact_IMAGE.jpg -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Libraries/Images/Circle_to_Circle_Contact_Enabled_IMAGE.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/CFL_Libs/Libraries/Images/Circle_to_Circle_Contact_Enabled_IMAGE.jpg -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Libraries/Images/Circle_to_Circle_Contact_IMAGE.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/CFL_Libs/Libraries/Images/Circle_to_Circle_Contact_IMAGE.jpg -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Libraries/Images/Circle_to_Finite_Line_Contact_Enabled_IMAGE.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/CFL_Libs/Libraries/Images/Circle_to_Finite_Line_Contact_Enabled_IMAGE.jpg -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Libraries/Images/Circle_to_Finite_Line_Contact_IMAGE.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/CFL_Libs/Libraries/Images/Circle_to_Finite_Line_Contact_IMAGE.jpg -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Libraries/Images/Circle_to_Hole_Attraction_IMAGE.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/CFL_Libs/Libraries/Images/Circle_to_Hole_Attraction_IMAGE.jpg -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Libraries/Images/Circle_to_Ring_Contact_IMAGE.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/CFL_Libs/Libraries/Images/Circle_to_Ring_Contact_IMAGE.jpg -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Libraries/Images/Face_to_Belt_Faces_IMAGE.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/CFL_Libs/Libraries/Images/Face_to_Belt_Faces_IMAGE.jpg -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Libraries/Images/Face_to_Plane_Contact_IMAGE.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/CFL_Libs/Libraries/Images/Face_to_Plane_Contact_IMAGE.jpg -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Libraries/Images/Sphere_in_Sphere_Contact_IMAGE.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/CFL_Libs/Libraries/Images/Sphere_in_Sphere_Contact_IMAGE.jpg -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Libraries/Images/Sphere_to_Cone_Contact_IMAGE.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/CFL_Libs/Libraries/Images/Sphere_to_Cone_Contact_IMAGE.jpg -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Libraries/Images/Sphere_to_Plane_Contact_Enabled_IMAGE.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/CFL_Libs/Libraries/Images/Sphere_to_Plane_Contact_Enabled_IMAGE.jpg -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Libraries/Images/Sphere_to_Plane_Contact_IMAGE.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/CFL_Libs/Libraries/Images/Sphere_to_Plane_Contact_IMAGE.jpg -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Libraries/Images/Sphere_to_Sphere_Contact_IMAGE.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/CFL_Libs/Libraries/Images/Sphere_to_Sphere_Contact_IMAGE.jpg -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Libraries/Images/Sphere_to_Tube_Contact_IMAGE.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/CFL_Libs/Libraries/Images/Sphere_to_Tube_Contact_IMAGE.jpg -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Libraries/Parts_Lib.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/CFL_Libs/Libraries/Parts_Lib.slx -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Libraries/slblocks.m: -------------------------------------------------------------------------------- 1 | function blkStruct = slblocks 2 | %SLBLOCKS Defines the block library for a specific Toolbox or Blockset. 3 | % SLBLOCKS returns information about a Blockset to Simulink. The 4 | % information returned is in the form of a BlocksetStruct with the 5 | % following fields: 6 | % 7 | % Name Name of the Blockset in the Simulink block library 8 | % Blocksets & Toolboxes subsystem. 9 | % OpenFcn MATLAB expression (function) to call when you 10 | % double-click on the block in the Blocksets & Toolboxes 11 | % subsystem. 12 | % MaskDisplay Optional field that specifies the Mask Display commands 13 | % to use for the block in the Blocksets & Toolboxes 14 | % subsystem. 15 | % Browser Array of Simulink Library Browser structures, described 16 | % below. 17 | % 18 | % The Simulink Library Browser needs to know which libraries in your 19 | % Blockset it should show, and what names to give them. To provide 20 | % this information, define an array of Browser data structures with one 21 | % array element for each library to display in the Simulink Library 22 | % Browser. Each array element has two fields: 23 | % 24 | % Library File name of the library (model file) to include in the 25 | % Library Browser. 26 | % Name Name displayed for the library in the Library Browser 27 | % window. Note that the Name is not required to be the 28 | % same as the model file name. 29 | % 30 | % Example: 31 | % 32 | % % 33 | % % Define the BlocksetStruct for the Simulink block libraries 34 | % % Only simulink_extras shows up in Blocksets & Toolboxes 35 | % % 36 | % blkStruct.Name = ['Simulink' sprintf('\n') 'Extras']; 37 | % blkStruct.OpenFcn = 'simulink_extras'; 38 | % blkStruct.MaskDisplay = sprintf('Simulink\nExtras'); 39 | % 40 | % % 41 | % % Both simulink and simulink_extras show up in the Library Browser. 42 | % % 43 | % blkStruct.Browser(1).Library = 'simulink'; 44 | % blkStruct.Browser(1).Name = 'Simulink'; 45 | % blkStruct.Browser(2).Library = 'simulink_extras'; 46 | % blkStruct.Browser(2).Name = 'Simulink Extras'; 47 | % 48 | 49 | % Copyright 1990-2017 The MathWorks, Inc. 50 | 51 | % 52 | % Name of the subsystem which will show up in the Simulink Blocksets 53 | % and Toolboxes subsystem. 54 | % 55 | blkStruct.Name = ['Simscape Multibody Contact Forces Library']; 56 | % 57 | % The function that will be called when the user double-clicks on 58 | % this icon. 59 | % 60 | blkStruct.OpenFcn = 'Contact_Forces_Lib'; 61 | 62 | % 63 | % The argument to be set as the Mask Display for the subsystem. You 64 | % may comment this line out if no specific mask is desired. 65 | % Example: blkStruct.MaskDisplay = 'plot([0:2*pi],sin([0:2*pi]));'; 66 | % No display for Simulink Extras. 67 | % 68 | blkStruct.MaskDisplay = 'Simscape Multibody Contact Forces Library'; 69 | 70 | % 71 | % Define the Browser structure array, the first element contains the 72 | % information for the Simulink block library and the second for the 73 | % Simulink Extras block library. 74 | % 75 | 76 | %blkStruct.Browser(1).Library = 'simulink'; 77 | %blkStruct.Browser(1).Name = 'Simulink'; 78 | %blkStruct.Browser(2).Library = 'Contact_Forces_Lib'; 79 | %blkStruct.Browser(2).Name = 'Simscape Multibody Contact Forces Library'; 80 | 81 | %blkStruct.Browser(1).Library = 'Contact_Forces_Lib'; 82 | %blkStruct.Browser(1).Name = 'Simscape Multibody Contact Forces Library'; 83 | 84 | Browser(1).Library = 'Contact_Forces_Lib'; 85 | Browser(1).Name = 'Simscape Multibody Contact Forces Library'; 86 | 87 | %Browser(1).IsTopLevel = 0; 88 | %Browser(1).IsFlat = 1;% Is this library "flat" (i.e. no subsystems)? 89 | 90 | %Browser(2).Library = 'TNO_dtlib_2'; 91 | %Browser(2).Name = 'Simulink'; 92 | %Browser(2).IsFlat = 0;% Is this library "flat" (i.e. no subsystems)? 93 | 94 | blkStruct.Browser = Browser; 95 | clear Browser; 96 | 97 | 98 | % Define information for model updater 99 | blkStruct.ModelUpdaterMethods.fhDetermineBrokenLinks = @UpdateSimulinkBrokenLinksMappingHelper; 100 | blkStruct.ModelUpdaterMethods.fhSeparatedChecks = @UpdateSimulinkBlocksHelper; 101 | 102 | % End of slblocks 103 | 104 | 105 | -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/README.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/CFL_Libs/README.txt -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Scripts_Data/CFL_friction_setModel.m: -------------------------------------------------------------------------------- 1 | function CFL_friction_setModel(mdlname,frictionModel) 2 | % Turn friction on or off in all contact force blocks in a model 3 | % from Simscape Multibody Contact Force Library. Pass the name of the model 4 | % as an argument to this function 5 | 6 | % Copyright 2014-2017 The MathWorks, Inc. 7 | 8 | CF_bpth=find_system(mdlname,'RegExp','on','LookUnderMasks','on','FollowLinks','on','friction_law','.*'); 9 | CF_bpth_box2box=find_system(mdlname,'RegExp','on','LookUnderMasks','on','FollowLinks','on','friction_law_box2box','.*'); 10 | CF_bpth_box2belt=find_system(mdlname,'RegExp','on','LookUnderMasks','on','FollowLinks','on','friction_law_box2belt','.*'); 11 | 12 | if(~isempty(CF_bpth)) 13 | for i=1:length(CF_bpth) 14 | within_composite_force = 0; 15 | 16 | if(~isempty(CF_bpth_box2box)) 17 | for j=1:length(CF_bpth_box2box) 18 | if (strfind(char(CF_bpth(i)),char(CF_bpth_box2box(j)))) 19 | within_composite_force = 1; 20 | end 21 | end 22 | end 23 | 24 | if(~isempty(CF_bpth_box2belt)) 25 | for k=1:length(CF_bpth_box2belt) 26 | if (strfind(char(CF_bpth(i)),char(CF_bpth_box2belt(k)))) 27 | within_composite_force = 1; 28 | end 29 | end 30 | end 31 | 32 | if(within_composite_force==0) 33 | set_param(char(CF_bpth(i)),'friction_law',frictionModel); 34 | %disp(['Force ' char(CF_bpth(i)) ' not in composite force']); 35 | %else 36 | % disp(['Force ' char(CF_bpth(i)) ' WITHIN composite force']); 37 | end 38 | end 39 | end 40 | 41 | if(~isempty(CF_bpth_box2box)) 42 | for j=1:length(CF_bpth_box2box) 43 | set_param(char(CF_bpth_box2box(j)),'friction_law_box2box',frictionModel) 44 | end 45 | end 46 | 47 | if(~isempty(CF_bpth_box2belt)) 48 | for j=1:length(CF_bpth_box2belt) 49 | set_param(char(CF_bpth_box2belt(j)),'friction_law_box2belt',frictionModel) 50 | end 51 | end 52 | 53 | end 54 | -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Scripts_Data/CFL_visual_setOnOff.m: -------------------------------------------------------------------------------- 1 | function CFL_visual_setOnOff(mdlname,visOnOff) 2 | % Show or hide all contact surfaces in all contact force blocks in a model 3 | % from Simscape Multibody Contact Force Library. Pass the name of the model 4 | % as an argument to this function 5 | 6 | % Copyright 2014-2017 The MathWorks, Inc. 7 | 8 | CF_bpth=find_system(mdlname,'RegExp','on','LookUnderMasks','on','FollowLinks','on','vis_on','.*'); 9 | CF_bpth_box2box=find_system(mdlname,'RegExp','on','LookUnderMasks','on','FollowLinks','on','vis_on_box2box','.*'); 10 | CF_bpth_box2belt=find_system(mdlname,'RegExp','on','LookUnderMasks','on','FollowLinks','on','vis_on_box2belt','.*'); 11 | 12 | if(~isempty(CF_bpth)) 13 | for i=1:length(CF_bpth) 14 | within_composite_force = 0; 15 | 16 | if(~isempty(CF_bpth_box2box)) 17 | for j=1:length(CF_bpth_box2box) 18 | if (strfind(char(CF_bpth(i)),char(CF_bpth_box2box(j)))) 19 | within_composite_force = 1; 20 | end 21 | end 22 | end 23 | 24 | if(~isempty(CF_bpth_box2belt)) 25 | for k=1:length(CF_bpth_box2belt) 26 | if (strfind(char(CF_bpth(i)),char(CF_bpth_box2belt(k)))) 27 | within_composite_force = 1; 28 | end 29 | end 30 | end 31 | 32 | if(within_composite_force==0) 33 | set_param(char(CF_bpth(i)),'vis_on',visOnOff); 34 | %disp(['Force ' char(CF_bpth(i)) ' not in composite force']); 35 | %else 36 | % disp(['Force ' char(CF_bpth(i)) ' WITHIN composite force']); 37 | end 38 | end 39 | end 40 | 41 | if(~isempty(CF_bpth_box2box)) 42 | for j=1:length(CF_bpth_box2box) 43 | set_param(char(CF_bpth_box2box(j)),'vis_on_box2box',visOnOff) 44 | end 45 | end 46 | 47 | if(~isempty(CF_bpth_box2belt)) 48 | for j=1:length(CF_bpth_box2belt) 49 | set_param(char(CF_bpth_box2belt(j)),'vis_on_box2belt',visOnOff) 50 | end 51 | end 52 | 53 | end 54 | -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Scripts_Data/CheckAnim.m: -------------------------------------------------------------------------------- 1 | function CheckAnim(animation_file) 2 | % Verify if animation file exists before attempting to display 3 | % the animation in the MATLAB web browser. 4 | 5 | % Copyright 2014-2017 The MathWorks, Inc. 6 | 7 | if (exist(animation_file)) 8 | % If exists, display in web browser 9 | web(animation_file) 10 | else 11 | % If does not exist, display warning dialog 12 | % Some animations GIFs are too large to include in zip file for sharing 13 | warndlg(sprintf('%s\n%s','The animation file for this example was not included',... 14 | 'to reduce the size of the zip file.'),'Animation Not Included'); 15 | end 16 | -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Scripts_Data/Extrusions/Extr_Data_Box.m: -------------------------------------------------------------------------------- 1 | function [xy_data] = Extr_Data_Box(box_ox, box_ix, varargin) 2 | %Extr_Data_Box Produce extrusion data for a hollow box. 3 | % [xy_data] = Extr_Data_Box(box_ox, box_ix, , ) 4 | % This function returns x-y data for a hollow box. 5 | % You can specify: 6 | % Box outer width (x) box_ox 7 | % Box inner width (x) box_ix 8 | % (optional) Box outer height (y) box_oy 9 | % (optional) Box inner height (y) box_iy 10 | % 11 | % To see a plot showing parameter values, enter the name 12 | % of the function with no arguments 13 | % >> Extr_Data_Box 14 | % 15 | % To see a plot created with your parameter values, 16 | % add 'plot' as the final argument 17 | % >> Extr_Data_Box(10,5,'plot') 18 | 19 | % Copyright 2013-2017 The MathWorks, Inc. 20 | 21 | % Default data to show diagram 22 | if (nargin == 0) 23 | box_ox = 15; 24 | box_ix = 12; 25 | box_oy = 10; 26 | box_iy = 5; 27 | elseif (nargin <= 3) 28 | box_oy = box_ox; 29 | box_iy = box_ix; 30 | elseif (nargin > 3) 31 | box_oy = varargin{1}; 32 | box_iy = varargin{2}; 33 | end 34 | 35 | if (nargin==0) 36 | showplot = 'plot'; 37 | elseif (nargin==3 || nargin==5) 38 | showplot = varargin(end); 39 | else 40 | showplot = 'n'; 41 | end 42 | 43 | % Generate extrusion data 44 | x_signs = [1 -1 -1 1]'; 45 | y_signs = [1 1 -1 -1]'; 46 | xy_data = [box_ox/2*x_signs box_oy/2*y_signs]; 47 | if(box_ix>0 && box_iy>0) 48 | xy_data = [xy_data;box_ox/2 box_oy/2;box_ix/2*y_signs box_iy/2*x_signs;box_ix/2 box_iy/2]; 49 | end 50 | 51 | % Plot diagram to show parameters and extrusion 52 | if (nargin == 0 || strcmpi(showplot,'plot')) 53 | 54 | % Figure name 55 | figString = ['h1_' mfilename]; 56 | % Only create a figure if no figure exists 57 | figExist = 0; 58 | fig_hExist = evalin('base',['exist(''' figString ''')']); 59 | if (fig_hExist) 60 | figExist = evalin('base',['ishandle(' figString ') && strcmp(get(' figString ', ''type''), ''figure'')']); 61 | end 62 | if ~figExist 63 | fig_h = figure('Name',figString); 64 | assignin('base',figString,fig_h); 65 | else 66 | fig_h = evalin('base',figString); 67 | end 68 | figure(fig_h) 69 | clf(fig_h) 70 | 71 | % Get max axis dimension 72 | maxd = max(box_ox,box_oy); 73 | 74 | % Plot extrusion 75 | patch(xy_data(:,1),xy_data(:,2),[1 1 1]*0.90,'EdgeColor','none'); 76 | hold on 77 | plot(xy_data(:,1),xy_data(:,2),'-','Marker','o','MarkerSize',4,'LineWidth',2); 78 | axis('equal'); 79 | axis([-1.1 1.1 -1.1 1.1]*maxd/2); 80 | 81 | % Show parameters 82 | hold on 83 | 84 | plot([-1 1]*box_ox/2,[0 0],'r-d','MarkerFaceColor','r'); 85 | text(0.25*box_ox,0.025*maxd,'{\color{red}box\_ox}'); 86 | 87 | plot([0 0],[-1 1]*box_oy/2,'g-d','MarkerFaceColor','g'); 88 | text(0,-0.4*box_oy,'{\color{green}box\_oy}'); 89 | 90 | if(box_ix>0 && box_iy>0) 91 | plot([-1 1]*box_ix/2,[1 1]*0.25*box_iy,'b-d','MarkerFaceColor','b'); 92 | text(0.25*box_ix,0.03*maxd+0.25*box_iy,'{\color{blue}box\_ix}'); 93 | 94 | plot([-1 -1]*0.25*box_ix,[-1 1]*box_iy/2,'k-d','MarkerFaceColor','k'); 95 | text(-0.25*box_ix+0.03*maxd,0.4*box_iy,'{\color{black}box\_iy}'); 96 | end 97 | title('[xy\_data] = Extr\_Data\_Box(box\_ox, box\_ix, );'); 98 | hold off 99 | box on 100 | clear xy_data 101 | end 102 | -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Scripts_Data/Extrusions/Extr_Data_Cam_Circles.m: -------------------------------------------------------------------------------- 1 | function [xy_data] = Extr_Data_Cam_Circles(rad1, rad2, d, radh1, radh2, varargin) 2 | %Extr_Data_Cam_Circles Produce extrusion data for a cam formed from two circles. 3 | % [xy_data] = Extr_Data_Cam_Circles(rad1, rad2, d, radh1, radh2) 4 | % This function returns x-y data for a cam formed from two circles 5 | % that are connected by lines tangent to the circles. 6 | % 7 | % You can specify: 8 | % Radius, circle 1 rad1 9 | % Radius, circle 2 rad2 10 | % Distance between circle centers d 11 | % Radius of hole at center of circle 1 radh1 12 | % Radius of hole at center of circle 2 radh2 13 | % 14 | % To see a plot showing parameter values, enter the name 15 | % of the function with no arguments 16 | % >> Extr_Data_Cam_Circles 17 | % 18 | % To see a plot created with your parameter values, 19 | % add 'plot' as the final argument 20 | % >> Extr_Data_Cam_Circles(4,3,5,1,0,'plot') 21 | 22 | % Copyright 2012-2017 The MathWorks, Inc. 23 | 24 | % Default data to show diagram 25 | if (nargin == 0) 26 | rad1 = 4; 27 | rad2 = 3; 28 | d = 5; 29 | radh1 = 1; 30 | radh2 = 1; 31 | end 32 | 33 | % Check if plot should be produced 34 | if (isempty(varargin)) 35 | showplot = 'n'; 36 | else 37 | showplot = varargin; 38 | end 39 | 40 | % Calculate angle for external tangent 41 | theta1 = acos((rad1-rad2)/d)*180/pi; 42 | 43 | % Start circle at 90 degrees to avoid self-intersecting polygons 44 | theta_cir = [90:1:360+90]'*pi/180; 45 | unit_cir = [cos(theta_cir), sin(theta_cir)]; 46 | 47 | % Calculate extrusion data 48 | % Arc for rad1 49 | theta_r1 = [(theta1:1:360-theta1)]'*pi/180; 50 | unit_arc = [cos(theta_r1), sin(theta_r1)]; 51 | xy_data1 = [rad1 * unit_arc]; 52 | if(radh1>0) 53 | % Circle for radh1 54 | xy_data1 = [xy_data1(1,:);radh1 * flipud(unit_cir);xy_data1]; 55 | end 56 | 57 | % Arc for rad2 58 | theta_r2 = [(-theta1:1:theta1)]'*pi/180; 59 | unit_arc = [cos(theta_r2), sin(theta_r2)]; 60 | xy_data2 = [rad2 * unit_arc]+repmat([d 0],size(unit_arc,1),1); 61 | if(radh2>0) 62 | % Circle for radh2 63 | xy_data2 = [xy_data2;radh2 * flipud(unit_cir)+repmat([d 0],size(unit_cir,1),1);xy_data2(end,:)]; 64 | end 65 | 66 | xy_data = [xy_data1;xy_data2]; 67 | 68 | % Plot diagram to show parameters and extrusion 69 | if (nargin == 0 || strcmpi(showplot,'plot')) 70 | 71 | % Figure name 72 | figString = ['h1_' mfilename]; 73 | % Only create a figure if no figure exists 74 | figExist = 0; 75 | fig_hExist = evalin('base',['exist(''' figString ''')']); 76 | if (fig_hExist) 77 | figExist = evalin('base',['ishandle(' figString ') && strcmp(get(' figString ', ''type''), ''figure'')']); 78 | end 79 | if ~figExist 80 | fig_h = figure('Name',figString); 81 | assignin('base',figString,fig_h); 82 | else 83 | fig_h = evalin('base',figString); 84 | end 85 | figure(fig_h) 86 | clf(fig_h) 87 | 88 | % Plot extrusion data 89 | patch(xy_data(:,1),xy_data(:,2),[1 1 1]*0.90,'EdgeColor','none'); 90 | hold on 91 | plot(xy_data(:,1),xy_data(:,2),'-','Marker','o','MarkerSize',4,'LineWidth',2); 92 | axis('square'); 93 | axis([-rad1 d+rad2 [-1 1]*(rad1+d+rad2)/2]*1.1); 94 | 95 | % Show parameters 96 | hold on 97 | plot([0 d],[0 0],'k-d','MarkerFaceColor','k','MarkerSize',10); 98 | text(d/2,0.1*max(rad1,rad2),'d'); 99 | 100 | plot([d d+rad2*cos(theta1*pi/180)],[0 rad2*sin(theta1*pi/180)],'r-d','MarkerFaceColor','r'); 101 | text(d+rad2*cos(theta1*pi/180)/2,rad2*sin(theta1*pi/180)/2,'{\color{red}rad2}'); 102 | 103 | plot([0 rad1*cos(theta1*pi/180)],[0 rad1*sin(theta1*pi/180)],'g-d','MarkerFaceColor','g'); 104 | text(rad1*cos(theta1*pi/180)/2,rad1*sin(theta1*pi/180)/2,'{\color{green}rad1}'); 105 | 106 | title(['[xy\_data] = Extr\_Data\_Cam(rad1, rad2, d1);']); 107 | hold off 108 | box on 109 | clear xy_data 110 | end 111 | -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Scripts_Data/Extrusions/Extr_Data_Ellipse.m: -------------------------------------------------------------------------------- 1 | function [xy_data] = Extr_Data_Ellipse(a, b, deg1, deg2, ctr, varargin) 2 | %Extr_Data_Ellipse Produce extrusion data for an ellipse. 3 | % [xy_data] = Extr_Data_Ellipse(a, b, deg1, deg2, ctr, varargin) 4 | % This function returns x-y data for a ring. 5 | % You can specify: 6 | % Radius 1 a 7 | % Radius 2 b 8 | % Start angle deg1 9 | % Finish angle deg2 10 | % Include Center ctr 11 | % 12 | % To see a plot showing parameter values, enter the name 13 | % of the function with no arguments 14 | % >> Extr_Data_Ellipse 15 | % 16 | % To see a plot created with your parameter values, 17 | % add 'plot' as the final argument 18 | % >> Extr_Data_Ellipse(5,2,60,315,1,'plot') 19 | 20 | % Copyright 2012-2017 The MathWorks, Inc. 21 | 22 | % Default data to show diagram 23 | if (nargin == 0) 24 | a = 5; 25 | b = 2; 26 | deg1 = 60; 27 | deg2 = 315; 28 | ctr = 1; 29 | end 30 | 31 | % Check if plot should be produced 32 | if (isempty(varargin)) 33 | showplot = 'n'; 34 | else 35 | showplot = varargin; 36 | end 37 | 38 | % Calculate quarter of ellipse 39 | xdata = a:-a/50:0; 40 | for i=1:length(xdata) 41 | ydata(i) = b/a*sqrt(a^2-xdata(i)^2); 42 | end 43 | 44 | % Full outer ellipse 45 | xy_data = [xdata -fliplr(xdata(1:end-1)) -xdata(2:end) fliplr(xdata(1:end-1)); ydata fliplr(ydata(1:end-1)) -ydata(2:end) -fliplr(ydata(1:end-1))]'; 46 | 47 | % Determine start and stop 48 | angles = unwrap(atan2(xy_data(:,2),xy_data(:,1)))*180/pi; 49 | start = find(angles>=deg1); 50 | start_ind = start(1); 51 | finish = find(angles<=deg2); 52 | finish_ind = finish(end); 53 | 54 | % Determine connection between start and finish 55 | if (ctr == 0) 56 | xy_data = [0 0; xy_data(start_ind:finish_ind,:)]; 57 | elseif (ctr == 1) 58 | xy_data = [xy_data(start_ind:finish_ind,:)]; 59 | else 60 | xy_data = [xy_data(start_ind:finish_ind,:);flipud(xy_data(start_ind:finish_ind,:))*ctr]; 61 | end 62 | 63 | % Plot diagram to show parameters and extrusion 64 | if (nargin == 0 || strcmpi(showplot,'plot')) 65 | 66 | % Figure name 67 | figString = ['h1_' mfilename]; 68 | % Only create a figure if no figure exists 69 | figExist = 0; 70 | fig_hExist = evalin('base',['exist(''' figString ''')']); 71 | if (fig_hExist) 72 | figExist = evalin('base',['ishandle(' figString ') && strcmp(get(' figString ', ''type''), ''figure'')']); 73 | end 74 | if ~figExist 75 | fig_h = figure('Name',figString); 76 | assignin('base',figString,fig_h); 77 | else 78 | fig_h = evalin('base',figString); 79 | end 80 | figure(fig_h) 81 | clf(fig_h) 82 | 83 | 84 | % Plot extrusion 85 | patch(xy_data(:,1),xy_data(:,2),[1 1 1]*0.90,'EdgeColor','none'); 86 | hold on 87 | plot(xy_data(:,1),xy_data(:,2),'-','Marker','o','MarkerSize',4,'LineWidth',2); 88 | 89 | % plot(xy_data(:,1),xy_data(:,2),'-','Marker','.','MarkerSize',12,'LineWidth',1.5); 90 | axis('equal'); 91 | axis([-1.1 1.1 -1.1 1.1]*max(a,b)); 92 | 93 | % Show parameters 94 | hold on 95 | 96 | a_label_ang = 180; 97 | b_label_ang = 90; 98 | plot([0 a*(cos(a_label_ang*pi/180))],[0 a*(sin(a_label_ang*pi/180))],'r-d','MarkerFaceColor','r'); 99 | text(cos(a_label_ang*pi/180)*0.75*a,sin(a_label_ang*pi/180)*0.75*a,'{\color{red}a}'); 100 | 101 | plot([0 b*(cos(b_label_ang*pi/180))],[0 b*(sin(b_label_ang*pi/180))],'g-d','MarkerFaceColor','g'); 102 | text(cos(b_label_ang*pi/180)*0.5*b,sin(b_label_ang*pi/180)*0.5*b,'{\color{green}b}'); 103 | 104 | plot([0 a],[0 0],'k:'); 105 | plot([0 b*cos(deg1*pi/180)],[0 b*sin(deg1*pi/180)],'k:'); 106 | plot([0 b*cos(deg2*pi/180)],[0 b*sin(deg2*pi/180)],'k:'); 107 | 108 | arc1_r = 0.6*b; 109 | arc1 = [(0:1:deg1)]'*pi/180; 110 | plot(cos(arc1)*arc1_r,sin(arc1)*arc1_r,'k-'); 111 | plot(cos(arc1(1))*arc1_r,sin(arc1(1))*arc1_r,'kd','MarkerFaceColor','k'); 112 | plot(cos(arc1(end))*arc1_r,sin(arc1(end))*arc1_r,'kd','MarkerFaceColor','k'); 113 | text(cos(deg1/2*pi/180)*arc1_r*1.1,sin(deg1/2*pi/180)*arc1_r*1.1,'deg1'); 114 | 115 | arc2_r = 0.25*b; 116 | arc2 = [(0:1:deg2)]'*pi/180; 117 | plot(cos(arc2)*arc2_r,sin(arc2)*arc2_r,'k-'); 118 | plot(cos(arc2(1))*arc2_r,sin(arc2(1))*arc2_r,'kd','MarkerFaceColor','k'); 119 | plot(cos(arc2(end))*arc2_r,sin(arc2(end))*arc2_r,'kd','MarkerFaceColor','k'); 120 | text(cos(0.7*deg2*pi/180)*arc2_r*2,sin(0.7*deg2*pi/180)*arc2_r*2,'deg2'); 121 | 122 | text(-a,0.75*a,'ctr = 0, center point included'); 123 | text(-a,0.65*a,'ctr >0 & <1, hollow ellipse created'); 124 | text(-a,0.55*a,'ctr = 1, chord connects ends'); 125 | 126 | title(['[xy\_data] = Extr\_Data\_Ellipse(a, b, deg1, deg2, ctr);']); 127 | hold off 128 | box on 129 | clear xy_data 130 | end 131 | -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Scripts_Data/Extrusions/Extr_Data_Frustum_Conical.m: -------------------------------------------------------------------------------- 1 | function [xy_data] = Extr_Data_Frustum_Conical(cone_or, cone_th, varargin) 2 | %Extr_Data_Frustum_Conical Produce *revolution* data for a conical frustum. 3 | % [xy_data] = Extr_Data_Frustum_Conical(cone_or, cone_th, , ) 4 | % This function returns x-y data for a conical frustrum. 5 | % You can specify: 6 | % Cone outer radius (m) cone_or 7 | % Cone theta (deg) cone_th 8 | % (optional) Cone height (m) cone_h 9 | % (optional) Cone inner radius (m) cone_ir 10 | % 11 | % To see a plot showing parameter values, enter the name 12 | % of the function with no arguments 13 | % >> Extr_Data_Frustum_Conical 14 | % 15 | % To see a plot created with your parameter values, 16 | % add 'plot' as the final argument 17 | % >> Extr_Data_Frustum_Conical(5,60,4,4,'plot') 18 | 19 | % Copyright 2017 The MathWorks, Inc. 20 | 21 | % Default data to show diagram 22 | showplot = 'n'; 23 | if (nargin == 0) 24 | cone_or = 5; 25 | cone_th = 60; 26 | cone_h = 4; 27 | cone_ir = 4; 28 | showplot = 'plot'; 29 | elseif (nargin == 2) 30 | cone_h = cone_or*tand(cone_th); 31 | cone_ir = 0; 32 | elseif (nargin == 3) 33 | cone_ir = 0; 34 | if ischar(varargin{1}) % PLOT REQUESTED 35 | showplot = varargin{1}; 36 | cone_h = cone_or*tand(cone_th); 37 | else 38 | cone_h = varargin{1}; % Ad SPECIFIED 39 | end 40 | elseif (nargin == 4) 41 | cone_h = varargin{1}; % Ad SPECIFIED 42 | if ischar(varargin{2}) % PLOT REQUESTED 43 | showplot = varargin{2}; 44 | cone_ir = 0; 45 | else 46 | cone_ir = varargin{2}; % Ad SPECIFIED 47 | end 48 | elseif (nargin == 5) 49 | cone_h = varargin{1}; % Ad SPECIFIED 50 | cone_ir = varargin{2}; % Ad SPECIFIED 51 | showplot = varargin{3}; 52 | end 53 | 54 | % Generate extrusion data 55 | h_out = min(cone_h,cone_or*tand(cone_th)); 56 | x_out = max(0,cone_or-h_out/tand(cone_th)); 57 | h_in = min(h_out,cone_ir*tand(cone_th)); 58 | x_in = max(0,cone_ir-h_in/tand(cone_th)); 59 | 60 | xy_data = [... 61 | cone_ir 0; 62 | cone_or 0; 63 | x_out h_out]; 64 | 65 | % Logic to avoid duplicate coordinates 66 | if (x_out ~= 0) 67 | xy_data = [xy_data; x_in h_out]; 68 | end 69 | 70 | if ((cone_ir ~= 0) && (h_in ~= h_out)) 71 | xy_data = [xy_data; x_in h_in]; 72 | end 73 | 74 | 75 | 76 | % Plot diagram to show parameters and extrusion 77 | if (nargin == 0 || strcmpi(showplot,'plot')) 78 | 79 | % Figure name 80 | figString = ['h1_' mfilename]; 81 | % Only create a figure if no figure exists 82 | figExist = 0; 83 | fig_hExist = evalin('base',['exist(''' figString ''')']); 84 | if (fig_hExist) 85 | figExist = evalin('base',['ishandle(' figString ') && strcmp(get(' figString ', ''type''), ''figure'')']); 86 | end 87 | if ~figExist 88 | fig_h = figure('Name',figString); 89 | assignin('base',figString,fig_h); 90 | else 91 | fig_h = evalin('base',figString); 92 | end 93 | figure(fig_h) 94 | clf(fig_h) 95 | 96 | % Get max axis dimension 97 | % maxd = max(box_ox,box_oy); 98 | 99 | % Plot data 100 | patch(xy_data(:,1),xy_data(:,2),[1 1 1]*0.90,'EdgeColor','none'); 101 | hold on 102 | plot(xy_data(:,1),xy_data(:,2),'-','Marker','o','MarkerSize',4,'LineWidth',2); 103 | 104 | % Mirror data to show revolution 105 | patch(-xy_data(:,1),xy_data(:,2),[1 1 1]*0.90,'EdgeColor','none'); 106 | hold on 107 | plot(-xy_data(:,1),xy_data(:,2),'-','Marker','o','MarkerSize',4,'LineWidth',2); 108 | 109 | axis('equal'); 110 | 111 | % Show parameters 112 | hold on 113 | 114 | plot([0 cone_or],[0 0],'r-d','MarkerFaceColor','r'); 115 | text(0.25*cone_or,0.025*h_out,'{\color{red}cone\_or}','HorizontalAlignment','center'); 116 | 117 | if(cone_ir>0) 118 | plot([0 -cone_ir],[0 0],'g-d','MarkerFaceColor','g'); 119 | text(-0.25*cone_ir,0.025*h_out,'{\color{green}cone\_ir}','HorizontalAlignment','center'); 120 | end 121 | 122 | plot([0 0],[0 cone_h],'b-d','MarkerFaceColor','b'); 123 | text(0, 0.5*cone_h,'{\color{blue}cone\_h}'); 124 | 125 | arc1_r = 0.6*cone_or; 126 | arc1 = [(0:1:cone_th)]'*pi/180; 127 | plot(-cos(arc1)*arc1_r+cone_or,sin(arc1)*arc1_r,'k-'); 128 | plot(-cos(arc1(1))*arc1_r+cone_or,sin(arc1(1))*arc1_r,'kd','MarkerFaceColor','k'); 129 | plot(-cos(arc1(end))*arc1_r+cone_or,sin(arc1(end))*arc1_r,'kd','MarkerFaceColor','k'); 130 | text(-cos(cone_th/2*pi/180)*arc1_r*1.1+cone_or,sin(cone_th/2*pi/180)*arc1_r*1.1,'cone\_theta'); 131 | 132 | 133 | title('[xy\_data] = Extr\_Data\_Frustum\_Conical(cone\_or, cone\_th, );'); 134 | hold off 135 | box on 136 | clear xy_data 137 | end 138 | -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Scripts_Data/Extrusions/Extr_Data_LinkHoles.m: -------------------------------------------------------------------------------- 1 | function [xy_data] = Extr_Data_LinkHoles(L, W, r, num_holes, varargin) 2 | %Extr_Data_LinkHoles Produce extrusion data for a link with an arbitrary 3 | %number of holes and rounded ends. 4 | % [xy_data] = Extr_Data_LinkHoles(L, W, r, num_holes) 5 | % This function returns x-y data for a link with half a hole at one end. 6 | % You can specify: 7 | % Length L 8 | % Width W 9 | % Hole radius r 10 | % # holes num_holes 11 | % 12 | % To see a plot showing parameter values, enter the name 13 | % of the function with no arguments 14 | % >> Extr_Data_LinkHoles 15 | % 16 | % To see a plot created with your parameter values, 17 | % add 'plot' as the final argument 18 | % >> Extr_Data_LinkHoles(10,5,1,3,'plot') 19 | % 20 | % Copyright 2014-2017 The MathWorks, Inc. 21 | 22 | % Default data to show diagram 23 | if (nargin == 0) 24 | L = 15; 25 | W = 5; 26 | r = 1; 27 | num_holes = 4; 28 | end 29 | 30 | % Check if plot should be produced 31 | if (isempty(varargin)) 32 | showplot = 'n'; 33 | else 34 | showplot = char(varargin); 35 | end 36 | 37 | 38 | % Half length and width 39 | hl = L / 2; 40 | hw = W / 2; 41 | 42 | % Rounded ends and outer boundary of member 43 | theta = (-89:1:+90)' * pi/180; % CCW 44 | rght_end = repmat([hl 0], 180, 1) + hw * [cos(theta), sin(theta)]; 45 | left_end = flipud(rght_end) * diag([-1 1]); 46 | boundary = [rght_end; left_end]; 47 | 48 | % Circular holes 49 | theta = (270:-1:-90)' * pi/180; % CW 50 | hole = [[0 -hw]; r * [cos(theta), sin(theta)]; [0 -hw]]; 51 | holes = kron(linspace(-hl, +hl, num_holes)', repmat([1 0], 363, 1)) ... 52 | + repmat(hole, num_holes, 1); 53 | 54 | xy_data = [boundary; holes]; 55 | 56 | % Plot diagram to show parameters and extrusion 57 | if (nargin == 0 || strcmpi(showplot,'plot')) 58 | % Figure name 59 | figString = ['h1_' mfilename]; 60 | % Only create a figure if no figure exists 61 | figExist = 0; 62 | fig_hExist = evalin('base',['exist(''' figString ''')']); 63 | if (fig_hExist) 64 | figExist = evalin('base',['ishandle(' figString ') && strcmp(get(' figString ', ''type''), ''figure'')']); 65 | end 66 | if ~figExist 67 | fig_h = figure('Name',figString); 68 | assignin('base',figString,fig_h); 69 | else 70 | fig_h = evalin('base',figString); 71 | end 72 | figure(fig_h) 73 | clf(fig_h) 74 | 75 | % Plot extrusion 76 | patch(xy_data(:,1),xy_data(:,2),[1 1 1]*0.95,'EdgeColor','none'); 77 | hold on 78 | plot(xy_data(:,1),xy_data(:,2),'-','Marker','o','MarkerSize',4,'LineWidth',2); 79 | 80 | axis('equal'); 81 | axis([-1 1 -1 1]*(L+W)*1.1/2); 82 | 83 | % Show parameters 84 | plot([-L/2 L/2],[0 0],'r-d','MarkerFaceColor','r'); 85 | text(-L/4,W/10,'{\color{red}L}'); 86 | plot([L/4 L/4],[-W/2 W/2],'g-d','MarkerFaceColor','g'); 87 | text(L/3.8,W/4,'{\color{green}W}'); 88 | plot([-L/2 -L/2+r*sin(30*pi/180)],[0 r*cos(30*pi/180)],'k-d','MarkerFaceColor','k'); 89 | text(-L/2+r*sin(30*pi/180)*1.4,1.4*r*cos(30*pi/180),'r'); 90 | 91 | title('[xy\_data] = Extr\_Data\_LinkHoles(L, W, r, num\_holes);'); 92 | hold off 93 | box on 94 | clear xy_data 95 | end 96 | 97 | 98 | -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/Scripts_Data/Extrusions/Extr_Data_Ring.m: -------------------------------------------------------------------------------- 1 | function [xy_data] = Extr_Data_Ring(ring_or, ring_ir, deg1, deg2, varargin) 2 | %Extr_Data_Ring Produce extrusion data for a ring. 3 | % [xy_data] = Extr_Data_Ring(ring_or, ring_ir, deg1, deg2) 4 | % This function returns x-y data for a ring. 5 | % You can specify: 6 | % Outer radius ring_or 7 | % Inner radius ring_ir 8 | % Start angle deg1 9 | % Finish angle deg2 10 | % 11 | % To see a plot showing parameter values, enter the name 12 | % of the function with no arguments 13 | % >> Extr_Data_Ring 14 | % 15 | % To see a plot created with your parameter values, 16 | % add 'plot' as the final argument 17 | % >> Extr_Data_Ring(10,5,45,315,'plot') 18 | 19 | % Copyright 2012-2017 The MathWorks, Inc. 20 | 21 | % Default data to show diagram 22 | if (nargin == 0) 23 | deg1 = 45; 24 | deg2 = 315; 25 | ring_or = 10; 26 | ring_ir = 5; 27 | end 28 | 29 | % Check if plot should be produced 30 | if (isempty(varargin)) 31 | showplot = 'n'; 32 | else 33 | showplot = varargin; 34 | end 35 | 36 | % Calculate extrusion data 37 | theta = [(deg1:1:deg2) ]'*pi/180; 38 | unit_circle = [cos(theta), sin(theta)]; 39 | if(ring_ir>0) 40 | xy_data = [ring_or * unit_circle; ring_ir * flipud(unit_circle)]; 41 | else 42 | xy_data = [ring_or * unit_circle]; 43 | end 44 | 45 | % Plot diagram to show parameters and extrusion 46 | if (nargin == 0 || strcmpi(showplot,'plot')) 47 | 48 | % Figure name 49 | figString = ['h1_' mfilename]; 50 | % Only create a figure if no figure exists 51 | figExist = 0; 52 | fig_hExist = evalin('base',['exist(''' figString ''')']); 53 | if (fig_hExist) 54 | figExist = evalin('base',['ishandle(' figString ') && strcmp(get(' figString ', ''type''), ''figure'')']); 55 | end 56 | if ~figExist 57 | fig_h = figure('Name',figString); 58 | assignin('base',figString,fig_h); 59 | else 60 | fig_h = evalin('base',figString); 61 | end 62 | figure(fig_h) 63 | clf(fig_h) 64 | 65 | % Plot extrusion 66 | patch(xy_data(:,1),xy_data(:,2),[1 1 1]*0.90,'EdgeColor','none'); 67 | hold on 68 | plot(xy_data(:,1),xy_data(:,2),'-','Marker','o','MarkerSize',4,'LineWidth',2); 69 | axis('equal'); 70 | axis([-1.1 1.1 -1.1 1.1]*ring_or); 71 | 72 | % Show parameters 73 | hold on 74 | 75 | ir_label_ang = deg1+deg2*0.2; 76 | or_label_ang = deg1+deg2*0.5; 77 | plot([0 ring_or*(cos(or_label_ang*pi/180))],[0 ring_or*(sin(or_label_ang*pi/180))],'r-d','MarkerFaceColor','r'); 78 | text(cos(or_label_ang*pi/180)*0.75*ring_or,sin(or_label_ang*pi/180)*0.75*ring_or,'{\color{red}ring\_or}'); 79 | 80 | plot([0 ring_ir*(cos(ir_label_ang*pi/180))],[0 ring_ir*(sin(ir_label_ang*pi/180))],'g-d','MarkerFaceColor','g'); 81 | text(cos(ir_label_ang*pi/180)*0.5*ring_ir,sin(ir_label_ang*pi/180)*0.5*ring_ir,'{\color{green}ring\_ir}'); 82 | 83 | plot([0 ring_or],[0 0],'k:'); 84 | plot([0 ring_ir*cos(deg1*pi/180)],[0 ring_ir*sin(deg1*pi/180)],'k:'); 85 | plot([0 ring_ir*cos(deg2*pi/180)],[0 ring_ir*sin(deg2*pi/180)],'k:'); 86 | 87 | arc1_r = 0.75*ring_ir; 88 | arc1 = linspace(0,deg1,50)'*pi/180; 89 | plot(cos(arc1)*arc1_r,sin(arc1)*arc1_r,'k-'); 90 | plot(cos(arc1(1))*arc1_r,sin(arc1(1))*arc1_r,'kd','MarkerFaceColor','k'); 91 | plot(cos(arc1(end))*arc1_r,sin(arc1(end))*arc1_r,'kd','MarkerFaceColor','k'); 92 | text(cos(deg1/2*pi/180)*arc1_r*1.1,sin(deg1/2*pi/180)*arc1_r*1.1,'deg1'); 93 | 94 | arc2_r = 0.25*ring_ir; 95 | arc2 = [(0:1:deg2)]'*pi/180; 96 | plot(cos(arc2)*arc2_r,sin(arc2)*arc2_r,'k-'); 97 | plot(cos(arc2(1))*arc2_r,sin(arc2(1))*arc2_r,'kd','MarkerFaceColor','k'); 98 | plot(cos(arc2(end))*arc2_r,sin(arc2(end))*arc2_r,'kd','MarkerFaceColor','k'); 99 | text(cos(0.7*deg2*pi/180)*arc2_r*2,sin(0.7*deg2*pi/180)*arc2_r*2,'deg2'); 100 | title(['[xy\_data] = Extr\_Data\_Ring(ring\_or, ring\_ir, deg1, deg2);']); 101 | hold off 102 | box on 103 | clear xy_data 104 | end 105 | -------------------------------------------------------------------------------- /lib/Resources/CFL_Libs/startup_Contact_Forces.m: -------------------------------------------------------------------------------- 1 | % Startup for Simscape Multibody Contact Force Library 2 | % Copyright 2014-2017 The MathWorks, Inc. 3 | 4 | CFR_HomeDir = pwd; 5 | addpath(genpath(pwd)); 6 | 7 | CFL_libname = 'Contact_Forces_Lib'; 8 | load_system(CFL_libname); 9 | CFL_ver = get_param(CFL_libname,'Description'); 10 | disp(CFL_ver); 11 | which(CFL_libname) 12 | 13 | tempNumCFLLibs = which(CFL_libname,'-all'); 14 | if (length(tempNumCFLLibs)>1) 15 | tempCFLwarnStr = sprintf('Multiple copies of the Simscape Multibody Contact Force Library are on the MATLAB path. It is recommended you only have one copy on your path. Please consider adjusting your MATLAB path so that only one copy is present.\n\nLocations of Simscape Multibody Contact Force Library on your path:\n'); 16 | tempCFLLibStr = sprintf('%s\n',tempNumCFLLibs{:}); 17 | warning([tempCFLwarnStr tempCFLLibStr]) 18 | end 19 | clear tempNumCFLLibs tempCFLwarnStr 20 | 21 | if(exist('Cam_Follower.slx')==4) 22 | Cam_Follower 23 | web('Contact_Forces_Demo_Script.html'); 24 | end 25 | 26 | -------------------------------------------------------------------------------- /lib/Resources/Images/BEST2020Arena.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/BEST2020Arena.png -------------------------------------------------------------------------------- /lib/Resources/Images/BEST2020Cells.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/BEST2020Cells.png -------------------------------------------------------------------------------- /lib/Resources/Images/BEST2020Environment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/BEST2020Environment.png -------------------------------------------------------------------------------- /lib/Resources/Images/BEST2020Robot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/BEST2020Robot.png -------------------------------------------------------------------------------- /lib/Resources/Images/BEST2020Vaccines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/BEST2020Vaccines.png -------------------------------------------------------------------------------- /lib/Resources/Images/BEST2021arena.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/BEST2021arena.png -------------------------------------------------------------------------------- /lib/Resources/Images/BEST2021environment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/BEST2021environment.png -------------------------------------------------------------------------------- /lib/Resources/Images/BEST2021lightpoles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/BEST2021lightpoles.png -------------------------------------------------------------------------------- /lib/Resources/Images/BEST2021objects.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/BEST2021objects.png -------------------------------------------------------------------------------- /lib/Resources/Images/BESTRobotics_Usage_Logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/BESTRobotics_Usage_Logo.jpg -------------------------------------------------------------------------------- /lib/Resources/Images/BlueObjD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/BlueObjD.png -------------------------------------------------------------------------------- /lib/Resources/Images/ClawbotIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/ClawbotIcon.png -------------------------------------------------------------------------------- /lib/Resources/Images/Compass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/Compass.png -------------------------------------------------------------------------------- /lib/Resources/Images/CompassVisual.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/CompassVisual.PNG -------------------------------------------------------------------------------- /lib/Resources/Images/ContactSwitch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/ContactSwitch.png -------------------------------------------------------------------------------- /lib/Resources/Images/DashboardControls.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/DashboardControls.PNG -------------------------------------------------------------------------------- /lib/Resources/Images/Gamepad_Controller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/Gamepad_Controller.png -------------------------------------------------------------------------------- /lib/Resources/Images/GlobeMotor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/GlobeMotor.png -------------------------------------------------------------------------------- /lib/Resources/Images/GreenObjD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/GreenObjD.png -------------------------------------------------------------------------------- /lib/Resources/Images/Gyroscope.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/Gyroscope.png -------------------------------------------------------------------------------- /lib/Resources/Images/KeyboardIcon.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/KeyboardIcon.PNG -------------------------------------------------------------------------------- /lib/Resources/Images/Lidar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/Lidar.png -------------------------------------------------------------------------------- /lib/Resources/Images/MLRobot.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/MLRobot.PNG -------------------------------------------------------------------------------- /lib/Resources/Images/ObjectArena.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/ObjectArena.PNG -------------------------------------------------------------------------------- /lib/Resources/Images/ObjectDetector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/ObjectDetector.png -------------------------------------------------------------------------------- /lib/Resources/Images/ObjectDetectorVisual.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/ObjectDetectorVisual.PNG -------------------------------------------------------------------------------- /lib/Resources/Images/ObjectEnv.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/ObjectEnv.PNG -------------------------------------------------------------------------------- /lib/Resources/Images/ObstacleArena.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/ObstacleArena.PNG -------------------------------------------------------------------------------- /lib/Resources/Images/ObstacleEnv.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/ObstacleEnv.PNG -------------------------------------------------------------------------------- /lib/Resources/Images/PlaygroundImage.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/PlaygroundImage.PNG -------------------------------------------------------------------------------- /lib/Resources/Images/RP_app.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/RP_app.PNG -------------------------------------------------------------------------------- /lib/Resources/Images/RP_icon.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/RP_icon.PNG -------------------------------------------------------------------------------- /lib/Resources/Images/RedObjD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/RedObjD.png -------------------------------------------------------------------------------- /lib/Resources/Images/SumoArena.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/SumoArena.PNG -------------------------------------------------------------------------------- /lib/Resources/Images/SumoGame.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/SumoGame.PNG -------------------------------------------------------------------------------- /lib/Resources/Images/SwitchVisual.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/SwitchVisual.PNG -------------------------------------------------------------------------------- /lib/Resources/Images/USVisual.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/USVisual.PNG -------------------------------------------------------------------------------- /lib/Resources/Images/advanced_sensors_lib.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/advanced_sensors_lib.PNG -------------------------------------------------------------------------------- /lib/Resources/Images/arcadeModule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/arcadeModule.png -------------------------------------------------------------------------------- /lib/Resources/Images/contactDiscDisc.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/contactDiscDisc.PNG -------------------------------------------------------------------------------- /lib/Resources/Images/discRobot.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/discRobot.PNG -------------------------------------------------------------------------------- /lib/Resources/Images/encoder.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/encoder.jpg -------------------------------------------------------------------------------- /lib/Resources/Images/environments_lib.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/environments_lib.PNG -------------------------------------------------------------------------------- /lib/Resources/Images/lamps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/lamps.png -------------------------------------------------------------------------------- /lib/Resources/Images/latchGraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/latchGraph.png -------------------------------------------------------------------------------- /lib/Resources/Images/objectContact.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/objectContact.PNG -------------------------------------------------------------------------------- /lib/Resources/Images/objectWallContact.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/objectWallContact.PNG -------------------------------------------------------------------------------- /lib/Resources/Images/obstacle-environment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/obstacle-environment.png -------------------------------------------------------------------------------- /lib/Resources/Images/obstacle-tower.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/obstacle-tower.png -------------------------------------------------------------------------------- /lib/Resources/Images/obstacle-tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/obstacle-tree.png -------------------------------------------------------------------------------- /lib/Resources/Images/obstacleContactDisc.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/obstacleContactDisc.PNG -------------------------------------------------------------------------------- /lib/Resources/Images/plowRobot.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/plowRobot.PNG -------------------------------------------------------------------------------- /lib/Resources/Images/sensors_lib.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/sensors_lib.PNG -------------------------------------------------------------------------------- /lib/Resources/Images/ultrasonic_sensor.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/ultrasonic_sensor.jpg -------------------------------------------------------------------------------- /lib/Resources/Images/vexv5GamepadSimInput.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/vexv5GamepadSimInput.PNG -------------------------------------------------------------------------------- /lib/Resources/Images/vexv5GamepadSimInput2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/vexv5GamepadSimInput2.PNG -------------------------------------------------------------------------------- /lib/Resources/Images/wallContactDisc.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Images/wallContactDisc.PNG -------------------------------------------------------------------------------- /lib/Resources/RP_Simulator_Components.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/RP_Simulator_Components.slx -------------------------------------------------------------------------------- /lib/Resources/Utils/Extr_Data_Mesh.m: -------------------------------------------------------------------------------- 1 | function [xy_data] = Extr_Data_Mesh(lenX, lenY, numHx, numHy, hx, hy, varargin) 2 | %Extr_Data_Mesh Produce extrusion data for a square mesh. 3 | % [xy_data] = Extr_Data_Mesh(lenX, lenY, numHx, numHy, hx, hy) 4 | % This function returns x-y data for a square mesh. 5 | % You can specify: 6 | % Mesh outer width lenX 7 | % Mesh outer length lenY 8 | % Number of mesh holes along X numHx 9 | % Number of mesh holes along Y numHy 10 | % Width of mesh holes (along x) hx 11 | % Length of mesh holes (along y) hy 12 | % 13 | % To see a plot showing parameter values, enter the name 14 | % of the function with no arguments 15 | % >> Extr_Data_Mesh 16 | % 17 | % To see a plot created with your parameter values, 18 | % add 'plot' as the final argument 19 | % >> Extr_Data_Mesh(3,3,3,2,0.8,0.8,'plot') 20 | 21 | % Copyright 2017 The MathWorks, Inc. 22 | 23 | % Default data to show diagram 24 | if (nargin == 0) 25 | lenX = 3; 26 | lenY = 3; 27 | numHx = 3; 28 | numHy = 2; 29 | hx = 0.8; 30 | hy = 0.8; 31 | end 32 | 33 | self_intersect_offset = 1e-4; 34 | 35 | if (nargin==0 ||nargin==7) 36 | showplot = 'plot'; 37 | else 38 | showplot = 'n'; 39 | end 40 | 41 | % Calculate extrusion data 42 | 43 | tx = (lenX-(numHx*hx))/(numHx+1); 44 | ty = (lenY-(numHy*hy))/(numHy+1); 45 | 46 | xy_data = [... 47 | 0 0; 48 | lenX 0; 49 | lenX ty-self_intersect_offset; 50 | tx ty-self_intersect_offset]; 51 | 52 | for j=1:numHy 53 | for i=1:numHx 54 | append_pts = [ 55 | tx*(i)+hx*(i-1) ty+(ty+hy)*(j-1); 56 | tx*(i)+hx*(i-1) ty+hy+(ty+hy)*(j-1); 57 | tx*(i)+hx*i ty+hy+(ty+hy)*(j-1); 58 | tx*(i)+hx*i ty+(ty+hy)*(j-1); 59 | ]; 60 | xy_data = [xy_data;append_pts]; 61 | end 62 | if(i==numHx) 63 | xy_data = [xy_data; 64 | lenX hy*(j-1)+ty*j; 65 | lenX hy*j+ty*(j+1)-self_intersect_offset; 66 | tx hy*j+ty*(j+1)-self_intersect_offset]; 67 | end 68 | if(j==numHy) 69 | xy_data=[xy_data;0 lenY-self_intersect_offset]; 70 | end 71 | end 72 | 73 | xy_data = xy_data-[lenX/2 lenY/2]; 74 | 75 | % Plot diagram to show parameters and extrusion 76 | 77 | if (nargin == 0 || strcmpi(showplot,'plot')) 78 | 79 | % Get max axis dimension 80 | maxd = max(lenX,lenY); 81 | 82 | % Plot extrusion 83 | plot(xy_data(:,1),xy_data(:,2),'b-o','LineWidth',1.5); 84 | axis('square'); 85 | axis([-0.55 0.55 -0.55 0.55]*maxd); 86 | 87 | % Show parameters 88 | 89 | hold on 90 | 91 | plot([-0.5 0.5]*lenX,-[1 1]*(lenY-ty)/2,'r-d','MarkerFaceColor','r'); 92 | text(0,-(lenY-ty)/2,'{\color{red}lenX}'); 93 | 94 | plot(-[1 1]*(lenX-tx)/2,[-0.5 0.5]*lenY,'c-d','MarkerFaceColor','c'); 95 | text(-(lenX-tx)/2,0,'{\color{cyan}lenY}'); 96 | 97 | plot([tx tx+hx]-lenX/2,[1 1]*(ty+hy/2)-lenY/2,'g-d','MarkerFaceColor','g'); 98 | text((tx+hx/2)-lenX/2,(ty+hy/2)-lenY/2,'{\color{green}hx}'); 99 | 100 | plot([-1 -1]*(tx+hx/2)+lenX/2,-[ty ty+hy]+lenY/2,'m-d','MarkerFaceColor','m'); 101 | text(-(tx+hx/2)+lenX/2,-(ty+hy/2)+lenY/2,'{\color{magenta}hy}'); 102 | 103 | plot([tx+hx/2 2*tx+3*hx/2]-lenX/2,-[1 1]*(ty+hy/2)+lenY/2,'k:d','MarkerFaceColor','w'); 104 | text(-lenX/2+(tx+hx/2),lenY/2-(ty+hy/4),'{\color{black}numHx}','HorizontalAlignment','center'); 105 | 106 | title(['[xy\_data] = Extr\_Data\_Mesh(lenX, lenY, numHx, numHy, hx, hy);']); 107 | hold off 108 | clear xy_data 109 | 110 | end 111 | -------------------------------------------------------------------------------- /lib/Resources/Utils/LidarSensorRP.m: -------------------------------------------------------------------------------- 1 | classdef LidarSensorRP < matlab.System & matlab.system.mixin.CustomIcon & matlab.system.mixin.Propagates 2 | % LIDARSENSOR 2D Lidar simulator 3 | % 4 | % Returns the angles and ranges of a simulated lidar sensor based on 5 | % the input map (occupancy grid), scan offsets/angles, and maximum range. 6 | % Range values outside the maximum range will return NaN. 7 | % 8 | % 9 | % Copyright 2018 The MathWorks, Inc. 10 | 11 | %% PROPERTIES 12 | % Public (user-visible) properties 13 | properties(Nontunable) 14 | mapName = ''; % Map 15 | end 16 | properties 17 | sensorOffset = [0,0]; % Lidar sensor offset (x,y) [m] 18 | scanAngles = [-pi/4,0,pi/4]; % Scan angles [rad] 19 | maxRange = 5; % Maximum range [m] 20 | end 21 | 22 | % Private properties 23 | properties(Access = private) 24 | map; % Occupancy grid 25 | end 26 | 27 | %% METHODS 28 | methods(Access = protected) 29 | 30 | % Setup method: Initializes all necessary graphics objects 31 | function setupImpl(obj) 32 | 33 | % Load the occupancy grid 34 | obj.map = createMapFromName(obj.mapName); 35 | 36 | end 37 | 38 | % Step method: Outputs simulated lidar ranges based on map, 39 | % robot pose, and scan angles/max range 40 | function ranges = stepImpl(obj,pose) 41 | 42 | % Initialize the ranges to the invalid value (NaN) 43 | ranges = nan(numel(obj.scanAngles),1); 44 | 45 | % If the map is empty or the pose is outside the map limits, 46 | % return all NaN 47 | if isempty(obj.map) 48 | warning('Robot map is empty. Returning NaN for lidar ranges.') 49 | return; 50 | elseif (pose(1)obj.map.XWorldLimits(2)) || ... 51 | (pose(2)obj.map.YWorldLimits(2)) 52 | warning('Robot pose outside world limits. Returning NaN for lidar ranges.'); 53 | return; 54 | end 55 | 56 | % Find the sensor pose 57 | theta = pose(3); 58 | offsetVec = [cos(theta) -sin(theta); ... 59 | sin(theta) cos(theta)]*obj.sensorOffset'; 60 | sensorLoc = pose(1:2)' + offsetVec'; 61 | 62 | % Cast a ray from the robot pose through the max range 63 | 64 | % If there is a single sensor offset, use that value and find 65 | % the intersection points/ranges in a single command 66 | if size(sensorLoc,1) == 1 67 | sensorPose = [sensorLoc, theta]; 68 | interPts = rayIntersection(obj.map, sensorPose, ... 69 | obj.scanAngles, obj.maxRange); 70 | offsets = interPts-sensorPose(1:2); 71 | ranges = sqrt(sum(offsets.^2,2)); 72 | % Else, loop through each sensor location and find the 73 | % intersection points/ranges one by one 74 | else 75 | for idx = 1:numel(ranges) 76 | sensorPose = [sensorLoc(idx,:), theta]; 77 | interPts = rayIntersection(obj.map, sensorPose, ... 78 | obj.scanAngles(idx), obj.maxRange); 79 | offsets = interPts-sensorPose(1:2); 80 | ranges(idx) = sqrt(sum(offsets^2,2)); 81 | end 82 | end 83 | end 84 | 85 | % More methods needed for the Simulink block to inherit its output 86 | % sizes from the scan angle parameter provided. 87 | function sz = getOutputSizeImpl(obj) 88 | sz = numel(obj.scanAngles); 89 | end 90 | 91 | function fx = isOutputFixedSizeImpl(~) 92 | fx = true; 93 | end 94 | 95 | function dt = getOutputDataTypeImpl(obj) 96 | dt = propagatedInputDataType(obj,1); 97 | end 98 | 99 | function cp = isOutputComplexImpl(~) 100 | cp = false; 101 | end 102 | 103 | % Define icon for System block 104 | function icon = getIconImpl(~) 105 | icon = {'Lidar','Sensor'}; 106 | end 107 | 108 | end 109 | 110 | methods (Static, Access = protected) 111 | % Do not show "Simulate using" option 112 | function flag = showSimulateUsingImpl 113 | flag = false; 114 | end 115 | % Always run in interpreted mode 116 | function simMode = getSimulateUsingImpl 117 | simMode = 'Interpreted execution'; 118 | end 119 | end 120 | 121 | end 122 | -------------------------------------------------------------------------------- /lib/Resources/Utils/PlaygroundCreateSimMap.m: -------------------------------------------------------------------------------- 1 | function mapForSim = PlaygroundCreateSimMap(Arena,blk) 2 | % This function parses through the settings in the obstacle environment 3 | % mask and creates an occupancy grid in order to implement sensors 4 | % Copyright 2018 The MathWorks, Inc. 5 | 6 | arenaDimensions=[Arena.width Arena.length]; 7 | % Normalize the arena dimensions 8 | normDims=arenaDimensions/max(arenaDimensions); 9 | mapScale=200/max(arenaDimensions); 10 | mapGridSize=round(normDims*200); 11 | 12 | 13 | % Initialize obstacle map 14 | locObsMap = ones(mapGridSize(1),mapGridSize(2),'single'); 15 | for idx = 1:size(Arena.obj,2) 16 | % add walls to occupancy map 17 | locObsMap(1:5,:)=0; 18 | locObsMap(end-5:end,:)=0; 19 | locObsMap(:,1:5)=0; 20 | locObsMap(:,end-5:end)=0; 21 | 22 | % if obstacle is enabled in mask then add to occupancy map 23 | if strcmp(Arena.obj(idx).status,'on') 24 | 25 | 26 | obsLoc(1)=((Arena.obj(idx).position(1)+Arena.length/2)*mapScale)-(Arena.obj(idx).width*mapScale/2); 27 | obsLoc(2)=mapGridSize(1)-((Arena.obj(idx).position(2)+Arena.width/2)*mapScale)-(Arena.obj(idx).length*mapScale/2); 28 | obsLoc(3)= Arena.obj(idx).width*mapScale; 29 | obsLoc(4)= Arena.obj(idx).length*mapScale; 30 | 31 | % Get obstacle indices 32 | currObsLoc = ceil(obsLoc); 33 | colIdx = currObsLoc(1):(currObsLoc(1)+currObsLoc(3)); 34 | rowIdx = currObsLoc(2):(currObsLoc(2)+currObsLoc(4)); 35 | 36 | % Set obstacle indices to 0 in map 37 | locObsMap(rowIdx,colIdx) = 0; 38 | 39 | end 40 | 41 | end 42 | 43 | mapForSim.obsMap=locObsMap; 44 | mapForSim.scaleFactor=mapScale; 45 | % imshow(mapForSim.obsMap*240) 46 | % Create simulation map using binary occupancy grid 47 | % compMap = imcomplement(locObsMap); %binary occupancy grid flips this for some reason 48 | compMap=1-locObsMap; 49 | 50 | mapForSim.simMap = robotics.BinaryOccupancyGrid(compMap,mapScale); 51 | % image(mapForSim.obsMap*240) 52 | % show(mapForSim.simMap) 53 | 54 | % Only for testing 55 | % assignin('base','occGrid',mapForSim.simMap) 56 | 57 | 58 | end -------------------------------------------------------------------------------- /lib/Resources/Utils/RPInit.m: -------------------------------------------------------------------------------- 1 | function RPInit() 2 | % RP Environment Initalization script 3 | % This script initalizes sensors and creates the necessary information for 4 | % all sensors to operate accordingly. 5 | % Copyright 2018 The MathWorks, Inc. 6 | 7 | model=gcs; 8 | environments=0; 9 | isMlRobot=0; 10 | 11 | set_param(model,'SimMechanicsRigidlyBoundBlock','none'); 12 | set_param(model,'UnconnectedLineMsg','none'); 13 | 14 | %% 15 | envBlk=find_system(model,'MaskType','RP MATLAB Environment'); 16 | 17 | if size(envBlk)==1 18 | environments=environments+1; 19 | isMlRobot=1; 20 | block=envBlk{1}; 21 | % Disable link so that the changes can be saved with the model 22 | set_param(block,'LinkStatus','breakWithoutHierarchy'); 23 | set_param([block '/Robot'],'LinkStatus','breakWithoutHierarchy'); 24 | end 25 | 26 | envBlk=find_system(model,'MaskType','RP Robot Motor'); 27 | 28 | if isempty(envBlk) && isMlRobot == 0 29 | error('No RP Motor blocks found. Please place necessary actuators to interact with the robot.') 30 | end 31 | 32 | envBlk=find_system(model,'MaskType','RP Obstacle Environment'); 33 | 34 | if size(envBlk)==1 35 | environments=environments+1; 36 | block=envBlk{1}; 37 | % Disable link so that the changes can be saved with the model 38 | set_param(block,'LinkStatus','breakWithoutHierarchy'); 39 | 40 | Arena.width=eval(get_param(block,'arenaWidth')); 41 | Arena.length=eval(get_param(block,'arenaLength')); 42 | 43 | for idx=1:10 44 | Arena.obj(idx).status=get_param(block,strcat('obs',num2str(idx))); 45 | Arena.obj(idx).position=eval(get_param(block,strcat('obsPose',num2str(idx)))); 46 | Arena.obj(idx).width=eval(get_param(block,strcat('obsWidth',num2str(idx)))); 47 | Arena.obj(idx).length=eval(get_param(block,strcat('obsLength',num2str(idx)))); 48 | end 49 | mapForSim=PlaygroundCreateSimMap(Arena,envBlk{1}); 50 | ws=get_param(gcs,'modelworkspace'); 51 | 52 | try 53 | ws.assignin('mapForSim',mapForSim); 54 | ws.assignin('occGrid',mapForSim.simMap); 55 | catch 56 | disp('Make sure library block is placed in model') 57 | end 58 | 59 | 60 | end 61 | 62 | %% 63 | 64 | envBlk=find_system(model,'MaskType','RP Object Environment'); 65 | 66 | if size(envBlk)==1 67 | environments=environments+1; 68 | block=envBlk{1}; 69 | % Disable link so that the changes can be saved with the model 70 | set_param(block,'LinkStatus','breakWithoutHierarchy'); 71 | 72 | Arena.width=eval(get_param(block,'arenaWidth')); 73 | Arena.length=eval(get_param(block,'arenaLength')); 74 | arenaDimensions=[Arena.width Arena.length]; 75 | % Normalize the arena dimensions 76 | normDims=arenaDimensions/max(arenaDimensions); 77 | mapScale=2048/max(arenaDimensions); 78 | mapGridSize=round(normDims*2048); 79 | 80 | % Initialize obstacle map 81 | locObsMap = ones(mapGridSize(1),mapGridSize(2),'single'); 82 | % add walls to occupancy map 83 | locObsMap(1:5,:)=0; 84 | locObsMap(end-5:end,:)=0; 85 | locObsMap(:,1:5)=0; 86 | locObsMap(:,end-5:end)=0; 87 | 88 | mapForSim.obsMap=locObsMap; 89 | mapForSim.scaleFactor=mapScale; 90 | % Create simulation map using binary occupancy grid 91 | % compMap = imcomplement(locObsMap); %binary occupancy grid flips this for some reason 92 | compMap=1-locObsMap; 93 | mapForSim.simMap = robotics.BinaryOccupancyGrid(compMap,mapScale); 94 | 95 | ws=get_param(gcs,'modelworkspace'); 96 | 97 | try 98 | ws.assignin('mapForSim',mapForSim); 99 | ws.assignin('occGrid',mapForSim.simMap); 100 | catch 101 | disp('Make sure library block is placed in model') 102 | end 103 | 104 | end 105 | 106 | 107 | %% 108 | envBlk=find_system(model,'MaskType','RP Sumo Game'); 109 | 110 | if size(envBlk)==1 111 | environments=environments+1; 112 | block=envBlk{1}; 113 | % Disable link so that the changes can be saved with the model 114 | set_param(block,'LinkStatus','breakWithoutHierarchy'); 115 | end 116 | %% 117 | if environments ~= 1 118 | if environments ==0 119 | error('Please ensure there is at least one environment block in your model') 120 | else 121 | error('Please ensure there is only one environment block in your model') 122 | end 123 | end 124 | end -------------------------------------------------------------------------------- /lib/Resources/Utils/addSensors.m: -------------------------------------------------------------------------------- 1 | function addSensors(blk,robotID) 2 | 3 | % This funciton is meant to add a sensor visualization from the components 4 | % library to a robot 5 | % Copyright 2018 The MathWorks, Inc. 6 | 7 | % Disable the library link so all configurations can be saved with the 8 | % model, otherwise it pulls from the library when model opens 9 | set_param(blk,'LinkStatus','inactive'); 10 | 11 | % remove any existing visual blocks 12 | 13 | subsystem = [blk '/Sensor Visuals']; 14 | blocks = find_system(subsystem,'LookUnderMasks','all'); 15 | 16 | % Delete all previous blocks except the inport 17 | for idx = 2:length(blocks)-1 18 | delete_block(blocks{idx}) 19 | end 20 | 21 | % Delete all signals 22 | while ~isempty(find_system(subsystem,'LookUnderMasks','all','FindAll','on','type','line')) 23 | lines = find_system(subsystem,'LookUnderMasks','all','FindAll','on','type','line'); 24 | delete_line(lines(1)) 25 | end 26 | % Set a position for the Physical connection port 27 | pos1 = [140 100 180 140]; 28 | pos2 = [140 170 180 210]; 29 | 30 | set_param(strcat(subsystem,'/Robot'),'position',[140 60 180 80]) 31 | %% Check for Distance sensors 32 | 33 | sensors=find_system(bdroot,'MaskType','RP Distance Sensor'); 34 | 35 | if ~isempty(sensors) 36 | % Check for block with a matching Robot ID 37 | 38 | for idx=1:size(sensors,1) 39 | if (eval(get_param(sensors{idx},'robotID')) == robotID) 40 | pos1 = pos1 + [60 0 60 0]; 41 | pos2 = pos2 + [60 0 60 0]; 42 | 43 | % Get X Y sensor offsets 44 | xyOffset=get_param(sensors{idx},'sensOff'); 45 | degOffset=get_param(sensors{idx},'sensOffDeg'); 46 | 47 | % Add sensor visual and set parameters 48 | add_block('RP_Simulator_Components/US Visual',strcat(subsystem,'/US Visual ',num2str(idx))); 49 | set_param(strcat(subsystem,'/US Visual ',num2str(idx)),'position',pos1,'Orientation','down'); 50 | set_param(strcat(subsystem,'/US Visual ',num2str(idx)),'pose',xyOffset,'angle',degOffset); 51 | add_line(subsystem,strcat('Robot','/Rconn1'),strcat('US Visual ',num2str(idx),'/LConn1')); 52 | end 53 | end 54 | end 55 | %% Check for contact switch sensors 56 | 57 | sensors=find_system(bdroot(gcs),'MaskType','RP Contact Switch'); 58 | 59 | if ~isempty(sensors) 60 | % Check for block with a matching Robot ID 61 | 62 | for idx=1:size(sensors,1) 63 | if (eval(get_param(sensors{idx},'robotID')) == robotID) 64 | pos1 = pos1 + [60 0 60 0]; 65 | pos2 = pos2 + [60 0 60 0]; 66 | 67 | % Get X Y sensor offsets 68 | xyOffset=get_param(sensors{idx},'sensOff'); 69 | degOffset=get_param(sensors{idx},'sensOffDeg'); 70 | 71 | % Add sensor visual and set parameters 72 | add_block('RP_Simulator_Components/Switch Visual',strcat(subsystem,'/Switch Visual ',num2str(idx))); 73 | set_param(strcat(subsystem,'/Switch Visual ',num2str(idx)),'position',pos1,'Orientation','down'); 74 | set_param(strcat(subsystem,'/Switch Visual ',num2str(idx)),'pose',xyOffset,'angle',degOffset); 75 | add_line(subsystem,strcat('Robot','/Rconn1'),strcat('Switch Visual ',num2str(idx),'/LConn1')); 76 | end 77 | end 78 | end 79 | 80 | %% Check for Compass 81 | 82 | sensors=find_system(bdroot(gcs),'MaskType','RP Compass Sensor'); 83 | 84 | if ~isempty(sensors) 85 | % Check for block with a matching Robot ID 86 | 87 | for idx=1:size(sensors,1) 88 | if (eval(get_param(sensors{idx},'robotID')) == robotID) 89 | pos1 = pos1 + [60 0 60 0]; 90 | pos2 = pos2 + [60 0 60 0]; 91 | 92 | % Add sensor visual and set parameters 93 | add_block('RP_Simulator_Components/Compass Visual',strcat(subsystem,'/Compass Visual ',num2str(idx))); 94 | set_param(strcat(subsystem,'/Compass Visual ',num2str(idx)),'position',pos1,'Orientation','down'); 95 | add_line(subsystem,strcat('Robot','/Rconn1'),strcat('Compass Visual ',num2str(idx),'/LConn1')); 96 | end 97 | end 98 | end 99 | %% Check for Object Sensor 100 | 101 | 102 | sensors=find_system(bdroot(gcs),'MaskType','RP Object Sensor'); 103 | 104 | if ~isempty(sensors) 105 | % Check for block with a matching Robot ID 106 | 107 | for idx=1:size(sensors,1) 108 | if (eval(get_param(sensors{idx},'robotID')) == robotID) 109 | pos1 = pos1 + [60 0 60 0]; 110 | pos2 = pos2 + [60 0 60 0]; 111 | 112 | % Get X Y sensor offsets 113 | xyOffset=get_param(sensors{idx},'sensOff'); 114 | degOffset=get_param(sensors{idx},'sensOffDeg'); 115 | 116 | % Add sensor visual and set parameters 117 | add_block('RP_Simulator_Components/Object Sensor Visual',strcat(subsystem,'/Object Sensor Visual ',num2str(idx))); 118 | set_param(strcat(subsystem,'/Object Sensor Visual ',num2str(idx)),'position',pos1,'Orientation','down'); 119 | set_param(strcat(subsystem,'/Object Sensor Visual ',num2str(idx)),'pose',xyOffset,'angle',degOffset); 120 | add_line(subsystem,strcat('Robot','/Rconn1'),strcat('Object Sensor Visual ',num2str(idx),'/LConn1')); 121 | end 122 | end 123 | end 124 | end -------------------------------------------------------------------------------- /lib/Resources/Utils/bestrobotics.m: -------------------------------------------------------------------------------- 1 | function bestrobotics 2 | %U Open BEST Robotics sart application for virtual games 3 | matlab.apputil.run('BESTRoboticsDemoDazeAPP'); 4 | end 5 | 6 | -------------------------------------------------------------------------------- /lib/Resources/Utils/commentObstacles.m: -------------------------------------------------------------------------------- 1 | function commentObstacles(blk) 2 | % This function comments or uncomments obstacle blocks when a mask 3 | % parameter is changed 4 | % 5 | % Copyright 2018 The MathWorks, Inc. 6 | 7 | 8 | for idx=1:10 9 | status=get_param(blk,strcat('obs',num2str(idx))); 10 | 11 | if strcmp(status,'off') 12 | set_param([blk '/Obstacles/Obstacle' num2str(idx)],'Commented','on'); 13 | else 14 | set_param([blk '/Obstacles/Obstacle' num2str(idx)],'Commented','off'); 15 | end 16 | end 17 | 18 | 19 | end 20 | -------------------------------------------------------------------------------- /lib/Resources/Utils/createMapFromName.m: -------------------------------------------------------------------------------- 1 | function map = createMapFromName(mapName) 2 | % CREATEMAPFROMNAME Outputs a robotics.BinaryOccupancyGrid object given the 3 | % name of the map variable. This is necessary because MATLAB objects are 4 | % currently not supported as Simulink mask parameters 5 | % 6 | % Copyright 2018 The MathWorks, Inc. 7 | 8 | % Default value is empty 9 | map = []; 10 | 11 | % First, check whether the map name is empty 12 | if isempty(mapName) 13 | return; 14 | end 15 | 16 | % Next, check the base and current model workspaces for a valid variable 17 | % with the specified name 18 | try 19 | map = evalin('base',mapName); 20 | catch 21 | try 22 | mdlWs = get_param(bdroot,'ModelWorkspace'); 23 | map = getVariable(mdlWs,mapName); 24 | catch 25 | error(['Invalid map name ''' num2str(mapName) ''' in base and model workspaces.']); 26 | end 27 | end 28 | 29 | % Check the data type of the map 30 | % If it is a robotics.OccupancyGrid, return it as is 31 | if isa(map,'robotics.OccupancyGrid') 32 | return; 33 | % If it is a robotics.BinaryOccupancyGrid, convert it to a 34 | % robotics.OccupancyGrid. This provides access to necessary methods such as 35 | % RAYCAST and RAYINTERSECTION 36 | elseif isa(map,'robotics.BinaryOccupancyGrid') 37 | map = binToOccGrid(map); 38 | else 39 | error(['Map name ''' num2str(mapName) ''' must be a robotics.OccupancyGrid or robotics.BinaryOccupancyGrid object.']); 40 | end 41 | 42 | end 43 | 44 | function occGrid = binToOccGrid(binGrid) 45 | % BINTOOCCGRID Converts a robotics.BinaryOccupancyGrid object to an 46 | % equivalent robotics.OccupancyGrid object. 47 | 48 | occGrid = robotics.OccupancyGrid(binGrid.occupancyMatrix,binGrid.Resolution); 49 | occGrid.GridLocationInWorld = binGrid.GridLocationInWorld; 50 | 51 | end 52 | 53 | -------------------------------------------------------------------------------- /lib/Resources/Utils/disableObstacles.m: -------------------------------------------------------------------------------- 1 | function disableObstacles(blk) 2 | % This function goes through the objects in and obstacle environment and disables all the obstacles 3 | % It is implemented as a button in the environment mask 4 | % Copyright 2018 The MathWorks, Inc. 5 | 6 | 7 | for idx=1:10 8 | set_param(blk,['obs' num2str(idx)],'off') 9 | set_param([blk '/Obstacles/Obstacle' num2str(idx)],'Commented','on'); 10 | end 11 | 12 | 13 | end 14 | -------------------------------------------------------------------------------- /lib/Resources/Utils/mlrobot_src/mlrobot.m: -------------------------------------------------------------------------------- 1 | classdef mlrobot 2 | % MLROBOT Creates a MATLAB Disc Robot in a virtual environment. 3 | % This class is intended for learning to program in 4 | % MATLAB using the Robotics Playground. This robot provides a virtual 5 | % environment visualization and access to sensors and actuators using 6 | % MATLAB functions. 7 | % 8 | % EXAMPLE: 9 | % myRobot = mlrobot; 10 | % mlrobotstart(myRobot); 11 | % mlrobotsetmotorvoltage(myRobot,'left',3); 12 | % wheelSpeed = mlrobotreadwheelspeed(myRobot,'left'); 13 | % mlrobotstop(myRobot); 14 | % 15 | % Open getting started example with the following command: 16 | % 17 | % >> edit mlrobot_getting_started 18 | % 19 | % 20 | % When using with a custom model that reuses the 'MATLAB Disc Robot' from 21 | % the Simulink Robotics Playground library, call this class by passing 22 | % the custom model name as an input 23 | % 24 | % myRobot = mlrobot('customModelName') 25 | % 26 | % See also MLROBOTSTART MLROBOTSTOP MLROBOTSETMOTORVOLTAGE 27 | % MLROBOTREADWHEELSPEED MLROBOTREADCOMPASSANGLE 28 | % 29 | % Copyright 2018 The MathWorks, Inc. 30 | 31 | properties 32 | modelName='RP_MATLAB_Disc_robot'; 33 | end 34 | 35 | methods 36 | function obj = mlrobot(varargin) 37 | % The constructor should initialize the class and change the 38 | % modelName if a custom model is used 39 | if nargin==1 40 | obj.modelName=varargin{:}; 41 | end 42 | 43 | end 44 | function obj = close(obj) 45 | bdclose(obj.modelName); 46 | end 47 | 48 | function obj=connect(obj) 49 | if ~bdIsLoaded(obj.modelName) 50 | disp('Loading robot environment...') 51 | load_system(obj.modelName) 52 | disp('Robot environment loaded') 53 | end 54 | disp('Starting simulation...') 55 | set_param(obj.modelName,'SimulationCommand','start'); 56 | set_param([obj.modelName '/MATLAB Disc Robot/Robot/leftVoltage'],'Gain','0'); 57 | set_param([obj.modelName '/MATLAB Disc Robot/Robot/rightVoltage'],'Gain','0'); 58 | disp('Simulation started') 59 | end 60 | 61 | function disconnect(obj) 62 | set_param(obj.modelName,'SimulationCommand','stop') 63 | disp('Simulation stopped') 64 | end 65 | 66 | function writeMotorVoltage(obj,motor,input) 67 | % This function writes the input as the right motor voltage to the 68 | % simulation 69 | if strcmp(motor,'left') 70 | set_param([obj.modelName '/MATLAB Disc Robot/Robot/leftVoltage'],'Gain',num2str(input)); 71 | elseif strcmp(motor,'right') 72 | set_param([obj.modelName '/MATLAB Disc Robot/Robot/rightVoltage'],'Gain',num2str(input)); 73 | else 74 | error('Incorrect motor selection. Choose between ''left'' and ''right''') 75 | end 76 | if input>5 || input<-5 77 | error('Input is out of bounds and will be saturated. Correct range is -5 to 5') 78 | end 79 | 80 | end 81 | 82 | function wheelSpeed=readWheelSpeed(obj,wheel) 83 | robject=get_param([obj.modelName '/MATLAB Disc Robot/Robot/Sensors'],'RuntimeObject'); 84 | if strcmp(wheel,'left') 85 | wheelSpeed=robject.InputPort(1).Data(3); 86 | elseif strcmp(wheel,'right') 87 | wheelSpeed=robject.InputPort(1).Data(5); 88 | else 89 | error('Incorrect wheel selection. Choose between ''left'' and ''right''') 90 | end 91 | end 92 | 93 | function compassAngle=readCompassAngle(obj) 94 | robject=get_param([obj.modelName '/MATLAB Disc Robot/Robot/Sensors'],'RuntimeObject'); 95 | compassAngle=robject.InputPort(1).Data(1); 96 | end 97 | end 98 | 99 | end 100 | 101 | -------------------------------------------------------------------------------- /lib/Resources/Utils/mlrobot_src/mlrobotreadcompassangle.m: -------------------------------------------------------------------------------- 1 | function angle=mlrobotreadcompassangle(mlrobot) 2 | % MLROBOTREADCOMPASSANGLE Reads the angle an MLROBOT robot with respect 3 | % to the world in degrees (deg). 4 | % 5 | % mlrobotreadcompassangle(mlrobot) 6 | % 7 | % 8 | % EXAMPLE: 9 | % myRobot = mlrobot; 10 | % mlrobotstart(myRobot); 11 | % angle = mlrobotreadcompassangle(myRobot) 12 | % 13 | % See also MLROBOT MLROBOTSTART MLROBOTSETMOTORVOLTAGE 14 | % MLROBOTREADWHEELSPEED 15 | % 16 | % Copyright 2018 The MathWorks, Inc. 17 | 18 | angle=mlrobot.readCompassAngle; 19 | 20 | end -------------------------------------------------------------------------------- /lib/Resources/Utils/mlrobot_src/mlrobotreadwheelspeed.m: -------------------------------------------------------------------------------- 1 | function speed=mlrobotreadwheelspeed(mlrobot,wheel) 2 | % MLROBOTREADWHEELSPEED Reads the instantaneous wheel speed from either 3 | % the left or right wheel of the MLROBOT object in degrees per second 4 | % (deg/s). 5 | % 6 | % mlrobotreadwheelspeed(mlrobot,wheel) 7 | % 8 | % Wheel selection is 'left' or 'right' 9 | % 10 | % EXAMPLE: 11 | % myRobot = mlrobot; 12 | % mlrobotstart(myRobot); 13 | % speed = mlrobotreadwheelspeed(myRobot,'left') 14 | % 15 | % See also MLROBOT MLROBOTSTART MLROBOTSETMOTORVOLTAGE 16 | % MLROBOTREADCOMPASSANGLE 17 | % 18 | % Copyright 2018 The MathWorks, Inc. 19 | 20 | speed=mlrobot.readWheelSpeed(wheel); 21 | 22 | end 23 | -------------------------------------------------------------------------------- /lib/Resources/Utils/mlrobot_src/mlrobotsetmotorvoltage.m: -------------------------------------------------------------------------------- 1 | function mlrobotsetmotorvoltage(mlrobot,motor,input) 2 | % MLROBOTSETMOTORVOLTAGE Sets the motor voltage for either the left or 3 | % right motors connected to the wheels of a MLROBOT robot object. 4 | % 5 | % mlrobotsetmotorvoltage(mlrobot,motor,voltage) 6 | % 7 | % Motor selection is 'left' or 'right' 8 | % Voltage range is between -5 to 5 9 | % 10 | % EXAMPLE: 11 | % myRobot = mlrobot; 12 | % mlrobotsetmotorvoltage(myRobot,'left',4.5) 13 | % 14 | % See also MLROBOT MLROBOTSTART MLROBOTREADWHEELSPEED 15 | % 16 | % Copyright 2018 The MathWorks, Inc. 17 | 18 | mlrobot.writeMotorVoltage(motor,input) 19 | 20 | end 21 | 22 | -------------------------------------------------------------------------------- /lib/Resources/Utils/mlrobot_src/mlrobotstart.m: -------------------------------------------------------------------------------- 1 | function mlrobotstart(mlrobot) 2 | %MLROBOTSTART This function starts running the virtual environment for an 3 | % MLROBOT object 4 | % 5 | % Example: 6 | % 7 | % myRobot = mlrobot; 8 | % mlrobotstart(myRobot); 9 | % 10 | % See also MLROBOT 11 | % 12 | % Copyright 2018 The MathWorks, Inc. 13 | 14 | mlrobot.connect; 15 | 16 | end 17 | 18 | -------------------------------------------------------------------------------- /lib/Resources/Utils/mlrobot_src/mlrobotstop.m: -------------------------------------------------------------------------------- 1 | function mlrobotstop(mlrobot) 2 | %MLROBOTSTOP This function stops running the virtual environment for a 3 | % MLROBOT robot. 4 | % 5 | % Example: 6 | % 7 | % myRobot = mlrobot; 8 | % mlrobotstart(myRobot); 9 | % mlrobotstop(myRobot); 10 | % 11 | % See also MLROBOT MLROBOTSTART 12 | % 13 | % Copyright 2018 The MathWorks, Inc. 14 | 15 | mlrobot.disconnect; 16 | 17 | end 18 | -------------------------------------------------------------------------------- /lib/Resources/Utils/motorCheck.m: -------------------------------------------------------------------------------- 1 | function motorCheck(model,blk) 2 | % This functions check that any motors have a corresponding 3 | % Environment block with a valid robot ID 4 | % Copyright 2018 The MathWorks, Inc. 5 | 6 | envBlk=find_system(model,'MaskType','RP Obstacle Environment'); 7 | blk_ID=get_param(blk,'robotId'); 8 | 9 | if size(envBlk)==1 10 | 11 | ID=get_param(envBlk,'robotId'); 12 | 13 | if ~strcmp(ID{1},blk_ID) 14 | error(['No matching robot ID for ' blk ' Please check robot motor ID matches environment settings']) 15 | end 16 | end 17 | 18 | envBlk=find_system(model,'MaskType','RP Object Environment'); 19 | 20 | if size(envBlk)==1 21 | 22 | ID=get_param(envBlk,'robotId'); 23 | 24 | if ~strcmp(ID{1},blk_ID) 25 | error(['No matching robot ID for ' blk ' Please check robot motor ID matches environment settings']) 26 | end 27 | end 28 | 29 | envBlk=find_system(model,'MaskType','RP Sumo Game'); 30 | 31 | if size(envBlk)==1 32 | 33 | ID1=get_param(envBlk,'robot1Id'); 34 | ID2=get_param(envBlk,'robot2Id'); 35 | 36 | if ~strcmp(ID1{1},blk_ID) 37 | if ~strcmp(ID2{1},blk_ID) 38 | error(['No matching robot ID for ' blk ' Please check robot motor ID matches environment settings']) 39 | end 40 | end 41 | 42 | end 43 | 44 | end -------------------------------------------------------------------------------- /lib/Resources/Utils/roboticsplayground.m: -------------------------------------------------------------------------------- 1 | function roboticsplayground 2 | %U Open BEST Robotics sart application for virtual games 3 | matlab.apputil.run('RoboticsPlaygroundAppAPP') 4 | end 5 | 6 | -------------------------------------------------------------------------------- /lib/Resources/Utils/setObjects.m: -------------------------------------------------------------------------------- 1 | function setObjects(blk) 2 | % This function is a callback implemented in the obstacle environment map 3 | % to update settings on the objects within the environment 4 | % Copyright 2018 The MathWorks, Inc. 5 | 6 | for idx=1:5 7 | if strcmp(get_param(blk,['obj' num2str(idx)]),'off') 8 | set_param([blk '/Objects/Object' num2str(idx)],'Commented','on'); 9 | else 10 | set_param([blk '/Objects/Object' num2str(idx)],'Commented','off'); 11 | end 12 | % set parameters on block mask 13 | pose=get_param(blk,['obj' 'Pose' num2str(idx)]); 14 | set_param([blk '/Objects/Object' num2str(idx)],'Pose',pose); 15 | % set the color and object label 16 | color=get_param(blk,['obj' 'Color' num2str(idx)]); 17 | if strcmp(color,'Red') 18 | set_param([blk '/Objects/Object' num2str(idx)],'color','[0.8 0 0]'); 19 | elseif strcmp(color,'Green') 20 | set_param([blk '/Objects/Object' num2str(idx)],'color','[0 0.8 0]'); 21 | else 22 | set_param([blk '/Objects/Object' num2str(idx)],'color','[0 0 0.8]'); 23 | end 24 | end 25 | 26 | end 27 | -------------------------------------------------------------------------------- /lib/Resources/Utils/setObstaclesUI.m: -------------------------------------------------------------------------------- 1 | function setObstaclesUI(blk) 2 | % This function is an interactive obstacle placement tool 3 | % It is implemented within the obstacle environment mask and provides the 4 | % user the ability to draw the desired obstacles within the map. 5 | % Copyright 2018 The MathWorks, Inc. 6 | 7 | numObs=inputdlg('Number of obstacles to place (Max 10): ','Obstacle sekection'); 8 | 9 | for idx=1:10 10 | set_param(blk,['obs' num2str(idx)],'off') 11 | set_param([blk '/Obstacles/Obstacle' num2str(idx)],'Commented','on'); 12 | end 13 | 14 | 15 | if ~isempty(numObs) 16 | 17 | % disable all obstacle sin mask 18 | 19 | 20 | hg=figure('Name','Set Arena Obstacles','NumberTitle','off'); 21 | length=eval(get_param(blk,'arenaLength')); 22 | width=eval(get_param(blk,'arenaWidth')); 23 | arenaDimensions=[width length]; 24 | 25 | % Normalize the arena dimensions 26 | 27 | normDims=arenaDimensions/max(arenaDimensions); 28 | mapScale=2048/max(arenaDimensions); 29 | mapGridSize=round(normDims*2048); 30 | xScale=mapGridSize(2)/length; 31 | yScale=mapGridSize(1)/width; 32 | 33 | image=imread('PlaygroundImage.png'); 34 | scaledImg=imresize(image,mapGridSize); 35 | 36 | imshow(scaledImg) 37 | 38 | for idx=1:eval(numObs{1}) 39 | title(['Draw obstacle ' num2str(idx) ' as a rectangle by clicking and dragging on map']) 40 | h=imrect; 41 | % wait(h(idx)); 42 | recPose(:)=getPosition(h); 43 | 44 | % Fill-in rectangle with obstacle color for user feedback 45 | rectangle('Position',recPose(:),'FaceColor',[1 0.4 0.2]); 46 | 47 | % Correct y axis inversion from image axis and scale to world 48 | % coordinates 49 | 50 | imgPose(:)=[-mapGridSize(2)/2+recPose(1)+recPose(3)/2 mapGridSize(1)/2-recPose(2)-recPose(4)/2 recPose(3:4)]; 51 | 52 | % shift objects to correct reference frame 53 | obsPose(:)=[imgPose(1)/xScale imgPose(2)/yScale imgPose(3)/xScale imgPose(4)/yScale]; 54 | 55 | % set parameters on block mask 56 | set_param(blk,['obs' num2str(idx)],'on') 57 | set_param(blk,['obsPose' num2str(idx)],['[' num2str(obsPose(1:2)) ']']); 58 | set_param(blk,['obsWidth' num2str(idx)],num2str(obsPose(3))); 59 | set_param(blk,['obsLength' num2str(idx)],num2str(obsPose(4))); 60 | set_param([blk '/Obstacles/Obstacle' num2str(idx)],'Commented','off'); 61 | 62 | end 63 | pause(1) 64 | close(hg) 65 | end 66 | end 67 | -------------------------------------------------------------------------------- /lib/Resources/Winner.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Resources/Winner.stl -------------------------------------------------------------------------------- /lib/Robotics Playground App.mlappinstall: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/Robotics Playground App.mlappinstall -------------------------------------------------------------------------------- /lib/RoboticsPlayground.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-robotics/robotics-playground/25bb0a0700dac935c1fd9cdd7c1da1f60ba10e5f/lib/RoboticsPlayground.slx -------------------------------------------------------------------------------- /lib/RoboticsPlaygroundInstall.m: -------------------------------------------------------------------------------- 1 | function RoboticsPlaygroundInstall 2 | % This funciton installs the toolbox into MATLAB sodocumentation and 3 | % applications are available. 4 | 5 | addons = matlab.addons.installedAddons; 6 | if any(find(strcmp(addons.Name,'Robotics Playground'))) 7 | uiwait(msgbox('Previous version already installed. To update your Robotics Playground version first uninstall using the Add-Ons explorer','Already Installed','modal')); 8 | matlab.apputil.run('RoboticsPlaygroundAppAPP'); 9 | closeNoPrompt(matlab.desktop.editor.getActive); 10 | else 11 | matlab.addons.install(which('Robotics Playground.mltbx')); 12 | matlab.apputil.run('RoboticsPlaygroundAppAPP'); 13 | uiwait(msgbox('The Robotics Playground has been succesfully installed! You can now access files and lessons through the provided MATLAB APP in the ''APPS'' tab of the toolbar.','Installation Complete','modal')); 14 | closeNoPrompt(matlab.desktop.editor.getActive); 15 | end -------------------------------------------------------------------------------- /lib/slblocks.m: -------------------------------------------------------------------------------- 1 | function blkStruct = slblocks 2 | % This function specifies that the library should appear 3 | % in the Library Browser 4 | % and be cached in the browser repository 5 | 6 | Browser.Library = 'RoboticsPlayground'; 7 | Browser.Name = 'Robotics Playground'; 8 | 9 | blkStruct.Browser = Browser; --------------------------------------------------------------------------------