2015年10月17日土曜日

Raspberry Pi 2 4足歩行ロボット用「簡易ポーズエディタ」

前回「Raspberry Pi 2 やっぱりシェルスクリプトでやる」で作ったServoBlaster用シェルスクリプトの発展形。


 4足歩行ロボットの脚に対応したスライダーを操作してポーズを決め、
その時点のコマンドを任意のファイルに書き出すgtkdialog使用のシェルスクリプト。

  1. #!/bin/bash
  2.  
  3. export test00='
  4. echo $USER
  5. '
  6. export SERVO0='50'
  7. export SERVO1='50'
  8. export SERVO2='50'
  9. export SERVO3='50'
  10. export SERVO4='50'
  11. export SERVO5='50'
  12. export SERVO6='50'
  13. export SERVO7='50'
  14.  
  15. export MAIN_DIALOG='
  16. <window>
  17. <vbox>
  18. <hbox>
  19. <vbox>
  20. <hbox>
  21. <frame サーボ5(%)>
  22. <vscale height-request="200" range-min="10" range-max="90" range-step="1">
  23. <default>50</default>
  24. <variable>SERVO5</variable>
  25. <action>bash -c "echo 5="$SERVO5"% > /dev/servoblaster"</action>
  26. <action type="refresh">TEXT5</action>
  27. </vscale>
  28. </frame>
  29. <frame サーボ4(%)>
  30. <vscale height-request="200" range-min="10" range-max="90" range-step="1">
  31. <default>50</default>
  32. <variable>SERVO4</variable>
  33. <action>bash -c "echo 4="$SERVO4"% > /dev/servoblaster"</action>
  34. <action type="refresh">TEXT4</action>
  35. </vscale>
  36. </frame>
  37. </hbox>
  38. <hbox>
  39. <frame サーボ7(%)>
  40. <vscale height-request="200" range-min="10" range-max="90" range-step="1" inverted="true">
  41. <default>50</default>
  42. <variable>SERVO7</variable>
  43. <action>bash -c "echo 7="$SERVO7"% > /dev/servoblaster"</action>
  44. <action type="refresh">TEXT7</action>
  45. </vscale>
  46. </frame>
  47. <frame サーボ6(%)>
  48. <vscale height-request="200" range-min="10" range-max="90" range-step="1">
  49. <default>50</default>
  50. <variable>SERVO6</variable>
  51. <action>bash -c "echo 6="$SERVO6"% > /dev/servoblaster"</action>
  52. <action type="refresh">TEXT6</action>
  53. </vscale>
  54. </frame>
  55. </hbox>
  56. </vbox>
  57.  
  58. <vbox>
  59. <hbox>
  60. <button>
  61. <label>ボタン 1</label>
  62. <action>echo $LANG</action>
  63. </button>
  64. <vbox>
  65. <button>
  66. <label>前進</label>
  67. <action>bash -c "$test00"</action>
  68. </button>
  69. <button>
  70. <label>後退</label>
  71. </button>
  72. </vbox>
  73. <button>
  74. <label>ボタン4</label>
  75. </button>
  76. </hbox>
  77. <vbox>
  78. <frame>
  79. <text>
  80. <variable>TEXT0</variable>
  81. <input>echo "echo 0="$SERVO0"% > /dev/servoblaster"</input>
  82. </text>
  83. <text>
  84. <variable>TEXT1</variable>
  85. <input>echo "echo 1="$SERVO1"% > /dev/servoblaster"</input>
  86. </text>
  87. <text>
  88. <variable>TEXT2</variable>
  89. <input>echo "echo 2="$SERVO2"% > /dev/servoblaster"</input>
  90. </text>
  91. <text>
  92. <variable>TEXT3</variable>
  93. <input>echo "echo 3="$SERVO3"% > /dev/servoblaster"</input>
  94. </text>
  95. <text>
  96. <variable>TEXT4</variable>
  97. <input>echo "echo 4="$SERVO4"% > /dev/servoblaster"</input>
  98. </text>
  99. <text>
  100. <variable>TEXT5</variable>
  101. <input>echo "echo 5="$SERVO5"% > /dev/servoblaster"</input>
  102. </text>
  103. <text>
  104. <variable>TEXT6</variable>
  105. <input>echo "echo 6="$SERVO6"% > /dev/servoblaster"</input>
  106. </text>
  107. <text>
  108. <variable>TEXT7</variable>
  109. <input>echo "echo 7="$SERVO7"% > /dev/servoblaster"</input>
  110. </text>
  111. </frame>
  112. </vbox>
  113. <entry>
  114. <variable>FILE0</variable>
  115. <default>"./temp.txt"</default>
  116. </entry>
  117. <button>
  118. <label>Write</label>
  119. <action>echo "echo 0="$SERVO0"% > /dev/servoblaster" > $FILE0</action>
  120. <action>echo "echo 1="$SERVO1"% > /dev/servoblaster" >> $FILE0</action>
  121. <action>echo "echo 2="$SERVO2"% > /dev/servoblaster" >> $FILE0</action>
  122. <action>echo "echo 3="$SERVO3"% > /dev/servoblaster" >> $FILE0</action>
  123. <action>echo "echo 4="$SERVO4"% > /dev/servoblaster" >> $FILE0</action>
  124. <action>echo "echo 5="$SERVO5"% > /dev/servoblaster" >> $FILE0</action>
  125. <action>echo "echo 6="$SERVO6"% > /dev/servoblaster" >> $FILE0</action>
  126. <action>echo "echo 7="$SERVO7"% > /dev/servoblaster" >> $FILE0</action>
  127. </button>
  128. </vbox>
  129.  
  130. <vbox>
  131. <hbox>
  132. <frame サーボ0(%)>
  133. <vscale height-request="200" range-min="10" range-max="90" range-step="1" inverted="true">
  134. <default>50</default>
  135. <variable>SERVO0</variable>
  136. <action>bash -c "echo 0="$SERVO0"% > /dev/servoblaster"</action>
  137. <action type="refresh">TEXT0</action>
  138. </vscale>
  139. </frame>
  140. <frame サーボ1(%)>
  141. <vscale height-request="200" range-min="10" range-max="90" range-step="1" inverted="true">
  142. <default>50</default>
  143. <variable>SERVO1</variable>
  144. <action>bash -c "echo 1="$SERVO1"% > /dev/servoblaster"</action>
  145. <action type="refresh">TEXT1</action>
  146. </vscale>
  147. </frame>
  148. </hbox>
  149. <hbox>
  150. <frame サーボ2(%)>
  151. <vscale height-request="200" range-min="10" range-max="90" range-step="1" inverted="true">
  152. <default>50</default>
  153. <variable>SERVO2</variable>
  154. <action>bash -c "echo 2="$SERVO2"% > /dev/servoblaster"</action>
  155. <action type="refresh">TEXT2</action>
  156. </vscale>
  157. </frame>
  158. <frame サーボ3(%)>
  159. <vscale height-request="200" range-min="10" range-max="90" range-step="1">
  160. <default>50</default>
  161. <variable>SERVO3</variable>
  162. <action>bash -c "echo 3="$SERVO3"% > /dev/servoblaster"</action>
  163. <action type="refresh">TEXT3</action>
  164. </vscale>
  165. </frame>
  166. </hbox>
  167. </vbox>
  168. </hbox>
  169. </vbox>
  170. </window>
  171. '
  172.  
  173. gtkdialog -p MAIN_DIALOG -c

というわけで、中央上部のボタンは前回同様飾り。
 使い道の無かったシェルスクリプトに、多少は意味を持たせてみた。

0 件のコメント :

コメントを投稿