スマートフォン・ジン | Smartphone-Zine

引っ越し先→ https://smartphone-zine.com/

バイクカバーには固定用バンドが必須でした!

バイク用カバーを購入したのですが、バタついてしまうので、固定用バンドが必要でした。外での保管にはカバーと固定用バンドはセットで用意すると良いです。

バイクカバー

乗らない時期も大事な愛車を守るため購入。アマゾンで結構安かったので、まあこういったものって消耗品なので、とりあえず安いものをためしてみました。意外と生地もとしっかりしているので、あとはどれくらい長持ちするかどうかですね。

バイクカバー固定

バイクカバーって、そのままだと強風のときにバタバタと暴れてしまい、そのせいで余計に車体に傷がついたり、最悪バイクが倒れたりしちゃいます。

この固定用ベルトはちょうど良い長さで2本入っており、バイクをぐるっと縦にまいて、さらにハンドル下部分を横にぐるっとまいておけば、かなりバタつきを抑えてくれます。

最初これを購入してなくって、バイクカバーばめちゃくちゃ暴れてしまい、すぐにバイクカバーを外すしかなくなってしまいました。ネットで色々対策を調べたところ、縛るべき!という事でした。そしてこの商品に出会ったのですが、これ、必須アイテムですね、バイクカバーと固定バンドはセットで必要!!おすすめです。

【バイク初心者】バイク初心者が最初に購入したもの!これだけ買っておけばとりあえず大丈夫!

バイクの免許を取得してから、初めてバイクを購入しました。納車までに2週間あります。その間にAmazonで購入したもの、準備したものです。

ヘルメットとグローブは、教習所に通う前に購入済みなので、それ以外のものになります。

ネックウォーマー

ちょうど購入したのが1月でしたので、これはいるだろうと購入しました。薄手なので防寒効果は高くはないですが、直接風があたらないので十分です。夏場に首の後の日焼け対策にも使えるかもと期待しています。

プロテクター入りのジャケット

車ならもしもの事故の時にもシートベルトやエアバッグで守られますが、バイクは体がむき出しの状態で走行します。プロテクターは車のシートベルトみたいな気持ちで装着する予定です。

ニーガード

ズボン内にプロテクターが入っているライディングパンツも検討したのですが、普段のお出かけにバイクを使う予定なので下は普段のジーパン使いたいのでこれにしました。

ツーリングとかに行くようになったらライディングパンツも検討しようかなとおもってますが普段使いにはこれでよさそうです。

スマホホルダー

スマホでナビはもはや必須といってもいいんじゃないかと思います。

ちょっとお高いのですが、しっかりしていて安定感が有り、しかも取り外しがめちゃくちゃスマートなのでこれにしました。長く使えそうです!

あとは納車を待つばかり

これだけあれば、とりあえずバイク納車とともに走り出せそうです!納車が待ち遠しい!!

【ヤマハFZS25】自分でバイクのコーティングにチャレンジ!

バイクのコーティングって高くないですか?

新車でバイクを購入すると勧められるのがバイクのコーティング。たしかにコーティングしてもらえると洗車が圧倒的にらくなので、車購入するときはやってもらうですけど、バイクまでいるかなと疑問に思っています。というのも、以外にコーティング費用が高かったりするんですよね。

というわけで、自分でチャレンジする事に

車だと自分でコーティングするの面倒だなぁっと思うのですが、まあバイクくらいならちゃちゃっと自分で出来るかな?ということでネットの情報を元によさそうなガラスコーティング剤を探します。

ピカピカレインはどうか?

特にこだわりもなかったので、ネットで目に入った「ピカピカレインバイク用」というのを試してみることにしました。自分でコーティングすれば出費を4分の1くらいに抑えられます!

新車で購入したバイクが届くまでに2週間あったのでその間にネットで購入しておき、納車日すぐに施工していきました。 施工対象は「FZS25 2022 マッドオレンジ」です。

準備

新車なので軽く洗うだけでOKです。

まずはカーシャンプーをつかって軽く水洗いをしてホコリを落としてからセーム革で水を拭き上げます。

次にコーティング剤がよく乗るようにするために、「脱脂」の作業をしていきます。ちょうど車のパーツ取り付け時に使った脱脂用スプレーがあまっていたのでこれを使いました。これをスプレーしてはクロスで拭きあげます。

施工は意外と簡単

さて、下準備がととのいましたので、天気予報を確認してから施工です。

施工してから12時間は濡れないようにしないとムラになってしまうとのことだったのですが、うちには屋根付きガレージはありません。だから外で施工しそのまま保管しなければなりません。

雨がふらず、でもあまり天気が良すぎないで、急激な温度変化による夜露や朝露が発生しないタイミングを見計らって、午前中のうちに施工してしまいます。

難しいかなと気負っていた施工ですが、以外に簡単でした!付属のスポンジに3滴ほどつけ、車体に塗っていきます。塗ったらすぐに付属のマイクロファイバークロスで拭き上げます。これをひたずら繰り返して全体をピカピカにしていきます。

施工の注意点

つや消し加工されている塗装は艶のある塗装に比べて液剤の伸びが悪いので少し多めに塗布する必要があります。

「つや消し」のボディにガラスコーティングをすると「艶あり」のような仕上がりになってしまうのでは?と心配していましたが、そんなことはなく風合いはそのままです。 最近のバイクは樹脂パーツが多いのですが、このピカピカレインは樹脂パーツ部分にも塗布できます。

例えば黒い樹脂パーツの部分は色が深くなったように美しい仕上がりになります。

施工完了

2時間位で施工は完了し、1週間後に水弾きを試してみました。水はじきもよくとても気持ちいいです。 汚れも軽く水で流すだけで綺麗に汚れが落ちました。 ホイールにも塗ったのですが、水が滑る感じがとても良いですね。

施工前

納車直後、まだ施工する前のFZS25です。撮影時ちょっと曇っていたので余計に暗く見えていますが、そんなに光沢がある感じでもなく、どちらかといえばくすんでいる感じがしますよね。

施工前

施工後

こちらが施工後です。ちょうど太陽が出た時に撮影したというのもありますが、輝きが一段と増していて、塗装が明るくなったように感じられるほど。自分で施工してこの輝きであればもう大満足です!

施工後

施工の様子を動画にしてます!

youtu.be

【ヤマハ FZS25 2022 ABS】は、非常にトルクフルで価値のあるクオーターバイク(250ccバイク)です

バイク免許を取得しました

夏に普通二輪免許を取得したものの、気づけばもう冬です。ようやく落ち着いてきたので購入するバイクを決めようかとネットを見ていたところ、FZ25というバイクの情報が目にとまったのです。一番はその価格、新車でありながら車両価格30万円台とその驚異の安さに驚きました!中古の250ccでも車種によってはこれ以上の価格します。特にいまはコロナ&戦争の影響でバイク価格が高騰しているため、中古でも高いのです。中古でもなかなか30万円台ではいいものを見つけるのは難しい状況です。だから新車でこのお値段なら言うことなしじゃないですか! とはいえ安さには理由があるもの。なぜ安いのか、安くても大丈夫なバイクのか、そのあたりを確認していきたいと思います。

FZ25 ABS

FZ25 は、インドヤマハが販売するバイクです。 国内のヤマハでは取り扱っておらず、入手は困難なバイクです。しかしバイク館SOXイエローハット)などの大手企業により日本に輸入されています。 なんといっても実用重視のバイクで、デザインはストリートファイターと呼ばれるタイプです。

FZS25 ABS

FZ25にナックルガードとロングタイプのバイザーがついた(だけの)ものです。 このデザインはアドベンチャー(オフロード走行も視野に入れた冒険仕様のバイク)と呼ばれるようです。ナックルガード装備で飛び石や転倒時の怪我から手を守ってくれそうですね。 FZ25とFZS25の違いはナックルガードとロングバイザー、あとは色の選択肢が違うだけじゃないかと思います。 で、このマッドオレンジ(つや消し銅)が気に入ったのでFZS25を購入することにしました!あまり見かけないバイク、しかもオレンジですから目立っちゃいそうです。

FZS25の良い点

私がこのバイクに決めるにあたって収集したメリット・デメリットについて書こうと思います。

続きを読む

Raspberry Pi Zero 2 W に、ボタン1つでシャットダウン出来るようにする!

Raspberry Pi Zeroの時はこういった基盤を使って、シャットダウンさせてました。

OnOff SHIM — スイッチサイエンス

こんなもの無くても、実はボタンを1個用意するだけでシャットダウン対応する方法があるんです!!

早速、Raspberry Pi Zero 2 Wでも出来るのか試してみます。

ラズパイゼロ2Wの情報

Raspberry Pi Zero 2 Wのデータシートはこちら。

データシートPDF

こちらによると、

Broadcom BCM2710A1, quad-core 64-bit SoC(Arm Cortex-A53 @ 1GHz)

となっています。

そのためOSは64Bitを選択しました。開発はCUI上で行う、おそらくバイクに載せた時もCUIで使うと思うので、Lite版(=デスクトップ環境なし)にします。

OSインストール

まずは、OS入れてきます。RASPBERRY PI OS LITE(64-BIT)を選択します。

Liteの方を入れてみます

 解像度の設定を行う

インストール終わり、ユーザ名パスワードなど設定完了したら、ディスプレイに合わせて設定変更しておきます。

# uncomment to force a console size. By default it will be display's size minus
# overscan.
framebuffer_width=1024
framebuffer_height=600

# uncomment to force a specific HDMI mode (this will force VGA)
hdmi_group=2
hdmi_mode=87
hdmi_cvt=1024 600 60 5 0 0 0

hdmi_cvtの設定は解像度により異なります。他の解像度の場合は、Adjust Resolution for Raspberry Piを見て設定します。

ここから今回の本題、ボタンを押してラズパイをシャットダウンします。

GPIO3に繋いだボタンの長押し1000msでシャットダウンする設定です。

sudo vi /boot/config.txt
dtoverlay=gpio-shutdown,gpio_pin=3,active_low=1,debounce=1000

設定したら再起動して有効にします。

配線はとても簡単です

これだけで、GPIO3に繋いだボタンを押してシャットダウン出来るようになりました!

今までOn Off基盤を使って苦労していたのが嘘のようにあっという間に完成です!!

ROS2 FoxyでIMUとGPSのGazeboプラグインを使う

GPSを使いたくて、色々とネットを調べていると
hector_gazebo_plugin

libgazebo_gps_plugin.so
がヒットするのですが、なかなか ROS2で使える方法がわからず、ようやく見つけることができました。
/opt/ros/foxy/share/gazebo_plugins/worlds/gazebo_ros_gps_sensor_demo.world
GPSセンサーのサンプルがありました。

https://github.com/ros-simulation/gazebo_ros_pkgs/blob/foxy/gazebo_plugins/worlds/gazebo_ros_gps_sensor_demo.world

これを参考に、次のようにsdfに追記します。

<?xml version='1.0'?>
<sdf version='1.5'>
  <model name="ロボット名">
  ・・・・
    <link name="gps_link">
      <pose>0 0 10 0 0 0</pose>
      <sensor name="my_gps" type="gps">
        <always_on>true</always_on>
        <update_rate>30</update_rate>
        <gps>
          <position_sensing>
            <horizontal>
              <noise type="gaussian">
                <mean>0.0</mean>
                <stddev>2e-4</stddev>
              </noise>
            </horizontal>
            <vertical>
              <noise type="gaussian">
                <mean>0.0</mean>
                <stddev>2e-4</stddev>
              </noise>
            </vertical>
          </position_sensing>
        </gps>
        <plugin name="gps_plugin" filename="libgazebo_ros_gps_sensor.so">
          <ros>
            <argument>--ros-args --remap ~/out:=gps_data</argument>
          </ros>
        </plugin>
      </sensor>
    </link>

    <joint name="gps_joint" type="fixed">
      <parent>base_link</parent>
      <child>gps_link</child>
    </joint>

  </model>
</sdf>

GPSの位置情報はWorldに書き込みます。私の環境では、北を合わせるために180回転させる必要がありましたので、

<heading_deg>180</heading_deg>

と変更してあります。

<sdf version='1.7'>
  <world name='default'>
    <spherical_coordinates>
      <surface_model>EARTH_WGS84</surface_model>
      <latitude_deg>36.0824</latitude_deg>
      <longitude_deg>140.078</longitude_deg>
      <elevation>0</elevation>
      <heading_deg>180</heading_deg>
    </spherical_coordinates>
・・・・
  </world>
</sdf>

次にIMUです。D455というカメラの場合、カメラ内にIMUが搭載されているのでカメラリンク内に配置しました。

<link name="camera_link">
  <pose>0 0 1.2 0 0.349066 0</pose>
  <inertial>
    ・・・
  </inertial>
  <collision name="collision">
   ・・・・
  </collision>
  <visual name="camera_visual">
    ・・・
  </visual>
  <sensor type="camera" name="camera">
    ・・・
  </sensor>

  <sensor type="depth" name="depth">
    ・・・
  </sensor>

  <sensor name="imu" type="imu">
    <imu>
      <angular_velocity>
        <x>
          <noise type="gaussian">
            <mean>0.0</mean>
            <stddev>2e-4</stddev>
            <bias_mean>0.0000075</bias_mean>
            <bias_stddev>0.0000008</bias_stddev>
          </noise>
        </x>
        <y>
          <noise type="gaussian">
            <mean>0.0</mean>
            <stddev>2e-4</stddev>
            <bias_mean>0.0000075</bias_mean>
            <bias_stddev>0.0000008</bias_stddev>
          </noise>
        </y>
        <z>
          <noise type="gaussian">
            <mean>0.0</mean>
            <stddev>2e-4</stddev>
            <bias_mean>0.0000075</bias_mean>
            <bias_stddev>0.0000008</bias_stddev>
          </noise>
        </z>
      </angular_velocity>
      <linear_acceleration>
        <x>
          <noise type="gaussian">
            <mean>0.0</mean>
            <stddev>1.7e-2</stddev>
            <bias_mean>0.1</bias_mean>
            <bias_stddev>0.001</bias_stddev>
          </noise>
        </x>
        <y>
          <noise type="gaussian">
            <mean>0.0</mean>
            <stddev>1.7e-2</stddev>
            <bias_mean>0.1</bias_mean>
            <bias_stddev>0.001</bias_stddev>
          </noise>
        </y>
        <z>
          <noise type="gaussian">
            <mean>0.0</mean>
            <stddev>1.7e-2</stddev>
            <bias_mean>0.1</bias_mean>
            <bias_stddev>0.001</bias_stddev>
          </noise>
        </z>
      </linear_acceleration>
    </imu>
    <always_on>1</always_on>
    <update_rate>1000</update_rate>
    <plugin filename="libgazebo_ros_imu_sensor.so" name="imu_plugin">
      <topicName>imu</topicName>
      <bodyName>camera_link</bodyName>
      <updateRateHZ>10.0</updateRateHZ>
      <gaussianNoise>0.0</gaussianNoise>
      <xyzOffset>0 0 0</xyzOffset>
      <rpyOffset>0 0 0</rpyOffset>
      <frameName>camera_link</frameName>
      <initialOrientationAsReference>false</initialOrientationAsReference>
    </plugin>
  </sensor>

</link>

実行するとgps_plugin/outが得られます。

$ ros2 topic list
/camera/camera_info
/camera/image_raw
/clicked_point
/clock
/depth/camera_info
/depth/depth/camera_info
/depth/depth/image_raw
/depth/image_raw
/depth/points
/goal_pose
/gps_plugin/out
/imu_plugin/out
/initialpose
/joint_states
/momo/cmd_vel
/momo/odom
/parameter_events
/performance_metrics
/robot_description
/rosout
/tf
/tf_static

取得できた値を見てみます。

$ ros2 topic echo /gps_plugin/out
header:
stamp:
sec: 5662
nanosec: 578000000
frame_id: gps_link
status:
status: 0
service: 1
latitude: 36.08194676155107
longitude: 140.07913439959185
altitude: 10.403717489913106
position_covariance:

うまくGPS情報を取得できているようです。

ROS2 Foxy環境でgazeboを使ったデプスセンサのシミュレーション

今までは、"libgazebo_ros_openni_kinect.so" を使ってデプスセンサをシミュレーションしていた。Gazeboの公式チュートリアルでも"libgazebo_ros_openni_kinect.so"を使った方法が記載されている。

http://gazebosim.org/tutorials/?tut=ros_depth_camera

しかし、Foxy環境では"libgazebo_ros_openni_kinect.so"がなくなっている。かわりに"libgazebo_ros_camera.so"でデプスカメラのシミュレーションが可能になっているようである。type="depth"とすれば良い。

<!-- Depth camera -->
<link name="camera_link">
  <pose>0 0 1.2 0 0.349066 0</pose>
  <inertial>
    <mass>0.01</mass>
    <pose>0 0 0 0 -0 0</pose>
    <inertia>
      <ixx>1.8e-7</ixx>
      <ixy>0</ixy>
      <ixz>0</ixz>
      <iyy>2.1733e-6</iyy>
      <iyz>0</iyz>
      <izz>1.8e-7</izz>
    </inertia>
  </inertial>
  <collision name="collision">
    <geometry>
      <box>
        <size>0.03 0.08 0.03</size>
      </box>
    </geometry>
  </collision>
  <visual name="camera_visual">
    <geometry>
      <box>
        <size>0.03 0.08 0.03</size>
      </box>
    </geometry>
    <material>
      <script>
        <name>Gazebo/DarkGrey</name>
        <uri>file://media/materials/scripts/gazebo.material</uri>
      </script>
    </material>
  </visual>
  <sensor type="camera" name="camera">
    <update_rate>30.0</update_rate>
    <camera name="head">
      <horizontal_fov>1.5708</horizontal_fov>
      <image>
        <width>1280</width>
        <height>800</height>
        <format>R8G8B8</format>
      </image>
      <clip>
        <near>0.02</near>
        <far>300</far>
      </clip>
      <noise>
        <type>gaussian</type>
        <mean>0.0</mean>
        <stddev>0.007</stddev>
      </noise>
    </camera>
    <plugin name="camera_controller" filename="libgazebo_ros_camera.so">
      <alwaysOn>true</alwaysOn>
      <updateRate>0.0</updateRate>
      <cameraName>momo/camera</cameraName>
      <imageTopicName>image_raw</imageTopicName>
      <cameraInfoTopicName>camera_info</cameraInfoTopicName>
      <frameName>camera_link</frameName>
      <hackBaseline>0.07</hackBaseline>
      <distortionK1>0.0</distortionK1>
      <distortionK2>0.0</distortionK2>
      <distortionK3>0.0</distortionK3>
      <distortionT1>0.0</distortionT1>
      <distortionT2>0.0</distortionT2>
    </plugin>
  </sensor>
  <sensor type="depth" name="depth">
    <update_rate>30.0</update_rate>
    <camera name="head">
      <horizontal_fov>1.51844</horizontal_fov>
      <image>
        <width>1280</width>
        <height>720</height>
        <format>R8G8B8</format>
      </image>
      <clip>
        <near>0.5</near>
        <far>6.0</far>
      </clip>
      <noise>
        <type>gaussian</type>
        <mean>0.0</mean>
        <stddev>0.07</stddev>
      </noise>
    </camera>
    <plugin name="depth_controller" filename="libgazebo_ros_camera.so">
      <visualize>true</visualize>
      <alwaysOn>true</alwaysOn>
      <updateRate>0.0</updateRate>
      <cameraName>depth/camera</cameraName>
      <imageTopicName>image_raw</imageTopicName>
      <cameraInfoTopicName>camera_info</cameraInfoTopicName>
      <frameName>camera_link</frameName>
      <hackBaseline>0.07</hackBaseline>
      <distortionK1>0.0</distortionK1>
      <distortionK2>0.0</distortionK2>
      <distortionK3>0.0</distortionK3>
      <distortionT1>0.0</distortionT1>
      <distortionT2>0.0</distortionT2>
    </plugin>
  </sensor>
</link>

センサーのタイプをdepthに設定することでpointcloud2を得られた。今回は通常のカメラと深度カメラの2つのセンサーを追加している。

depthの方にもいちおうnoiseタグを入れてみたが、ノイズには対応していないとのことだった。実際の出力を見てもやはりノイズは得られなかった。自分で、pointcloud2を受け取り、ガウシアンノイズを追加したpointcliud2を出力するコードを作成する必要がある。