Skip to content

API_Reference

Yuki Tsuchitoi edited this page Jun 22, 2022 · 5 revisions

RasPikeにおけるEV3RTのAPI対応

ポートの対応

respike_etrobo.pyを使った場合、ポートのマッピングはEV3に合わせて以下のようになります。 SPIKEで実際に使用しているポートを指定するわけではないので注意して下さい。ポートのマッピングは固定です。

センサ/モータ 指定するポート
アームモータ PORT_A
右モータ PORT_B
左モータ PORT_C
タッチセンサ PORT_1
カラーセンサ PORT_2
超音波センサ PORT_3
ジャイロセンサ PORT_4

(注)SPIKEではジャイロセンサは本体にありますが、EV3RTのAPIを使う場合にはPORT_4を使用して下さい。

Summary

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() -

LCD

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() -

LED

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,closescanf,およびfopen,fread,fwrite,fclose,fprintf,fscanfなどは対応しています。

Bluetooth

Bluetoothについては、今後サポート予定です。 RaspiとPCでの通信を可能にする予定です。

モーター

注釈のないものは対応しています。

C API

関数 対応状況 備考
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() -

C++ API

クラス 操作 対応状況 備考
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() -

センサ

使用する前に設定を行う必要があります(実機と同じ)

センサの設定

センサの設定には対応しています。

C API

関数 対応状況 備考
ev3_sensor_config() -
ev3_sensor_get_type() ev3_sensor_config()で設定したものが取得できます。

C++ API

クラス 操作 対応状況 備考
Sensor Sensor() -
Sensor ~Sensor() -
Sensor getPort() Sensor()で設定したものが取得できます。

カラーセンサ

SPIKEのカラーセンサーを使用します。カラーセンサーのモードを切り替える際には、一定の時間(数十〜100msec程度)かかりますので、頻繁に切り替えることは避けた方が良いでしょう。

C API

関数 対応状況 備考
ev3_color_sensor_get_ambient() ○ * 未検証です
ev3_color_sensor_get_color() SPIKEのカラー値をそのまま返しているので、EV3RTとの互換性がありません
ev3_color_sensor_get_reflect() -
ev3_color_sensor_get_rgb_raw() -

C++ API

クラス 操作 対応状況 備考
ColorSensor ColorSensor() -
ColorSensor ~ColorSensor() -
ColorSensor getAmbient() ○ * 未検証です
ColorSensor getColorNumber() ev3_color_sensor_get_color()と同様の制限です
ColorSensor getBrightness() -
ColorSensor getRawColor() -

注釈のないものは対応しています。

ジャイロセンサ

ジャイロのAPIには対応しています。HacksPiの旋回方向に対して機能するようにしています(SPIKE自体は本体に6軸ジャイロがありますが、RasPikeのこのAPIでは1軸のみ返しています)

C API

関数 対応状況 備考
ev3_gyro_sensor_get_angle() -
ev3_gyro_sensor_get_rate() -
ev3_gyro_sensor_reset() -

C++ API

クラス 操作 対応状況 備考
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を使用してください。それ以外では対応していません。

C API

関数 対応状況 備考
ev3_touch_sensor_is_pressed() -

C++ API

クラス 操作 対応状況 備考
TouchSensor TouchSensor() -
TouchSensor ~TouchSensor() -
TouchSensor isPressed() -

超音波センサ

C API

関数 対応状況 備考
ev3_ultrasonic_sensor_get_distance() -
ev3_ultrasonic_sensor_listen() × 対応していません。

C++ API

クラス 操作 対応状況 備考
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() × 非対応

Clockクラス

操作 対応状況 備考
reset -
now -
wait 下記、注意事項参照。
sleep 下記、注意事項参照。

単位はusecです。

EV3RTとRasPikeの区別

アプリケーション(チームのプログラムファイル)内で、RasPikeかEV3RTかの実装を切り分けることが出来ます。

#if defined(MAKE_RASPIKE)
    static const int _RASPIKE = 1;  /* RasPike用ビルドです */
#elif defined(MAKE_EV3)
    static const int _RASPIKE = 0; /* EV3用ビルドです */
#endif

Clone this wiki locally