How to use VRX on ubuntu20.04 with ROS1 Noetic?[2]

news2025/5/16 19:01:20

How to use VRX on ubuntu20.04 with ROS1 Noetic?[2]

  • 1.Which topics
  • 2.Control
    • 1.1操作模拟船
      • (1)命令行直接发布
      • (2)启动键盘控制文件
  • 3.Customer your VRX world
    • 3.1Which world parameters
    • 3.2改变风的参数
      • 3.2.1更改默认参数:
        • 3.2.1.1在vrx_gazebo / worlds / xacros / usv_wind_plugin.xacro中更改默认参数;
        • 3.2.1.2在vrx_gazebo / worlds / XXX.world.xacro中更改受风影响的模型或其系数,覆盖默认参数;
      • 3.2.2发布瞬时风速
      • 3.2.3波场(wave feild)
      • 3.2.4雾
        • 3.2.4.1Find your sence file in your world xacro
        • 3.2.4.2Add fog to the scene:
      • 3.2.4环境照明
      • 3.2.5save and build
      • 3.2.6run
    • 3.3.Add ships
    • 3. 添加障碍元素
      • Add light buoy
    • 4. Add your own dock
      • 4.1首先在vrx的/gazebo/models文件夹下创建dock_base_my文件夹,用来保存模型信息,进入该文件夹(-p表示如果没有路径中的文件夹也一并创建,可同时创建多个不同层次的文件夹)
      • 4.2在dock_my文件夹中创建model.config文件,并将以下内容复制进去
      • 4.3在dock_base_my文件夹中创建model.sdf.erb文件,并将以下内容复制进去
      • 4.4在vrx_gazebo的CMakeList.txt中添加编译信息
      • 4.5回到编译工作空间
      • 4.6打开gazebo,通过insert添加自定义模型
      • 4.7报错
  • 5.创建自定义WAM-V推进器和传感器
    • 5.1创建和使用自定义WAM-V urdf文件步骤
    • 5.2自定义可配置内容及配置文件格式
    • 5.3创建和使用自定义urdf文件的其他方法(并未成功,有些位置添加标签可以但有些位置不行)
  • 航路点waypoint可视化
  • Biography:

1.Which topics

nametype
/clocksystem time
/gazebo/link_states
/gazebo/model_states
/gazebo/parameter_descriptions
/gazebo/parameter_updates
/gazebo/performance_metrics
/gazebo/set_link_state
/gazebo/set_model_state
/rosout
/rosout_agg
/vrx
/vrx/debug/wind/direction
/vrx/debug/wind/speed
/vrx/dock_2022_placard1/shuffle
/vrx/dock_2022_placard2/shuffle
/vrx/dock_2022_placard3/shuffle
/wamv/joint_states
/wamv/sensors/cameras/front_left_camera/camera_infocamera info
/wamv/sensors/cameras/front_left_camera/image_rawimages
/wamv/sensors/cameras/front_left_camera/image_raw/compressedcompressed images
/wamv/sensors/cameras/front_left_camera/image_raw/compressed/parameter_descriptions
/wamv/sensors/cameras/front_left_camera/image_raw/compressed/parameter_updates
/wamv/sensors/cameras/front_left_camera/image_raw/compressedDepth
/wamv/sensors/cameras/front_left_camera/image_raw/compressedDepth/parameter_descriptions
/wamv/sensors/cameras/front_left_camera/image_raw/compressedDepth/parameter_updates
/wamv/sensors/cameras/front_left_camera/image_raw/theora
/wamv/sensors/cameras/front_left_camera/image_raw/theora/parameter_descriptions
/wamv/sensors/cameras/front_left_camera/image_raw/theora/parameter_updates
/wamv/sensors/cameras/front_left_camera/parameter_descriptions
/wamv/sensors/cameras/front_left_camera/parameter_updates
/wamv/sensors/cameras/front_right_camera/camera_infocamera info
/wamv/sensors/cameras/front_right_camera/image_rawimages
/wamv/sensors/cameras/front_right_camera/image_raw/compressedcompressed images
/wamv/sensors/cameras/front_right_camera/image_raw/compressed/parameter_descriptions
/wamv/sensors/cameras/front_right_camera/image_raw/compressed/parameter_updates
/wamv/sensors/cameras/front_right_camera/image_raw/compressedDepth
/wamv/sensors/cameras/front_right_camera/image_raw/compressedDepth/parameter_descriptions
/wamv/sensors/cameras/front_right_camera/image_raw/compressedDepth/parameter_updates
/wamv/sensors/cameras/front_right_camera/image_raw/theora
/wamv/sensors/cameras/front_right_camera/image_raw/theora/parameter_descriptions
/wamv/sensors/cameras/front_right_camera/image_raw/theora/parameter_updates
/wamv/sensors/cameras/front_right_camera/parameter_descriptions
/wamv/sensors/cameras/front_right_camera/parameter_updates
/wamv/sensors/cameras/middle_right_camera/camera_infocamera info
/wamv/sensors/cameras/middle_right_camera/image_rawimages
/wamv/sensors/cameras/middle_right_camera/image_raw/compressedcompressed images
/wamv/sensors/cameras/middle_right_camera/image_raw/compressed/parameter_descriptions
/wamv/sensors/cameras/middle_right_camera/image_raw/compressed/parameter_updates
/wamv/sensors/cameras/middle_right_camera/image_raw/compressedDepth
/wamv/sensors/cameras/middle_right_camera/image_raw/compressedDepth/parameter_descriptions
/wamv/sensors/cameras/middle_right_camera/image_raw/compressedDepth/parameter_updates
/wamv/sensors/cameras/middle_right_camera/image_raw/theora
/wamv/sensors/cameras/middle_right_camera/image_raw/theora/parameter_descriptions
/wamv/sensors/cameras/middle_right_camera/image_raw/theora/parameter_updates
/wamv/sensors/cameras/middle_right_camera/parameter_descriptions
/wamv/sensors/cameras/middle_right_camera/parameter_updates
/wamv/sensors/pingers/pinger/marker/signal
/wamv/sensors/pingers/pinger/range_bearing
/wamv/sensors/pingers/pinger/set_pinger_position
/wamv/shooters/ball_shooter/fire
/wamv/thrusters/lateral_thrust_angle
/wamv/thrusters/lateral_thrust_cmd
/wamv/thrusters/left_thrust_angle
/wamv/thrusters/left_thrust_cmd
/wamv/thrusters/right_thrust_angle
/wamv/thrusters/right_thrust_cmd

2.Control

1.1操作模拟船

(1)命令行直接发布

//启动仿真环境
roslaunch vrx_gazebo sandisland.launch

将指令发布给左右推进器。

  • speed
rostopic pub /wamv/thrusters/left_thrust_cmd std_msgs/Float32 "data: 5" -r 0.5 
rostopic pub /wamv/thrusters/right_thrust_cmd std_msgs/Float32 "data: 0.5"
  • angle
rostopic pub /wamv/thrusters/left_thrust_angle std_msgs/Float32 "data: 5" -r 0.5 

(2)启动键盘控制文件

sudo apt-get install ros-noetic-teleop-twist-keyboard

//启动仿真环境
roslaunch vrx_2019 sandisland.launch
//启动键盘控制文件
roslaunch vrx_gazebo usv_keydrive.launch

在这里插入图片描述

3.Customer your VRX world

  • Attention!: find world file in your launch file.
  • 在这里插入图片描述
  • change your parameters in world file, here is my_example_course.world

3.1Which world parameters

  • in files

在这里插入图片描述

3.2改变风的参数

关于风的参数写在vrx_gazebo / worlds / xacros / usv_wind_plugin.xacro中;与风有关的模型以其与风参数之间的关系写在vrx_gazebo / worlds / XXXX.world.xacro中。

3.2.1更改默认参数:

3.2.1.1在vrx_gazebo / worlds / xacros / usv_wind_plugin.xacro中更改默认参数;

vrx_gazebo / worlds / xacros / usv_wind_plugin.xacro文件

关于=和:= (网上有的说)=是相等,:=是赋值;
定义了一个宏,名称为usv_wind_gazebo,参数如下,根据以下参数生成一个标签块;其中有**的表示可以插入任意多个元素,*表示可以插入一个元素,啥也没有的为一简单的文本参数。
在这里插入图片描述

<?xml version="1.0"?> 版本号;
xmlns:xacro="http://ros.org/wiki/xacro"  为xacro使用声明;
3.2.1.2在vrx_gazebo / worlds / XXX.world.xacro中更改受风影响的模型或其系数,覆盖默认参数;

在这里插入图片描述用<xacro:include filename=“路径”/> <xacro:usv_wind_gazebo />调用宏,中间<wind_objs>为宏的参数。

3.2.2发布瞬时风速

使用插件发布风速

rqt_plot / vrx / debug / wind / speed / data

3.2.3波场(wave feild)

波浪宏定义在wave_gazebo/world/models/ocean/waves/model.xacro文件中。
在这里插入图片描述

3.2.4雾

雾和其他照明条件没有直接写在文件中,如果需要要自己根据标准格式写该部分的标签块,写到vrx_gazebo/worlds/XXX.xacro文件中。

3.2.4.1Find your sence file in your world xacro

在这里插入图片描述

3.2.4.2Add fog to the scene:
    <scene>
      <sky></sky>
      <grid>false</grid>
      <ambient>1.0 1.0 1.0</ambient>
      <background>0.8 0.8 0.8</background>
      <fog>
        <type>linear</type>
        <color>1 1 1 1</color>
        <start>1</start>
        <end>100</end>
        <density>1</density>
      </fog>

    </scene>

3.2.4环境照明

    <scene>
      <sky></sky>
      <grid>false</grid>
      <ambient>1.0 1.0 1.0</ambient>
      <background>0.8 0.8 0.8</background>
    </scene>

3.2.5save and build

source path to your workspace/devel/setup.zsh 
rosrun xacro xacro my_example_course.world.xacro > my_example_course.world

3.2.6run

roslaunch vrx_gazebo vrx_my.launch

roslaunch vrx_gazebo XXX.launch world:=pwd/my_world.world
注意pwd两边不是单引号,是esc下边那个摁键打出来的英文符号。

3.3.Add ships

  • add namesapce in vrx.launch : raplace name(1), default(1)
 <arg name="namespace1" default="wamv1"/>
  • add coodinates : repalce name(6)
<!-- Initial USV location and attitude-->
  <arg name="x1" default="-532" />
  <arg name="y1" default="200" />
  <arg name="z1" default="0.1" />
  <arg name="P1" default="0" />
  <arg name="R1" default="0" />
  <arg name="Y1" default="1" />
  • add param : replace namespace(2)
  <!-- USV01 -->
  <param name="$(arg namespace1)/robot_description"
         command="$(find xacro)/xacro &#x002D;&#x002D;inorder '$(arg urdf)'
         locked:=$(arg wamv_locked)		   
         thruster_config:=$(arg thrust_config)
         vrx_sensors_enabled:=$(arg vrx_sensors_enabled)
         namespace:=$(arg namespace1) "/>
  • add node :replace name(1),arg(6),namespace(1),model(1)
  <node name="spawn_model1" pkg="gazebo_ros" type="spawn_model"
        args="-x $(arg x1) -y $(arg y1) -z $(arg z1)
              -R $(arg R1) -P $(arg P1) -Y $(arg Y1)
              -urdf -param $(arg namespace1)/robot_description -model wamv1"/>

3. 添加障碍元素

可在终端用cat example_course.world.xacro来查看文件内容,
可通过在example_course.world.xacro文件中添加新的标签来添加需要避开的障碍等模型,

Add light buoy

In world files,其中<uri/>为模型标签,可在model://后添加自带的模型名称来设值,为位置标签,六个值分别为x,y,z,roll,pitch.yaw.
use different name for every model.
light buoy, dock and animal buoys- code after add
在这里插入图片描述

4. Add your own dock

4.1首先在vrx的/gazebo/models文件夹下创建dock_base_my文件夹,用来保存模型信息,进入该文件夹(-p表示如果没有路径中的文件夹也一并创建,可同时创建多个不同层次的文件夹)

mkdir -p ~/vrx_ws/src/vrx/vrx_gazebo/models/dock_base_my
cd ~/vrx_ws/src/vrx/vrx_gazebo/models/dock_base_my

4.2在dock_my文件夹中创建model.config文件,并将以下内容复制进去

创建文件

gedit model.config

内容如下,其中model标签下的name标签为所创建的自定义模型的名字

    <?xml version="1.0"?>
    <model>
      <name>dock_base_my</name>
      <version>1.0</version>
      <sdf version="1.6">model.sdf</sdf>

      <author>
        <name>Carlos Agüero</name>
        <email>caguero@openrobotics.org</email>
      </author>

      <description>
        My custom dock_my.
      </description>
    </model>

4.3在dock_base_my文件夹中创建model.sdf.erb文件,并将以下内容复制进去

gedit model.sdf.erb

内容如下,修改模型只需要修改layout中的内容,包括在一堆单引号中的为一行,每一行用逗号隔开,一个X代表一个4x4的码头块,一个空格代表一个4x4的空白块

    <?xml version="1.0" ?>
    <sdf version="1.6">

      <!-- Important: This file is generated. DO NOT EDIT! -->

      <model name="robotx_dock_2016_base">
    <%
    layout = [
    'X  X',
    'X  X',
    'X  X',
    'XXXXXXX',
    'XXXX',
    'XXXXXXX',
    'X  X',
    'X  X',
    'X  X',
    ]
    %>
    <%= ERB.new(File.read('dock_generator.erb'),
                      nil, '-', 'dock').result(binding) %>
      </model>
    </sdf>

效果如下
在这里插入图片描述

4.4在vrx_gazebo的CMakeList.txt中添加编译信息

在set(dock_base_erb_files )(若文件未被修改过则位于第233行)中添加models/dock_base_my/model.sdf.erb,其中dock_base_my为新建模型的名字。

4.5回到编译工作空间

catkin build vrx_gazebo

4.6打开gazebo,通过insert添加自定义模型

roslaunch vrx_gazebo vrx.launch

在左上方有insert选项,找到dock_base_my单击即可在世界中添加。

4.7报错

报错信息

[gazebo-2] process has died [pid 21545, exit code 255, cmd /opt/ros/melodic/lib/gazebo_ros/gzserver -e ode /home/jyh/vrx_ws/devel/share/vrx_gazebo/worlds/example_course.world __name:=gazebo __log:=/home/jyh/.ros/log/95d77786-66b9-11eb-a0d3-181deaf58039/gazebo-2.log].

解决方法

$ killall gzserver

5.创建自定义WAM-V推进器和传感器

5.1创建和使用自定义WAM-V urdf文件步骤

首先创建一个文件夹,创建并写好推进器和传感器的yaml配置文件(后面给出示例),然后利用vrx提供的脚本启动文件直接从两个yaml配置文件生成WAM-V的urdf文件,该过程首先从两个yaml文件分别生成传感器和推进器的同名xacro文件,然后通过两个xacro文件生成WAM-V的urdf文件,该脚本还会检测输入的两个yaml文件是否符合compliance.py文件标准,该文件是一个vrx比赛所用船的推进器和传感器标准文件,对于自己定义的船不需要完全按照该标准定义,可以作为参考,但要保证船只物理可实现,要如果未通过标准检测会出现红色的报错信息,但在gazebo中依旧可用。

mkdir ~/my_wamv
gedit ~/my_wamv/thruster_config.yaml
gedit ~/my_wamv/sensor_config.yaml

写好配置文件之后,用下面的命令利用generate_wamv.launch启动脚本生成WAM-V的urdf文件,其中$HOME表示/home/.

roslaunch vrx_gazebo generate_wamv.launch thruster_yaml:=$HOME/my_wamv/thruster_config.yaml  sensor_yaml:=$HOME/my_wamv/sensor_config.yaml wamv_target:=$HOME/my_wamv/my_wamv.urdf

参数说明

thruster_yaml			推进器yaml配置文件的完整路径
sensor_yaml  			传感器yaml配置文件的完整路径
wamv_target  			生成WAM-V的urdf文件所在位置的完整路径

编译成功(无论是否通过检测)会输出:

[INFO] [1566845959.198003]:
Using /home/jyh/my_wamv/thruster_config.yaml as the thruster configuration yaml file

[INFO] [1566845959.208003]: 
Using /home/jyh/my_wamv/sensor_config.yaml as the sensor configuration yaml file

xacro: in-order processing became default in ROS Melodic. You can drop the option.(该句不一定会输出,没输出也不要紧)

WAM-V urdf file sucessfully generated. File location: /home/tylerlum/my_wamv/my_wamv.urdf
================================================================================
REQUIRED process [wamv_config/wamv_generator-2] has died!
process has finished cleanly
log file: /home/jyh/.ros/log/58174356-65c7-11eb-9f1c-181deaf58039/wamv_config-wamv_generator-2*.log
Initiating shutdown!
================================================================================

通过以下配置urdf参数来调用自定义的WAM-V的urdf文件,参数值为所生成的urdf文件的完整路径,若没有给定urdf参数会使用启动文件中的默认配置。

roslaunch vrx_gazebo sandisland.launch urdf:=$HOME/my_wamv/my_wamv_2.urdf

在这里插入图片描述

5.2自定义可配置内容及配置文件格式

打开任意 可配置内容 文件夹中的xacro文件,查看其中宏定义的参数,例如打开engine.xacro,可以看到其宏定义中参数如下;
可以看出prefix为无默认值的必须参数,position、orientation为有默认值的可选参数。

<xacro:macro name="engine" params="prefix position:='0 0 0' orientation:='0 0 0'">

yaml文件格式:yaml对大小写敏感;使用缩进来表达层次逻辑,yaml的缩进不能用tab,只能用空格,只需保证同层次的代码左对齐即可;用#来表示注释。
yaml数据结构:类比Python,以键值对为基础,如position: "-2.373776 1.027135 0.318237"为一键值对;同层次的键值对构成一个字典,前边有-的同层级内容视为一个整体构成一个字典,多个前边有-的同层级内容整体构成一个列表,以此为基础存储参数信息。
yaml配置文件的一般格式如下,以传感器的配置文件为例,文件相当于一个字典,最外层字典的键名和配置内容文件夹中xacro文件同名,该键的值为一个字典,字典中存储的键名为参数名,值为参数值。

wamv_camera:
    - name: front_left_camera
      x: 0.75
      y: 0.1
      P: ${radians(15)}
    - name: front_right_camera
      x: 0.75
      y: -0.1
      P: ${radians(15)}
    - name: middle_right_camera
      x: 0.75
      y: 0.3
      P: ${radians(15)}
wamv_gps:
    - name: gps_wamv
      x: -0.85
wamv_imu:
    - name: imu_wamv
      y: -0.2
wamv_p3d:
    - name: p3d_wamv
lidar:
    - name: lidar_wamv
      type: 16_beam
      P: ${radians(8)}

5.3创建和使用自定义urdf文件的其他方法(并未成功,有些位置添加标签可以但有些位置不行)

类似自定义世界环境的方法,创建一个文件夹,并把原本的基本xacro文件赋值过来。

mkdir example_vrx_package
cd example_vrx_package/
roscp wamv_gazebo wamv_gazebo.urdf.xacro my_wamv.urdf.xacro

然后在复制过来的xacro文件中调用xacro宏来添加新的传感器,例如添加摄像头(不用包含所需的xacro宏描述文件吗?)

  <xacro:property name="stereo_x" value="1.0" />
  <xacro:wamv_camera name="stereo_left" x="${stereo_x}" y="0.3" z="1.5" P="${radians(15)}" />
  <xacro:wamv_camera name="stereo_right" x="${stereo_x}" y="-0.3" z="1.5" P="${radians(15)}" />

然后在包含该文件的文件夹下进行编译,并用urdf参数赋值运行

rosrun xacro xacro --inorder my_wamv.urdf.xacro > my_wamv.urdf
roslaunch vrx_gazebo sandisland.launch urdf:=`pwd`/my_wamv.urdf

航路点waypoint可视化

Biography:

技术-XTDrone项目学习-VRX无人艇项目例程-多无人艇生成-ROS-Matlab通信编程
学习笔记1.1.1——vrx仿真环境的使用
VRX tutorials

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

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

相关文章

yolov8 目标追踪 (源码 +效果图)

1.在代码中 增加了s键开始追踪 e键结束追踪 显示移动距离(代码中可调标尺和像素的比值 以便接近实际距离) 2.绘制了监测区域 只在区域内的检测 3.规定了检测的类别 只有人类才绘制轨迹 import osimport cv2 from ultralytics import YOLO from collections import defaultdic…

基于Python的web漏洞挖掘,漏洞扫描系统(附源码,部署)

本次技术通过利用Python技术来开发一款针对web漏洞挖掘扫描的技术&#xff0c;通过web漏洞的挖掘扫描来实现对网站URL的漏洞检测&#xff0c;通过高中低风险的判断来实现对一款网站中存在的漏洞进行可视化的分析&#xff0c;从而能够找到问题并且尽快的实现问题的解决。 博主介…

岳阳市美术馆预约平台(小程序论文源码调试讲解)

第4章 系统设计 一个成功设计的系统在内容上必定是丰富的&#xff0c;在系统外观或系统功能上必定是对用户友好的。所以为了提升系统的价值&#xff0c;吸引更多的访问者访问系统&#xff0c;以及让来访用户可以花费更多时间停留在系统上&#xff0c;则表明该系统设计得比较专…

ubuntu22.04系统如何自建2级ntp服务器

一&#xff1a;ntp服务器详情 服务器型号 系统版本 IP地址 主机名 ntp服务版本 虚拟机8c-32g-1T Ubuntu22.04 10.20.30.2 DMZ-NTP-SERVER 4.2.8p15 二&#xff1a;ntp服务端部署配置脚本 #!/bin/bash # 脚本信息 echo "--------------------------…

DeepSeek赋能智慧社区:提升社区治理,优化资源配置,带来全新变革

在数字化浪潮的推动下&#xff0c;智慧社区正逐渐成为城市发展的重要方向。作为一款先进的人工智能大模型&#xff0c;DeepSeek凭借其强大的多模态数据分析和智能决策能力&#xff0c;正在为智慧社区的建设注入新的活力。 标准规范及顶层设计指南、供应商整体解决方案合集、供应…

spring注解开发(Spring整合MyBatis——Mapper代理开发模式、(Spring、MyBatis、Jdbc)配置类)(6)

目录 一、纯MyBatis独立开发程序。 &#xff08;1&#xff09;数据库与数据表。 &#xff08;2&#xff09;实体类。 &#xff08;3&#xff09;dao层接口。&#xff08;Mapper代理模式、无SQL映射文件——注解配置映射关系&#xff09; &#xff08;4&#xff09;MyBatis核心配…

【MySQL】数据库-图书管理系统(CC++实现)

一.预期功能 该图书管理系统设计提供基本的设计模版&#xff0c;涉及数据库的增删查改等操作&#xff0c;包含登录功能&#xff0c;图书管理功能&#xff0c;图书借阅功能&#xff0c;用户管理功能等基础功能&#xff0c;详细功能查看以下菜单表&#xff0c;共包含三个菜单&am…

VSCode轻松调试运行C#控制台程序

1.背景 我一直都是用VS来开发C#项目的&#xff0c;用的比较顺手&#xff0c;也习惯了。看其他技术文章有介绍VS Code更轻量&#xff0c;更方便。所以我专门花时间来使用VS Code&#xff0c;看看它是如何调试代码、如何运行C#控制台。这篇文章是一个记录的过程。 2.操作 2.1 V…

python-leetcode-下一个排列

31. 下一个排列 - 力扣&#xff08;LeetCode&#xff09; class Solution:def nextPermutation(self, nums: List[int]) -> None:"""Do not return anything, modify nums in-place instead."""# Step 1: Find the first decreasing element …

Jsmoke-一款强大的js检测工具,浏览器部署即用,使用方便且高效

目录标题 Jsmoke &#x1f6ac;&#x1f6ac; by Yn8rt使用方式界面预览功能特性支持的敏感信息类型 Jsmoke &#x1f6ac;&#x1f6ac; by Yn8rt ​ 该插件由 Yn8rt师傅 开发&#xff0c;插件可以理解为主动版的hae和apifinder&#xff0c;因为其中的大多数规则我都引用了&a…

iphone上ios设备开启safari开发者debug模式,配合mac电脑使用

1.mac操作 mac的safari上打开开发者模式&#xff0c;打开显示网页开发者功能 2.开启IPhone的Safari调试模式 启用 Web 检查 功能&#xff0c;打开 iPhone 依次进入 设置 > Safari浏览器 > 高级 > 网页检查器 > 启用。 3.调试步骤 先用IPhone 的Safari打开要调试…

Datawhale 数学建模导论二 笔记5 多模数据与智能模型

主要涉及到的知识点有&#xff1a; 数字图像处理与计算机视觉 计算语言学与自然语言处理 数字信号处理与智能感知 10.1 数字图像处理与计算机视觉 视觉信息是我们第一种非常规的数据模式&#xff0c;在Python当中可以使用opencv处理数字图像&#xff0c;并提取出视觉特征用…

如何在一台服务器上搭建 mongodb副本集1主2从节点

在一台服务器上搭建 MongoDB 副本集&#xff08;1 主节点 2 从节点&#xff09;可以通过运行多个 MongoDB 实例并使用不同端口和数据目录来实现。以下是详细步骤&#xff1a; 1. 准备工作 确保已安装 MongoDB。为每个实例创建独立的数据目录和日志文件。 2. 创建数据目录和…

TikTok隐私保护措施:确保用户安全

TikTok隐私保护措施&#xff1a;确保用户安全 在这个信息爆炸的时代&#xff0c;社交媒体平台的隐私保护问题日益成为公众关注的焦点。TikTok&#xff0c;作为全球领先的短视频平台&#xff0c;拥有庞大的用户群体&#xff0c;因此&#xff0c;其隐私保护措施显得尤为重要。本…

Apollo Cyber 学习笔记

目录 0 Introduction What Why Advantage 1 Example 2 Concept 3 Flow Chart 4 Module 4.1 Transport 4.1.1 Share Memory 4.1.1.1 Segment 4.1.1.1.1 State 4.1.1.1.2 Block 4.1.1.1.3 Common 4.1.1.2 Notifier 4.1.1.2.1 ConditionNotifier 4.1.1.2.2 Multi…

mamba_ssm和causal-conv1d详细安装教程

1.前言 Mamba是近年来在深度学习领域出现的一种新型结构&#xff0c;特别是在处理长序列数据方面表现优异。在本文中&#xff0c;我将介绍如何在 Linux 系统上安装并配置 mamba_ssm 虚拟环境。由于官方指定mamba_ssm适用于 PyTorch 版本高于 1.12 且 CUDA 版本大于 11.6 的环境…

Ruby基础

一、字符串 定义 283.to_s //转为string "something#{a}" //定义字符串&#xff0c;并且插入a变量的值 something//单引号定义变量 %q(aaaaaaaaa) // 定义字符串&#xff0c;&#xff08;&#xff09;内可以是任何数&#xff0c;自动转义双引号%Q("aaaaa"…

Flutter的permission_handler插件检查iOS的通知权限不准确

今天&#xff0c;做好了一个功能&#xff0c;就是在app内检查用户有没有给当前APP打开通知权限&#xff0c; 如果没打开&#xff0c;就展示一个 banner &#xff0c;让用户去点击banner去打开权限 。 android上测试得非常顺利&#xff0c; 结果&#xff0c; 在iOS 上就是不…

vue使用a-table设置自定义合并字段实现某字段值相同则合并行

背景&#xff1a; 笔者前端使用ant-design-vue,二次开发了a-table,但a-table组件的属性方法都可以用&#xff1b; 业务需求&#xff1a;物资存放在不同的仓库&#xff0c;显示物资统计表格&#xff0c;以物资分组合并显示物资名称、总数量&#xff08;物资A在所有库房总数量&a…

Docker容器日常维护常用命令大全

友情提示&#xff1a;本文内容由银河易创&#xff08;https://ai.eaigx.com&#xff09;AI创作平台deepseek-v3模型生成&#xff0c;文中所有命令未进行验证&#xff0c;仅供参考。请根据具体情况和需求进行适当的调整和验证。 引言 Docker作为当前最流行的容器化技术&#xf…