Git Product home page Git Product logo

yanmingchang666 / carla_apollo_bridge Goto Github PK

View Code? Open in Web Editor NEW

This project forked from maisjamal/carla_apollo_bridge

0.0 0.0 0.0 231.81 MB

This project provides a bridge for communication between the autonomous driving platform Apollo and Carla simulator. Receiving data from Carla, Apollo controls the autonomous vehicle.

License: Apache License 2.0

Shell 0.54% Python 98.20% Dockerfile 1.26%

carla_apollo_bridge's Introduction

Carla Apollo Bridge

This python package provides a bridge for communicating between Carla's Python API and Apollo. Besides the source code, a Dockerfile and scripts are provided for getting setup quickly and easily. This package was tested with Carla version 0.9.13, and Apollo v7.0.0 and v8.0.0.

Installation

Pre-requisites

For the simplest setup, we will run Carla in Docker.

docker

https://docs.docker.com/install/linux/docker-ce/ubuntu/

NVIDIA Container Toolkit

https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html

Setup / Getting Started

The following commands will be run with 3 containers:

  • carla-server: this container will run the Carla simulator
  • carla-apollo-13: bridge between apollo and carla-server containers, has cyber_py and carla python packages installed and unlike apollo container, can easily display gui applications on local machine
  • apollo_dev_user: runs the apollo stack

End-to-end video tutorial of CARLA simulator with Apollo driving

End-to-end tutorial that goes through how to install, configure and use this Carla-Apollo-Bridge, with Carla simulator (v0.9.13) and Apollo driving software (v8.0.0):

https://youtu.be/2dQC3ToJGJU?si=6mZMHP1RRZHPRggX

Clone and build Apollo

Clone Apollo :

git clone https://github.com/ApolloAuto/apollo

Out of container open /apollo/cyber/setup.bash and change Cyber_ip to 172.17.0.1

export CYBER_IP=172.17.0.1

Add the following code lines to the file apollo/modules/planning/tasks/deciders/speed_bounds_decider/speed_limit_decider.cc after defining speed_limit_from_reference_line :


// (1) speed limit from map

double speed_limit_from_reference_line = reference_line_.GetSpeedLimitFromS(reference_line_s);

/************** added as a temproraly solution *********************/
/****** for speed_limit_from_reference_line = 0 in Carla Towns *****/

if (speed_limit_from_reference_line == 0) {

	speed_limit_from_reference_line = 11.176 ;
}

/*******************************************************************/
     

Important: Update controlling parameters for Carla Lincoln vehicle in Apollo:

  • Replace the file control_conf.pb.txt in /apollo/modules/calibration/data/Lincoln2017MKZ_LGSVL by the file in carla_apollo_bridge/apollo_control

Now in the apollo container, build apollo...

# run in apollo_dev_user container:

./apollo.sh build_gpu

Add Carla Maps to Apollo. Note: currently the bridge publishes the traffic lights' groundtruth of Town01 only. The traffic lights of other maps will be added to their maps and the bridge soon.

Usage

Run Apollo container and enter it

cd apollo
./docker/scripts/dev_start.sh
./docker/scripts/dev_into.sh

Start Apollo Dreamview inside the container.

bash scripts/bootstrap.sh

In Dreamview setup the mode to Mkz Lgsvl , the vehicle to Lincoln2017MKZ LGSVL and the map to the needed Carla Town, then run the following modules: Localization, Routing, Planning, Prediction.

To monitor the planning and control process turn PNC Monitor on.

Run Carla docker container

# run on local machine:

docker run -it --privileged -v /tmp/.X11-unix:/tmp/.X11-unix:rw -v /usr/lib/nvidia:/usr/lib/nvidia --device /dev/dri --rm -e __NV_PRIME_RENDER_OFFLOAD=1 -e __GLX_VENDOR_LIBRARY_NAME=nvidia -e DISPLAY=$DISPLAY -e NVIDIA_VISIBLE_DEVICES=all -e NVIDIA_DRIVER_CAPABILITIES=all --gpus=all --name=carla-server --net=host -d carlasim/carla:0.9.13

Build docker image / run container for Carla-Apollo-13 bridge

# run on local machine, starting from the root of this repo:

cd docker
./build_docker.sh
./run_docker.sh


# enter Carla-apollo-13 container

docker exec -ti carla-apollo-13 bash


Change CYBER_IP in /apollo/cyber/setup.bash to the carla-apollo-13 container IP address

To find out the ip address to use, run this command outside of the container:


# get ip address of carla-apollo-13 container (default: 172.17.0.2):

docker inspect carla-apollo-13 | grep IPAddress


# in carla-apollo-13 container change the Cyber_ip:

gedit /apollo/cyber/setup.bash


# then source your ~/.bashrc file to apply the changes:
source ~/.bashrc


Create an ego vehicle and client

Choose one of Carla maps in Apollo dreamview , then change the map in UnrealEngine to it by:

python carla-python-0.9.13/util/config.py -m Town03 --host 172.17.0.1


Run these commands inside the carla-apollo-13 container

# run in carla-apollo-13 container, start Carla example scenario:

cd ~/carla_apollo_bridge_13

python examples/manual_control.py 

Before starting the bridge set the configurations in config/bridge_settings.yaml. To enable the control from apollo, turn on the control module in Apollo and in the settings file set apply_control to true , otherwise the ego vehicle in Carla will follow the planned trajectory without applying control.

# in config/bridge_settings.yaml: 

apply_control : true

To publish GroundTruth of obstacles:

# in config/bridge_settings.yaml: 

publish_obstacles_ground_truth: true

To publish LIDAR data , adjust LIDAR attributes in addLidar method in manual_control.py, then:

# in config/bridge_settings.yaml: 

publish_lidar_msg: true

Run the bridge:

# run in carla-apollo-13 container, start carla-apollo bridge:

cd ~/carla_apollo_bridge_13

python carla_cyber_bridge/run_bridge.py

Interfacing with the simulation

For interfacing with the simulator, a copy of the Carla PythonAPI is included in the carla-apollo-13 container. Some uses:

# run in another carla-apollo-13 container terminal:
cd ~/carla_apollo_bridge_13/

# change the map
python carla-python-0.9.13/util/config.py -m Town04 --host 172.17.0.1

# spawn traffic
python examples/generate_traffic.py --async

carla_apollo_bridge's People

Contributors

maisjamal avatar angelja avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.