ros1仿真导航机器人 基础传感器数据读取

仅为学习记录和一些自己的思考,不具有参考意义。

1 仿真环境

gazebo、rviz、ros1

2 机器人模型

<?xml version="1.0"?>
<robot name="wpb_home_gazebo"><link name="base_footprint"><visual><origin xyz="0 0 0" rpy="0 0 0" /><geometry><box size="0.05 0.05 0.001" /></geometry></visual>
</link><joint name="base_joint" type="fixed"><origin xyz="0 0 0" rpy="0 0 0" /><parent link="base_footprint"/><child link="base_link" />
</joint><!-- base -->
<link name="base_link"><visual><geometry><box size="0.01 0.01 0.001" /></geometry><origin rpy = "0 0 0" xyz = "0 0 0"/></visual>
</link><!-- body -->
<link name = "body_link"><visual><geometry><mesh filename="package://why_simulation/meshes/wpb_home/wpb_home_std.dae" scale="1 1 1"/></geometry><origin rpy = "1.57 0 1.57" xyz = "-.225 -0.225 0"/></visual><collision><origin xyz="0.001 0 .065" rpy="0 0 0" /><geometry><cylinder length="0.13" radius="0.226"/></geometry></collision><inertial><mass value="20"/><inertia ixx="4.00538" ixy="0.0" ixz="0.0" iyy="4.00538" iyz="0.0" izz="0.51076"/></inertial>
</link>
<joint name = "base_to_body" type = "fixed"><parent link = "base_link"/><child link = "body_link"/><origin rpy="0 0 0" xyz="0 0 0"/> <!--pos-->
</joint>
<!-- top of base -->
<link name = "base_top_link"><collision><origin xyz="0 0 0" rpy="0 0 0" /><geometry><box size="0.33 0.31 0.01"/></geometry></collision><inertial><mass value="0.01"/><inertia ixx="0.01" ixy="0.0" ixz="0.0" iyy="0.01" iyz="0.0" izz="0.01"/></inertial>
</link>
<joint name = "body_to_top" type = "fixed"><parent link = "body_link"/><child link = "base_top_link"/><origin rpy="0 0 0" xyz="0.01 0 0.2"/> <!--pos-->
</joint>
<!-- back -->
<link name = "body_back_link"><collision><origin xyz="0 0 0" rpy="0 0 0" /><geometry><box size="0.03 0.23 1.05"/></geometry></collision><inertial><mass value="0.01"/><inertia ixx="0.01" ixy="0.0" ixz="0.0" iyy="0.01" iyz="0.0" izz="0.01"/></inertial>
</link>
<joint name = "body_to_back" type = "fixed"><parent link = "base_top_link"/><child link = "body_back_link"/><origin rpy="0 0.31 0" xyz="-0.038 0 0.5"/> <!--pos-->
</joint>
<!-- head -->
<link name = "head_link"><collision><origin xyz="0 0 0" rpy="0 0 0" /><geometry><box size="0.07 0.28  0.06"/></geometry></collision><inertial><mass value="0.01"/><inertia ixx="0.01" ixy="0.0" ixz="0.0" iyy="0.01" iyz="0.0" izz="0.01"/></inertial>
</link>
<joint name = "body_to_head" type = "fixed"><parent link = "base_top_link"/><child link = "head_link"/><origin rpy="0 0.27 0" xyz="0.155 0 1.17"/> <!--pos-->
</joint>
<!-- front -->
<link name = "front_link"><collision><origin xyz="0 0 0" rpy="0 0 0" /><geometry><cylinder length="1.1" radius="0.01"/></geometry></collision><inertial><mass value="0.01"/><inertia ixx="0.01" ixy="0.0" ixz="0.0" iyy="0.01" iyz="0.0" izz="0.01"/></inertial>
</link>
<joint name = "body_to_front" type = "fixed"><parent link = "base_top_link"/><child link = "front_link"/><origin rpy="0 0 0" xyz="0.15 0 0.55"/> <!--pos-->
</joint><!-- Lidar -->
<link name = "laser"><visual><geometry><cylinder length="0.001" radius="0.001"/></geometry><origin rpy = "0 0 0" xyz = "0 0 0"/></visual>
</link>
<joint name="laser_joint" type="fixed"><origin rpy="0 0 0" xyz="0 0 0.15"  /> <!--pos--><parent link="base_link" /><child link="laser" />
</joint><!-- Kinect -->
<link name = "kinect2_dock"><visual><geometry><!-- <box size=".01 .25 .07"/>--><box size="0.001 0.001 0.001"/></geometry><origin rpy = "0 0 0" xyz = "0 0 0"/></visual>
</link>
<joint name="kinect_height" type="fixed"><parent link="base_link"/><child link="kinect2_dock"/><origin xyz="0.145 -0.013 1.37" rpy="0 0 0"/> 
</joint><link name = "kinect2_head_frame"><visual><geometry><box size="0.001 0.001 0.001"/></geometry><origin xyz = "0 0 0" rpy = "0 0 0"/></visual>
</link>
<!--kinect_pitch -->
<joint name="kinect_pitch" type="fixed"><origin xyz="0 0 0" rpy="0 0.5 0" /> <parent link="kinect2_dock" /><child link="kinect2_head_frame" />
</joint><link name = "kinect2_front_frame"><visual><geometry><box size="0.001 0.001 0.001"/></geometry><origin xyz = "0 0 0" rpy = "0 0 0"/></visual>
</link>
<joint name="kinect_head" type="fixed"><origin xyz="0 0 0" rpy=" 0 1.57 0" /> <parent link="kinect2_head_frame" /><child link="kinect2_front_frame" />
</joint>
<link name = "kinect2_ir_optical_frame"><visual><geometry><!-- <box size=".25 .04 .07"/>--><box size="0.001 0.001 0.001"/></geometry><origin xyz = "0 0 0" rpy = "0 0 0"/></visual>
</link>
<joint name="kinect_ir_trans" type="fixed"><origin xyz="0 0 0" rpy="0 0 -1.57" /> <parent link="kinect2_front_frame" /><child link="kinect2_ir_optical_frame" />
</joint><link name = "kinect2_camera_frame"><visual><geometry><box size="0.001 0.001 0.001"/></geometry><origin rpy = "0 0 0" xyz = "0 0 0" /></visual>
</link>
<joint name="kinect_camra_joint" type="fixed"><origin xyz="0 0 0" rpy="3.1415926 0 -1.5707963" /><parent link="kinect2_ir_optical_frame" /><child link="kinect2_camera_frame" />
</joint><link name = "kinect2_rgb_optical_frame"><visual><geometry><box size="0.001 0.001 0.001"/></geometry><origin rpy = "0 0 0" xyz = "0 0 0" /></visual>
</link>
<joint name="kinect_hd_joint" type="fixed"><origin xyz="0 0 0" rpy="0 1.5707963 0" /><parent link="kinect2_camera_frame" /><child link="kinect2_rgb_optical_frame" />
</joint><!-- Gazebo plugin for WPR -->
<gazebo><plugin name="base_controller" filename="libwpr_plugin.so"><publishOdometryTf>true</publishOdometryTf><commandTopic>cmd_vel</commandTopic><odometryTopic>odom</odometryTopic><odometryFrame>odom</odometryFrame><odometryRate>20.0</odometryRate><robotBaseFrame>base_footprint</robotBaseFrame></plugin>
</gazebo><!-- Gazebo plugin for RpLidar A2 -->
<gazebo reference="laser"><sensor type="ray" name="rplidar_sensor"><pose>0 0 0.06 0 0 0</pose><visualize>true</visualize><update_rate>10</update_rate><ray><scan><horizontal><samples>360</samples><resolution>1</resolution><min_angle>-3.14159265</min_angle><max_angle>3.14159265</max_angle></horizontal></scan><range><min>0.24</min><max>6.0</max><resolution>0.01</resolution></range><noise><type>gaussian</type><mean>0.0</mean><stddev>0.01</stddev></noise></ray><plugin name="rplidar_ros_controller" filename="libgazebo_ros_laser.so"><topicName>scan</topicName><frameName>laser</frameName></plugin></sensor>
</gazebo><!-- Gazebo plugin for Kinect v2 -->
<gazebo reference="kinect2_head_frame"><sensor type="depth" name="kinect2_depth_sensor" ><always_on>true</always_on><update_rate>10.0</update_rate><camera name="kinect2_depth_sensor"><horizontal_fov>1.221730456</horizontal_fov><image><width>512</width><height>424</height><format>B8G8R8</format></image><clip><near>0.5</near><far>6.0</far></clip><noise><type>gaussian</type><mean>0.1</mean><stddev>0.07</stddev></noise></camera><plugin name="kinect2_depth_control" filename="libgazebo_ros_openni_kinect.so"><cameraName>kinect2/sd</cameraName><alwaysOn>true</alwaysOn><updateRate>20.0</updateRate><imageTopicName>image_ir_rect</imageTopicName><depthImageTopicName>image_depth_rect</depthImageTopicName><pointCloudTopicName>points</pointCloudTopicName><cameraInfoTopicName>depth_camera_info</cameraInfoTopicName><frameName>kinect2_ir_optical_frame</frameName><pointCloudCutoff>0.5</pointCloudCutoff><pointCloudCutoffMax>6.0</pointCloudCutoffMax><baseline>0.1</baseline><distortionK1>0.0</distortionK1><distortionK2>0.0</distortionK2><distortionK3>0.0</distortionK3><distortionT1>0.0</distortionT1><distortionT2>0.0</distortionT2></plugin></sensor>
</gazebo>
<gazebo reference="kinect2_rgb_optical_frame"><sensor type="camera" name="kinect2_rgb_sensor"><always_on>true</always_on><update_rate>20.0</update_rate><camera name="kinect2_rgb_sensor"><horizontal_fov>1.221730456</horizontal_fov><image><width>1920</width><height>1080</height><format>B8G8R8</format></image><clip><near>0.2</near><far>10.0</far></clip><noise><type>gaussian</type><mean>0.0</mean><stddev>0.007</stddev></noise></camera><plugin name="kinect2_rgb_controller" filename="libgazebo_ros_camera.so"><alwaysOn>true</alwaysOn><update_rate>20.0</update_rate><cameraName>kinect2/hd</cameraName><imageTopicName>image_color_rect</imageTopicName><cameraInfoTopicName>camera_info</cameraInfoTopicName><frameName>kinect2_rgb_optical_frame</frameName></plugin></sensor>
</gazebo><gazebo reference="kinect2_head_frame"><sensor type="camera" name="kinect2_qhd_rgb_sensor"><always_on>true</always_on><update_rate>20.0</update_rate><camera name="kinect2_qhd_rgb_sensor"><horizontal_fov>1.221730456</horizontal_fov><image><width>960</width><height>540</height><format>R8G8B8</format></image><clip><near>0.2</near><far>10.0</far></clip></camera><plugin name="kinect2_qhd_rgb_controller" filename="libgazebo_ros_camera.so"><alwaysOn>true</alwaysOn><update_rate>20.0</update_rate><cameraName>kinect2/qhd</cameraName><imageTopicName>image_color_rect</imageTopicName><cameraInfoTopicName>camera_info</cameraInfoTopicName><frameName>kinect2_head_frame</frameName></plugin></sensor>
</gazebo><!-- IMU plugin for 'body_link' -->
<gazebo reference="body_link"><gravity>true</gravity><sensor name="imu_sensor" type="imu"><always_on>true</always_on><update_rate>100</update_rate><visualize>true</visualize><topic>__default_topic__</topic><plugin filename="libgazebo_ros_imu_sensor.so" name="imu_plugin"><topicName>imu/data</topicName><bodyName>body_link</bodyName><updateRateHZ>100.0</updateRateHZ><gaussianNoise>0.0</gaussianNoise><xyzOffset>0 0 0</xyzOffset><rpyOffset>0 0 0</rpyOffset><frameName>imu_link</frameName></plugin><pose>0 0 0 0 0 0</pose></sensor>
</gazebo></robot>

3启动launch文件

roslaunch why_simulation why_simple.launch

<launch><!-- We resume the logic in empty_world.launch, changing only the name of the world to be launched --><include file="$(find gazebo_ros)/launch/empty_world.launch"><arg name="world_name" value="$(find why_simulation)/worlds/why_simple.world"/><arg name="paused" value="false"/><arg name="use_sim_time" value="true"/><arg name="gui" value="true"/><arg name="recording" value="false"/><arg name="debug" value="false"/></include><!-- Spawn the objects into Gazebo --><node name="bookshelft" pkg="gazebo_ros" type="spawn_model" args="-file $(find why_simulation)/models/bookshelft.model -x 3.0 -y 0.2 -z 0 -Y 3.14159 -urdf -model bookshelft" /><node name="bottle" pkg="gazebo_ros" type="spawn_model" args="-file $(find why_simulation)/models/bottles/red_bottle.model -x 2.8 -y 0 -z 0.6 -Y 0 -urdf -model red_bottle" /><!-- Spawn a robot into Gazebo --><node name="spawn_urdf" pkg="gazebo_ros" type="spawn_model" args="-file $(find why_simulation)/models/wpb_home.model -urdf -model wpb_home" /><!-- Robot Description --><arg name="model" default="$(find why_simulation)/models/wpb_home.model"/><param name="robot_description" command="$(find xacro)/xacro $(arg model)" /><node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" /><node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
</launch>

rviz

4Topic话题查看

rostopic list

/clock
/cmd_vel
/gazebo/link_states
/gazebo/model_states
/gazebo/parameter_descriptions
/gazebo/parameter_updates
/gazebo/set_link_state
/gazebo/set_model_state
/imu/data
/joint_states
/kinect2/hd/camera_info
/kinect2/hd/image_color_rect
/kinect2/hd/image_color_rect/compressed
/kinect2/hd/image_color_rect/compressed/parameter_descriptions
/kinect2/hd/image_color_rect/compressed/parameter_updates
/kinect2/hd/image_color_rect/compressedDepth
/kinect2/hd/image_color_rect/compressedDepth/parameter_descriptions
/kinect2/hd/image_color_rect/compressedDepth/parameter_updates
/kinect2/hd/image_color_rect/theora
/kinect2/hd/image_color_rect/theora/parameter_descriptions
/kinect2/hd/image_color_rect/theora/parameter_updates
/kinect2/hd/parameter_descriptions
/kinect2/hd/parameter_updates
/kinect2/qhd/camera_info
/kinect2/qhd/image_color_rect
/kinect2/qhd/image_color_rect/compressed
/kinect2/qhd/image_color_rect/compressed/parameter_descriptions
/kinect2/qhd/image_color_rect/compressed/parameter_updates
/kinect2/qhd/image_color_rect/compressedDepth
/kinect2/qhd/image_color_rect/compressedDepth/parameter_descriptions
/kinect2/qhd/image_color_rect/compressedDepth/parameter_updates
/kinect2/qhd/image_color_rect/theora
/kinect2/qhd/image_color_rect/theora/parameter_descriptions
/kinect2/qhd/image_color_rect/theora/parameter_updates
/kinect2/qhd/parameter_descriptions
/kinect2/qhd/parameter_updates
/kinect2/sd/depth/camera_info
/kinect2/sd/depth_camera_info
/kinect2/sd/image_depth_rect
/kinect2/sd/image_ir_rect
/kinect2/sd/image_ir_rect/compressed
/kinect2/sd/image_ir_rect/compressed/parameter_descriptions
/kinect2/sd/image_ir_rect/compressed/parameter_updates
/kinect2/sd/image_ir_rect/compressedDepth
/kinect2/sd/image_ir_rect/compressedDepth/parameter_descriptions
/kinect2/sd/image_ir_rect/compressedDepth/parameter_updates
/kinect2/sd/image_ir_rect/theora
/kinect2/sd/image_ir_rect/theora/parameter_descriptions
/kinect2/sd/image_ir_rect/theora/parameter_updates
/kinect2/sd/parameter_descriptions
/kinect2/sd/parameter_updates
/kinect2/sd/points
/odom
/rosout
/rosout_agg
/scan
/tf
/tf_static

5运动控制与传感器数据读取

运动控制

rosrun why_test test_vel

#include <ros/ros.h>
#include <geometry_msgs/Twist.h>int main(int argc, char  *argv[])
{ros::init(argc,argv,"test_vel");ros::NodeHandle nh;ros::Publisher pub_=nh.advertise<geometry_msgs::Twist>("/cmd_vel",10);ros::Rate rate(10);while (ros::ok()){auto twist=geometry_msgs::Twist();twist.linear.x=0.2;twist.angular.z=0.2;pub_.publish(twist);rate.sleep();}return 0;
}

激光雷达数据读取

rosrun why_test test_lidar

#include <ros/ros.h>
#include <sensor_msgs/LaserScan.h>void LidarCallback(const sensor_msgs::LaserScan msg)
{float dMidDist=msg.ranges[180];std::cout<<"distance="<<dMidDist<<std::endl;
}int main(int argc, char *argv[])
{ros::init(argc,argv,"test_lidar");ros::NodeHandle nh;ros::Subscriber sub_=nh.subscribe("/scan",10,&LidarCallback);ros::spin();return 0;
}

IMU数据读取

rosrun why_test test_imu

#include "ros/ros.h"
#include "sensor_msgs/Imu.h"
#include "tf/tf.h"void IMUCallback(const sensor_msgs::Imu msg)
{if(msg.orientation_covariance[0] < 0)return;tf::Quaternion quaternion(msg.orientation.x,msg.orientation.y,msg.orientation.z,msg.orientation.w);double roll, pitch, yaw;tf::Matrix3x3(quaternion).getRPY(roll, pitch, yaw);roll = roll*180/M_PI;pitch = pitch*180/M_PI;yaw = yaw*180/M_PI;ROS_INFO("roll= %.0f pitch= %.0f yaw= %.0f", roll, pitch, yaw);
}int main(int argc, char **argv)
{ros::init(argc,argv, "test_imu"); ros::NodeHandle n;ros::Subscriber sub = n.subscribe("imu/data", 100, IMUCallback);ros::spin();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/863165.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++进阶

C进阶 一、细节1.cout与输出缓冲区2.constexpr3.NULL和nullptr是不同的类型4.关于inline5.函数杂合用法6.const char*、char const*、char * const7.进程地址空间&#xff0c;所谓静态区常量区不准8.位运算9.多态9.1 内存切片9.2 转型9.3 构造函数和析构函数里是静态绑定9.4 dy…

DP:解决路径问题

文章目录 二维DP模型如何解决路径问题有关路径问题的几个问题1.不同路径2.不同路径Ⅱ3.下降路径最小和4.珠宝的最高价值5.地下城游戏 总结 二维DP模型 二维动态规划&#xff08;DP&#xff09;模型是一种通过引入两个维度的状态和转移方程来解决复杂问题的技术。它在许多优化和…

docker容器内为什么能解析宿主机的hosts文件

Docker容器可以通过特定的网络设置来解析宿主机的hosts文件&#xff0c;这是因为Docker容器在创建网络时&#xff0c;会自动将宿主机的DNS配置信息传递给容器。 当你启动一个Docker容器时&#xff0c;如果没有指定任何DNS相关的选项&#xff0c;Docker默认会使用宿主机的DNS配…

Hi3861 OpenHarmony嵌入式应用入门--LiteOS MessageQueue

CMSIS 2.0接口中的消息&#xff08;Message&#xff09;功能主要涉及到实时操作系统&#xff08;RTOS&#xff09;中的线程间通信。在CMSIS 2.0标准中&#xff0c;消息通常是通过消息队列&#xff08;MessageQueue&#xff09;来进行处理的&#xff0c;以实现不同线程之间的信息…

【机器学习300问】135、决策树算法ID3的局限性在哪儿?C4.5算法做出了怎样的改进?

ID3算法是一种用于创建决策树的机器学习算法&#xff0c;该算法基于信息论中的信息增益概念来选择最优属性进行划分。信息增益是原始数据集熵与划分后数据集熵的差值&#xff0c;熵越小表示数据集的纯度越高。有关ID3算法的详细步骤和算法公式在我之前的文章中谈到&#xff0c;…

探索 Electron:将 Web 技术带入桌面应用

Electron是一个开源的桌面应用程序开发框架&#xff0c;它允许开发者使用Web技术&#xff08;如 HTML、CSS 和 JavaScript&#xff09;构建跨平台的桌面应用程序&#xff0c;它的出现极大地简化了桌面应用程序的开发流程&#xff0c;让更多的开发者能够利用已有的 Web 开发技能…

VMware Workstation 安装 Centos 虚拟机

1. 下载 VMware Workstation 直接上网找官网下载即可 2. 下载 Centos 镜像 阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 3.打开 VMware 创建虚拟机 3.1点击创建虚拟机 3.2 选择自定义安装 3.3 选择使用 Workstation 的版本 版本越高兼容性越低但性能越好&#xff0c;一…

智慧校园-实训管理系统总体概述

智慧校园实训管理系统&#xff0c;专为满足高等教育与职业教育的特定需求而设计&#xff0c;它代表了实训课程管理领域的一次数字化飞跃。此系统旨在通过革新实训的组织结构、执行流程及评估标准&#xff0c;来增强学生的实践操作技能和教师的授课效率&#xff0c;为社会输送具…

数据结构-分析期末选择题考点(图)

我是梦中传彩笔 欲书花叶寄朝云 目录 图的常见考点&#xff08;一&#xff09;图的概念题 图的常见考点&#xff08;二&#xff09;图的邻接矩阵、邻接表 图的常见考点&#xff08;三&#xff09;拓扑排序 图的常见考点&#xff08;四&#xff09;关键路径 图的常见考点&#x…

c语言实现贪吃蛇小游戏

源码 /** * FileName: snakec* Author:PowerKing * Version&#xff1a;V1.0* Date:2024.6.28* Description: 贪吃蛇小游戏*/#include <curses.h> #include <stdlib.h> #include <pthread.h> #include <unistd.h>/*贪吃蛇游戏 */#define UP 1…

S32K3 工具篇2:如何在S32DS中使用Segger JLINK下载

S32K3 工具篇2&#xff1a;如何在S32DS中使用Segger JLINK下载 一&#xff0c; S32DS中JLINK下载1.1 Segger JLINK 驱动1.2 S32DS JLINK驱动路径配置1.3 S32DS JLINK debug configuration1.4 S32DS JLINK debug S32K3板子结果 二&#xff0c; JLINK驱动实现S32K344代码下载2.1 …

高考落幕,暑期西北行,甘肃美食等你来尝

高考结束&#xff0c;暑期来临&#xff0c;西北之旅成为许多人的热门选择。而来到甘肃&#xff0c;除了领略壮丽的自然风光和深厚的历史文化&#xff0c;甘肃特产和传统面点以其独特的风味和传统的制作工艺也为游客们带来了一场地道的甘肃美食体验。 平凉的美食&#x…

005-GeoGebra基础篇-GeoGebra的点

新手刚开始操作GeoGebra的时候一般都会恨之入骨&#xff0c;因为有些操作不进行学习确实有些难以凭自己发现。 目录 一、点的基本操作1. 通过工具界面添加点2. 关于点的选择&#xff08;对象选择通用方法&#xff09;&#xff08;1&#xff09;选择工具法&#xff08;2&#xf…

Vue3使用jsbarcode生成条形码,以及循环生成条形码

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;我是前端菜鸟的自我修养&#xff01;今天给大家分享Vue3使用jsbarcode生成条形码&#xff0c;以及循环生成条形码&#xff0c;介绍了JsBarcode插件的详细使用方法&#xff0c;并提供具体代码帮助大家深入理解&#xff0c;彻…

【Docker】集群容器监控和统计 CAdvisor+lnfluxDB+Granfana的基本用法

集群容器监控和统计组合&#xff1a;CAdvisorlnfluxDBGranfana介绍 CAdvisor&#xff1a;数据收集lnfluxDB&#xff1a;数据存储Granfana&#xff1a;数据展示 ‘三剑客’ 安装 通过使用compose容器编排&#xff0c;进行安装。特定目录下新建文件docker-compose.yml文件&am…

日志分析-windows系统日志分析

日志分析-windows系统日志分析 使用事件查看器分析Windows系统日志 cmd命令 eventvwr 筛选 清除日志、注销并重新登陆&#xff0c;查看日志情况 Windows7和Windowserver2008R2的主机日志保存在C:\Windows\System32\winevt\Logs文件夹下&#xff0c;Security.evtx即为W…

【51单片机】串口通信(发送与接收)

文章目录 前言串口通信简介串口通信的原理串口通信的作用串口编程的一些概念仿真图如何使用串口初始化串口串口模式波特率配置 发送与接收发送接收 示例代码 总结 前言 在嵌入式系统的开发中&#xff0c;串口通信是一种常见且重要的通信方式。它以其简单、稳定的特性在各种应用…

[小试牛刀-习题练]《计算机组成原理》之计算机系统概述【详解过程】

【计算机系统概述】 1、【冯诺伊曼结构】计算机中数据采用二进制编码表示&#xff0c;其主要原因是&#xff08;D&#xff09; I、二进制运算规则简单II、制造两个稳态的物理器件较为容易III、便于逻辑门电路实现算术运算 A.仅I、Ⅱ B.仅I、Ⅲ C.仅Ⅱ、Ⅲ D. I、Ⅱ、Ⅲ I…

基于 Spring Boot 的健康咨询系统

1 项目介绍 1.1 摘要 本项目旨在通过构建一个对用户更加友好的健康咨询平台&#xff0c;帮助用户方便、快捷地获取专业并且准确的健康咨询服务&#xff0c;同时为医疗机构提供一个高效易用的可以提供信息管理的服务平台。 项目采用了Spring Boot框架作为主要的开发平台。本系…

论文阅读_基于嵌入的Facebook搜索

英文名称&#xff1a;Embedding-based Retrieval in Facebook Search 中文名称&#xff1a;基于嵌入式检索的Facebook搜索 时间&#xff1a;Wed, 29 Jul 2020 (v2) 地址&#xff1a;https://arxiv.org/abs/2006.11632 作者&#xff1a;Jui-Ting Huang, Ashish Sharma, Shuying …