お久しぶりです。おんせん君です。
今回は、岐大祭のために調整していたC106と、ギダイガ―についての現況報告でございます。
二体とも、ここの所調子を崩していたのです。
ところが、ギダイガ―は偉大なる諸先輩方の力で復帰し、ロボワン講習会でその任を果たしていたのです。一方、C106については、この度私が取説とにらめっこをしながらなんとか直立させるまでは復帰できました。
主な不調の原因は、サーボのトリム調整が出来ていなかったことでした。
もう、ひっちゃかめっちゃかな状態でした。とりあえず、丁寧に調整して少しマシになったな? といったところですね。
もう一つ。
windows10だからか、ギダイガ―とC106を上手くパソコンが認識できなかったという問題がありました。そちらについては、近藤科学さんから出ているUSB Serial Adapter HSのドライバの最新版に変更したらあっさりと認識できるようになりました。
おかげで、モーション作成、サーボの確認等がしっかりとできるようになりました。
とはいえ、なかなか安定して認識してくれず、困りものです。認識できるときは安定して認識してくれるのですが……
なにはともあれ、岐大祭では二体とも動きそうで良かったです♪
2017年10月27日金曜日
2017年10月10日火曜日
結論:がんばる
こんにちは! はじめまして! 1年ハードのかとたくと申します!
この前のとうロボでは足回りと射出機構を作ってました。
1年でトップバッターなので何書いていいかわかりません。
そもそも誰が見てくださってるのかな・・・。
当たり障りのないことを、つれづれなるママに書いていこうと思います。
最近暑くなったり寒くなったり大変ですよね。みなさん体調はいかがでしょうか。
私は死んでます。現在、岐阜大学ロボコンサークルは、来年のNHKロボコンに向けて元気に活動しております。
そろそろ作戦も固まってきたので、ハードとしては 設計→試作→設計... の無限ループが
始まりそうです。
無限ループってこわいですよね。ほんと。
また、NHKと並行して、今月末の大学祭(10/28,29)への準備も進められています。
今年もクレープ売ってロボット走らせますよ!!
看板の製作は1年が担当することになっているのですが、去年の看板がカッコよすぎて
ハードルがもうアレです。
まあ看板がどうであれ、クレープとロボット展示、ぜひお越しください!!正門あたりまで行列が続くといいな。
大学祭、NHK・・・と、これから長いので、体調崩さないようにがんばっていきたいと
思います。2017年10月3日火曜日
1byteを重複して分割する方法
こんにちは、2年制御長のヒロです。
今回はとうロボで使った通信用共用体の解説です。
マスタースレイブ間でのUSART通信時に1byte単位で送るのに情報圧縮をしよう、ということで共用体とビットフィールドを組み合わせて使ってみました。ここで1byteを場合に応じて、分割する領域を変える必要があったため、2つの構造体を使用しています。具体的なソースコードは以下のようになります。
typedef union air{
unsigned char data:8;
struct{
unsigned char operate:3;
unsigned char info:5;
};
struct{
unsigned char invalid:3;/*operateと同じ内容使わない*/
unsigned char num:4;/*個体識別番号*/
unsigned char state:1;
};
}air;
dataは通信時に使用します。中身は後に出てくる二つの構造体に酔って変動します。oprerateは操作を指定するのに使用します。マクロで操作を記述しておくとさらに見やすくなります。infoはnumとstateを使用しない操作を指定したときにその分のビットをまとめてより情報量を多くするのに使いました。
構造体の性質上、識別子の名前からなんのデータを取り扱っているか分りやすい点、ビットフィールドを使うので桁あふれが起こらないという点で便利ですが、いちいち指定するのがめんどかったりします。ビット演算だけで行う方がいいかもしれません。
今回はとうロボで使った通信用共用体の解説です。
マスタースレイブ間でのUSART通信時に1byte単位で送るのに情報圧縮をしよう、ということで共用体とビットフィールドを組み合わせて使ってみました。ここで1byteを場合に応じて、分割する領域を変える必要があったため、2つの構造体を使用しています。具体的なソースコードは以下のようになります。
typedef union air{
unsigned char data:8;
struct{
unsigned char operate:3;
unsigned char info:5;
};
struct{
unsigned char invalid:3;/*operateと同じ内容使わない*/
unsigned char num:4;/*個体識別番号*/
unsigned char state:1;
};
}air;
typedef union air{
unsigned char data:8;
struct{
unsigned char operate:3;
unsigned char info:5;
};
struct{
unsigned char invalid:3;/*operateと同じ内容使わない*/
unsigned char num:4;/*個体識別番号*/
unsigned char state:1;
};
}air;
dataは通信時に使用します。中身は後に出てくる二つの構造体に酔って変動します。oprerateは操作を指定するのに使用します。マクロで操作を記述しておくとさらに見やすくなります。infoはnumとstateを使用しない操作を指定したときにその分のビットをまとめてより情報量を多くするのに使いました。
構造体の性質上、識別子の名前からなんのデータを取り扱っているか分りやすい点、ビットフィールドを使うので桁あふれが起こらないという点で便利ですが、いちいち指定するのがめんどかったりします。ビット演算だけで行う方がいいかもしれません。
登録:
投稿 (Atom)