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

ROS(0)命令及学习资源汇总

ROS安装命令

参考:Ubuntu20.04.4安装ROS Noetic详细教程 - 知乎

安装C++和Python3

sudo apt-get install g++

sudo apt-get install python3

ROS运行小海龟仿真器

roscore确定ROS是否运行成功
rosrun turtlesim turtlesim_node运行小海龟仿真器
rosrun turtlesim turtle_teleop_key 启动小海龟控制

工作空间

创建工作空间WorkSpace

mkdir -p ../catkin_ws/src

cd ../catkin_ws/src

catkin_init_workspace

编译工作空间

cd ../catkin_ws

catkin_make

catkin_make install

设置环境变量

source devel/setup.bash

检查环境变量  echo $ROS_PACKAGE_PATH

创建功能包

功能包放到src文件夹中

cd ../catkin_ws/src

catkin_create_pkg 功能包名称test_pkg 依赖std_msgs roscpp rospy

编译功能包

cd ../catkin_ws

catkin_make

source ../catkin_ws/devel/setup.bash

直接配置source

gedit ~/.bashrc

最下方添加  source ~/catkin_ws/devel/setup.bash

广播模型执行命令

执行命令

roscore

rosrun turtlesim turtlesim_node

rosrun 功能包 turtle_tf_broadcaster节点名 __name:=turtle1_tf_broadcaster /turtle1

rosrun 功能包 turtle_tf_broadcaster节点名 __name:=turtle2_tf_broadcaster /turtle2

rosrun 功能包 turtle_tf_listener

rosrun turtlesim turtle_teleop_key

学习资源

机器人命令调试方法整理

 

机器人use_cam功能包话题

Move_base自主导航原理 

Limo机器人命令

差速运动控制

  • $ roslaunch limo_base limo_base.launch  启动底盘
  • $ roslaunch limo_bringup limo_teleop_keyboard.launch  启动键盘操控
  • roslaunch  一次启动多个节点命令
  • rosnode list  查看节点
  • rosnode info /节点名  查看指定节点信息
  • rostopic list  查看话题列表
  • rostopic pub -r 10 /cmd_vel geometry_msgs/Twist ''linear: x y z angular:x y z
  • rostopic echo /odom  订阅odom话题

机器人发布话题,走圆形

  • Publisher(draw_circle)--Message(geometry_msg/Twist)--Topic(cmd_vel)--Message(geometry_msg/Twist)--Subscribe(limo_base_node)
  • 移动机器人有节点(subscriber)limo_base_node订阅了Topic(cmd_cel),话题类型Message为geometry_msg/Twist
  • 检测机器人的运行速度
  • Publisher(limo_base_node)--Message(nav_msgs/Odometry)--Topic(odom)--Message(nav_msgs/Odometry)--Subscriber(limo_subscriber)

移动机器人分布式通信

  • 编辑终端配置文件 
  • $ gedit ~/.bashrc
  • 将机器人配置为主机
  • ROS_MASTER_URI(机器人IP+默认端口11311)、ROS_HOSTNAME(当前系统主机名)、ROS_IP(当前系统的IP地址)均设置为机器人IP即可
  • 将笔记本配置为从机
  • ROS_MASTER_URI(设置为机器人IP)、ROS_HOSTNAME和ROS_IP设置为电脑IP

分布式控制
机器人端——$ roslaunch limo_base limo_base.launch
笔记本端——$ roslaunch limo_bringup limo_teletop_keyboard.launch

控制机器人圆周运动
机器人端——$ roslaunch limo_bringup limo_start.launch    订阅者在机器人
笔记本端——$ rosrun limo_demo draw_circle.py        发布者cmd_vel

查看机器人实时位置
机器人端——$ roslaunch limo_bringup limo_start.launch        机器人发布位姿话题
笔记本端——$ roslaunch limo_bringup limo_teletop_keyboard.launch    键盘控制
笔记本端——$ rosrun limo_demo limo_subscriber.py        笔记本订阅机器人的位姿话题

机器视觉原理

图像采集—————————图像分析—————————控制输出
光源强化检测特征        提取图像特征        I/O控制
相机镜头捕捉特征        图像特征分析        运动控制
光学图像转为数字图像    图像数据标定        可视化显示
光源-镜头、图像传感器(CCD/CMOS)、光束控制单元
      光学信号转为数字信号
照明        相机(2D/3D)

安装ROS USB相机的驱动包

  • sudo apt-get install ros-noetic-usb-cam
  • roslaunch usb_cam usb_cam-test.launch
  • rqt_image_view

三维结构光相机——RealScene

https://github.com/intel-ros/realsense/releases
安装SDK
$ mkdir build
cd build
cmake ..
make
sudo make install
安装ROS驱动
https://github.com/IntelRealSense/librealsense/releases
$ catkin_make-DCATKIN_ENABLE_TESTING=False -DCMAKE_BUILD_TYPE=Release
catkin_make install
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrcsource ~/.bashrc
点云可视化
roslaunch realsense2_camera rs_rgbd.launch
rosrun rviz rviz
通过rviz可以查看三维点云信息

安装OpenCV

$ sudo apt-get install ros-noetic-vision-opencv libopencv-dev python3-opencv
OpenCV                ROS
OpenCV IpIImage <——>CvBridge<->ROS Image Message

获取HSV值

  • 启动机器人的摄像头
  • roslaunch astra_camera dabai_u3.launch
  • 使用rqt查看图像并保存
  • rqt_image_view
  • 预制了hsv检测工具,检测hsv值
  • roscd limo_visions/scripts/ && python hsv_test.py

物体识别与追踪

$ roslaunch limo_visions follow.launch
<launch>
    <include file=$(find limo_base)/launch/limo_base.launch/>                        启动机器人的底盘
    <include file=$(find astra_camera)/launch/dabai_u3.launch/>                        启动机器人摄像头
    <node name="object_detect" pkg="limo_visions" type="object_detect.py" output="screen"/>  启动机器人跟随控制节点
    <node name="follow_object" pkg="limo_visions" type="follow.py" output="screen"/>
</launch>

二维码识别与跟踪

ALVAR——虚拟现实和增强现实的跨平台开源计算机视觉库,由C++编写,提供C++接口
安装ar-track-alvar
$ sudo apt-get install ros-melodic-ar-track-alvar
创建二维码
$ rosrun ar_track_alvar createMarker -s 5 0      (5是二维码的尺寸为5cm,0为保存的内容)

启动摄像头
roslaunch artra_camera dabai_u3.launch
启动二维码识别
roslaunch limo_vision ar_code.launch
查看识别到的二维码的位姿
rostopic echo /ar_pose_marker

二维SLAM地图构建

Gmapping功能包  粒子滤波算法,将定位与建图过程分离,先定位后建图,适合小场景环境下地图信息
基于激光雷达,Rao-Blackwellized粒子滤波算法,二维栅格地图,需要机器人提供里程计信息,OpenSlam开源算法
输出地图话题
nav_msgs/OccupancyGrid

即时定位与地图建模(gmapping)  深度信息、IMU信息、里程计信息->栅格地图
Gmapping中的话题和服务
Topic订阅
名称        类型            描述
tf        tf/tfMessage        用于激光雷达坐标系,基坐标系,里程计坐标系之间的变换
scan        sensor_msgs/LaserScan    激光雷达扫描数据
Topic发布
map_metadata    nav_msgs/MapMetaData    发布地图Meta数据
map        nav_msgs/OccupancyGrid    发布地图栅格数据
~entropy        std_msgs/Float64        发布机器人姿态分布熵的估计
Service
dynamic_map    nav_msgs/GetMap        获取地图数据

Gmapping中的TF变换
必须的TF变换    <scan frame> -> base_link    激光雷达坐标系与基坐标系之间的变换,一般由robot_state_publisher或static_transform_publisher发布
        base_link -> odom        基坐标系与里程计坐标系之间的变换,一般由里程计节点发布
发布的TF变换    map -> odom        地图坐标系与机器人历程坐标系之间的变换,估计机器人在地图中的位姿
base_link 固定在机器人的中心;odom 里程计坐标系;map 地图坐标系 表示全局定位过程中的参考系

配置gampping节点
limo_bringup/launch/limo_gampping.launch
<launch>
    <node pkg="robot_pose_ekf" name="robot_pose_ekf" type="robot_pose_ekf">    卡尔曼滤波,对里程计信息做滤波,提高里程计数据稳定性
        <param name="output_frame" value="odom">
        <param name="base_footprint_frame" value="base_link"/>
    </node>
    <node pkg="gmapping" type="slam_gmapping name="slam_gmapping" output="screen">
        <param> ......
    </node>
    <node pkg="rviz" type="rviz" name="rviz" args="-d $(find limo_bringup)/rviz/gmapping.rviz">
    </node>
</launch>

gmapping 地图构建
roslaunch limo_bringup limo_start.launch pub_odom_tf:=false    启动机器人底盘
roslaunch limo_bringup limo_gmapping.launch            启动建图的gmapping文件
roslaunch limo_bringup limo_teletop_keyboard.launch        启动键盘控制节点
保存地图
cd /agilex_ws/limo_bringup/maps/
rosrun map_server map_saver -f map1    map_saver:地图保存节点  map1:地图文件名

Cartographer功能包  大场景
2016年10月5日,谷歌开源,基于图网络的优化SLAM方法
二维或三维条件下的定位及建图功能
设计目的是在计算资源有限的情况下,实时获取相对较高精度的地图
主要基于激光雷达
后续会支持更多传感器和机器人平台,同时不断增加新的功能
Local SLAM  建立子图(栅格地图),通过匹配算法将位置插入到子图,但会产生累计误差——生成一个一个拼图块
Global SLAM 闭环检测,消除累计误差——完成整个拼图

配置cartographer节点
limo_bringup/launch/limo_cartographer.launch
<launch>
    <param name="/use_sim_time" value="false">  设置当前使用系统的真实时间
    订阅雷达数据和完成子图的创建,使用Lua脚本配置算法参数
    <node name="cartographer_node" pkg="cartographer_ros" type="cartographer_node" args="-configuration_directory $(find limo_bringup) /param-configuration_basename build_map_2d.lua">
        <remap from="horizontal_laser_2d" to="scan" />
    </node>
    子图合并为占用栅格地图,生成SLAM建图的结果
    <node name="cartographer_occupancy_grid_node" pkg="cartographer_ros" type="cartographer_occupancy_grid_node" args="-resolution 0.05" />
    rviz上位机,方便实时看到SLAM的过程
    <node name="rviz" pkg="rviz" type="rviz" required="true" args="-d $(find limo_bringup)/rviz/cartographer.rviz" />
</launch>

cartographer
roslaunch limo_bringup limo_start.launch pub_odom_tf:=false    启动机器人底盘
roslaunch limo_bringup limo_cartographer.launch            运行cartographer地图构建算法和Rviz上位机
roslaunch limo_bringup limo_teletop_keyboard.launch        运行键盘控制节点

保存地图
rosservice call /finish_trajectory 0  调用服务,告诉cartographer结束建图
rosservice call /write_state "{filename:'${HOME}/agilex_ws/src/limo_ros/limo_bringup/maps/mymap.pbstream'}"
rosrun cartographer_ros cartographer_pbstream_to_ros_map -map_filestem=${HOME}/agilex_ws/src/limo_ros/limo_bringup/maps/mymap
-pbstream_filename=${HOME}/agilex_ws/src/limo_ros/limo_bringup/maps/mymap.pbstream -resolution=0.05
生成地图文件名称;上一步创建好的原始地图数据;生成栅格地图的分辨率,0.05表示5cm

三维SLAM地图构建
RTAB-Map功能包
具有实时约束的全局闭环检测器的RGB-D SLAM方法
基于全局贝叶斯闭环检测器
定位点创建->权值更新->贝叶斯过滤器更新->闭环假设选择->取回->转移
可单独使用RGB-D摄像头建图或和二维/三维激光雷达共同建图

地图构建 rtabmap
roslaunch limo_bringup limo_start.launch pub_odom_tf:=true
roslaunch astra_camera dabai_u3.launch
roslaunch limo_bringup limo_rtabmap_orbbec.launch    启动RTAB算法节点
roslaunch limo_bringup rtabmap_rviz.launch
roslaunch limo_bringup limo_teletop_keyboard.launch

查看建图结果
rtabmap-databaseViewer ~/.ros/rtabmap.db

移动机器人自主导航
目标点、全局最优路径、动态避障、定位粒子云、本地代价地图
原理
Goal -> AMCL -> Path Planner -> move_base -> /cmd_vel+/odom -> Base Controller -> Motor Speeds
导航目标点  AMCL全局定位算法  全局路径规划  本地规划器  运动速度  指令发给底盘,控制机器人电机按照某一速度运动

move_base功能包
Action订阅    move_base/goal        move_base_msgs/MoveBaseActionGoal        move_base的运动规划目标
        move_base/cancel        actionlib_msgs/GoalID            取消特定目标的请求
Action发布    move_base/feedback    move_base_msgs/MoveBaseActionFeedback    反馈信息,含有机器人底盘的坐标
        move_base/status        actionlib_msgs/GoalStatusArray        发送到move_base的目标状态信息
        move_base/result        move_base_msgs/MoveBaseActionResult    此处move_base操作的结果为空
Topic订阅        move_base_simple/goal    geometry_msgs/PoseStamped        为不需要追踪目标执行状态的用户,提供一个非action接口
Topic发布        cmd_vel            geometry_msgs/Twist            输出到机器人底盘的速度命令
Service        ~make_plan        nav_msgs/GetPlan                允许用户从move_base获取给定目标的路径规划,但不会执行该路径规划
        ~clear_unknown_space    std_srvs/Empty                允许用户直接清除机器人周围的未知空间。适合于costmap停止很长时间后,在一个全新环境中重新启动时使用
        ~clear_costmaps        std_srvs/Empty                允许用户命令move_base节点清除costmap中的障碍。这可能会导致机器人撞上障碍物,请谨慎使用

蒙特卡罗定位方法
二维环境定位
针对已有地图使用粒子滤波器跟踪一个机器人的姿态

环境信息(Map)传感器数据(Scan)航程信息(Odom)初始位姿(Initial Pose)->运动模型 传感器模型 蒙特卡洛航位推算 采用(重采样)算法 -> 偏航校准(TF)粒子分布(Particle Cloud)位姿优化(Filtered Pose)

移动机器人差速导航
roslaunch limo_bringup limo_start.launch pub_odom_tf:=false
roslaunch limo_bringup limo_navigation_diff.launch

全向导航
roslaunch limo_bringup limo_start.launch pub_odom_tf:=false
roslaunch limo_bringup limo_navigation_mcnamu.launch

阿克曼导航
roslaunch limo_bringup limo_start.launch pub_odom_tf:=false
roslaunch limo_bringup limo_navigation_ackerman.launch

launch文件中包含:里程计滤波节点、amcl定位节点、map_server地图服务器节点、move_base导航节点、rivz可视化节点

相关文章:

ROS(0)命令及学习资源汇总

ROS安装命令 参考&#xff1a;Ubuntu20.04.4安装ROS Noetic详细教程 - 知乎 安装C和Python3 sudo apt-get install g sudo apt-get install python3 ROS运行小海龟仿真器 roscore确定ROS是否运行成功rosrun turtlesim turtlesim_node运行小海龟仿真器rosrun turtlesim turtle_…...

NodeMCU ESP8266开发流程详解(图文并茂)

文章目录 整体架构打开软件setuploop 连接开发板CP2102版本CH340版本 下载结论 整体架构 NodeMCU ESP8266基于Arduino IDE的开发相对来说还是比较容易上手的&#xff0c;我们基本需要以下几个东西&#xff1b; 一台安装好Arduino IDE的PC&#xff0c;并且已经部署环境&#x…...

【最终版】tkinter+matplotlib实现一个强大的绘图系统

文章目录 辅助坐标轴功能实现代码优化源代码 Python绘图系统&#xff1a; 前置源码&#xff1a; Python打造动态绘图系统&#x1f4c8;一 三维绘图系统 &#x1f4c8;二 多图绘制系统&#x1f4c8;三 坐 标 轴 定 制&#x1f4c8;四 定制绘图风格 &#x1f4c8;五 数据生成导入…...

Postman使用实例

Postman使用实例 实体类Emp package com.example.springboot_postman.pojo;import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import javax.persistence.*; import j…...

【ES的优势和原理及分布式开发的好处与坏处】

文章目录 ES的优势及分布式开发的好处1.ES的优势1.1 优势概述1.2 相关问题1&#xff09;为什么需要 Elasticsearch&#xff1f;MySQL 不行吗&#xff1f;2&#xff09;SQL检索的问题&#xff1a;3&#xff09;ES检索快的原理 2.分布式开发的好处与坏处 ES的优势及分布式开发的好…...

Autosar诊断实战系列23-CanTp半/全双工及相关工程问题思考

本文框架 前言1. CanTp半/全双工基本介绍1.1 差异比较1.2 不同模式下可能发生场景分析1.2.1 当CanTp正在发送1.2.2 当CanTp正在接收2. 相关工程问题思考前言 在本系列笔者将结合工作中对诊断实战部分的应用经验进一步介绍常用UDS服务的进一步探讨及开发中注意事项, Dem/Dcm/C…...

【Pandas】数据分组groupby

本文目标&#xff1a; 应用groupby 进行分组对分组数据进行聚合,转换和过滤应用自定义函数处理分组之后的数据 文章目录 1. 数据聚合1.1 单变量分组聚合1.2 Pandas内置聚合方法1.3 聚合方法使用Numpy的聚合方法自定义方法同时计算多种特征向agg/aggregate传入字典 2. 数据转换…...

【图像处理GIU】图像分割(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

Java中的锁与锁优化技术

文章目录 自旋锁与自适应自旋锁消除锁粗化轻量级锁偏向锁重量级锁 自旋锁与自适应自旋 自旋锁是一种锁的实现机制&#xff0c;其核心思想是当一个线程尝试获取锁时&#xff0c;如果锁已经被其他线程持有&#xff0c;那么这个线程会在一个循环中不断地检查锁是否被释放&#xf…...

布局与打包

属性栏直接输入值&#xff0c;比代码更直观方便。 打包&#xff1a;...

UVa11324 - The Largest Clique

Online Judge 题目大意&#xff1a;有一张n个点m条边的图&#xff0c;现对于每一个点u&#xff0c;建立一条边连接它和所有它能到达的点&#xff0c;问满足所有点之间都有边的分量的大小最大是多少 0<n<1000;0<m<50000 思路&#xff1a;根据建新图的规则可知&am…...

【Linux】TCP的服务端(守护进程) + 客户端

文章目录 &#x1f4d6; 前言1. 服务端基本结构1.1 类成员变量&#xff1a;1.2 头文件1.3 初始化&#xff1a;1.3 - 1 全双工与半双工1.3 - 2 inet_aton1.3 - 3 listen 2. 服务端运行接口2.1 accept&#xff1a;2.2 服务接口&#xff1a; 3. 客户端3.1 connect&#xff1a;3.2 …...

1.7. 找出数组的第 K 大和原理及C++实现

题目 给你一个整数数组 nums 和一个 正 整数 k 。你可以选择数组的任一 子序列 并且对其全部元素求和。 数组的 第 k 大和 定义为&#xff1a;可以获得的第 k 个 最大 子序列和&#xff08;子序列和允许出现重复&#xff09; 返回数组的 第 k 大和 。 子序列是一个可以由其他数…...

基于微信小程序的付费自习室

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 1 简介2 技术栈3 需求分析3.1用户需求分析3.1.1 学生用户3.1.3 管理员用户 4 数据库设计4.4.1 E…...

纪念在CSDN的2048天

时间真快&#xff5e;...

云原生Kubernetes:简化K8S应用部署工具Helm

目录 一、理论 1.HELM 2.部署HELM2 3.部署HELM3 二、实验 1.部署 HELM2 2.部署HELM3 三、问题 1.api版本过期 2.helm初始化报错 3.pod状态为ImagePullBackOff 4.helm 命令显示 no repositories to show 的错误 5.Helm安装报错 6.git命令报错 7.CentOS 7 下git c…...

qml保姆级教程五:视图组件

&#x1f482; 个人主页:pp不会算法v &#x1f91f; 版权: 本文由【pp不会算法v】原创、在CSDN首发、需要转载请联系博主 &#x1f4ac; 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 QML系列教程 QML教程一&#xff1a;布局组件 文章目录 列表视图ListVi…...

2310d编译不过

struct A {this(int[] data) safe { a data; }int[] a; }void main() safe {int[3] test [1, 2, 3];A a A(test); }应该给data参数加上return scope.或让构造器为模板参数来推导,否则,构造器可以把栈分配切片赋值给全局变量....

CleanMyMac X4.14.1最新版本下载

CleanMyMac X是一个功能强大的Mac清理软件&#xff0c;它的设计理念是提供多个模块&#xff0c;包括垃圾清理、安全保护、速度优化、应用程序管理和文档管理粉碎等&#xff0c;以满足用户的不同需求。软件的界面简洁直观&#xff0c;让用户能够轻松进行日常的清理操作。 使用C…...

芯驰D9评测(3)--建立开发环境

1. 建立交叉编译链接环境 官网下载的SDK包中就有交叉工具链&#xff0c;米尔提供的这个 SDK 中除了包含各种源代码外还提供了必要的交叉工具链&#xff0c;可以直接用于编译应用程序等。 用户可以直接使用次交叉编译工具链来建立一个独立的开发环境&#xff0c;可单独编译…...

阿里云服务器IP地址查询方法(公网IP和私网IP)

阿里云服务器IP地址在哪查看&#xff1f;在云服务器ECS管理控制台即可查看&#xff0c;阿里云服务器IP地址包括公网IP和私有IP地址&#xff0c;阿里云百科分享阿里云服务器IP地址查询方法&#xff1a; 目录 阿里云服务器IP地址查询 阿里云服务器IP地址查询 1、登录到阿里云服…...

第47节——使用bindActionCreators封装actions模块

一、什么是action creators 1、概念 在Redux中&#xff0c;Action Creators是一种函数&#xff0c;它用于创建一个描述应用程序状态变化的action对象。Action对象是一个普通JavaScript对象&#xff0c;它包含一个描述action类型的字符串属性&#xff08;通常称为“type”&…...

QT、c/c++通过宏自动判断平台

QT、c/c通过宏自动判断平台 Chapter1 QT、c/c通过宏自动判断平台 Chapter1 QT、c/c通过宏自动判断平台 原文链接&#xff1a;https://blog.csdn.net/qq_32348883/article/details/123063830 背景 为了更好的进行跨平台移植、编译、调试。 具体操作 宏操作 #ifdef _WIN32//d…...

对比表:阿里云轻量应用服务器和服务器性能差异

阿里云服务器ECS和轻量应用服务器有什么区别&#xff1f;轻量和ECS优缺点对比&#xff0c;云服务器ECS是明星级云产品&#xff0c;适合企业专业级的使用场景&#xff0c;轻量应用服务器是在ECS的基础上推出的轻量级云服务器&#xff0c;适合个人开发者单机应用访问量不高的网站…...

中国1km分辨率月最低温和最高温度数据集(1901-2020)

简介&#xff1a; 中国1km分辨率月最低温度数据集&#xff08;1901-2020&#xff09;是根据CRU发布的全球0.5气候数据集以及WorldClim发布的全球高分辨率气候数据集&#xff0c;通过Delta空间降尺度方案在中国地区降尺度生成的。使用了496个独立气象观测点数据进行验证&#x…...

EasyX图形库note4,动画及键盘交互

大家好&#xff0c;这里是Dark Flame Master&#xff0c;专栏从这篇开始就会变得很有意思&#xff0c;我们可以利用今天所学的只是实现很多功能&#xff0c;同样为之后的更加好玩的内容打下基础&#xff0c;从这届开始将会利用所学的知识制作一些小游戏&#xff0c;废话不多说&…...

C++设计模式-原型(Prototype)

目录 C设计模式-原型&#xff08;Prototype&#xff09; 一、意图 二、适用性 三、结构 四、参与者 五、代码 C设计模式-原型&#xff08;Prototype&#xff09; 一、意图 用原型实例指定创建对象的种类&#xff0c;并且通过拷贝这些原型创建新的对象。 二、适用性 当…...

[补题记录] Atcoder Beginner Contest 322(E)

URL&#xff1a;https://atcoder.jp/contests/abc322 目录 E Probelm/题意 Thought/思路 Code/代码 E Probelm/题意 有 N 个改进计划&#xff0c;每个计划可以执行一次&#xff1b;有 K 个参数&#xff0c;每个计划可以将所有参数提升固定值&#xff0c;即计划 i 可以为第…...

目标检测算法改进系列之Backbone替换为FocalNet

FocalNet 近些年&#xff0c;Transformers在自然语言处理、图像分类、目标检测和图像分割上均取得了较大的成功&#xff0c;归根结底是自注意力&#xff08;SA &#xff1a;self-attention&#xff09;起到了关键性的作用&#xff0c;因此能够支持输入信息的全局交互。但是由于…...

buuctf-[BSidesCF 2020]Had a bad day 文件包含

打开环境 就两个按钮&#xff0c;随便按按 url变了 还有 像文件包含&#xff0c;使用php伪协议读取一下&#xff0c;但是发现报错&#xff0c;而且有两个.php,可能是自己会加上php后缀 所以把后缀去掉 /index.php?categoryphp://filter/convert.base64-encode/resourcei…...

wordpress id重置密码/网络推广优化网站

Topic 给定一个由若干 0 和 1 组成的数组 A&#xff0c;我们最多可以将 K 个值从 0 变成 1 。 返回仅包含 1 的最长&#xff08;连续&#xff09;子数组的长度。 Example_1 输入&#xff1a;A [1,1,1,0,0,0,1,1,1,1,0], K 2 输出&#xff1a;6 解释&#xff1a; [1,1,1,0,0,1…...

做网站需要一些什么东西/国外友链买卖平台

一&#xff1a;贴片电阻封装尺寸与功率关系,通常来说:0201 1/20W0402 1/16W0603 1/10W0805 1/8W1206 1/4W 二&#xff1a;贴片电阻电容外形尺寸与封装的对应关系是:04021.0x0.506031.6x0.808052.0x1.212063.2x1.612103.2x2.518124.5x3.222255.6x6.5 三&#xff1a;常规贴片电阻…...

北京手机站建站/360优化大师app

小米电脑触摸手势&#xff1a;左键&#xff1a;单指单击右键&#xff1a;双指单击选取并打开&#xff1a;单指双击滚动页面&#xff1a;双指 移动 拖拽项目&#xff1a;双击并拖拽放大/缩小&#xff1a;双指张开&#xff0c;双指捏合转载于:https://www.cnblogs.com/shuaishuai…...

武义建设局网站首页/长尾词挖掘

RabbitMQ的介绍 RabbitMQ是消息中间件的一种&#xff0c;消息中间件即分布式系统中完成消息的发送和接收的基础软件。这些软件有很多&#xff0c;包括ActiveMQ(apache公司的)&#xff0c;RocketMQ(阿里巴巴公司的,现已经转让给apache)。 RabbitMQ 作为目前应用相当广泛的消息…...

搜索引擎技术/seo自学教程seo免费教程

年前阅读完《C Primer Plus》后&#xff0c;只做了部分课后题&#xff0c;并没有什么具体的编程项目来练手。最近看到这本《深入理解OpenCV--实用计算机视觉项目解析》&#xff0c;准备将它与《OpenCV3编程入门》和一本图像处理基础知识的书结合起来看&#xff0c;既练习了C的编…...

电子商城开发网站建设/武汉网站设计公司

构建百万访问量电子商务网站之LVS负载均衡(前端四层负载均衡器)[连载之电子商务系统架构] 版本&#xff1a;V1 出处&#xff1a;http://jimmyli.blog.51cto.com/我站在巨人肩膀上Jimmy Li 作者&#xff1a;Jimmy Li 关键词&#xff1a;电子商务&#xff0c;系统架构&#xff0c…...