目次
2.1 関数パッケージのプラクティスを作成してコンパイルします。
3.1 車の動きのpyファイルを書き込み、コンパイルしてデバッグする
ロボットカーの動作制御設計
1 ロボットカーの概要
1.1 トロリーの構造
この実験では、EProbot スマート カーを使用します。EProbot スマート カーは、学部生や高等専門学生のさまざまなグループ向けに、コンピューター プログラミング、ロボット開発、組み込みシステム開発のためにカスタマイズおよび開発された学習プラットフォームです。EProbot は最新の Raspberry Pi 4B カード コンピューターをベースに開発されており、深くカスタマイズされたシャーシ コントローラーを備えており、車の機能とパフォーマンスを最大限に引き出します。
市販の製品とは異なり、Silane A1 は停止し、ROS 起動プログラムを実行してから起動します。これにより、バッテリーをより効率的に使用でき、レーダーを手動で切り替える手間が大幅に節約されます。
2 試験および演習を開始する前の準備
仮想マシンまたは車のシステム上に新しいワークスペースを作成して、テストおよび実行するコードを保存し、関数パッケージを作成してワークスペースをコンパイルします。今回の実験では、車のRaspberry Piを使用し、関連する設定も充実していたので、コンパイル済みの車のワークスペースrobot_wsを使用して環境変数を設定し、その中に関数パッケージを作成してコンパイルしました。と:
2.1 関数パッケージのプラクティスを作成してコンパイルします。
2.1.1 関数パッケージのプラクティスを作成します。
$cd ~/robot_ws/src
$catkin_create_pkg std_msgs roscpp rospy を練習する
2.1.2 関数パッケージの練習をコンパイルします。
$cd ~/robot_ws
$catkin_make
#catkin_make -DCATKIN_WHITELIST_PACKAGES="パッケージ名"
$source ~/robot_ws/devel/setup.bash
2.2 トピックメッセージの表示
rosmsg show nav_msgs/Odometry
std_msgs/Header ヘッダー
uint32 シーケンス
タイムスタンプ
文字列フレームID
文字列 child_frame_id
geometry_msgs/PoseWithCovariance ポーズ
geometry_msgs/ポーズポーズ
geometry_msgs/ポイント位置
float64x
float64y
float64z
geometry_msgs/クォータニオンの向き
float64x
float64y
float64z
float64w
float64[36] 共分散
geometry_msgs/TwistWithCovariance ツイスト
geometry_msgs/ツイストツイスト
geometry_msgs/Vector3 線形
float64x
float64y
float64z
geometry_msgs/Vector3 角度
float64x
float64y
float64z
float64[36] 共分散
3 コード分析
3.1 車の動きのpyファイルを書き込み、コンパイルしてデバッグする
3.2 ワンクリックスタートファイルの起動
車を使用することで、ROS で実行中のプログラムのほとんどがシステムの起動を通じて完了し、ssh ソフトウェアまたは仮想マシンの ssh コマンドを使用して車に接続し、コマンドを入力することで完了することがわかります。リモート端末で対応する起動ファイルを実行し、関連するプログラムを実行します。しかし、開発したプログラムを特定の製品に適用する場合など、Raspberry PiのROSプログラムもシングルチップマイコンのプログラムと同様に、電源を入れると自動的に実行されることが必要な場合が多くあります。したがって、指定した ROS プログラムが起動時に自動的に起動するように設定する必要があります。
この実験では、test.launch ファイルは、主に MCU と TCP 間の接続と相互通信を通じて、ブート時に自動的に開始されるように設定されます。
<打ち上げ>
<include file="$(find robot_ws)/launch/EPRobot_start.launch"/>
<node pkg="practice" name="practice" type="test.py" Output="screen"/>
</起動>
4 シミュレーターで車の進路をシミュレーションする
今回は arbotix シミュレーター + rviz ディスプレイを使用してシミュレーションを行いました 主なコマンドは以下の通りです: 車の下側ドライバーを起動します: roslaunch eprobot_start EPRobot_start.launch
エミュレータを起動します: roslaunch mbot_description arbotix_mbot_with_camera_xacro.launch (図 3 を参照)
キーボード コントロールを起動します: roslaunch mbot_teleop mbot_teleop.launch
py ファイルを開始します: rosrun practice test1.py
6 実験原理:
今回使用した車はRaspberry Pi rosプログラムを使用しており、EProbotが使用する経路計画およびナビゲーションアルゴリズムはアッカーマンシャーシ構造の車を対象としたTEBアルゴリズムです。ロボットが円形差動ステアリング車の場合は、DWA アルゴリズムを使用する必要があります。
X1 方向を車の正の方向と定義すると、それがロボットの方向角となるため、ロボットの運動軌跡とロボットの姿勢を平面上で完全に表現できるのが 3 次元ベクトルです。
直線運動を行う場合、運動中の車の方向角は一定である必要があるため、=0
円弧運動の状況は図 7 に示されており、車の回転半径を考慮する必要があり、0 の中心が車の速度の瞬間中心です。
剛体運動学の知識から車の瞬間的な運動状態を求めることは容易であり、左輪の速度が右輪よりも遅い、あるいは右輪の速度が速いことがわかります。右輪移動時の重心は左輪よりも小さくなり、ロボットの重心は円運動を実現します。