Skip to main content

CによるGimbalの深層開発

reCamera Gimbalの開発には3つのアプローチがあります:

  1. Node-REDノードを使用したアプリケーションロジック開発
  2. ターミナルコマンドを介したcan-utilsツールを使用したBashスクリプト
  3. クロスコンパイル環境のセットアップとバイナリコンパイルが必要なCプログラミング

このドキュメントでは、Cプログラミングを使用してreCamera Gimbalを開発する方法について包括的なガイドを提供します。

Node-REDベースの開発については、以下を参照してください:
Node-RED開発ドキュメント

開発前に、開発環境にクロスコンパイル環境をインストールする必要があります。

Linux:

sudo apt-get update
sudo apt-get install can-utils

mkdir recamera && cd recamera

wget https://github.com/Seeed-Studio/reCamera-OS/releases/download/0.2.0/reCameraOS_sdk_v0.2.0.tar.gz

tar -xzvf reCameraOS_sdk_v0.2.0.tar.gz

git clone https://github.com/sophgo/host-tools.git
git clone https://github.com/Seeed-Studio/sscma-example-sg200x.git

export SG200X_SDK_PATH=$HOME/recamera/sg2002_recamera_emmc/
export PATH=$HOME/recamera/host-tools/gcc/riscv64-linux-musl-x86_64/bin:$PATH

ケースプログラムのダウンロード

sudo apt-get install unzip
wget https://files.seeedstudio.com/wiki/reCamera/Gimbal/CAN.zip
unzip CAN.zip

ディレクトリ構造は以下のとおりです:

Makefileを修正して、CC変数を独自のクロスコンパイルツールチェーンに置き換える必要があります。

CC = $HOME/recamera/host-tools/gcc/riscv64-linux-musl-x86_64/bin/riscv64-unknown-linux-musl-gcc

プログラムのコンパイル

cd CAN/can_send
mkdir build && cd build
cmake ../
make

コンパイルされたバイナリをreCameraにアップロード

scp can_send recamera@ip_address:/home/recamera

candump can0を使用してCANバスデータを表示 sudo ./can_sendを使用してスクリプトをテスト

プログラム解析

これらのコマンドはCANバスレートとインターフェースステータスを設定するために使用され、アプリケーションで一度だけ初期化する必要があります。

"sudo ip link set can0 type can bitrate 100000"
"sudo ifconfig can0 up"

図に示すように、can_send.cファイルでは、上記のコマンドがsystem関数を使用して呼び出されています。

CANフレームのID、データ長、データを格納するためのCANフレーム構造を定義する必要があります。 そして、memset関数を使用してCANフレーム構造をゼロにクリアします。

struct can_frame frame;
memset(&frame, 0, sizeof(struct can_frame));

can_idとcan_dlcを設定して、CANフレームのIDとデータ長を構成できます。 これは標準的なCANフレームデータ形式です。 nbytes = write(s, &frame, sizeof(frame));を使用してCANフレームをCANバスに送信すると、送信されたバイト数が返されます。返された値を期待されるバイト数と比較して、CANフレームが正常に送信されたかどうかを判断できます。

 //5.Set send data
frame.can_id = 0x141;
frame.can_dlc = 8;
frame.data[0] = 0x80;
frame.data[1] = 0x00;
frame.data[2] = 0x00;
frame.data[3] = 0x00;
frame.data[4] = 0x00;
frame.data[5] = 0x00;;
frame.data[6] = 0x00;
frame.data[7] = 0x00

私たちのGithubリポジトリでより多くのCプログラムを参照できます。

Gimbal関連のプログラムはNode-REDコンポーネントに基づいて開発されていることに注意してください。今後はNode-REDプログラムのみを維持するため、Node-REDで直接参照して開発できます。

Cプログラムは維持されていないため、モーターファームウェアの更新に伴い無効になる可能性があります。開発には私たちの最新モーターマニュアルを使用して正しいコマンドをカプセル化してください。

リソース

技術サポート & 製品ディスカッション

私たちの製品をお選びいただき、ありがとうございます!私たちの製品での体験ができるだけスムーズになるよう、さまざまなサポートを提供しています。さまざまな好みやニーズに対応するため、複数のコミュニケーションチャネルを提供しています。

Loading Comments...