Screen Shot 2014-08-18 at 3.16.53 AM

[pidora] Node.jsでWebSocketする – Raspberry Piでリープモーション 3

[pidora] Node.jsでWebSocketする – Raspberry Piでリープモーション 3nodejs-1024x768リープモーションをインストールしたくてalienでdedをrmpへの変換が失敗するところまで行って気づいた。

インストールできないォォォ(ノ゚ρ゚)ノ

ラズベリーパイのCPUアーキテクトはARM系でできなかったみたい。

そんじゃあって、nodejs入れてWebSocket繋げるのを試す。

サーバー側(MacOS)

・ローカルIP 192.168.0.5

リープモーションは普通に起動でローカルにWebSocketサーバーが立ち上がって、ws://127.0.0.1:6437にjsonデータが流れる、けどデフォルトだとリモートからのアクセスをリープモーションのサービスが許可しない。
LeapMotion v1は、 /Library/Application\ Support/Leap\ Motion/config.json にあるコンフィグファイルを編集できるらしい、けどアプリを立ち上げると元に戻ってしまう笑
海外のみると初めから設定画面が用意されてるみたいなんだけどなぁ〜

じゃあ、LeapMotion v2でっていろいろいじったら、設定コマンド見っけた。

/Applications/Leap\ Motion.app/Contents/MacOS/leapd -h
Service options:
 -h [ --help ] Prints this message
 --install Installs the service at its current path
 --remove Uninstalls the service, if installed
 --test Runs a simple internal service test suite
 --run Run the service in interactive mode
 --usermode Run the usermode process
 --sim [=arg(=0)] Run the service simulation mode
 --config arg The path to a configuration file to be used

Public Configurations:
 --camera_type arg (=UVCI)
 --camera_framerate_limit arg (=1000)
 --camera_sensitivity arg (=1)
 --camera_requires_calib [=arg(=1)]
 --camera_y_sample_rate arg (=0)
 --camera_x_sample_rate arg (=0)
 --camera_mode arg (=HVGA)
 --image_width arg (=640)
 --image_height arg (=480)
 --image_calib_width arg (=640)
 --image_calib_height arg (=480)
 --tracking_mode arg (=balanced)
 --robust_mode_enabled [=arg(=1)]
 --low_resource_mode_enabled [=arg(=1)]
 --background_app_mode arg (=1) 0 = disallow, 1 = ask, 2 = always
 --images_mode arg (=0) 0 = disallow, 1 = ask, 2 = always
 --websockets_enabled [=arg(=1)]
 --websockets_allow_remote [=arg(=1)]
 --use_autonet [=arg(=1)] Enable Autonet monitoring server
 --server_connect_ip arg (=127.0.0.1)
 --print_timestamps_in_log [=arg(=1)]
 --skeleton_initialization_error arg (=6)
 --skeleton_palm_filtering arg (=0.5)
 --skeleton_finger_filtering arg (=0.69999999999999996)
 --skeleton_velocity_filtering arg (=0.69999999999999996)
 --skeleton_half_filter_vel arg (=300)
 --skeleton_iterations arg (=10)
 --skeleton_error_bound arg (=0.01)
 --skeleton_finger_samples arg (=85)
 --skeleton_separation arg (=10)
 --skeleton_use_sampling [=arg(=1)]
 --skeleton_extreme [=arg(=1)]
 --skeleton_movement [=arg(=1)]
 --skeleton_finger_recovery [=arg(=1)]
 --skeleton_try_ik [=arg(=1)]
 --skeleton_reinitialize [=arg(=1)]
 --skeleton_v [=arg(=1)]
 --skeleton_v_postprocess [=arg(=1)]
 --skeleton_force_alignment [=arg(=1)]
 --skeleton_use_swarm [=arg(=1)]
 --skeleton_recovery [=arg(=1)]
 --skeleton_match_conf [=arg(=1)]
 --skeleton_sampling_interlace [=arg(=1)]
 --skeleton_inertia [=arg(=1)]
 --skeleton_use_palm_weight [=arg(=1)]
 --skeleton_update_stubbiness [=arg(=1)]
 --use_optical_flow [=arg(=1)]
 --no_cp_startup [=arg(=1)]
 --tool_refinement_use_Newton [=arg(=1)]
 --tool_max_init_RMS_error arg (=2)
 --tool_max_init_error arg (=0.001)
 --tool_max_growth_error arg (=0.00050000000000000001)
 --tool_refinement_iterations arg (=2)
 --tool_refinement_step_size arg (=1)
 --tool_refinement_update_reg arg (=0.01)
 --tool_removal_max_error arg (=2.2999999999999998)
 --tool_removal_straightness arg (=0.002)
 --tool_axial_adjustment [=arg(=1)]
 --tool_course_adjustment [=arg(=1)]
 --tool_growth_dist arg (=10)
 --tool_filtering arg (=0.5)
 --tool_axial_filtering arg (=0.90000000000000002)
 --tool_radius_filtering arg (=0.999)
 --hand_to_tool_reinitialization [=arg(=1)]
 --hand_tool_conflict_resolution [=arg(=1)]
 --image_processing_auto_flip [=arg(=1)]
 --image_processing_r_weight arg (=0.25)
 --image_processing_max_dist arg (=800)
 --image_processing_use_rs [=arg(=1)]
 --image_processing_sample_step arg (=4)
 --image_processing_use_peaks [=arg(=1)]
 --image_processing_use_2d_peaks [=arg(=1)]
 --image_processing_region_ids [=arg(=1)]
 --use_noise_correction [=arg(=1)]
 --head_mounted_display_mode [=arg(=1)]
 --power_saving_adapter [=arg(=1)]
 --power_saving_battery [=arg(=1)]
 --os_interaction_mode arg (=0)
 --os_interaction_multi_monitor [=arg(=1)]
 --interaction_box_auto [=arg(=1)]
 --interaction_box_height arg (=200)
 --interaction_box_scale arg (=0.80000000000000004)
 --interaction_center_x arg (=0)
 --interaction_center_y arg (=200)
 --interaction_center_z arg (=0)
 --autoplane_closeness_epsilon arg (=4)
 --autoplane_covariance_scale_factor arg (=0.5)
 --autoplane_time_window arg (=0.40000000000000002)
 --autoplane_warmup_time arg (=0.33300000000000002)
 --autoplane_hover_zone_cutoff arg (=70)
 --autoplane_dead_zone_cutoff arg (=220)
 --autoplane_function_steepness arg (=1)
 --autoplane_function_width arg (=4)
 --autoplane_function_speed arg (=0.5)
 --klaatu_barada_nikto [=arg(=1)]
 --screen_detected [=arg(=1)]
 --screen_point0_x arg (=0)
 --screen_point0_y arg (=0)
 --screen_point0_z arg (=0)
 --screen_point1_x arg (=0)
 --screen_point1_y arg (=0)
 --screen_point1_z arg (=0)
 --screen_point2_x arg (=0)
 --screen_point2_y arg (=0)
 --screen_point2_z arg (=0)
 --screen_point3_x arg (=0)
 --screen_point3_y arg (=0)
 --screen_point3_z arg (=0)
 --screen_point4_x arg (=0)
 --screen_point4_y arg (=0)
 --screen_point4_z arg (=0)
 --screen_point5_x arg (=0)
 --screen_point5_y arg (=0)
 --screen_point5_z arg (=0)
 --screen_point6_x arg (=0)
 --screen_point6_y arg (=0)
 --screen_point6_z arg (=0)
 --screen_point7_x arg (=0)
 --screen_point7_y arg (=0)
 --screen_point7_z arg (=0)
 --reflection_removal_enabled [=arg(=1)]
 --testing_interface_type arg (=JSONInterface)
 --testing_verbose arg (=0)
 --auto_check_updates [=arg(=1)]
 --auto_install_updates [=arg(=1)]
 --force_accept_updates [=arg(=1)]
 --update_channel arg (=stable)
 --allow_firmware_write [=arg(=1)]
 --metrics_enabled [=arg(=1)]

ちなみに、公式はSSHでポートフォワードして欲しかったらしい!!

Read Leap data from guest VM on host machine using WebSockets - LeapMotion Community

# 127.0.0.1の6437ポートから192.168.0.5の5000ポートに転送
ssh —g -L 5000:127.0.0.1:6437 mac_user@192.168.0.5

クライアント側(ラズベリーパイ)

yum info nodejs
Name        : nodejs
Arch        : armv6hl
Version     : 0.10.25
Release     : 2.fc20
Size        : 1.4 M
Repo        : installed
From repo   : pidora
Summary     : JavaScript runtime
URL         : http://nodejs.org/
License     : MIT and ASL 2.0 and ISC and BSD
Description : Node.js is a platform built on Chrome's JavaScript runtime
            : for easily building fast, scalable network applications.
            : Node.js uses an event-driven, non-blocking I/O model that
            : makes it lightweight and efficient, perfect for data-intensive
            : real-time applications that run across distributed devices.

# 結局、V8のビルドで失敗するんでjoyentが配布してるnodeのバイナリを使った、以下は困ってた記録
sudo yum install -y nodejs npm
npm install ws
ERROR: Binary compiled with -mfloat-abi=hard but without -DUSE_EABI_HARDFLOAT

# ΣΣ(゚д゚lll)

cd /usr/src/v8
make arm.release hardfp=on vfp3=off > /dev/null
g++: error trying to exec 'cc1plus': execvp: No such file or directory
make[1]: *** [/usr/src/v8/out/arm.release/obj.target/v8_base/src/accessors.o] Error 1
make: *** [arm.release] Error 2

# V8のビルドが通らない。。。

# joyentが配布してる1こ前のnode-v0.10.24-linux-arm-armv6j-vfp-hard.binをダウンロードする。
wget https://gist.github.com/raw/3245130/v0.10.24/node-v0.10.24-linux-arm-armv6j-vfp-hard.bin
sudo mv node-v0.10.24-linux-arm-armv6j-vfp-hard.bin /user/local/bin/node
node_modules/ws/bin/wscat -c ws://192.168.0.5
{"serviceVersion":"2.1.0+18736","version":1}

つながった! Σ(=゚ω゚=;)

参考サイト様:

About the author
  • コメントを残す