- 博客(102)
- 资源 (20)
- 收藏
- 关注
转载 【无标题】
网上搜索 C# 单例模式,大部分都是这种使用 lock 来确保线程安全的写法,这是经典标准的单例模式的写法,没问题,很放心。一句代码就搞定了,此写法,实例化也是在默认的静态构造函数中进行的。两者有各自适用的场景,实现方式也都很简单,唯一在设计时要考虑的一个问题就是:实例化时需要保证线程安全。可以使对象的实例化延迟到第一次被调用的时候执行,通过访问它的 Value 属性来创建并获取实例,并且读取一个。单例模式大概是所有设计模式中最简单的一种,如果在面试时被问及熟悉哪些设计模式,你可能第一个答的就是单例模式。
2023-05-09 15:39:07
77
原创 ROS 搞懂多话题回调机制以及消息队列
ROS 消息队列的运行机制下面只是自己的理解,如果有误望大家指正! 大部分内容参考于 https://blog.youkuaiyun.com/qq_42700518/article/details/104453752ROS中,publisher和subscriber都有一个消息队列用于数据收发时候的缓存,那么它们有什么异同呢?ROS话题的通信是异步的,也就是publisher只管不停的发但不管是否被接收,publisher的消息队列就是publisher发布信息的地方,publisher向消息队列发布信息然后通知
2022-03-12 23:43:55
1291
原创 new 动手学深度学习V2环境安装
动手学深度学习V2环境安装虚拟环境 d2l-zh安装conda create -n d2l-zh -y python=3.8 pippip install jupyter d2l torch torchvision -i https://mirrors.aliyun.com/pypi/simple/git clone https://github.com/d2l-ai/d2l-zh-pytorch-slides.git 下载课程幻灯片wget https://zh-
2021-05-30 19:09:08
734
1
原创 softmax回归的简洁实现-09-p5
softmax回归的简洁实现通过深度学习框架的高级API能够使实现softmax回归变得更加容易import torchfrom torch import nnfrom d2l import torch as d2lbatch_size = 256train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)Softmax 回归的输出层是一个全连接层net = nn.Sequential(nn.Flatten(), nn
2021-05-30 19:00:06
211
原创 softmax回归的从零开始实现-09-p4
softmax回归的从零开始实现就像我们从零开始实现线性回归一样,你应该知道实现softmax的细节import torchfrom IPython import displayfrom d2l import torch as d2lbatch_size = 256train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)将展平每个图像,把它们看作长度为784的向量。因为我们的数据集有10个类别,所以网络输出维度为 1
2021-05-30 18:57:01
307
原创 图像分类数据集-09-p3
图像分类数据集MNIST数据集是图像分类中广泛使用的数据集之一,但作为基准数据集过于简单。我们将使用类似但更复杂的Fashion-MNIST数据集%matplotlib inlineimport torchimport torchvisionfrom torch.utils import datafrom torchvision import transformsfrom d2l import torch as d2ld2l.use_svg_display()通过框架中的内置函数将 F
2021-05-30 18:40:45
346
原创 线性回归的简洁实现(pytorch框架)
线性回归的简洁实现通过使用深度学习框架来简洁地实现线性回归模型生成数据集import numpy as npimport torchfrom torch.utils import datafrom d2l import torch as d2ltrue_w = torch.tensor([2, -3.4])true_b = 4.2features, labels = d2l.synthetic_data(true_w, true_b, 1000)调用框架中现有的API来读取数据d
2021-05-30 16:34:12
216
原创 线性回归的从零开始实现-08-p3
线性回归的从零开始实现我们将从零开始实现整个方法,包括数据流水线、模型、损失函数和小批量随机梯度下降优化器%matplotlib inlineimport randomimport torchfrom d2l import torch as d2l数据集产生根据带有噪声的线性模型构造一个人造数据集。我们使用线性模型参数w=[2,−3.4]⊤\mathbf{w} = [2, -3.4]^\topw=[2,−3.4]⊤、b=4.2b = 4.2b=4.2和噪声项ϵ\epsilonϵ生成数据集及
2021-05-30 13:18:59
155
原创 pytorch自动求导-07
自动求导假设我们想对函数 y=2x⊤xy = 2\mathbf{x}^{\top}\mathbf{x}y=2x⊤x关于列向量 x\mathbf{x}x求导import torchx = torch.arange(4.0)xtensor([0., 1., 2., 3.])在我们计算yyy关于x\mathbf{x}x的梯度之前,我们需要一个地方来存储梯度x.requires_grad_(True)x.grad现在让我们计算 yyyy = 2 * torch.dot(x, x)y
2021-05-30 09:09:31
156
原创 多维数据按轴计算-05-p3
import torcha =torch.ones((2,5,4))a.shapetorch.Size([2, 5, 4])a.sum(axis=0)tensor([[2., 2., 2., 2.], [2., 2., 2., 2.], [2., 2., 2., 2.], [2., 2., 2., 2.], [2., 2., 2., 2.]])a.sum(axis=1)tensor([[5., 5., 5., 5.],
2021-05-29 16:30:46
114
原创 数据预处理-pandas-04-p4
数据预处理创建一个人工数据集,并存储在csv(逗号分隔值)文件import osos.makedirs(os.path.join('..', 'data'), exist_ok=True)data_file = os.path.join('..', 'data', 'house_tiny.csv')with open(data_file, 'w') as f: f.write('NumRooms,Alley,Price\n') f.write('NA,Pave,127500\n'
2021-05-29 15:31:20
318
原创 n维数组的操作-04-p2
数据操作首先,我们导入 torch。请注意,虽然它被称为PyTorch,但我们应该导入 torch 而不是 pytorchimport torch张量表示一个数值组成的数组,这个数组可能有多个维度x = torch.arange(12)xtensor([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])我们可以通过张量的 shape 属性来访问张量的 形状和张量中元素的总数x.shapetorch.Size([12])x.nume
2021-05-29 15:18:10
294
原创 ubuntu 设置定时任务
一般系统会自带一个 crontab ,这个就可以用来执行定时任务,简单起见我们就是用这一个程序了首先执行命令看一下状态:sudo service cron status 如果为激活状态且在running状态才行Cron 服务命令:# 查看服务状态sudo service cron status# 开启服务sudo service cron start# 停止服务sudo service cron stop# 重启服务sudo service cron restart
2021-05-19 15:18:43
11696
2
原创 ROS CMakeLists 写法
SET(CMAKE_BUILD_TYPE "Debug")SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")cmake_minimum_required(VERSION 2.8.3)project(cam_lidar_calibration)#set(OpenCV_DIR /opt/libs-x64/opencv.
2021-05-19 14:31:43
325
原创 ros 相机标定
单目相机的标定cameracalibrator.py subscribes to ROS raw image topics, and presents a calibration window. It can run in both monocular and stereo modes. The calibration window shows the current images from the cameras, highlighting the checkerboard. When the use
2021-05-12 15:34:34
804
原创 ROS Nodelet使用
1.创建包cd srccatkin_create_pkg nodelet_tutorials roscpp nodelet std_msgs这需要依赖nodelet包,这个包提供了编写ROS Nodelet的api。2. 写插件类class feature_extraction : public nodelet::Nodelet 需要继承 nodelet::Nodeletnodelet 本身即是基于plugin,所以其写法与plugin非常类似,只是这里的基类变成Node
2021-05-11 09:18:12
515
转载 激光雷达点云聚类
代码来源:https://github.com/danielTobon43/DBScan-PCL-Optimized博客园的一篇DBSCAN算法:比较简陋,运行起来非常慢https://www.cnblogs.com/zlian2016/p/5617527.html激光雷达点云地面分割(附带有测试的激光电云bag包)https://blog.youkuaiyun.com/yuxuan20062007/article/details/82926783pcl形态学滤波器实现地面点分割http
2021-05-10 14:42:59
1533
原创 C++基础知识点
static 静态变量静态全局变量静态全局变量有以下特点:(1)静态变量都在全局数据区分配内存,包括后面将要提到的静态局部变量;(2)未经初始化的静态全局变量会被程序自动初始化为0(在函数体内声明的自动变量的值是随机的,除非它被显式初始化,而在函数体外被声明的自动变量也会被初始化为 0);(3)静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的。优点:静态全局变量不能被其它文件所用;其它文件中可以定义相同名字的变量,不会发生冲突。...
2021-05-01 10:20:13
99
原创 激光雷达和相机联合标定
准备工作需要一个标定板,尺寸可以自己定,但是需要雷达和相机都能捕捉到的,当然,雷达捕捉到的数据越多越好。然后把标定板悬空放置,如下图所示。为什么要这么做呢?其实就是方便后序在激光雷达捕获的点云中,分离出这个标定板。好了,现在调整好雷达和相机,转到合适位置,在相同位置上进行拍照和点云捕捉。捕捉完成后,需要找到至少三个对应点对,也就是二维点和三维点对,然后利用这三个点对进行PNP求解,计算出相机坐标系和雷达坐标系之间的变换关系。这个就是变换公式了。找寻对应点下面是捕获的图像和点云:...
2021-04-30 19:16:08
784
1
原创 ROS-ROS中的坐标管理系统 TF
TF功能包能干什么?•五秒钟之前,机器人头部坐标系相对于全局坐标系的关系是什么样的?•机器人夹取的物体相对于机器人中心坐标系的位置在哪里?•机器人中心坐标系相对于全局坐标系的位置在哪里?TF坐标变换如何实现?• 广播TF变换• 监听TF变换小海龟TF 例程$ sudo apt-get install ros-melodic-turtle-tf$ roslaunch turtle_tf turtle_tf_demo.launch$ rosrun turtlesim turt..
2021-04-11 22:59:22
203
原创 VIM 操作
取消多行注释和添加多行注释VIM多行添加注释:(1)进入VIM命令模式,输入ctrl+v,进入列操作模式(在底部能看到-- VISUAL BLOCK --);(2)用j,k,或者上,下键选择要编辑的行;(3)输入大写的I,Shift + i;(4)输入你的注释风格,比如#, //;(5)按Esc键;很快,你就能看到所有被选中的行都加上了注释。VIM多行删除注释(列删除):(1)进入VIM命令模式,输入ctrl+v,进入列操作模式(在底部能看到-- VISUAL BL.
2021-03-26 09:58:23
160
原创 git 工作使用
git push origin --delete develop_rzq 删除 git自己远程的分支git branch --set-upstream-to=origin/develop_rzq 将分支和远程的分支进行关联,git push 就不用加具体的分支名字了git pull origin develop_rzq 和 远程分支保持同步1.在git上创建一个自己的分支,选择一下克隆谁的分支;2.git clone 下自己的分支,并pull 下,保持和自己的分支内容...
2021-03-22 17:15:23
83
原创 git 工具
meld作为mergetool修改本地的~/.gitconfig配置文件,加入以下几行配置[merge] tool = meld conflictstyle = diff3[mergetool "meld"] cmd = meld $LOCAL $BASE $REMOTE --output=$MERGED --auto-mergemeld作为diff工具vim /usr/bin/git_meld.sh 写入以下内容#!/bin/shmeld ..
2021-03-22 16:41:07
79
转载 C++使用boost::bind 订阅消息中的返回函数传入多个参数
最近读别人的代码,看到了一个有意思的东西。主要是当我们订阅一个消息时候,会调用一个返回函数。例如:ros::Subscriber scan_sub=n.subscribe<std_msgs::Int8>("/test", 10, multiprint); 这样multiprint函数应该包含一个参数,即void multiprint(const std_msgs::Int8::ConstPtr& msg){}但是,如果我们想要多参数传入的话,就需要使用
2021-03-21 16:42:25
925
原创 QT
安装 terminal后,qt运行终端不出现打开选项,环境管理,系统在终端选项中下拉调整终端,即可;qt ros运行bash -i -c /home/ren/Qt5.14.2/Tools/QtCreator/bin/qtcreator 启动终端可加载ros的环境变量;如果要和运行的结果通信,则需要新打开一个终端source一下;...
2021-03-21 00:15:29
93
转载 Ros中Remap(话题重映射)的两种使用方法
最近在remap机器人发布的joint_states的时候遇到了一些问题,在此以几个例子记录一下launch文件的配置。先敲黑板!!!:remap在node之外的作用域是他之后的所有节点,在node中的作用域是当前节点,此外要注意想要remap的话题是这个节点要接收的还是要发布的。 如果是要remap一个该节点发布的source_topic到target_topic,应该是<remap from="/source_topic" to="/target_topic" /> 如果是要rem
2021-03-20 15:54:28
5581
转载 VS Code 调试ROS节点
前提:安装VS Code安装插件,C/C++, ROS安装插件Txt Syntax, 作用:CMakeLists.txt语法高亮。 参考链接:https://blog.youkuaiyun.com/u012254599/article/details/106143540/<br> 安装插件Msg Language Support, 作用:msg,srv,action语法高亮首先手动建立catkin workspace1. mkdir ~/catkin_ws2. cd ~/catki.
2021-03-19 23:26:00
799
转载 VScode快捷键
通用快捷键:快捷键 作用 Ctrl+Shift+P,F1 展示全局命令面板 Ctrl+P 快速打开最近打开的文件 Ctrl+Shift+N 打开新的编辑窗口 Ctrl+Shift+W 关闭编辑器 基础编辑快捷键:快捷键 作用 Ctrl + X 剪切 Ctrl + C 复制 Alt + up/down 移动上下行 Shift + Alt up/down 上下复制当前行 Ctrl + Shift + K
2021-03-19 22:44:51
134
转载 Vscode ROS 环境搭建
1、插件准备:C++Cmake toolsROSpython2、具体步骤:mkdir -p demo/srccd democatkin_make # 编译code . # 打开vscodectrl + shift + b # 打开配置文件配置文件如下:{ "version": "2.0.0", "tasks": [ { "type": "catkin_make", "problemMatcher": [
2021-03-19 22:38:04
619
转载 ros::spin() 和 ros::spinOnce() 区别及详解
1 函数意义首先要知道,这俩兄弟学名叫ROS消息回调处理函数。它俩通常会出现在ROS的主循环中,程序需要不断调用ros::spin()或 ros::spinOnce(),两者区别在于前者调用后不会再返回,也就是你的主程序到这儿就不往下执行了,而后者在调用后还可以继续执行之后的程序。其实消息回调处理函数的原理非常简单。我们都知道,ROS存在消息发布订阅机制,什么?不知道?不知道还不快去:http://wiki.ros.org/ROS/Tutorials(ROS官方基础教程)瞅瞅。好,我们继续...
2021-03-16 22:50:23
613
转载 Ubuntu18.04安装ROS Melodic(解决网络原因,先将所需压缩包下载到本地,然后rosdep update)
Ubuntu18.04安装ROS Melodic(解决网络原因,先将所需压缩包下载到本地,然后rosdep update)一、ROS介绍机器人操作系统(Robot Operating System, ROS)是一个应用于机器人上的操作系统,它操作方便、功能强大,特别适用于机器人这种多节点多任务的复杂场景。 因此自ROS诞生以来,受到了学术界和工业界的欢迎,如今已经广泛应用于机械臂、移动底盘、无人机、无人车等许多种类的机器人上。具体探索请参考:ROS探索总结(一)——ROS简介二、版本
2021-03-16 17:00:25
3302
16
原创 ROSBAG 解析
ros自带将bag包中点云文件解析为pcd文件rosrun pcl_ros bag_to_pcd 3.bag /velodyne_points pcd上述命令中,三个参数分别为bag包名,需要解析的节点名称和解析后存储的位置。解析完成后,我们可以在pcd文件夹中看到我们所需的每一帧点云文件。通过创建view类将数据逐帧读取出来#include <rosbag/bag.h>#include <rosbag/view.h>// 此处为include相关消息类的头文件
2021-03-15 16:24:17
3736
3
转载 ffmpeg将视频流转化成图片帧,将图片帧转化为视频(基本无损)
ffmpeg将视频流转化成图片帧,将图片帧转化为视频(基本无损)其中-r 和-framerate 都是代表帧率(这个属性属于图片的属性,需要放在图片之前)-s 控制输出格式大小本人在一个视频稳定的项目中用需要将视频分解为图片帧,图片帧经过稳定扭曲之后需要再次合成视频。于是按照官方文档中的例子来操作了一遍:ffmpeg -i 13.avi %04d.png这里将视频转化为图片帧,默认的帧率为30,得到的图片质量和视频质量差别基本不大可以忽略。ffmpeg -f image.
2021-03-15 16:22:03
5883
转载 Rosbag详细操作
在 ROS 系统中,可以使用 bag 文件来保存和恢复系统的运行状态,比如录制雷达和相机话题的 bag 包,然后回放用来进行联合外参标定。这里记录下我学习官方的 rosbag 教程的笔记:ROS rosbag我常用的几个操作虽然命令很多,但是我目前在工作中常用的命令就如下几个:1. 录包录制所有话题:rosbag record -a录制指定话题,设置 bag 包名:rosbag record -O bag_name.bag /topic1_name /topic2_na
2021-03-13 23:04:57
9969
modelnet40_normal_resampled_2.zip
2021-03-01
modelnet40_normal_resampled_1
2021-03-01
机器学习基础教程电子书
2017-03-03
机器学习基础代码和数据
2017-03-03
matlab支持向量机分类实例(附数据)
2017-03-01
特征提取与图像处理%28中文第2版
2017-01-11
simca-13破解
2017-01-11
斯坦福大学机器学习课程个人笔记完整版
2017-01-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人