Khả năng ứng dụng trong thực tế của công nghệ GNSS

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu công nghệ GNSS ứng dụng cho hệ thống thu phí giao thông điện tử (Trang 73 - 99)

Giao thông thông minh đang trở thành xu thế của giao thông trong tương lai. ITS cần áp sử dụng rất nhiều công nghệ hiện đại để hệ thống ITS ngày càng trở nên thông minh và thuận tiện hơn đối với người sử dụng cũng nhưng đơn vị quản lý. GNSS là một trong những công nghệ được đưa sớm vào sử dụng trong nền tảng ITS nhưng cho đến bây giờ vẫn luôn có những giá trị lớn đối với hoạt động của hệ thống này. Điển hình nhất là các tính năng cơ bản như: Dẫn đường, giám sát hành trình, quản lý phương tiện, thu phí điện tử… Các tính năng kể trên là các tính năng cơ bản nhất được sử dụng của GNSS tham gia trong hệ thống ITS. Với khả năng cung cấp nhiều thông tin về vị trí, vận tốc, lộ trình di chuyển của phương tiện từ các thông tin này có thể khai thác rất nhiều thêm các ứng dụng hữu ích để phục vụ phong quản lý giao thông đô thị nói riêng và quản lý giao thông nói chung[6].

Dưới đây đề tài xin trình bày khái quát lại và đề xuất thêm một số tính năng có thể sử dụng với GNSS để áp dụng trong quản lý giao thông đô thị:

Thu phí phƣơng tiện thông qua công nghệ GNSS

Về tính năng này yêu cầu hệ thống phương tiện giao thông đều được trang bị hệ thống GNSS và có kết nối tới hệ thống chủ. Các phương tiện sẽ liên tục cập nhật vị trí của mình lên máy chủ. Ở đây có thể lựa chọn một số cách thu phí như sau:

Dựa vào quãng đƣờng:

Khi các phương tiện di chuyển sẽ liên tục cập nhật vị trí của mình, từ đó hệ thống có thể tính toán được quãng đường di chuyển của từng phương tiện từ đó đưa ra các khoảng thu phí phù hợp.

Dựa vào điểm thu phí ảo:

Cách thu phí này áp dụng theo hướng thu phí truyền thống tuy nhiên thay vì đặt các điểm thu phí vật lý như hiện nay thì chỉ cần đưa vào các điểm thu phí ảo trên hệ thống máy chủ

Hƣớng dẫn chỉ đƣờng phƣơng tiện

Dựa vào vị trí hiện tại, tình trạng giao thông hiện tại của khu đô thị mà phương tiện tham gia giao thông có thể sử dụng một số thuật toán để tìm ra đường phù hợp cho phương tiện di chuyển đảm bảo tình trạng giao thông không quá dồn tập trung về một điểm hoặc một cung đường quá cao so với các cung đường khác ở khu vực xung quanh. Vấn đề ùn tắc giao thông ở Việt Nam nhất là tại các đô thị lớn đang là vấn đề nhức nhối của toàn xã hội. Nếu ứng dụng này có thể triển khai sẽ hỗ trợ rất nhiều trong việc đơn giản nhất là tìm được đường đi phù hợp cho người tham gia giao thông ngoài ra còn cân bằng được lưu lượng giao thông hiện tại giữa các tuyến đường để đảm bảo giao thông được đồng đều hơn tránh các hiện tượng tắc cục bộ. Ứng dụng này phát triển cần nắm được thông tin của từng đô thị theo khung thời gian, các điều kiện tự nhiên, hạ tầng của khu vực để đưa ra các gợi ý và hướng dẫn phù hợp nhất vào thời điểm đó.

Quản lý và giám sát hành trình

Giám sát hành trình là tính năng cơ bản của GNSS hiện đã được áp dụng rộng rãi trên các đô thị Việt Nam. Ngoài hỗ trợ các doanh nghiệp vận tải quản lý giám sát tính năng cũng hỗ trợ các cơ quan chức năng trong việc giám sát phương tiện và kiểm soát các phương tiện thêm chặt chẽ.

Quản lý và giám sát sai phạm

Việc các phương tiện liên tục cung cấp thông tin của mình đến cùng một cơ sở dữ liệu của cơ quan chức năng là một điều có ý nghĩa rất lớn. Khi có thông tin của tất cả các phương tiện việc quản lý, giám sát và quản lý sai phạm sẽ trở nên dễ dàng hơn nhiều. Hiện nay, ở một số điểm ở Hà Nội đang áp dụng thử nghiệm một số điểm phạt nguội về các lỗi như vượt đèn đỏ, sai làn đường… ngoài ra nếu có thông tin về GNSS các cơ quan chức năng có thể có thêm một hệ thống phạt nguội về các lỗi như: Vượt quá tốc độ cho phép, đi vào đường 1 chiều, các phương tiện chỉ được phép tham gia một số

cung đường theo giờ cho phép… Bởi các lỗi phạt nguội hiện nay chủ yếu dựa vào các camera được cài đặt trên đường không thể giám sát được liên tục phương tiện nhưng với GNSS thì các thông tin trên được giám sát liên tục và có thể áp dụng xử lý chậm không quá yêu cầu về tốc độ xử lý của hệ thống.

Quản lý mật độ phƣơng tiện

Gần đây GoogleMap vừa tung ra một tính năng mới trên ứng dụng Bản đồ dành cho di động đó là tính năng theo dõi mật độ phượng tiện. Hiện GoogleMap đang dựa vào các ảnh vệ tinh và GPS của chính người sử dụng để cập nhật các thông tin này. Với việc áp dụng GNSS đối với các phương tiện giao thông việc này sẽ trở nên chính xác hơn rất nhiều và có ý nghĩa lớn hơn với bản thân đô thị đó. Có được thông tin mật độ phương tiện, luồng di chuyển của các phương tiện ban quản lý giao thông đô thị từ đó có thể áp dụng cho nhiều công việc như: Tăng cường nhân lực cho các giờ cao điểm phù hợp với tình trạng giao thông, có phương án điều tiết giao thông phù hợp hơn thông qua các phương tiện thông tin đại chúng, qua ứng dụng chỉ đường như đã trình bày ở trên hoặc qua chính thông tin điều tiết từ tổng đài quản lý về trực tiếp thiết bị thông qua kênh liên lạc giữa thiết bị trên xe với tổng đài quản lý. Ngoài ra còn có các ý nghĩa mang tầm vóc vĩ mô hơn như dựa vào luồng di chuyển giao thông trong một khoảng thời gian đủ dài ban quản lý giao thông sẽ có được thông tin các tuyến đường nào cần được ưu tiên nâng cấp mở rộng sớm để đáp ứng nhu cầu của nhu cầu giao thông hiện tại. Các thông tin đó sẽ là con số có ý nghĩa lớn đối với việc phân tích lựa chọn và quyết định nâng cấp các hệ thống giao thông đô thị cho phù hợp[1].

Thông báo tình trạng sự cố, khu vực có sự cố giao thông

Hiện nay việc thông tin sự cố, các tình trạng tắc nghẽn giao thông hoặc các tuyến đường cấm thường được thực hiện thông qua phương tiện thông tin đại chúng tuy nhiên hiệu quả của việc này hiện nay chưa cao. Việc thông báo thông tin mang tính đại chúng này không hướng trực tiếp thông tin có liên quan hoặc liên quan gần đến các đối tượng sát sườn thế nên thông tin thường bị loãng và dễ bị bỏ qua. Trong

khi đó nếu như hệ thống đã có thông tin về GNSS của các phương tiện việc quản lý và thông tin này sẽ có thể mang lại tính có tính liên quan cao hơn bằng cách gửi các bản tin cảnh báo theo khu vực. Ví dụ, trên một tuyến đường có một sự cố giao thông đang ảnh hướng lớn tới quá trình giao thông của cả đoạn đường hệ thống có thể chạy chương trình cảnh báo đến toàn để các phương tiện đang tham gia cung đường này để có thể chọn đường tránh trên quá trình đi, hoặc các phương tiện đang chạy ở các tuyến xung quanh có thể sẽ tham gia vào khu vực đó. Cách này có thể thực thi bằng cách hệ thống thực hiện khoanh vùng và phân tích lựa chọn các đối tượng sẽ nhận được bản tin này sau đó tự động chuyển bản tin cảnh báo này đến các phương tiện thông qua kết nối giữa các phương tiện và cơ sở dữ liệu của hệ thống. Bản tin này sẽ là bản tin truyền đến có tính hướng đối tượng cao và tỉ lệ cao sẽ có ảnh hưởng đến các đối tượng đó vì thế giá trị bản tin cảnh báo sẽ có ý nghĩa hơn. Việc thể hiện thông tin này có thể tùy chọn bằng cách thể hiện bằng âm thanh hoặc hình ảnh cảnh báo trên các phương tiện lắp đặt trên phương tiện.

3.4. Kết luận chƣơng

Qua việc phân tích mô hình sử dụng công nghệ GNSS và ứng dụng của nó trong thu phí giao thông không dừng ta có thể nhận thấy được lợi ích của công nghệ này trong hệ thống giao thông thông minh. Từ đó có thể giảm chi phí nhân công cũng như thiết bị sử dụng trong việc thu phí đường bộ cũng như kiểm soát được các vấn đề nhức nhối trong giao thông như tắc đường, kẹt xe hay tai nạn giao thông.

Tuy nhiên để hệ thống thu phí được thực hiện một cách hiệu quả thì cần cải thiện về tính năng phần mềm, hạ tầng công nghệ viễn thông cũng như hệ thống lưu trữ dữ liệu và thái độ của người tham gia giao thông.

KẾT LUẬN CHUNG

Hiện nay tại Việt Nam, lượng xe cộ và các phương tiện giao thông cá nhân đang tăng nhanh với tốc độ lớn. Trong khi đó, hệ thống hạ tầng giao thông không phát triển kịp theo với nhu cầu đi lại của mọi người. Đặc biệt là vấn đề thu phí tham gia giao thông gặp rất nhiều khó khăn cả về nhân lực lẫn hạ tầng thiết bị. Trong khi đó ở nước ngoài, đặc biệt là các nước phát triển, các hệ thống GNSS được ứng dụng rộng rãi, đặc biệt là trong các hệ thống giao thông. Các hệ thống GNSS cung cấp lượng thông tin lớn về vị trí của phương tiện và lưu lượng giao thông. Hệ thống GNSS kết hợp với các hệ thống viễn thông có thể tạo nên một mạng lưới kết nối giữa các phương tiện và các hệ thống mạng lưới thu thập dữ liệu, quản lý giao thông. Nhờ đó, có thể quản lý giao thông dựa trên các thông tin thu thập từ các hệ thống này. Luận văn đã nghiên cứu về công nghệ GNSS nhằm đáp ứng xu hướng phát triển công nghệ thu phí không dừng trong giao thông hiện nay ở nước ta. Để thực hiện mục tiêu này, luận văn đã tập trung vào nghiên cứu các nội dung sau:

- Tổng quan về công nghệ GNSS.

- Nghiên cứu đánh giá về các công nghệ thu phí điện tử.

- Đánh giá nhu cầu về sử dụng công nghệ thu phí điện tử trong giao thông của nước ta - Nghiên cứu xu hướng sử dụng công nghệ GNSS trong tương lai.

- Tiến hành xây dựng và kiểm nghiệm khả năng sử dụng phần mềm thu phí trong thực tế qua sử dụng công nghệ GNSS

Vì thế việc nghiên cứu và thiết kế phần mềm, thiết bị cũng sử dụng công nghệ GNSS trong quản lý giao thông đô thị là cần thiết và có ý nghĩa thực tiễn.

Hƣớng nghiên cứu tiếp theo của luận văn:

- Bố sung thêm các tính năng khác như cảnh báo chỉ đường, tắc đường, tai nạn vào phần mềm

- Nghiên cứu thêm về cách thức sử dụng và áp dụng phổ biến sao cho hiệu quả nhất để phù hợp với sự phát triển của hạ tầng viễn thông

TÀI LIỆU THAM KHẢO

[1] David M. Bevly, Stewart Cobb (2010), GNSS for Vehicle.

[2] Chapter: High Sensitivity Acquisition Techniques for GNSS signals (2011),

Global Navigation Satellite System.

[3] “Global Navigation Satellitee System Overview”, Avaible:http://www.casa.gov.au [4] Klaus Finkenzeller, John Wiley & Sons (2003), RFID Handbook

Fundamentals and Applications in Contactless Smart Cards and Identification 2E

[5] T.H. Ta, N.Shivaramaiah, A. Dempster, L. L. Presti, (2010) “ Significance of Cell Correlations in GNSS Matched Filter Acquisition, IEEE Transactions on

Aerospace and Electronic Systems.

[6] https://www.academia.edu/9084762/Hệ_thống_giao_thông_thông_minh truy nhập ngày 0/12/2016

PHỤ LỤC

A.Code lập trình phần mềm thu phí trên Android Studio

package com.vovi.checklocation.ui.activity; import android.Manifest; import android.content.Context; import android.content.DialogInterface; import android.content.pm.PackageManager; import android.location.Location; import android.os.Bundle; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.telephony.SmsManager; import android.util.Log; import android.view.WindowManager; import com.crashlytics.android.Crashlytics; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.OnMapReadyCallback; import com.google.android.gms.maps.SupportMapFragment; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.MarkerOptions; import com.vovi.checklocation.R; import com.vovi.checklocation.utils.PermissionUtils; import com.vovi.checklocation.utils.Utils; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import io.fabric.sdk.android.Fabric;

public class MapActivity extends AppCompatActivity implements

OnMapReadyCallback,

ActivityCompat.OnRequestPermissionsResultCallback {

private static final String TAG = "MapActivity";

private static final int LOCATION_PERMISSION_REQUEST_CODE = 1; private static final int SEND_SMS = 2;

private GoogleMap mMap; private Context context;

private LatLng[] arrayPointLatLog;

private int index = -1;

@Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

Fabric.with(this, new Crashlytics()); setContentView(R.layout.activity_map); context = this; this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) ; SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); mapFragment.getMapAsync(this); if (ContextCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) { // Permission to access the location is missing. PermissionUtils.requestPermission(this, SEND_SMS,

}

String[] arrayLocationPoint =

context.getResources().getStringArray(R.array.location_points); arrayPointLatLog = new LatLng[arrayLocationPoint.length]; for (int i = 0; i < arrayLocationPoint.length; i++) { String s = arrayLocationPoint[i];

double lat = Double.valueOf(s.split(",")[0]); double lng = Double.valueOf(s.split(",")[1]); arrayPointLatLog[i] = new LatLng(lat, lng); }

}

@Override

public void onMapReady(GoogleMap map) { mMap = map;

enableMyLocation();

mMap.setOnMyLocationChangeListener(myLocationChangeListener);

for (LatLng ll : arrayPointLatLog) {

mMap.addMarker(new MarkerOptions().position(ll)); }

}

private void enableMyLocation() {

if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)

!= PackageManager.PERMISSION_GRANTED) { // Permission to access the location is missing. PermissionUtils.requestPermission(this,

LOCATION_PERMISSION_REQUEST_CODE,

Manifest.permission.ACCESS_FINE_LOCATION, true); } else if (mMap != null) {

// Access to the location has been granted to the app. mMap.setMyLocationEnabled(true);

private GoogleMap.OnMyLocationChangeListener myLocationChangeListener = new GoogleMap.OnMyLocationChangeListener() {

@Override

public void onMyLocationChange(Location location) { LatLng loc = new LatLng(location.getLatitude(), location.getLongitude()); mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(loc, 16.0f)); Log.e(TAG, "====================== myLocation:" + loc.latitude + "," + loc.longitude); if (index != -1) { LatLng ll = arrayPointLatLog[index];

double dis = Utils.distance(ll.latitude, loc.latitude, ll.longitude, loc.longitude, 0, 0);

Log.e(TAG, "====================== index:" + index + "@dis:" + dis); if (dis > 500) { index = -1; } else { return; } }

for (int i = 0; i < arrayPointLatLog.length; i++) { LatLng ll = arrayPointLatLog[i];

double dis = Utils.distance(ll.latitude, loc.latitude, ll.longitude, loc.longitude, 0, 0);

Log.e(TAG, "====================== index:" + index + "@dis:" + dis);

if (dis < 100) { index = i;

SmsManager manager = SmsManager.getDefault();

manager.sendTextMessage(context.getResources().getString(R.string.phone_n umber), null, "[THÔNG TIN THU PHÍ]\\n Đã tiến hành thu phí 10000VND", null, null);

.setMessage("Đã thu phí 10000VND")

.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {

} }) .setIcon(android.R.drawable.ic_dialog_alert) .show(); return; } } } }; } package com.vovi.checklocation.utils; import android.Manifest; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.content.pm.PackageManager; import android.os.Bundle; import android.support.v4.app.ActivityCompat; import android.support.v4.app.DialogFragment; import android.support.v7.app.AppCompatActivity; import android.widget.Toast; import com.vovi.checklocation.R; /**

* Utility class for access to runtime permissions. */

* Requests the fine location permission. If a rationale with an additional explanation should

* be shown to the user, displays a dialog that triggers the request. */

public static void requestPermission(AppCompatActivity activity, int requestId,

String permission, boolean finishActivity) {

if (ActivityCompat.shouldShowRequestPermissionRationale(activity, permission)) {

// Display a dialog with rationale.

PermissionUtils.RationaleDialog.newInstance(requestId, finishActivity)

.show(activity.getSupportFragmentManager(), "dialog");

} else {

// Location permission has not been granted yet, request it. ActivityCompat.requestPermissions(activity, new

String[]{permission}, requestId);

} }

/**

* Checks if the result contains a {@link PackageManager#PERMISSION_GRANTED} result for a

* permission from a runtime permissions request. *

* @see

android.support.v4.app.ActivityCompat.OnRequestPermissionsResultCallback */

public static boolean isPermissionGranted(String[] grantPermissions, int[] grantResults,

String permission) { for (int i = 0; i < grantPermissions.length; i++) {

if (permission.equals(grantPermissions[i])) { return grantResults[i] ==

}

return false; }

/**

* A dialog that displays a permission denied message. */

public static class PermissionDeniedDialog extends DialogFragment {

private static final String ARGUMENT_FINISH_ACTIVITY = "finish";

private boolean mFinishActivity = false;

/**

* Creates a new instance of this dialog and optionally finishes the calling Activity

* when the 'Ok' button is clicked. */

public static PermissionDeniedDialog newInstance(boolean finishActivity) {

Bundle arguments = new Bundle();

arguments.putBoolean(ARGUMENT_FINISH_ACTIVITY, finishActivity);

PermissionDeniedDialog dialog = new PermissionDeniedDialog(); dialog.setArguments(arguments);

return dialog; }

@Override

public Dialog onCreateDialog(Bundle savedInstanceState) { mFinishActivity =

getArguments().getBoolean(ARGUMENT_FINISH_ACTIVITY);

return new AlertDialog.Builder(getActivity())

.setMessage(R.string.location_permission_denied) .setPositiveButton(android.R.string.ok, null) .create();

@Override

public void onDismiss(DialogInterface dialog) { super.onDismiss(dialog); if (mFinishActivity) { Toast.makeText(getActivity(), R.string.permission_required_toast, Toast.LENGTH_SHORT).show(); getActivity().finish(); } } } /**

* A dialog that explains the use of the location permission and requests the necessary

* permission. * <p>

* The activity should implement * {@link

android.support.v4.app.ActivityCompat.OnRequestPermissionsResultCallback} * to handle permit or denial of this permission request.

*/

public static class RationaleDialog extends DialogFragment {

private static final String ARGUMENT_PERMISSION_REQUEST_CODE = "requestCode";

private static final String ARGUMENT_FINISH_ACTIVITY = "finish";

private boolean mFinishActivity = false;

/**

* Creates a new instance of a dialog displaying the rationale for the use of the location

* permission. * <p>

* @param requestCode Id of the request that is used to request the permission. It is

* returned to the * {@link

android.support.v4.app.ActivityCompat.OnRequestPermissionsResultCallback} .

* @param finishActivity Whether the calling Activity should be finished if the dialog is

* cancelled. */

public static RationaleDialog newInstance(int requestCode, boolean finishActivity) {

Bundle arguments = new Bundle();

arguments.putInt(ARGUMENT_PERMISSION_REQUEST_CODE, requestCode);

arguments.putBoolean(ARGUMENT_FINISH_ACTIVITY, finishActivity);

RationaleDialog dialog = new RationaleDialog(); dialog.setArguments(arguments);

return dialog; }

@Override

public Dialog onCreateDialog(Bundle savedInstanceState) { Bundle arguments = getArguments();

final int requestCode =

arguments.getInt(ARGUMENT_PERMISSION_REQUEST_CODE);

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu công nghệ GNSS ứng dụng cho hệ thống thu phí giao thông điện tử (Trang 73 - 99)

Tải bản đầy đủ (PDF)

(99 trang)