この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転載したものです。転載については出典元にお問い合わせください。 1. 背景最近、自動運転の分野へのハイテク移行の方法についてシェアしていたところ、何人かの友人から同じ質問をされました。「L2~L4の自動運転のポジションは何ですか?具体的な仕事内容は?どのようなスキルが必要ですか?」今日は、誰もが知りたいこのトピックについてシェアしたいと思います。 まずは、自動運転の全体的な概念を皆さんに理解していただくために、自動運転のシステムブロック図(簡易版)をご紹介します。 - 次に、アルゴリズムエンジニアと非アルゴリズムエンジニアの2つのカテゴリに分けて紹介します。
- アルゴリズムエンジニア
- レーザーSLAMアルゴリズムエンジニア
- Visual SLAMアルゴリズムエンジニア
- マルチセンサー融合アルゴリズムエンジニア
- 機械学習アルゴリズムエンジニア
- コンピュータビジョンアルゴリズムエンジニア
- 自然言語処理アルゴリズムエンジニア
- 意思決定アルゴリズムエンジニア
- 企画アルゴリズムエンジニア
- 制御アルゴリズムエンジニア
- ソフトウェアプラットフォーム開発エンジニア
- システムエンジニア
- 機能安全エンジニア
- 校正エンジニア
- シミュレーション環境エンジニア
- テストエンジニア
- データエンジニア
- UI開発エンジニア
- 以下は、各職位の職務内容と学習内容の詳細な説明です。
2. アルゴリズムエンジニア2.1. レーザーSLAMアルゴリズムエンジニア- 仕事内容:
- レーザーセンサーデータを収集し、ポイントクラウドデータに基づいて自律走行車の周囲のマップを構築します。
- さまざまな複雑なシナリオをカバーする高精度マップを更新および作成できる、レーザーセンサーに基づく SLAM アルゴリズムの設計と開発を担当します。
- 必要なスキル:
- C および C++ を使用したプログラミング。
- フィルタリング アルゴリズムに関する知識が必要です: ESKF、EKF、UKF など。
- 同時に、非線形誤差関数を最適化するために、G2O や ceres などの C++ フレームワークを学習する必要があります。
- GLoam、kimera、VINS などのオープンソース SLAM フレームワークに精通していることが望ましいです。
2.2. ビジュアルSLAMアルゴリズムエンジニア- 仕事内容:
- VSLAM に基づいて、LIDAR、ジャイロスコープ、オドメーター、ビジョンなどのマルチ情報融合に基づくロボット動作モデルの構築を含む、ロボットの自律ナビゲーションおよび位置決めアルゴリズムを開発します。
- 必要なスキル:
- ORB-SLAM、SVO、DSO、MonoSLAM、VINS、RGB-D などの一般的な VSLAM アルゴリズムを学習します。
- ROS ロボット オペレーティング システム。
- フィルタリング アルゴリズムに関する知識が必要です: ESKF、EKF、UKF など。
- 同時に、非線形誤差関数を最適化するために、G2O や ceres などの C++ フレームワークを学習する必要があります。
2.3. マルチセンサー融合アルゴリズムエンジニア- 仕事内容:
- カメラ、LIDAR、ミリ波レーダーなどの複数のセンサーからの情報を処理および融合し、自動運転車の環境認識能力を向上させます。
- 複数のソースの情報融合に基づいてターゲットの検出、追跡、識別、位置決めを担当します。
- 複数ソースの情報融合に基づいて環境の特徴を抽出し、地図構築のサポートを提供します。また、複数ソースの情報融合に基づいてナビゲーションと位置決めのサポートを提供します。
- 必要なスキル:
- カメラ、ミリ波レーダー、LIDAR、慣性航法などに関連するデータ分析および融合アルゴリズムを習得します。
- コンピュータ情報科学、電子工学、または数学関連専攻の学士号以上、コンピュータ理論の確固たる基礎を有する
- 正確なカメラモデル、マルチビジョンジオメトリ、バンドル調整原理、SfM、幾何学的測距などのプロジェクトでの経験
- C/C++ に精通し、Matlab に精通し、オブジェクト指向プログラミングのアイデアとコーディング習慣に長けている
- IMU、GPS、DR、その他の慣性航法測位アルゴリズムフレームワークに精通している
- IMU、GPS、ボディシステムの原理、ハードウェア特性、キャリブレーションアルゴリズムに精通している
2.4. 機械学習アルゴリズムエンジニア- 仕事内容:
- この方向は、主に車両走行中に生成されるデータのエンジニアリング応用を担当し、車両走行距離の影響分析、ビッグデータ分析モデリングなど、データ分析指向になる傾向があります。
- 必要なスキル:
- Python、C/C++
- LR、GBDT、SVM、DNN などの機械学習の基本的な理論アルゴリズムを学習します。
- scikit-learn などの従来の機械学習フレームワークのモデルトレーニングを学習します。
- PyTorch、TensorFlow(部分的にニューラルネットワーク部分)などのディープラーニングフレームワークに精通している。
2.5. コンピュータビジョンアルゴリズムエンジニア- 仕事内容:
- この方向は主にカメラセンサーに基づいており、主に車線検出、車両およびその他の障害物検出、走行可能領域の検出、信号およびその他の交通情報の検出などが含まれます。
- 必要なスキル:
- C/C++、Python、OpenCV;
- 基本的な機械学習アルゴリズムが必要です(次元削減、分類、回帰など)。
- ディープラーニングとディープラーニングフレームワークを学習する必要があります。
- コンピューター ビジョンと画像処理の一般的な方法 (オブジェクトの検出、追跡、セグメンテーション、分類、認識など) を学習します。
2.6. 自然言語処理アルゴリズムエンジニア- 仕事内容:
- この部門は主に、車載シナリオ等における音声認識や音声インタラクションの設計を担当します。
- 必要なスキル:
- 機械学習アルゴリズムとディープラーニングアルゴリズム (RNN) を学習します。
- 自然言語処理の基本タスク(単語分割、品詞タグ付け、構文解析、キーワード抽出)
- テキストビジネスの問題を解決するには、クラスタリング、分類、回帰、ソートモデルなどの機械学習手法を使用する必要があります。
- PyTorch、TensorFlow(一部のRNN部分)などのディープラーニングフレームワークに精通している。
2.7. 意思決定アルゴリズムエンジニア- 仕事内容:
- 自動運転の決定は、認識モジュールによって送信された情報を車両の挙動に変換し、運転目標を達成することです。たとえば、車の加速、減速、左折、右折、車線変更、追い越しはすべて決定モジュールの出力です。決定は、車の安全性と快適性、乗客の安全の確保、目的地への最短時間での到着を考慮して行う必要があります。
- 必要なスキル:
- c/c++/python、ROS システムに精通していること。
- 決定状態マシン、決定木、マルコフ決定過程、POMDP などの一般的な意思決定アルゴリズムを学習します。
- 深く学びたい場合は、機械学習アルゴリズム(RNN、LSTM、RL)に精通し、少なくとも 1 つのディープラーニング フレームワーク(gym や universe などのディープラーニング強化学習プラットフォーム)を習得する必要があります。
- 車両の運動学および動力学モデルに関する知識。
2.8. 計画アルゴリズムエンジニア- 仕事内容:
- 計画には経路計画と速度計画が含まれる
- 計画アルゴリズムでは、自律走行車はまず経路計画を通じて車両の走行可能な経路を決定し、次に経路を選択して走行可能な速度を決定します。
- 必要なスキル:
- c/c++/python、ROSロボットオペレーティングシステム(一部の企業ではMatlab/simulinkを使用して開発)
- A、D、RRT などの一般的なパス計画アルゴリズムを学習します。
- 五次曲線、クロソイド曲線、三次スプライン曲線、B スプライン曲線などの曲線表現方法を学習します。
- さらに深く学びたい場合は、MDP、POMDP、Came Theory などの軌道予測アルゴリズムを学ぶことができます。
- RNN、LSTM、Deep Q-Learning などのディープラーニングや強化学習の手法を学ぶこともプラスになります。
- 数学的理論的基礎と背景を持ち、車両の運動学と動力学モデルに精通していること。
2.9. 制御アルゴリズムエンジニア- 仕事内容:
- 一般的には、車両の横方向および縦方向のダイナミクスをモデル化し、車両の運動制御などを実現するための制御アルゴリズムを開発します。
- このポジションは車両とのやり取りが多く、自動運転分野に変革を起こしている従来の自動車メーカーにとって良い参入機会となります。
- 必要なスキル:
- C/C++、Matlab/Simulink
- 自動制御と現代制御理論の理論的基礎を学びます。
- PID、LQR、MPC アルゴリズムを学習します。
- 車両の運動学と動力学モデルを学び、自動車のシャーシについてある程度理解します。
- CarSim などのシミュレーション ソフトウェアを学習します。
- ACC、AEB、APA、LKA、LCC などの運転支援機能の開発を学ぶことはプラスポイントです。
- 実際の車両のデバッグ経験があることもプラスになります。
3. 非アルゴリズムエンジニア3.1. ソフトウェアプラットフォーム開発エンジニア- 仕事内容:
- カーネルの変更/拡張、ドライバーの実装/強化、ミドルウェアの実装/強化、システム統合、パフォーマンス/電力の最適化、ストレス/安定性/コンプライアンスのテストを含む、自動運転ソフトウェア プラットフォームの設計と実装。
- システム アーキテクチャの構築と低レベル ドライバーの作成を担当します。
- 組み込みプロセッサ(GPU、DSP、ARM、その他のプラットフォーム)上のビジョン関連アルゴリズムのコード実装、パフォーマンス最適化、テスト、およびメンテナンスを担当します。
- アルゴリズム エンジニアが組み込みプラットフォーム上でアルゴリズムの移植、統合、テスト、最適化を完了できるよう支援します。
- 必要なスキル:
- C/C++ プログラミングスキル、Python;
- 組み込みオペレーティング システムおよびリアルタイム オペレーティング システムのカーネルまたはドライバー開発の経験があり、QNX および ROS に精通していること。
- ソフトウェアのデバッグとデバッグ ツールに精通していること。
- 車両 ADAS ECU とレーダー、カメラ、超音波、LIDAR などのセンサーを理解します。
- ユニバーサル診断サービス (UDS) およびコントローラ エリア ネットワーク (CAN) に精通している。
- 通信プロトコル(CAN、UDS、DoIP、SOME/IP、DDS、MQTT、REST など)に精通していると有利です。
3.2. システムエンジニア- 仕事内容:
- 顧客のニーズを把握し、社内の開発者とニーズを結び付ける責任を負います。
- 無人運転ソフトウェアシステムフレームワークの構築を担当します。
- モジュール式の検証可能なシステム ソフトウェア アーキテクチャ設計とリアルタイムのパフォーマンス最適化を担当します。
- ハードウェア、アルゴリズム、テストの各チームと連携して、自動運転システムを統合および最適化します。
- 必要なスキル:
- しっかりとした基本的なコンピュータ理論の知識(自動制御、パターン認識、機械学習、コンピュータビジョン、ポイントクラウド処理など)を有する。
- 組み込みオペレーティングシステムおよびリアルタイムオペレーティングシステムのカーネルまたはドライバー開発の経験。
- 優れたコミュニケーション能力とチームワーク意識を持っている
3.3. 機能安全エンジニア- 仕事内容:
- 製品ライフサイクル全体を通じて製品の機能安全をサポート
- 無人/自動運転システム製品の機能安全システム設計を担当し、既存プロセスの改善提案を行います。
- 無人/自律運転システムの危険分析(HARA、FMEA、FMEDA、FTA)を担当します。
- 無人/自動運転システムの安全目標の定義を担当します。
- 無人/自動運転システムの安全要件の定義を担当します。
- 必要なスキル:
- ISO26262に精通し、自動運転またはADASシステムの機能安全プロジェクトの実装経験があること。(従来の自動車工場で働いていて、転職を希望している方も考慮されます。)
- FMEA、FMEDA、FMEA-MSR、FTA およびその他の関連方法を理解する。
3.4 校正エンジニア- 仕事内容:
- GPS、IMU、LiDAR、カメラ、レーダー、USS などの自動運転マルチセンサーのキャリブレーションを担当します。
- センサーの内部および外部パラメータのキャリブレーションアルゴリズムを設計および実装し、マルチセンサーキャリブレーションシステムを構築します。
- キャリブレーションパラメータに関する関連車両テストを実施し、テストレポートを提供する責任を負います。
- 必要なスキル:
- C++ プログラミング、Linux および ROS システムに精通していること。
- センサーのキャリブレーションの経験があり、ビジョンまたはレーザー SLAM アルゴリズムに精通していること。
3.5 シミュレーション環境エンジニア- 仕事内容:
- この方向性では、車両ダイナミクス関連のシミュレーション、各種仮想センサーモデルや仮想シーンのモデリングとシミュレーション、テストケースに応じたテストシーンの構築、自動運転アルゴリズムのシミュレーションテストの実行など、自動運転関連のシミュレーションシステムの構築への参加が求められます。
- 無人運転シミュレーションシステムの構築、車両、センサー、環境のソフトウェアシミュレーションを担当します。シミュレーション結果は実際のデータと組み合わせて使用され、現実世界のシナリオにおける車の動作を予測します。
- 運転決定、経路計画、シミュレーション アルゴリズムなどのモジュールと連携して、自動運転の閉ループ シミュレーションを実現し、関連するデバッグ情報を視覚化します。
- 必要なスキル:
- MATLAB/simulink、Python/C++
- Perscan、Carsim、Carmaker などの一般的に使用される車両ダイナミクスまたは無人車両シミュレーション ソフトウェアの使用に習熟していること。
- ロボットオペレーティングシステムROS等に精通している。
- シミュレーション職の中には、純粋にシミュレーションのみを目的とする職種もありますが、シミュレーション環境の開発を必要とする職種もあり、そのような職種ではプログラミング要件が高くなります。
3.6 テストエンジニア- 仕事内容:
- この部門は主に、自動運転車両に関する試験、自動運転システム機能の各種指標の性能試験、その境界条件と故障モードの評価を担当します。
- インテリジェント運転製品の自動テスト(SIL、HIL)および関連検証の設計と実装を担当します。
- システムまたは製品の機能要件に基づいてテストケースとテスト計画を開発する責任を負います。
- 完全なシステムまたは製品のテスト計画を開発および実装し、最終的にテストレポートを作成する責任を負います。
- システムの境界サンプルを収集してテストし、インテリジェント運転システムの安全性を評価し、技術に関する合理的なフィードバックを提供します。
- 必要なスキル:
- Ubuntu/Linux オペレーティングシステムに精通しており、Python スクリプトを記述できる
- CAN バスに精通していること。
- テストケースの作成方法とテクニックに精通している。
- 画像認識アルゴリズム、ディープラーニング、Spark などのビッグデータ関連ツールに精通している候補者には、追加ポイントが与えられます。
- LiDAR、ミリ波レーダー、超音波プローブ、カメラのアプリケーションに関する知識があれば有利です。
3.7 ビッグデータ開発エンジニア- 仕事内容:
- データには、バックグラウンド データ構造とフロントエンド プレゼンテーションが含まれます。自動運転車は毎日 1T のデータを生成します。ドライブ テストで最も重要な切断をすばやく識別する方法など、データをすばやくクリーンアップ、調整、要約する方法。これにより、エンジニアはより効率的にテストを行うことができます。
- 自動運転ビッグデータプラットフォームシステムの設計、開発、最適化を担当します。
- 自動運転データの注釈と処理フローの可視化ツールの開発、自動注釈プラットフォームの設計と開発を担当します。
- 必要なスキル:
- データ構造とアルゴリズムに関する強固な基礎があること。
- Java/Python/C++ などの高水準プログラミング言語を少なくとも 1 つ習得していること。
- Linux 開発環境に精通していること。
- SQL または No-SQL データベースに基づくアプリケーションの設計および開発の経験。
- REST サービスと Web 標準に精通しており、React/AngularJS などの主流のフロントエンド開発フレームワークに精通しており、独自にフロントエンドアプリケーションを構築できます。
- 自動運転とそれに関連する LiDAR、カメラ、その他のセンサー データに精通している人には、追加ポイントが与えられます。
3.8 UI開発エンジニア- 仕事内容:
- すべての企業は、車両開発を検証するための社内ツールを構築する必要があります。また、リモートコントロールセンターがUIを通じて自動運転車両を遠隔制御するためには、さまざまなインタラクティブページを作成する必要があります。車内の乗客向けに用意されたUIも含まれています。デザインが好きな人やフロントエンドが得意な人は検討してみてはいかがでしょうか。
- 必要なスキル:
- 優れた美学と豊かな視覚表現を備え、
- 色、グラフィック、情報、GUI デザインの原則と方法に精通しています。
4. 終わり最後に、国家政策では新エネルギーインテリジェント車両を積極的に推進しており、より多くのパートナーが自動運転業界に参入することを期待しています。 オリジナルリンク: https://mp.weixin.qq.com/s/d41a5VYtJ4lvMP3GO6In_g |