Pythonでソケット越しにコマンドを受け取ってRoombaをROSで制御する

自前のシステムから指令を送ってRoombaをROS越しに制御するための準備。
まずはテストということで、Pythonで何か文字列を受け取ったら移動コマンドを発行する簡単なプログラムを作成してみた。
ROSではじめるロボットプログラミングを参考に、パッケージの作成からコンパイルまで以下の通りやってみた。
文字列を解釈してTopicの内容を変える…とかは,ここまで出来れば後は簡単なはず。

スポンサーリンク


スポンサーリンク

(~/rostestをワークスペースとしている)
mkdir -p ~/rostest/src
cd ~/rostest/src
catkin_init_workspace
cd ~/rostest
catkin_make
source ~/rostest/devel/setup.bach
(必要なら~/.bashrcに追記して読み込みを自動化する)
cd ~/rostest/src
catkin_create_pkg python_test rospy roscpp std_msgs
cd ~/rostest
catkin_make
source ~/rostest/devel/setup.bach
cd ~/rostest/src/python_test
(ここにtalker.pyを作る。コードは後で)
chmod 755 talker.py
(roscore, rosrun roomba_500_series roomba500_light_nodeを別ターミナルで実行しておく)
rosrun python_test talker.py

以上を実行したうえで、クライアントのプログラムから何か文字列を送ればtalker.pyからTopicが送られてRoombaが左方向に2秒、右方向に2秒動くはず。自分はTCP/IPテストツールを使った。

以下、talker.pyの中身。

スポンサーリンク


スポンサーリンク

Blenderでスムースシェーディング

プログラム上でポリゴンモデルを描画するとき、面法線(ポリゴンを構成する各頂点の法線が同じ)を使ったフラットシェーディングだと滑らかな表示になりにくい。頂点法線を使ったスムースシェーディングを行うにはプログラム上で法線を再計算する方法もあるけど、Blenderでお手軽にモデルデータを変更できたのでその際の作業メモ。Blenderのバージョンは2.74。

続きを読む →

EdisonでUSB用LANアダプタと無線を切り替えてネットワークにつなぐ

やはり今の環境では同時につなぐと接続が片方に限られるので、シェルで切り替えるようにした。
とはいえやっていることは単純で、片方のデバイスをDownさせて、もう片方をUPするだけ。
念のためにDHCPでIPをとりにいくように明示的にコマンドで指定してる。

続きを読む →