ロボットの動作テスト

先日組み立てたロボットの動作確認をしてみた。

 

PiCar-XはEzBlock Studioというスマホアプリを使ってWifi経由で操作できる。PC上のWebブラウザからも操作できるが、スマホアプリの方が安定している気がする。

 

docs.sunfounder.com

 

f:id:fumobox:20211211211258p:plain

 

続きを読む

ロボットを組み立ててみた

ちょっとしたアイデアを思いついたので、それを実現するためにロボットが欲しくなった。自分でスクラッチで組み立てるスキルは無いので、Amazonで手頃なキットを探してみた。条件はラズパイで動くことと価格が手頃なこと。SunFounderというメーカーから出ているPiCar-Xという四輪ロボットが気に入ったので購入してみた。ラズパイと電池は入っていないので別途購入する必要がある。

www.amazon.co.jp

f:id:fumobox:20211203204127p:plain

数日後に届いたので、早速組み立ててみた。

 

続きを読む

Cyberpunk 2077でLogicoolマウスの中ボタンが反応しない

www.youtube.com

 

www.reddit.com

 

Cyberpunk 2077でロジクールのM720マウスの中ボタンが反応しなかったので調べたら、対策が紹介されていました。

 

1. マウスの設定ファイルを開く

C:\Users\UserName\AppData\Roaming\Logishrd\LogiOptions\devices\6b023

VSCodeとかで良さそう。

2. divert="0"というエレメントを追加する

<controlid rawxy="1" actiongroup7="win8nav2" actiongroup8="win8nav2" rawwheel="0" group="2" groupmask="3" id="0x0052" reprogrammable="true" type="mouse" taskidlist="middleButtonTaskList" gestureidlist="othersGestureidList" actiongrouplist="win8NavList" actiongroup="virtualdesktop">
<task divert="0" id="0x003a" class="mouseclick">

middleButtonTaskListで検索して、直下にあるtaskタグに追加します。

3. Logicoolサービスを再起動

f:id:fumobox:20201212170149p:plain

タスクマネージャを開き、上の3つのサービスを終了した後に、Logicool Optionsオプションズを再起動すれば設定が反映されます。よくわからなければPCごと再起動でも良さそう。

 

私の場合は、この対策を入れてCyberpunk 2077を起動したら、無事に中ボタンを使えるようになりました。この対策をしないとチュートリアルをクリアできないので、公式で対策してほしいですね…

 

シェーダーグラグでクロマキー合成

f:id:fumobox:20201114170318p:plain

 

Unityのシェーダーで背景を抜く方法は各所で紹介されていますが、シェーダーグラフで実装する方法を知らなかったので自分で作ってみました。

 

github.com

 

以下のような流れで作成します。

  1. ベースのテクスチャのRGBAをCombineノードとColor Maskノードに分岐
  2. CombineノードでRGBを合成
  3. Color MaskノードでMask Colorで指定した色でマスクをかける
  4. Color MaskノードをInvert Colorsノードに接続してRedのみを反転
  5. CombineノードをUnlit MasterノードのColor入力へ接続
  6. Invert ColorsノードをUnlit MasterノードのAlphaに接続

https://github.com/fumobox/ChromakeyTest/raw/master/screenshot.png

 

Color MaskノードのRange、Fuzinessパラメータから、色を抜く領域を調整することができます。Color Maskノードの出力は1チャンネルのみなので、Invert Colorsノードでは、Redチャンネルのみ反転させています。

 

テクスチャをRenderTextureにすれば、動画の背景を抜くこともできます。

 

 

RigidBodyの自由落下を再現してみる

Unityの物理エンジンを使わずに、自前で簡単な物理演算を実装しようと思い、 まずはRigidBodyの自由落下を再現してみました。

using UnityEngine;

public class MyRigidBody : MonoBehaviour
{
    // 重力加速度[m/s/s]
    [SerializeField] private float _graviry = 9.80665f;

    // 速度[m/s]
    private Vector3 _velocity;

    private void FixedUpdate()
    {
        // [m/s] = [m/s/s] * [s]
        _velocity.y += -_graviry * Time.fixedDeltaTime;

        var p = transform.position;

        // [m] = [m/s] * [s]
        p += _velocity * Time.fixedDeltaTime;
        transform.position = p;
    }
}

物理演算を行う時は、Update関数よりも、更新間隔が安定しているFixedUpdate関数で行うのが望ましいです。 加速度と速度の両方にfixedDeltaTimeを掛けるのが重要なポイントです。単位を考えながら計算するとわかりやすいです。

f:id:fumobox:20201107155925p:plain
MyRigidBody

時間が経つと徐々にRightBodyと差が出てきますが、概ね同じ挙動になりました。 この誤差の原因を調べると深みにはまりそうなので、またそのうち…

VCI/VRMよくばりパック

UniVRMとUniVCIを一緒に入れるとGUIDが重複してエラーになるので、エラーを修正したパッケージを作成しました。本家の方で対応されたら無用の長物になる予定です。

 

UniVCI0.29、UniVRM0.58とTMPの日本語アセットが入っています。

https://github.com/fumobox/VCI/releases

 

GUIDかぶり問題はこちらが参考になりました。

https://mattak.hatenablog.com/entry/2018/05/25/000857