├── .gitattributes ├── .gitignore ├── Adafruit LoRa ├── Arduino │ ├── LoRa_HeartBeat_receiver │ │ ├── LoRa_HeartBeat_receiver.ino │ │ └── README.md │ ├── LoRa_HeartBeat_receiver_neopixel │ │ ├── LoRa_HeartBeat_receiver_neopixel.ino │ │ └── README.md │ ├── LoRa_HeartBeat_sender │ │ ├── LoRa_HeartBeat_sender.ino │ │ └── README.md │ ├── LoRa_HeartBeat_sender_withOLEDStatus │ │ ├── LoRa_HeartBeat_sender_withOLEDStatus.ino │ │ └── README.md │ ├── LoRa_HeartBeat_sender_withStatus │ │ ├── LoRa_HeartBeat_sender_withStatus.ino │ │ └── README.md │ ├── README.md │ └── basic_LoRa_receiver │ │ ├── README.md │ │ └── basic_LoRa_receiver.ino ├── CircuitPython │ ├── Basic Heartbeat Pair │ │ ├── Heartbeat Receiver │ │ │ └── main.py │ │ ├── Heartbeat Sender │ │ │ └── main.py │ │ └── README.md │ ├── Basic Heartbeat relay control │ │ ├── Heartbeat Receiver │ │ │ └── main.py │ │ ├── Heartbeat Sender │ │ │ └── main.py │ │ └── README.md │ ├── Basic send and receive │ │ └── main.py │ ├── Heartbeat relay control - data check and neopixel │ │ ├── Heartbeat Receiver │ │ │ └── main.py │ │ ├── Heartbeat Sender │ │ │ └── main.py │ │ └── README.md │ ├── Heartbeat relay control with data check │ │ ├── Heartbeat Receiver │ │ │ └── main.py │ │ ├── Heartbeat Sender │ │ │ └── main.py │ │ └── README.md │ └── README.md ├── README.md └── Raspberry Pi Hat │ ├── Code from Adafruit │ ├── blinkatest.py │ ├── radio_rfm9x.py │ └── rfm9x_check.py │ ├── font5x8.bin │ └── heartbeat_sender_basic.py ├── Adafruit Trinket └── trinket_buttonRead │ └── trinket_buttonRead.ino ├── AprilTag Markers ├── apriltag_basic_tracking.py ├── apriltag_checkerboard_16h5.png ├── apriltag_checkerboard_36h11.png └── apriltag_grid_generator.py ├── ArUco Markers ├── aruco_basic_read.py ├── aruco_basic_tracking.py ├── aruco_camera_calibration.py ├── aruco_camera_calibration_liveImages.py ├── aruco_generator.py ├── aruco_grid_generator.py ├── aruco_threaded_tracking.py └── iMac_calibration.yaml ├── Arduino ├── BasicWPAConnection │ └── BasicWPAConnection.ino ├── SendReceiveJSON │ └── SendReceiveJSON.ino ├── Simple_Servo │ └── Simple_Servo.ino ├── Sparkfun_Motor_Example │ └── Sparkfun_Motor_Example.ino ├── StepperExample │ └── StepperExample.ino ├── StepperMotor_Timed_usingDelay │ └── StepperMotor_Timed_usingDelay.ino ├── StepperMotor_Timed_usingMillis │ └── StepperMotor_Timed_usingMillis.ino ├── UDP_2servo │ └── UDP_2servo.ino ├── WiFiSendReceiveUDPString │ └── WiFiSendReceiveUDPString.ino ├── Wifi_BasicUDPString │ ├── SendUDPpacket.py │ ├── UDPserver.py │ └── Wifi_BasicUDPString.ino └── Wifi_UDPServoAngle │ ├── SendUDPServoAngle.py │ └── Wifi_UDPServoAngle.ino ├── Audio in Python ├── audio_generator_multiFreq.py ├── audio_generator_singleFreq.py ├── multi_freq_test.wav └── single_freq_test.wav ├── Bash Scripts ├── batch_extract_frames.sh ├── batch_movie_from_jpgs.sh ├── chromium_kiosk.sh ├── dotfile_setup.sh └── pdfTOeps.sh ├── Basic Machine Vision ├── ColorTrack.py ├── Color_picker.py ├── PostProcessing_ColorTrack.py ├── VideoCaptureThreaded.py ├── basic_color_tracking.py ├── calibration_images │ ├── camera-calibration-checker-board_9x7.pdf │ ├── iPhoneCamCalibration_1.jpg │ ├── iPhoneCamCalibration_2.jpg │ ├── iPhoneCamCalibration_3.jpg │ ├── iPhoneCamCalibration_4.jpg │ ├── iPhoneCamCalibration_5.jpg │ ├── iPhoneCamCalibration_6.jpg │ ├── iPhoneCamCalibration_7.jpg │ ├── iPhoneCamCalibration_8.jpg │ └── iPhoneCamCalibration_9.jpg ├── ipcamera.py ├── openCV_cameraCalibration.py ├── openCV_cameraCalibration_fromCaptures.py ├── openCV_multiVideoStream.py ├── openCV_multiVideoStream_intervalSave.py ├── openCV_saveVideoFramesAsImages.py ├── openCV_saveVideoFramesAsImages_MultiProcessing.py ├── openCV_videoStream.py ├── opencv_threaded_processing.py └── track_via_mouse_click.py ├── Basic Networking with asyncio ├── TCP_echoClient_asyncio.py ├── TCP_server_asyncio.py ├── UDP_client_asyncio.py ├── UDP_sendReceive_asyncio.py └── UDP_server_asyncio.py ├── Basic Networking ├── TCP_echo_client.py ├── TCP_echo_server_ThreadedStream.py ├── TCP_echo_server_nonBlocking.py ├── TCP_echo_server_nonBlocking_logging.py ├── TCP_server_ThreadedStream.py ├── TCP_server_nonBlockingServeForever.py ├── UDP_broadcast.py ├── UDP_looping_sender.py ├── UDP_server_Threaded.py ├── UDP_server_with_pickle.py ├── UDP_server_with_strings.py ├── UDP_simplest_receiver.py ├── UDP_simplest_sender.py └── simplest_UDP_receiver.py ├── BeagleBone Python ├── BBB_BasicInterrupts.py ├── BBB_BasicServo.py ├── BBB_DualServo.py ├── BBB_DualServo_Workaround.py ├── BBB_ManualEvents.py ├── BBB_PanTiltServo_UDP.py ├── BBB_PyBBIO_servos.py ├── BBB_blinkLED.py ├── Pololu High-power Motor Drive │ ├── BBB_BasicMotorControl_Pololu.py │ ├── BBB_GeneralDualMotorControl_Pololu.py │ ├── BBB_GeneralMotorControl_Pololu.py │ ├── BBB_MotorInterrupts_Pololu.py │ ├── BBB_MotorLimitSwitches_Pololu.py │ ├── BBB_MotorLimitSwitches_WaitForEdge_Pololu.py │ └── README.md ├── SparkFun TB6612FNG breakout │ ├── BBB_BasicMotorControl.py │ ├── BBB_DualMotorControl.py │ ├── BBB_GeneralDualMotorControl.py │ ├── BBB_GeneralMotorControl.py │ ├── BBB_MotorInterrupts.py │ ├── BBB_MotorInterruptsMomentary.py │ ├── BBB_MotorLimitSwitches.py │ ├── BBB_MotorLimitSwitches_WaitForEdge.py │ └── README.md ├── root@192.168.7.2 └── startVNC.sh ├── C snippets ├── circular_buffer └── circular_buffer.c ├── Debug Examples └── DebuggingExample_ipdb.py ├── Flask └── Flask_SocketIO_WebRemote │ ├── app.py │ ├── static │ ├── css │ │ ├── JoyStick.css │ │ ├── main.css │ │ ├── normalize.css │ │ └── normalize.min.css │ ├── favicon.ico │ ├── img │ │ └── fleur_de_lis.png │ └── js │ │ ├── JoyStick.js │ │ ├── main.js │ │ └── vendor │ │ ├── canvasjs.min.js │ │ ├── jquery-1.11.1.min.js │ │ ├── jquery-ui.min.js │ │ ├── jquery.ui.touch-punch.min.js │ │ ├── modernizr-2.6.2-respond-1.1.0.min.js │ │ └── socket.io.min.js │ └── templates │ ├── index.html │ ├── joystick.html │ └── receiver.html ├── Folium ├── GPS_Visualization_Folium.py └── geographic_calculations.py ├── Frequency Analysis ├── fft_testing.py └── spectrogram_testing.py ├── GPS ├── NMEA_stringsForTesting.txt ├── micropyGPS │ ├── micropyGPS.py │ └── micropyGPS_example.py └── pyNMEA_GPS.py ├── Google Maps ├── gmaps_directions.py └── my_map.html ├── HiBot Components └── SH2 │ ├── SH2Tiny_BasicSerial │ ├── .Releaselinker │ ├── .cproject │ ├── .info │ ├── .project │ ├── .settings │ │ ├── Dependency_Scan_Preferences.prefs │ │ ├── Project_Generation_Prefrences.prefs │ │ └── language.settings.xml │ ├── Release │ │ ├── LinkerSubCommand.tmp │ │ ├── SH2Tiny_BasicSerial.lst │ │ ├── SH2Tiny_Sample1.lst │ │ ├── Testing.map │ │ ├── Testing.mot │ │ ├── Testing.x │ │ ├── Testing_Release_auto.gsi │ │ ├── hardware_setup.lst │ │ ├── interrupt_handlers.lst │ │ ├── libTesting.a │ │ ├── makefile │ │ ├── objects.mk │ │ ├── reset_program.lst │ │ ├── sci3.lst │ │ ├── sources.mk │ │ ├── src │ │ │ ├── SH2Tiny_BasicSerial.d │ │ │ ├── SH2Tiny_BasicSerial.depsub │ │ │ ├── SH2Tiny_BasicSerial.o │ │ │ ├── SH2Tiny_BasicSerial.sub │ │ │ ├── SH2Tiny_Sample1.d │ │ │ ├── SH2Tiny_Sample1.depsub │ │ │ ├── SH2Tiny_Sample1.o │ │ │ ├── SH2Tiny_Sample1.sub │ │ │ ├── Testing.d │ │ │ ├── Testing.o │ │ │ ├── c.depsub │ │ │ ├── c.sub │ │ │ ├── hardware_setup.d │ │ │ ├── hardware_setup.depsub │ │ │ ├── hardware_setup.o │ │ │ ├── hardware_setup.sub │ │ │ ├── interrupt_handlers.d │ │ │ ├── interrupt_handlers.depsub │ │ │ ├── interrupt_handlers.o │ │ │ ├── interrupt_handlers.sub │ │ │ ├── reset_program.d │ │ │ ├── reset_program.depsub │ │ │ ├── reset_program.o │ │ │ ├── reset_program.sub │ │ │ ├── sci3.d │ │ │ ├── sci3.o │ │ │ ├── subdir.mk │ │ │ ├── vector_table.d │ │ │ ├── vector_table.depsub │ │ │ ├── vector_table.o │ │ │ └── vector_table.sub │ │ ├── tmp.bat │ │ └── vector_table.lst │ ├── Testing Release.launch │ ├── custom.bat │ ├── makefile.init │ └── src │ │ ├── SH2Tiny_BasicSerial.c │ │ ├── boot.h │ │ ├── hardware_setup.c │ │ ├── interrupt_handlers.c │ │ ├── interrupt_handlers.h │ │ ├── intrinsics.h │ │ ├── iodefine.h │ │ ├── main.c │ │ ├── reset_program.asm │ │ ├── sci3.c │ │ ├── sci3.h │ │ ├── typedefine.h │ │ └── vector_table.c │ ├── SH2Tiny_Sample1 │ ├── .Releaselinker │ ├── .cproject │ ├── .info │ ├── .project │ ├── .settings │ │ ├── Dependency_Scan_Preferences.prefs │ │ ├── Project_Generation_Prefrences.prefs │ │ └── language.settings.xml │ ├── Release │ │ ├── LinkerSubCommand.tmp │ │ ├── SH2Tiny_Sample1.lst │ │ ├── Testing.map │ │ ├── Testing.mot │ │ ├── Testing.x │ │ ├── Testing_Release_auto.gsi │ │ ├── hardware_setup.lst │ │ ├── interrupt_handlers.lst │ │ ├── libTesting.a │ │ ├── makefile │ │ ├── objects.mk │ │ ├── reset_program.lst │ │ ├── sources.mk │ │ ├── src │ │ │ ├── SH2Tiny_Sample1.d │ │ │ ├── SH2Tiny_Sample1.depsub │ │ │ ├── SH2Tiny_Sample1.o │ │ │ ├── SH2Tiny_Sample1.sub │ │ │ ├── Testing.d │ │ │ ├── Testing.o │ │ │ ├── c.depsub │ │ │ ├── c.sub │ │ │ ├── hardware_setup.d │ │ │ ├── hardware_setup.depsub │ │ │ ├── hardware_setup.o │ │ │ ├── hardware_setup.sub │ │ │ ├── interrupt_handlers.d │ │ │ ├── interrupt_handlers.depsub │ │ │ ├── interrupt_handlers.o │ │ │ ├── interrupt_handlers.sub │ │ │ ├── reset_program.d │ │ │ ├── reset_program.depsub │ │ │ ├── reset_program.o │ │ │ ├── reset_program.sub │ │ │ ├── subdir.mk │ │ │ ├── vector_table.d │ │ │ ├── vector_table.depsub │ │ │ ├── vector_table.o │ │ │ └── vector_table.sub │ │ ├── tmp.bat │ │ └── vector_table.lst │ ├── Testing Release.launch │ ├── custom.bat │ ├── makefile.init │ └── src │ │ ├── SH2Tiny_Sample1.c │ │ ├── hardware_setup.c │ │ ├── interrupt_handlers.c │ │ ├── interrupt_handlers.h │ │ ├── intrinsics.h │ │ ├── iodefine.h │ │ ├── reset_program.asm │ │ ├── typedefine.h │ │ └── vector_table.c │ └── SH2Tiny_Template │ ├── .Releaselinker │ ├── .cproject │ ├── .info │ ├── .project │ ├── .settings │ ├── Dependency_Scan_Preferences.prefs │ ├── Project_Generation_Prefrences.prefs │ └── language.settings.xml │ ├── Release │ ├── LinkerSubCommand.tmp │ ├── SH2Tiny_Sample1.lst │ ├── Testing.map │ ├── Testing.mot │ ├── Testing.x │ ├── Testing_Release_auto.gsi │ ├── hardware_setup.lst │ ├── interrupt_handlers.lst │ ├── libTesting.a │ ├── makefile │ ├── objects.mk │ ├── reset_program.lst │ ├── sources.mk │ ├── src │ │ ├── SH2Tiny_Sample1.d │ │ ├── SH2Tiny_Sample1.depsub │ │ ├── SH2Tiny_Sample1.o │ │ ├── SH2Tiny_Sample1.sub │ │ ├── Testing.d │ │ ├── Testing.o │ │ ├── c.depsub │ │ ├── c.sub │ │ ├── hardware_setup.d │ │ ├── hardware_setup.depsub │ │ ├── hardware_setup.o │ │ ├── hardware_setup.sub │ │ ├── interrupt_handlers.d │ │ ├── interrupt_handlers.depsub │ │ ├── interrupt_handlers.o │ │ ├── interrupt_handlers.sub │ │ ├── reset_program.d │ │ ├── reset_program.depsub │ │ ├── reset_program.o │ │ ├── reset_program.sub │ │ ├── subdir.mk │ │ ├── vector_table.d │ │ ├── vector_table.depsub │ │ ├── vector_table.o │ │ └── vector_table.sub │ ├── tmp.bat │ └── vector_table.lst │ ├── Testing Release.launch │ ├── custom.bat │ ├── makefile.init │ └── src │ ├── hardware_setup.c │ ├── interrupt_handlers.c │ ├── interrupt_handlers.h │ ├── intrinsics.h │ ├── iodefine.h │ ├── main.c │ ├── reset_program.asm │ ├── typedefine.h │ └── vector_table.c ├── Input Shaping in C ├── 3impulse_shaping_check.c ├── EIshaper_creation_test ├── EIshaper_creation_test.c ├── InputShaping_in_C.ipynb ├── ZV_shaping_check.c ├── ZVshaper_creation_test ├── ZVshaper_creation_test.c ├── aribtraryLength_shaping_check.c ├── basic_InputShaping.c ├── basic_ZVDShaping.c ├── basic_ZVShaping.c ├── embedded_ZV_shaping_check ├── embedded_ZV_shaping_check.c ├── embedded_input_shaping.c ├── embedded_input_shaping.h ├── embedded_multiaxis_shaping_check.c ├── embedded_twoModeShaping_check.c ├── input_shaping.c ├── input_shaping.h ├── multiDimension_Shaping_check.c ├── shaping_from_GRYPHON.c ├── struct_based_shaper.c ├── struct_based_shaper_check └── struct_based_shaper_check.c ├── Keras └── keras_examine_weights.py ├── LaTeX ├── CRAWLAB_OneColumn.tex └── Figure_snippets.tex ├── Licenses └── LICENSE.md ├── LoPy ├── LoRa-MAC_basic │ ├── boot.py │ └── main.py └── RGBblink │ ├── boot.py │ └── main.py ├── MATLAB:Octave Utility Functions ├── accel_input.m └── testing_accel_input.m ├── MQTT ├── MQTT C │ ├── mqtt.c │ ├── mqtt.h │ ├── mqttApp.c │ └── mqttApp.h ├── MQTT_ThreadedSub.py ├── MQTT_ThreadedSub_json.py ├── MQTT_WebRemote │ ├── Dpad-only.html │ ├── apple-touch-icon-precomposed.png │ ├── css │ │ ├── JoyStick.css │ │ ├── main.css │ │ ├── normalize.css │ │ └── normalize.min.css │ ├── favicon.ico │ ├── img │ │ └── fleur_de_lis.png │ ├── index.html │ ├── joystick-only.html │ ├── joystick.html │ ├── js │ │ ├── JoyStick.js │ │ ├── main.js │ │ └── vendor │ │ │ ├── jquery-1.11.1.min.js │ │ │ ├── jquery-ui.min.js │ │ │ ├── jquery.ui.touch-punch.min.js │ │ │ ├── modernizr-2.6.2-respond-1.1.0.min.js │ │ │ └── mqttws31.js │ └── receiver.html ├── MQTT_WebRemote_DataStreaming │ ├── Dpad-only.html │ ├── apple-touch-icon-precomposed.png │ ├── css │ │ ├── JoyStick.css │ │ ├── main.css │ │ ├── normalize.css │ │ └── normalize.min.css │ ├── favicon.ico │ ├── img │ │ └── fleur_de_lis.png │ ├── index.html │ ├── joystick-only.html │ ├── joystick.html │ ├── js │ │ ├── JoyStick.js │ │ ├── main.js │ │ └── vendor │ │ │ ├── canvasjs.min.js │ │ │ ├── jquery-1.11.1.min.js │ │ │ ├── jquery-ui.min.js │ │ │ ├── jquery.canvasjs.min.js │ │ │ ├── jquery.ui.touch-punch.min.js │ │ │ ├── modernizr-2.6.2-respond-1.1.0.min.js │ │ │ └── mqttws31.js │ └── receiver.html ├── MQTT_basicPub.py ├── MQTT_basicSub.py ├── MQTT_connectPub.py ├── MQTT_connectPub_json.py └── pub-single.py ├── MapBox ├── map.html └── mapbox_directions.py ├── Matplotlib Animation ├── ShapeWithHistoryLine.py ├── simple_animation.mp4 ├── trajectory_animation.mp4 └── trajectory_animation.py ├── Misc Python Tools and Helpers ├── CRAWLAB_fft.py ├── accel_input.py ├── calc_doublePendulumFreq.py ├── copy_every_Nth_file.py ├── example_freq.pdf ├── joystick_curve_generation.py ├── localExtrema.py ├── pygame mapping of joysticks.md ├── pygame_Joystick_Basic.py ├── pygame_Joystick_Test.py ├── pygame_Joystick_multistick.py ├── reading_keyboard_input.py ├── skidSteering_calculations.py ├── steering_snippet.py ├── systemID_functions.py ├── timeout.py ├── tracking_error.py └── vibrationApp_plotting.py ├── Misc Python ├── enumeration.py └── future_imports.py ├── Miscellaneous ROS Scripts ├── README.md ├── buildingBlocks.launch ├── buildingBlocks.world └── progammatic_spawner.py ├── Model Predictive Control ├── Gekko │ ├── mpc_mass_spring_damper_Gekko.py │ ├── mpc_mass_spring_damper_Gekko_ODE.py │ └── mpc_nonlinear_mass_spring_damper_Gekko.py ├── acado │ ├── mass_positionControl_direct.cpp │ └── mass_spring_damper_direct.cpp ├── mpc_mass_positionControl.py ├── mpc_mass_positionControl_velConstraint.py ├── mpc_mass_spring_damper.py ├── mpc_mass_spring_damper_ConstrainedStateSpace.py ├── mpc_mass_spring_damper_UnconstrainedStateSpace.py ├── mpc_mass_spring_damper_cvxpy.py ├── mpc_mass_spring_damper_scipyOptimize.py ├── mpc_planarCrane.py └── mpc_planarCrane_nonlinear.py ├── Ocean Controls Relay Controller └── ocean_controls_relay.py ├── Odrive └── odrive_basics.py ├── OpenAI Gym ├── Variable_Length_Pendulum.ipynb ├── example_weights │ └── duel_dqn_planar_crane-v0_weights_1024_4_100000_2017-07-13_222427.h5f ├── keras-rl_FileLogger_processing.py ├── mass_spring_damper_continuous │ ├── __init__.py │ └── mass_spring_damper_continuous.py ├── openAI_massSpringContinuous_episodeDataProcessing.py ├── openAI_massSpringContinuous_randomAction.py ├── openAI_massSpringContinuous_test.py ├── openAI_massSpringContinuous_train.py ├── openAI_montior_processing.py ├── openAI_planarCraneContinuous_episodeDataProcessing.py ├── openAI_planarCraneContinuous_randomAction.py ├── openAI_planarCraneContinuous_test.py ├── openAI_planarCraneContinuous_train.py ├── openAI_planarCraneFeedback_test.py ├── openAI_planarCraneFeedback_train.py ├── openAI_planarCrane_episodeDataProcessing.py ├── openAI_planarCrane_test.py ├── openAI_planarCrane_train.py ├── openAI_variableLengthPendulumContinuous_learning.py ├── openAI_variableLengthPendulum_randomAction.py ├── openAI_variableLengthPendulum_test.py ├── openAI_variableLengthPendulum_train.py ├── planar_crane │ ├── __init__.py │ └── planar_crane.py ├── planar_crane_continuous │ ├── __init__.py │ └── planar_crane_continuous.py ├── planar_crane_feedback │ ├── __init__.py │ └── planar_crane_feedback.py ├── variable_pendulum │ ├── __init__.py │ └── variable_pendulum.py ├── variable_pendulum_continuous │ ├── __init__.py │ └── variable_pendulum_continuous.py └── weights │ ├── .gitattributes │ ├── dqn_planar_crane-v0_weights_2048_3_50000_2017-07-10_150801.h5f │ ├── dqn_planar_crane-v0_weights_2048_4_50000_2017-07-10_152433.h5f │ ├── duel_dqn_planar_crane-v0_weights_1024_4_50000_2017-07-11_122948.h5f │ └── duel_dqn_planar_crane-v0_weights_1024_4_50000_2017-07-11_123448.h5f ├── PID Controllers ├── C │ ├── PID.c │ └── PID.h └── Python │ └── PID.py ├── Parse └── parse_basicData.py ├── Path Planning and Trajectory Generation ├── dubins_path_tests.ipynb └── dubins_path_tests.py ├── Plotting ├── CRAWLAB_replot.m ├── Example_plot_MATLAB.pdf ├── Example_plot_Octave.pdf ├── MATLAB_Octave_plot_template.m ├── Using context manager │ ├── CRAWLAB.mplstyle │ ├── ContextManagerPlotting.ipynb │ ├── Humor-Sans.ttf │ ├── base_withAllPossible.mplstyle │ └── plot_filename_xkcd.pdf ├── brewer_color_gen.py ├── dual_yAxes_plot.pdf ├── dual_y_axes.py ├── matplotlib plot styles │ ├── base_withAllPossible.mplstyle │ ├── matplotlib_plot_snippet.py │ └── matplotlibrc ├── matplotlib_DistributionPlot_template.py ├── matplotlib_SurfacePlot_template.py ├── matplotlib_TrisurfacePlot_template.py ├── matplotlib_plot_template.py ├── matplotlib_snippet.py ├── plotHeadingDuringTrajectory.py └── xkcd_like_template.py ├── QR codes ├── QRdecode_fromImage.py ├── Webcam_QRreader.py └── images │ ├── QRresults.pdf │ ├── mobile_15percent.jpg │ ├── mobile_25percent.jpg │ ├── mobile_30percent.jpg │ ├── mobile_7percent.jpg │ ├── opencv_15percent.jpg │ ├── opencv_25percent.jpg │ ├── opencv_30percent.jpg │ ├── opencv_7percent.jpg │ ├── phbooth_15percent.jpg │ ├── phbooth_25percent.jpg │ ├── phbooth_30percent.jpg │ ├── phbooth_7percent.jpg │ ├── phbooth_7percent_cropBottom.jpg │ └── phbooth_7percent_cropTop.jpg ├── README.md ├── Robot Remote Control └── BeagleBoneServo_over_UDP.py ├── Serial Communication ├── basic_serial_communication.py ├── nonBlocking_serial_communication.py └── serial_buffer_parsing.py ├── Simple Simulations ├── Bang-bang-type Inputs.ipynb ├── Basic Input Shaping.ipynb ├── Mass-Spring-Damper with Disturbance.ipynb ├── Mass-Spring-Damper with LQR Control.ipynb ├── Mass-Spring-Damper with Numba.ipynb ├── Planar Crane Simulation with LQR Control.ipynb ├── Planar Crane Simulation.ipynb ├── Simple DC-motor Crane Simulation.ipynb ├── Two Link Planar Arm.ipynb ├── basic_InputShaping.py ├── mass_PD_ForceLimited.py ├── mass_spring_InitCond.py ├── mass_spring_damper_ForceDist_odeint.py ├── mass_spring_damper_ForceDist_solve_ivp.py ├── mass_spring_damper_nonlinear.py ├── mass_spring_damper_odeint.py ├── mass_spring_step.py ├── trajectory_interpolation.py └── two_mass_spring_PD.py ├── SymPy ├── Symbolic Derivatives.ipynb ├── Two Link Planar Arm.ipynb ├── numpy_inverseKinematics_example.py ├── sympy_inverseKinematics_CCDexample.py ├── sympy_inverseKinematics_example.py └── sympy_inverseKinematics_weightedJacobian.py ├── TF-agents ├── tf_agents_C51.py ├── tf_agents_C51agentEval.py ├── tf_agents_DDPG.py ├── tf_agents_DQN.py ├── tf_agents_DQNagentEval.py ├── tf_agents_PPO.py ├── tf_agents_PPOagentEval.py └── tf_agents_randomAgent.py ├── V-REP ├── BubbleRob Example │ ├── BubbleRob_example.ttt │ ├── bubbleRob_example.py │ ├── remoteApi.dylib │ ├── vrep.py │ └── vrepConst.py ├── Two Mass Spring Damper │ ├── remoteApi.dylib │ ├── two_mass_spring_damper.py │ ├── two_mass_spring_damper.ttt │ ├── vrep.py │ └── vrepConst.py └── python_bindings │ ├── complexCommandTest.py │ ├── pathPlanningTest.py │ ├── readMe.txt │ ├── remoteApi.dylib │ ├── simpleSynchronousTest.py │ ├── simpleTest.py │ ├── vrep.py │ └── vrepConst.py ├── Video Streaming ├── README.md ├── ffmpeg settings for jsmpg streaming.md ├── jsmpg.js └── jsmpg_demo.html ├── Web GUIs ├── Javascript Joystick - Websockets │ ├── css │ │ ├── JoyStick.css │ │ ├── main.css │ │ ├── normalize.css │ │ └── normalize.min.css │ ├── index.html │ └── js │ │ ├── JoyStick.js │ │ ├── jquery-ui.min.js │ │ ├── jquery.ui.touch-punch.min.js │ │ ├── main.js │ │ └── vendor │ │ ├── jquery-1.11.1.min.js │ │ └── modernizr-2.6.2-respond-1.1.0.min.js └── Javascript Joystick │ ├── css │ ├── JoyStick.css │ ├── main.css │ ├── normalize.css │ └── normalize.min.css │ ├── index.html │ └── js │ ├── JoyStick.js │ ├── jquery-ui.min.js │ ├── jquery.ui.touch-punch.min.js │ ├── main.js │ └── vendor │ ├── jquery-1.11.1.min.js │ └── modernizr-2.6.2-respond-1.1.0.min.js ├── Wrapping C with Python ├── BasicZVShaping │ ├── ZVshapingBasic │ │ ├── ZVshapingBasic.c │ │ ├── ZVshapingBasic.h │ │ └── ZVshapingBasic.xcodeproj │ │ │ ├── project.pbxproj │ │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcuserdata │ │ │ │ └── josh.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ │ └── xcuserdata │ │ │ └── josh.xcuserdatad │ │ │ └── xcschemes │ │ │ ├── ZVshapingBasic.xcscheme │ │ │ └── xcschememanagement.plist │ ├── ZVshapingBasic_wrapping.py │ └── libZVshapingBasic.dylib ├── Hello World │ ├── hello_world │ │ ├── hello_world.xcodeproj │ │ │ ├── project.pbxproj │ │ │ ├── project.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcuserdata │ │ │ │ │ └── josh.xcuserdatad │ │ │ │ │ └── UserInterfaceState.xcuserstate │ │ │ └── xcuserdata │ │ │ │ └── josh.xcuserdatad │ │ │ │ └── xcschemes │ │ │ │ ├── hello_world.xcscheme │ │ │ │ └── xcschememanagement.plist │ │ ├── main.c │ │ └── main.h │ ├── hello_world_wrapping.py │ └── libhello_world.dylib └── PID Controller │ ├── PID │ ├── PID.c │ ├── PID.h │ └── PID.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcuserdata │ │ │ └── josh.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ │ └── xcuserdata │ │ └── josh.xcuserdatad │ │ └── xcschemes │ │ ├── PID.xcscheme │ │ └── xcschememanagement.plist │ ├── basicPIDwrapping.py │ └── libPID.dylib ├── esp32 └── MicroPython │ ├── CRAWLAB base │ ├── esp32_MicroPy_boot_boilerplate.py │ └── esp32_MicroPy_main_boilerplate.py │ ├── KnightRider Neopixels │ └── main.py │ └── Neopixel Status Light │ └── main.py ├── esp8266 ├── MicroPython ESP8266 │ ├── CRAWLAB Wi-Fi & Serial E-Stop │ │ ├── esp8266_MicroPy_boot_Estop.py │ │ └── esp8266_MicroPy_main_Estop.py │ ├── CRAWLAB base │ │ ├── esp8266_MicroPy_boot_boilerplate.py │ │ └── esp8266_MicroPy_main_boilerplate.py │ ├── Default files │ │ └── boot.py │ ├── FeatherWing Servo Control - Basic │ │ ├── README.md │ │ └── main.py │ ├── FeatherWing Servo Control - Hold One Angle │ │ ├── README.md │ │ ├── boot.py │ │ └── main.py │ ├── FeatherWing Servo Control - UDP │ │ ├── README.md │ │ ├── boot.py │ │ └── main.py │ ├── MQTT basic │ │ ├── esp8266_MicroPy_boot_MQTT_basic.py │ │ └── esp8266_MicroPy_main_MQTT_basic.py │ ├── MQTT to Serial │ │ ├── esp8266_MicroPy_boot_MQTT_to_Serial.py │ │ └── esp8266_MicroPy_main_MQTT_to_Serial.py │ ├── MQTT to and from Serial │ │ ├── esp8266_MicroPy_boot_MQTT_SerialBridge.py │ │ └── esp8266_MicroPy_main_MQTT_SerialBridge.py │ ├── UDP UART │ │ ├── esp8266_MicroPy_UDP_UART.py │ │ └── esp8266_MicroPy_boot_boilerplate.py │ └── UDP server │ │ ├── esp8266_MicroPy_UDP.py │ │ └── esp8266_MicroPy_boot_boilerplate.py ├── esp8266 - Asynchronous MQTT │ ├── Libraries │ │ ├── ESPAsyncTCP-master.zip │ │ ├── async-mqtt-client-master.zip │ │ └── marvinroger-async-mqtt-client- An Arduino for ESP8266 asynchronous MQTT client implementation.webloc │ └── esp8266_asyncMQTT_basic │ │ └── esp8266_asyncMQTT_basic │ │ └── esp8266_asyncMQTT_basic.ino ├── esp8266_LEDblink │ └── esp8266_LEDblink.ino ├── esp8266_MQTT │ └── esp8266_MQTT.ino ├── esp8266_UDPserver │ └── esp8266_UDPserver.ino ├── esp8266_WebSocketClient_Basic │ └── esp8266_WebSocketClient_Basic.ino └── esp8266_WemoD1_MQTT │ └── esp8266_WemoD1_MQTT.ino │ └── esp8266_WemoD1_MQTT.ino.ino ├── iOS Pythonista Scripts ├── tilt_velocity.py ├── vel_from_center_UDPpickle.py └── vel_from_center_UDPstrings.py ├── iOS ├── Joystick Test │ ├── Joystick Test.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcuserdata │ │ │ │ └── josh.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ └── xcuserdata │ │ │ └── josh.xcuserdatad │ │ │ └── xcschemes │ │ │ ├── Joystick Test.xcscheme │ │ │ └── xcschememanagement.plist │ ├── Joystick Test │ │ ├── AnalogStick │ │ │ └── AnalogJoystick.swift │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets │ │ │ └── AppIcon.appiconset │ │ │ │ └── Contents.json │ │ ├── Base.lproj │ │ │ ├── LaunchScreen.storyboard │ │ │ └── Main.storyboard │ │ ├── Info.plist │ │ └── ViewController.swift │ ├── Joystick TestTests │ │ ├── Info.plist │ │ └── Joystick_TestTests.swift │ └── Joystick TestUITests │ │ ├── Info.plist │ │ └── Joystick_TestUITests.swift └── JoystickSK │ ├── JoystickSK.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcuserdata │ │ │ └── josh.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ └── xcuserdata │ │ └── josh.xcuserdatad │ │ └── xcschemes │ │ ├── JoystickSK.xcscheme │ │ └── xcschememanagement.plist │ ├── JoystickSK │ ├── AnalogStick │ │ └── AnalogJoystick.swift │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── GameViewController.swift │ ├── Info.plist │ └── art.scnassets │ │ ├── ship.scn │ │ └── texture.png │ ├── JoystickSKTests │ ├── Info.plist │ └── JoystickSKTests.swift │ └── JoystickSKUITests │ ├── Info.plist │ └── JoystickSKUITests.swift ├── rosbridge └── rosbridge_WebRemote │ ├── Dpad-only.html │ ├── apple-touch-icon-precomposed.png │ ├── css │ ├── JoyStick.css │ ├── main.css │ ├── normalize.css │ └── normalize.min.css │ ├── favicon.ico │ ├── img │ └── fleur_de_lis.png │ ├── index.html │ ├── joystick-only.html │ ├── joystick.html │ ├── js │ ├── JoyStick.js │ ├── main.js │ ├── roslib.js │ └── vendor │ │ ├── jquery-1.11.1.min.js │ │ ├── jquery-ui.min.js │ │ ├── jquery.ui.touch-punch.min.js │ │ ├── modernizr-2.6.2-respond-1.1.0.min.js │ │ ├── mqttws31.js │ │ └── roslib.min.js │ └── receiver.html └── styling ├── CRAWLAB_IPythonNotebook.css └── README.md /.gitattributes: -------------------------------------------------------------------------------- 1 | *.jpg filter=lfs diff=lfs merge=lfs -text 2 | *.h5f filter=lfs diff=lfs merge=lfs -text 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | .DS_Store 3 | *-checkpoint.ipynb 4 | *.pyc 5 | MQTT_ServerAccountInfo.py 6 | OpenAI Gym/example_data/* 7 | OpenAI Gym/weights/* 8 | OpenAI Gym/logs/* 9 | TF-agents/data* 10 | -------------------------------------------------------------------------------- /Adafruit LoRa/Arduino/LoRa_HeartBeat_receiver/README.md: -------------------------------------------------------------------------------- 1 | ## LoRa_HeartBeat_receiver 2 | 3 | Arduino sketch to receive heartbeat messages and toggle the onboard LED and print output to the serial monitor based on current status. The heartbeat sent has the format `$ULheartbeat`, which is checked by the receiver. It must be properly received *and* parsed to count as a received packet. If `MAX_MISSED_HEARTBEATS` or more heartbeats are missed consecutively, then the LED is lit solid red. 4 | 5 | Intended for use with the [Adafruit Feather M0 with LoRa Radio](https://www.adafruit.com/product/3178) 6 | 7 | Modified from the example code at [Adafruit's Tutorial](https://learn.adafruit.com/adafruit-feather-m0-radio-with-lora-radio-module/using-the-rfm-9x-radio) 8 | -------------------------------------------------------------------------------- /Adafruit LoRa/Arduino/LoRa_HeartBeat_receiver_neopixel/README.md: -------------------------------------------------------------------------------- 1 | ## LoRa Heartbeat Receiver with NeoPixel Status 2 | Arduino sketch to receive heartbeat messages and change the color of the a NeoPixel strip based on current status. The heartbeat sent has the format `$ULheartbeat`, which is checked by the receiver. It must be properly received *and* parsed to count as a received packet. If `MAX_MISSED_HEARTBEATS` or more heartbeats are missed consecutively, then the onboard LED is lit solid red and the strip is changed to red. If heartbeats are being received, it will be green. The strip also displays a "Knight Rider" effect, since motion is easier seen than static objects. 3 | 4 | Intended for use with the [Adafruit Feather M0 with LoRa Radio](https://www.adafruit.com/product/3178) 5 | 6 | Modified from the example code at [Adafruit's Tutorial](https://learn.adafruit.com/adafruit-feather-m0-radio-with-lora-radio-module/using-the-rfm-9x-radio) 7 | -------------------------------------------------------------------------------- /Adafruit LoRa/Arduino/LoRa_HeartBeat_sender/README.md: -------------------------------------------------------------------------------- 1 | ## LoRa_HeartBeat_sender 2 | 3 | Arduino sketch to send a basic heartbeat message and toggle the onboard LED and print output to the serial monitor based on current status. The heartbeat sent has the format `$ULheartbeat`. 4 | 5 | Intended for use with the [Adafruit Feather M0 with LoRa Radio](https://www.adafruit.com/product/3178) 6 | 7 | Modified from the example code at [Adafruit's Tutorial](https://learn.adafruit.com/adafruit-feather-m0-radio-with-lora-radio-module/using-the-rfm-9x-radio) 8 | -------------------------------------------------------------------------------- /Adafruit LoRa/Arduino/LoRa_HeartBeat_sender_withOLEDStatus/README.md: -------------------------------------------------------------------------------- 1 | ## LoRa_HeartBeat_sned_withOLEDStatus 2 | 3 | Arduino sketch to send a heartbeat messages with the format `$ULheartbeat`, which is checked by the receiver. It looks for an acknowledgement from the receiver and outputs the status to the serial monitor and an OLED screen. 4 | 5 | Intended for use with the [Adafruit Feather M0 with LoRa Radio](https://www.adafruit.com/product/3178) and [Adafruit FeatherWing OLED](https://www.adafruit.com/product/2900). 6 | 7 | Modified from the example code in Adafruit's [LoRA](https://learn.adafruit.com/adafruit-feather-m0-radio-with-lora-radio-module/using-the-rfm-9x-radio) and [OLED](https://learn.adafruit.com/adafruit-oled-featherwing) tutorials. 8 | -------------------------------------------------------------------------------- /Adafruit LoRa/Arduino/LoRa_HeartBeat_sender_withStatus/README.md: -------------------------------------------------------------------------------- 1 | ## LoRa_HeartBeat_sender_withStatus 2 | 3 | Arduino sketch to send a heartbeat messages with the format `$ULheartbeat`, which is checked by the receiver. It looks for an acknowledgement from the receiver and outputs the status to the serial monitor. 4 | 5 | Intended for use with the [Adafruit Feather M0 with LoRa Radio](https://www.adafruit.com/product/3178) 6 | 7 | Modified from the example code at [Adafruit's Tutorial](https://learn.adafruit.com/adafruit-feather-m0-radio-with-lora-radio-module/using-the-rfm-9x-radio) 8 | -------------------------------------------------------------------------------- /Adafruit LoRa/Arduino/README.md: -------------------------------------------------------------------------------- 1 | ## Arudino-based LoRa communications 2 | This sub-folder contains code to communicate over [LoRa](https://lora-alliance.org) using [Adafruit Feather M0 with RFM95 LoRa Radio - 900MHz - RadioFruit](https://www.adafruit.com/product/3178) boards using the Arduino ecosystem. 3 | 4 | More information on their use can be found in the [excellent tutorial on the Adafruit site](https://learn.adafruit.com/adafruit-feather-m0-radio-with-lora-radio-module). -------------------------------------------------------------------------------- /Adafruit LoRa/Arduino/basic_LoRa_receiver/README.md: -------------------------------------------------------------------------------- 1 | Basic code adapted from the [Adafruit Tutorial](https://learn.adafruit.com/adafruit-feather-m0-radio-with-lora-radio-module/using-the-rfm-9x-radio). -------------------------------------------------------------------------------- /Adafruit LoRa/CircuitPython/Basic Heartbeat Pair/Heartbeat Sender/main.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | 3 | ############################################################################### 4 | # main.py 5 | # 6 | # Basic sending of heartbeat signal using Adafruit LoRA feathers 7 | # 8 | # 9 | # Created: 05/04/19 10 | # - Joshua Vaughan 11 | # - joshua.vaughan@louisiana.edu 12 | # - http://www.ucs.louisiana.edu/~jev9637 13 | # 14 | # Modified: 15 | # * 16 | # 17 | # TODO: 18 | # * 19 | ############################################################################### 20 | 21 | import digitalio 22 | import board 23 | import busio 24 | import time 25 | import adafruit_rfm9x 26 | 27 | # Set up the LoRa transmission 28 | RADIO_FREQ_MHZ = 915.0 29 | CS = digitalio.DigitalInOut(board.RFM9X_CS) 30 | RESET = digitalio.DigitalInOut(board.RFM9X_RST) 31 | spi = busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO) 32 | rfm9x = adafruit_rfm9x.RFM9x(spi, CS, RESET, RADIO_FREQ_MHZ) 33 | 34 | while (True): 35 | rfm9x.send('beat') 36 | 37 | # print('Waiting for data...') 38 | # packet = rfm9x.receive(timeout_s=0.1) # Wait for a packet to be received (up to 0.5 seconds) 39 | # if packet is not None: 40 | # packet_text = str(packet, 'ascii') 41 | # print('Received: {0}'.format(packet_text)) 42 | 43 | time.sleep(0.05) 44 | -------------------------------------------------------------------------------- /Adafruit LoRa/CircuitPython/Basic Heartbeat Pair/README.md: -------------------------------------------------------------------------------- 1 | This folder contains CircuitPython code for the sender and receiver for a heartbeat-based communication system, which could be used for an E-stop. 2 | 3 | Any data received is considered a heartbeat, which is bad practice, in general. Please see some of the other folders in this repository for methods of properly parsing a coded heartbeat signal. -------------------------------------------------------------------------------- /Adafruit LoRa/CircuitPython/Basic Heartbeat relay control/Heartbeat Sender/main.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | 3 | ############################################################################### 4 | # main.py 5 | # 6 | # Basic sending of heartbeat signal using Adafruit LoRA feathers 7 | # 8 | # 9 | # Created: 05/04/19 10 | # - Joshua Vaughan 11 | # - joshua.vaughan@louisiana.edu 12 | # - http://www.ucs.louisiana.edu/~jev9637 13 | # 14 | # Modified: 15 | # * 16 | # 17 | # TODO: 18 | # * 19 | ############################################################################### 20 | 21 | import digitalio 22 | import board 23 | import busio 24 | import time 25 | import adafruit_rfm9x 26 | 27 | # Set up the LoRa transmission 28 | RADIO_FREQ_MHZ = 915.0 29 | CS = digitalio.DigitalInOut(board.RFM9X_CS) 30 | RESET = digitalio.DigitalInOut(board.RFM9X_RST) 31 | spi = busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO) 32 | rfm9x = adafruit_rfm9x.RFM9x(spi, CS, RESET, RADIO_FREQ_MHZ) 33 | 34 | while (True): 35 | rfm9x.send('$ULheartbeat') 36 | 37 | # print('Waiting for data...') 38 | # packet = rfm9x.receive(timeout_s=0.1) # Wait for a packet to be received (up to 0.5 seconds) 39 | # if packet is not None: 40 | # packet_text = str(packet, 'ascii') 41 | # print('Received: {0}'.format(packet_text)) 42 | 43 | time.sleep(0.05) 44 | -------------------------------------------------------------------------------- /Adafruit LoRa/CircuitPython/Basic Heartbeat relay control/README.md: -------------------------------------------------------------------------------- 1 | This folder contains CircuitPython code for the sender and receiver for a heartbeat-based E-stop using a digital output from the board to control a relay to cut the power to the drive components. 2 | 3 | If `MAX_MISSED_HEARTBEATS` or more heartbeats are missed consecutively, then the relay output is turned off and the normally open relay opens. 4 | 5 | Any data received is considered a heartbeat, which is bad practice, in general. Please see [](), for properly parsing a coded heartbeat signal. 6 | 7 | *Note:* The files do not have headers, as the flash on the chips will be nearly full after installing CircuitPython and loading the necessary libraries. -------------------------------------------------------------------------------- /Adafruit LoRa/CircuitPython/Heartbeat relay control - data check and neopixel/Heartbeat Sender/main.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | 3 | ############################################################################### 4 | # main.py 5 | # 6 | # Basic sending of heartbeat signal using Adafruit LoRA feathers 7 | # 8 | # 9 | # Created: 05/04/19 10 | # - Joshua Vaughan 11 | # - joshua.vaughan@louisiana.edu 12 | # - http://www.ucs.louisiana.edu/~jev9637 13 | # 14 | # Modified: 15 | # * 16 | # 17 | # TODO: 18 | # * 19 | ############################################################################### 20 | 21 | import digitalio 22 | import board 23 | import busio 24 | import time 25 | import adafruit_rfm9x 26 | 27 | # Set up the LoRa transmission 28 | RADIO_FREQ_MHZ = 915.0 29 | CS = digitalio.DigitalInOut(board.RFM9X_CS) 30 | RESET = digitalio.DigitalInOut(board.RFM9X_RST) 31 | spi = busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO) 32 | rfm9x = adafruit_rfm9x.RFM9x(spi, CS, RESET, RADIO_FREQ_MHZ) 33 | 34 | while (True): 35 | rfm9x.send('$ULheartbeat') 36 | 37 | # print('Waiting for data...') 38 | # packet = rfm9x.receive(timeout_s=0.1) # Wait for a packet to be received (up to 0.5 seconds) 39 | # if packet is not None: 40 | # packet_text = str(packet, 'ascii') 41 | # print('Received: {0}'.format(packet_text)) 42 | 43 | time.sleep(0.05) 44 | -------------------------------------------------------------------------------- /Adafruit LoRa/CircuitPython/Heartbeat relay control - data check and neopixel/README.md: -------------------------------------------------------------------------------- 1 | ## A Heartbeat-based Relay E-stop with NeoPixel Status 2 | This folder contains CircuitPython code for the sender and receiver for a heartbeat-based E-stop using a digital output from the board to control a relay to cut the power to the drive components. 3 | 4 | The heartbeat sent has the format `$ULheartbeat`, which is checked by the receiver. It must be properly received *and* parsed to count as a received packet. If `MAX_MISSED_HEARTBEATS` or more heartbeats are missed consecutively, then the relay output is turned off and the normally open relay opens. 5 | 6 | A NeoPixel strip is controlled to indicate the state of the system. 7 | 8 | *Note:* 9 | * The files do not have headers, as the flash on the chips will be nearly full after installing CircuitPython and loading the necessary libraries. 10 | * As of 05/09/19, there appear to be issues with the NeoPixel controller. -------------------------------------------------------------------------------- /Adafruit LoRa/CircuitPython/Heartbeat relay control with data check/Heartbeat Sender/main.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | 3 | ############################################################################### 4 | # main.py 5 | # 6 | # Basic sending of heartbeat signal using Adafruit LoRA feathers 7 | # 8 | # 9 | # Created: 05/04/19 10 | # - Joshua Vaughan 11 | # - joshua.vaughan@louisiana.edu 12 | # - http://www.ucs.louisiana.edu/~jev9637 13 | # 14 | # Modified: 15 | # * 16 | # 17 | # TODO: 18 | # * 19 | ############################################################################### 20 | 21 | import digitalio 22 | import board 23 | import busio 24 | import time 25 | import adafruit_rfm9x 26 | 27 | # Set up the LoRa transmission 28 | RADIO_FREQ_MHZ = 915.0 29 | CS = digitalio.DigitalInOut(board.RFM9X_CS) 30 | RESET = digitalio.DigitalInOut(board.RFM9X_RST) 31 | spi = busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO) 32 | rfm9x = adafruit_rfm9x.RFM9x(spi, CS, RESET, RADIO_FREQ_MHZ) 33 | 34 | while (True): 35 | rfm9x.send('$ULheartbeat') 36 | 37 | # print('Waiting for data...') 38 | # packet = rfm9x.receive(timeout_s=0.1) # Wait for a packet to be received (up to 0.5 seconds) 39 | # if packet is not None: 40 | # packet_text = str(packet, 'ascii') 41 | # print('Received: {0}'.format(packet_text)) 42 | 43 | time.sleep(0.05) 44 | -------------------------------------------------------------------------------- /Adafruit LoRa/CircuitPython/Heartbeat relay control with data check/README.md: -------------------------------------------------------------------------------- 1 | ## Heartbeat with Data Check 2 | This folder contains CircuitPython code for the sender and receiver for a heartbeat-based E-stop using a digital output from the board to control a relay to cut the power to the drive components. 3 | 4 | The heartbeat sent has the format `$ULheartbeat`, which is checked by the receiver. It must be properly received *and* parsed to count as a received packet. If `MAX_MISSED_HEARTBEATS` or more heartbeats are missed consecutively, then the relay output is turned off and the normally open relay opens. 5 | 6 | Any data received is considered a heartbeat, which is bad practice, in general. Please see [](), for properly parsing a coded heartbeat signal. 7 | -------------------------------------------------------------------------------- /Adafruit LoRa/CircuitPython/README.md: -------------------------------------------------------------------------------- 1 | ## CircuitPython-based LoRa communications 2 | This sub-folder contains code to communicate over [LoRa](https://lora-alliance.org) using [Adafruit Feather M0 with RFM95 LoRa Radio - 900MHz - RadioFruit](https://www.adafruit.com/product/3178) boards using [CircuitPython](https://learn.adafruit.com/circuitpython-essentials/circuitpython-essentials). 3 | 4 | More information on their use can be found in the [excellent tutorial on the Adafruit site](https://learn.adafruit.com/adafruit-feather-m0-radio-with-lora-radio-module). -------------------------------------------------------------------------------- /Adafruit LoRa/README.md: -------------------------------------------------------------------------------- 1 | # LoRa communications 2 | This sub-folder contains code to communicate over [LoRa](https://lora-alliance.org) using [Adafruit Feather M0 with RFM95 LoRa Radio - 900MHz - RadioFruit](https://www.adafruit.com/product/3178) boards. -------------------------------------------------------------------------------- /Adafruit LoRa/Raspberry Pi Hat/Code from Adafruit/blinkatest.py: -------------------------------------------------------------------------------- 1 | import board 2 | import digitalio 3 | import busio 4 | 5 | print("Hello blinka!") 6 | 7 | # Try to great a Digital input 8 | pin = digitalio.DigitalInOut(board.D4) 9 | print("Digital IO ok!") 10 | 11 | # Try to create an I2C device 12 | i2c = busio.I2C(board.SCL, board.SDA) 13 | print("I2C ok!") 14 | 15 | # Try to create an SPI device 16 | spi = busio.SPI(board.SCLK, board.MOSI, board.MISO) 17 | print("SPI ok!") 18 | 19 | print("done!") 20 | -------------------------------------------------------------------------------- /Adafruit LoRa/Raspberry Pi Hat/font5x8.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/Adafruit LoRa/Raspberry Pi Hat/font5x8.bin -------------------------------------------------------------------------------- /Adafruit Trinket/trinket_buttonRead/trinket_buttonRead.ino: -------------------------------------------------------------------------------- 1 | /* 2 | Button 3 | Turns on an LED when a switch connected from #0 to ground is pressed 4 | 5 | This example code is in the public domain. 6 | 7 | To upload to your Gemma or Trinket: 8 | 1) Select the proper board from the Tools->Board Menu 9 | 2) Select USBtinyISP from the Tools->Programmer 10 | 3) Plug in the Gemma/Trinket, make sure you see the green LED lit 11 | 4) For windows, install the USBtiny drivers 12 | 5) Press the button on the Gemma/Trinket - verify you see 13 | the red LED pulse. This means it is ready to receive data 14 | 6) Click the upload button above within 10 seconds 15 | */ 16 | 17 | #define SWITCH 0 18 | #define LED 1 19 | 20 | // the setup routine runs once when you press reset: 21 | void setup() { 22 | Serial.begin(9600); 23 | 24 | // initialize the LED pin as an output. 25 | pinMode(LED, OUTPUT); 26 | // initialize the SWITCH pin as an input. 27 | pinMode(SWITCH, INPUT); 28 | // ...with a pullup 29 | digitalWrite(SWITCH, HIGH); 30 | } 31 | 32 | // the loop routine runs over and over again forever: 33 | void loop() { 34 | Serial.println(digitalRead(SWITCH); 35 | 36 | if (! digitalRead(SWITCH)) { // if the button is pressed 37 | digitalWrite(LED, HIGH); // light up the LED 38 | } else { 39 | digitalWrite(LED, LOW); // otherwise, turn it off 40 | } 41 | } 42 | 43 | -------------------------------------------------------------------------------- /AprilTag Markers/apriltag_checkerboard_16h5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/AprilTag Markers/apriltag_checkerboard_16h5.png -------------------------------------------------------------------------------- /AprilTag Markers/apriltag_checkerboard_36h11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/AprilTag Markers/apriltag_checkerboard_36h11.png -------------------------------------------------------------------------------- /AprilTag Markers/apriltag_grid_generator.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | 3 | ############################################################################### 4 | # apriltag_grid_generator.py 5 | # 6 | # Script to generate a calibration grid of AprilTags using the moms-apriltag 7 | # package. Code adapted from that at: 8 | # https://github.com/MomsFriendlyRobotCompany/moms_apriltag 9 | # 10 | # NOTE: Any plotting is set up for output, not viewing on screen. 11 | # So, it will likely be ugly on screen. The saved PDFs should look 12 | # better. 13 | # 14 | # Created: 10/21/21 15 | # - Joshua Vaughan 16 | # - joshua.vaughan@louisiana.edu 17 | # - @doc_vaughan 18 | # - http://www.ucs.louisiana.edu/~jev9637 19 | # 20 | # Modified: 21 | # * 22 | # 23 | # TODO: 24 | # * 25 | ############################################################################### 26 | 27 | import moms_apriltag as apt 28 | import numpy as np 29 | import imageio 30 | 31 | 32 | if __name__ == '__main__': 33 | family = "tag36h11" 34 | shape = (4,6) 35 | filename = "apriltag_checkerboard_36h11.png" 36 | size = 50 37 | 38 | target = apt.board(shape, family, size) 39 | imageio.imwrite(filename, target) -------------------------------------------------------------------------------- /ArUco Markers/aruco_generator.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | 3 | ############################################################################### 4 | # aruco_generator.py 5 | # 6 | # script testing basic generation of Aruco markers 7 | # 8 | # Code modified from that at: 9 | # http://www.philipzucker.com/aruco-in-opencv/ 10 | # 11 | # NOTE: Any plotting is set up for output, not viewing on screen. 12 | # So, it will likely be ugly on screen. The saved PDFs should look 13 | # better. 14 | # 15 | # Created: 10/21/19 16 | # - Joshua Vaughan 17 | # - joshua.vaughan@louisiana.edu 18 | # - http://www.ucs.louisiana.edu/~jev9637 19 | # 20 | # Modified: 21 | # * 22 | # 23 | # TODO: 24 | # * 25 | ############################################################################### 26 | 27 | import numpy as np 28 | import matplotlib.pyplot as plt 29 | 30 | import cv2 31 | import cv2.aruco as aruco 32 | 33 | MARKER_IDS = [0, 1, 2, 3] # IDs for generated maker 34 | MARKER_SIZE = 144 # Pixel size of (square) marker 35 | 36 | aruco_dict = aruco.Dictionary_get(aruco.DICT_6X6_250) 37 | 38 | for id in MARKER_IDS: 39 | img = aruco.drawMarker(aruco_dict, id, MARKER_SIZE) 40 | 41 | # Write the generated image to a file 42 | cv2.imwrite(f"test_marker_{id}.svg", img) 43 | 44 | # Then, show is 45 | cv2.imshow('frame', img) 46 | cv2.waitKey(0) 47 | cv2.destroyAllWindows() -------------------------------------------------------------------------------- /ArUco Markers/iMac_calibration.yaml: -------------------------------------------------------------------------------- 1 | camera_matrix: 2 | - - 5069.684793436291 3 | - 0.0 4 | - 519.9420845501143 5 | - - 0.0 6 | - 5215.601152106101 7 | - 910.9426319658294 8 | - - 0.0 9 | - 0.0 10 | - 1.0 11 | dist_coeff: 12 | - - -0.23440037945230996 13 | - 30.094546122796935 14 | - -0.02533429560816653 15 | - -0.09270518839988952 16 | - -325.3463060762521 17 | -------------------------------------------------------------------------------- /Arduino/BasicWPAConnection/BasicWPAConnection.ino: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | char ssid[] = "CRAWlab"; // your network SSID (name) 4 | char pass[] = "inputshaping"; // your network password 5 | int status = WL_IDLE_STATUS; // the Wifi radio's status 6 | 7 | void setup() { 8 | // initialize serial: 9 | Serial.begin(9600); 10 | 11 | // attempt to connect using WPA2 encryption: 12 | Serial.println("Attempting to connect to WPA network..."); 13 | status = WiFi.begin(ssid, pass); 14 | 15 | // if you're not connected, stop here: 16 | if ( status != WL_CONNECTED) { 17 | Serial.println("Couldn't get a wifi connection"); 18 | while(true); 19 | } 20 | // if you are connected, print out info about the connection: 21 | else { 22 | Serial.println("Connected to network"); 23 | } 24 | } 25 | 26 | void loop() { 27 | // do nothing 28 | } -------------------------------------------------------------------------------- /Arduino/Simple_Servo/Simple_Servo.ino: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | Servo myservo; // create servo object to control a servo 4 | // a maximum of eight servo objects can be created 5 | 6 | int pos = 0; // variable to store the servo position 7 | 8 | void setup() 9 | { 10 | myservo.attach(8); // attaches the servo on pin 8 to the servo object 11 | 12 | //initialize the serial connection 13 | Serial.begin(9600); 14 | } 15 | 16 | 17 | void loop() 18 | { 19 | // if there's any serial data available, read it: 20 | while (Serial.available() > 0) { 21 | 22 | // look for the next valid integer in the incoming serial stream: 23 | pos = Serial.parseInt(); 24 | 25 | Serial.print("Moving to angle "); 26 | Serial.println (pos); 27 | 28 | myservo.write(pos);5 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Arduino/StepperExample/StepperExample.ino: -------------------------------------------------------------------------------- 1 | // Adafruit Motor shield library 2 | // copyright Adafruit Industries LLC, 2009 3 | // this code is public domain, enjoy! 4 | 5 | #include 6 | 7 | // Connect a stepper motor with 48 steps per revolution (7.5 degree) 8 | // to motor port #2 (M3 and M4) 9 | AF_Stepper motor(100, 2); 10 | 11 | void setup() { 12 | Serial.begin(9600); // set up Serial library at 9600 bps 13 | Serial.println("Stepper test!"); 14 | 15 | motor.setSpeed(10); // 10 rpm 16 | } 17 | 18 | void loop() { 19 | Serial.println("Single coil steps"); 20 | motor.step(100, FORWARD, SINGLE); 21 | motor.step(100, BACKWARD, SINGLE); 22 | 23 | // Serial.println("Double coil steps"); 24 | // motor.step(100, FORWARD, DOUBLE); 25 | // motor.step(100, BACKWARD, DOUBLE); 26 | // 27 | // Serial.println("Interleave coil steps"); 28 | // motor.step(100, FORWARD, INTERLEAVE); 29 | // motor.step(100, BACKWARD, INTERLEAVE); 30 | // 31 | // Serial.println("Micrsostep steps"); 32 | // motor.step(100, FORWARD, MICROSTEP); 33 | // motor.step(100, BACKWARD, MICROSTEP); 34 | } 35 | -------------------------------------------------------------------------------- /Arduino/Wifi_BasicUDPString/SendUDPpacket.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | 3 | 4 | # import socket 5 | # from time import sleep 6 | # 7 | # UDP_IP = "10.0.1.111" 8 | # UDP_PORT = 2390 9 | # MESSAGE = "Hello, World!" 10 | # 11 | # print "UDP target IP:", UDP_IP 12 | # print "UDP target port:", UDP_PORT 13 | # print "message:", MESSAGE 14 | # 15 | # while(1): 16 | # sock = socket.socket(socket.AF_INET, # Internet 17 | # socket.SOCK_DGRAM) # UDP 18 | # sock.sendto(MESSAGE, (UDP_IP, UDP_PORT)) 19 | # print "sending..." 20 | # sleep(2) 21 | # 22 | # # 23 | import socket 24 | import sys 25 | from time import sleep 26 | 27 | HOST, PORT = "192.168.0.111", 2390 28 | # data = " ".join(sys.argv[1:]) 29 | data = "hello" 30 | 31 | # SOCK_DGRAM is the socket type to use for UDP sockets 32 | sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 33 | 34 | 35 | while(1): 36 | # As you can see, there is no connect() call; UDP has no connections. 37 | # Instead, data is directly sent to the recipient via sendto(). 38 | sock.sendto(data + "\n", (HOST, PORT)) 39 | received = sock.recv(1024) 40 | 41 | print "Sent: {}".format(data) 42 | print "Received: {}".format(received) 43 | sleep(2) 44 | -------------------------------------------------------------------------------- /Arduino/Wifi_BasicUDPString/UDPserver.py: -------------------------------------------------------------------------------- 1 | import SocketServer 2 | 3 | class MyUDPHandler(SocketServer.BaseRequestHandler): 4 | """ 5 | This class works similar to the TCP handler class, except that 6 | self.request consists of a pair of data and client socket, and since 7 | there is no connection the client address must be given explicitly 8 | when sending data back via sendto(). 9 | """ 10 | 11 | def handle(self): 12 | data = self.request[0].strip() 13 | socket = self.request[1] 14 | print "{} wrote:".format(self.client_address[0]) 15 | print data 16 | socket.sendto(data.upper(), self.client_address) 17 | 18 | if __name__ == "__main__": 19 | HOST, PORT = '192.168.0.110', 2390 20 | server = SocketServer.UDPServer((HOST, PORT), MyUDPHandler) 21 | server.serve_forever() -------------------------------------------------------------------------------- /Arduino/Wifi_UDPServoAngle/SendUDPServoAngle.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | 3 | import socket 4 | import sys 5 | from time import sleep 6 | 7 | HOST, PORT = "10.0.1.111", 2390 8 | # data = " ".join(sys.argv[1:]) 9 | data = 45 10 | 11 | # SOCK_DGRAM is the socket type to use for UDP sockets 12 | sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 13 | 14 | 15 | while(1): 16 | # As you can see, there is no connect() call; UDP has no connections. 17 | # Instead, data is directly sent to the recipient via sendto(). 18 | sock.sendto(str(data) + "\n", (HOST, PORT)) 19 | received = sock.recv(1024) 20 | 21 | print "\nSent: {}".format(data) 22 | print "Received: {}".format(received) 23 | 24 | data = data + 10 25 | if data > 150: 26 | data = 50 27 | 28 | sleep(1) 29 | -------------------------------------------------------------------------------- /Audio in Python/multi_freq_test.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/Audio in Python/multi_freq_test.wav -------------------------------------------------------------------------------- /Audio in Python/single_freq_test.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/Audio in Python/single_freq_test.wav -------------------------------------------------------------------------------- /Bash Scripts/batch_extract_frames.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | for filename in *.m4v 4 | do 5 | echo "" 6 | echo "Extracting frames from $filename" 7 | echo "" 8 | basename=${filename%.m4v} 9 | 10 | ffmpeg -i $filename -vf "select=not(mod(n\,60))" -vsync vfr -q:v 2 ${basename}_%03d.jpg 11 | done -------------------------------------------------------------------------------- /Bash Scripts/batch_movie_from_jpgs.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | for basename in 2019_RoboBoat_ZED_Fri_autonav1 2019_RoboBoat_ZED_Fri_autonav2 2019_RoboBoat_ZED_Fri_autonav3_0 2019_RoboBoat_ZED_Fri_autonav3_1 2019_RoboBoat_ZED_Fri_autonav3_2 2019_RoboBoat_ZED_Fri_autonav4 2019_RoboBoat_ZED_Fri_testing1 2019_RoboBoat_ZED_Fri_testing2 2019_RoboBoat_ZED_Fri_testing3 2019_RoboBoat_ZED_Fri_testing4 2019_RoboBoat_ZED_Thur_afternoon_autonav1 2019_RoboBoat_ZED_Thur_afternoon_autonav2 2019_RoboBoat_ZED_Thur_afternoon_autonav3 2019_RoboBoat_ZED_Thur_afternoon_dock1 2019_RoboBoat_ZED_Thur_afternoon_findpath1 2019_RoboBoat_ZED_Thur_afternoon_findpath2 2019_RoboBoat_ZED_Thur_afternoon_flag 2019_RoboBoat_ZED_Thur_afternoon_speed1 2019_RoboBoat_ZED_Thur_afternoon_speed2 2019_RoboBoat_ZED_Thur_morn_autonav1_0 2019_RoboBoat_ZED_Thur_morn_autonav2_0 2019_RoboBoat_ZED_Thur_morn_autonav3_0 2019_RoboBoat_ZED_Thur_morn_autonav4_0 2019_RoboBoat_ZED_Thur_morn_autonav5_0 2019_RoboBoat_ZED_Thur_morn_dock1_0 2019_RoboBoat_ZED_Thur_morn_dock2_0 2019_RoboBoat_ZED_Thur_morn_findpath1_0 2019_RoboBoat_ZED_Thur_morn_findpath2_0 2019_RoboBoat_ZED_Thur_morn_raiseflag1_0 2019_RoboBoat_ZED_Thur_morn_speed1_0 2019_RoboBoat_ZED_Thur_morn_speed2_0 2019_RoboBoat_ZED_Wed_autonav_0 2019_RoboBoat_ZED_Wed_dock_0 2019_RoboBoat_ZED_Wed_findpath_0 2019_RoboBoat_ZED_Wed_findpath2_0 2019_RoboBoat_ZED_Wed_perim_0 2019_RoboBoat_ZED_Wed_slolam_0 2019_RoboBoat_ZED_Wed_slolam1_0 2019_RoboBoat_ZED_Wed_speed_0 2019_RoboBoat_ZED_Wed_speedholo_0 2019_RoboBoat_ZED_Thur_afternoon_dock2 4 | do 5 | echo "" 6 | echo "Making movie with from $filename" 7 | echo "" 8 | 9 | ffmpeg -framerate 7 -i ${basename}_%05d.jpg ${basename}.mp4 10 | done -------------------------------------------------------------------------------- /Bash Scripts/chromium_kiosk.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # This script will open a full-screen chromium window at the IP address 4 | # specified. It is useful for starting web-based robot GUIs remotely. The 5 | # leading DISPLAY option will open on native display even if starting over SSH 6 | # 7 | # Created: 07/09/20 - JEV - joshua.vaughan@louisiana.edu 8 | 9 | DISPLAY=:0.0 chromium-browser --noerrdialogs --incognito --kiosk 127.0.0.1:5000 10 | -------------------------------------------------------------------------------- /Bash Scripts/dotfile_setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # WARNING... exisiting configurations for .inputrc and .tmux.conf will be 4 | # overwritten when this script is run 5 | # 6 | # Run this from the home directory of a newly setup machine to automatically 7 | # configure tmux and inputrc for easier use. 8 | # 9 | # To do so, copy this script to the home directory for the desired user. You 10 | # can generally do: 11 | # 12 | # cd ~ 13 | # 14 | # to do that. You may have to change the permissions to make the script 15 | # executable. Do to that, use the chmod command 16 | # 17 | # chmod +x dotfile_setup.sh 18 | # 19 | # Then, run the file from the terminal by: 20 | # 21 | # ./dotfile_setup.sh 22 | 23 | 24 | # This section will create a tmux configuration file. 25 | TMUX_FILE=".tmux.conf" 26 | 27 | /bin/cat <$TMUX_FILE 28 | # Make mouse useful 29 | set -g mouse on 30 | 31 | # Only resize to the smallest client if they are looking at it 32 | setw -g aggressive-resize on 33 | EOM 34 | 35 | # This section will create a inputrc configuration file. 36 | INPUTRC_FILE=".inputrc" 37 | 38 | /bin/cat <$INPUTRC_FILE 39 | "\e[A": history-search-backward 40 | "\e[B": history-search-forward 41 | set show-all-if-ambiguous on 42 | set completion-ignore-case on 43 | EOM -------------------------------------------------------------------------------- /Bash Scripts/pdfTOeps.sh: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | # 3 | # requires pdftops (part of the poppler package) 4 | # recommended install via homebrew via >brew install poppler 5 | # 6 | # example use to convert all pdfs in the current directory to eps 7 | # prompt> pdfTOeps *.pdf 8 | 9 | 10 | for f in "$@" 11 | do 12 | printf "Converting $f ... \n" 13 | pdftops -eps "$f" 14 | done 15 | -------------------------------------------------------------------------------- /Basic Machine Vision/calibration_images/camera-calibration-checker-board_9x7.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/Basic Machine Vision/calibration_images/camera-calibration-checker-board_9x7.pdf -------------------------------------------------------------------------------- /Basic Machine Vision/calibration_images/iPhoneCamCalibration_1.jpg: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f5bffc068d99790c3dd77eeac8769b2d1083a92e6e89cb8575fee0464e9887d7 3 | size 110551 4 | -------------------------------------------------------------------------------- /Basic Machine Vision/calibration_images/iPhoneCamCalibration_2.jpg: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:5b950b70cac23d49770dc0098bc4a895bec3ad37d0fe689dde700a022f45509c 3 | size 94705 4 | -------------------------------------------------------------------------------- /Basic Machine Vision/calibration_images/iPhoneCamCalibration_3.jpg: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:49a700ede52e0a06c0931dc964aedc59a567145ec97b2d0483d439d222669637 3 | size 93071 4 | -------------------------------------------------------------------------------- /Basic Machine Vision/calibration_images/iPhoneCamCalibration_4.jpg: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f2cc55ab47c57ca34e57619bc70b6fcbf3bbab58e253d4f1fe25d714802470dd 3 | size 93062 4 | -------------------------------------------------------------------------------- /Basic Machine Vision/calibration_images/iPhoneCamCalibration_5.jpg: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:6b7e7d3bff876d87fcd475f2b1b9d243444e1e19ae16e1f004cba28e9f675d9f 3 | size 88846 4 | -------------------------------------------------------------------------------- /Basic Machine Vision/calibration_images/iPhoneCamCalibration_6.jpg: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:c6ccd2e0476cb30811f05c2d8dfc8bc60d77104309350d637c10c6e4074ad49f 3 | size 98818 4 | -------------------------------------------------------------------------------- /Basic Machine Vision/calibration_images/iPhoneCamCalibration_7.jpg: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:c60c9bd17861c4444033bc92f30daa8e1ca6981ce44af0173774d7f66acb068f 3 | size 109775 4 | -------------------------------------------------------------------------------- /Basic Machine Vision/calibration_images/iPhoneCamCalibration_8.jpg: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:5bcceb0d663b34f668c704ba56fbf178fd259edbcd1ff69d79d08b40565983ad 3 | size 107828 4 | -------------------------------------------------------------------------------- /Basic Machine Vision/calibration_images/iPhoneCamCalibration_9.jpg: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:8d38a3726d52c6436abc2169f65407cb29ca3853d1edd2ba603b499f5ef12717 3 | size 91291 4 | -------------------------------------------------------------------------------- /Basic Machine Vision/openCV_multiVideoStream.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | 3 | ############################################################################### 4 | # openCV_multiVideoStream.py 5 | # 6 | # Simply display the video captures by 3 USB cameras 7 | # 8 | # NOTE: Any plotting is set up for output, not viewing on screen. 9 | # So, it will likely be ugly on screen. The saved PDFs should look 10 | # better. 11 | # 12 | # Created: 07/28/17 13 | # - Joshua Vaughan 14 | # - joshua.vaughan@louisiana.edu 15 | # - http://www.ucs.louisiana.edu/~jev9637 16 | # 17 | # Modified: 18 | # * 19 | # 20 | # TODO: 21 | # * 22 | ############################################################################### 23 | 24 | import numpy as np 25 | import cv2 26 | 27 | cam1 = cv2.VideoCapture(0) 28 | cam2 = cv2.VideoCapture(1) 29 | cam3 = cv2.VideoCapture(2) 30 | 31 | 32 | try: 33 | while(True): 34 | # Capture frame-by-frame 35 | ret1, frame1 = cam1.read() 36 | ret2, frame2 = cam2.read() 37 | ret3, frame3 = cam3.read() 38 | 39 | # Display the resulting frame 40 | cv2.imshow('Camera 1', frame1) 41 | cv2.imshow('Camera 2', frame2) 42 | cv2.imshow('Camera 3', frame3) 43 | 44 | if cv2.waitKey(1) & 0xFF == ord('q'): 45 | break 46 | 47 | except (KeyboardInterrupt, SystemExit): 48 | pass 49 | 50 | finally: 51 | # Do stuff no matter how you exit 52 | # When everything done, release the captures 53 | cam1.release() 54 | cam2.release() 55 | cam3.release() 56 | 57 | cv2.destroyAllWindows() -------------------------------------------------------------------------------- /Basic Machine Vision/openCV_videoStream.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | 3 | ############################################################################### 4 | # openCV_videoStream.py 5 | # 6 | # Simply display the video captured by USB camera 7 | # 8 | # NOTE: Any plotting is set up for output, not viewing on screen. 9 | # So, it will likely be ugly on screen. The saved PDFs should look 10 | # better. 11 | # 12 | # Created: 07/28/17 13 | # - Joshua Vaughan 14 | # - joshua.vaughan@louisiana.edu 15 | # - http://www.ucs.louisiana.edu/~jev9637 16 | # 17 | # Modified: 18 | # * 19 | # 20 | # TODO: 21 | # * 22 | ############################################################################### 23 | 24 | import numpy as np 25 | import cv2 26 | 27 | cam1 = cv2.VideoCapture(0) 28 | 29 | try: 30 | while(True): 31 | # Capture frame-by-frame 32 | ret, frame = cam1.read() 33 | 34 | # Our operations on the frame come here 35 | gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 36 | 37 | # Display the resulting frame 38 | cv2.imshow('frame',gray) 39 | if cv2.waitKey(1) & 0xFF == ord('q'): 40 | break 41 | finally: 42 | # When everything done, release the capture 43 | cam1.release() 44 | cv2.destroyAllWindows() -------------------------------------------------------------------------------- /Basic Networking/TCP_echo_server_nonBlocking.py: -------------------------------------------------------------------------------- 1 | import SocketServer 2 | 3 | class EchoRequestHandler(SocketServer.BaseRequestHandler): 4 | 5 | def handle(self): 6 | # Echo the back to the client 7 | data = self.request.recv(1024) 8 | self.request.send(data) 9 | return 10 | 11 | if __name__ == '__main__': 12 | import socket 13 | import threading 14 | 15 | address = ('localhost', 0) # let the kernel give us a port 16 | server = SocketServer.TCPServer(address, EchoRequestHandler) 17 | ip, port = server.server_address # find out what port we were given 18 | 19 | t = threading.Thread(target=server.serve_forever) 20 | t.setDaemon(True) # don't hang on exit 21 | t.start() 22 | 23 | # Connect to the server 24 | s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 25 | s.connect((ip, port)) 26 | 27 | # Send the data 28 | message = 'Hello, world' 29 | print 'Sending : "%s"' % message 30 | len_sent = s.send(message) 31 | 32 | # Receive a response 33 | response = s.recv(len_sent) 34 | print 'Received: "%s"' % response 35 | 36 | # Clean up 37 | s.close() 38 | server.socket.close() -------------------------------------------------------------------------------- /Basic Networking/UDP_broadcast.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | 3 | ########################################################################################## 4 | # UDP_broadcast.py 5 | # 6 | # simple UDP broadcast 7 | # 8 | # NOTE: Plotting is set up for output, not viewing on screen. 9 | # So, it will likely be ugly on screen. The saved PDFs should look 10 | # better. 11 | # 12 | # Created: 06/15/14 13 | # - Joshua Vaughan 14 | # - joshua.vaughan@louisiana.edu 15 | # - http://www.ucs.louisiana.edu/~jev9637 16 | # 17 | # Modified: 18 | # * 05/10/16 - JEV - 05/10/16 19 | # - updated for Python 3 20 | # 21 | ########################################################################################## 22 | 23 | # Send UDP broadcast packets 24 | import socket 25 | import time 26 | import numpy as np 27 | 28 | PORT = 2390 29 | count = 0 30 | 31 | s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 32 | s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 33 | s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) 34 | # s.bind(('', PORT)) 35 | # s.setblocking(0) 36 | 37 | try: 38 | start_time = time.time() 39 | while True: 40 | dt = time.time() - start_time 41 | signal = 25 * np.sin(0.5 * np.pi * dt) + 25 42 | 43 | # data = '{}, {}'.format(int(signal), int(signal-25)) 44 | data = '{}\r\n'.format(int(signal)) 45 | # s.sendto(data.encode('utf-8'), ('', PORT)) 46 | s.sendto(data.encode('utf-8'), ('255.255.255.255', PORT)) 47 | print('Sending: {}'.format(data)) 48 | 49 | time.sleep(0.04) 50 | except (KeyboardInterrupt, SystemExit): 51 | s.close() -------------------------------------------------------------------------------- /Basic Networking/UDP_looping_sender.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | 3 | ########################################################################################## 4 | # UDP_looping_sender.py 5 | # 6 | # simplest UDP sender possible 7 | # 8 | # NOTE: Any plotting is set up for output, not viewing on screen. 9 | # So, it will likely be ugly on screen. The saved PDFs should look 10 | # better. 11 | # 12 | # Created: 11/14/14 13 | # - Joshua Vaughan 14 | # - joshua.vaughan@louisiana.edu 15 | # - http://www.ucs.louisiana.edu/~jev9637 16 | # 17 | # Modified: 18 | # * 01/27/16 - Joshua Vaughan - joshua.vaughan@louisiana.edu 19 | # - updated for Python 3 20 | # 21 | ########################################################################################## 22 | 23 | from __future__ import print_function 24 | 25 | import numpy as np 26 | import socket 27 | import time 28 | 29 | UDP_IP = '127.0.0.1' 30 | UDP_PORT = 2390 31 | 32 | print("UDP target IP: {}".format(UDP_IP)) 33 | print("UDP target port: {}".format(UDP_PORT)) 34 | 35 | sock = socket.socket(socket.AF_INET, # Internet 36 | socket.SOCK_DGRAM) # UDP 37 | 38 | try: 39 | start_time = time.time() 40 | while True: 41 | dt = time.time() - start_time 42 | signal = 25 * np.sin(0.5 * np.pi * dt) + 25 43 | 44 | data = '{}\r\n'.format(int(signal)) 45 | sock.sendto(data.encode('utf-8'), (UDP_IP, UDP_PORT)) 46 | print('Sending: {}'.format(data)) 47 | 48 | time.sleep(0.01) 49 | except (KeyboardInterrupt, SystemExit): 50 | sock.close() 51 | -------------------------------------------------------------------------------- /Basic Networking/UDP_server_with_pickle.py: -------------------------------------------------------------------------------- 1 | import SocketServer 2 | import pickle 3 | 4 | class MyUDPHandler(SocketServer.BaseRequestHandler): 5 | """ 6 | This class works similar to the TCP handler class, except that 7 | self.request consists of a pair of data and client socket, and since 8 | there is no connection the client address must be given explicitly 9 | when sending data back via sendto(). 10 | """ 11 | 12 | def handle(self): 13 | data = self.request[0].strip() 14 | 15 | data_unpickled = pickle.loads(data) 16 | 17 | socket = self.request[1] 18 | print "{} wrote:".format(self.client_address[0]) 19 | print data_unpickled 20 | #socket.sendto(data.upper(), self.client_address) 21 | 22 | if __name__ == "__main__": 23 | HOST, PORT = '192.168.0.110', 2390 24 | server = SocketServer.UDPServer((HOST, PORT), MyUDPHandler) 25 | server.serve_forever() -------------------------------------------------------------------------------- /Basic Networking/UDP_server_with_strings.py: -------------------------------------------------------------------------------- 1 | import socketserver 2 | 3 | class MyUDPHandler(socketserver.BaseRequestHandler): 4 | """ 5 | This class works similar to the TCP handler class, except that 6 | self.request consists of a pair of data and client socket, and since 7 | there is no connection the client address must be given explicitly 8 | when sending data back via sendto(). 9 | """ 10 | 11 | def handle(self): 12 | data = self.request[0].strip() 13 | socket = self.request[1] 14 | string_to_print = "Velocity from {}: {}".format(self.client_address[0], data.decode("utf-8")) 15 | print(string_to_print) 16 | socket.sendto(data.upper(), self.client_address) 17 | 18 | # Streaming?... change above to SocketServer.StreamRequestHandler 19 | # def handle(self): 20 | # # self.rfile is a file-like object created by the handler; 21 | # # we can now use e.g. readline() instead of raw recv() calls 22 | # self.data = self.rfile.readline().strip() 23 | # print "{} wrote:".format(self.client_address[0]) 24 | # print self.data 25 | # # Likewise, self.wfile is a file-like object used to write back 26 | # # to the client 27 | # self.wfile.write(self.data.upper()) 28 | 29 | if __name__ == "__main__": 30 | # HOST, PORT = '192.168.0.101', 2390 31 | HOST, PORT = '10.0.1.121', 2390 32 | server = socketserver.UDPServer((HOST, PORT), MyUDPHandler) 33 | server.serve_forever() -------------------------------------------------------------------------------- /Basic Networking/UDP_simplest_receiver.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | 3 | ########################################################################################## 4 | # UDP_simplest_receiver.py 5 | # 6 | # simplest UDP receiver possible 7 | # 8 | # NOTE: Any plotting is set up for output, not viewing on screen. 9 | # So, it will likely be ugly on screen. The saved PDFs should look 10 | # better. 11 | # 12 | # Created: 11/14/14 13 | # - Joshua Vaughan 14 | # - joshua.vaughan@louisiana.edu 15 | # - http://www.ucs.louisiana.edu/~jev9637 16 | # 17 | # Modified: 18 | # * 19 | # 20 | ########################################################################################## 21 | 22 | import socket 23 | 24 | # TEMP 25 | UDP_IP = '169.254.24.21' 26 | UDP_PORT = 2390 27 | 28 | sock = socket.socket(socket.AF_INET, # Internet 29 | socket.SOCK_DGRAM) # UDP 30 | sock.bind((UDP_IP, UDP_PORT)) 31 | 32 | while True: 33 | data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes 34 | 35 | json.loads(data) 36 | 37 | print "received message:", data 38 | -------------------------------------------------------------------------------- /Basic Networking/UDP_simplest_sender.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | 3 | ########################################################################################## 4 | # UDP_simplest_sender.py 5 | # 6 | # simplest UDP sender possible - just sends one packet, then quits 7 | # 8 | # NOTE: Any plotting is set up for output, not viewing on screen. 9 | # So, it will likely be ugly on screen. The saved PDFs should look 10 | # better. 11 | # 12 | # Created: 11/14/14 13 | # - Joshua Vaughan 14 | # - joshua.vaughan@louisiana.edu 15 | # - http://www.ucs.louisiana.edu/~jev9637 16 | # 17 | # Modified: 18 | # * 01/27/16 - Joshua Vaughan - joshua.vaughan@louisiana.edu 19 | # - updated for Python 3 20 | # 21 | ########################################################################################## 22 | 23 | from __future__ import print_function 24 | 25 | import socket 26 | import time 27 | 28 | UDP_IP = '192.168.0.21' 29 | UDP_PORT = 2390 30 | MESSAGE = 'CRAWLAB' 31 | 32 | print("UDP target IP: {}".format(UDP_IP)) 33 | print("UDP target port: {}".format(UDP_PORT)) 34 | print("Message: {}".format(MESSAGE)) 35 | 36 | sock = socket.socket(socket.AF_INET, # Internet 37 | socket.SOCK_DGRAM) # UDP 38 | 39 | sock.sendto(MESSAGE.encode('utf-8'), (UDP_IP, UDP_PORT)) 40 | -------------------------------------------------------------------------------- /Basic Networking/simplest_UDP_receiver.py: -------------------------------------------------------------------------------- 1 | import socket 2 | 3 | UDP_IP = "127.0.0.1" 4 | UDP_PORT = 5005 5 | 6 | sock = socket.socket(socket.AF_INET, # Internet 7 | socket.SOCK_DGRAM) # UDP 8 | sock.bind((UDP_IP, UDP_PORT)) 9 | 10 | while True: 11 | data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes 12 | print "received message:", data -------------------------------------------------------------------------------- /BeagleBone Python/BBB_BasicServo.py: -------------------------------------------------------------------------------- 1 | import Adafruit_BBIO.PWM as PWM 2 | 3 | class Servo(): 4 | 5 | def __init__(self, servo_pin): 6 | # Define duty cycle parameters for all servos 7 | self.duty_min = 3. 8 | self.duty_max = 14.5 9 | self.duty_span = self.duty_max - self.duty_min 10 | self.duty_mid = ((90.0 / 180) * self.duty_span + self.duty_min) 11 | 12 | self.servo_pin = servo_pin 13 | print 'starting servo PWM' 14 | PWM.start(self.servo_pin, self.duty_mid, 60.0) 15 | 16 | def set_servo_angle(self, angle): 17 | angle_f = float(angle) 18 | duty = ((angle_f / 180) * self.duty_span + self.duty_min) 19 | PWM.set_duty_cycle(self.servo_pin, duty) 20 | 21 | def close_servo(self): 22 | PWM.stop(self.servo_pin) 23 | PWM.cleanup() 24 | 25 | 26 | if __name__ == "__main__": 27 | 28 | servo1 = Servo("P9_29") 29 | 30 | while True: 31 | angle = raw_input("Angle (0 to 180 x to exit):") 32 | if angle == 'x': 33 | servo1.close_servo() 34 | break 35 | 36 | servo1.set_servo_angle(angle) -------------------------------------------------------------------------------- /BeagleBone Python/BBB_PyBBIO_servos.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | 3 | ########################################################################################## 4 | # BBB_PyBBIO_servos.py 5 | # 6 | # Using PyBBIO (not Adafruit) to control servos 7 | # 8 | # NOTE: Any plotting is set up for output, not viewing on screen. 9 | # So, it will likely be ugly on screen. The saved PDFs should look 10 | # better. 11 | # 12 | # Created: 05/03/15 13 | # - Joshua Vaughan 14 | # - joshua.vaughan@louisiana.edu 15 | # - http://www.ucs.louisiana.edu/~jev9637 16 | # 17 | # Modified: 18 | # * 19 | # 20 | ########################################################################################## 21 | 22 | import bbio 23 | import bbio.libraries.Servo as Servo 24 | 25 | servo1 = Servo(PWM0B) 26 | 27 | if __name__ == '__main__': 28 | bbio.bbio_init() 29 | 30 | while True: 31 | angle = raw_input("Angle (0 to 180 x to exit):") 32 | if angle == 'x': 33 | bbio.bbio_cleanup() 34 | break 35 | 36 | servo1.write(angle) -------------------------------------------------------------------------------- /BeagleBone Python/BBB_blinkLED.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | 3 | ############################################################################### 4 | # BBB_blindLED.py 5 | # 6 | # script to blink an LED on the BeagleBone Black 7 | # 8 | # From: https://learn.adafruit.com/blinking-an-led-with-beaglebone-black/writing-a-program 9 | # 10 | # NOTE: Any plotting is set up for output, not viewing on screen. 11 | # So, it will likely be ugly on screen. The saved PDFs should look 12 | # better. 13 | # 14 | # Created: 01/09/15 15 | # - Joshua Vaughan 16 | # - joshua.vaughan@louisiana.edu 17 | # - http://www.ucs.louisiana.edu/~jev9637 18 | # 19 | # Modified: 20 | # * 21 | # 22 | ############################################################################### 23 | 24 | import Adafruit_BBIO.GPIO as GPIO 25 | import time 26 | 27 | # Define the pin used for the LED - This is mutable in python, so be careful 28 | LED1 = 'P8_10' 29 | 30 | # Set up the 'P8_10' pin as output 31 | GPIO.setup(LED1, GPIO.OUT) 32 | 33 | while True: 34 | GPIO.output(LED1, GPIO.HIGH) 35 | time.sleep(0.5) 36 | 37 | GPIO.output(LED1, GPIO.LOW) 38 | time.sleep(0.5) 39 | -------------------------------------------------------------------------------- /BeagleBone Python/Pololu High-power Motor Drive/README.md: -------------------------------------------------------------------------------- 1 | # Motor Control using the Pololu High-power Motor Drive 2 | This folder contains motor control scripts that utilize the [Pololu High-power Motor Drive](https://www.pololu.com/product/755). They include "simple" motor control, class-based control and monitoring, as well as more advanced usage such as using interrupts to control motors. -------------------------------------------------------------------------------- /BeagleBone Python/SparkFun TB6612FNG breakout/README.md: -------------------------------------------------------------------------------- 1 | # Motor Control using the SparkFun TB6612FNG breakout board 2 | This folder contains motor control scripts that utilize the [SparkFun TB6612FNG breakout board](http://sfe.io/p9457). They include "simple" motor control, class-based control and monitoring, as well as more advanced usage such as using interrupts to control motors. -------------------------------------------------------------------------------- /BeagleBone Python/startVNC.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | x11vnc -bg -o %HOME/.x11vnc.log.%VNCDISPLAY -auth /var/run/lightdm/root/:0 -forever -------------------------------------------------------------------------------- /C snippets/circular_buffer: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/C snippets/circular_buffer -------------------------------------------------------------------------------- /Flask/Flask_SocketIO_WebRemote/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/Flask/Flask_SocketIO_WebRemote/static/favicon.ico -------------------------------------------------------------------------------- /Flask/Flask_SocketIO_WebRemote/static/img/fleur_de_lis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/Flask/Flask_SocketIO_WebRemote/static/img/fleur_de_lis.png -------------------------------------------------------------------------------- /Flask/Flask_SocketIO_WebRemote/static/js/vendor/jquery.ui.touch-punch.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery UI Touch Punch 0.2.2 3 | * 4 | * Copyright 2011, Dave Furfero 5 | * Dual licensed under the MIT or GPL Version 2 licenses. 6 | * 7 | * Depends: 8 | * jquery.ui.widget.js 9 | * jquery.ui.mouse.js 10 | */ 11 | (function(b){b.support.touch="ontouchend" in document;if(!b.support.touch){return;}var c=b.ui.mouse.prototype,e=c._mouseInit,a;function d(g,h){if(g.originalEvent.touches.length>1){return;}g.preventDefault();var i=g.originalEvent.changedTouches[0],f=document.createEvent("MouseEvents");f.initMouseEvent(h,true,true,window,1,i.screenX,i.screenY,i.clientX,i.clientY,false,false,false,false,0,null);g.target.dispatchEvent(f);}c._touchStart=function(g){var f=this;if(a||!f._mouseCapture(g.originalEvent.changedTouches[0])){return;}a=true;f._touchMoved=false;d(g,"mouseover");d(g,"mousemove");d(g,"mousedown");};c._touchMove=function(f){if(!a){return;}this._touchMoved=true;d(f,"mousemove");};c._touchEnd=function(f){if(!a){return;}d(f,"mouseup");d(f,"mouseout");if(!this._touchMoved){d(f,"click");}a=false;};c._mouseInit=function(){var f=this;f.element.bind("touchstart",b.proxy(f,"_touchStart")).bind("touchmove",b.proxy(f,"_touchMove")).bind("touchend",b.proxy(f,"_touchEnd"));e.call(f);};})(jQuery); -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/.info: -------------------------------------------------------------------------------- 1 | TOOL_CHAIN=KPIT GNUSH-ELF Toolchain 2 | VERSION=v12.01 3 | TC_INSTALL=C:\Renesas\e2_studio\GNUSHv12.01-ELF\sh-elf\ 4 | GCC_STRING=4.6-GNUSH_v12.01 5 | VERSION_IDE= 6 | E2STUDIO_VERSION=4.2.0.012 7 | ACTIVE_CONFIGURATION=Release -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | SH2Tiny_BasicSerial 4 | 5 | 6 | 7 | 8 | 9 | com.renesas.cdt.core.genmakebuilder 10 | 11 | 12 | 13 | 14 | org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder 15 | full,incremental, 16 | 17 | 18 | 19 | 20 | 21 | org.eclipse.cdt.core.cnature 22 | com.renesas.cdt.core.kpitcnature 23 | com.renesas.cdt.core.kpitccnature 24 | org.eclipse.cdt.managedbuilder.core.managedBuildNature 25 | org.eclipse.cdt.managedbuilder.core.ScannerConfigNature 26 | 27 | 28 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/.settings/Dependency_Scan_Preferences.prefs: -------------------------------------------------------------------------------- 1 | Build\ project\ excluding\ the\ dependencies=false 2 | Re-generate\ and\ use\ dependencies\ during\ project\ build=true 3 | Use\ existing\ dependencies\ during\ project\ build=false 4 | eclipse.preferences.version=1 5 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/.settings/Project_Generation_Prefrences.prefs: -------------------------------------------------------------------------------- 1 | Library\ Generator\ Command=sh-elf-libgen 2 | com.renesas.cdt.core.Assembler.option.includeFileDirectories="${workspace_loc\:/${ProjName}}/src"; 3 | com.renesas.cdt.core.Compiler.option.CPUSeries=SH7047 4 | com.renesas.cdt.core.Compiler.option.includeFileDir= 5 | com.renesas.cdt.core.Compiler.option.warnStackSize=100 6 | com.renesas.cdt.core.LibraryGenerator.option.ctype=false 7 | com.renesas.cdt.core.LibraryGenerator.option.libraryType=Project-Built 8 | com.renesas.cdt.core.LibraryGenerator.option.math=true 9 | com.renesas.cdt.core.LibraryGenerator.option.selectLibrary=Newlib 10 | com.renesas.cdt.core.LibraryGenerator.option.stdio=true 11 | com.renesas.cdt.core.LibraryGenerator.option.stdlib=true 12 | com.renesas.cdt.core.LibraryGenerator.option.string=true 13 | com.renesas.cdt.core.Linker.option.userDefinedOptions=; 14 | com.renesas.cdt.sh.Release.Compiler.option.cpuType=SH2 15 | com.renesas.cdt.sh.Release.Compiler.option.dataEndian=Big 16 | com.renesas.cdt.sh.Release.Compiler.option.macroDefines=INIT_SECTIONS;__BIG_ENDIAN__\=1; 17 | com.renesas.cdt.sh.Release.Compiler.option.relax=false 18 | com.renesas.cdt.sh.Release.Compiler.option.renesasCallingConventions=false 19 | com.renesas.cdt.sh.Release.Linker.option.archiveLibraryFiles=${BuildArtifactFileBaseName};gcc;gcc-Os-4-200; 20 | com.renesas.cdt.sh.Release.Linker.option.archiveSearchDirectories="${CONFIGDIR}";"${TCINSTALL}/lib/gcc/sh-elf/${GCC_VERSION}/m2"; 21 | com.renesas.cdt.sh.Release.Linker.option.archiveSearchDirectories.1057865098="${CONFIGDIR}";"${TCINSTALL}/lib/gcc/sh-elf/${GCC_VERSION}/m2"; 22 | eclipse.preferences.version=1 23 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/.settings/language.settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/LinkerSubCommand.tmp: -------------------------------------------------------------------------------- 1 | "./src/SH2Tiny_BasicSerial.o" "./src/hardware_setup.o" "./src/interrupt_handlers.o" "./src/reset_program.o" "./src/sci3.o" "./src/vector_table.o" -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/Testing.x: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/HiBot Components/SH2/SH2Tiny_BasicSerial/Release/Testing.x -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/Testing_Release_auto.gsi: -------------------------------------------------------------------------------- 1 | SECTIONS 2 | { 3 | .vects 0x0 : AT (0x0) 4 | { 5 | KEEP(*(.vects)) 6 | } 7 | .text 0x1000 : AT (0x1000) 8 | { 9 | *(.text) 10 | *(.text.*) 11 | etext = .; 12 | } 13 | .init : 14 | { 15 | *(.init) 16 | } 17 | .fini : 18 | { 19 | *(.fini) 20 | } 21 | .got : 22 | { 23 | *(.got) 24 | *(.got.plt) 25 | } 26 | .rodata : 27 | { 28 | *(.rodata) 29 | *(.rodata.*) 30 | _erodata = .; 31 | } 32 | .eh_frame_hdr : 33 | { 34 | *(.eh_frame_hdr) 35 | } 36 | .eh_frame : 37 | { 38 | *(.eh_frame) 39 | } 40 | .jcr : 41 | { 42 | *(.jcr) 43 | } 44 | .tors : 45 | { 46 | __CTOR_LIST__ = .; 47 | ___ctors = .; 48 | *(.ctors) 49 | ___ctors_end = .; 50 | __CTOR_END__ = .; 51 | __DTOR_LIST__ = .; 52 | ___dtors = .; 53 | *(.dtors) 54 | ___dtors_end = .; 55 | __DTOR_END__ = .; 56 | _mdata = .; 57 | } 58 | .data 0xFFFFD000 : AT (_mdata) 59 | { 60 | _data = .; 61 | *(.data) 62 | *(.data.*) 63 | _edata = .; 64 | } 65 | .gcc_exc : 66 | { 67 | *(.gcc_exc) 68 | } 69 | .bss : 70 | { 71 | _bss = .; 72 | *(.bss) 73 | *(.bss.*) 74 | *(COMMON) 75 | _ebss = .; 76 | _end = .; 77 | } 78 | .stack 0xFFFFFFF0 : AT (0xFFFFFFF0) 79 | { 80 | _stack = .; 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/libTesting.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/HiBot Components/SH2/SH2Tiny_BasicSerial/Release/libTesting.a -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/objects.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Automatically-generated file. Do not edit! 3 | ################################################################################ 4 | 5 | USER_OBJS := 6 | 7 | LIBS := -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/sci3.lst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/HiBot Components/SH2/SH2Tiny_BasicSerial/Release/sci3.lst -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/sources.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Automatically-generated file. Do not edit! 3 | ################################################################################ 4 | 5 | CPP_UPPER_SRCS := 6 | ASM_SRCS := 7 | C++_UPPER_SRCS := 8 | CC_UPPER_SRCS := 9 | CXX_UPPER_SRCS := 10 | CPP_SRCS := 11 | S_UPPER_SRCS := 12 | O_SRCS := 13 | C_UPPER_SRCS := 14 | CXX_SRCS := 15 | C++_SRCS := 16 | OBJ_SRCS := 17 | S_SRCS := 18 | CC_SRCS := 19 | SRC_UPPER_SRCS := 20 | X_SRCS := 21 | SRC_SRCS := 22 | C_SRCS := 23 | CC_UPPER_DEPS := 24 | C++_UPPER_DEPS := 25 | CXX_UPPER_DEPS := 26 | CPP_UPPER_DEPS := 27 | C_UPPER_DEPS := 28 | SRC_UPPER_DEPS := 29 | S_DEPS := 30 | C_DEPS := 31 | SRC_DEPS := 32 | LINKER_OUTPUT_OUTPUTS := 33 | CC_DEPS := 34 | C++_DEPS := 35 | CXX_DEPS := 36 | OBJS := 37 | ASM_DEPS := 38 | LIBRARY_GENERATOR_OUTPUTTYPE_OUTPUTS := 39 | S_UPPER_DEPS := 40 | OBJCOPY_OUTPUTTYPE_OUTPUTS := 41 | CPP_DEPS := 42 | 43 | # Every subdirectory with source files must be described here 44 | SUBDIRS := \ 45 | src \ 46 | 47 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/SH2Tiny_BasicSerial.d: -------------------------------------------------------------------------------- 1 | src/SH2Tiny_BasicSerial.o src/SH2Tiny_BasicSerial.d: \ 2 | ../src/SH2Tiny_BasicSerial.c ../src/iodefine.h ../src/boot.h \ 3 | ../src/interrupt_handlers.h ../src/sci3.h 4 | 5 | ../src/iodefine.h: 6 | 7 | ../src/boot.h: 8 | 9 | ../src/interrupt_handlers.h: 10 | 11 | ../src/sci3.h: 12 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/SH2Tiny_BasicSerial.depsub: -------------------------------------------------------------------------------- 1 | -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/SH2Tiny_BasicSerial.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/SH2Tiny_BasicSerial.o -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/SH2Tiny_BasicSerial.sub: -------------------------------------------------------------------------------- 1 | -c -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/SH2Tiny_Sample1.d: -------------------------------------------------------------------------------- 1 | src/SH2Tiny_Sample1.o src/SH2Tiny_Sample1.d: ../src/SH2Tiny_Sample1.c \ 2 | ../src/iodefine.h 3 | 4 | ../src/iodefine.h: 5 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/SH2Tiny_Sample1.depsub: -------------------------------------------------------------------------------- 1 | -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/SH2Tiny_Sample1.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/SH2Tiny_Sample1.o -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/SH2Tiny_Sample1.sub: -------------------------------------------------------------------------------- 1 | -c -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/Testing.d: -------------------------------------------------------------------------------- 1 | src/Testing.o src/Testing.d: ../src/Testing.c ../src/iodefine.h 2 | 3 | ../src/iodefine.h: 4 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/Testing.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/Testing.o -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/c.depsub: -------------------------------------------------------------------------------- 1 | -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/c.sub: -------------------------------------------------------------------------------- 1 | -c -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/hardware_setup.d: -------------------------------------------------------------------------------- 1 | src/hardware_setup.o src/hardware_setup.d: ../src/hardware_setup.c \ 2 | ../src/iodefine.h ../src/boot.h 3 | 4 | ../src/iodefine.h: 5 | 6 | ../src/boot.h: 7 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/hardware_setup.depsub: -------------------------------------------------------------------------------- 1 | -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/hardware_setup.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/hardware_setup.o -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/hardware_setup.sub: -------------------------------------------------------------------------------- 1 | -c -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/interrupt_handlers.d: -------------------------------------------------------------------------------- 1 | src/interrupt_handlers.o src/interrupt_handlers.d: \ 2 | ../src/interrupt_handlers.c ../src/interrupt_handlers.h \ 3 | ../src/iodefine.h ../src/sci3.h 4 | 5 | ../src/interrupt_handlers.h: 6 | 7 | ../src/iodefine.h: 8 | 9 | ../src/sci3.h: 10 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/interrupt_handlers.depsub: -------------------------------------------------------------------------------- 1 | -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/interrupt_handlers.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/interrupt_handlers.o -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/interrupt_handlers.sub: -------------------------------------------------------------------------------- 1 | -c -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/reset_program.d: -------------------------------------------------------------------------------- 1 | src/reset_program.o src/reset_program.d: ../src/reset_program.asm 2 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/reset_program.depsub: -------------------------------------------------------------------------------- 1 | -Wa,-gdwarf2 -x assembler-with-cpp -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/reset_program.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/reset_program.o -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/reset_program.sub: -------------------------------------------------------------------------------- 1 | -Wa,-gdwarf2 -c -x assembler-with-cpp -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/sci3.d: -------------------------------------------------------------------------------- 1 | src/sci3.o src/sci3.d: ../src/sci3.c ../src/iodefine.h ../src/sci3.h 2 | 3 | ../src/iodefine.h: 4 | 5 | ../src/sci3.h: 6 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/sci3.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/sci3.o -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/vector_table.d: -------------------------------------------------------------------------------- 1 | src/vector_table.o src/vector_table.d: ../src/vector_table.c \ 2 | ../src/interrupt_handlers.h 3 | 4 | ../src/interrupt_handlers.h: 5 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/vector_table.depsub: -------------------------------------------------------------------------------- 1 | -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/vector_table.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/vector_table.o -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Release/src/vector_table.sub: -------------------------------------------------------------------------------- 1 | -c -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/Testing Release.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/custom.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/HiBot Components/SH2/SH2Tiny_BasicSerial/custom.bat -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/makefile.init: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Automatically-generated file. Do not edit! 3 | ################################################################################ 4 | 5 | PATH := $(PATH):C:\Renesas\E2_STU~1\GNUSHV~1.01-\sh-elf\bin;C:\Renesas\E2_STU~1\GNUSHV~1.01-\sh-elf\libexec\gcc\sh-elf\4.6-GNUSH_v12.01 -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/src/boot.h: -------------------------------------------------------------------------------- 1 | /***********************************************************************/ 2 | /* */ 3 | /* PROJECT NAME : SH2Tiny_Sample2ECLIPSE */ 4 | /* FILE : boot.h */ 5 | /* DESCRIPTION : LED blinking by interrupt timer CMT1 */ 6 | /* CPU SERIES : SH2 */ 7 | /* CPU TYPE : SH7047 */ 8 | /* Board : HiBot SH2TinyController www.hibot.co.jp */ 9 | /* */ 10 | /* */ 11 | /***********************************************************************/ 12 | 13 | 14 | 15 | #ifndef BOOT_H_ 16 | #define BOOT_H_ 17 | 18 | #define CRYSTAL_FREQ 11.0592 19 | static double samplingTime=1.0e-3; 20 | static double systemClock = CRYSTAL_FREQ * 4.0e6; //SH2Tiny Controller Spec 21 | static double peripheralClock = CRYSTAL_FREQ * 2.0e6; //SH2Tiny Controller Spec 22 | 23 | 24 | #endif /* BOOT_H_ */ 25 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/src/sci3.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/HiBot Components/SH2/SH2Tiny_BasicSerial/src/sci3.c -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/src/sci3.h: -------------------------------------------------------------------------------- 1 | /**************************************************************** 2 | KPIT Cummins Infosystems Ltd, Pune, India. - 05-Sept-2005. 3 | 4 | This program is distributed in the hope that it will be useful, 5 | but WITHOUT ANY WARRANTY; without even the implied warranty of 6 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 7 | 8 | *****************************************************************/ 9 | 10 | #define Number_U 10 11 | void init_sci3(void); 12 | 13 | extern unsigned char order[4][4]; 14 | extern unsigned char data; 15 | 16 | 17 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_BasicSerial/src/typedefine.h: -------------------------------------------------------------------------------- 1 | /***********************************************************************/ 2 | /* */ 3 | /* PROJECT NAME : SH2Tiny_Sample1EclipseV3 */ 4 | /* FILE : typedefine.h */ 5 | /* DESCRIPTION : Aliases of Integer Type */ 6 | /* CPU SERIES : SH2 */ 7 | /* CPU TYPE : SH7047 */ 8 | /* */ 9 | /* This file is generated by KPIT Eclipse. */ 10 | /* */ 11 | /***********************************************************************/ 12 | 13 | 14 | typedef signed char _SBYTE; 15 | typedef unsigned char _UBYTE; 16 | typedef signed short _SWORD; 17 | typedef unsigned short _UWORD; 18 | typedef signed int _SINT; 19 | typedef unsigned int _UINT; 20 | typedef signed long _SDWORD; 21 | typedef unsigned long _UDWORD; 22 | typedef signed long long _SQWORD; 23 | typedef unsigned long long _UQWORD; 24 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/.info: -------------------------------------------------------------------------------- 1 | TOOL_CHAIN=KPIT GNUSH-ELF Toolchain 2 | VERSION=v12.01 3 | TC_INSTALL=C:\Renesas\e2_studio\GNUSHv12.01-ELF\sh-elf\ 4 | GCC_STRING=4.6-GNUSH_v12.01 5 | VERSION_IDE= 6 | E2STUDIO_VERSION=4.2.0.012 7 | ACTIVE_CONFIGURATION=Release -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | SH2Tiny_Sample1 4 | 5 | 6 | 7 | 8 | 9 | com.renesas.cdt.core.genmakebuilder 10 | 11 | 12 | 13 | 14 | org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder 15 | full,incremental, 16 | 17 | 18 | 19 | 20 | 21 | org.eclipse.cdt.core.cnature 22 | com.renesas.cdt.core.kpitcnature 23 | com.renesas.cdt.core.kpitccnature 24 | org.eclipse.cdt.managedbuilder.core.managedBuildNature 25 | org.eclipse.cdt.managedbuilder.core.ScannerConfigNature 26 | 27 | 28 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/.settings/Dependency_Scan_Preferences.prefs: -------------------------------------------------------------------------------- 1 | Build\ project\ excluding\ the\ dependencies=false 2 | Re-generate\ and\ use\ dependencies\ during\ project\ build=true 3 | Use\ existing\ dependencies\ during\ project\ build=false 4 | eclipse.preferences.version=1 5 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/.settings/language.settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/Release/LinkerSubCommand.tmp: -------------------------------------------------------------------------------- 1 | "./src/SH2Tiny_Sample1.o" "./src/hardware_setup.o" "./src/interrupt_handlers.o" "./src/reset_program.o" "./src/vector_table.o" -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/Release/Testing.x: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/HiBot Components/SH2/SH2Tiny_Sample1/Release/Testing.x -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/Release/Testing_Release_auto.gsi: -------------------------------------------------------------------------------- 1 | SECTIONS 2 | { 3 | .vects 0x0 : AT (0x0) 4 | { 5 | KEEP(*(.vects)) 6 | } 7 | .text 0x1000 : AT (0x1000) 8 | { 9 | *(.text) 10 | *(.text.*) 11 | etext = .; 12 | } 13 | .init : 14 | { 15 | *(.init) 16 | } 17 | .fini : 18 | { 19 | *(.fini) 20 | } 21 | .got : 22 | { 23 | *(.got) 24 | *(.got.plt) 25 | } 26 | .rodata : 27 | { 28 | *(.rodata) 29 | *(.rodata.*) 30 | _erodata = .; 31 | } 32 | .eh_frame_hdr : 33 | { 34 | *(.eh_frame_hdr) 35 | } 36 | .eh_frame : 37 | { 38 | *(.eh_frame) 39 | } 40 | .jcr : 41 | { 42 | *(.jcr) 43 | } 44 | .tors : 45 | { 46 | __CTOR_LIST__ = .; 47 | ___ctors = .; 48 | *(.ctors) 49 | ___ctors_end = .; 50 | __CTOR_END__ = .; 51 | __DTOR_LIST__ = .; 52 | ___dtors = .; 53 | *(.dtors) 54 | ___dtors_end = .; 55 | __DTOR_END__ = .; 56 | _mdata = .; 57 | } 58 | .data 0xFFFFD000 : AT (_mdata) 59 | { 60 | _data = .; 61 | *(.data) 62 | *(.data.*) 63 | _edata = .; 64 | } 65 | .gcc_exc : 66 | { 67 | *(.gcc_exc) 68 | } 69 | .bss : 70 | { 71 | _bss = .; 72 | *(.bss) 73 | *(.bss.*) 74 | *(COMMON) 75 | _ebss = .; 76 | _end = .; 77 | } 78 | .stack 0xFFFFFFF0 : AT (0xFFFFFFF0) 79 | { 80 | _stack = .; 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/Release/libTesting.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/HiBot Components/SH2/SH2Tiny_Sample1/Release/libTesting.a -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/Release/objects.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Automatically-generated file. Do not edit! 3 | ################################################################################ 4 | 5 | USER_OBJS := 6 | 7 | LIBS := -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/Release/sources.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Automatically-generated file. Do not edit! 3 | ################################################################################ 4 | 5 | CPP_UPPER_SRCS := 6 | ASM_SRCS := 7 | C++_UPPER_SRCS := 8 | CC_UPPER_SRCS := 9 | CXX_UPPER_SRCS := 10 | CPP_SRCS := 11 | S_UPPER_SRCS := 12 | O_SRCS := 13 | C_UPPER_SRCS := 14 | CXX_SRCS := 15 | C++_SRCS := 16 | OBJ_SRCS := 17 | S_SRCS := 18 | CC_SRCS := 19 | SRC_UPPER_SRCS := 20 | X_SRCS := 21 | SRC_SRCS := 22 | C_SRCS := 23 | CC_UPPER_DEPS := 24 | C++_UPPER_DEPS := 25 | CXX_UPPER_DEPS := 26 | CPP_UPPER_DEPS := 27 | C_UPPER_DEPS := 28 | SRC_UPPER_DEPS := 29 | S_DEPS := 30 | C_DEPS := 31 | SRC_DEPS := 32 | LINKER_OUTPUT_OUTPUTS := 33 | CC_DEPS := 34 | C++_DEPS := 35 | CXX_DEPS := 36 | OBJS := 37 | ASM_DEPS := 38 | LIBRARY_GENERATOR_OUTPUTTYPE_OUTPUTS := 39 | S_UPPER_DEPS := 40 | OBJCOPY_OUTPUTTYPE_OUTPUTS := 41 | CPP_DEPS := 42 | 43 | # Every subdirectory with source files must be described here 44 | SUBDIRS := \ 45 | src \ 46 | 47 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/Release/src/SH2Tiny_Sample1.d: -------------------------------------------------------------------------------- 1 | src/SH2Tiny_Sample1.o src/SH2Tiny_Sample1.d: ../src/SH2Tiny_Sample1.c \ 2 | ../src/iodefine.h 3 | 4 | ../src/iodefine.h: 5 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/Release/src/SH2Tiny_Sample1.depsub: -------------------------------------------------------------------------------- 1 | -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/Release/src/SH2Tiny_Sample1.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/HiBot Components/SH2/SH2Tiny_Sample1/Release/src/SH2Tiny_Sample1.o -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/Release/src/SH2Tiny_Sample1.sub: -------------------------------------------------------------------------------- 1 | -c -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/Release/src/Testing.d: -------------------------------------------------------------------------------- 1 | src/Testing.o src/Testing.d: ../src/Testing.c ../src/iodefine.h 2 | 3 | ../src/iodefine.h: 4 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/Release/src/Testing.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/HiBot Components/SH2/SH2Tiny_Sample1/Release/src/Testing.o -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/Release/src/c.depsub: -------------------------------------------------------------------------------- 1 | -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/Release/src/c.sub: -------------------------------------------------------------------------------- 1 | -c -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/Release/src/hardware_setup.d: -------------------------------------------------------------------------------- 1 | src/hardware_setup.o src/hardware_setup.d: ../src/hardware_setup.c \ 2 | ../src/iodefine.h 3 | 4 | ../src/iodefine.h: 5 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/Release/src/hardware_setup.depsub: -------------------------------------------------------------------------------- 1 | -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/Release/src/hardware_setup.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/HiBot Components/SH2/SH2Tiny_Sample1/Release/src/hardware_setup.o -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/Release/src/hardware_setup.sub: -------------------------------------------------------------------------------- 1 | -c -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/Release/src/interrupt_handlers.d: -------------------------------------------------------------------------------- 1 | src/interrupt_handlers.o src/interrupt_handlers.d: \ 2 | ../src/interrupt_handlers.c ../src/interrupt_handlers.h \ 3 | ../src/iodefine.h 4 | 5 | ../src/interrupt_handlers.h: 6 | 7 | ../src/iodefine.h: 8 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/Release/src/interrupt_handlers.depsub: -------------------------------------------------------------------------------- 1 | -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/Release/src/interrupt_handlers.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/HiBot Components/SH2/SH2Tiny_Sample1/Release/src/interrupt_handlers.o -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/Release/src/interrupt_handlers.sub: -------------------------------------------------------------------------------- 1 | -c -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/Release/src/reset_program.d: -------------------------------------------------------------------------------- 1 | src/reset_program.o src/reset_program.d: ../src/reset_program.asm 2 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/Release/src/reset_program.depsub: -------------------------------------------------------------------------------- 1 | -Wa,-gdwarf2 -x assembler-with-cpp -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/Release/src/reset_program.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/HiBot Components/SH2/SH2Tiny_Sample1/Release/src/reset_program.o -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/Release/src/reset_program.sub: -------------------------------------------------------------------------------- 1 | -Wa,-gdwarf2 -c -x assembler-with-cpp -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/Release/src/vector_table.d: -------------------------------------------------------------------------------- 1 | src/vector_table.o src/vector_table.d: ../src/vector_table.c \ 2 | ../src/interrupt_handlers.h 3 | 4 | ../src/interrupt_handlers.h: 5 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/Release/src/vector_table.depsub: -------------------------------------------------------------------------------- 1 | -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/Release/src/vector_table.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/HiBot Components/SH2/SH2Tiny_Sample1/Release/src/vector_table.o -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/Release/src/vector_table.sub: -------------------------------------------------------------------------------- 1 | -c -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/Testing Release.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/custom.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/HiBot Components/SH2/SH2Tiny_Sample1/custom.bat -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/makefile.init: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Automatically-generated file. Do not edit! 3 | ################################################################################ 4 | 5 | PATH := $(PATH):C:\Renesas\E2_STU~1\GNUSHV~1.01-\sh-elf\bin;C:\Renesas\E2_STU~1\GNUSHV~1.01-\sh-elf\libexec\gcc\sh-elf\4.6-GNUSH_v12.01 -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Sample1/src/typedefine.h: -------------------------------------------------------------------------------- 1 | /***********************************************************************/ 2 | /* */ 3 | /* PROJECT NAME : SH2Tiny_Sample1EclipseV3 */ 4 | /* FILE : typedefine.h */ 5 | /* DESCRIPTION : Aliases of Integer Type */ 6 | /* CPU SERIES : SH2 */ 7 | /* CPU TYPE : SH7047 */ 8 | /* */ 9 | /* This file is generated by KPIT Eclipse. */ 10 | /* */ 11 | /***********************************************************************/ 12 | 13 | 14 | typedef signed char _SBYTE; 15 | typedef unsigned char _UBYTE; 16 | typedef signed short _SWORD; 17 | typedef unsigned short _UWORD; 18 | typedef signed int _SINT; 19 | typedef unsigned int _UINT; 20 | typedef signed long _SDWORD; 21 | typedef unsigned long _UDWORD; 22 | typedef signed long long _SQWORD; 23 | typedef unsigned long long _UQWORD; 24 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/.info: -------------------------------------------------------------------------------- 1 | TOOL_CHAIN=KPIT GNUSH-ELF Toolchain 2 | VERSION=v12.01 3 | TC_INSTALL=C:\Renesas\e2_studio\GNUSHv12.01-ELF\sh-elf\ 4 | GCC_STRING=4.6-GNUSH_v12.01 5 | VERSION_IDE= 6 | E2STUDIO_VERSION=4.2.0.012 7 | ACTIVE_CONFIGURATION=Release -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | SH2Tiny_Template 4 | 5 | 6 | 7 | 8 | 9 | com.renesas.cdt.core.genmakebuilder 10 | 11 | 12 | 13 | 14 | org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder 15 | full,incremental, 16 | 17 | 18 | 19 | 20 | 21 | org.eclipse.cdt.core.cnature 22 | com.renesas.cdt.core.kpitcnature 23 | com.renesas.cdt.core.kpitccnature 24 | org.eclipse.cdt.managedbuilder.core.managedBuildNature 25 | org.eclipse.cdt.managedbuilder.core.ScannerConfigNature 26 | 27 | 28 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/.settings/Dependency_Scan_Preferences.prefs: -------------------------------------------------------------------------------- 1 | Build\ project\ excluding\ the\ dependencies=false 2 | Re-generate\ and\ use\ dependencies\ during\ project\ build=true 3 | Use\ existing\ dependencies\ during\ project\ build=false 4 | eclipse.preferences.version=1 5 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/.settings/language.settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/Release/LinkerSubCommand.tmp: -------------------------------------------------------------------------------- 1 | "./src/SH2Tiny_Sample1.o" "./src/hardware_setup.o" "./src/interrupt_handlers.o" "./src/reset_program.o" "./src/vector_table.o" -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/Release/Testing.x: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/HiBot Components/SH2/SH2Tiny_Template/Release/Testing.x -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/Release/Testing_Release_auto.gsi: -------------------------------------------------------------------------------- 1 | SECTIONS 2 | { 3 | .vects 0x0 : AT (0x0) 4 | { 5 | KEEP(*(.vects)) 6 | } 7 | .text 0x1000 : AT (0x1000) 8 | { 9 | *(.text) 10 | *(.text.*) 11 | etext = .; 12 | } 13 | .init : 14 | { 15 | *(.init) 16 | } 17 | .fini : 18 | { 19 | *(.fini) 20 | } 21 | .got : 22 | { 23 | *(.got) 24 | *(.got.plt) 25 | } 26 | .rodata : 27 | { 28 | *(.rodata) 29 | *(.rodata.*) 30 | _erodata = .; 31 | } 32 | .eh_frame_hdr : 33 | { 34 | *(.eh_frame_hdr) 35 | } 36 | .eh_frame : 37 | { 38 | *(.eh_frame) 39 | } 40 | .jcr : 41 | { 42 | *(.jcr) 43 | } 44 | .tors : 45 | { 46 | __CTOR_LIST__ = .; 47 | ___ctors = .; 48 | *(.ctors) 49 | ___ctors_end = .; 50 | __CTOR_END__ = .; 51 | __DTOR_LIST__ = .; 52 | ___dtors = .; 53 | *(.dtors) 54 | ___dtors_end = .; 55 | __DTOR_END__ = .; 56 | _mdata = .; 57 | } 58 | .data 0xFFFFD000 : AT (_mdata) 59 | { 60 | _data = .; 61 | *(.data) 62 | *(.data.*) 63 | _edata = .; 64 | } 65 | .gcc_exc : 66 | { 67 | *(.gcc_exc) 68 | } 69 | .bss : 70 | { 71 | _bss = .; 72 | *(.bss) 73 | *(.bss.*) 74 | *(COMMON) 75 | _ebss = .; 76 | _end = .; 77 | } 78 | .stack 0xFFFFFFF0 : AT (0xFFFFFFF0) 79 | { 80 | _stack = .; 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/Release/libTesting.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/HiBot Components/SH2/SH2Tiny_Template/Release/libTesting.a -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/Release/objects.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Automatically-generated file. Do not edit! 3 | ################################################################################ 4 | 5 | USER_OBJS := 6 | 7 | LIBS := -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/Release/sources.mk: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Automatically-generated file. Do not edit! 3 | ################################################################################ 4 | 5 | CPP_UPPER_SRCS := 6 | ASM_SRCS := 7 | C++_UPPER_SRCS := 8 | CC_UPPER_SRCS := 9 | CXX_UPPER_SRCS := 10 | CPP_SRCS := 11 | S_UPPER_SRCS := 12 | O_SRCS := 13 | C_UPPER_SRCS := 14 | CXX_SRCS := 15 | C++_SRCS := 16 | OBJ_SRCS := 17 | S_SRCS := 18 | CC_SRCS := 19 | SRC_UPPER_SRCS := 20 | X_SRCS := 21 | SRC_SRCS := 22 | C_SRCS := 23 | CC_UPPER_DEPS := 24 | C++_UPPER_DEPS := 25 | CXX_UPPER_DEPS := 26 | CPP_UPPER_DEPS := 27 | C_UPPER_DEPS := 28 | SRC_UPPER_DEPS := 29 | S_DEPS := 30 | C_DEPS := 31 | SRC_DEPS := 32 | LINKER_OUTPUT_OUTPUTS := 33 | CC_DEPS := 34 | C++_DEPS := 35 | CXX_DEPS := 36 | OBJS := 37 | ASM_DEPS := 38 | LIBRARY_GENERATOR_OUTPUTTYPE_OUTPUTS := 39 | S_UPPER_DEPS := 40 | OBJCOPY_OUTPUTTYPE_OUTPUTS := 41 | CPP_DEPS := 42 | 43 | # Every subdirectory with source files must be described here 44 | SUBDIRS := \ 45 | src \ 46 | 47 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/Release/src/SH2Tiny_Sample1.d: -------------------------------------------------------------------------------- 1 | src/SH2Tiny_Sample1.o src/SH2Tiny_Sample1.d: ../src/SH2Tiny_Sample1.c \ 2 | ../src/iodefine.h 3 | 4 | ../src/iodefine.h: 5 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/Release/src/SH2Tiny_Sample1.depsub: -------------------------------------------------------------------------------- 1 | -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/Release/src/SH2Tiny_Sample1.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/HiBot Components/SH2/SH2Tiny_Template/Release/src/SH2Tiny_Sample1.o -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/Release/src/SH2Tiny_Sample1.sub: -------------------------------------------------------------------------------- 1 | -c -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/Release/src/Testing.d: -------------------------------------------------------------------------------- 1 | src/Testing.o src/Testing.d: ../src/Testing.c ../src/iodefine.h 2 | 3 | ../src/iodefine.h: 4 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/Release/src/Testing.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/HiBot Components/SH2/SH2Tiny_Template/Release/src/Testing.o -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/Release/src/c.depsub: -------------------------------------------------------------------------------- 1 | -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/Release/src/c.sub: -------------------------------------------------------------------------------- 1 | -c -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/Release/src/hardware_setup.d: -------------------------------------------------------------------------------- 1 | src/hardware_setup.o src/hardware_setup.d: ../src/hardware_setup.c \ 2 | ../src/iodefine.h 3 | 4 | ../src/iodefine.h: 5 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/Release/src/hardware_setup.depsub: -------------------------------------------------------------------------------- 1 | -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/Release/src/hardware_setup.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/HiBot Components/SH2/SH2Tiny_Template/Release/src/hardware_setup.o -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/Release/src/hardware_setup.sub: -------------------------------------------------------------------------------- 1 | -c -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/Release/src/interrupt_handlers.d: -------------------------------------------------------------------------------- 1 | src/interrupt_handlers.o src/interrupt_handlers.d: \ 2 | ../src/interrupt_handlers.c ../src/interrupt_handlers.h \ 3 | ../src/iodefine.h 4 | 5 | ../src/interrupt_handlers.h: 6 | 7 | ../src/iodefine.h: 8 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/Release/src/interrupt_handlers.depsub: -------------------------------------------------------------------------------- 1 | -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/Release/src/interrupt_handlers.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/HiBot Components/SH2/SH2Tiny_Template/Release/src/interrupt_handlers.o -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/Release/src/interrupt_handlers.sub: -------------------------------------------------------------------------------- 1 | -c -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/Release/src/reset_program.d: -------------------------------------------------------------------------------- 1 | src/reset_program.o src/reset_program.d: ../src/reset_program.asm 2 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/Release/src/reset_program.depsub: -------------------------------------------------------------------------------- 1 | -Wa,-gdwarf2 -x assembler-with-cpp -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/Release/src/reset_program.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/HiBot Components/SH2/SH2Tiny_Template/Release/src/reset_program.o -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/Release/src/reset_program.sub: -------------------------------------------------------------------------------- 1 | -Wa,-gdwarf2 -c -x assembler-with-cpp -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/Release/src/vector_table.d: -------------------------------------------------------------------------------- 1 | src/vector_table.o src/vector_table.d: ../src/vector_table.c \ 2 | ../src/interrupt_handlers.h 3 | 4 | ../src/interrupt_handlers.h: 5 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/Release/src/vector_table.depsub: -------------------------------------------------------------------------------- 1 | -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/Release/src/vector_table.o: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/HiBot Components/SH2/SH2Tiny_Template/Release/src/vector_table.o -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/Release/src/vector_table.sub: -------------------------------------------------------------------------------- 1 | -c -x c -fomit-frame-pointer -DINIT_SECTIONS -D__BIG_ENDIAN__=1 -O2 -g -m2 -mb -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/Testing Release.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/custom.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/HiBot Components/SH2/SH2Tiny_Template/custom.bat -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/makefile.init: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Automatically-generated file. Do not edit! 3 | ################################################################################ 4 | 5 | PATH := $(PATH):C:\Renesas\E2_STU~1\GNUSHV~1.01-\sh-elf\bin;C:\Renesas\E2_STU~1\GNUSHV~1.01-\sh-elf\libexec\gcc\sh-elf\4.6-GNUSH_v12.01 -------------------------------------------------------------------------------- /HiBot Components/SH2/SH2Tiny_Template/src/typedefine.h: -------------------------------------------------------------------------------- 1 | /***********************************************************************/ 2 | /* */ 3 | /* PROJECT NAME : SH2Tiny_Sample1EclipseV3 */ 4 | /* FILE : typedefine.h */ 5 | /* DESCRIPTION : Aliases of Integer Type */ 6 | /* CPU SERIES : SH2 */ 7 | /* CPU TYPE : SH7047 */ 8 | /* */ 9 | /* This file is generated by KPIT Eclipse. */ 10 | /* */ 11 | /***********************************************************************/ 12 | 13 | 14 | typedef signed char _SBYTE; 15 | typedef unsigned char _UBYTE; 16 | typedef signed short _SWORD; 17 | typedef unsigned short _UWORD; 18 | typedef signed int _SINT; 19 | typedef unsigned int _UINT; 20 | typedef signed long _SDWORD; 21 | typedef unsigned long _UDWORD; 22 | typedef signed long long _SQWORD; 23 | typedef unsigned long long _UQWORD; 24 | -------------------------------------------------------------------------------- /Input Shaping in C/EIshaper_creation_test: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/Input Shaping in C/EIshaper_creation_test -------------------------------------------------------------------------------- /Input Shaping in C/EIshaper_creation_test.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | //#include "input_shaping.h" 6 | #include "input_shaping.c" 7 | 8 | #define PI acos(-1.0) 9 | #define HZ_TO_RADS (2.0 * PI) 10 | 11 | int main(int argc, char *argv[]) { 12 | 13 | float command[200]; 14 | float shaped_command[200]; 15 | 16 | 17 | input_shaper EI_shaper = createEIShaper(1.00, 0.0, 0.05, 50); 18 | 19 | for (int ii = 0; ii < 200; ii++) 20 | { 21 | // Define the "unshaped" input 22 | command[ii] = 100; 23 | 24 | // Create pointers to the two shaper structs 25 | input_shaper *EI_shaper_p = &EI_shaper; 26 | 27 | // Call the input shaping function 28 | shaped_command[ii] = doInputShaping(command[ii], EI_shaper_p); 29 | 30 | // output the current unshaped input and shaped input, for comparison 31 | printf("sample: %d \t\t x = %.2f \t shaped = %.2f\n", ii, command[ii], shaped_command[ii]); 32 | printf("A1_pos = %d \t A2_pos = %d \t A3_pos = %d\n\n", EI_shaper.impulse_buffer_pos[0], EI_shaper.impulse_buffer_pos[1], EI_shaper.impulse_buffer_pos[2]); 33 | } 34 | printf("A1 = %f \t A2 = %f \t A3 = %f\n", EI_shaper.AMPS[0], EI_shaper.AMPS[1], EI_shaper.AMPS[2]); 35 | printf("T1 = %f \t T2 = %f \t T2 = %f\n", EI_shaper.TIMES[0], EI_shaper.TIMES[1], EI_shaper.TIMES[2]); 36 | } -------------------------------------------------------------------------------- /Input Shaping in C/ZVshaper_creation_test: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/Input Shaping in C/ZVshaper_creation_test -------------------------------------------------------------------------------- /Input Shaping in C/ZVshaper_creation_test.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | //#include "input_shaping.h" 6 | #include "input_shaping.c" 7 | 8 | #define PI acos(-1.0) 9 | #define HZ_TO_RADS (2.0 * PI) 10 | 11 | int main(int argc, char *argv[]) { 12 | 13 | float command[200]; 14 | float shaped_command[200]; 15 | 16 | 17 | input_shaper ZV_shaper = createZVShaper(1.00, 0.0, 20); 18 | 19 | 20 | for (int ii = 0; ii < 200; ii++) 21 | { 22 | // Define the "unshaped" input 23 | command[ii] = 100; 24 | 25 | // Create pointers to the two shaper structs 26 | input_shaper *ZV_shaper_p = &ZV_shaper; 27 | 28 | // Call the input shaping function 29 | shaped_command[ii] = doInputShaping(command[ii], ZV_shaper_p); 30 | 31 | // output the current unshaped input and shaped input, for comparison 32 | printf("sample: %d \t\t x = %.2f \t shaped = %.2f\n", ii, command[ii], shaped_command[ii]); 33 | printf("A1_pos = %d \t A2_pos = %d\n\n", ZV_shaper.impulse_buffer_pos[0], ZV_shaper.impulse_buffer_pos[1]); 34 | } 35 | 36 | printf("A1 = %f \t A2 = %f\n", ZV_shaper.AMPS[0], ZV_shaper.AMPS[1]); 37 | printf("T1 = %f \t T2 = %f", ZV_shaper.TIMES[0], ZV_shaper.TIMES[1]); 38 | 39 | 40 | } -------------------------------------------------------------------------------- /Input Shaping in C/embedded_ZV_shaping_check: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/Input Shaping in C/embedded_ZV_shaping_check -------------------------------------------------------------------------------- /Input Shaping in C/embedded_ZV_shaping_check.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | #include "embedded_input_shaping.c" 6 | 7 | #define PI acos(-1.0) 8 | #define HZ_TO_RADS (2.0 * PI) 9 | //#define SHAPER_BUFFER_LENGTH (601) 10 | 11 | int main(int argc, char *argv[]) { 12 | 13 | float command[200]; 14 | float shaped_command[200]; 15 | 16 | 17 | 18 | //input_shaper current_shaper = createZVShaper(1.00, 0.0, 100); 19 | //input_shaper current_shaper = createZVDShaper(0.33, 0.0, 100); 20 | input_shaper current_shaper = createEIShaper(0.5, 0.0, 0.05, 100); 21 | 22 | for (int ii = 0; ii < 200; ii++) 23 | { 24 | // Define the "unshaped" input 25 | command[ii] = 100; 26 | 27 | // Call the input shaping function 28 | shaped_command[ii] = doInputShaping(command[ii], ¤t_shaper); 29 | 30 | // output the current unshaped input and shaped input, for comparison 31 | printf("sample: %d \t\t x = %.2f \t shaped = %.2f\n", ii, command[ii], shaped_command[ii]); 32 | printf("A1_pos = %d \t A2_pos = %d\n\n", current_shaper.impulse_buffer_pos[0], current_shaper.impulse_buffer_pos[1]); 33 | } 34 | 35 | printf("\n\nThe shaper parameters were:\n"); 36 | printf("A1 = %f \t A2 = %f \t A3 = %f\n", current_shaper.AMPS[0], 37 | current_shaper.AMPS[1], 38 | current_shaper.AMPS[2]); 39 | 40 | printf("T1 = %f \t T2 = %f \t T3 = %f\n", current_shaper.TIMES[0], 41 | current_shaper.TIMES[1], 42 | current_shaper.TIMES[2]); 43 | 44 | } -------------------------------------------------------------------------------- /Input Shaping in C/embedded_multiaxis_shaping_check.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | #include "embedded_input_shaping.c" 6 | 7 | #define PI acos(-1.0) 8 | #define HZ_TO_RADS (2.0 * PI) 9 | //#define SHAPER_BUFFER_LENGTH (601) 10 | 11 | int main(int argc, char *argv[]) { 12 | 13 | float command[200]; 14 | float shaped_command[200]; 15 | 16 | 17 | 18 | //input_shaper current_shaper = createZVShaper(1.00, 0.0, 100); 19 | //input_shaper current_shaper = createZVDShaper(0.33, 0.0, 100); 20 | input_shaper current_shaper = createEIShaper(0.5, 0.0, 0.05, 100); 21 | 22 | for (int ii = 0; ii < 200; ii++) 23 | { 24 | // Define the "unshaped" input 25 | command[ii] = 100; 26 | 27 | // Call the input shaping function 28 | shaped_command[ii] = doInputShaping(command[ii], ¤t_shaper); 29 | 30 | // output the current unshaped input and shaped input, for comparison 31 | printf("sample: %d \t\t x = %.2f \t shaped = %.2f\n", ii, command[ii], shaped_command[ii]); 32 | printf("A1_pos = %d \t A2_pos = %d\n\n", current_shaper.impulse_buffer_pos[0], current_shaper.impulse_buffer_pos[1]); 33 | } 34 | 35 | printf("\n\nThe shaper parameters were:\n"); 36 | printf("A1 = %f \t A2 = %f \t A3 = %f\n", current_shaper.AMPS[0], 37 | current_shaper.AMPS[1], 38 | current_shaper.AMPS[2]); 39 | 40 | printf("T1 = %f \t T2 = %f \t T3 = %f\n", current_shaper.TIMES[0], 41 | current_shaper.TIMES[1], 42 | current_shaper.TIMES[2]); 43 | 44 | } -------------------------------------------------------------------------------- /Input Shaping in C/input_shaping.h: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------------- 2 | 3 | input_shaping.h 4 | 5 | Header file for implementation of ZV, ZVD, and EI shapers 6 | 7 | Created: 02/08/16 8 | - Joshua Vaughan 9 | - joshua.vaughan@louisiana.edu 10 | - http://www.ucs.louisiana.edu/~jev9637 11 | 12 | Modified: 13 | * 14 | 15 | ---------------------------------------------------------------------------- */ 16 | 17 | typedef struct { 18 | int const NUM_IMPULSES; // the number of shaper impulses 19 | int SAMPLE_RATE; // sampling/loop update rate (Hz) 20 | int BUFFER_LENGTH; // length of buffer to hold shaped values 21 | float *AMPS; // shaper impulse amplitudes 22 | float *TIMES; // shaper impulse times (s) 23 | int *impulse_buffer_pos; // index of buffer position for each imp. 24 | float *shaped_output_buffer; // ring buffer to hold output of shaper, length should equal BUFFER_LENGTH 25 | } input_shaper; 26 | 27 | 28 | // Functions to create input shapers to fill the struct type defined above 29 | input_shaper createZVShaper(float freq, float damping, int sample_rate); 30 | input_shaper createZVDShaper(float nat_freq, float damping, int sample_rate); 31 | input_shaper createEIShaper(float nat_freq, float damping, float vib_tol, int sample_rate); 32 | 33 | 34 | // Function to implement the shaping 35 | float doInputShaping(float unshapedCommand, input_shaper *shaper); -------------------------------------------------------------------------------- /Input Shaping in C/struct_based_shaper_check: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/Input Shaping in C/struct_based_shaper_check -------------------------------------------------------------------------------- /LaTeX/CRAWLAB_OneColumn.tex: -------------------------------------------------------------------------------- 1 | \documentclass[11pt]{article} 2 | \usepackage{fancyhdr} 3 | \usepackage{graphicx} 4 | \usepackage{amssymb} 5 | \usepackage{epstopdf} 6 | \usepackage{amsmath} 7 | \usepackage{amssymb} 8 | \usepackage{cite} 9 | \usepackage{multirow} 10 | \usepackage{wrapfig} 11 | \usepackage{subfigure} 12 | \usepackage[linecolor=black,backgroundcolor=lightgray]{todonotes} 13 | \usepackage[colorlinks=true, linkcolor=black,citecolor=black,urlcolor=blue]{hyperref} 14 | \bibliographystyle{IEEEtran} 15 | \DeclareGraphicsRule{.tif}{png}{.png}{`convert #1 `dirname #1`/`basename #1 .tif`.png} 16 | 17 | %---------------- Letter Paper --------------------% 18 | % be sure to change in document class too 19 | \textwidth = 6.5 in 20 | \textheight = 8.5 in 21 | \oddsidemargin = 0.0 in 22 | \evensidemargin = 0.0 in 23 | \topmargin = 0.0 in 24 | \headheight = 0.0 in 25 | \headsep = 0.2in 26 | \parskip = 0.2in 27 | \parindent = 0.0in 28 | 29 | %---------------- A4 Paper ------------------------% 30 | % be sure to change in document class too 31 | %\textwidth = 6.3 in 32 | %\textheight = 9.7 in 33 | %\oddsidemargin = 0.0 in 34 | %\evensidemargin = 0.0 in 35 | %\topmargin = 0.0 in 36 | %\headheight = 0.0 in 37 | %\headsep = 0.0in 38 | %\parskip = 0.2in 39 | %\parindent = 0.0in 40 | 41 | \begin{document} 42 | \begin{center} 43 | {\Large TITLE} 44 | 45 | % author names and affiliations 46 | Name, \ldots\\ 47 | Department of Mechanical Engineering\\ 48 | University of Louisiana at Lafayette\\ 49 | Lafayette, LA 70504\\ 50 | Email: Email@louisiana.edu 51 | \end{center} 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | \end{document} -------------------------------------------------------------------------------- /Licenses/LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012-2015, Joshua Vaughan 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 5 | 6 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 7 | 8 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 9 | 10 | 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. 11 | 12 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /LoPy/LoRa-MAC_basic/boot.py: -------------------------------------------------------------------------------- 1 | # Boot file 2 | import machine 3 | import os 4 | uart = machine.UART(0, 115200) 5 | os.dupterm(uart) 6 | -------------------------------------------------------------------------------- /LoPy/LoRa-MAC_basic/main.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | 3 | ############################################################################### 4 | # main.py 5 | # 6 | # Script to test basic LoRa-MAC functionality on the LoPy boards from Pycom 7 | # 8 | # Modified code from: 9 | # https://docs.pycom.io/tutorials/lora/lora-mac 10 | # 11 | # Created: 09/11/18 12 | # - Joshua Vaughan 13 | # - joshua.vaughan@louisiana.edu 14 | # - http://www.ucs.louisiana.edu/~jev9637 15 | # 16 | # Modified: 17 | # * 18 | # 19 | # TODO: 20 | # * 21 | ############################################################################### 22 | 23 | from network import LoRa 24 | import socket 25 | import machine 26 | import time 27 | 28 | # Initialize the lora object and set the region to USA 29 | lora = LoRa(mode=LoRa.LORA, region=LoRa.US915) 30 | 31 | # Set up a simple python socket to handle the LoRa packets 32 | lora_sock = socket.socket(socket.AF_LORA, socket.SOCK_RAW) 33 | 34 | while True: 35 | # Set the socket to blocking and send a simple string 36 | lora_sock.setblocking(True) 37 | print('Sending Hello') 38 | lora_sock.send('Hello') 39 | 40 | # Set the socke to non-blocking and wait for 64 bytes of data 41 | lora_sock.setblocking(False) 42 | print('Waiting for data...') 43 | data = lora_sock.recv(64) 44 | 45 | # Then, print that data to the REPL 46 | print('Received: {}'.format(data)) 47 | 48 | # Sleep for a random amount of time. This will allow two LoPys to run this 49 | # exact version of the code, reducing the possibility of multiple colliding 50 | # packets 51 | time.sleep(machine.rng() & 0x0F) 52 | -------------------------------------------------------------------------------- /LoPy/RGBblink/boot.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/LoPy/RGBblink/boot.py -------------------------------------------------------------------------------- /LoPy/RGBblink/main.py: -------------------------------------------------------------------------------- 1 | import pycom 2 | import time 3 | 4 | pycom.heartbeat(False) 5 | 6 | while True: 7 | pycom.rgbled(0xFF0000) 8 | time.sleep(1) 9 | pycom.rgbled(0x00FF00) 10 | time.sleep(1) 11 | pycom.rgbled(0x0000FF) 12 | time.sleep(1) 13 | -------------------------------------------------------------------------------- /MATLAB:Octave Utility Functions/testing_accel_input.m: -------------------------------------------------------------------------------- 1 | % for "driving" 2 | Amax = 1; % maximum accleration of trolley (m/s^2) 3 | Vmax = 0.35; % maximum velocity of trolleys (m/s) 4 | Distance= 0.5; % Desired move distnace 5 | StartTime = 0.5; % Time the command should start 6 | Shaper = []; 7 | 8 | t = 0:0.01:10; 9 | 10 | accel = accel_input(Amax,Vmax,Distance,StartTime,t,Shaper) 11 | 12 | plot(t,accel) -------------------------------------------------------------------------------- /MQTT/MQTT C/mqttApp.c: -------------------------------------------------------------------------------- 1 | /* 2 | * mqttApp.c 3 | * 4 | * Created on: 23. 10. 2013 5 | * Author: hp 6 | */ 7 | 8 | 9 | #include "mqttApp.h" 10 | 11 | 12 | #include "mqtt.h" 13 | 14 | #include "utils/uartstdio.h" 15 | 16 | Mqtt mqtt; 17 | 18 | #include 19 | 20 | 21 | void mqttAppMsgReceived(Mqtt *this, uint8_t *topic, uint8_t topicLen, uint8_t *data, uint32_t dataLen) 22 | { 23 | uint8_t strTopic[topicLen + 1]; 24 | memcpy(strTopic, topic, topicLen); 25 | strTopic[topicLen] = '\0'; 26 | 27 | uint8_t strData[dataLen + 1]; 28 | memcpy(strData, data, dataLen); 29 | strData[dataLen] = '\0'; 30 | 31 | UARTprintf("Topic: %s, Data: %s", strTopic, strData); 32 | 33 | } 34 | 35 | void mqttAppSend() 36 | { 37 | uint8_t flag = mqttPublish(&mqtt, "/presence", "Hello, here is mbed!"); 38 | } 39 | 40 | void mqttAppInit() 41 | { 42 | struct ip_addr serverIp; 43 | IP4_ADDR(&serverIp, 192,168,100,140); 44 | 45 | mqttInit(&mqtt, serverIp, 1883, &mqttAppMsgReceived, "Stellaris"); 46 | } 47 | 48 | void mqttAppConnect() 49 | { 50 | uint32_t flag; 51 | 52 | mqtt.autoConnect = 0; 53 | 54 | flag = mqttConnect(&mqtt); 55 | 56 | //mqttSubscribe(&mqtt, "/rf/#"); 57 | 58 | //mqttAppSend(); 59 | 60 | } 61 | 62 | void mqttAppPublish(char *topic, char *data) 63 | { 64 | mqttPublish(&mqtt, topic, data); 65 | } 66 | 67 | void mqttAppDisconnect() 68 | { 69 | mqttDisconnectForced(&mqtt); 70 | } 71 | 72 | 73 | void mqttAppHandle() 74 | { 75 | mqttLive(&mqtt); 76 | } 77 | -------------------------------------------------------------------------------- /MQTT/MQTT C/mqttApp.h: -------------------------------------------------------------------------------- 1 | /* 2 | * mqttApp.h 3 | * 4 | * Created on: 23. 10. 2013 5 | * Author: hp 6 | */ 7 | 8 | #ifndef MQTTAPP_H_ 9 | #define MQTTAPP_H_ 10 | 11 | void mqttAppInit(); 12 | void mqttAppConnect(); 13 | void mqttAppSend(); 14 | void mqttAppHandle(); 15 | void mqttAppDisconnect(); 16 | void mqttAppPublish(char *topic, char *data); 17 | 18 | #endif /* MQTTAPP_H_ */ 19 | -------------------------------------------------------------------------------- /MQTT/MQTT_WebRemote/apple-touch-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/MQTT/MQTT_WebRemote/apple-touch-icon-precomposed.png -------------------------------------------------------------------------------- /MQTT/MQTT_WebRemote/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/MQTT/MQTT_WebRemote/favicon.ico -------------------------------------------------------------------------------- /MQTT/MQTT_WebRemote/img/fleur_de_lis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/MQTT/MQTT_WebRemote/img/fleur_de_lis.png -------------------------------------------------------------------------------- /MQTT/MQTT_WebRemote/js/vendor/jquery.ui.touch-punch.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery UI Touch Punch 0.2.2 3 | * 4 | * Copyright 2011, Dave Furfero 5 | * Dual licensed under the MIT or GPL Version 2 licenses. 6 | * 7 | * Depends: 8 | * jquery.ui.widget.js 9 | * jquery.ui.mouse.js 10 | */ 11 | (function(b){b.support.touch="ontouchend" in document;if(!b.support.touch){return;}var c=b.ui.mouse.prototype,e=c._mouseInit,a;function d(g,h){if(g.originalEvent.touches.length>1){return;}g.preventDefault();var i=g.originalEvent.changedTouches[0],f=document.createEvent("MouseEvents");f.initMouseEvent(h,true,true,window,1,i.screenX,i.screenY,i.clientX,i.clientY,false,false,false,false,0,null);g.target.dispatchEvent(f);}c._touchStart=function(g){var f=this;if(a||!f._mouseCapture(g.originalEvent.changedTouches[0])){return;}a=true;f._touchMoved=false;d(g,"mouseover");d(g,"mousemove");d(g,"mousedown");};c._touchMove=function(f){if(!a){return;}this._touchMoved=true;d(f,"mousemove");};c._touchEnd=function(f){if(!a){return;}d(f,"mouseup");d(f,"mouseout");if(!this._touchMoved){d(f,"click");}a=false;};c._mouseInit=function(){var f=this;f.element.bind("touchstart",b.proxy(f,"_touchStart")).bind("touchmove",b.proxy(f,"_touchMove")).bind("touchend",b.proxy(f,"_touchEnd"));e.call(f);};})(jQuery); -------------------------------------------------------------------------------- /MQTT/MQTT_WebRemote_DataStreaming/apple-touch-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/MQTT/MQTT_WebRemote_DataStreaming/apple-touch-icon-precomposed.png -------------------------------------------------------------------------------- /MQTT/MQTT_WebRemote_DataStreaming/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/MQTT/MQTT_WebRemote_DataStreaming/favicon.ico -------------------------------------------------------------------------------- /MQTT/MQTT_WebRemote_DataStreaming/img/fleur_de_lis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/MQTT/MQTT_WebRemote_DataStreaming/img/fleur_de_lis.png -------------------------------------------------------------------------------- /MQTT/MQTT_WebRemote_DataStreaming/js/vendor/jquery.ui.touch-punch.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery UI Touch Punch 0.2.2 3 | * 4 | * Copyright 2011, Dave Furfero 5 | * Dual licensed under the MIT or GPL Version 2 licenses. 6 | * 7 | * Depends: 8 | * jquery.ui.widget.js 9 | * jquery.ui.mouse.js 10 | */ 11 | (function(b){b.support.touch="ontouchend" in document;if(!b.support.touch){return;}var c=b.ui.mouse.prototype,e=c._mouseInit,a;function d(g,h){if(g.originalEvent.touches.length>1){return;}g.preventDefault();var i=g.originalEvent.changedTouches[0],f=document.createEvent("MouseEvents");f.initMouseEvent(h,true,true,window,1,i.screenX,i.screenY,i.clientX,i.clientY,false,false,false,false,0,null);g.target.dispatchEvent(f);}c._touchStart=function(g){var f=this;if(a||!f._mouseCapture(g.originalEvent.changedTouches[0])){return;}a=true;f._touchMoved=false;d(g,"mouseover");d(g,"mousemove");d(g,"mousedown");};c._touchMove=function(f){if(!a){return;}this._touchMoved=true;d(f,"mousemove");};c._touchEnd=function(f){if(!a){return;}d(f,"mouseup");d(f,"mouseout");if(!this._touchMoved){d(f,"click");}a=false;};c._mouseInit=function(){var f=this;f.element.bind("touchstart",b.proxy(f,"_touchStart")).bind("touchmove",b.proxy(f,"_touchMove")).bind("touchend",b.proxy(f,"_touchEnd"));e.call(f);};})(jQuery); -------------------------------------------------------------------------------- /MQTT/MQTT_basicPub.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | 3 | ########################################################################################## 4 | # MQTT_basicPub.py 5 | # 6 | # Basic MQTT topic publication 7 | # 8 | # Adapted from: pub-single.py 9 | # http://git.eclipse.org/c/paho/org.eclipse.paho.mqtt.python.git/tree/examples 10 | # 11 | # Created: 01/14/15 12 | # - Joshua Vaughan 13 | # - joshua.vaughan@louisiana.edu 14 | # - http://www.ucs.louisiana.edu/~jev9637 15 | # 16 | # Modified: 17 | # * 03/29/16 - JEV - joshua.vaughan@louisiana.edu 18 | # - from __future__ imports for Python 2 users 19 | # 20 | ########################################################################################## 21 | 22 | from __future__ import print_function 23 | 24 | import paho.mqtt.publish as publish 25 | import datetime 26 | import time 27 | 28 | ## Eclipse 29 | HOST = 'iot.eclipse.org' 30 | PORT = 1883 31 | AUTH = None 32 | 33 | counter = 0 34 | while True: 35 | counter += 1 36 | timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") 37 | send_time = str(timestamp) + ' Count: ' + str(counter) 38 | publish.single("CRAWLAB/from_python", send_time, hostname = HOST, port = PORT, auth = AUTH) 39 | time.sleep(0.2) 40 | -------------------------------------------------------------------------------- /MQTT/pub-single.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | 3 | # Copyright (c) 2014 Roger Light 4 | # 5 | # All rights reserved. This program and the accompanying materials 6 | # are made available under the terms of the Eclipse Distribution License v1.0 7 | # which accompanies this distribution. 8 | # 9 | # The Eclipse Distribution License is available at 10 | # http://www.eclipse.org/org/documents/edl-v10.php. 11 | # 12 | # Contributors: 13 | # Roger Light - initial implementation 14 | 15 | # This shows an example of using the publish.single helper function. 16 | 17 | import sys 18 | try: 19 | import paho.mqtt.publish as publish 20 | except ImportError: 21 | # This part is only required to run the example from within the examples 22 | # directory when the module itself is not installed. 23 | # 24 | # If you have the module installed, just use "import paho.mqtt.publish" 25 | import os 26 | import inspect 27 | cmd_subfolder = os.path.realpath(os.path.abspath(os.path.join(os.path.split(inspect.getfile( inspect.currentframe() ))[0],"../src"))) 28 | if cmd_subfolder not in sys.path: 29 | sys.path.insert(0, cmd_subfolder) 30 | import paho.mqtt.publish as publish 31 | 32 | publish.single("paho/test/single", "boo", hostname="iot.eclipse.org") 33 | -------------------------------------------------------------------------------- /Matplotlib Animation/simple_animation.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/Matplotlib Animation/simple_animation.mp4 -------------------------------------------------------------------------------- /Matplotlib Animation/trajectory_animation.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/Matplotlib Animation/trajectory_animation.mp4 -------------------------------------------------------------------------------- /Misc Python Tools and Helpers/example_freq.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/Misc Python Tools and Helpers/example_freq.pdf -------------------------------------------------------------------------------- /Misc Python Tools and Helpers/localExtrema.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | 3 | def get_local_extrema(time,data) 4 | # Get local maximums 5 | localMax_indexes = signal.argrelextrema(data, np.greater) 6 | localMaxes = data[localMax_indexes] 7 | localMax_Times = time[localMax_indexes] 8 | 9 | # Get local minimums 10 | localMin_indexes = signal.argrelextrema(data, np.less) 11 | localMins = data[localMin_indexes] 12 | localMin_Times = time[localMin_indexes] 13 | 14 | retrun localMaxes, localMax_Times, localMins, localMin_Times -------------------------------------------------------------------------------- /Misc Python Tools and Helpers/timeout.py: -------------------------------------------------------------------------------- 1 | # Sets up timer for timeout of single-threaded tasks 2 | 3 | from functools import wraps 4 | import errno 5 | import os 6 | import signal 7 | 8 | class TimeoutError(Exception): 9 | pass 10 | 11 | def timeout(seconds=10, error_message=os.strerror(errno.ETIME)): 12 | def decorator(func): 13 | def _handle_timeout(signum, frame): 14 | raise TimeoutError(error_message) 15 | 16 | def wrapper(*args, **kwargs): 17 | signal.signal(signal.SIGALRM, _handle_timeout) 18 | signal.alarm(seconds) 19 | try: 20 | result = func(*args, **kwargs) 21 | finally: 22 | signal.alarm(0) 23 | return result 24 | 25 | return wraps(func)(wrapper) 26 | 27 | return decorator -------------------------------------------------------------------------------- /Misc Python/enumeration.py: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | import numpy as np 3 | 4 | error_array = np.linspace(-5,5,501) 5 | 6 | for error in error_array: 7 | print("Error: {}".format(error)) 8 | 9 | 10 | for index, error in enumerate(error_array): 11 | print("\nindex : {}".format(index)) 12 | print("Error: {}".format(error)) -------------------------------------------------------------------------------- /Misc Python/future_imports.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | 3 | ############################################################################### 4 | # future_imports.py 5 | # 6 | # Testing from future imports 7 | # 8 | # NOTE: Any plotting is set up for output, not viewing on screen. 9 | # So, it will likely be ugly on screen. The saved PDFs should look 10 | # better. 11 | # 12 | # Created: 01/25/16 13 | # - Joshua Vaughan 14 | # - joshua.vaughan@louisiana.edu 15 | # - http://www.ucs.louisiana.edu/~jev9637 16 | # 17 | # Modified: 18 | # * 19 | # 20 | ############################################################################### 21 | 22 | # These two includes will handle most of our cases 23 | from __future__ import division 24 | from __future__ import print_function 25 | 26 | # These two may be needed in special cases 27 | # from __future__ import absolute_import 28 | # from __future__ import unicode_literals 29 | 30 | # Our "normal" imports 31 | import numpy as np 32 | import matplotlib.pyplot as plt 33 | import sys # Needed to get the python version 34 | 35 | print('Hello') 36 | 37 | print('Hello from a print function in Python {}!'.format(sys.version[0:3])) 38 | 39 | print('1/3 = {}'.format(1/3)) -------------------------------------------------------------------------------- /Miscellaneous ROS Scripts/README.md: -------------------------------------------------------------------------------- 1 | Folder contains miscellaneous ROS scripts, used largely for testing ideas prior to integration with other projects. See file headers for description of each script's functionality/purpose. -------------------------------------------------------------------------------- /Miscellaneous ROS Scripts/buildingBlocks.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /OpenAI Gym/example_weights/duel_dqn_planar_crane-v0_weights_1024_4_100000_2017-07-13_222427.h5f: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:1440f3a5fb63268d50a5c8fe7d5716a48707cb2c70bf4730a7de97dc037d2f34 3 | size 12658816 4 | -------------------------------------------------------------------------------- /OpenAI Gym/mass_spring_damper_continuous/__init__.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | 3 | ############################################################################### 4 | # __init__.py 5 | # 6 | # initialization for the mass_spring_damper_continuous OpenAI environment 7 | # 8 | # NOTE: Any plotting is set up for output, not viewing on screen. 9 | # So, it will likely be ugly on screen. The saved PDFs should look 10 | # better. 11 | # 12 | # Created: 04/08/18 13 | # - Joshua Vaughan 14 | # - joshua.vaughan@louisiana.edu 15 | # - http://www.ucs.louisiana.edu/~jev9637 16 | # 17 | # Modified: 18 | # * 19 | # 20 | # TODO: 21 | # * 22 | ############################################################################### 23 | 24 | from gym.envs.registration import register 25 | 26 | register( 27 | id='mass_spring_damper_continuous-v0', 28 | entry_point='mass_spring_damper_continuous.mass_spring_damper_continuous:MassSpringDamperContEnv', 29 | ) -------------------------------------------------------------------------------- /OpenAI Gym/planar_crane/__init__.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | 3 | ############################################################################### 4 | # __init__.py 5 | # 6 | # initialization for the variable_pendulum OpenAI environment 7 | # 8 | # NOTE: Any plotting is set up for output, not viewing on screen. 9 | # So, it will likely be ugly on screen. The saved PDFs should look 10 | # better. 11 | # 12 | # Created: 07/07/17 13 | # - Joshua Vaughan 14 | # - joshua.vaughan@louisiana.edu 15 | # - http://www.ucs.louisiana.edu/~jev9637 16 | # 17 | # Modified: 18 | # * 19 | # 20 | # TODO: 21 | # * 22 | ############################################################################### 23 | 24 | from gym.envs.registration import register 25 | 26 | register( 27 | id='planar_crane-v0', 28 | entry_point='planar_crane.planar_crane:PlanarCraneEnv', 29 | ) -------------------------------------------------------------------------------- /OpenAI Gym/planar_crane_continuous/__init__.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | 3 | ############################################################################### 4 | # __init__.py 5 | # 6 | # initialization for the planar_crane_continuous OpenAI environment 7 | # 8 | # NOTE: Any plotting is set up for output, not viewing on screen. 9 | # So, it will likely be ugly on screen. The saved PDFs should look 10 | # better. 11 | # 12 | # Created: 07/13/17 13 | # - Joshua Vaughan 14 | # - joshua.vaughan@louisiana.edu 15 | # - http://www.ucs.louisiana.edu/~jev9637 16 | # 17 | # Modified: 18 | # * 19 | # 20 | # TODO: 21 | # * 22 | ############################################################################### 23 | 24 | from gym.envs.registration import register 25 | 26 | register( 27 | id='planar_crane_continuous-v0', 28 | entry_point='planar_crane_continuous.planar_crane_continuous:PlanarCraneContEnv', 29 | ) -------------------------------------------------------------------------------- /OpenAI Gym/planar_crane_feedback/__init__.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | 3 | ############################################################################### 4 | # __init__.py 5 | # 6 | # initialization for the variable_pendulum OpenAI environment 7 | # 8 | # NOTE: Any plotting is set up for output, not viewing on screen. 9 | # So, it will likely be ugly on screen. The saved PDFs should look 10 | # better. 11 | # 12 | # Created: 07/07/17 13 | # - Joshua Vaughan 14 | # - joshua.vaughan@louisiana.edu 15 | # - http://www.ucs.louisiana.edu/~jev9637 16 | # 17 | # Modified: 18 | # * 19 | # 20 | # TODO: 21 | # * 22 | ############################################################################### 23 | 24 | from gym.envs.registration import register 25 | 26 | register( 27 | id='planar_crane_feedback-v0', 28 | entry_point='planar_crane_feedback.planar_crane_feedback:PlanarCraneEnv', 29 | ) -------------------------------------------------------------------------------- /OpenAI Gym/variable_pendulum/__init__.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | 3 | ############################################################################### 4 | # __init__.py 5 | # 6 | # initialization for the variable_pendulum OpenAI environment 7 | # 8 | # NOTE: Any plotting is set up for output, not viewing on screen. 9 | # So, it will likely be ugly on screen. The saved PDFs should look 10 | # better. 11 | # 12 | # Created: 07/07/17 13 | # - Joshua Vaughan 14 | # - joshua.vaughan@louisiana.edu 15 | # - http://www.ucs.louisiana.edu/~jev9637 16 | # 17 | # Modified: 18 | # * 19 | # 20 | # TODO: 21 | # * 22 | ############################################################################### 23 | 24 | from gym.envs.registration import register 25 | 26 | register( 27 | id='variable_pendulum-v0', 28 | entry_point='variable_pendulum.variable_pendulum:VariablePendulumEnv', 29 | ) -------------------------------------------------------------------------------- /OpenAI Gym/variable_pendulum_continuous/__init__.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | 3 | ############################################################################### 4 | # __init__.py 5 | # 6 | # initialization for the variable_pendulum OpenAI environment 7 | # 8 | # NOTE: Any plotting is set up for output, not viewing on screen. 9 | # So, it will likely be ugly on screen. The saved PDFs should look 10 | # better. 11 | # 12 | # Created: 07/07/17 13 | # - Joshua Vaughan 14 | # - joshua.vaughan@louisiana.edu 15 | # - http://www.ucs.louisiana.edu/~jev9637 16 | # 17 | # Modified: 18 | # * 19 | # 20 | # TODO: 21 | # * 22 | ############################################################################### 23 | 24 | from gym.envs.registration import register 25 | 26 | register( 27 | id='variable_pendulum_continuous-v0', 28 | entry_point='variable_pendulum_continuous.variable_pendulum_continuous:VariablePendulumContEnv', 29 | ) -------------------------------------------------------------------------------- /OpenAI Gym/weights/.gitattributes: -------------------------------------------------------------------------------- 1 | *.h5f filter=lfs diff=lfs merge=lfs -text 2 | -------------------------------------------------------------------------------- /OpenAI Gym/weights/dqn_planar_crane-v0_weights_2048_3_50000_2017-07-10_150801.h5f: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:11d7f90c0ee9eccdf7ea4df49fd8cf35362beef48fdc02de1ff79e3b55d361cb 3 | size 33659680 4 | -------------------------------------------------------------------------------- /OpenAI Gym/weights/dqn_planar_crane-v0_weights_2048_4_50000_2017-07-10_152433.h5f: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:0941c60b28cfde5eda74091439c72c274892e10b02a8fa7d5f880a87532210fc 3 | size 50447628 4 | -------------------------------------------------------------------------------- /OpenAI Gym/weights/duel_dqn_planar_crane-v0_weights_1024_4_50000_2017-07-11_122948.h5f: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:3c7d670157e0c343af67ec0a4d6946125da28aa9bbf50ea75ddfd9b24b1961c5 3 | size 12659648 4 | -------------------------------------------------------------------------------- /OpenAI Gym/weights/duel_dqn_planar_crane-v0_weights_1024_4_50000_2017-07-11_123448.h5f: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:751519e0de2795f07d8a7b94a288237bf230cfaf242d3c9f1159847e4a9d42ce 3 | size 12659648 4 | -------------------------------------------------------------------------------- /PID Controllers/C/PID.h: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------------- 2 | 3 | PID.h 4 | 5 | Header file for PID controller 6 | 7 | Created: 06/15/16 8 | - Joshua Vaughan 9 | - joshua.vaughan@louisiana.edu 10 | - http://www.ucs.louisiana.edu/~jev9637 11 | 12 | Modified: 13 | * 14 | 15 | ---------------------------------------------------------------------------- */ 16 | 17 | typedef struct { 18 | double Kp; // Proportional Gain 19 | double Kd; // Derivative Gain 20 | double Ki; // Derivative Gain 21 | double lastMeasurement; // Measurement input remembered from last loop 22 | double integralTerm; // Running total for integral term 23 | double outMax; // Maximum value of output 24 | double outMin; // Minimum value of output 25 | int controlON; // 1 if controller is active, allows us to still keep track of controller even if not acting 26 | double sampleTime; // the sample time being used in the interrupt 27 | } PID; 28 | 29 | 30 | PID set_up_PID(double Kp, double Ki, double Kd, double outMax, double outMin, double sampleTime); 31 | 32 | double compute_PID(double measurement, double desired, PID *pid); 33 | 34 | void change_PID_limits(double min, double max, PID *pid); 35 | -------------------------------------------------------------------------------- /Parse/parse_basicData.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | 3 | ########################################################################################## 4 | # parse_basicData.py 5 | # 6 | # Script to write and read basic data from a parse.com account 7 | # 8 | # NOTE: Any plotting is set up for output, not viewing on screen. 9 | # So, it will likely be ugly on screen. The saved PDFs should look 10 | # better. 11 | # 12 | # Created: 03/18/15 13 | # - Joshua Vaughan 14 | # - joshua.vaughan@louisiana.edu 15 | # - http://www.ucs.louisiana.edu/~jev9637 16 | # 17 | # Modified: 18 | # * 19 | # 20 | ########################################################################################## 21 | 22 | import numpy as np 23 | import matplotlib.pyplot as plt 24 | import datetime 25 | 26 | from parse_rest.connection import register 27 | from parse_rest.datatypes import Object 28 | 29 | 30 | class TestData(Object): 31 | pass 32 | 33 | 34 | if __name__ == '__main__': 35 | register('mROIEsIqVeYLTXOgrcAODzdWMDiuzmQq6amBecNE', '0mvacQYGeG6136k1xKgMnUSjssdvjnaPge6pfTfE', master_key = 'ZrIxVKXJ5Wo60PIKLpsnzt4y9MJlSJy9DLKarOWX') 36 | 37 | currentTime = datetime.datetime.now().isoformat(' ') 38 | number_squeezed = 6 39 | testData = TestData(Time = currentTime, Location = "UL Lafayette", NumberOfTubes = number_squeezed) 40 | testData.save() 41 | 42 | # Read the data 43 | all_data = TestData.Query.all() 44 | 45 | for data in all_data: 46 | print data.Time, data.Location, data.NumberOfTubes 47 | -------------------------------------------------------------------------------- /Plotting/Example_plot_MATLAB.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/Plotting/Example_plot_MATLAB.pdf -------------------------------------------------------------------------------- /Plotting/Example_plot_Octave.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/Plotting/Example_plot_Octave.pdf -------------------------------------------------------------------------------- /Plotting/Using context manager/Humor-Sans.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/Plotting/Using context manager/Humor-Sans.ttf -------------------------------------------------------------------------------- /Plotting/Using context manager/plot_filename_xkcd.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/Plotting/Using context manager/plot_filename_xkcd.pdf -------------------------------------------------------------------------------- /Plotting/brewer_color_gen.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | # Script to generate colorbrewer based colors for matplotlib 3 | # http://colorbrewer2.org 4 | # 5 | # TODO: Upgrade to https://jiffyclub.github.io/palettable/ 6 | 7 | 8 | import numpy as np 9 | import matplotlib as mpl 10 | 11 | import brewer2mpl 12 | 13 | 14 | colors = brewer2mpl.get_map('Set1', 'qualitative', 7).mpl_colors 15 | 16 | for color in colors: 17 | print mpl.colors.rgb2hex(color) -------------------------------------------------------------------------------- /Plotting/dual_yAxes_plot.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/Plotting/dual_yAxes_plot.pdf -------------------------------------------------------------------------------- /Plotting/matplotlib plot styles/matplotlib_plot_snippet.py: -------------------------------------------------------------------------------- 1 | with plt.style.context(('CRAWLAB.mplstyle')): 2 | fig = plt.figure() 3 | 4 | # Remove the top and right splines. As of 01/11/15, we can't do this in the style file 5 | ax = plt.gca() 6 | ax.spines['right'].set_color('none') 7 | ax.spines['top'].set_color('none') 8 | ax.xaxis.set_ticks_position('bottom') 9 | ax.yaxis.set_ticks_position('left') 10 | 11 | # Define the X and Y axis labels 12 | plt.xlabel('X label (units)', labelpad=5) 13 | plt.ylabel('Y label (units)', labelpad=10) 14 | 15 | # Plot the data and set the labels to be used in the legend 16 | plt.plot(x1, y1, linestyle="-", label=r'Data 1') 17 | plt.plot(x2, y2, linestyle="--", label=r'Data 2') 18 | plt.plot(x3, y3, linestyle="-.", label=r'Data 3') 19 | plt.plot(x4, y4, linestyle=":", label=r'Data 4') 20 | 21 | # Uncomment below and set limits if needed 22 | # plt.xlim(0,5) 23 | # plt.ylim(0,10) 24 | 25 | # Create the legend 26 | leg = plt.legend(loc='upper right', ncol = 1) 27 | 28 | # OPTIONAL : Adjust the page layout filling the page using the new tight_layout command 29 | # plt.tight_layout(pad=0.5) 30 | 31 | # Uncomment below save the figure as a high-res pdf in the current folder 32 | # It's saved at the original 6x4 size 33 | # plt.savefig('plot_from_Notebook.pdf') 34 | 35 | # If using in the IPython Notebook, uncomment the line below 36 | # fig.set_size_inches(9,6) # resize the figure for better display in the notebook -------------------------------------------------------------------------------- /Plotting/matplotlib_snippet.py: -------------------------------------------------------------------------------- 1 | # Set the plot size - 3x2 aspect ratio is best 2 | fig = plt.figure(figsize=(6,4)) 3 | ax = plt.gca() 4 | plt.subplots_adjust(bottom=0.17, left=0.17, top=0.96, right=0.96) 5 | 6 | # Change the axis units to CMUSerif-Roman 7 | plt.setp(ax.get_ymajorticklabels(),fontsize=18) 8 | plt.setp(ax.get_xmajorticklabels(),fontsize=18) 9 | 10 | ax.spines['right'].set_color('none') 11 | ax.spines['top'].set_color('none') 12 | 13 | ax.xaxis.set_ticks_position('bottom') 14 | ax.yaxis.set_ticks_position('left') 15 | 16 | # Turn on the plot grid and set appropriate linestyle and color 17 | ax.grid(True,linestyle=':', color='0.75') 18 | ax.set_axisbelow(True) 19 | 20 | # Define the X and Y axis labels 21 | plt.xlabel('X label (units)', fontsize=22, weight='bold', labelpad=5) 22 | plt.ylabel('Y label (units)', fontsize=22, weight='bold', labelpad=10) 23 | 24 | plt.plot(x1,y1, linewidth=2, linestyle="-", label=r'Data 1') 25 | plt.plot(x2,y2, linewidth=2, linestyle="--", label=r'Data 2') 26 | plt.plot(x3,y3, linewidth=2, linestyle="-.", label=r'Data 3') 27 | plt.plot(x4,y4, linewidth=2, linestyle=":", label=r'Data 4') 28 | 29 | # uncomment below and set limits if needed 30 | # plt.xlim(0,5) 31 | # plt.ylim(0,10) 32 | 33 | # Create the legend, then fix the fontsize 34 | leg = plt.legend(loc='upper right', ncol = 1, fancybox=True) 35 | ltext = leg.get_texts() 36 | plt.setp(ltext,fontsize=18) 37 | 38 | # Adjust the page layout filling the page using the new tight_layout command 39 | plt.tight_layout(pad=0.5) 40 | 41 | # save the figure as a high-res pdf in the current folder 42 | # plt.savefig('plot_filename.pdf') 43 | 44 | # show the figure 45 | show() -------------------------------------------------------------------------------- /QR codes/Webcam_QRreader.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import zbar 3 | import time 4 | 5 | cap = cv2.VideoCapture(1) 6 | 7 | try: 8 | while(True): 9 | # Capture frame-by-frame 10 | print 'Capturing frame...' 11 | ret, frame = cap.read() 12 | height, width, depth = frame.shape 13 | 14 | print 'Getting raw data...' 15 | raw = frame.tostring() 16 | 17 | cv2.imshow('frame',frame) 18 | cv2.waitKey(0) 19 | 20 | # wrap image data 21 | print 'Handing image off to zBar...' 22 | image = zbar.Image(width, height, 'Y800', raw) 23 | 24 | # create a reader 25 | print 'Creating reader...' 26 | scanner = zbar.ImageScanner() 27 | 28 | # configure the reader 29 | print 'Enabling reader...' 30 | scanner.parse_config('enable') 31 | 32 | # scan the image for barcodes 33 | print 'Scanning image...' 34 | scanner.scan(image) 35 | 36 | # extract results 37 | for symbol in image: 38 | # do something useful with results 39 | print 'decoded', symbol.type, 'symbol', '"%s"' % symbol.data 40 | 41 | print 'Pausing before repeating....\n\n' 42 | # time.sleep(1) 43 | 44 | except (KeyboardInterrupt, SystemExit): 45 | cv2.destroyAllWindows() 46 | cap.release() -------------------------------------------------------------------------------- /QR codes/images/QRresults.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/QR codes/images/QRresults.pdf -------------------------------------------------------------------------------- /QR codes/images/mobile_15percent.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/QR codes/images/mobile_15percent.jpg -------------------------------------------------------------------------------- /QR codes/images/mobile_25percent.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/QR codes/images/mobile_25percent.jpg -------------------------------------------------------------------------------- /QR codes/images/mobile_30percent.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/QR codes/images/mobile_30percent.jpg -------------------------------------------------------------------------------- /QR codes/images/mobile_7percent.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/QR codes/images/mobile_7percent.jpg -------------------------------------------------------------------------------- /QR codes/images/opencv_15percent.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/QR codes/images/opencv_15percent.jpg -------------------------------------------------------------------------------- /QR codes/images/opencv_25percent.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/QR codes/images/opencv_25percent.jpg -------------------------------------------------------------------------------- /QR codes/images/opencv_30percent.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/QR codes/images/opencv_30percent.jpg -------------------------------------------------------------------------------- /QR codes/images/opencv_7percent.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/QR codes/images/opencv_7percent.jpg -------------------------------------------------------------------------------- /QR codes/images/phbooth_15percent.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/QR codes/images/phbooth_15percent.jpg -------------------------------------------------------------------------------- /QR codes/images/phbooth_25percent.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/QR codes/images/phbooth_25percent.jpg -------------------------------------------------------------------------------- /QR codes/images/phbooth_30percent.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/QR codes/images/phbooth_30percent.jpg -------------------------------------------------------------------------------- /QR codes/images/phbooth_7percent.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/QR codes/images/phbooth_7percent.jpg -------------------------------------------------------------------------------- /QR codes/images/phbooth_7percent_cropBottom.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/QR codes/images/phbooth_7percent_cropBottom.jpg -------------------------------------------------------------------------------- /QR codes/images/phbooth_7percent_cropTop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/QR codes/images/phbooth_7percent_cropTop.jpg -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | CRAWLAB Code Snippets 2 | ----- 3 | 4 | Small pieces of code for use in C.R.A.W.LAB research. Larger projects can be found at the [CRAWLAB's organization page](https://github.com/crawlab). 5 | 6 | 7 | #### Licenses 8 | Code is licensed under a 3-clause BSD-style license. See the licenses/LICENSE.md file. 9 | 10 | Other content is provided under a [Creative Commons Attribution-NonCommercial 4.0 International License](http://creativecommons.org/licenses/by-nc/4.0/), CC-BY-NC 4.0. 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /V-REP/BubbleRob Example/BubbleRob_example.ttt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/V-REP/BubbleRob Example/BubbleRob_example.ttt -------------------------------------------------------------------------------- /V-REP/BubbleRob Example/remoteApi.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/V-REP/BubbleRob Example/remoteApi.dylib -------------------------------------------------------------------------------- /V-REP/Two Mass Spring Damper/remoteApi.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/V-REP/Two Mass Spring Damper/remoteApi.dylib -------------------------------------------------------------------------------- /V-REP/Two Mass Spring Damper/two_mass_spring_damper.ttt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/V-REP/Two Mass Spring Damper/two_mass_spring_damper.ttt -------------------------------------------------------------------------------- /V-REP/python_bindings/readMe.txt: -------------------------------------------------------------------------------- 1 | Make sure you have following files in your directory, in order to run the various examples: 2 | 3 | 1. vrep.py 4 | 2. vrepConst.py 5 | 3. the appropriate remote API library: "remoteApi.dll" (Windows), "remoteApi.dylib" (Mac) or "remoteApi.so" (Linux) 6 | 4. simpleTest.py (or any other example file) -------------------------------------------------------------------------------- /V-REP/python_bindings/remoteApi.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/V-REP/python_bindings/remoteApi.dylib -------------------------------------------------------------------------------- /Video Streaming/README.md: -------------------------------------------------------------------------------- 1 | This folder contains code to stream video using the [jsmpeg](https://github.com/phoboslab/jsmpeg) project. 2 | 3 | This [example](http://phoboslab.org/log/2013/09/html5-live-video-streaming-via-websockets) was used as the basis for the jsmpg_demo.html page. 4 | -------------------------------------------------------------------------------- /Video Streaming/ffmpeg settings for jsmpg streaming.md: -------------------------------------------------------------------------------- 1 | # ffmpeg settings and commands for [jsmp3g](https://github.com/phoboslab/jsmpeg) 2 | 3 | ## List all video objects - From https://trac.ffmpeg.org/wiki/Capture/Webcam 4 | ### OS X 5 | * For avfoundation 6 | 7 | ffmpeg -f avfoundation -list_devices true -i "" 8 | 9 | * For qt 10 | 11 | ffmpeg -f qtkit -list_devices true -i "" 12 | 13 | 14 | ### Linux 15 | 16 | v4l2-ctl --list-devices 17 | 18 | 19 | ## Starting the video stream from the local machine 20 | * See: http://phoboslab.org/log/2013/09/html5-live-video-streaming-via-websockets 21 | * Change the IP address and password to match the server 22 | * The password is the one set up from the stream_server.js launch on the server 23 | * In these examples, the resolution is set to 640x480. It will likely need to be changed too. 24 | 25 | ### OS X 26 | ffmpeg -s 640x480 -f avfoundation -i "" -f mpeg1video -b 800k -r 30 http://ip_address:8082/password/640/480/ 27 | 28 | ffmpeg -s 640x480 -f qtkit -i "" -f mpeg1video -b 800k -r 30 http://ip_address:8082/password/640/480/ 29 | 30 | I have gotten errors setting the resolution with the -s option. I just removed it and the resolution. So, for avfoundation the command would become: 31 | 32 | ffmpeg -f avfoundation -i "" -f mpeg1video -b 800k -r 30 http://ip_address:8082/password/640/480/ 33 | 34 | 35 | 36 | ### Linux 37 | 38 | ffmpeg -s 640x480 -f video4linux2 -i /dev/video0 -f mpeg1video -b 800k -r 30 http://ip_address:8082/password/640/480/ 39 | 40 | -------------------------------------------------------------------------------- /Video Streaming/jsmpg_demo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | jsmpeg streaming 6 | 19 | 20 | 21 | 25 | 26 |

27 | Please use a browser that supports the Canvas Element, like 28 | Chrome, 29 | Firefox, 30 | Safari or Internet Explorer 10 31 |

32 |
33 | 34 | 41 | 42 | -------------------------------------------------------------------------------- /Web GUIs/Javascript Joystick - Websockets/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Pure Javascript Joystick 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /Web GUIs/Javascript Joystick - Websockets/js/jquery.ui.touch-punch.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery UI Touch Punch 0.2.2 3 | * 4 | * Copyright 2011, Dave Furfero 5 | * Dual licensed under the MIT or GPL Version 2 licenses. 6 | * 7 | * Depends: 8 | * jquery.ui.widget.js 9 | * jquery.ui.mouse.js 10 | */ 11 | (function(b){b.support.touch="ontouchend" in document;if(!b.support.touch){return;}var c=b.ui.mouse.prototype,e=c._mouseInit,a;function d(g,h){if(g.originalEvent.touches.length>1){return;}g.preventDefault();var i=g.originalEvent.changedTouches[0],f=document.createEvent("MouseEvents");f.initMouseEvent(h,true,true,window,1,i.screenX,i.screenY,i.clientX,i.clientY,false,false,false,false,0,null);g.target.dispatchEvent(f);}c._touchStart=function(g){var f=this;if(a||!f._mouseCapture(g.originalEvent.changedTouches[0])){return;}a=true;f._touchMoved=false;d(g,"mouseover");d(g,"mousemove");d(g,"mousedown");};c._touchMove=function(f){if(!a){return;}this._touchMoved=true;d(f,"mousemove");};c._touchEnd=function(f){if(!a){return;}d(f,"mouseup");d(f,"mouseout");if(!this._touchMoved){d(f,"click");}a=false;};c._mouseInit=function(){var f=this;f.element.bind("touchstart",b.proxy(f,"_touchStart")).bind("touchmove",b.proxy(f,"_touchMove")).bind("touchend",b.proxy(f,"_touchEnd"));e.call(f);};})(jQuery); -------------------------------------------------------------------------------- /Web GUIs/Javascript Joystick - Websockets/js/main.js: -------------------------------------------------------------------------------- 1 | $(window).load(function(){ 2 | vec = Object.seal({ 3 | x: 0, 4 | y: 0 5 | }); 6 | 7 | tester = $('#tester'); 8 | tester.draggable(); 9 | 10 | JoyStick('#joystick1', 120, function(magnitude, theta, ximpulse, yimpulse) { 11 | //console.log(magnitude, theta, ximpulse, yimpulse); 12 | vec.x = 10 * (ximpulse / 80); 13 | vec.y = 10 * (yimpulse / 80); 14 | }); 15 | 16 | iid = setInterval(function() { 17 | //console.log(vec, tester.css('top'), tester.css('left')); 18 | tester.css('top', (parseInt(tester.css('top').substr(0, tester.css('top').length - 2), 10) - vec.y) + 'px'); 19 | tester.css('left', (parseInt(tester.css('left').substr(0, tester.css('left').length - 2), 10) + vec.x) + 'px'); 20 | }, 1000 / 60); 21 | 22 | }); -------------------------------------------------------------------------------- /Web GUIs/Javascript Joystick/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Pure Javascript Joystick 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /Web GUIs/Javascript Joystick/js/jquery.ui.touch-punch.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery UI Touch Punch 0.2.2 3 | * 4 | * Copyright 2011, Dave Furfero 5 | * Dual licensed under the MIT or GPL Version 2 licenses. 6 | * 7 | * Depends: 8 | * jquery.ui.widget.js 9 | * jquery.ui.mouse.js 10 | */ 11 | (function(b){b.support.touch="ontouchend" in document;if(!b.support.touch){return;}var c=b.ui.mouse.prototype,e=c._mouseInit,a;function d(g,h){if(g.originalEvent.touches.length>1){return;}g.preventDefault();var i=g.originalEvent.changedTouches[0],f=document.createEvent("MouseEvents");f.initMouseEvent(h,true,true,window,1,i.screenX,i.screenY,i.clientX,i.clientY,false,false,false,false,0,null);g.target.dispatchEvent(f);}c._touchStart=function(g){var f=this;if(a||!f._mouseCapture(g.originalEvent.changedTouches[0])){return;}a=true;f._touchMoved=false;d(g,"mouseover");d(g,"mousemove");d(g,"mousedown");};c._touchMove=function(f){if(!a){return;}this._touchMoved=true;d(f,"mousemove");};c._touchEnd=function(f){if(!a){return;}d(f,"mouseup");d(f,"mouseout");if(!this._touchMoved){d(f,"click");}a=false;};c._mouseInit=function(){var f=this;f.element.bind("touchstart",b.proxy(f,"_touchStart")).bind("touchmove",b.proxy(f,"_touchMove")).bind("touchend",b.proxy(f,"_touchEnd"));e.call(f);};})(jQuery); -------------------------------------------------------------------------------- /Web GUIs/Javascript Joystick/js/main.js: -------------------------------------------------------------------------------- 1 | $(window).load(function(){ 2 | vec = Object.seal({ 3 | x: 0, 4 | y: 0 5 | }); 6 | 7 | tester = $('#tester'); 8 | tester.draggable(); 9 | 10 | JoyStick('#joystick1', 120, function(magnitude, theta, ximpulse, yimpulse) { 11 | //console.log(magnitude, theta, ximpulse, yimpulse); 12 | vec.x = 10 * (ximpulse / 80); 13 | vec.y = 10 * (yimpulse / 80); 14 | }); 15 | 16 | iid = setInterval(function() { 17 | //console.log(vec, tester.css('top'), tester.css('left')); 18 | tester.css('top', (parseInt(tester.css('top').substr(0, tester.css('top').length - 2), 10) - vec.y) + 'px'); 19 | tester.css('left', (parseInt(tester.css('left').substr(0, tester.css('left').length - 2), 10) + vec.x) + 'px'); 20 | }, 1000 / 60); 21 | 22 | }); -------------------------------------------------------------------------------- /Wrapping C with Python/BasicZVShaping/ZVshapingBasic/ZVshapingBasic.h: -------------------------------------------------------------------------------- 1 | // 2 | // ZVshapingBasic.h 3 | // ZVshapingBasic 4 | // 5 | // Created by Joshua Vaughan on 4/28/16. 6 | // Copyright © 2016 Joshua Vaughan. All rights reserved. 7 | // 8 | 9 | #ifndef ZVshapingBasic_h 10 | #define ZVshapingBasic_h 11 | 12 | #include 13 | 14 | #endif /* ZVshapingBasic_h */ 15 | -------------------------------------------------------------------------------- /Wrapping C with Python/BasicZVShaping/ZVshapingBasic/ZVshapingBasic.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Wrapping C with Python/BasicZVShaping/ZVshapingBasic/ZVshapingBasic.xcodeproj/project.xcworkspace/xcuserdata/josh.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/Wrapping C with Python/BasicZVShaping/ZVshapingBasic/ZVshapingBasic.xcodeproj/project.xcworkspace/xcuserdata/josh.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Wrapping C with Python/BasicZVShaping/ZVshapingBasic/ZVshapingBasic.xcodeproj/xcuserdata/josh.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | ZVshapingBasic.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 03B4693C1CD20A32006E1854 16 | 17 | primary 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Wrapping C with Python/BasicZVShaping/libZVshapingBasic.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/Wrapping C with Python/BasicZVShaping/libZVshapingBasic.dylib -------------------------------------------------------------------------------- /Wrapping C with Python/Hello World/hello_world/hello_world.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Wrapping C with Python/Hello World/hello_world/hello_world.xcodeproj/project.xcworkspace/xcuserdata/josh.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/Wrapping C with Python/Hello World/hello_world/hello_world.xcodeproj/project.xcworkspace/xcuserdata/josh.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Wrapping C with Python/Hello World/hello_world/hello_world.xcodeproj/xcuserdata/josh.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | hello_world.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 03DA7B5B1CD1886B006DD5C7 16 | 17 | primary 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Wrapping C with Python/Hello World/hello_world/main.c: -------------------------------------------------------------------------------- 1 | // 2 | // main.c 3 | // hello_world 4 | // 5 | // Created by Joshua Vaughan on 4/27/16. 6 | // Copyright © 2016 Joshua Vaughan. All rights reserved. 7 | // 8 | 9 | #include "main.h" 10 | 11 | void hello_world(void) { 12 | printf("Hello World"); 13 | } 14 | 15 | int int_multiply(int a, int b) { 16 | return a * b; 17 | } 18 | -------------------------------------------------------------------------------- /Wrapping C with Python/Hello World/hello_world/main.h: -------------------------------------------------------------------------------- 1 | // 2 | // main.h 3 | // hello_world 4 | // 5 | // Created by Joshua Vaughan on 4/27/16. 6 | // Copyright © 2016 Joshua Vaughan. All rights reserved. 7 | // 8 | 9 | #ifndef main_h 10 | #define main_h 11 | 12 | #include 13 | 14 | #endif /* main_h */ 15 | -------------------------------------------------------------------------------- /Wrapping C with Python/Hello World/hello_world_wrapping.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | 3 | ############################################################################### 4 | # hello_world_wrapping.py 5 | # 6 | # Python code to wrap a very simple shared library 7 | # 8 | # NOTE: Any plotting is set up for output, not viewing on screen. 9 | # So, it will likely be ugly on screen. The saved PDFs should look 10 | # better. 11 | # 12 | # Created: 04/27/16 13 | # - Joshua Vaughan 14 | # - joshua.vaughan@louisiana.edu 15 | # - http://www.ucs.louisiana.edu/~jev9637 16 | # 17 | # Modified: 18 | # * 19 | # 20 | ############################################################################### 21 | 22 | # Import the ctypes module. Importing all for now. 23 | from ctypes import * 24 | 25 | # Load the libhello_world c code, built as a shared-library 26 | # Give it a name to make it callable 27 | hello = CDLL('libhello_world.dylib') 28 | 29 | # Call the int_multiple function from the libhello_world library 30 | result = hello.int_multiply(2, 3) 31 | 32 | print('The result is {}.'.format(result)) 33 | 34 | 35 | # Call the hello_world function from the libhello_world library 36 | hello.hello_world() -------------------------------------------------------------------------------- /Wrapping C with Python/Hello World/libhello_world.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/Wrapping C with Python/Hello World/libhello_world.dylib -------------------------------------------------------------------------------- /Wrapping C with Python/PID Controller/PID/PID.h: -------------------------------------------------------------------------------- 1 | /* ---------------------------------------------------------------------------- 2 | 3 | PID.h 4 | 5 | Header file for PID controller 6 | 7 | Created: 06/15/16 8 | - Joshua Vaughan 9 | - joshua.vaughan@louisiana.edu 10 | - http://www.ucs.louisiana.edu/~jev9637 11 | 12 | Modified: 13 | * 06/21/16 - JEV - joshua.vaughan@louisiana.edu 14 | - changed order of gain terms to PID 15 | 16 | ---------------------------------------------------------------------------- */ 17 | 18 | typedef struct { 19 | double Kp; // Proportional Gain 20 | double Ki; // Integral Gain 21 | double Kd; // Derivative Gain 22 | double lastMeasurement; // Measurement input remembered from last loop 23 | double integralTerm; // Running total for integral term 24 | double outMax; // Maximum value of output 25 | double outMin; // Minimum value of output 26 | int controlON; // 1 if controller is active, allows us to still keep track of controller even if not acting 27 | double sampleTime; // the sample time being used in the interrupt 28 | } PID; 29 | 30 | PID set_up_PID(double Kp, double Ki, double Kd, 31 | double outMax, double outMin, double sampleTime); 32 | double compute_PID(double measurement, double desired, PID *pid); 33 | void change_PID_limits(double min, double max, PID *pid); -------------------------------------------------------------------------------- /Wrapping C with Python/PID Controller/PID/PID.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Wrapping C with Python/PID Controller/PID/PID.xcodeproj/project.xcworkspace/xcuserdata/josh.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/Wrapping C with Python/PID Controller/PID/PID.xcodeproj/project.xcworkspace/xcuserdata/josh.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Wrapping C with Python/PID Controller/PID/PID.xcodeproj/xcuserdata/josh.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | PID.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 03F327811D18BED500DBDFE5 16 | 17 | primary 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Wrapping C with Python/PID Controller/libPID.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/Wrapping C with Python/PID Controller/libPID.dylib -------------------------------------------------------------------------------- /esp32/MicroPython/CRAWLAB base/esp32_MicroPy_main_boilerplate.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | 3 | ############################################################################### 4 | # esp8266_MicroPy_main_boilerplate.py 5 | # 6 | # base main.py boilerplate code for MicroPython running on the esp32 7 | # Copy relevant parts and/or file with desired settings into main.py on the esp32 8 | # 9 | # The main.py file will run immediately after boot.py 10 | # As you might expect, the main part of your code should be here 11 | # 12 | # Created: 07/23/17 13 | # - Joshua Vaughan 14 | # - joshua.vaughan@louisiana.edu 15 | # - http://www.ucs.louisiana.edu/~jev9637 16 | # 17 | # Modified: 18 | # * 19 | # 20 | ############################################################################### 21 | 22 | # just blink the LED every 1s to indicate we made it into the main.py file 23 | # The LED was initialized in boot.py 24 | while True: 25 | time.sleep(1) 26 | LED.value(not LED.value()) # Toggle the LED while trying to connect 27 | time.sleep(1) -------------------------------------------------------------------------------- /esp8266/MicroPython ESP8266/CRAWLAB base/esp8266_MicroPy_main_boilerplate.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | 3 | ############################################################################### 4 | # esp8266_MicroPy_main_boilerplate.py 5 | # 6 | # base main.py boilerplate code for MicroPython running on the esp8266 7 | # Copy relevant parts and/or file with desired settings into main.py on the esp8266 8 | # 9 | # The main.py file will run immediately after boot.py 10 | # As you might expect, the main part of your code should be here 11 | # 12 | # Created: 06/04/16 13 | # - Joshua Vaughan 14 | # - joshua.vaughan@louisiana.edu 15 | # - http://www.ucs.louisiana.edu/~jev9637 16 | # 17 | # Modified: 18 | # * 19 | # 20 | ############################################################################### 21 | 22 | # just blink the LED every 1s to indicate we made it into the main.py file 23 | while True: 24 | time.sleep(1) 25 | pin.value(not pin.value()) # Toggle the LED while trying to connect 26 | time.sleep(1) -------------------------------------------------------------------------------- /esp8266/MicroPython ESP8266/Default files/boot.py: -------------------------------------------------------------------------------- 1 | # This file is executed on every boot (including wake-boot from deepsleep) 2 | import webrepl 3 | webrepl.start() 4 | -------------------------------------------------------------------------------- /esp8266/MicroPython ESP8266/FeatherWing Servo Control - Basic/README.md: -------------------------------------------------------------------------------- 1 | The main script here is for basic hobby-style-servo control using an [Adafruit esp8266 Feather](https://www.adafruit.com/product/2821) with their [8-channel PWM/servo FeatherWing](https://www.adafruit.com/product/2928) 2 | 3 | 4 | The `pca9685.py` and `servo.py` files from [this repository](https://github.com/DocVaughan/micropython-adafruit-pca9685) must be copied to the esp8266. -------------------------------------------------------------------------------- /esp8266/MicroPython ESP8266/FeatherWing Servo Control - Hold One Angle/README.md: -------------------------------------------------------------------------------- 1 | The main script here is for basic hobby-style-servo control using an [Adafruit esp8266 Feather](https://www.adafruit.com/product/2821) with their [8-channel PWM/servo FeatherWing](https://www.adafruit.com/product/2928) 2 | 3 | 4 | The `pca9685.py` and `servo.py` files from [this repository](https://github.com/DocVaughan/micropython-adafruit-pca9685) must be copied to the esp8266. -------------------------------------------------------------------------------- /esp8266/MicroPython ESP8266/FeatherWing Servo Control - UDP/README.md: -------------------------------------------------------------------------------- 1 | The main script here is for basic hobby-style-servo control using an [Adafruit esp8266 Feather](https://www.adafruit.com/product/2821) with their [8-channel PWM/servo FeatherWing](https://www.adafruit.com/product/2928). The angle command for the servo is issued over UDP. 2 | 3 | The Wi-Fi SSID and password will have to be changes to meet your setup. 4 | 5 | The `pca9685.py` and `servo.py` files from [this repository](https://github.com/DocVaughan/micropython-adafruit-pca9685) must be copied to the esp8266. -------------------------------------------------------------------------------- /esp8266/esp8266 - Asynchronous MQTT/Libraries/ESPAsyncTCP-master.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/esp8266/esp8266 - Asynchronous MQTT/Libraries/ESPAsyncTCP-master.zip -------------------------------------------------------------------------------- /esp8266/esp8266 - Asynchronous MQTT/Libraries/async-mqtt-client-master.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/esp8266/esp8266 - Asynchronous MQTT/Libraries/async-mqtt-client-master.zip -------------------------------------------------------------------------------- /esp8266/esp8266 - Asynchronous MQTT/Libraries/marvinroger-async-mqtt-client- An Arduino for ESP8266 asynchronous MQTT client implementation.webloc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/esp8266/esp8266 - Asynchronous MQTT/Libraries/marvinroger-async-mqtt-client- An Arduino for ESP8266 asynchronous MQTT client implementation.webloc -------------------------------------------------------------------------------- /esp8266/esp8266_LEDblink/esp8266_LEDblink.ino: -------------------------------------------------------------------------------- 1 | 2 | /* ---------------------------------------------------------------------------- 3 | 4 | esp8266_LEDblink.ino 5 | 6 | Blinking the LED of an Adafruit Huzzah esp8266 7 | 8 | From: 9 | https://learn.adafruit.com/adafruit-huzzah-esp8266-breakout/using-arduino-ide 10 | 11 | Created: 01/27/16 12 | - Joshua Vaughan 13 | - joshua.vaughan@louisiana.edu 14 | - http://www.ucs.louisiana.edu/~jev9637 15 | 16 | Modified: 17 | * 18 | 19 | ---------------------------------------------------------------------------- */ 20 | 21 | #include 22 | 23 | void setup() { 24 | pinMode(0, OUTPUT); 25 | } 26 | 27 | 28 | void loop() { 29 | digitalWrite(0, HIGH); 30 | delay(500); 31 | digitalWrite(0, LOW); 32 | delay(500); 33 | } 34 | -------------------------------------------------------------------------------- /iOS/Joystick Test/Joystick Test.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /iOS/Joystick Test/Joystick Test.xcodeproj/project.xcworkspace/xcuserdata/josh.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/iOS/Joystick Test/Joystick Test.xcodeproj/project.xcworkspace/xcuserdata/josh.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /iOS/Joystick Test/Joystick Test.xcodeproj/xcuserdata/josh.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Joystick Test.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 03EBF7771CEA73CB008E1B57 16 | 17 | primary 18 | 19 | 20 | 03EBF78B1CEA73CB008E1B57 21 | 22 | primary 23 | 24 | 25 | 03EBF7961CEA73CB008E1B57 26 | 27 | primary 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /iOS/Joystick Test/Joystick Test/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "29x29", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "40x40", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "40x40", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "60x60", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "60x60", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "ipad", 35 | "size" : "29x29", 36 | "scale" : "1x" 37 | }, 38 | { 39 | "idiom" : "ipad", 40 | "size" : "29x29", 41 | "scale" : "2x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "40x40", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "40x40", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "76x76", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "76x76", 61 | "scale" : "2x" 62 | } 63 | ], 64 | "info" : { 65 | "version" : 1, 66 | "author" : "xcode" 67 | } 68 | } -------------------------------------------------------------------------------- /iOS/Joystick Test/Joystick Test/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // Joystick Test 4 | // 5 | // Created by Joshua Vaughan on 5/16/16. 6 | // Copyright © 2016 Joshua Vaughan. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class ViewController: UIViewController { 12 | 13 | override func viewDidLoad() { 14 | super.viewDidLoad() 15 | // Do any additional setup after loading the view, typically from a nib. 16 | } 17 | 18 | override func didReceiveMemoryWarning() { 19 | super.didReceiveMemoryWarning() 20 | // Dispose of any resources that can be recreated. 21 | } 22 | 23 | 24 | } 25 | 26 | -------------------------------------------------------------------------------- /iOS/Joystick Test/Joystick TestTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /iOS/Joystick Test/Joystick TestTests/Joystick_TestTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Joystick_TestTests.swift 3 | // Joystick TestTests 4 | // 5 | // Created by Joshua Vaughan on 5/16/16. 6 | // Copyright © 2016 Joshua Vaughan. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | @testable import Joystick_Test 11 | 12 | class Joystick_TestTests: XCTestCase { 13 | 14 | override func setUp() { 15 | super.setUp() 16 | // Put setup code here. This method is called before the invocation of each test method in the class. 17 | } 18 | 19 | override func tearDown() { 20 | // Put teardown code here. This method is called after the invocation of each test method in the class. 21 | super.tearDown() 22 | } 23 | 24 | func testExample() { 25 | // This is an example of a functional test case. 26 | // Use XCTAssert and related functions to verify your tests produce the correct results. 27 | } 28 | 29 | func testPerformanceExample() { 30 | // This is an example of a performance test case. 31 | self.measureBlock { 32 | // Put the code you want to measure the time of here. 33 | } 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /iOS/Joystick Test/Joystick TestUITests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /iOS/Joystick Test/Joystick TestUITests/Joystick_TestUITests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Joystick_TestUITests.swift 3 | // Joystick TestUITests 4 | // 5 | // Created by Joshua Vaughan on 5/16/16. 6 | // Copyright © 2016 Joshua Vaughan. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | 11 | class Joystick_TestUITests: XCTestCase { 12 | 13 | override func setUp() { 14 | super.setUp() 15 | 16 | // Put setup code here. This method is called before the invocation of each test method in the class. 17 | 18 | // In UI tests it is usually best to stop immediately when a failure occurs. 19 | continueAfterFailure = false 20 | // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. 21 | XCUIApplication().launch() 22 | 23 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. 24 | } 25 | 26 | override func tearDown() { 27 | // Put teardown code here. This method is called after the invocation of each test method in the class. 28 | super.tearDown() 29 | } 30 | 31 | func testExample() { 32 | // Use recording to get started writing UI tests. 33 | // Use XCTAssert and related functions to verify your tests produce the correct results. 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /iOS/JoystickSK/JoystickSK.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /iOS/JoystickSK/JoystickSK.xcodeproj/project.xcworkspace/xcuserdata/josh.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/iOS/JoystickSK/JoystickSK.xcodeproj/project.xcworkspace/xcuserdata/josh.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /iOS/JoystickSK/JoystickSK.xcodeproj/xcuserdata/josh.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | JoystickSK.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 03EBF7B31CEA7669008E1B57 16 | 17 | primary 18 | 19 | 20 | 03EBF7C91CEA7669008E1B57 21 | 22 | primary 23 | 24 | 25 | 03EBF7D41CEA7669008E1B57 26 | 27 | primary 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /iOS/JoystickSK/JoystickSK/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "29x29", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "40x40", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "40x40", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "60x60", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "60x60", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "ipad", 35 | "size" : "29x29", 36 | "scale" : "1x" 37 | }, 38 | { 39 | "idiom" : "ipad", 40 | "size" : "29x29", 41 | "scale" : "2x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "40x40", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "40x40", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "76x76", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "76x76", 61 | "scale" : "2x" 62 | } 63 | ], 64 | "info" : { 65 | "version" : 1, 66 | "author" : "xcode" 67 | } 68 | } -------------------------------------------------------------------------------- /iOS/JoystickSK/JoystickSK/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /iOS/JoystickSK/JoystickSK/art.scnassets/ship.scn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/iOS/JoystickSK/JoystickSK/art.scnassets/ship.scn -------------------------------------------------------------------------------- /iOS/JoystickSK/JoystickSK/art.scnassets/texture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/iOS/JoystickSK/JoystickSK/art.scnassets/texture.png -------------------------------------------------------------------------------- /iOS/JoystickSK/JoystickSKTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /iOS/JoystickSK/JoystickSKTests/JoystickSKTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // JoystickSKTests.swift 3 | // JoystickSKTests 4 | // 5 | // Created by Joshua Vaughan on 5/16/16. 6 | // Copyright © 2016 Joshua Vaughan. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | @testable import JoystickSK 11 | 12 | class JoystickSKTests: XCTestCase { 13 | 14 | override func setUp() { 15 | super.setUp() 16 | // Put setup code here. This method is called before the invocation of each test method in the class. 17 | } 18 | 19 | override func tearDown() { 20 | // Put teardown code here. This method is called after the invocation of each test method in the class. 21 | super.tearDown() 22 | } 23 | 24 | func testExample() { 25 | // This is an example of a functional test case. 26 | // Use XCTAssert and related functions to verify your tests produce the correct results. 27 | } 28 | 29 | func testPerformanceExample() { 30 | // This is an example of a performance test case. 31 | self.measureBlock { 32 | // Put the code you want to measure the time of here. 33 | } 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /iOS/JoystickSK/JoystickSKUITests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /iOS/JoystickSK/JoystickSKUITests/JoystickSKUITests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // JoystickSKUITests.swift 3 | // JoystickSKUITests 4 | // 5 | // Created by Joshua Vaughan on 5/16/16. 6 | // Copyright © 2016 Joshua Vaughan. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | 11 | class JoystickSKUITests: XCTestCase { 12 | 13 | override func setUp() { 14 | super.setUp() 15 | 16 | // Put setup code here. This method is called before the invocation of each test method in the class. 17 | 18 | // In UI tests it is usually best to stop immediately when a failure occurs. 19 | continueAfterFailure = false 20 | // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. 21 | XCUIApplication().launch() 22 | 23 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. 24 | } 25 | 26 | override func tearDown() { 27 | // Put teardown code here. This method is called after the invocation of each test method in the class. 28 | super.tearDown() 29 | } 30 | 31 | func testExample() { 32 | // Use recording to get started writing UI tests. 33 | // Use XCTAssert and related functions to verify your tests produce the correct results. 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /rosbridge/rosbridge_WebRemote/apple-touch-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/rosbridge/rosbridge_WebRemote/apple-touch-icon-precomposed.png -------------------------------------------------------------------------------- /rosbridge/rosbridge_WebRemote/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/rosbridge/rosbridge_WebRemote/favicon.ico -------------------------------------------------------------------------------- /rosbridge/rosbridge_WebRemote/img/fleur_de_lis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DocVaughan/CRAWLAB-Code-Snippets/02b17e79b4455ad3c37099df130184c65a82554f/rosbridge/rosbridge_WebRemote/img/fleur_de_lis.png -------------------------------------------------------------------------------- /rosbridge/rosbridge_WebRemote/js/vendor/jquery.ui.touch-punch.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery UI Touch Punch 0.2.2 3 | * 4 | * Copyright 2011, Dave Furfero 5 | * Dual licensed under the MIT or GPL Version 2 licenses. 6 | * 7 | * Depends: 8 | * jquery.ui.widget.js 9 | * jquery.ui.mouse.js 10 | */ 11 | (function(b){b.support.touch="ontouchend" in document;if(!b.support.touch){return;}var c=b.ui.mouse.prototype,e=c._mouseInit,a;function d(g,h){if(g.originalEvent.touches.length>1){return;}g.preventDefault();var i=g.originalEvent.changedTouches[0],f=document.createEvent("MouseEvents");f.initMouseEvent(h,true,true,window,1,i.screenX,i.screenY,i.clientX,i.clientY,false,false,false,false,0,null);g.target.dispatchEvent(f);}c._touchStart=function(g){var f=this;if(a||!f._mouseCapture(g.originalEvent.changedTouches[0])){return;}a=true;f._touchMoved=false;d(g,"mouseover");d(g,"mousemove");d(g,"mousedown");};c._touchMove=function(f){if(!a){return;}this._touchMoved=true;d(f,"mousemove");};c._touchEnd=function(f){if(!a){return;}d(f,"mouseup");d(f,"mouseout");if(!this._touchMoved){d(f,"click");}a=false;};c._mouseInit=function(){var f=this;f.element.bind("touchstart",b.proxy(f,"_touchStart")).bind("touchmove",b.proxy(f,"_touchMove")).bind("touchend",b.proxy(f,"_touchEnd"));e.call(f);};})(jQuery); -------------------------------------------------------------------------------- /styling/README.md: -------------------------------------------------------------------------------- 1 | CRAWLAB IPython Notebook Styling 2 | ----- 3 | Some CSS tweaks to make the IPython Notebook a little bit prettier and easier to read. 4 | 5 | 6 | #### Licenses 7 | Code is licensed under a 3-clause BSD-style license. See the licenses/LICENSE.md file. 8 | 9 | Other content is provided under a [Creative Commons Attribution-NonCommercial 4.0 International License](http://creativecommons.org/licenses/by-nc/4.0/), CC-BY-NC 4.0. 10 | 11 | 12 | 13 | --------------------------------------------------------------------------------