car_control.sh 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. #!/bin/sh
  2. echo "=== CAR CONTROL over COMMAND LINE! ==="
  3. echo "CAR: car_control.sh"
  4. echo "CAR: car_control.sh constant"
  5. echo "CAR: car_control.sh constant low_speed"
  6. echo "CAR: car_control.sh low_speed"
  7. echo "CAR: w: forward "
  8. echo "CAR: d: reverse"
  9. echo "CAR: a: turn wheel left"
  10. echo "CAR: d: turn wheel right"
  11. echo "CAR: q: forward left"
  12. echo "CAR: e: forward right"
  13. echo "CAR: z: reverse left"
  14. echo "CAR: c: reverse right"
  15. echo "CAR: x: all stop"
  16. echo "CAR: h: headlight on/off"
  17. echo "CAR: j: irled on/off"
  18. echo -e ""
  19. echo "CAR: 1: quit ASAP!"
  20. echo -e ""
  21. echo "Ready!"
  22. headlight_state=false
  23. irled_state=false
  24. function headlight {
  25. if [ "$headlight_state" = false ]; then
  26. echo -ne "\xaa\x55\x43\x04\x1e\x01\x01\x65" > /dev/ttyUSB0
  27. headlight_state=true
  28. else
  29. echo -ne "\xaa\x55\x43\x04\x1e\x02\x01\x66" > /dev/ttyUSB0
  30. headlight_state=false
  31. fi
  32. }
  33. function irled {
  34. if [ "$irled_state" = false ]; then
  35. cmd irled on
  36. irled_state=true
  37. else
  38. cmd irled off
  39. irled_state=false
  40. fi
  41. }
  42. trap control_c SIGINT
  43. control_c()
  44. {
  45. echo -ne "\xaa\x55\x43\x06\x29\x80\x80\x00\x02\x71" > /dev/ttyUSB0
  46. echo "control-c KILL"
  47. pkill -9 -f car_control.sh
  48. }
  49. #idle background loop
  50. while true; do
  51. echo -ne "\xaa\x55\x43\x06\x29\x80\x80\x00\x02\x71" > /dev/ttyUSB0
  52. #fw sends 0.2
  53. sleep 0.2
  54. done &
  55. while true; do
  56. if [ "$1" == "constant" ]; then
  57. read -s -n1 -t 0.05 input
  58. else
  59. read -rsn1 input
  60. fi
  61. if [ "$input" = "w" ]; then
  62. #forward
  63. if [ "$1" == "low_speed" ] || [ "$2" == "low_speed" ]; then
  64. echo -ne "\xaa\x55\x43\x06\x29\x80\xca\x00\x02\xbb" > /dev/ttyUSB0
  65. else
  66. echo -ne "\xaa\x55\x43\x06\x29\x80\xe3\x00\x02\xd4" > /dev/ttyUSB0
  67. fi
  68. elif [ "$input" = "s" ]; then
  69. #reverse
  70. if [ "$1" == "low_speed" ] || [ "$2" == "low_speed" ]; then
  71. echo -ne "\xaa\x55\x43\x06\x29\x80\x3b\x00\x02\x2c" > /dev/ttyUSB0
  72. else
  73. echo -ne "\xaa\x55\x43\x06\x29\x80\x36\x00\x02\x27" > /dev/ttyUSB0
  74. fi
  75. elif [ "$input" = "a" ]; then
  76. #left
  77. echo -ne "\xaa\x55\x43\x06\x29\x76\x81\x00\x02\x68" > /dev/ttyUSB0
  78. elif [ "$input" = "d" ]; then
  79. #right
  80. echo -ne "\xaa\x55\x43\x06\x29\x8a\x81\x00\x02\x7c" > /dev/ttyUSB0
  81. elif [ "$input" = "q" ]; then
  82. #forward left
  83. if [ "$1" == "low_speed" ] || [ "$2" == "low_speed" ]; then
  84. echo -ne "\xaa\x55\x43\x06\x29\x76\xca\x00\x02\xb1" > /dev/ttyUSB0
  85. else
  86. echo -ne "\xaa\x55\x43\x06\x29\x76\xe3\x00\x02\xca" > /dev/ttyUSB0
  87. fi
  88. elif [ "$input" = "e" ]; then
  89. #forward right
  90. if [ "$1" == "low_speed" ] || [ "$2" == "low_speed" ]; then
  91. echo -ne "\xaa\x55\x43\x06\x29\x8a\xca\x00\x02\xc5" > /dev/ttyUSB0
  92. else
  93. echo -ne "\xaa\x55\x43\x06\x29\x8a\xe3\x00\x02\xde" > /dev/ttyUSB0
  94. fi
  95. elif [ "$input" = "z" ]; then
  96. #reverse left
  97. if [ "$1" == "low_speed" ] || [ "$2" == "low_speed" ]; then
  98. echo -ne "\xaa\x55\x43\x06\x29\x76\x3b\x00\x02\x22" > /dev/ttyUSB0
  99. else
  100. echo -ne "\xaa\x55\x43\x06\x29\x76\x36\x00\x02\x1d" > /dev/ttyUSB0
  101. fi
  102. elif [ "$input" = "c" ]; then
  103. #reverse right
  104. if [ "$1" == "low_speed" ] || [ "$2" == "low_speed" ]; then
  105. echo -ne "\xaa\x55\x43\x06\x29\x8a\x3b\x00\x02\x36" > /dev/ttyUSB0
  106. else
  107. echo -ne "\xaa\x55\x43\x06\x29\x8a\x36\x00\x02\x31" > /dev/ttyUSB0
  108. fi
  109. elif [ "$input" = "c" ]; then
  110. echo -ne "\xaa\x55\x43\x06\x29\x80\x80\x00\x02\x71" > /dev/ttyUSB0
  111. elif [ "$input" = "h" ]; then
  112. headlight
  113. elif [ "$input" = "j" ]; then
  114. irled
  115. elif [ "$input" = "1" ]; then
  116. #exit
  117. echo -ne "\xaa\x55\x43\x06\x29\x80\x80\x00\x02\x71" > /dev/ttyUSB0
  118. pkill -9 -f car_control.sh
  119. break
  120. fi
  121. done