Carla と Ros の共同シミュレーション計画アルゴリズムの指導と落とし穴の経験

Carla と Ros の共同シミュレーション教育と落とし穴体験 - 自動運転計画アルゴリズム (Apollo および Autoware 計画アルゴリズムを含む)

序文

シミュレーションと実験には carla を使用する必要があり、このプラットフォームを数か月間研究しています。
すべての ros パッケージを保持しているわけではなく、使用するためにいくつかを選択し、その他は拡張できることに注意してください。

carla0.9.5バージョンとcarla0.9.11バージョンの比較

carla-0.9.5 の利点:

(1) メモリは少なく、グラフィックス カードの要件は高くなく、操作はフレンドリーです。

(2) コード フレームワークは使いやすく、従来の計画アルゴリズムを学習および使用するのに十分です。

(3) 初心者向け。

carla-0.9.5 の欠点:

(1) センサーが不完全である。

(2) ros-bridge は carla でマーカーを描画できません。

(3) ros-bridgeでは信号機などの道路情報を購読できません

(4) ros-bridge は ROS1 のみをサポートします

carla-0.9.11 の利点:

(1) ros-bridge は複数のエージェント carla_ad_agent に拡張できます (このパッケージは現在の開発中に私によって削除されました)

(2) ros-bridgeは信号機などの道路情報を購読可能

(3) ros-bridge は carla でマーカーを描画できます

(4) ros-bridge は ROS2 に拡張可能

(5) センサーの完成度が向上

carla-0.9.11 の欠点:

(1) 長時間実行するとリーダーボードがクラッシュしますが、原因はまだ判明していません...ランダムに発生します。

4.26.2-0+++UE4+Release-4.26 522 0
Disabling core dumps.
Signal 11 caught.
Malloc Size=65538 LargeMemoryPoolOffset=65554 
CommonUnixCrashHandler: Signal=11
Malloc Size=131160 LargeMemoryPoolOffset=196744 
Malloc Size=131160 LargeMemoryPoolOffset=327928 
Engine crash handling finished; re-raising signal 11 for the default handler. Good bye.
Segmentation fault (core dumped)

(2) メモリはバージョン 0.9.5 よりも大きく、グラフィックス カードの要件も高くなります。

(3) さらにバグがあります たとえば、車を配置するために書いたコードはバージョン 0.9.5 では問題ありませんが、バージョン 0.9.11 ではオフセットされてしまいます。

(4) ros と rviz を組み合わせて閉じると、CarlaUE4 が簡単にハングします。

研究の提案

(1) パス計画と制御アルゴリズムの使用のみを学習し、コンピュータの構成が貧弱な場合は、バグの少ない carla-0.9.5 バージョンを使用することをお勧めします。

(2) 知覚フュージョンやポジショニングフュージョンなど他のコンテンツを学びたい場合は、センサーが完成している carla-0.9.11 以降のバージョンを使用することをお勧めしますが、このバージョンにはバグが多くあります。

(3) carla バージョン 0.9.6、0.9.7、0.9.8、および 0.9.9 には TF バグがあるため、使用しないでください。

carla は ros-version 0.9.5 と共同開発しました

carla-0.9.5 ソースコード:

https://github.com/carla-simulator/carla/tree/0.9.5

ダウンロード後、解凍してフォルダー全体に権限を与えます。

sudo chmod -R 777 文件夹

Carla 単独のコードテスト

設置環境

pip install pygame numpy future networkx scikit-learn
pip install networkx
sudo apt-get install -y libomp5
sudo apt-get install jstest-gtk

Python3.8を使用しています

環境を構成してテストする

まず ~/.bashrc に追加します。

export PYTHONPATH=$PYTHONPATH:/opt/carla-0.9.5/PythonAPI/carla/dist/carla-0.9.5-py3.5-linux-x86_64.egg
export PYTHONPATH=$PYTHONPATH:/opt/carla-0.9.5/PythonAPI/egg/carla-0.9.5-py3.5-linux-x86_64.egg:/opt/carla-0.9.5/PythonAPI/agents

それから:

source ~/.bashrc

テストを受けてください:
python -c 'import carla; print("Success")'

カーラを実行します:

./CarlaUE4.sh # 电脑配置可以
./CarlaUE4.sh -prefernvidia -quality-level=Low -benchmark -fps=15  # 电脑配置可以

-prefernvidia: NVIDIA グラフィックス カードから開始

-quality-level=Low: レンダリングレベルを下げます。

-benchmark -fps=15: エンジンは 1/15 秒の固定時間でステップごとに実行されます。

利用可能な構成オプション:

carla-rpc-port=N:侦听端口 N 处的客户端连接。默认情况下,流式端口 Streaming port 设置为 N+1;
carla-streaming-port=N:指定用于传感器数据流的端口。 使用 0 获取随机未使用的端口。 第二个端口将自动设置为 N + 1;
quality-level={Low,Epic}:更改图形质量级别;
-carla-server:让 carla以服务的方式运行;
-benchmark -fps=15:引擎以1/15秒的固定时间逐步运行;
-windowed -ResX=800 -ResY=600:屏幕窗口大小;

py スクリプトをテストします。

python PythonAPI/examples/spawn_npc.py -n 30
python PythonAPI/examples/manual_control.py  
python PythonAPI/examples/automatic_control.py
python PythonAPI/examples/dynamic_weather.py -s 5   

-s 5 は、天候の変化を 5 倍加速することを意味します。

vscode を使用してフォルダーを開くと、実行中に一部の py ファイルがディレクトリを見つけることができない場合があることに注意してください。次の手順に従ってインポート ディレクトリを変更できます。

import sys
import os
sys.path.append(os.path.join(os.path.dirname(__file__), '../'))

ros-ブリッジ (バージョン 0.9.5.1)

ソースコードのダウンロード: https://github.com/carla-simulator/ros-bridge/tree/0.9.5.1

ダウンロード後解凍してください。

依存環境をインストールする

sudo apt-get install python-protobuf
sudo apt install ros-noetic-ackermann-msgs
sudo apt install ros-noetic-derived-object-msgs
sudo apt install ros-noetic-vision-msgs

(base) pip install pyyaml
(base) pip install simple_pid
(base) pip3 install pycryptodomex

コンパイル

py をコンパイルする必要はありません。

1.catkin build carla_msgs t4ac_msgs
2.catkin build

走る

ウィンドウで carla を実行します。

./CarlaUE4.sh -windowed -ResX=640 -ResY=480 -quality-level=Low -fps=15

さらに車両を追加する

python PythonAPI/examples/spawn_npc.py -n 30

テスト

source ./devel/setup.bash
roslaunch carla_ros_bridge carla_ros_bridge_with_example_ego_vehicle.launch
(注意:此launch文件在本人开发的工程中被本人修改)

コマンドを実行してrvizをロードすると、自動運転車のマーカー、他の車両のマーカー、画像などが表示されます。rostopic リストを通じて、公開および購読されたトピックを表示することもできます。

具体的な参照: https://github.com/carla-simulator/ros-bridge/tree/0.9.5.1

carla-0.9.5用に私が実装したrosジョイントシミュレーションプロセス

注: carla バージョンと ros バージョンは一致している必要があります。一致していないと機能しません。

1. ros-bridge の python2 コンテンツを python3 に変更します。

これは簡単です。Python3 が最初にエラーを報告する場所が 2 か所あります。修正計画は次のとおりです。

(1) has_key 関数が に変更されます。

(2) items() は iteritems() を置き換えます

2. ソースコードを変更する

ソースコードを修正しましたが、いくつかの細かいバグを除けば、主に以下の点があります。

(1) 以下の ros パッケージとプロトコルのみを保持し、carla_msgs を自分の msgs フォルダーに移動しました。バージョン 0.9.5 では、carla_waypoint_publisher を carla_ego_vehicle.py に統合しました。バージョン 0.9.11 は carla_waypoint_publisher を保持します。詳細については、バージョン 0.9.11 の概要を参照してください。

[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-uqX0mXrF-1688824666285)(/home/cg/.config/Typora/typora-user) -images/image-20230122094733881 .png)]

(2) 新しいフォルダー my_py を作成し、主に 3 つのスクリプトを記述します

[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-U6pMZm1w-1688824666286)(/home/cg/.config/Typora/typora-user) -images/image-20230122094831393 .png)]

機能は、マップの変更、アクターの破壊、静止車両の静止障害物としての配置です。

(3) ros-bridge/carla_ego_vehicle/src/carla_ego_vehicle/carla_ego_vehicle.py のソースコードを修正します。主に以下の内容を修正します。

a.修改起点发布的话题,"/carla/{}/initialpose".format(self.role_name)修改为"/initialpose"
b.增加监视器spectator
c.增加终点订阅,还有全局规划导航点的获取和显示

(4) 起動ファイルを変更し、ros-bridge/carla_ros_bridge/launch/carla_ros_bridge_with_ego_vehicle.launch の起動ファイルを変更し、ros-bridge プロジェクト内の冗長なテスト起動ファイルを削除します。

6. carla-ros-bridge-0.9.5 バージョンの落とし穴

(1) 制御命令の落とし穴

わかりません。「/carla/」+role_name+「/vehicle_control_cmd」で制御しています。走行中に車は逸れてしまい、座標系が逆転してしまいます。つまり、元々ハンドルを左に切っていたのです。右側がマイナスなので、右側がプラス、左側がマイナスなので、「/carla/」+role_name+「/ackermann_cmd」に変更して制御したところ、車は逸脱しなくなりました。これら 2 つのトピックの違いは次のとおりです。

/carla/" + role_name + "/vehicle_control_cmd:发送的是油门(不等同于速度)和转角,左手坐标系

/carla/" + role_name + "/ackermann_cmd:发送速度,和转角弧度,右手坐标系,同时可以发送控制加速度的指令,对目标使用PID进行跟踪。

(2) カーブのピット

ターゲットが90度曲がりを駆動できない、軌道計画に問題がない、単純なrosシミュレーションに問題がない、具体的な原因は制御方法とパラメータ設定にあるはずですが、まだ解決されていません。

(3) 自動運転車の role_name は hero と ego_vehicle の間でのみ選択できますが、ros シミュレーションにおける 2 つの自動運転車追跡効果は異なります。

7. メソッドをコンパイル、実行、使用する

動画内容を参考にしてください。

よくあるエラー

1.トラフィック マネージャー用の RPC サーバーを作成しようとしましたが、システムは CR に失敗しました

netstat -tnlp | grep :8000
kill -9 pid

2.INTEL-MESA: 警告: パフォーマンス サポートが無効になっています。sysctl dev.i915.perf_stream_paranoid=0 を検討してください。

sudo sysctl dev.i915.perf_stream_paranoid=0

3. エラーを報告します。

X 失敗したリクエストのエラー: BadDrawable (無効な Pixmap または Window パラメータ)
失敗したリクエストのメジャー オペコード: 149 ()
失敗したリクエストのマイナー オペコード: 4
失敗したリクエストのリソース ID: 0x4600041
失敗したリクエストのシリアル番号: 388
出力ストリームの現在のシリアル番号: 399
タイプ std::__1::system_error のキャッチされない例外で終了します: ミューテックス ロックに失敗しました: 無効な引数
シグナル 6 をキャッチしました。
セグメンテーション違反 (コアダンプ)

./CarlaUE4.sh -prefernvidia

効果

ここに画像の説明を挿入します

コードが必要な場合は、プライベートメッセージを送信してください

Supongo que te gusta

Origin blog.csdn.net/weixin_39735688/article/details/131616964
Recomendado
Clasificación