-
Notifications
You must be signed in to change notification settings - Fork 9
API_Reference
respike_etrobo.pyを使った場合、ポートのマッピングはEV3に合わせて以下のようになります。 SPIKEで実際に使用しているポートを指定するわけではないので注意して下さい。ポートのマッピングは固定です。
| センサ/モータ | 指定するポート |
|---|---|
| アームモータ | PORT_A |
| 右モータ | PORT_B |
| 左モータ | PORT_C |
| タッチセンサ | PORT_1 |
| カラーセンサ | PORT_2 |
| 超音波センサ | PORT_3 |
| ジャイロセンサ | PORT_4 |
(注)SPIKEではジャイロセンサは本体にありますが、EV3RTのAPIを使う場合にはPORT_4を使用して下さい。
2022/3/27 時点でのRasPikeにおけるEV3RTのAPIサポートは以下のようになっています。
- ○:機能を提供している
- △:機能は提供しているが、制限があります。
- ▲:機能は提供していませんが、APIとしてエラーにならないようにしています(ダミー)
- X:使用できません
| 機能 | サブ機能 | 対応状況 | 備考 |
|---|---|---|---|
| EV3本体機能 | バッテリ | ○ | SPIKEから取得したバッテリー情報が取れます。1secに1回更新されます |
| 本体ボタン | △ | SPIKE本体ボタンクリックに対応しています。ただし、センター・右・左ボタンのみの対応です | |
| LEDライト | ▲ | 呼んでも機能せず、ただE_OKを返します。 | |
| スピーカー | ▲ | 呼んでも機能せず、ただE_OKを返します。 | |
| ファイルシステム | X | 通常のLinuxファイルシステムに対応していますが、EV3RTのファイルシステムは提供できていません。将来的に対応予定(4月中) | |
| LCD | ▲ | 呼んでも機能せず、ただE_OKを返します。 | |
| シリアル | BT | X | 将来的に対応予定(4月中) |
| モーター | - | ○ * | ev3_motor_rotate()は機能しません(E_OKは返る)。ev3_motor_steer()の挙動も異なるため、使用は推奨されません。 |
| センサ | 超音波センサ | ○ | |
| タッチセンサ | △ | デフォルトでは本体の「通信」ボタンが対応しています(将来的に変更可能性あり) | |
| ジャイロセンサ | ○ | HacksPiの旋回方向に対してのみ機能します | |
| カラーセンサ | △ | reflectとget_rgb_rawのみ対応しています(colorは値が異なる) | |
| Clock | - | ○ | Clockクラスに関する説明を参照してください 。 |
SPIKEのAPIで取得された値を返します
| 関数 | 対応状況 | 備考 |
|---|---|---|
| ev3_battery_current_mA() | ○ | - |
| ev3_battery_voltage_mV() | ○ | - |
SPIKEのボタンに対応します。SPIKEの使用上LEFT_BUTTON、RIGHT_BUTTON、ENTER_BUTTON(センター)、のみ対応します。
| 関数 | 対応状況 | 備考 |
|---|---|---|
| ev3_button_is_pressed() | ○ | - |
| ev3_button_set_on_clicked() | ○ | - |
APIとしては存在しますが、機能的には未実装です。常にE_OKを返します。
| 関数 | 対応状況 | 備考 |
|---|---|---|
| ev3_font_get_size() | ▲ | - |
| ev3_image_free() | ▲ | - |
| ev3_image_load() | ▲ | - |
| ev3_lcd_draw_image() | ▲ | - |
| ev3_lcd_draw_line() | ▲ | - |
| ev3_lcd_draw_string() | ▲ | - |
| ev3_lcd_fill_rect() | ▲ | - |
| ev3_lcd_set_font() | ▲ | - |
APIとしては存在しますが、機能的には未実装です。常にE_OKを返します。
| 関数 | 対応状況 | 備考 |
|---|---|---|
| ev3_led_set_color() | ▲ | - |
APIとしては存在しますが、機能的には未実装です。常にE_OKを返します。
| 関数 | 対応状況 | 備考 |
|---|---|---|
| ev3_speaker_play_file() | ▲ | - |
| ev3_speaker_play_tone() | ▲ | - |
| ev3_speaker_set_volume() | ▲ | - |
| ev3_speaker_stop() | ▲ | - |
EV3のファイルシステムはSDカードへの書き込みを提供しています。 RasPike環境ではまだサポートできていません(今後対応予定)
| 関数 | 対応状況 | 備考 |
|---|---|---|
| ev3_bluetooth_is_connected() | ▲ | 常にtrueを返します。 |
| ev3_memfile_load() | X | - |
| ev3_memfile_free() | X | - |
| ev3_sdcard_opendir() | X | - |
| ev3_sdcard_readdir() | X | - |
| ev3_sdcard_closedir() | X | - |
| ev3_serial_open_file() | X | Bluetoothの章を参照してください。 |
| ev3_spp_master_connect() | X | 対応していません。 |
| ev3_spp_master_is_connected() | X | 対応していません。 |
| ev3_spp_master_reset() | X | 対応していません。 |
libcで提供しているopen,read,write,close、scanf,およびfopen,fread,fwrite,fclose,fprintf,fscanfなどは対応しています。
Bluetoothについては、今後サポート予定です。 RaspiとPCでの通信を可能にする予定です。
注釈のないものは対応しています。
| 関数 | 対応状況 | 備考 |
|---|---|---|
| ev3_motor_config() | ○ | - |
| ev3_motor_get_counts() | ○ | - |
| ev3_motor_get_power() | ○ | - |
| ev3_motor_get_type() | ○ | ev3_motor_config()で設定したものが取得できます。 |
| ev3_motor_reset_counts() | ○ | - |
| ev3_motor_rotate() | × | 対応していません。使用しないでください。 |
| ev3_motor_set_power() | ○ | - |
| ev3_motor_steer() | ▲ | 対応はしていますが、実機との実現方法が異なるのと、細かい制御ができないため、使用しない方が良いでしょう。 |
| ev3_motor_stop() | ○ | - |
| クラス | 操作 | 対応状況 | 備考 |
|---|---|---|---|
| Motor | Motor() | ○ | - |
| Motor | ~Motor() | ○ | - |
| Motor | getCount() | ○ | - |
| Motor | getPWM() | ○ | - |
| Motor | getPort() | ○ | Motor()で設定したものが取得できます。 |
| Motor | getBrake() | ○ | Motor()で設定したものが取得できます。 |
| Motor | reset() | ○ | - |
| Motor | setPWM() | ○ | - |
| Steering | Steering() | △ | ev3_motor_steer()と同様です。 |
| Steering | setPower() | △ | ev3_motor_steer()と同様です。 |
| Motor | stop() | ○ | - |
| Motor | setBrake() | ○ | - |
使用する前に設定を行う必要があります(実機と同じ)
センサの設定には対応しています。
| 関数 | 対応状況 | 備考 |
|---|---|---|
| ev3_sensor_config() | ○ | - |
| ev3_sensor_get_type() | ○ | ev3_sensor_config()で設定したものが取得できます。 |
| クラス | 操作 | 対応状況 | 備考 |
|---|---|---|---|
| Sensor | Sensor() | ○ | - |
| Sensor | ~Sensor() | ○ | - |
| Sensor | getPort() | ○ | Sensor()で設定したものが取得できます。 |
SPIKEのカラーセンサーを使用します。カラーセンサーのモードを切り替える際には、一定の時間(数十〜100msec程度)かかりますので、頻繁に切り替えることは避けた方が良いでしょう。
| 関数 | 対応状況 | 備考 |
|---|---|---|
| ev3_color_sensor_get_ambient() | ○ * | 未検証です |
| ev3_color_sensor_get_color() | △ | SPIKEのカラー値をそのまま返しているので、EV3RTとの互換性がありません |
| ev3_color_sensor_get_reflect() | ○ | - |
| ev3_color_sensor_get_rgb_raw() | ○ | - |
| クラス | 操作 | 対応状況 | 備考 |
|---|---|---|---|
| ColorSensor | ColorSensor() | ○ | - |
| ColorSensor | ~ColorSensor() | ○ | - |
| ColorSensor | getAmbient() | ○ * | 未検証です |
| ColorSensor | getColorNumber() | △ | ev3_color_sensor_get_color()と同様の制限です |
| ColorSensor | getBrightness() | ○ | - |
| ColorSensor | getRawColor() | ○ | - |
注釈のないものは対応しています。
ジャイロのAPIには対応しています。HacksPiの旋回方向に対して機能するようにしています(SPIKE自体は本体に6軸ジャイロがありますが、RasPikeのこのAPIでは1軸のみ返しています)
| 関数 | 対応状況 | 備考 |
|---|---|---|
| ev3_gyro_sensor_get_angle() | ○ | - |
| ev3_gyro_sensor_get_rate() | ○ | - |
| ev3_gyro_sensor_reset() | ○ | - |
| クラス | 操作 | 対応状況 | 備考 |
|---|---|---|---|
| GyroSensor | GyroSensor() | ○ | - |
| GyroSensor | ~GyroSensor() | ○ | - |
| GyroSensor | getAngle() | ○ | - |
| GyroSensor | getAnglerVelocity() | ○ | - |
| GyroSensor | reset() | ○ | - |
| GyroSensor | setOffset() | ○ | - |
ETロボコンでは使用しないため、赤外線センサには対応していません。
| 関数 | 対応状況 | 備考 |
|---|---|---|
| ev3_infrared_sensor_get_distance() | × | 非対応 |
| ev3_infrared_sensor_get_remote() | × | 非対応 |
| ev3_infrared_sensor_seek() | × | 非対応 |
タッチセンサに対応しています。ただし、HacksPiではポートの数の制限でタッチセンサーがつけられないため、今のところ本体の通信キーを押すことで、反応します。これは変更の可能性があります。
タッチセンサーをconfigする際にはHacsPiではEV3_PORT_1を使用してください。それ以外では対応していません。
| 関数 | 対応状況 | 備考 |
|---|---|---|
| ev3_touch_sensor_is_pressed() | ○ | - |
| クラス | 操作 | 対応状況 | 備考 |
|---|---|---|---|
| TouchSensor | TouchSensor() | ○ | - |
| TouchSensor | ~TouchSensor() | ○ | - |
| TouchSensor | isPressed() | ○ | - |
| 関数 | 対応状況 | 備考 |
|---|---|---|
| ev3_ultrasonic_sensor_get_distance() | ○ | - |
| ev3_ultrasonic_sensor_listen() | × | 対応していません。 |
| クラス | 操作 | 対応状況 | 備考 |
|---|---|---|---|
| SonarSensor | SonarSensor() | ○ | - |
| SonarSensor | ~SonarSensor() | ○ | - |
| SonarSensor | getDistance() | ○ | - |
| SonarSensor | listen() | × | 対応していません。 |
ETロボコンでは使用しないため、下記のAPIには対応していません。
| 関数 | 対応状況 | 備考 |
|---|---|---|
| ht_nxt_accel_sensor_measure() | × | 非対応 |
| ht_nxt_color_sensor_measure_color() | × | 非対応 |
| ht_nxt_color_sensor_measure_rgb() | × | 非対応 |
| nxt_temp_sensor_measure() | × | 非対応 |
| 操作 | 対応状況 | 備考 |
|---|---|---|
| reset | ○ | - |
| now | ○ | - |
| wait | △ | 下記、注意事項参照。 |
| sleep | △ | 下記、注意事項参照。 |
単位はusecです。
アプリケーション(チームのプログラムファイル)内で、RasPikeかEV3RTかの実装を切り分けることが出来ます。
#if defined(MAKE_RASPIKE)
static const int _RASPIKE = 1; /* RasPike用ビルドです */
#elif defined(MAKE_EV3)
static const int _RASPIKE = 0; /* EV3用ビルドです */
#endif