dyn_out.cpp

  name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-5572165936844014&dt=1194442938015&lmt=1194190197&format=336x280_as&output=html&correlator=1194442937843&url=file%3A%2F%2F%2FC%3A%2FDocuments%2520and%2520Settings%2Flhh1%2F%E6%A1%8C%E9%9D%A2%2FCLanguage.htm&color_bg=FFFFFF&color_text=000000&color_link=000000&color_url=FFFFFF&color_border=FFFFFF&ad_type=text&ga_vid=583001034.1194442938&ga_sid=1194442938&ga_hid=1942779085&flash=9&u_h=768&u_w=1024&u_ah=740&u_aw=1024&u_cd=32&u_tz=480&u_java=true" frameborder="0" width="336" scrolling="no" height="280" allowtransparency="allowtransparency"> #include <iostream.h>
#include <strstrea.h>

void main(void)
 {
   char * p;
   ostrstream outs;

   outs << "Jamsa's C/C++ ";
   outs << "Programmer's Bible ";
   outs << "has cool programs." << ends;
   p = outs.str();
   cout << p;
   delete p;
 }


//iterated error state EKF update for measurement as a dynamic manifold, whose dimension or type is changing. //the measurement and the measurement model are received in a dynamic manner. //calculate measurement (z), estimate measurement (h), partial differention matrices (h_x, h_v) and the noise covariance (R) at the same time, by only one function. template<typename measurement_runtime, typename measurementModel_dyn_runtime_share> void update_iterated_dyn_runtime_share(measurement_runtime z, measurementModel_dyn_runtime_share h) { int t = 0; dyn_runtime_share_datastruct<scalar_type> dyn_share; dyn_share.valid = true; dyn_share.converge = true; state x_propagated = x_; cov P_propagated = P_; int dof_Measurement; int dof_Measurement_noise; for(int i=-1; i<maximum_iter; i++) { dyn_share.valid = true; measurement_runtime h_ = h(x_, dyn_share); //measurement_runtime z = dyn_share.z; #ifdef USE_sparse spMt h_x = dyn_share.h_x.sparseView(); spMt h_v = dyn_share.h_v.sparseView(); spMt R_ = dyn_share.R.sparseView(); #else Matrix<scalar_type, Eigen::Dynamic, Eigen::Dynamic> R = dyn_share.R; Matrix<scalar_type, Eigen::Dynamic, Eigen::Dynamic> h_x = dyn_share.h_x; Matrix<scalar_type, Eigen::Dynamic, Eigen::Dynamic> h_v = dyn_share.h_v; #endif dof_Measurement = measurement_runtime::DOF; dof_Measurement_noise = dyn_share.R.rows(); vectorized_state dx, dx_new; x_.boxminus(dx, x_propagated); dx_new = dx; if(! (dyn_share.valid)) { continue; } P_ = P_propagated; Matrix<scalar_type, 3, 3> res_temp_SO3; MTK::vect<3, scalar_type> seg_SO3; for (std::vector<std::pair<int, int> >::iterator it = x_.SO3_state.begin(); it != x_.SO3_state.end(); it++) { int idx = (*it).first; int dim = (*it).second; for(int i = 0; i < 3; i++){ seg_SO3(i) = dx(idx+i); } res_temp_SO3 = MTK::A_matrix(seg_SO3).transpose(); dx_new.template block<3, 1>(idx, 0) = res_temp_SO3 * dx_new.template block<3, 1>(idx, 0); for(int i = 0; i < n; i++){ P_. template block<3, 1>(idx, i) = res_temp_SO3 * (P_. template block<3, 1>(idx, i)); } for(int i = 0; i < n; i++){ P_. template block<1, 3>(i, idx) =(P_. template block<1, 3>(i, idx)) * res_temp_SO3.transpose(); } } Matrix<scalar_type, 2, 2> res_temp_S2; MTK::vect<2, scalar_type> seg_S2; for (std::vector<std::pair<int, int> >::iterator it = x_.S2_state.begin(); it != x_.S2_state.end(); it++) { int idx = (*it).first; int dim = (*it).second; for(int i = 0; i < 2; i++){ seg_S2(i) = dx(idx + i); } Eigen::Matrix<scalar_type, 2, 3> Nx; Eigen::Matrix<scalar_type, 3, 2> Mx; x_.S2_Nx_yy(Nx, idx); x_propagated.S2_Mx(Mx, seg_S2, idx); res_temp_S2 = Nx * Mx; dx_new.template block<2, 1>(idx, 0) = res_temp_S2 * dx_new.template block<2, 1>(idx, 0); for(int i = 0; i < n; i++){ P_. template block<2, 1>(idx, i) = res_temp_S2 * (P_. template block<2, 1>(idx, i)); } for(int i = 0; i < n; i++){ P_. template block<1, 2>(i, idx) = (P_. template block<1, 2>(i, idx)) * res_temp_S2.transpose(); } } Matrix<scalar_type, Eigen::Dynamic, Eigen::Dynamic> K_; if(n > dof_Measurement) { #ifdef USE_sparse Matrix<scalar_type, Eigen::Dynamic, Eigen::Dynamic> K_temp = h_x * P_ * h_x.transpose(); spMt R_temp = h_v * R_ * h_v.transpose(); K_temp += R_temp; K_ = P_ * h_x.transpose() * K_temp.inverse(); #else K_= P_ * h_x.transpose() * (h_x * P_ * h_x.transpose() + h_v * R * h_v.transpose()).inverse(); #endif } else { #ifdef USE_sparse Eigen::Matrix<scalar_type, Eigen::Dynamic, Eigen::Dynamic> b = Eigen::Matrix<scalar_type, Eigen::Dynamic, Eigen::Dynamic>::Identity(dof_Measurement_noise, dof_Measurement_noise); Eigen::SparseQR<Eigen::SparseMatrix<scalar_type>, Eigen::COLAMDOrdering<int>> solver; solver.compute(R_); Eigen::Matrix<scalar_type, Eigen::Dynamic, Eigen::Dynamic> R_in_temp = solver.solve(b); spMt R_in =R_in_temp.sparseView(); spMt K_temp = h_x.transpose() * R_in * h_x; cov P_temp = P_.inverse(); P_temp += K_temp; K_ = P_temp.inverse() * h_x.transpose() * R_in; #else Eigen::Matrix<scalar_type, Eigen::Dynamic, Eigen::Dynamic> R_in = (h_v*R*h_v.transpose()).inverse(); K_ = (h_x.transpose() * R_in * h_x + P_.inverse()).inverse() * h_x.transpose() * R_in; #endif } cov K_x = K_ * h_x; Eigen::Matrix<scalar_type, measurement_runtime::DOF, 1> innovation; z.boxminus(innovation, h_); Matrix<scalar_type, n, 1> dx_ = K_ * innovation + (K_x - Matrix<scalar_type, n, n>::Identity()) * dx_new; state x_before = x_; x_.boxplus(dx_); dyn_share.converge = true; for(int i = 0; i < n ; i++) { if(std::fabs(dx_[i]) > limit[i]) { dyn_share.converge = false; break; } } if(dyn_share.converge) t++; if(t > 1 || i == maximum_iter - 1) { L_ = P_; std::cout << "iteration time:" << t << "," << i << std::endl; Matrix<scalar_type, 3, 3> res_temp_SO3; MTK::vect<3, scalar_type> seg_SO3; for(typename std::vector<std::pair<int, int> >::iterator it = x_.SO3_state.begin(); it != x_.SO3_state.end(); it++) { int idx = (*it).first; for(int i = 0; i < 3; i++){ seg_SO3(i) = dx_(i + idx); } res_temp_SO3 = MTK::A_matrix(seg_SO3).transpose(); for(int i = 0; i < int(n); i++){ L_. template block<3, 1>(idx, i) = res_temp_SO3 * (P_. template block<3, 1>(idx, i)); } if(n > dof_Measurement) { for(int i = 0; i < dof_Measurement; i++){ K_. template block<3, 1>(idx, i) = res_temp_SO3 * (K_. template block<3, 1>(idx, i)); } } else { for(int i = 0; i < n; i++){ K_x. template block<3, 1>(idx, i) = res_temp_SO3 * (K_x. template block<3, 1>(idx, i)); } } for(int i = 0; i < n; i++){ L_. template block<1, 3>(i, idx) = (L_. template block<1, 3>(i, idx)) * res_temp_SO3.transpose(); P_. template block<1, 3>(i, idx) = (P_. template block<1, 3>(i, idx)) * res_temp_SO3.transpose(); } } Matrix<scalar_type, 2, 2> res_temp_S2; MTK::vect<2, scalar_type> seg_S2; for(typename std::vector<std::pair<int, int> >::iterator it = x_.S2_state.begin(); it != x_.S2_state.end(); it++) { int idx = (*it).first; for(int i = 0; i < 2; i++){ seg_S2(i) = dx_(i + idx); } Eigen::Matrix<scalar_type, 2, 3> Nx; Eigen::Matrix<scalar_type, 3, 2> Mx; x_.S2_Nx_yy(Nx, idx); x_propagated.S2_Mx(Mx, seg_S2, idx); res_temp_S2 = Nx * Mx; for(int i = 0; i < n; i++){ L_. template block<2, 1>(idx, i) = res_temp_S2 * (P_. template block<2, 1>(idx, i)); } if(n > dof_Measurement) { for(int i = 0; i < dof_Measurement; i++){ K_. template block<2, 1>(idx, i) = res_temp_S2 * (K_. template block<2, 1>(idx, i)); } } else { for(int i = 0; i < n; i++){ K_x. template block<2, 1>(idx, i) = res_temp_S2 * (K_x. template block<2, 1>(idx, i)); } } for(int i = 0; i < n; i++){ L_. template block<1, 2>(i, idx) = (L_. template block<1, 2>(i, idx)) * res_temp_S2.transpose(); P_. template block<1, 2>(i, idx) = (P_. template block<1, 2>(i, idx)) * res_temp_S2.transpose(); } } if(n > dof_Measurement) { P_ = L_ - K_*h_x * P_; } else { P_ = L_ - K_x * P_; } return; } } } 详细注释上述代码
09-30
[2025-09-26T12:19:10.694Z] FAILED: out_odm/target/product/arctic/obj/SHARED_LIBRARIES/librecovery_ui_ext_intermediates/LINKED/librecovery_ui_ext.so [2025-09-26T12:19:10.695Z] /bin/bash -c "prebuilts/clang/host/linux-x86/clang-r450784d/bin/clang++ -nostdlib -Wl,-soname,librecovery_ui_ext.so -Wl,--gc-sections -shared -Wl,--whole-archive out_odm/target/product/arctic/obj/STATIC_LIBRARIES/librecovery_ui_default.recovery_intermediates/librecovery_ui_default.recovery.a -Wl,--no-whole-archive out_odm/target/product/arctic/obj/STATIC_LIBRARIES/ota_metadata_proto_cc.recovery_intermediates/ota_metadata_proto_cc.recovery.a out_odm/target/product/arctic/obj/STATIC_LIBRARIES/libinstall.recovery_intermediates/libinstall.recovery.a out_odm/target/product/arctic/obj/STATIC_LIBRARIES/libotautil.recovery_intermediates/libotautil.recovery.a out_odm/target/product/arctic/obj/STATIC_LIBRARIES/libminui.recovery_intermediates/libminui.recovery.a out_odm/target/product/arctic/obj/STATIC_LIBRARIES/libmiutil.recovery_intermediates/libmiutil.recovery.a out_odm/target/product/arctic/obj/STATIC_LIBRARIES/librecovery_utils.recovery_intermediates/librecovery_utils.recovery.a out_odm/target/product/arctic/obj/STATIC_LIBRARIES/libc++fs_intermediates/libc++fs.a out_odm/target/product/arctic/obj/STATIC_LIBRARIES/librecovery_fastboot.recovery_intermediates/librecovery_fastboot.recovery.a out_odm/target/product/arctic/obj/STATIC_LIBRARIES/libminui.recovery_intermediates/libminui.recovery.a out_odm/target/product/arctic/obj/STATIC_LIBRARIES/librecovery_utils.recovery_intermediates/librecovery_utils.recovery.a out_odm/target/product/arctic/obj/STATIC_LIBRARIES/libotautil.recovery_intermediates/libotautil.recovery.a out_odm/target/product/arctic/obj/STATIC_LIBRARIES/libsnapshot_nobinder_intermediates/libsnapshot_nobinder.a out_odm/target/product/arctic/obj/STATIC_LIBRARIES/libfstab.recovery_intermediates/libfstab.recovery.a out_odm/target/product/arctic/obj/STATIC_LIBRARIES/libminadbd_services.recovery_intermediates/libminadbd_services.recovery.a out_odm/target/product/arctic/obj/STATIC_LIBRARIES/libhealthhalutils.recovery_intermediates/libhealthhalutils.recovery.a out_odm/target/product/arctic/obj/STATIC_LIBRARIES/libvintf.recovery_intermediates/libvintf.recovery.a out_odm/target/product/arctic/obj/STATIC_LIBRARIES/libcrypto_utils_intermediates/libcrypto_utils.a out_odm/target/product/arctic/obj/STATIC_LIBRARIES/libfusesideload.recovery_intermediates/libfusesideload.recovery.a out_odm/target/product/arctic/obj/STATIC_LIBRARIES/librecovery_ui.recovery_intermediates/librecovery_ui.recovery.a out_odm/target/product/arctic/obj/STATIC_LIBRARIES/libmiutil.recovery_intermediates/libmiutil.recovery.a out_odm/target/product/arctic/obj/STATIC_LIBRARIES/libadbd_services.recovery_intermediates/libadbd_services.recovery.a out_odm/target/product/arctic/obj/STATIC_LIBRARIES/libadbd_core.recovery_intermediates/libadbd_core.recovery.a out_odm/target/product/arctic/obj/STATIC_LIBRARIES/libapp_processes_protos_lite.recovery_intermediates/libapp_processes_protos_lite.recovery.a out_odm/target/product/arctic/obj/STATIC_LIBRARIES/update_metadata-protos_intermediates/update_metadata-protos.a out_odm/target/product/arctic/obj/STATIC_LIBRARIES/libdiagnose_usb_intermediates/libdiagnose_usb.a out_odm/target/product/arctic/obj/STATIC_LIBRARIES/libbrotli_intermediates/libbrotli.a out_odm/target/product/arctic/obj/STATIC_LIBRARIES/libadb_crypto_static.recovery_intermediates/libadb_crypto_static.recovery.a out_odm/target/product/arctic/obj/STATIC_LIBRARIES/libadb_tls_connection_static.recovery_intermediates/libadb_tls_connection_static.recovery.a out_odm/target/product/arctic/obj/STATIC_LIBRARIES/libc++demangle.recovery_intermediates/libc++demangle.recovery.a out_odm/target/product/arctic/obj/STATIC_LIBRARIES/libclang_rt.ubsan_minimal.recovery_intermediates/libclang_rt.ubsan_minimal.recovery.a prebuilts/clang/host/linux-x86/clang-r450784d/lib64/clang/14.0.6/lib/linux//libclang_rt.builtins-aarch64-android.a -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,--build-id=md5 -Wl,--fatal-warnings -Wl,--no-undefined-version -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libgcc_stripped.a -Wl,--exclude-libs,libunwind_llvm.a -Wl,--exclude-libs,libunwind.a -Wl,--icf=safe -fuse-ld=lld -Wl,--hash-style=gnu -Wl,-z,separate-code -Wl,-z,max-page-size=4096 -Wl,--pack-dyn-relocs=android+relr -Wl,--use-android-relr-tags -Wl,--exclude-libs,libclang_rt.ubsan_minimal.a -Wl,--no-undefined -target aarch64-linux-android10000 out_odm/target/product/arctic/obj/SHARED_LIBRARIES/libbase.recovery_intermediates/libbase.recovery.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/liblog.recovery_intermediates/liblog.recovery.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/librecovery_ui.recovery_intermediates/librecovery_ui.recovery.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/libcrypto.recovery_intermediates/libcrypto.recovery.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/libcutils.recovery_intermediates/libcutils.recovery.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/libext4_utils_intermediates/libext4_utils.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/libfs_mgr_intermediates/libfs_mgr.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/libutils.recovery_intermediates/libutils.recovery.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/libz.recovery_intermediates/libz.recovery.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/libziparchive.recovery_intermediates/libziparchive.recovery.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/libssl.recovery_intermediates/libssl.recovery.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/libfusesideload.recovery_intermediates/libfusesideload.recovery.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/libbootloader_message.recovery_intermediates/libbootloader_message.recovery.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/libpng.recovery_intermediates/libpng.recovery.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/android.hardware.boot@1.0.recovery_intermediates/android.hardware.boot@1.0.recovery.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/android.hardware.boot@1.1.recovery_intermediates/android.hardware.boot@1.1.recovery.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/libbase.recovery_intermediates/libbase.recovery.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/libbootloader_message.recovery_intermediates/libbootloader_message.recovery.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/liblp_intermediates/liblp.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/liblog.recovery_intermediates/liblog.recovery.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/libprotobuf-cpp-lite.recovery_intermediates/libprotobuf-cpp-lite.recovery.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/android.hardware.health@2.0.recovery_intermediates/android.hardware.health@2.0.recovery.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/libhidlbase.recovery_intermediates/libhidlbase.recovery.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/libhidl-gen-utils.recovery_intermediates/libhidl-gen-utils.recovery.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/libselinux.recovery_intermediates/libselinux.recovery.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/libtinyxml2.recovery_intermediates/libtinyxml2.recovery.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/libasyncio.recovery_intermediates/libasyncio.recovery.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/libadbd_auth_intermediates/libadbd_auth.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/libmdnssd_intermediates/libmdnssd.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/libadbconnection_server.recovery_intermediates/libadbconnection_server.recovery.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/libc++.recovery_intermediates/libc++.recovery.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/libc.recovery_intermediates/libc.recovery.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/libm.recovery_intermediates/libm.recovery.so out_odm/target/product/arctic/obj/SHARED_LIBRARIES/libdl.recovery_intermediates/libdl.recovery.so -o out_odm/target/product/arctic/obj/SHARED_LIBRARIES/librecovery_ui_ext_intermediates/LINKED/librecovery_ui_ext.so" [2025-09-26T12:19:10.695Z] ld.lld: error: undefined symbol: atexit [2025-09-26T12:19:10.695Z] >>> referenced by mdns.cpp:198 (packages/modules/adb/daemon/mdns.cpp:198) [2025-09-26T12:19:10.695Z] >>> mdns.o:(setup_mdns(int)) in archive out_odm/target/product/arctic/obj/STATIC_LIBRARIES/libadbd_services.recovery_intermediates/libadbd_services.recovery.a [2025-09-26T12:19:10.695Z] clang-14: error: linker command failed with exit code 1 (use -v to see invocation)
09-27
//iterated error state EKF update for measurement as a dynamic manifold, whose dimension or type is changing. //the measurement and the measurement model are received in a dynamic manner. template<typename measurement_runtime, typename measurementModel_runtime> void update_iterated_dyn_runtime(measurement_runtime z, measurementnoisecovariance_dyn R, measurementModel_runtime h_runtime) { int t = 0; bool valid = true; bool converg = true; state x_propagated = x_; cov P_propagated = P_; int dof_Measurement; int dof_Measurement_noise; for(int i=-1; i<maximum_iter; i++) { valid = true; #ifdef USE_sparse spMt h_x_ = h_x_dyn(x_, valid).sparseView(); spMt h_v_ = h_v_dyn(x_, valid).sparseView(); spMt R_ = R.sparseView(); #else Matrix<scalar_type, Eigen::Dynamic, n> h_x_ = h_x_dyn(x_, valid); Matrix<scalar_type, Eigen::Dynamic, Eigen::Dynamic> h_v_ = h_v_dyn(x_, valid); #endif measurement_runtime h_ = h_runtime(x_, valid); dof_Measurement = measurement_runtime::DOF; dof_Measurement_noise = R.rows(); vectorized_state dx, dx_new; x_.boxminus(dx, x_propagated); dx_new = dx; if(! valid) { continue; } P_ = P_propagated; Matrix<scalar_type, 3, 3> res_temp_SO3; MTK::vect<3, scalar_type> seg_SO3; for (std::vector<std::pair<int, int> >::iterator it = x_.SO3_state.begin(); it != x_.SO3_state.end(); it++) { int idx = (*it).first; int dim = (*it).second; for(int i = 0; i < 3; i++){ seg_SO3(i) = dx(idx+i); } res_temp_SO3 = MTK::A_matrix(seg_SO3).transpose(); dx_new.template block<3, 1>(idx, 0) = res_temp_SO3 * dx_new.template block<3, 1>(idx, 0); for(int i = 0; i < n; i++){ P_. template block<3, 1>(idx, i) = res_temp_SO3 * (P_. template block<3, 1>(idx, i)); } for(int i = 0; i < n; i++){ P_. template block<1, 3>(i, idx) =(P_. template block<1, 3>(i, idx)) * res_temp_SO3.transpose(); } } Matrix<scalar_type, 2, 2> res_temp_S2; MTK::vect<2, scalar_type> seg_S2; for (std::vector<std::pair<int, int> >::iterator it = x_.S2_state.begin(); it != x_.S2_state.end(); it++) { int idx = (*it).first; int dim = (*it).second; for(int i = 0; i < 2; i++){ seg_S2(i) = dx(idx + i); } Eigen::Matrix<scalar_type, 2, 3> Nx; Eigen::Matrix<scalar_type, 3, 2> Mx; x_.S2_Nx_yy(Nx, idx); x_propagated.S2_Mx(Mx, seg_S2, idx); res_temp_S2 = Nx * Mx; dx_new.template block<2, 1>(idx, 0) = res_temp_S2 * dx_new.template block<2, 1>(idx, 0); for(int i = 0; i < n; i++){ P_. template block<2, 1>(idx, i) = res_temp_S2 * (P_. template block<2, 1>(idx, i)); } for(int i = 0; i < n; i++){ P_. template block<1, 2>(i, idx) = (P_. template block<1, 2>(i, idx)) * res_temp_S2.transpose(); } } Matrix<scalar_type, Eigen::Dynamic, Eigen::Dynamic> K_; if(n > dof_Measurement) { #ifdef USE_sparse Matrix<scalar_type, Eigen::Dynamic, Eigen::Dynamic> K_temp = h_x_ * P_ * h_x_.transpose(); spMt R_temp = h_v_ * R_ * h_v_.transpose(); K_temp += R_temp; K_ = P_ * h_x_.transpose() * K_temp.inverse(); #else K_= P_ * h_x_.transpose() * (h_x_ * P_ * h_x_.transpose() + h_v_ * R * h_v_.transpose()).inverse(); #endif } else { #ifdef USE_sparse Eigen::Matrix<scalar_type, Eigen::Dynamic, Eigen::Dynamic> b = Eigen::Matrix<scalar_type, Eigen::Dynamic, Eigen::Dynamic>::Identity(dof_Measurement_noise, dof_Measurement_noise); Eigen::SparseQR<Eigen::SparseMatrix<scalar_type>, Eigen::COLAMDOrdering<int>> solver; solver.compute(R_); Eigen::Matrix<scalar_type, Eigen::Dynamic, Eigen::Dynamic> R_in_temp = solver.solve(b); spMt R_in = R_in_temp.sparseView(); spMt K_temp = h_x_.transpose() * R_in * h_x_; cov P_temp = P_.inverse(); P_temp += K_temp; K_ = P_temp.inverse() * h_x_.transpose() * R_in; #else Eigen::Matrix<scalar_type, Eigen::Dynamic, Eigen::Dynamic> R_in = (h_v_*R*h_v_.transpose()).inverse(); K_ = (h_x_.transpose() * R_in * h_x_ + P_.inverse()).inverse() * h_x_.transpose() * R_in; #endif } cov K_x = K_ * h_x_; Eigen::Matrix<scalar_type, measurement_runtime::DOF, 1> innovation; z.boxminus(innovation, h_); Matrix<scalar_type, n, 1> dx_ = K_ * innovation + (K_x - Matrix<scalar_type, n, n>::Identity()) * dx_new; state x_before = x_; x_.boxplus(dx_); converg = true; for(int i = 0; i < n ; i++) { if(std::fabs(dx_[i]) > limit[i]) { converg = false; break; } } if(converg) t++; if(t > 1 || i == maximum_iter - 1) { L_ = P_; std::cout << "iteration time:" << t << "," << i << std::endl; Matrix<scalar_type, 3, 3> res_temp_SO3; MTK::vect<3, scalar_type> seg_SO3; for(typename std::vector<std::pair<int, int> >::iterator it = x_.SO3_state.begin(); it != x_.SO3_state.end(); it++) { int idx = (*it).first; for(int i = 0; i < 3; i++){ seg_SO3(i) = dx_(i + idx); } res_temp_SO3 = MTK::A_matrix(seg_SO3).transpose(); for(int i = 0; i < n; i++){ L_. template block<3, 1>(idx, i) = res_temp_SO3 * (P_. template block<3, 1>(idx, i)); } if(n > dof_Measurement) { for(int i = 0; i < dof_Measurement; i++){ K_. template block<3, 1>(idx, i) = res_temp_SO3 * (K_. template block<3, 1>(idx, i)); } } else { for(int i = 0; i < n; i++){ K_x. template block<3, 1>(idx, i) = res_temp_SO3 * (K_x. template block<3, 1>(idx, i)); } } for(int i = 0; i < n; i++){ L_. template block<1, 3>(i, idx) = (L_. template block<1, 3>(i, idx)) * res_temp_SO3.transpose(); P_. template block<1, 3>(i, idx) = (P_. template block<1, 3>(i, idx)) * res_temp_SO3.transpose(); } } Matrix<scalar_type, 2, 2> res_temp_S2; MTK::vect<2, scalar_type> seg_S2; for(typename std::vector<std::pair<int, int> >::iterator it = x_.S2_state.begin(); it != x_.S2_state.end(); it++) { int idx = (*it).first; for(int i = 0; i < 2; i++){ seg_S2(i) = dx_(i + idx); } Eigen::Matrix<scalar_type, 2, 3> Nx; Eigen::Matrix<scalar_type, 3, 2> Mx; x_.S2_Nx_yy(Nx, idx); x_propagated.S2_Mx(Mx, seg_S2, idx); res_temp_S2 = Nx * Mx; for(int i = 0; i < n; i++){ L_. template block<2, 1>(idx, i) = res_temp_S2 * (P_. template block<2, 1>(idx, i)); } if(n > dof_Measurement) { for(int i = 0; i < dof_Measurement; i++){ K_. template block<2, 1>(idx, i) = res_temp_S2 * (K_. template block<2, 1>(idx, i)); } } else { for(int i = 0; i < n; i++){ K_x. template block<2, 1>(idx, i) = res_temp_S2 * (K_x. template block<2, 1>(idx, i)); } } for(int i = 0; i < n; i++){ L_. template block<1, 2>(i, idx) = (L_. template block<1, 2>(i, idx)) * res_temp_S2.transpose(); P_. template block<1, 2>(i, idx) = (P_. template block<1, 2>(i, idx)) * res_temp_S2.transpose(); } } if(n > dof_Measurement) { P_ = L_ - K_*h_x_*P_; } else { P_ = L_ - K_x * P_; } return; } } } 详细注释上述代码
09-30
FAILED: out/target/product/volcano/obj/SHARED_LIBRARIES/com.qti.chi.override_intermediates/LINKED/com.qti.chi.override.so /bin/bash -c "vendor/qcom/proprietary/llvm-arm-toolchain-ship/16/bin/clang++ -nostdlib -Wl,-soname,com.qti.chi.override.so -Wl,--gc-sections -shared out/soong/.intermediates/bionic/libc/crtbegin_so/android_vendor.34_arm64_armv8-a-branchprot_kryo300/crtbegin_so.o -Wl,--whole-archive out/target/product/volcano/obj/STATIC_LIBRARIES/libchifeature2core_intermediates/libchifeature2core.a out/target/product/volcano/obj/STATIC_LIBRARIES/libchiframework_intermediates/libchiframework.a out/target/product/volcano/obj/STATIC_LIBRARIES/libchiutils_intermediates/libchiutils.a out/target/product/volcano/obj/STATIC_LIBRARIES/libchiusecase_intermediates/libchiusecase.a -Wl,--no-whole-archive out/target/product/volcano/obj/STATIC_LIBRARIES/libc++demangle.vendor_intermediates/libc++demangle.vendor.a out/target/product/volcano/obj/STATIC_LIBRARIES/libclang_rt.ubsan_minimal.vendor_intermediates/libclang_rt.ubsan_minimal.vendor.a prebuilts/clang/host/linux-x86/clang-r487747c/lib64/clang/17/lib/linux//libclang_rt.builtins-aarch64-android.a -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,--build-id=md5 -Wl,--fatal-warnings -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libgcc_stripped.a -Wl,--exclude-libs,libunwind_llvm.a -Wl,--exclude-libs,libunwind.a -fuse-ld=lld -Xclang -opaque-pointers -Wl,--hash-style=gnu -Wl,-z,separate-code -Wl,-z,max-page-size=4096 -Wl,--pack-dyn-relocs=android+relr -Wl,--use-android-relr-tags -ffp-contract=fast -mcpu=cortex-a53 -Wno-logical-not-parentheses -Wl,--no-fatal-warnings -Wno-address-of-packed-member -Wno-tautological-constant-out-of-range-compare -Wno-overriding-t-option -Ofast -fno-fast-math -flto=thin -fuse-ld=lld -flto -fsanitize-cfi-cross-dso -fsanitize=cfi -Wl,-plugin-opt,O1 -Wl,-plugin-opt,-O3 -Ofast -fno-fast-math -flto=thin -fuse-ld=lld -Wl,--version-script,build/soong/cc/config/cfi_exports.map -Wl,--exclude-libs,libclang_rt.ubsan_minimal.a -Wl,--no-undefined -target aarch64-linux-android34 out/target/product/volcano/obj/SHARED_LIBRARIES/libc++.vendor_intermediates/libc++.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/libcutils.vendor_intermediates/libcutils.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/liblog.vendor_intermediates/liblog.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/libsync.vendor_intermediates/libsync.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/libcommonchiutils_intermediates/libcommonchiutils.so out/target/product/volcano/obj/SHARED_LIBRARIES/android.hardware.graphics.common@1.1.vendor_intermediates/android.hardware.graphics.common@1.1.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/libhardware.vendor_intermediates/libhardware.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/libhidlbase.vendor_intermediates/libhidlbase.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/libhidltransport.vendor_intermediates/libhidltransport.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/libcamera_metadata.vendor_intermediates/libcamera_metadata.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/libcamxcommonutils_intermediates/libcamxcommonutils.so out/target/product/volcano/obj/SHARED_LIBRARIES/libcamxsettingsmanager_intermediates/libcamxsettingsmanager.so out/target/product/volcano/obj/SHARED_LIBRARIES/libqti_vndfwk_detect.vendor_intermediates/libqti_vndfwk_detect.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/libutils.vendor_intermediates/libutils.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/android.hardware.graphics.allocator@4.0.vendor_intermediates/android.hardware.graphics.allocator@4.0.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/android.hardware.graphics.mapper@4.0.vendor_intermediates/android.hardware.graphics.mapper@4.0.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/libgralloc.qti_intermediates/libgralloc.qti.so out/target/product/volcano/obj/SHARED_LIBRARIES/libgralloctypes.vendor_intermediates/libgralloctypes.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/vendor.qti.hardware.display.allocator@4.0.vendor_intermediates/vendor.qti.hardware.display.allocator@4.0.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/vendor.qti.hardware.display.mapper@4.0.vendor_intermediates/vendor.qti.hardware.display.mapper@4.0.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/vendor.qti.hardware.display.mapperextensions@1.1.vendor_intermediates/vendor.qti.hardware.display.mapperextensions@1.1.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/android.hardware.graphics.allocator-V1-ndk.vendor_intermediates/android.hardware.graphics.allocator-V1-ndk.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/libbinder.vendor_intermediates/libbinder.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/libbinder_ndk.vendor_intermediates/libbinder_ndk.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/libjsoncpp.vendor_intermediates/libjsoncpp.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/com.qti.camx.chiiqutils_intermediates/com.qti.camx.chiiqutils.so out/target/product/volcano/obj/SHARED_LIBRARIES/android.hardware.graphics.allocator-V2-ndk.vendor_intermediates/android.hardware.graphics.allocator-V2-ndk.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/libbinder_ndk.vendor_intermediates/libbinder_ndk.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/libbitmlenginev2_intermediates/libbitmlenginev2.so out/target/product/volcano/obj/SHARED_LIBRARIES/libcamera_metadata.vendor_intermediates/libcamera_metadata.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/libcamximageformatutils_intermediates/libcamximageformatutils.so out/target/product/volcano/obj/SHARED_LIBRARIES/libchilog_intermediates/libchilog.so out/target/product/volcano/obj/SHARED_LIBRARIES/libcutils.vendor_intermediates/libcutils.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/libhardware.vendor_intermediates/libhardware.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/libhidlbase.vendor_intermediates/libhidlbase.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/liblog.vendor_intermediates/liblog.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/libsync.vendor_intermediates/libsync.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/libutils.vendor_intermediates/libutils.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/vendor.qti.hardware.camera.aon-service-impl_intermediates/vendor.qti.hardware.camera.aon-service-impl.so out/target/product/volcano/obj/SHARED_LIBRARIES/vendor.qti.hardware.camera.postproc@1.0-service-impl_intermediates/vendor.qti.hardware.camera.postproc@1.0-service-impl.so out/target/product/volcano/obj/SHARED_LIBRARIES/vendor.qti.hardware.camera.offlinecamera-service-impl_intermediates/vendor.qti.hardware.camera.offlinecamera-service-impl.so out/target/product/volcano/obj/SHARED_LIBRARIES/liblog.vendor_intermediates/liblog.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/libc++.vendor_intermediates/libc++.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/libc.vendor_intermediates/libc.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/libm.vendor_intermediates/libm.vendor.so out/target/product/volcano/obj/SHARED_LIBRARIES/libdl.vendor_intermediates/libdl.vendor.so -o out/target/product/volcano/obj/SHARED_LIBRARIES/com.qti.chi.override_intermediates/LINKED/com.qti.chi.override.so out/soong/.intermediates/bionic/libc/crtend_so/android_vendor.34_arm64_armv8-a-branchprot_kryo300/crtend_so.o" ld.lld: error: undefined symbol: ExtensionModule::cam3thirdApp_profiles() >>> referenced by chxextensionmodule.cpp:5686 (vendor/qcom/proprietary/chi-cdk/core/chiframework/chxextensionmodule.cpp:5686) >>> lto.tmp:(ExtensionModule::InitializeOverrideSession(unsigned int, camera3_device const*, chi_hal_ops const*, camera3_stream_configuration*, int*, void**)) >>> referenced by chxextensionmodule.cpp:5686 (vendor/qcom/proprietary/chi-cdk/core/chiframework/chxextensionmodule.cpp:5686) >>> lto.tmp:(ExtensionModule::InitializeOverrideSession(unsigned int, camera3_device const*, chi_hal_ops const*, camera3_stream_configuration*, int*, void**)) clang++: error: linker command failed with exit code 1 (use -v to see invocation)
08-05
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值