demo project
Dependencies: AX-12A Dynamixel mbed iothub_client EthernetInterface NTPClient ConfigFile SDFileSystem iothub_amqp_transport mbed-rtos proton-c-mbed wolfSSL
Sequences.cpp
- Committer:
- henryrawas
- Date:
- 2016-02-04
- Revision:
- 33:8b9dcbf6d8ec
- Parent:
- 24:f6aa0e64c5e1
File content as of revision 33:8b9dcbf6d8ec:
// Copyright (c) Microsoft. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. #include "mbed.h" #include <vector> #include <ActionBuf.h> const float UpPos = 180.0f; const float RightPos = 90.0f; const float NoMove = -1.0f; vector<const ActionSequence*> UpDownSeq; vector<const ActionSequence*> UpTwistSeq; vector<const ActionSequence*> StartSeq; vector<const ActionSequence*> WaveSeq; vector<const ActionSequence*> TapsSeq; vector<const ActionSequence*> BigWaveSeq; void MakeSequences(int partSize) { float upPositions[] = { UpPos, UpPos, UpPos, UpPos, UpPos }; float downPositions[] = { RightPos, 120.0f, 240.0f, 150.0f, 240.0f }; float homePositions[] = { RightPos, 225.0f, 270.0f, 135.0f, UpPos }; float waveUpPositions[] = { NoMove, NoMove, NoMove, NoMove, 135.0f }; float waveDownPositions[] = { NoMove, NoMove, NoMove, NoMove, 225.0f }; float waveMiddlePositions[] = { NoMove, NoMove, NoMove, NoMove, 180.0f }; float bigwaveUpPositions[] = { NoMove, 135.0f, NoMove, NoMove, NoMove }; float bigwaveDownPositions[] = { NoMove, 225.0f, NoMove, NoMove, NoMove }; float tapStartPositions[] = { RightPos, 180.0f, 270.0f, 180.0f, 180.0f }; float tap1Positions[] = { 60.0f, NoMove, NoMove, NoMove, NoMove }; float tap3Positions[] = { 78.0f, NoMove, NoMove, NoMove, NoMove }; float tap7Positions[] = { 112.0f, NoMove, NoMove, NoMove, NoMove }; // define actions ActionSequence* moveStart = new ActionSequence(SA_SetGoal, NUMJOINTS, homePositions, 1500); ActionSequence* moveUp = new ActionSequence(SA_SetGoal, partSize, upPositions, 1500); ActionSequence* moveDown = new ActionSequence(SA_SetGoal, partSize, downPositions, 1000); ActionSequence* waveUp = new ActionSequence(SA_SetGoal, partSize, waveUpPositions, 1000); ActionSequence* waveDown = new ActionSequence(SA_SetGoal, partSize, waveDownPositions, 1000); ActionSequence* bigwaveUp = new ActionSequence(SA_SetGoal, partSize, bigwaveUpPositions, 1000); ActionSequence* bigwaveDown = new ActionSequence(SA_SetGoal, partSize, bigwaveDownPositions, 1000); ActionSequence* tapsStart = new ActionSequence(SA_SetGoal, partSize, tapStartPositions, 1000); ActionSequence* taps1 = new ActionSequence(SA_SetGoal, partSize, tap1Positions, 300); ActionSequence* taps3 = new ActionSequence(SA_SetGoal, partSize, tap3Positions, 300); ActionSequence* taps7 = new ActionSequence(SA_SetGoal, partSize, tap7Positions, 300); ActionSequence* tapDown = new ActionSequence(SA_SetGoal, partSize, waveDownPositions, 500); ActionSequence* tapUp = new ActionSequence(SA_SetGoal, partSize, waveMiddlePositions, 500); ActionSequence* loop10 = new ActionSequence(SA_LoopBegin, 0 , NULL, 10); ActionSequence* loop20 = new ActionSequence(SA_LoopBegin, 0 , NULL, 20); ActionSequence* loop1000 = new ActionSequence(SA_LoopBegin, 0 , NULL, 1000); ActionSequence* loop2 = new ActionSequence(SA_LoopBegin, 0 , NULL, 2); ActionSequence* loopEnd = new ActionSequence(SA_LoopEnd); ActionSequence* pause100ms = new ActionSequence(SA_Delay, 0 , NULL, 100); ActionSequence* pause200ms = new ActionSequence(SA_Delay, 0 , NULL, 200); ActionSequence* pause500ms = new ActionSequence(SA_Delay, 0 , NULL, 500); ActionSequence* pause1 = new ActionSequence(SA_Delay, 0 , NULL, 1000); ActionSequence* pause2 = new ActionSequence(SA_Delay, 0 , NULL, 2000); // add actions into StartSeq StartSeq.clear(); StartSeq.push_back(moveUp); // add actions into WaveSeq WaveSeq.clear(); WaveSeq.push_back(moveStart); WaveSeq.push_back(loop2); WaveSeq.push_back(waveUp); WaveSeq.push_back(waveDown); WaveSeq.push_back(loopEnd); WaveSeq.push_back(moveUp); // add actions into UpDownSeq UpDownSeq.clear(); UpDownSeq.push_back(loop1000); UpDownSeq.push_back(moveDown); UpDownSeq.push_back(pause1); UpDownSeq.push_back(moveUp); UpDownSeq.push_back(pause1); UpDownSeq.push_back(loopEnd); // add actions into RightStepsSeq // move to vertical, then move each part one at a time, then return to home UpTwistSeq.clear(); UpTwistSeq.push_back(moveUp); for (int partIx = 0; partIx < partSize; partIx++) { float pos[NUMJOINTS]; for (int partIy = 0; partIy < partSize; partIy++) { if (partIx == partIy) pos[partIy] = RightPos; else pos[partIy] = UpPos; } ActionSequence* seq = new ActionSequence(SA_SetGoal, partSize, pos, 1000); UpTwistSeq.push_back(seq); UpTwistSeq.push_back(pause1); } UpTwistSeq.push_back(moveUp); // add actions to tap sequence TapsSeq.clear(); TapsSeq.push_back(tapsStart); TapsSeq.push_back(loop10); TapsSeq.push_back(pause1); TapsSeq.push_back(taps1); TapsSeq.push_back(tapDown); TapsSeq.push_back(tapUp); TapsSeq.push_back(pause100ms); TapsSeq.push_back(taps3); TapsSeq.push_back(tapDown); TapsSeq.push_back(tapUp); TapsSeq.push_back(pause200ms); TapsSeq.push_back(taps7); TapsSeq.push_back(tapDown); TapsSeq.push_back(tapUp); TapsSeq.push_back(loopEnd); TapsSeq.push_back(moveUp); // add actions into BigWaveSeq BigWaveSeq.clear(); BigWaveSeq.push_back(moveUp); BigWaveSeq.push_back(loop20); BigWaveSeq.push_back(bigwaveUp); BigWaveSeq.push_back(pause100ms); BigWaveSeq.push_back(bigwaveDown); BigWaveSeq.push_back(pause100ms); BigWaveSeq.push_back(loopEnd); }