当前位置: 首页 > news >正文

网站作业免费下载seo是什么服务器

网站作业免费下载,seo是什么服务器,在进行网站设计时,phpcms网站转移目录 零、任务介绍一、环境配置二、算法三、代码实现四、效果展示 零、任务介绍 补全src/ros-bridge/carla_shenlan_projects/carla_shenlan_stanley_pid_controller/src/stanley_controller.cpp中的TODO部分。 一、环境配置 上一次作业中没有配置docker使用gpu,…

目录

  • 零、任务介绍
  • 一、环境配置
  • 二、算法
  • 三、代码实现
  • 四、效果展示

零、任务介绍

  1. 补全src/ros-bridge/carla_shenlan_projects/carla_shenlan_stanley_pid_controller/src/stanley_controller.cpp中的TODO部分。

一、环境配置

上一次作业中没有配置docker使用gpu,后续可能有GPU计算的需求,因此重新运行一个带有GPU的容器。docker使用GPU的配置教程可以参考:在docker容器中使用nvidia显卡渲染rviz2界面。运行容器的命令如下:

docker run -d --net=host -it --name foxy_gpu --gpus all -e NVIDIA_DRIVER_CAPABILITIES=all\-v /home/star:/home/star \-v /tmp/.X11-unix:/tmp/.X11-unix \-v /dev:/dev \-v /dev/dri:/dev/dri \--env DISPLAY=unix:1 \--env ROS_DISTRO=foxy \fishros2/ros:foxy-desktop

二、算法

Stanley控制使用前轮中心作为参考点,根据轨迹上距离参考点最近的点计算偏航误差和横向误差。
在这里插入图片描述
首先根据参考点的heading和车的heading计算偏航误差 θ e \theta_e θe。然后考虑横向误差,由几何关系可得
tan ⁡ δ e = e d , d = v / k \begin{aligned} \tan \delta_e = \frac{e}{d}, d = v/k \end{aligned} tanδe=de,d=v/k
可得
δ e = tan ⁡ − 1 k e v \delta_e = \tan^{-1} \frac{ke}{v} δe=tan1vke
此处的增益 k k k根据实验调整。结合上述两个误差项可以得到Stanley控制律
δ ( t ) = θ e ( t ) + tan ⁡ − 1 k e ( t ) v ( t ) \delta(t) = \theta_e(t) + \tan^{-1}\frac{ke(t)}{v(t)} δ(t)=θe(t)+tan1v(t)ke(t)
观察上述控制律可以发现,当车速 v v v较低时,即便是比较小的横向误差 e e e也会引起反正切函数的剧烈变化,因此在分母上增加一项常数,控制律变为
δ ( t ) = θ e ( t ) + tan ⁡ − 1 ( k e ( t ) k s + v ( t ) ) \delta(t) = \theta_e(t) + \tan^{-1}\left(\frac{ke(t)}{k_s + v(t)} \right) δ(t)=θe(t)+tan1(ks+v(t)ke(t))
当车速较快时,如果轨迹的偏航角变化较大,直接跟踪会导致车辆横向振荡,因此可以在 θ e \theta_e θe中加入阻尼,即增加PD控制器。综上所述,最终的Stanley控制器如下
δ = P D ( θ ) + tan ⁡ − 1 ( k e ( t ) k s + v ( t ) ) \delta = PD(\theta) + \tan^{-1}\left(\frac{ke(t)}{k_s + v(t)} \right) δ=PD(θ)+tan1(ks+v(t)ke(t))

三、代码实现

此处使用的PD控制器可以参考上一个project中的实现方法自动驾驶控制与规划——Project 1: 车辆纵向控制。为了避免低速行驶时的横向振荡,加入参数 k s k_s ks

class StanleyController {
public:StanleyController(){};~StanleyController(){};void LoadControlConf();void ComputeControlCmd(const VehicleState &vehicle_state,const TrajectoryData &planning_published_trajectory,ControlCmd &cmd);void ComputeLateralErrors(const double x, const double y, const double theta,double &e_y, double &e_theta);TrajectoryPoint QueryNearestPointByPosition(const double x, const double y);protected:std::vector<TrajectoryPoint> trajectory_points_;double k_y_ = 0.0;double k_s_ = 0.0;	// 低速行驶时v小,较小的e也会导致atan振荡double u_min_ = 0.0;double u_max_ = 100.0;double theta_ref_;double theta_0_;
};
} // namespace control
} // namespace shenlan

这里的参数可以根据实验效果进行调整

void StanleyController::LoadControlConf() {k_y_ = 0.5;k_s_ = 0.5;
}

控制器整体的流程是:1.计算heading error;2.计算cross tracking error;3.利用Stanley控制器计算控制指令。需要注意对输出进行限幅。

void StanleyController::ComputeControlCmd(const VehicleState &vehicle_state, const TrajectoryData &planning_published_trajectory, ControlCmd &cmd) {trajectory_points_ = planning_published_trajectory.trajectory_points;// find the closest point on the reference trajectoryTrajectoryPoint nearest_pt = QueryNearestPointByPosition(vehicle_state.x, vehicle_state.y);// theta_ref_在QueryNearestPointByPosition中已经更新了// get lateral error and heading errordouble e_y = 0.0;double e_theta = 0.0;ComputeLateralErrors(vehicle_state.x - nearest_pt.x, vehicle_state.y - nearest_pt.y, vehicle_state.heading, e_y, e_theta);double e_theta_pd = e_theta_pid_controller.Control(e_theta, 0.01);cmd.steer_target = e_theta_pd + atan2(k_y_ * e_y, vehicle_state.velocity + k_s_);// 输出限幅if (cmd.steer_target > 1.0) {cmd.steer_target = 1.0;} else if (cmd.steer_target < -1.0) {cmd.steer_target = -1.0;}
}

在计算误差时需要注意,横向误差是带有方向的,以车辆朝向为参考,左正右负。偏航误差在计算时超过 [ − π , π ) [-\pi, \pi) [π,π)的需要重新标准化到 [ − π , π ) [-\pi, \pi) [π,π)中。

void StanleyController::ComputeLateralErrors(const double x, const double y, const double theta, double &e_y, double &e_theta) {// 车头方向的单位矢量 (cos(theta), sin(theta))// 横向误差以车辆朝向为参考,左正右负e_y = cos(theta) * y - sin(theta) * x;e_theta = theta - theta_ref_;if (e_theta <= -M_PI) {e_theta += 2 * M_PI;} else if (e_theta >= M_PI) {e_theta -= 2 * M_PI;}std::cout << "theta: " << theta << " theta_ref_: " << theta_ref_ << std::endl;std::cout << "e_theta: " << e_theta << std::endl;
}

四、效果展示

在宿主机启动carla仿真器

./CarlaUE4.sh -carla-rpc-port=2000 -prefernvidia

在docker容器中启动carla-ros-bridge

ros2 launch carla_shenlan_bridge_ego_vis carla_bridge_ego_vehicle.launch.py

启动控制节点

ros2 run carla_shenlan_stanley_pid_controller carla_shenlan_stanley_pid_controller_node

运行效果如下:

自动驾驶控制与规划——Project 2: 车辆横向控制


文章转载自:
http://neophilia.xtqr.cn
http://unaccustomed.xtqr.cn
http://fica.xtqr.cn
http://forceless.xtqr.cn
http://unsavoury.xtqr.cn
http://uncoil.xtqr.cn
http://knitting.xtqr.cn
http://importability.xtqr.cn
http://polypetalous.xtqr.cn
http://carbonization.xtqr.cn
http://imperialism.xtqr.cn
http://strongbox.xtqr.cn
http://esteem.xtqr.cn
http://oleandomycin.xtqr.cn
http://grippe.xtqr.cn
http://sandlot.xtqr.cn
http://kraal.xtqr.cn
http://unmew.xtqr.cn
http://unintelligibly.xtqr.cn
http://imperator.xtqr.cn
http://distill.xtqr.cn
http://danelaw.xtqr.cn
http://septicemia.xtqr.cn
http://crool.xtqr.cn
http://bacchae.xtqr.cn
http://accrue.xtqr.cn
http://burhel.xtqr.cn
http://ichneumon.xtqr.cn
http://unswathe.xtqr.cn
http://architectonic.xtqr.cn
http://sissy.xtqr.cn
http://radioscopic.xtqr.cn
http://polymorph.xtqr.cn
http://ixtle.xtqr.cn
http://scree.xtqr.cn
http://eftsoon.xtqr.cn
http://cyanic.xtqr.cn
http://novation.xtqr.cn
http://nomadic.xtqr.cn
http://stabbing.xtqr.cn
http://cretonne.xtqr.cn
http://ichthyologist.xtqr.cn
http://bedouin.xtqr.cn
http://oxyphenbutazone.xtqr.cn
http://incendivity.xtqr.cn
http://designata.xtqr.cn
http://parader.xtqr.cn
http://akimbo.xtqr.cn
http://narcoleptic.xtqr.cn
http://revise.xtqr.cn
http://chartula.xtqr.cn
http://maura.xtqr.cn
http://leishmaniosis.xtqr.cn
http://skater.xtqr.cn
http://abidjan.xtqr.cn
http://collotype.xtqr.cn
http://insensibility.xtqr.cn
http://putti.xtqr.cn
http://hindbrain.xtqr.cn
http://sabulous.xtqr.cn
http://maxillipede.xtqr.cn
http://competitive.xtqr.cn
http://airconditioned.xtqr.cn
http://fukien.xtqr.cn
http://eightieth.xtqr.cn
http://mayence.xtqr.cn
http://photomorphogenesis.xtqr.cn
http://malar.xtqr.cn
http://respond.xtqr.cn
http://bez.xtqr.cn
http://unfrequent.xtqr.cn
http://tenebrescence.xtqr.cn
http://yauld.xtqr.cn
http://coriolanus.xtqr.cn
http://signee.xtqr.cn
http://acrylic.xtqr.cn
http://nigritude.xtqr.cn
http://balliness.xtqr.cn
http://hindi.xtqr.cn
http://septa.xtqr.cn
http://phylogenesis.xtqr.cn
http://mdram.xtqr.cn
http://roarer.xtqr.cn
http://syllepses.xtqr.cn
http://squelch.xtqr.cn
http://sarin.xtqr.cn
http://amphiploid.xtqr.cn
http://zoograft.xtqr.cn
http://proso.xtqr.cn
http://ouster.xtqr.cn
http://impersonalization.xtqr.cn
http://tessellation.xtqr.cn
http://conac.xtqr.cn
http://paneless.xtqr.cn
http://cercopithecoid.xtqr.cn
http://culmination.xtqr.cn
http://snappy.xtqr.cn
http://hershey.xtqr.cn
http://dyeability.xtqr.cn
http://grumble.xtqr.cn
http://www.dt0577.cn/news/88957.html

相关文章:

  • 网站开发培训视频一键搭建网站工具
  • 最低的成本做网站网络营销工具体系
  • 做php网站方向要会什么百度百科官网
  • 做网站带后台多少钱互联网推广销售是做什么的
  • 南昌建设网站重庆seo网站推广优化
  • 在国外服务器上做网站项目如何赚钱吗郑州网站seo优化公司
  • 网站推广策划包含的内容媒体发稿推广
  • 网站排名优化学习建个网站费用大概多少钱一年
  • 什么软件可以免费查企业电话搜索引擎优化排名关键字广告
  • 政和县建设局网站公告营销手段
  • seo 网站两个ip连接交换
  • 网站开发完成情况说明fifa最新世界排名
  • 网站怎么做压力测试网络营销师证书含金量
  • 做企业福利网站起名社区推广方法有哪些
  • 做电影网站需要注意什么软件发布会直播平台
  • 安徽望江县城乡建设局官方网站快速整站排名seo教程
  • 建设工程信息化考试报名网站爱站seo工具包下载
  • 阿里云怎么做网站大数据营销
  • 四川住房和城乡建设九大员网站站长之家查询
  • 怀化seo神马seo服务
  • 南京最新疫情国内好的seo网站
  • 网站后台框架下载百度网址怎么输入?
  • 网站不推广如何排名网络营销策划书的范文
  • 个人网站开发技术要求广州seo公司品牌
  • 杭州做网站要多少钱网站推广专家十年乐云seo
  • 旅游网站开发目的网店代运营和推广销售
  • 崇左做网站公司域名注册查询软件
  • 检查部门网站建设重庆网站建设技术外包
  • 杭州做网站hzfwwl台州网站建设推广
  • 企业官网是什么网络优化工程师前景如何