SSブログ

バナーを一新しました [徒然日記]

心機一転ブログを再開するにあたって、バナーを一新してみました。
SPRESENSE応援団長(仮)を名乗っているので、それらしいバナーにしてみました。
バナーの中のネコ娘は、Bing Image Creator で「SPRESENSEのキャラクター」というキーワードで生成したものです。元絵はこちら。

BingImageCreator_Spresense_small.png

なんとなくそれっぽいので気に入っています。このキャラを使ってSPRESENSE解説マンガでも作ってみたいなぁ。

その他、細かいところでレイアウトや背景色など微調整をしてみましたのですが、少しは見やすくなったかな?

ブログ更新のモチベーションが少し上がってきたので、これからは頻度高めにつぶやいていこうと思います。

nice!(12)  コメント(0) 

ブログをそろそろ再開します [徒然日記]

すっかり、さぼっていたブログですが、そろそろ再開したいと思います。

仕事が忙しいということもありますが、今どきブログは時代遅れかな?なんて勝手に思っていて、やる気が出ませんでした。しかし、いろいろと記録を残しておかないと後で困ることが多く、最近サボっていた自分につけがまわってきました。

最近徘徊していたツイッターも”X”とか訳の分からないものになったし、これからは心を入れ替えて、活動ログや、ぼやきをつらつらと不定期に綴っていきたいと思います。

ブログ再開.png

また、よろしくお願い致します。

nice!(8)  コメント(0) 

【備忘録】 micro-ROS の micro_ros_agent と micro-ROS static library の作り方 [ロボット]

micro-ROS の micro_ros_agent と micro-ROS の static library を作ってみたので、その手順を忘れないように記録として残しておきます。基本的には、次のサイトの手順通りです。

micro-ROS_architecture.png


環境は、Ubuntu 22.04 LTS で ROS2 のバージョンは humble です。

Teensy with Arduino
Creating custom static micro-ROS library

■ micro_ros_setup の設定

micro_ros_agent と micro-ROS static library をビルドするための micro_ros_setup の環境を設定します。

# Source the ROS 2 installation
source /opt/ros/$ROS_DISTRO/setup.bash

# Create a workspace and download the micro-ROS tools
mkdir microros_ws
cd microros_ws
git clone -b $ROS_DISTRO https://github.com/micro-ROS/micro_ros_setup.git src/micro_ros_setup

# Update dependencies using rosdep
sudo apt update && rosdep update
rosdep install --from-paths src --ignore-src -y

# Install pip if you need
sudo apt-get install python3-pip

# Build micro-ROS tools and source them
colcon build
source install/local_setup.bash



■ micro_ros_agent のビルド

micro_ros_agent のビルド環境をダウンロードし、ビルドします。

# Download micro-ROS agent packages
ros2 run micro_ros_setup create_agent_ws.sh

# Build micro_ros_agent
ros2 run micro_ros_setup build_agent.sh
source install/local_setup.bash


私の環境では、次のエラー出てビルドが失敗してしまいました。

$HOME/microros_ws/src/uros/micro-ROS-Agent/micro_ros_agent/src/agent/graph_manager/graph_typesupport.cpp:47:54: error: cannot bind non-const lvalue reference of type ‘bool&’ to a value of type ‘char’
   47 |     m_typeSize = 4 + callbacks_->max_serialized_size(full_bounded);
      |                                                      ^~~~~~~~~~~~
$HOME/microros_ws/src/uros/micro-ROS-Agent/micro_ros_agent/src/agent/graph_manager/graph_typesupport.cpp:139:54: error: cannot bind non-const lvalue reference of type ‘bool&’ to a value of type ‘char’
  139 |     m_typeSize = 4 + callbacks_->max_serialized_size(full_bounded);
      |                               


これは次のファイルの47行目と139行目を次のように変更したらビルドが通りました。

$HOME/microros_ws/src/uros/micro-ROS-Agent/micro_ros_agent/src/agent/graph_manager/graph_typesupport.cpp
 46     // char full_bounded;
 47     bool full_bounded;
....
139     // char full_bounded;
140     bool full_bounded;
....


micro_ros_agent は次のコマンドで起動することができます。

# run micro_ros_agent by a serial communication
ros2 run micro_ros_agent micro_ros_agent serial --dev /dev/ttyUSB0



■ micro-ROS static library の環境準備

micro-ROS static library の開発環境をダウンロードします。

# Download micro-ROS firmware packages
ros2 run micro_ros_setup create_firmware_ws.sh generate_lib



ビルドするための設定ファイルを2つ作成します。

touch my_custom_toolchain.cmake
touch my_custom_colcon.meta



それぞれのファイルの設定例を示します。今回はSPRESENSEを前提とした設定ファイルです。

my_custom_colcon.meta
{
    "names": {
        "tracetools": {
            "cmake-args": [
                "-DTRACETOOLS_DISABLED=ON",
                "-DTRACETOOLS_STATUS_CHECKING_TOOL=OFF"
            ]
        },
        "rosidl_typesupport": {
            "cmake-args": [
                "-DROSIDL_TYPESUPPORT_SINGLE_TYPESUPPORT=ON"
            ]
        },
        "rcl": {
            "cmake-args": [
                "-DBUILD_TESTING=OFF",
                "-DRCL_COMMAND_LINE_ENABLED=OFF",
                "-DRCL_LOGGING_ENABLED=OFF"
            ]
        }, 
        "rcutils": {
            "cmake-args": [
                "-DENABLE_TESTING=OFF",
                "-DRCUTILS_NO_FILESYSTEM=OFF",
                "-DRCUTILS_NO_THREAD_SUPPORT=OFF",
                "-DRCUTILS_NO_64_ATOMIC=ON",
                "-DRCUTILS_AVOID_DYNAMIC_ALLOCATION=ON"
            ]
        },
        "microxrcedds_client": {
            "cmake-args": [
                "-DUCLIENT_PIC=OFF",
                "-DUCLIENT_PROFILE_UDP=OFF",
                "-DUCLIENT_PROFILE_TCP=OFF",
                "-DUCLIENT_PROFILE_DISCOVERY=OFF",
                "-DUCLIENT_PROFILE_SERIAL=OFF",
                "-UCLIENT_PROFILE_STREAM_FRAMING=ON",
                "-DUCLIENT_PROFILE_CUSTOM_TRANSPORT=ON"
            ]
        },
        "rmw_microxrcedds": {
            "cmake-args": [
                "-DRMW_UXRCE_MAX_NODES=1",
                "-DRMW_UXRCE_MAX_PUBLISHERS=5",
                "-DRMW_UXRCE_MAX_SUBSCRIPTIONS=5",
                "-DRMW_UXRCE_MAX_SERVICES=1",
                "-DRMW_UXRCE_MAX_CLIENTS=1",
                "-DRMW_UXRCE_MAX_HISTORY=4",
                "-DRMW_UXRCE_TRANSPORT=custom"
            ]
        }
    }
}



my_custom_toolchain.cmake
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_CROSSCOMPILING 1)
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)

# SET HERE THE PATH TO YOUR C99 AND C++ COMPILERS
set(CMAKE_C_COMPILER $ENV{TOOLCHAIN_PREFIX}gcc)
set(CMAKE_CXX_COMPILER $ENV{TOOLCHAIN_PREFIX}g++)

set(NUTTX_INCLUDE_DIR "$ENV{HOME}/.arduino15/packages/SPRESENSE/tools\
/spresense-sdk/3.0.1/spresense/release/nuttx/include")
set(ARDUINO_INCLUDE_DIR "$ENV{HOME}/.arduino15/packages/SPRESENSE/hardware/\
spresense/3.0.1/cores/spresense")

set(CMAKE_C_COMPILER_WORKS 1 CACHE INTERNAL "")
set(CMAKE_CXX_COMPILER_WORKS 1 CACHE INTERNAL "")

# SET HERE YOUR BUILDING FLAGS
set(FLAGS "-c -fno-builtin -mabi=aapcs -Wall -fno-strict-aliasing -Os \
-fno-strength-reduce -fomit-frame-pointer -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 \
-mfloat-abi=hard -mthumb -nostdlib -pipe -ggdb -gdwarf-3 -ffunction-sections \
-fdata-sections -DCONFIG_WCHAR_BUILTIN -DCONFIG_HAVE_DOUBLE -D__NuttX__ \
-D'RCUTILS_LOG_MIN_SEVERITY=RCUTILS_LOG_MIN_SEVERITY_NONE\
'" CACHE STRING "" FORCE)

set(CMAKE_C_FLAGS_INIT "-w -MMD -std=gnu11 ${FLAGS} -DCLOCK_MONOTONIC=0 \
-D'__attribute__(x)='" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_INIT "-w -MMD -std=gnu++11 ${FLAGS} -fno-exceptions \
-fno-rtti -fpermissive -DCLOCK_MONOTONIC=0 \
-D'__attribute__(x)='" CACHE STRING "" FORCE)

include_directories(BEFORE SYSTEM ${NUTTX_INCLUDE_DIR} ${ARDUINO_CINLUDE_DIR})

set(__BIG_ENDIAN__ 0)


$TOOLCHAIN_PREFIX は、".bashrc"の中で定義されています。

.bashrc
export TOOLCHAIN_PREFIX='$HOME/.arduino15/packages/
SPRESENSE/tools/gcc-arm-none-eabi/9.2.1/linux/bin/arm-none-eabi-'




micro-ROS static library をビルドします。

# Build micro-ROS static library
ros2 run micro_ros_setup build_firmware.sh $(pwd)/my_custom_toolchain.cmake $(pwd)/my_custom_colcon.meta



ビルドに成功すると、次の場所に static library と必要な include ファイルが生成されます。

firmware/build/libmicroros.a
firmware/include

これでひととおり micro-ROS で開発する環境を整えることができました![わーい(嬉しい顔)]





ロボットプログラミングROS2の実装・実践 -実用ロボットの開発- (設計技術シリーズ96)

ロボットプログラミングROS2の実装・実践 -実用ロボットの開発- (設計技術シリーズ96)

  • 作者: 内木場 文男
  • 出版社/メーカー: 科学情報出版株式会社
  • 発売日: 2021/07/21
  • メディア: 単行本



ROS2の基礎とJetBotの制御: ROS2 Foxyを使ったプログラミング

ROS2の基礎とJetBotの制御: ROS2 Foxyを使ったプログラミング

  • 作者: 大西和則
  • 出版社/メーカー:
  • 発売日: 2021/06/19
  • メディア: Kindle版



タグ:ROS2 micro-ROS
nice!(9)  コメント(0) 

大人気心霊Youtubeチャンネル「ゾゾゾ家賃の安い部屋」でSPRESENSEカメラが登場! [徒然日記]

大人気心霊Youtubeチャンネル「ゾゾゾ家賃の安い部屋」でSPRESENSEで自作カメラで写した心霊写真が紹介されました。それがこちらのカメラ。赤外線アレイセンサーと人感センサーを組み合わせたものです。

GhostCamera.jpg

紹介された動画はこちらです。どんな心霊写真が撮れたかは動画を見てくださいね。(自分のブログに生データを貼り付けるのは躊躇するレベルなのでご勘弁)





エンジニアでありながら、オカルト好きな私は、心霊Youtubeチャンネル「ゾゾゾ」の大ファンで、特に心霊写真を特集しているサブチャンネル「家賃の安い部屋」は一回目から見ていました。

しかし、自分がまさか投稿するとは思ってもいませんでした。実はこの写真には後日談があって、ゾゾゾには、”何事もなく平和”と伝えていたのですが、この写真を投稿したちょうど一ヶ月後くらいにカミさんのお義父さんが突然亡くなっているのです。(投稿してから動画になるまで数ヶ月かかっています)

ひょっとしたら、あの写真はそのことを知らせに来たのかもしれません。振り返ってあらためて見ると、ちょっと怖いですね…、

「ゾゾゾ」はやらせなしのドキュメンタリー形式の心霊検証番組です。エンターテイメント性が高く、怖いけど楽しめるホラー系では珍しいチャンネルです。皆さんも、ぜひご覧になってはいかがでしょうか。お勧めです!






ゾゾゾ変 (1) 【電子限定カラーイラスト収録&電子限定おまけ付き】 (バーズコミックス)

ゾゾゾ変 (1) 【電子限定カラーイラスト収録&電子限定おまけ付き】 (バーズコミックス)

  • 出版社/メーカー: 幻冬舎コミックス
  • 発売日: 2023/01/24
  • メディア: Kindle版



最恐心霊スポット (~ゾゾゾが体験した禁断の恐怖~)

最恐心霊スポット (~ゾゾゾが体験した禁断の恐怖~)

  • 出版社/メーカー: 日本文芸社
  • 発売日: 2020/07/21
  • メディア: 単行本(ソフトカバー)



SONY SPRESENSE メインボード CXD5602PWBMAIN1

SONY SPRESENSE メインボード CXD5602PWBMAIN1

  • 出版社/メーカー: スプレッセンス(Spresense)
  • メディア: Tools & Hardware



SONY SPRESENSE カメラモジュール CXD5602PWBCAM1

SONY SPRESENSE カメラモジュール CXD5602PWBCAM1

  • 出版社/メーカー: スプレッセンス(Spresense)
  • メディア: Tools & Hardware



タグ:心霊 Spresense

WSL2 で GnuPlot を使って極座標を表示する [徒然日記]

シミュレーションデータのグラフ化にエクセルを使おうと思ったのですが、せっかくならシミュレーションプログラムを作っている WSL2 の環境から Gnuplot を直接呼べるようにしました。

手順は次の5ステップです。

【STEP1】 WSL2 (Ubunt 22.04.2 TLS) をMicrosoft Storeからインストール 
【STEP2】 VcXsrv Windows X Server をインストール
【STEP3】 スタートメニューから「XLaunch」を選択して起動 ※"Disable access control"をチェック
【STEP4】 WSL2 のターミナルを開いて、gnuplot をインストール ※ sudo apt install gnuplot
【STEP5】 WSL2 のターミナル上で gnuplot を起動してデータをグラフ化


VcXsrvのインストール、起動方法はこちらのサイトがわかりやすいです。

次のようなデータファイルを"beam.dat"を用意します。

-90.000000 -13.006601
-89.639279 -13.007419
-89.278557 -13.009873
-88.917836 -13.013969
-88.557114 -13.019712
-88.196393 -13.027112
-87.835671 -13.036182
-87.474950 -13.046937
-87.114228 -13.059395
....
89.639279 -13.007419
90.000000 -13.006601


このデータを極座標で表示するために、次の GnuPlot のスクリプトファイル”polor.gnuplot”を用意しました。

reset
set angles degrees
set polar
set grid polar 30 lc rgbcolor "#999999"
unset border
unset param
set size ratio 1 1,1
set xtics axis nomirror -50,10
unset ytics
unset key
set style data line
set xrange[-50:50]
set yrange[-50:50]
set rrange[-50:0]
set label 1 "0°" at graph 1.01,0.5 front
set label 2 "180°" at graph -0.01,0.5 right front
set label 3 "-90°" at graph 0.5,-0.03 center front
set label 4 "90°" at graph 0.5,1.03 center front
plot 'beam.dat' 


このスクリプトは次の手順で表示できます。

$ gnuplot
gnuplot> call 'polor.gnuplot'


こちらが表示したグラフです。極座標のグラフが表示できました。^^


polor_gnuplot.png



使いこなすgnuplot

使いこなすgnuplot

  • 作者: 大竹 敢
  • 出版社/メーカー: テクノプレス
  • 発売日: 2023/03/13
  • メディア: 単行本

タグ:WSL2 Gnuplot
コメント(0) 

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。